KR102398217B1 - 크로스-검포넌트 선형 모델에 대한 간단화 - Google Patents

크로스-검포넌트 선형 모델에 대한 간단화 Download PDF

Info

Publication number
KR102398217B1
KR102398217B1 KR1020217010676A KR20217010676A KR102398217B1 KR 102398217 B1 KR102398217 B1 KR 102398217B1 KR 1020217010676 A KR1020217010676 A KR 1020217010676A KR 20217010676 A KR20217010676 A KR 20217010676A KR 102398217 B1 KR102398217 B1 KR 102398217B1
Authority
KR
South Korea
Prior art keywords
luma
sampled
chroma
samples
sample
Prior art date
Application number
KR1020217010676A
Other languages
English (en)
Other versions
KR20210045497A (ko
Inventor
이원 천
샹린 왕
Original Assignee
베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 filed Critical 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드
Priority to KR1020227012696A priority Critical patent/KR20220051426A/ko
Publication of KR20210045497A publication Critical patent/KR20210045497A/ko
Application granted granted Critical
Publication of KR102398217B1 publication Critical patent/KR102398217B1/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/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Color Television Systems (AREA)
  • Analysing Materials By The Use Of Radiation (AREA)
  • Prostheses (AREA)
  • Vehicle Interior And Exterior Ornaments, Soundproofing, And Insulation (AREA)

Abstract

컴퓨터 장치는 크로마 블록과 대응되는 루마 블록을 재구성하는 단계, 미리 정의된 순서로 복수의 재구성된 인접 루마 샘플들의 서브-그룹을 검색하여 최대 루마 샘플 및 최소 루마 샘플을 식별하는 단계, 상기 최대 루마 샘플과 대응하는 다운-샘플링된 최대 루마 샘플을 계산하는 단계, 상기 최소 루마 샘플에 대응하는 다운-샘플링된 최소 루마 샘플을 계산하는 단계, 상기 다운-샘플링된 최대 루마 샘플, 상기 다운-샘플링된 최소 루마 샘플, 상기 제1 재구성된 크로마 샘플, 및 상기 제 2 재구성된 크로마 샘플을 사용하여 선형 모델을 생성하는 단계, 상기 재구성된 루마 블록의 루마 샘플들로부터, 상기 크로마 블록의 크로마 샘플과 각각 대응되는 다운-샘플링된 루마 샘플들을 계산하는 단계, 및 상기 선형 모델을 대응되는 다운-샘플링된 루마 샘플들에 적용하여 상기 크로마 블록의 크로마 샘플들을 예측하는 단계를 수행하여 비디오 데이터를 디코딩하는 방법을 수행한다.

Description

크로스-검포넌트 선형 모델에 대한 간단화
본 발명은 일반적으로 비디오 데이터 인코딩 및 디코딩에 관한 것으로, 구체적으로 비디오 데이터 인코딩 및 디코딩 과정에서 크로스-검포넌트 선형 모델(cross-componet linear model)을 사용하여 크로마 블록(chroma block)을 재구성하는 방법 및 시스템에 관한 것이다.
디지털 비디오는 디지털 TV, 랩톱 또는 데스크톱 컴퓨터, 태블릿 컴퓨터, 디지털 카메라, 디지털 기록 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 스마트 폰, 비디오 화상 회의 장치, 비디오 스트리밍 장치와 같은 다양한 전자 장치에 의해 지지될 수 있다. 전자 장치는 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) 표준에 의하여 정의된 비디오 압축/복원 표준을 구현하여 디지털 비디오 데이터를 송신, 수신, 인코딩, 디코딩 및/또는 저장할 수 있다. 일반적으로, 비디오 압축은 비디오 데이터에 내재된 중복성을 감소하거나 제거하기 위하여 공간적(인트라-프레임) 예측 및/또는 시간적(인터-프레임) 예측을 수행하는 단계를 포함할 수 있다. 블록-기반 비디오 코딩의 경우, 비디오 프레임은 하나 또는 그 이상의 슬라이스(slice)로 분할되며, 각 슬라이스는 코딩 트리 단위(CTU: coding tree unit)로도 불리우는 비디오 블록을 복수 개 구비할 수 있다. 각 CTU는 하나의 코딩 단위(CU: coding unit)를 포함하거나, 소정의 최소 CU 크기에 도달 할 때까지 더 작은 CU로 재귀적으로 분할될 수 있다. 각 CU("리프 CU(leaf CU)"라고도 함)는 하나 또는 복수개의 변환 단위(TU: transformation unit)를 포함하고 각 CU는 하나 또는 복수개의 예측 단위(PU: prediction unit)를 포함할 수 있다. 각 CU는 인트라, 인터 또는 IBC 모드로 코딩될 수 있다. 비디오 프레임의 인트라 코딩된(I) 슬라이스의 비디오 블록들은 동일한 비디오 프레임 내의 인접 블록들의 기준 샘플들에 대한 공간적 예측을 사용하여 인코딩될 수 있다. 비디오 프레임의 인터 코딩(P 또는 B) 슬라이스의 비디오 블록들에 대하여, 동일한 비디오 프레임 내의 인접 블록의 기준 샘플들에 대한 공간적 예측 또는 다른 이전 및/또는 미래 기준 비디오 프레임들의 기준 샘플들에 대한 시간적 예측을 사용할 수 있다.
예를 들면, 인접 블록과 같이 이전에 인코딩된 기준 블록에 기초한 공간적 또는 시간적 예측은 코딩될 현재 비디오 블록에 대한 예측 블록을 생성할 수 있다. 기준 블록을 찾는 과정은 블록 매칭 알고리즘에 의해 수행될 수 있다. 코딩될 현재 블록과 예측 블록 사이의 픽셀 차이를 나타내는 잔여 데이터를 잔여 블록 또는 예측 오차라고할 수 있다. 인터 코딩된 블록은 예측 블록을 구성하는 기준 프레임 중의 기준 블록을 가리키는 움직임 벡터(motion vector) 및 잔여 블록에 따라 인코딩될 수 있다. 움직임 벡터를 확정하는 프로세스를 일반적으로 움직임 추정이라고 한다. 인트라 코딩된 블록은 인트라 예측 모드 및 잔여 블록에 따라 인코딩될 수 있다. 추가 압축을 위하여, 잔여 블록은 픽셀 도메인에서 주파수 도메인과 같은 변환 도메인으로 변환되고, 그 결과 추후에 양자화되는 잔여 변환 계수들이 생성될 수 있다. 초기에 2 차원 행렬로 배열된 양자화된 변환 계수들은 스캔되어 변환 계수들의 1 차원 벡터를 생성하고, 다음 비디오 비트스트림으로 엔트로피 인코딩되어 더 많은 압축을 달성할 수 있다.
다음, 인코딩된 비디오 비트스트림은 컴퓨터 판독 가능한 저장 매체(예를 들어, 플래시 메모리)에 저장되어 디지털 비디오 기능을 가진 다른 전자 장치에 의해 액세스되거나 유선 또는 무선으로 전자 장치에 직접 전송될 수 있다. 다음, 전자 장치는 예를 들어 인코딩된 비디오 비트스트림을 파싱하여 비트스트림으로부터 신택스 요소들(systax elements)을 획득하고, 비트스트림으로부터 획득한 신택스 요소들에 적어도 일부분 기초하여 디지털 비디오 데이터를 인코딩된 비디오 비트스트림으로부터 원 포맷으로 재구성하는 것을 통하여 비디오 복원(위에서 설명한 비디오 압축과 반대되는 프로세스)을 수행하며, 전자 장치의 디스플레이상에 재구성된 디지털 비디오 데이터를 렌더링할 수 있다.
디지털 비디오 품질이 고화질에서 4K Х 2K 또는 8K Х 4K로 변화함에 따라, 인코딩/디코딩될 비디오 데이터의 양이 급격히 증가한다. 디코딩된 비디오 데이터의 이미지 품질을 유지하는 동시에 비디오 데이터를 보다 효율적으로 인코딩/디코딩할 수 있는 방법은 끊임없는 문제이다.
본 발명은 비디오 데이터 인코딩 및 디코딩에 관한 구현 방식들을 설명하였으며, 구체적으로 비디오 데이터 인코딩 및 디코딩 과정에서 크로스-검포넌트 선형 모델(cross-componet linear model)을 사용하여 크로마 블록(chroma block)을 재구성하는 방법 및 시스템에 관한 구현 방식들을 설명하였다.
본 발명의 제1 면에 의하면, 비디오 신호를 디코딩하는 방법은 하나 또는 그 이상의 프로세서 및 상기 하나 또는 그 이상의 프로세서에 의해 실행될 복수의 프로그램을 저장하는 메모리를 구비한 컴퓨팅 장치에서 수행된다. 컴퓨터 장치는 크로마 블록과 대응하는 루마 블록을 재구성하되, 상기 루마 블록은 복수의 재구성된 인접 루마 샘플들과 인접하고, 상기 크로마 블록은 복수의 재구성된 인접 크로마 샘플들과 인접하는 단계; 상기 복수의 재구성된 인접 루마 샘플들로부터 복수의 다운-샘플링된 루마 샘플들을 계산하는 단계; 계산된 상기 복수의 다운-샘플링된 루마 샘플들의 서브-그룹으로부터, 적어도 하나의 다운-샘플링된 최대 루마 샘플을 식별하되, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제1 재구성된 크로마 샘플과 대응되되, 상기 서브 그룹은 계산된 상기 복수의 다운-샘플링된 루마 샘플들 중 소정 수량의 계산된 다운-샘플링된 루마 샘플들로 구성되며, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 서브 그룹 중 최대 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플인 단계; 계산된 상기 복수의 다운-샘플링된 루마 샘플들의 상기 서브-그룹으로부터, 적어도 하나의 다운-샘플링된 최소 루마 샘플을 식별하되, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제2 재구성된 크로마 샘플과 대응되되, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 서브 그룹 중 최소 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플인 단계; 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플, 상기 제1 재구성된 크로마 샘플, 및 상기 제 2 재구성된 크로마 샘플에 기초하여 선형 모델을 생성하는 단계;상기 재구성된 루마 블록의 루마 샘플들로부터, 상기 크로마 블록의 크로마 샘플과 각각 대응되는 다운-샘플링된 루마 샘플들을 계산하는 단계; 상기 선형 모델을 계산된 대응되는 다운-샘플링된 루마 샘플들에 적용하여 상기 크로마 블록의 크로마 샘플들을 예측하는 단계, 를 수행한다.
본 발명의 제2 면에 의하면, 컴퓨팅 장치는, 하나 또는 그 이상의 프로세서, 메모리 및 상기 메모리에 저장된 복수의 프로그램을 포함한다. 상기 프로그램은 상기 하나 또는 그 이상의 프로세서에 의해 실행될 경우 상기 컴퓨팅 장치로 하여금 상기 설명한 단계들을 수행하도록 한다.
본 발명의 제3 면에 의하면, 비-일시적 컴퓨터 판독 가능 저장 매체는 하나 또는 그 이상의 프로세서를 구비하는 컴퓨팅 장치에 의해 실행되는 복수의 프로그램을 저장한다. 상기 프로그램은 상기 하나 또는 그 이상의 프로세서에 의해 실행될 경우 상기 컴퓨팅 장치로 하여금 상기 설명한 단계들을 수행하도록 한다.
구현 방식의 추가 이해를 돕기 위하여 포함되며, 명세서의 일부분을 구성하는 첨부 도면은 설명된 구현 방식을 예시하고 설명과 함께 기본 원리를 설명하는 역할을 한다. 동일한 도면 부호는 해당 부품을 나타낸다.
도 1은 본 개시의 일부 구현 방식들에 따른 예시적인 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 2는 본 개시의 일부 구현 방식들에 따른 예시적인 비디오 인코더를 예시하는 블록도이다.
도 3은 본 개시의 일부 구현 방식들에 따른 예시적인 비디오 디코더를 예시하는 블록도이다.
도 4a내지 도4d는 본 개시의 일부 구현 방식들에 따른 프레임이 상이한 크기를 가진 복수의 비디오 블록들로 재귀적으로 쿼드-트리 분할되는 것을 예시하는 블록도이다.
도 5a는 본 개시의 일부 구현 방식들에 따른 인코딩될 현재 CU의 공간적으로 인접하고 시간적으로 배치된(temporally collocated) 블록 위치를 예시하는 블록도이다.
도 5b는 본 개시의 일부 구현 방식들에 따른 파면 병렬 처리를 사용하여 픽처의 복수의 행들의 CTU들을 다중-스레드 인코딩하는 것을 예시하는 블록도이다.
도 6a내지 도6d는 본 개시의 일부 구현 방식들에 따른 예시적인 재구성된 루마 블록 및 예시적인 연관 크로마 블록을 각각 예시하는 블록도이다.
도 7a내지 도7e는 본 개시의 일부 구현 방식들에 따른 크로스-검포넌트 선형 모델(cross-component linear model)을 사용하여 루마 값과 크로마 값 사이의 선형 모델을 도출하는 다양한 방법들을 예시한다.
도 8은 본 개시의 일부 구현 방식들에 따른 비디오 코덱이 크로스-검포넌트 선형 모델을 사용하여 루마 블록으로부터의 재구성된 루마 샘플들에 기초하여 크로마 블록의 크로마 샘플들을 재구성하는 기술을 구현하는 예시적인 프로세스를 나타내는 흐름도이다.
이하 그 예가 첨부 도면에 도시되어 있는 특정 구현 방식들에 대한 상세한 설명을 진행한다. 다음의 상세한 설명에서, 본 명세서에 기재된 내용의 이해를 돕기 위하여 복수의 비-제한적인 특정 세부 사항이 설명된다. 그러나, 청구 범위의 범위를 벗어나지 않는 전제하에서 다양한 변경을 진행할 수 있으며, 특정된 세부 사항이 없이도 본 발명을 구현할 수 있다는 것은 당업자에게 자명한 것이다. 예를 들어, 본 명세서에 기재한 기술적 방안은 디지털 비디오 기능을 구비한 다양한 유형의 전자 장치에서 구현될 수 있다는 것은 당업자에게 자명한 것이다.
도 1은 본 개시의 일부 구현 방식들에 따른 비디오 블록들을 병렬로 인코딩 및 디코딩하기 위한 예시적인 시스템(10)을 예시하는 블록도이다. 도 1에 도시된 바와 같이, 시스템(10)은 목적지 장치(14)에 의해 나중에 디코딩될 비디오 데이터를 생성하고 인코딩하는 소스 장치(12)를 포함한다. 소스 장치(12) 및 목적지 장치(14)는 데스크톱 또는 랩탑 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 셋톱 박스, 디지털 텔레비전, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 장치와 같은 다양한 전자 장치 중 어느 하나로 구성될 수 있다. 일부 구현 방식에서, 소스 장치(12) 및 목적지 장치(14)는 무선 통신 기능을 구비할 수 있다.
일부 구현 방식들에서, 목적지 장치(14)는 링크(16)를 통하여 디코딩될 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16)는 인코딩된 비디오 데이터를 소스 장치(12)로부터 목적지 장치(14)로 이동할 수 있는 임의의 유형의 통신 매체 또는 장치를 포함할 수 있다. 일예에서, 링크(16)는 인코딩된 비디오 데이터를 소스 장치(12)가 목적지 장치(14)에 실시간으로 직접 전송할 수 있도록 하는 통신 매체를 포함할 수 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되어 목적지 장치(14)로 전송될 수 있다. 통신 매체는 무선 주파수(RF) 스펙트럼 또는 하나 또는 그 이상의 물리적 전송 라인과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 매체는 근거리 네트워크(local area network), 광역 네트워크(wide-area network), 또는 인터넷(Internet)과 같은 글로벌 네트워크(global network) 와 같은 패킷-기반 네트워크(packet-based network)의 일부분을 형성할 수 있다. 통신 매체는 라우터, 스위치, 기지국, 또는 소스 장치(12)로부터 목적지 장치(14)로의 통신을 용이하게 하는데 사용할 수 있는 임의의 다른 장비를 포함할 수 있다.
일부 다른 구현 방식들에서, 인코딩된 비디오 데이터는 출력 인터페이스(22)로부터 저장 장치(32)로 전송될 수 있다. 다음, 저장 장치(32) 내의 인코딩된 비디오 데이터는 목적지 장치(14)가 입력 인터페이스(28)를 통하여 액세스할 수 있다. 저장 장치(32)는 다양한 분산 또는 로컬 액세스 데이터 저장 매체(예하면, 하드 드라이브, Blu-ray 디스크, DVD, CD-ROM, 플래시 메모리, 휘발성 또는 비 휘발성 메모리), 또는 인코딩된 비디오 데이터를 저장하기에 적절한 기타 디지털 저장 매체 중의 임의의 하나를 포함할 수 있다. 추가 예에서, 저장 장치(32)는 소스 장치(12)에 의해 생성된 인코딩된 비디오 데이터를 보유할 수 있는 다른 중간 저장 장치 또는 파일 서버(file server)에 대응할 수 있다. 목적지 장치(14)는 스트리밍 또는 다운로드를 통해 저장 장치(32)로부터 저장된 비디오 데이터에 액세스할 수있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 인코딩된 비디오 데이터를 목적지 장치(14)로 전송할 수 있는 임의의 유형의 컴퓨터일 수 있다. 예시적인 파일 서버는 웹 서버(예 : 웹 사이트 용), FTP 서버, 네트워크 연결 스토리지(network attached storage: NAS) 장치 또는 로컬 디스크 드라이브(local disk driver)를 포함할 수 있다. 목적지 장치(14)는 파일 서버에 저장된 인코딩된 비디오 데이터의 액세스에 적합한 무선 채널(예하면, Wi-Fi 연결), 유선 연결(예하면, DSL, 케이블 모뎀 등) 또는 이들의 조합을 포함하는 임의의 표준 데이터 연결을 통해 인코딩된 비디오 데이터에 액세스할 수 있다. 저장 장치(32)로부터의 인코딩된 비디오 데이터의 전송은 스트리밍 전송, 다운로드 전송 또는 그들의 조합일 수 있다.
도 1에 도시된 바와 같이, 소스 장치(12)는 비디오 소스(18), 비디오 인코더(20) 및 출력 인터페이스(22)를 포함한다. 비디오 소스(18)는 비디오 캡처 장치(예를 들어, 비디오 카메라), 이전에 캡처된 비디오를 포함하는 비디오 아카이브(video archieve), 비디오 콘텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스 및/또는 컴퓨터 그래픽 데이터를 소스 비디오로 생성하기 위한 컴퓨터 그래픽 시스템, 또는 이들의 조합을 포함할 수 있다. 일례로, 비디오 소스(18)가 보안 감시 시스템의 비디오 카메라인 경우, 소스 장치(12) 및 목적지 장치(14)는 카메라 폰 또는 비디오 폰을 형성할 수 있다. 그러나, 본 발명에서 설명하는 구현 방식은 일반적으로 비디오 코딩에 적용될 수 있는 것이고, 무선 및/또는 유선 애플리케이션에 적용될 수 있다.
캡처된, 사전에 캡처된 또는 컴퓨터에 의하여 생성된 비디오는 비디오 인코더(20)에 의해 인코딩될 수 있다. 인코딩된 비디오 데이터는 소스 장치(12)의 출력 인터페이스(22)를 통해 목적지 장치(14)로 직접 전송될 수 있다. 또한, 인코딩된 비디오 데이터는 (또는 대안 적으로) 저장 장치(32)에 저장되어 추후에 목적지 장치(14) 또는 다른 장치에 의하여 엑세스되어 디코딩 및/또는 재생되도록 할 수 있다. 출력 인터페이스(22)는 모뎀 및/또는 송신기를 더 포함 할 수있다.
목적지 장치(14)는 입력 인터페이스(28), 비디오 디코더(30) 및 디스플레이 장치(34)를 포함한다. 입력 인터페이스(28)는 수신기 및/또는 모뎀을 포함 할 수 있으며, 링크(16)를 통해 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16)를 통해 전송되거나 저장 장치(32) 상에 제공되는 인코딩된 비디오 데이터는 비디오 디코더(30)가 비디오 데이터를 디코딩하기 위하여 사용되는 비디오 인코더(20)에 의해 생성된 다양한 신택스 요소들(systax elements)을 포함할 수 있다. 이러한 신택스 요소들은 통신 매체를 통해 전송되거나, 저장 매체에 저장되거나 파일 서버에 저장되는 인코딩된 비디오 데이터에 포함될 수 있다.
일부 구현 방식에서, 목적지 장치(14)는 통합 디스플레이 장치 및 목적지 장치(14)와 통신하도록 구성된 외부 디스플레이 장치일 수 있는 디스플레이 장치(34)를 포함 할 수 있다. 디스플레이 장치(34)는 디코딩된 비디오 데이터를 사용자에게 디스플레이하며, 액정 디스플레이(LCD), 플라즈마 디스플레이(plasma display), 유기 발광 다이오드(OLED) 디스플레이 중 임의의 하나 또는 다른 유형의 디스플레이 장치와 같은 다양한 디스플레이 장치를 포함할 수 있다.
비디오 인코더(20) 및 비디오 디코더(30)는 VVC, HEVC, MPEG-4, Part 10, AVC(Advanced Video Coding) 또는 이러한 표준들의 확장과 같은 독점적 또는 산업 표준들에 따라 동작 할 수있다. 본 발명은 특정된 비디오 코딩/디코딩 표준에 제한되지 않고, 다른 비디오 코딩/디코딩 표준에 적용될 수 있음을 이해하여야 한다. 일반적으로, 소스 장치(12)의 비디오 인코더(20)는 이러한 현재 또는 미래의 표준 중 임의의 하나에 따라 비디오 데이터를 인코딩하도록 구성될 수 있음을 고려되어야 한다. 유사하게, 목적지 장치(14)의 비디오 디코더(30)는 이러한 현재 또는 미래의 표준 중 임의의 하나에 따라 비디오 데이터를 디코딩하도록 구성 될 수 있음을 일반적으로 고려되어야 한다.
비디오 인코더(20) 및 비디오 디코더(30) 각각은 하나 또는 그 이상의 마이크로 프로세서, 디지털 신호 프로세서(digital signal processor, DSP), 주문형 집적 회로(application specific integrated circuit: ASIC), 현장 프로그래머블 게이트 어레이(Field Programmable Gate Array: FPGA), 이산 로직과 같은 다양한 적합한 인코더 회로, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 조합 중의 어느 하나로 구현할 수 있다. 부분적으로 소프트웨어로 구현되는 경우, 전자 장치는 소프트웨어에 대한 명령을 적절한 비 일시적 컴퓨터 판독 가능 매체에 저장하고 하나 또는 그 이상의 프로세서를 사용하여 하드웨어에서 명령을 실행하여 본 개시에서 개시한 비디오 코딩/디코딩 동작을 수행 할 수 있다. 비디오 인코더(20) 및 비디오 디코더(30) 각각은 하나 또는 그 이상의 인코더 또는 디코더에 포함될 수 있으며, 이들은 결합된 인코더/디코더(CODEC)의 일부분으로 각각의 장치에 직접될 수있다.
도 2는 본 발명에서 설명한 일부 구현 방식들에 따른 예시적인 비디오 인코더(20)를 도시하는 블록도이다. 비디오 인코더(20)는 비디오 프레임 내의 비디오 블록들의 인트라 및 인터 예측 코딩을 수행할 수 있다. 인트라 예측 코딩은 공간적 예측에 의존하여 주어진 비디오 프레임 또는 픽처 내의 비디오 데이터의 공간 중복성을 줄이거나 제거할 수 있다. 인터 예측 코딩은 시간적 예측에 의존하여 비디오 시퀀스의 인접한 비디오 프레임 또는 픽처 내의 비디오 데이터의 시간 중복성을 줄이거나 제거할 수 있다.
도 2에 도시된 바와 같이, 비디오 인코더(20)는 비디오 데이터 메모리(40), 예측 처리부(41), 디코딩 픽처 버퍼(DPB, 64), 가산기(50), 변환 처리부(52), 양자화부(54) 및 엔트로피 인코딩부(56)을 포함한다. 또한, 예측 처리부(41)는 움직임 추정부(42), 움직임 보상부(44), 분할부(45), 인트라 예측 처리부(46) 및 인트라 블록 카피(BC)부(48)를 포함한다. 일부 구현 방식들에서, 비디오 인코더(20)는 또한 비디오 블록 재구성을 위한 역 양자화부(58), 역변환 처리부(60) 및 가산기(62)를 포함한다. 디 블록킹 필터(도시되지 않음)는 가산기(62)와 DPB(64) 사이에 위치하여 블록 경계를 필터링하여 재구성된 비디오로부터 블록성 아티팩트(blockiness artifacts)를 제거할 수 있다. 디 블로킹 필터외에, 인 루프 필터(도시되지 않음)는 또한 가산기(62)의 출력을 필터링하기 위하여 사용될 수 있다. 비디오 인코더(20)는 고정된 또는 프로그램 가능한 하드웨어 유닛의 형태로 구성되거나 하나 또는 그 이상의 예시된 고정된 또는 프로그래밍 가능한 하드웨어 장치에 분할될 수 있다.
비디오 데이터 메모리(40)는 비디오 인코더(20)의 구성 요소들에 의해 인코딩될 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리(40) 중의 비디오 데이터는 예를 들어 비디오 소스(18)로부터 획득될 수 있다. DPB(64)는 비디오 인코더(20)가 비디오 데이터를(예를 들어, 인트라 또는 인터 예측 코딩 모드에서) 인코딩하기 위하여 사용되는 기준 비디오 데이터를 저장하는 버퍼이다. 비디오 데이터 메모리(40) 및 DPB(64)는 다양한 메모리 장치들 중의 어느 하나에 의해 형성될 수있다. 다양한 예에서, 비디오 데이터 메모리(40)는 비디오 인코더(20)의 다른 구성 요소들과 함께 온칩(on-chip) 되거나, 이러한 구성요소들에 대하여 오프 칩(off-chip)될 수있다.
도 2에 도시된 바와 같이, 비디오 데이터를 수신 후, 예측 처리부(41) 내의 분할부(45)는 비디오 데이터를 비디오 블록들로 분할한다. 한편, 이러한 분할은 비디오 데이터와 연관된 쿼드-트리 구조와 같은 미리 설정된 분할 구조에 따라 비디오 프레임을 슬라이스(slice), 타일(tile) 또는 다른 더 큰 코딩 단위(coding unit: CU)로 분할하는 것을 포함할 수 있다. 비디오 프레임은 복수의 비디오 블록들(또는 타일이라고 하는 비디오 블록들의 세트)로 분할될 수 있다. 예측 처리부(41)는 오차 결과(예를 들어, 코딩 레이트 및 왜곡 레벨)에 기초하여 현재 비디오 블록에 대한 복수의 인트라 예측 코딩 모드 중 하나 또는 복수의 인터 예측 코딩 모드 중 하나와 같은 복수의 가능한 예측 코딩 모드 중 하나를 선택할 수 있다. 예측 처리부(41)는 처리 결과인 인트라 또는 인터 예측 코딩된 블록을 가산기(50)에 제공하여 잔여 블록을 생성하고, 가산기(62)에 제공하여 인코딩된 블록을 재구성하여 추후에 기준 프레임의 일부로서 사용할 수 있다. 한편, 예측 처리부(41)는 움직임 벡터, 인트라-모드 지시자(indicator), 분할 정보 및 기타 이러한 신택스 정보와 같은 신택스 요소들을 엔트로피 인코딩부(56)에 제공할 수 있다.
현재 비디오 블록에 대한 적절한 인트라 예측 코딩 모드를 선택하기 위하여, 예측 처리부(41) 내의 인트라 예측 처리부(46)는 코딩될 현재 블록과 동일한 프레임 내의 하나 또는 그 이상의 인접한 블록에 대하여 현재 비디오 블록의 인트라 예측 코딩을 수행하여 공간 예측을 제공할 수 있다. 예측 처리부(41) 내의 움직임 추정부(42) 및 움직임 보상부(44)는 하나 또는 그 이상의 기준 프레임 중의 하나 또는 그 이상의 예측 블록에 대한 현재 비디오 블록의 인터 예측 코딩을 수행하여 시간적 예측을 제공할 수 있다. 비디오 인코더(20)는 복수의 코딩 패스(coding passes)를 수행하여, 예를 들어, 비디오 데이터의 각 블록에 대한 적절한 코딩 모드를 선택할 수있다.
일부 구현 방식들에서, 움직임 추정부(42)는 비디오 프레임 시퀀스 내의 미리 결정된 패턴에 따라 움직임 벡터를 생성하는 것을 통하여 현재 비디오 프레임에 대한 인터 예측 모드를 확정하며, 상기 움직임 벡터는 기준 비디오 프레임 내의 예측 블록에 대한 현재 비디오 프레임 내의 비디오 블록의 예측 단위(prediction unit: PU)의 변위를 기리킬 수 있다. 움직임 추정부(42)에 의해 수행되는 움직임 추정은 비디오 블록들의 움직임을 추정하는 움직임 벡터들을 생성하는 과정이다. 예를 들어, 움직임 벡터는, 현재 프레임(또는, 기타 코딩된 단위)내의 코?되고 있는 현재 블록에 대한 기준 프레임(또는, 기타 코딩된 유닛) 내의 예측 블록에 대한 현재 비디오 프레임 또는 픽처 내의 비디오 블록의 PU의 변위을 가리킬 수 있다. 미리 정해진 패턴은 시퀀스의 비디오 프레임을 P 프레임 아니면 B 프레임으로 지정할 수 있다. 인트라 BC 부(48)는 인터 예측을 위한 움직임 추정부(42)의 움직임 벡터들의 결정과 유사한 방식으로 인트라 BC 코딩을 위한 벡터들(예를 들어 블록 벡터들)을 확정할 수 있거나, 움직임 추정부(42)를 이용하여 블록 벡터를 추정할 수있다.
예측 블록은 픽셀 차이 면에서 코딩될 비디오 블록의 PU와 제일 근접하는 것으로 간주되는 기준 프레임의 블록으로, 필섹 차이는 절대 차이의 합(sum of absolute difference: SAD), 제곱 차이의 합(sum of square difference: SSD) 또는 기타 차이 메트릭에 의해 결정될 수 있다. 일부 구현 방식들에서, 비디오 인코더(20)는 DPB(64)에 저장된 기준 프레임들의 서브-정수 픽셀 위치들에 대한 값들을 계산할 수 있다. 예를 들어, 비디오 인코더(20)는 기준 프레임의 1/4 픽셀 위치, 1/8 픽셀 위치 또는 기타 분수 픽셀 위치의 값들을 보간할 수 있다. 따라서, 움직임 추정부(42)는 전체 픽셀 위치 및 분수 픽셀 위치에 대한 움직임 검색을 수행하고 분수 픽셀 정밀도에 의한 움직임 벡터를 출력 할 수 있다.
움직임 추정부(42)는 기준 프레임의 예측 블록의 위치와 PU의 위치를 비교하여 인터 예측 코딩된 프레임 내의 비디오 블록의 PU에 대한 움직임 벡터를 계산하되, 상기 기준 프레임은 DPB(64)에 저장된 하나 또는 그 이상의 기준 프레임을 각각 식별하는 제 1 기준 프레임 리스트(List 0)또는 제2 기준 프레임 리스트(List 1)로부터 선택될 수 있다. 움직임 추정부(42)는 계산된 움직임 벡터를 움직임 보상부(44)로 전송하고, 다음 엔트로피 인코딩부(56)로 전송한다.
움직임 보상부(44)에 의해 수행되는 움직임 보상은, 움직임 추정부(42)가 결정한 움직임 벡터에 기초하여 예측 블록을 페치(fetch)하거나 생성하는 것을 포함할 수 있다. 현재 비디오 블록의 PU에 대한 움직임 벡터를 수신하면, 움직임 보상부(44)는 기준 프레임 리스트들 중의 하나에서 움직임 벡터가 가리키는 예측 블록을 찾고, DPB(64)로부터 예측 블록을 검색하고, 예측 블록을 가산기(50)로 전달할 수 있다. 다음, 가산기(50)는 코딩되고 있는 현재 비디오 블록의 픽셀 값으로부터 움직임 보상부(44)가 제공한 예측 블록의 픽셀 값을 감산하는 것을 통하여 잔여 비디오 블록의 픽셀 차이 값을 형성할 수 있다. 잔여 비디오 블록을 형성하는 픽셀 차이 값은 루마 또는 크로마 차이 성분 또는 양자를 포함할 수 있다. 또한, 움직임 보상부(44)는 비디오 디코더(30)가 비디오 프레임의 비디오 블록을 디코딩할 경우에 사용하는 비디오 프레임의 비디오 블록과 연관된 신택스 요소를 생성 할 수 있다. 신택스 요소들은, 예를 들어, 예측 블록을 식별하기 위하여 사용되는 움직임 벡터들을 정의하는 신택스 요소들, 예측 모드를 나타내는 임의의 플래그, 또는 본 명세서에서 설명된 임의의 다른 신택스 정보를 포함 할 수 있다. 움직임 추정부(42) 및 움직임 보상부(44)는 고도로 직접될 수 있으나, 개념적 목적을 위해 별도로 도시되어 있다.
일부 구현 방식들에서, 인트라 BC부(48)는 움직임 추정부(42) 및 움직임 보상부(44)과 관련하여 위에서 설명한 것과 유사한 방식으로 벡터들을 생성하고 예측 블록들을 페치(fetch)할 수 있지만, 이러한 예측 블록들은 코딩되고 있는 현재 블록과 같은 프레임 내에 있으며, 벡터들은 움직임 벡터가 아닌 블록 벡터라 한다. 구체적으로, 인트라 BC부(48)는 현재 블록을 인코딩하기 위하여 사용하는 인트라 예측 모드를 결정할 수 있다. 일부 예들에서, 인트라 BC부(48)는 예를 들어 개별 인코딩 패스 동안 다양한 인트라 예측 모드들을 사용하여 현재 블록을 인코딩할 수 있고, 레이트 왜곡 분석을 통해 그들의 성능을 테스트할 수 있다. 다음으로, 인트라 BC부(48)는 다양한 테스트된 인트라 예측 모드들 중에서 적절한 인트라 예측 모드를 선택하여 사용하고 그에 따른 인트라 모드 식별자를 생성할 수 있다. 예를 들어, 인트라 BC부(48)는 테스트된 다양한 인트라 예측 모드들에 대한 레이트 왜곡 분석들(rate-distortion analysis)을 이용하여 레이트-왜곡 값들(rate-distortion value)을 계산할 수 있고, 테스트된 모드들 중 최적의 레이트-왜곡 특성을 갖는 인트라-예측 모드를 적절한 인트라 예측 모드로 선택하여 사용할 수 있다. 일반적으로, 레이트 왜곡 분석은 인코딩된 블록과 인코딩된 블록을 생성하기 위하여 인코딩되는 원래의 인코딩되지 않은 블록 사이의 왜곡(또는 오차)의 양 및 인코딩된 블록을 생성하기 위한 비트율(즉, 비트 수)을 결정한다. 인트라 BC부(48)는 다양한 인코딩된 블록들에 대한 왜곡(distortion) 및 레이트로부터 비율을 계산하여 어느 인트라 예측 모드가 블록에 대하여 최적의 레이트-왜곡 값을 나타내는지를 결정할 수 있다.
다른 예들에서, 인트라 BC부(48)는 전체적으로 또는 부분적으로 움직임 추정부(42) 및 움직임 보상부(44)를 사용하여 본 명세서에서 설명 된 구현 방식들에 따른 인트라 BC 예측을 위한 기능들을 수행 할 수 있다. 두 경우 모두, 인트라 블록 복사(block copy)에 대하여, 예측 블록은 절대 차이의 합(SAD), 제곱 차이(SSD)의 합 또는 다른 차이 메트릭에 의해 결정되는 픽셀 차이 면에서 코딩될 블록과 밀접하게 매칭되는 것으로 간주되는 블록일 수 있으며, 예측 블록의 식별은 서브-정수 픽셀 위치에 대한 값의 계산을 포함할 수 있다.
예측 블록이 인트라 예측에 따라 동일한 프레임 또는 인터 예측에 따라 다른 프레임으로부터 생성되는 것과 관련 없이, 비디오 인코더(20)는 코딩되는 현재 비디오 블록의 픽셀 값들로부터 예측 블록의 픽셀 값들을 감산하여 픽셀 차이 값들을 형성하는 것을 통하여 잔여 비디오 블록을 형성할 수 있다. 잔여 비디오 블록을 형성하는 픽셀 차이 값들은 루마(luma) 및 크로마(chroma) 성분 차이를 모두 포함할 수 있다.
위에서 설명한 움직임 추정부(42) 및 움직임 보상부(44)에 의해 수행되는 인터 예측 또는 인트라 BC부(48)에 의해 수행되는 인트라 블록 복사 예측에 대한 대안으로서, 인트라 예측 처리부(46)는 현재 비디오 블록을 인트라 예측할 수 있다. 구체적으로, 인트라 예측 처리부(46)는 현재 블록을 인코딩하기 위해 사용할 인트라 예측 모드를 결정할 수있다. 이를 위하여, 인트라 예측 처리부(46)는 예를 들어 개별 인코딩 패스 동안 다양한 인트라 예측 모드들을 사용하여 현재 블록을 인코딩할 수 있고, 인트라 예측 처리부(46)(또는 일부 예들에서 모드 선택부)는 테스트된 인트라 예측 모드들로부터 적절한 인트라 예측 모들를 선택하여 사용할 수 있다. 인트라 예측 처리부(46)는 블록에 대해 선택한 인트라 예측 모드를 나타내는 정보를 엔트로피 인코딩부(56)에 제공할 수 있다. 엔트로피 인코딩부(56)는 선택된 인트라-예측 모드를 나타내는 정보를 비트스트림에 인코딩할 수있다.
예측 처리부(41)가 인터 예측 또는 인트라 예측을 통해 현재 비디오 블록에 대한 예측 블록을 결정한 후, 가산기(50)는 현재 비디오 블록으로부터 예측 블록을 감산하여 잔여 비디오 블록(residual video block)을 형성한다. 잔여 블록 내의 잔여 비디오 데이터는 하나 또는 그 이상의 변환 단위(TU)에 포함될 수 있으며, 변환 처리부(52)에 제공된다. 변환 처리부(52)는 이산 코사인 변환(DCT) 또는 개념적으로 유사한 변환과 같은 변환을 사용하여 잔여 비디오 데이터를 잔여 변환 계수로 변환한다.
변환 처리부(52)는 얻은 변환 계수들을 양자화부(54)에 전송할 수 있다. 양자화부(54)는 변환 계수들을 양자화하여 비트 레이트를 더 감소할 수 있다. 또한, 양자화 프로세스는 계수들의 일부 또는 전부와 관련된 비트 깊이(bit depth)를 감소할 수 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수 있다. 일부 예들에서, 양자화부(54)는 양자화된 변환 계수들을 포함하는 매트릭스의 스캔을 수행할 수 있다. 또는, 엔트로피 인코딩부(56)가 상기 스캔을 수행할 수 있다.
양자화한 다음, 엔트로피 인코딩부(56)은 예를 들어, 컨텍스트 적응형 가변 길이 코딩(context adaptive variable length coding: CAVLC), 컨텍스트 적응형 이진 산술 코딩(context adaptive binary arithmetic coding: CABAC), 신택스 기반 컨텍스트 적응형 이진 산술 코딩(syntax-based context-adaptive binary arithmetic coding: SBAC), 확률 간격 분할 엔트로피(probability interval partitioning entropy: PIPE) 코딩 또는 다른 엔트로피 인코딩 방법 또는 기술을 사용하여 양자화된 변환 계수들을 비디오 비트스트림으로 엔트로피 인코딩한다. 인코딩된 비트스트림은 비디오 디코더(30)로 전송되거나, 저장 장치(32)에 저장되어 추후에 비디오 디코더(30)로 전송되거나 또는 비디오 디코더(30)에 의하여 검색될 수 있다. 엔트로피 인코딩부(56)는 또한 코딩되는 현재 비디오 프레임에 대한 움직임 벡터들 및 다른 신택스 요소들을 엔트로피 인코딩할 수 있다.
역 양자화부(58) 및 역변환 처리부(60)는 다른 비디오 블록들의 예측을 위한 기준 블록을 생성하기 위하여, 각각 역 양자화 및 역변환을 적용하여 픽셀 도메인에서 잔여 비디오 블록을 재구성할 수 있다. 위에서 설명한 바와 같이, 움직임 보상부(44)는 DPB(64)에 저장된 프레임들의 하나 또는 그 이상의 기준 블록으로부터 움직임 보상된 예측 블록을 생성할 수 있다. 움직임 보상부(44)는 또한 하나 또는 그 이상의 보간 필터를 예측 블록에 적용하여 움직임 추정에 사용하기 위한 서브-정수 픽셀 값들을 산출할 수 있다.
가산기(62)는 재구성된 잔여 블록과 움직임 보상부(44)에 의해 생성된 움직임 보상된 예측 블록을 가산하여 DPB(64)에 저장하기 위한 기준 블록을 생성할 수 있다. 다음, 기준 블록은 인트라 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)의 디코딩 픽처 버퍼(Decoded picture buffer: DPB)(92)는(예를 들어, 인트라 또는 인터 예측 코딩 모드에서) 비디오 디코더(30)가 비디오 데이터를 디코딩하는데 사용하기 위한 기준 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리(79) 및 DPB(92)는 SDRAM, MRAM, RRAM을 포함하는 DRAM과 같은 다양한 메모리 장치 또는 다른 유형의 메모리 장치 중의 어느 하나로 형성될 수 있다. 설명을 위해, 비디오 데이터 메모리(79) 및 DPB(92)는 도3에서 비디오 디코더(30)의 두 개의 별개의 부분으로 도시되었다. 그러나, 비디오 데이터 메모리(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)에 저장된 기준 프레임들에 기초하여 디폴트 구성 기술들을 사용하여 기준 프레임 리스트들 List0 및 List1을 생성할 수 있다.
일부 예들에서, 비디오 블록이 본 명세서에서 설명한 인트라 BC 모드에 따라 코딩 될 경우, 예측 처리부(81)의 인트라 BC부(85)는 엔트로피 디코딩부(80)로부터 수신된 블록 벡터들 및 다른 신택스 요소들에 기초하여 현재 비디오 블록에 대한 예측 블록들을 생성한다. 예측 블록들은 비디오 인코더(20)에 의해 정의된 현재 비디오 블록과 동일한 픽쳐의 재구성 영역 내에 포함될 수 있다.
움직임 보상부(82) 및/또는 인트라 BC부(85)는 움직임 벡터들 및 다른 신택스 요소들을 파싱하여 현재 비디오 프레임의 비디오 블록에 대한 예측 정보를 결정한 다음, 예측 정보를 사용하여 디코딩되는 현재 비디오 블록에 대한 예측 블록들을 생성한다. 예를 들어, 움직임 보상부(82)는 수신된 신택스 요소들 중 일부를 사용하여 비디오 프레임의 비디오 블록들의 코딩에 사용되는 예측 모드(예를 들어, 인트라 또는 인터 예측), 인터 예측 프레임 유형(예를 들어, B 또는 P), 프레임에 대한 기준 프레임 리스트들 중 하나 또는 그 이상에 대한 구성 정보, 프레임의 각 인터 예측 코딩된 비디오 블록에 대한 움직임 벡터들, 프레임의 각 인터 예측 코딩된 비디오 블록에 대한 인터 예측 상태, 및 현재 비디오 프레임의 비디오 블록들을 디코딩하기 위한 기타 정보를 결정할 수 있다.
유사하게, 인트라 BC부(85)는 수신된 신택스 요소들 중 일부, 예를 들어, 현재 비디오 블록이 인트라 BC 모드를 사용하여 예측되었음을 결정하는 플래그, 프레임의 어느 비디오 블록들이 재구성된 영역 내에 있으며 DPB(92)에 저장되어야 하는 구성 정보(construction information), 프레임의 각 인트라 BC 예측된 비디오 블록에 대한 블록 벡터들, 프레임의 각 인트라 BC 예측된 비디오 블록에 대한 인트라 BC 예측 상태 및 현재 비디오 프레임 내의 비디오 블록들을 디코딩하기 위한 기타 정보를 사용할 수 있다.
움직임 보상부(82)는 또한 기준 블록들의 서브-정수 픽셀에 대한 보간 값들을 계산하기 위해 비디오 블록들의 인코딩 동안 비디오 인코더(20)가 사용하는 보간 필터들를 사용하여 보간을 수행할 수 있다. 이 경우, 움직임 보상부(82)는 수신된 신택스 요소들로부터 비디오 인코더(20)가 사용하는 보간 필터들을 결정하고, 결정된 보간 필터들을 사용하여 예측 블록들을 생성할 수 있다.
역 양자화부(86)는 비디오 프레임의 각 비디오 블록에 대해 비디오 인코더(20)가 계산한 것과 동일한 양자화 파라미터를 사용하여, 비트스트림 내에 제공되며 엔트로피 디코딩부(80)에 의하여 엔트로피 디코딩된 변환 계수들을 역 양자화하여 양자화 정도를 결정한다. 역 변환 처리부(88)는 픽셀 도메인에서 잔여 블록을 재구성하기 위하여, 역 변환(예를 들어 역 DCT, 역 정수 변환 또는 개념적으로 유사한 역 변환 프로세스)을 변환 계수에 적용한다.
움직임 보상부(82) 또는 인트라 BC부(85)에서 벡터들 및 기타 신택스 요소들에 기초하여 현재 비디오 블록에 대한 예측 블록을 생성한 다음, 가산기(90)는 역 변환 처리부(88)에서 제공한 잔여 블록 및 움직임 보상부(82) 및 인트라 BC부(85)에 의해 생성된 대응하는 예측 블록을 가산하는 것을 통하여 현재 비디오 블록에 대한 디코딩된 비디오 블록을 재구성한다. 인-루프 필터(도시되지 않음)는 가산기(90)와 DPB(92) 사이에 위치되어 디코딩된 비디오 블록을 추가로 처리할 수 있다. 주어진 프레임 내의 디코딩된 비디오 블록들은 다음 비디오 블록들의 후속 움직임 보상에 사용되는 기준 프레임들을 저장한 DPB(92)에 저장된다. DPB(92) 또는 DPB(92)와 분리된 메모리 장치는 또한 디코딩된 비디오를 저장하여 도 1의 디스플레이 장치(34)와 같은 디스플레이 장치에서 나중에 표시할 수 있다.
전형적인 비디오 코딩 프로세스에서, 비디오 시퀀스는 일반적으로 순서가 지정된 프레임들 또는 픽처들의 세트를 포함한다. 각 프레임은 SL, SCb 및 SCr로 표시되는 3 개의 샘플 행렬들을 포함할 수 있다. SL은 루마 샘플의 2 차원 행렬이다. SCb는 Cb 크로마 샘플의 2 차원 행렬이다. SCr은 Cr 크로마 샘플의 2 차원 행렬이다. 다른 경우에, 프레임은 단색일 수 있으므로, 루마 샘플의 2 차원 행렬 하나만 포함할 수 있다.
도 4A에 도시된 바와 같이, 비디오 인코더(20)(또는, 더 구체적으로 분할부(45))는 먼저 프레임을 코딩 트리 단위들(CTUs)의 세트로 분할함으로써 프레임의 인코딩된 표현을 생성한다. 비디오 프레임은 좌측에서 우측으로 그리고 상측에서 하측으로 향하는 래스터 스캔 순서(raster scan order)로 연속적으로 정렬된 정수 수량의 CTU들을 포함할 수 있다. 각 CTU는 가장 큰 논리 코딩 단위(logical coding unit)이고, CTU의 너비와 높이는 비디오 인코더(20)에 의해 시퀀스 파라미트 세트로 시그널링되므로, 비디오 시퀀스의 모든 CTU는 128Х128, 64Х 64, 32 Х 32 및 16 Х 16 중 하나와 동일한 크기를 구비한다. 그러나, 본 발명은 반드시 특정 크기로 제한되는 것은 아니라는 점에 유의해야 한다. 도 4B에 도시된 바와 같이, 각 CTU는 루마 샘플들의 하나의 코딩 트리 블록(coding tree block: CTB), 크로마 샘플들의 두 개의 대응되는 코딩 트리 블록들, 및 코딩 트리 블록들의 샘플들을 코딩하기 위하여 사용되는 신택스 요소들을 포함할 수 있다. 신택스 요소들은 픽셀들의 코딩된 블록의 상이한 유형의 단위들의 특성 및 비디오 시퀀스가 비디오 디코더(30)에서 어떻게 재구성되는가를 기술할 수 있으며, 인터 또는 인트라 예측, 인트라 예측 모드, 움직임 벡터들 및 기타 파라미터들을 포함할 수 있다. 모노 픽처(monochrome picture) 또는 3 개의 개별 컬러 평면(Color Plane)을 구비한 픽처에서, CTU는 하나의 코딩 트리 블록 및 코딩 트리 블록의 샘플들을 코딩하기 위하여 사용되는 신택스 요소들을 포함 할 수 있다. 코딩 트리 블록은 샘플의 N Х N 블록 일 수 있다.
더 좋은 성능을 달성하기 위하여, 비디오 인코더(20)는 CTU의 코딩 트리 블록들에 대하여 바이너리-트리 분할, 쿼드-트리 분할 또는 이들 조합과 같은 트리 분할을 재귀적으로 수행하고, CTU를 더 작은 코딩 단위들(CUs)로 분할할 수 있다. 도 4C에서, 64x64 CTU(400)은 먼저 블록 크기가 32x32 인 4 개의 더 작은 CU로 분할된다. 4 개의 더 작은 CU 중, CU(410) 및 CU(420)는 각각 블록 크기가 16x16인 4 개의 CU로 분할된다. 2 개의 16x16 CU(430 및 440)는 각각 블록 크기가 8x8인 4개의 CU들로 더 분할된다. 도 4D는 도 4C에 도시된 CTU(400)의 분할 프로세스의 최종 결과를 나타내는 쿼드-트리 데이터 구조(quad-tree data structure)를 도시하였으며 , 쿼드 트리의 각 리프 노드(leaf node)는 32x32로부터 8x8 범위의 각 크기의 하나의 CU에 해당된다. 도 4B에 도시된 CTU와 유사하게, 각 CU는 동일한 크기의 프레임의 루마 샘플들의 코딩 블록(CB) 및 크로마 샘플들의 2 개의 대응하는 코딩 블록들, 및 코딩 블록들의 샘플들을 코딩하기 위하여 사용되는 신택스 요소들을 포함할 수있다. 모노 픽처 또는 3 개의 개별 컬러 평면을 구비한 픽처에서, CU는 단일 코딩 블록 및 코딩 블록의 샘플을 코딩하기 위하여 사용되는 신택스 구조들을 포함할 수 있다.
일부 구현 방식들에서, 비디오 인코더(20)는 CU의 코딩 블록을 하나 또는 그 이상의 MxN 예측 블록(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의 예측 루마 블록들 중 하나 내의 루마 샘플과 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 변환 블록들로 분해(decompose)할 수 있다. 변환 블록은 동일한 변환이 적용되는 직사각형(정사각형 또는 비-정사각형) 샘플 블록이다. CU의 변환 단위(TU)는 루마 샘플들의 변환 블록, 크로마 샘플들의 두 개의 대응하는 변환 블록들, 및 변환 블록 샘플들을 변환하기 위하여 사용되는 신택스 요소들을 포함할 수 있다. 따라서, 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)는 양자화된 변환 계수들을 나타내는 신택스 요소들에 대하여 CABAC(Context-Adaptive Binary Arithmetic Coding)를 수행할 수 있다. 마지막으로, 비디오 인코더(20)는 저장 장치(32)에 저장되거나 목적지 장치(14)로 전송되는 코딩된 프레임들 및 연관된 데이터의 표현을 형성하는 비트 시퀀스를 포함하는 비트스트림을 출력할 수 있다.
비디오 인코더(20)에 의해 생성된 비트스트림을 수신한 다음, 비디오 디코더(30)는 비트스트림을 파싱하여 비트스트림으로부터 신택스 요소들을 획득할 수 있다. 비디오 디코더(30)는 비트스트림으로부터 획득된 신택스 요소들에 적어도 부분적으로 기초하여 비디오 데이터의 프레임들을 재구성할 수 있다. 일반적으로, 비디오 데이터를 재구성하는 프로세스는 비디오 인코더(20)에 의해 수행되는 인코딩 프로세스와 서로 반대된다. 예를 들어, 비디오 디코더(30)는 현재 CU의 TU들과 연관된 계수 블록들에 대하여 역변환을 수행하여 현재CU의 TU들과 연관된 잔여 블록들을 재구성할 수 있다. 또한, 비디오 디코더(30)는 현재 CU의 PU들에 대한 예측 블록들의 샘플들을 현재 CU의 TU들의 변환 블록들의 대응하는 샘플들과 가산하는 것을 통하여 현재 CU의 코딩 블록들을 재구성한다. 프레임의 각 CU의 코딩 블록들을 재구성 한 다음, 비디오 디코더(30)는 프레임을 재구성할 수있다.
위에서 설명한 바와 같이, 비디오 코딩은 주로 두 가지 모드, 즉 인트라-프레임 예측(또는 인트라-예측) 및 인터-프레임 예측(또는 인터-예측)을 사용하여 비디오 압축을 달성한다. IBC는 인트라-프레임 예측 또는 제3 모드로 간주될 수 있음에 유의하여야 한다. 두가지 모드 중, 인터-프레임 예측은 인트라-프레임 예측보다 코딩 효율성에 더욱 많이 기여하는바, 그 원인은 인터-프레임 예측에서 기준 비디오 블록으로부터 현재 비디오 블록을 예측하기 위한 움직임 벡터들을 사용하기 때문이다.
그러나 비디오 데이터 캡처 기술이 지속적으로 향상되고 비디오 데이터의 세부 사항을 보존하기 위하여 비디오 블록 크기가 보다 정세화 되기 때문에, 현재 프레임에 대한 움직임 벡터를 표현하는데 필요한 데이터의 양도 대폭 크게 증가한다. 이러한 문제를 극복하는 한 가지 방법은 공간 및 시간 도메인 모두에서 인접한 CU들의 그룹이 예측 목적을 위한 유사한 비디오 데이터를 가질뿐 만 아니라, 이러한 인접한 CU들 사이의 움직임 벡터들도 유사하다는 사실을 활용하는 것이다. 따라서, 공간적 및 시간적 상관 관계를 탐색하는 것을 통하여 공간적으로 인접한 CU들 및/또는 시간적으로 배치된 CU들의 움직임 정보를 현재 CU의 움직임 정보(예를 들어, 움직임 벡터)의 근사치로 사용하는 것이며, 이는 현재 CU의 "움직임 벡터 예측자(MVP)"로 불리기도 한다.
도2와 관련하여 전술 한 바와 같이 움직임 추정부(42)에 의해 결정된 현재 CU의 실제 움직임 벡터를 비디오 비트스트림으로 인코딩하는 것을 대신하여, 현재 CU의 실제 움직임 벡터로부터 현재 CU의 움직임 벡터 예측자를 감산하여 현재 CU에 대한 움직임 벡터 차이(MVD)를 생성한다. 이러한 방식을 통하여, 프레임의 각 CU에 대하여 움직임 추정부(42)가 결정한 움직임 벡터를 비디오 비트스트림으로 인코딩할 필요가 없으며, 비디오 비트스트림에서 움직임 정보를 표현하기 위하여 사용되는 데이터의 양을 크게 줄일 수 있다.
코드 블록의 인터-프레임 예측을 수행하는 동안 기준 프레임 내의 예측 블록을 선택하는 프로세스와 마찬가지로, 비디오 인코더(20) 및 비디오 디코더(30) 모두는 일 규칙을 채택하여 현재 CU의 공간적으로 인접한 CU들 및/또는 시간적으로 배치된 CU들과 연관된 잠재적 후보 움직임 벡터들을 사용하여 현재 CU의 움직임 벡터 후보 리스트("병합 리스트(merge list)"이라고도 함)를 구성한 후, 움직임 벡터 후보 리스트로부터 움직임 벡터 예측자로서 하나의 멤버를 선택할 필요가 있다. 이러한 방식을 통하여, 비디오 인코더(20)와 비디오 디코더(30) 사이에서 움직임 벡터 후보 리스트 자체를 전송할 필요가 없으며, 움직임 벡터 후보 리스트 내에서 선택된 움직임 벡터 예측자의 인덱스는 비디오 인코더(20) 및 비디오 디코더(30)로 하여금 움직임 벡터 후보 리스트 내에서의 동일한 움직임 벡터 예측자를 사용하여 현재 CU에 대해 인코딩 및 디코딩하기에는 충분하다.
일부 구현 방식들에서, 각각의 인터-예측 CU는 움직임 벡터 후보 리스트를 구성하기 위한 3 개의 움직임 벡터 예측 모드를 구비하는바,인터 모드( "고급 움직임 벡터 예측(advanced motion vector predicteion: AMVP)"라고도 함), 스킵(skip) 모드 및 병합 모드를 포함한다. 각 모드에서, 하나 또는 그 이상의 움직임 벡터 후보가 아래에 설명될 알고리즘에 따라 움직임 벡터 후보 리스트에 추가될 수 있다. 궁극적으로, 후보 리스트에 있는 이들 움직임 벡터 후보 중 하나는 비디오 인코더(20)에 의해 비디오 비트스트림으로 인코딩되거나 비디오 디코더(30)에 의해 비디오 비트스트림으로부터 디코딩될 인터-예측 CU의 최적의 움직임 벡터 예측자로 사용된다. 후보 리스트로부터 최적의 움직임 벡터 예측자를 찾기 위하여, 움직임 벡터 경쟁(MVC) 방식을 도입하여 공간적 및 시간적 움직임 벡터 후보들을 포함하는 움직임 벡터의 주어진 후보 세트(즉, 움직임 벡터 후보 리스트)부터 움직임 벡터를 선택한다.
공간적으로 인접하거나 시간적으로 배치된 CU들로부터 움직임 벡터 예측자 후보들을 도출하는 것 외에, 움직임 벡터 예측자 후보들은 또한 소위 "이력-기반 움직임 벡터 예측(history-based motion vector prediction: HMVP)" 테이블로부터 유도될 수 있다. HMVP 테이블은 소정 수량의 움직임 벡터 예측자들를 포함하며, 이러한 움직임 벡터 예측자 각각은 동일한 행의 CTU들(또는, 때로는 동일한 CTU)의 특정 CU를 인코딩/디코딩하기 위하여 사용되었다. 이러한 CU들의 공간적/시간적 근접성으로 인해, HMVP 테이블의 움직임 벡터 예측자들 중 하나가 동일한 행의 CTU들 내에서 다른 CU를 인코딩/디코딩하기 위해 재사용될 가능성이 높다. 따라서, 움직임 벡터 후보 리스트를 구성하는 과정에 HMVP 테이블을 포함시켜 더 높은 코드 효율성을 달성할 수 있다.
일부 구현 방식들에서, HMVP 테이블은 고정된 길이(예를 들어, 5)를 가지며, 준 선입 선출(quasi-FIFO) 방식으로 관리된다. 예를 들어, CU의 인터-코딩된 블록 하나를 디코딩할 경우, CU에 대해 움직임 벡터를 재구성한다. HMVP 테이블은 재구성된 움직임 벡터을 이용하여 즉시로 업데이트되는데, 이는 이러한 재구성된 움직임 벡터는 후속 CU의 움직임 벡터 예측자가 될 수 있기 때문이다. HMVP 테이블을 업데이트할 경우, 아래와 같은 두 가지 시나리오가 있다.(i) 재구성된 움직임 벡터가 HMVP 테이블의 다른 기존 움직임 벡터와 다르거나,(ii) 재구성된 움직임 벡터가 HMVP 테이블의 기존 움직임 벡터 중 하나와 동일하다. 첫 번째 시나리오의 경우, 재구성된 움직임 벡터는 HMVP 테이블이 풀(full) 상태가 아닌 경우 새로운 멤버로서 HMVP 테이블에 추가된다. HMVP 테이블이 이미 풀 상태인 경우, 재구성된 움직임 벡터가 최신 움직임 벡터로 추가되기 전에, HMVP 테이블 내의 가장 오래된 움직임 벡터를 HMVP 테이블로부터 먼저 제거하여야 한다. 다시 말하면, 이 경우 HMVP 테이블은 FIFO 버퍼와 유사하여, FIFO 버퍼의 헤드에 위치하며 이전에 인터-코딩된 다른 블록과 연관된 움직임 정보로 하여금 버퍼 밖으로 이동되게 하어 재구성된 움직임 벡터가 FIFO 버퍼의 테일 부분에 HMVP 테이블의 최신 멤버로서 추가된다. 두번째 시나리오의 경우, 재구성된 움직임 벡터가 HMVP 테이블에 최신 움직임 벡터로서 추가되기 전에, HMVP 테이블 중 재구성된 움직임 벡터와 실질적으로 동일한 기존 움직임 벡터가 HMVP 테이블로부터 제거된다. HMVP 테이블도 FIFO 버퍼 형태로 유지되는 경우, HMVP 테이블에서 동일한 움직임 벡터 이후의 움직임 벡터 예측자는앞으로 한 요소 이동하여 제거된 움직임 벡터가 남긴 공간을 차지하고, 다음 재구성된 움직임 벡터는 HMVP 테이블의 최신 멤버로 FIFO 버퍼의 테일에 추가된다.
HMVP 테이블 내의 움직임 벡터는 AMVP, 병합, 스킵 등과 같은 서로 다른 예측 모드에서 움직임 벡터 후보 리스트들에 추가될 수 있다. HMVP 테이블에 저장된 현재 블록에 인접하지 않는 이전의 인터-코딩된 블록들의 움직임 정보이더라도 보다 효율적인 움직임 벡터 예측에 활용 될 수 있음을 발견하였다.
현재 CU에 대한 움직임 벡터들의 주어진 후보 세트 내에서 하나의 MVP 후보가 선택된 다음, 비디오 인코더(20)는 대응하는 MVP 후보에 대한 하나 또는 그 이상의 신택스 요소들을 생성하여 비디오 비트스트림으로 인코딩하여, 비디오 디코더(30)는 신택스 요소들을 사용하여 비디오 비트스트림으로부터 MVP 후보를 검색할 수 있다. 움직임 벡터 후보 세트를 구성하기 위하여 사용되는 특정 모드에 따라, 상이한 모드들(예를 들어: AMVP, 병합, 스킵기 등)은 상이한 신택스 요소들의 세트를 구비한다. AMVP 모드의 경우, 신택스 요소들은 인터 예측 지시자(List 0, List 1 또는 양방향 예측), 기준 인덱스, 움직임 벡터 후보 인덱스, 움직임 벡터 예측 잔여 신호 등을 포함한다. 스킵 모드 및 병합 모드의 경우, 병합 인덱스만 비트스트림으로 인코딩되는바, 이는 현재 CU는 코딩된 병합 인덱스가 참조하는 인접 CU부터로부터 인터 예측 지시자, 기준 인덱스 및 움직임 벡터를 포함하는 다른 신택스 요소들을 물려받을 수 있기 때문이다. 스킵 코딩된 CU의 경우, 움직임 벡터 예측 잔여 신호도 생략된다.
도 5A는 본 개시의 일부 구현 방식들에 따라 인코딩/디코딩될 현재 CU의 공간적으로 이웃하고 시간적으로 배치된 블록 위치를 예시하는 블록도이다. 주어진 모드에 있어서, 먼저 공간적으로 좌측 및 상측 인접 블록 위치와 연관된 움직임 벡터들의 가용성을 확인하고, 시간적으로 배치된 블록 위치와 연관된 움직임 벡터들의 가용성을 확인하고, 다음 HMVP 테이블의 움직임 벡터들을 확인함으로써, 움직임 벡터 예측(MVP) 후보 리스트를 구성한다. MVP 후보 리스트을 구성하는 동안, 일부 중복된 MVP 후보들은 후보 리스트로부터 제거되고, 필요한 경우 0 값 움직임 벡터가 추가되어 후보 리스트는 고정된 길이(유의할 바는, 모드마다 상이한 고정된 길이를 구비할 수 있다)를 구비할 수 있다. MVP 후보 리스트을 구성한 다음, 비디오 인코더(20)는 후보 리스트로부터 최적의 움직임 벡터 예측자를 선택하고 선택된 후보를 가리키는 해당 인덱스를 비디오 비트스트림으로 인코딩할 수 있다.
도 5A를 예로 사용하며 후보 리스트는 2의 고정 길이를 구비한다고 가정하면, 현재 CU에 대한 움직임 벡터 예측자(MVP) 후보 리스트는 AMVP 모드에서 다음 단계를 순차적으로 수행하여 구성할 수 있다.
1) 공간적으로 인접한 CU들로부터 MVP 후보들을 선택한다.
a) A0으로 시작하고 A1로 끝나는 두 개의 좌측 공간적으로 인접한 CU들 중 하나로부터 많아서 하나의 넌-스케일(non-scaled) MVP 후보를 도출한다.
b) 이전 단계에서 좌측에 사용가능한 넌-스케일 MVP 후보가 존재하지 않을 경우, A0으로 시작하고 A1로 끝나는 두 개의 좌측 공간적으로 인접한 CU들 중 하나로부터 많아서 하나의 스케일 MVP 후보를 도출한다.
c) B0으로부터 시작하고, B1를 거쳐 B2로 끝나는 3 개의 상측 공간적으로 인접한 CU들 중 하나로부터 많아서 하나의 넌-스케일 MVP 후보를 도출한다.
d) A0 및 A1 모두 사용할 수 없거나 이들이 인트라 모드로 코딩된 경우, B0으로부터 시작하고, B1를 거쳐 B2로 끝나는 3 개의 상측 공간적으로 인접한 CU들 중 하나로부터 많아서 하나의 스케일 MVP 후보를 도출한다.
2) 이전 단계들에서 두 개의 MVP 후보가 발견되고 동일할 경우, MVP 후보 리스트로부터 두 후보 중 하나를 제거한다.
3) 시간적으로 배치된 CU들로부터 MVP 후보를 선택한다.
a) 이전 단계 이후의 MVP 후보 리스트에 두 개의 MVP 후보가 포함되지 않을 경우, 시간적으로 배치된 CU들(예를 들어: T0) 로부터 많아서 하나의 MVP 후보를 도출한다.
4) HMVP 테이블로부터 MVP 후보를 선택한다
a) 이전 단계 이후의 MVP 후보 리스트에 두 개의 MVP 후보가 포함되지 않을 경우, HMVP 테이블로부터 많아서 두 개의 이력-기반(history-based) MVP를 도출한다.
5) 이전 단계 이후의 MVP 후보 리스트에 두 개의 MVP 후보가 포함되지 않을 경우, MVP 후보 리스트에 많아서 2 개의 0 값 MVP를 추가한다.
상기와 같이 구성된 AMVP-모드 MVP 후보 리스트에는 두개의 후보만 포함되었므로, 바이너리 플래그(binary flag)와 같은 관련 신택스 요소는 비트스트림으로 인코딩되어 후보 리스트 내의 두 MVP 후보 중 어느 것이 현재 CU의 디코딩에 사용되는지를 나타낸다.
일부 구현 방식들에서, 스킵 또는 병합 모드에서의 현재 CU에 대한 MVP 후보 리스트는 상기와 같은 단계의 순서로 한 세트의 유사한 단계를 수행하여 구성될 수 있다. 유의할 바는, 스킵 또는 병합 모드를 위한 MVP 후보 리스트에는 "페어-와이즈(pair-wise) 병합 후보"라고 칭하는 특별한 종류의 병합 후보도 포함되어 있다. 페어-와이즈 병합 후보는 이전에 도출한 두 개의 병합 모드 움직임 벡터 후보들의 MV를 평균화하여 생성된다. 병합 MVP 후보 리스트의 크기(예하면, 1에서 6까지)는 현재 CU의 슬라이스 헤더(slice header)로 시그널링된다. 병합 모드의 각 CU에 대하여, 최적 병합 후보들의 인덱스는 절단 단항 이진화(truncated unary binarization)(TU)를 사용하여 인코딩된다. 병합 인덱스의 첫 번째 빈(bin)은 컨텍스트로 코딩되고, 다른 빈에 대하여서는 바이 패스 코딩을 사용한다.
상기 설명한 바와 같이, 이력-기반 MVP들은 공간적 MVP 및 시간적 MVP 다음에 AMVP-모드 MVP 후보 리스트 또는 병합-MVP 후보 리스트에 추가될 수 있다. 이전에 인터-코딩된 CU의 움직임 정보는 HMVP 테이블에 저장되어 현재 CU의 MVP 후보로 사용된다. HMVP 테이블은 인코딩/디코딩 프로세스 동안 유지될 수 있다. 넌-서브-블록 인터-코딩된 CU가 존재할 때마다, HMVP 테이블의 첫번째 엔트리(entry)에 저장된 움직임 벡터 정보는 제거되는 동시에 관련 움직임 벡터 정보는 HMVP 테이블의 마지막 엔트리에 새 후보로서 추가된다(HMVP 테이블이 이미 풀(full) 상태이고 테이블에 연관된 움직임 벡터 정보의 동일한 중복 항목이 없는 경우). 선택적으로, 연관된 움직임 벡터 정보가 HMVP 테이블의 마지막 엔트리에 추가되기 전에, 연관된 움직임 벡터 정보의 동일한 중복 항목이 테이블로부터 제거된다.
상기 설명한 바와 같이, 인트라 블록 복제(intra block copy: IBC)는 스크린 콘텐츠 소재들의 코딩 효율을 현저하게 향상시킬 수 있다. IBC 모드는 블록-레벨 코딩 모드로 구현되기 때문에, 각 CU에 대한 최적의 블록 벡터를 찾기 위해 비디오 인코더(20)에서 블록 매칭(block matching: BM)이 수행된다. 여기서, 블록 벡터를 사용하여 현재 블록으로부터 현재 픽쳐 내에서 이미 재구성된 기준 블록까지의 변위를 나타낸다. IBC모드는 인트라 또는 인터 예측 모드와 다른 제 3 예측 모드로 취급된다.
CU 레벨에서, IBC 모드는 다음과 같이 IBC AMVP 모드 또는 IBC 스킵/병합 모드로서 시그널링될 수있다:
- IBC AMVP 모드: CU의 실제 블록 벡터와 CU의 블록 벡터 후보로부터 선택한 CU의 블록 벡터 예측자 사이의 블록 벡터 차이(BVD)는 상기와 같이 설명한 AMVP 모드에서 움직임 벡터 차이를 인코딩하는 것과 동일한 방식으로 인코딩된다. 블록 벡터 예측 방법은 두 개의 블록 벡터 후보들을 예측자로 사용하며,(IBC 코딩된 경우) 하나는 좌측 인접 블록으로부터, 다른 하나는 상측 인접 블록으로부터 얻을수 있다. 두 인접 블록 모두 사용할 수 없을 경우, 기본 블록 벡터(default block vector)가 블록 벡터 예측자로 사용된다. 바이너리 플래그(binary flag)는 시그널링되어 블록 벡터 예측자 인덱스를 가리킨다. IBC AMVP 후보 리스트는 공간 및 HMVP 후보로 구성된다.
- IBC 스킵/병합 모드: 병합 후보 인덱스를 사용하여, 병합 후보 리스트("병합 리스트"라고도 함)에 있는 블록 벡터 후보들 중 어느 것이 인접한 IBC 코딩된 블록으로부터 현재 블록에 대한 블록 벡터를 예측하기 위하여 사용되는지를 나타낸다. IBC 병합 후보 항목 리스트는 공간 후보, HMVP 부호 및 페어-와이즈 후보로 구성됩니다.
최첨단 코딩 표준에 의해 채택된 코딩 효율을 개선하는 다른 방법은, 예를 들어 멀티 코어 프로세서를 사용하여 병렬 처리(parallel processing)를 비디오 인코딩/디코딩 프로세스에 도입하는 것이다. 예를 들어, 파면 병렬 프로세싱(wavefront parallel processing: WPP)은 복수개의 스레드(thread)들을 사용하여 병렬로 여러 행의 CTU들을 인코딩 또는 디코딩하는 특징으로 HEVC에 이미 도입되었다.
도 5B는 본 개시의 일부 구현 방식들에 따른 파면 병렬 프로세싱(wavefront parallel processing: WPP)을 사용하여 픽처의 복수의 행들의CTU들을 멀티-스레드(multi-threaded) 인코딩하는 것을 예시하는 블록도이다. WPP가 활성화되면 WPP방식으로 복수의 행들의 CTU들을 처리할 수 있는데, 두 개의 인접한 파면의 시작부분 사이에는 두 CTU들의 지연이 있을 수 있다. 예를 들어, WPP를 사용하여 픽쳐(500)를 코딩하기 위해, 비디오 인코더(20) 및 비디오 디코더(30)와 같은 비디오 코더는 픽쳐(500)의 코딩 트리 단위(CTU)들을 복수의 파면(wavefront)으로 분할할 수 있으며, 각각의 파면은 픽처 내의 대응하는 각 행의 CTU들과 대응한다. 비디오 코더는 예를 들어 제 1 코더 코어 또는 스레드를 사용하여 상측 파면(wavefront)부터 코딩을 시작할 수 있다. 비디오 코더가 상측 파면의 2 개 또는 그 이상의 CTU들을 코딩한 다음, 비디오 코더는 예를 들어 제2 병렬 코더 코어 또는 스레드를 사용하여 상측 파면을 코딩하는 것과 병렬로 두번째 상측 파면을 코딩하기 시작할 수 있다. 비디오 코더가 두번째 상측 파면의 두 개 또는 그 이상의 CTU들을 코딩 한 다음, 비디오 코더는 예를 들어, 제3 병렬 코더 코어 또는 스레드를 사용하여 높은 파면의 코딩과 병렬로 세번째 상측 파면의 코딩을 시작할 수 있다. 이라한 패턴으로 픽쳐(500) 내의 파면들을 아래로 계속 처리할 수 있다. 본 개시에서, 비디오 코더가 WPP를 사용하여 동시에 코딩하는 CTU들의 세트를 "CTU 그룹"이라고 한다. 따라서 비디오 코더가 WPP를 사용하여 픽쳐를 코딩할 경우, CTU 그룹의 각 CTU는 픽쳐의 고유한 파면에 속할 수 있으며, CTU는 그 상부의 파면으로부터 픽처의 적어도 2 개의 렬의 CTU들 만큼 오프셋 될 수 있다.
비디오 코더는 상부 파면의 그 전 두개의 블록들의 데이터 및 현재 파면의 첫번째 코드 블록을 포함하는 슬라이스의 슬라이스 헤더의 하나 또는 그 이상의 요소에 기초하여 현재 파면에 대한 컨텍스트를 초기화하여 현재 파면의 컨텍스트 적응형 이진 산술 코딩(context adaptive binary arithmetic coding: CABAC)을 수행할 수 있다. 비디오 코더는 후속 CTU 행 상부의 CTU 행의 두개의 CTU들을 코딩한 다음, 컨텍스트 상태(context state)를 사용하여 후속 파면(또는, CTU 행)의 CABAC 초기화를 수행할 수 있다. 즉, 현재 파면이 픽쳐의 제일 상부의 CTU들이 아니라고 가정할 경우, 현재 파면의 코딩을 시작하기 전에, 비디오 코더(또는, 보다 구체적으로 비디오 코더의 스레드)는 현재 파면 상부의 파면의 적어도 두 개의 블록들을 코딩할 수 있다. 다음, 비디오 코더는 현재 파면 상부의 파면의 적어도 두 개의 블록들을 코딩한 다음 현재 파면에 대한 CABAC 컨텍스트를 초기화할 수 있다. 이 예에서, 픽쳐(500)의 각 CTU 행은 분리된 파티션이고 연관된 스레드(WPP Thread 1, WPP Theread 2,?)를 구비하여, 픽쳐(500)의 복수의 CTU 행들은 병렬로 인코딩될 수 있도록 한다.
HMVP 테이블의 현재 구현 방식은 글로벌 움직임 벡터(MV) 버퍼를 사용하여 이전에 재구성된 움직임 벡터를 저장하기 때문에, 이러한 HMVP 테이블은 도5B를 참조하여 상기와 같이 설명한 WPP-인에이블 병렬 인코딩 방식 상에서 구현할 수 없다. 구체적으로, 글로벌 MV 버퍼가 비디오 코더의 인코딩/디코딩 프로세스의 모든 스레드들에 의해 공유되므로 첫 번째 WPP 스레드(즉, WPP Tread 1) 이후의 WPP 스레드가 시작되는 것을 방지할 수 있는바, 이는 이러한 WPP 스레드들이 첫 번째 WPP 스레드(즉, 첫 번째 CTU 행)의 마지막 CTU(즉, 제일 오른쪽 CTU)으로부터 HMVP 테이블의 업데이트가 완료되기를 기다려야 하기 때문이다.
이러한 문제를 극복하기 위하여, CTU 행의 각 파면은 WPP가 비디오 코더에서 인에이블(enable)된 경우 해당 WPP 스레드에 의해 처리되는 CTU 행과 대응되는 HMVP 테이블을 저장하기 위한 자체 버퍼를 구비하도록WPP 스레드들이 공유하는 글로벌 MV 버퍼를 복수의 CTU 행-전용 버퍼로 대체하는 방식을 제안하였다. 유의할 바는, 자체 HMVP 테이블을 구비하는 각 CTU 행은 CTU 행의 첫 번째 CU를 코딩하기 전에 HMVP 테이블을 리셋하는 것과 동일하다. HMVP 테이블 리셋은 HMVP 테이블 중에서 다른 CTU 행의 코딩으로 인한 모든 움직임 벡터를 제거하는 것이다. 일 구현 방식에서, 리셋 동작은 HMVP 테이블에서 이용 가능한 움직임 벡터 예측자의 크기를 0으로 설정하는 것이다. 또 다른 구현 방식에서, 리셋 동작은 HMVP 테이블에 있는 모든 엔트리들의 기준 인덱스를 -1과 같은 유효하지 않은 값으로 설정하는 것일 수 있다. 이를 통하여, AMVP, 병합 및 스킵과 같은 세 가지 모드 중 어느 모드를 사용하는 것과 관련 없이, 특정 파면 내에서 현재 CTU에 대한 MVP 후보 리스트의 구성은 당해 특정 파면을 처리하는 WPP 스레드와 연관된 HMVP 테이블에 따라 상이하다. 위에서 설명한 2개 CTU 지연 외에, 다른 파면 사이에는 상호 의존성이 없으며, 다른 파면과 연관된 움직임 벡터 후보 리스트들을 구성하는 것은 도 5B에 도시된 WPP 프로세스와 같이 병렬로 진행될 수 있다. 즉, 특정 파면 처리를 시작할 때, HMVP 테이블이 엠프티(empty)로 리셋(reset)되어 다른 WPP 스레드에 의한 CTU 다른 파면의 코딩에 영향을 주지 않을 수 있다. 일부 경우들에서, 각 개별 CTU를 코딩하기 전에 HMVP 테이블은 엠프티(empty)로 리셋(reset)될 수 있다. 이 경우, HMVP 테이블의 움직임 벡터는 특정 CTU로 제한되며 HMVP 테이블 내의 움직임 벡터가 특정 CTU 내의 현재 CU의 움직임 벡터로 선택될 가능성이 더 높을 수 있다.
도 6A 및 6B는 본 개시의 일부 구현 방식들에 따른 예시적인 재구성된 루마 블록(602) 및 예시적인 연관된 크로마 블록(620)을 각각 예시하는 블록도이다. 이 예에서, 재구성된 루마 블록(602)(예를 들어, 루마 샘플(604)), 상측 인접 루마 그룹(606)(예를 들어, 루마 샘플(608)) 및 좌측 인접 루마 그룹(610)(예를 들어, 루마 샘플(613))의 루마 샘플들은 비디오 코딩 처리되는 동안 이미 예측되었다. 크로마 블록(620)의 크로마 샘플들이 예측되는 반면, 상측 인접 크로마 그룹(624)(예를 들어, 크로마 샘플(626)) 및 좌측 인접 크로마 그룹(628)(예를 들어, 크로마 샘플(630))의 크로마 샘플들은 비디오 코딩 처리되는 동안 예측되었다. 일부 실시예들에서, 크로마 블록(620)의 크로마 샘플들은 재구성된 루마 블록(602)의 대응되는 다운-샘플링된 루마 샘플들에 크로스-검포넌트 선형 모델(cross component linear model: CCLM)을 적용하여 예측될 수 있다. CCLM의 도출 및 적용은 도7A-7E을 참조하여 제공된다.
일부 실시예들에서, 재구성된 루마 블록(602) 및 크로마 블록(620)은 각각 재구성된 비디오 프레임의 일부분의 상이한 성분을 나타낸다. 예를 들어, YCbCr 색 공간에서 이미지는 루마 성분(Y), 청색-차이 크로마 성분(Cb) 및 적색-차이 크로마 성분(Cr)으로 표현된다. 재구성된 루마 블록(602)은 비디오 프레임의 일부분의 루마 성분(즉, 밝기)을 나타내고, 크로마 블록(620)은 비디오 프레임의 동일한 부분의 크로마 성분(즉, 색상)을 나타낸다. 재구성된 루마 블록(602)의 루마 샘플(예를 들어, 루마 샘플(604))은 비디오 프레임의 특정 픽셀에서의 밝기를 나타내는 루마 값을 가지며, 크로마 샘플(예를 들어, 크로마 샘플(622))은 비디오 프레임의 특정 픽셀에서의 색상을 나타내는 크로마 값을 가질 수 있다.
일부 실시예들에서, 재구성된 루마 블록(602)은 블록 폭에 걸쳐 2M 루마 샘플들 및 블록 높이에 걸쳐 2N 루마 샘플들을 갖는 2M x 2N 블록이다. M 및 N은 동일한 값(예를 들어, 재구성된 루마 블록(602)은 정사각형 블록) 또는 다른 값(예를 들어, 재구성된 루마 블록(602)은 비-정사각형 블록)일 수 있다.
사람의 시각 시스템은 밝기 차이보다 색상 차이에 덜 민감하기 때문에 크로마 서브 샘플링은 일반적인 압축 기술이다. 그 결과, 재구성된 루마 블록(602) 및 크로마 블록(620)은 비디오 프레임의 동일한 부분을 나타낼 수 있지만 상이한 해상도로 인코딩된다. 예를 들어, 비디오 프레임은 루마 정보보다 더 작은 해상도로 크로마 정보를 인코딩하기 위해 크로마 서브 샘플링 방식(예하면, 4 : 2 : 0 또는 4 : 2 : 2)을 사용하여 인코딩될 수 있다. 도 6A 및 6B에 도시된 바와 같이, 재구성된 루마 블록(602)은 2M x 2N의 해상도로 인코딩되는 반면, 크로마 블록(620)은 M x N의 더 작은 해상도로 인코딩된다. 실제로, 크로마 블록(620)은 2M x 2N(예를 들어, 4 : 4 : 4 풀 샘플링), 2M x N(예를 들어, 4 : 4 : 0 서브-샘플링), M x 2N(예를 들어, 4 : 2 : 2 서브-샘플링) 및 ½ M x 2N(예를 들어, 4 : 1 : 1 서브-샘플링)와 같은 기타 해상도를 구비할 수 있다.
재구성된 루마 블록(602)은 상측 인접 루마 그룹(606) 및 좌측 인접 루마 그룹(610)과 인접한다. 상측 인접 루마 그룹 및 좌측 인접 루마 그룹의 크기는 명시적으로 시그널링되거나 재구성된 루마 블록(602)의 크기에 의존할 수 있다. 예를 들어, 상측 인접 루마 그룹(606)은 2M개 샘플(예를 들어, 재구성된 루마 블록(602)의 폭과 동일) 또는 4M개 샘플(예를 들어, 재구성된 루마 블록(602)의 폭의 두 배)의 폭, 및 2 개 샘플의 높이를 가질 수 있다. 좌측 인접 루마 그룹(610)은 2N개 또는 4N개 샘플의 높이와 함께 2 개 샘플의 폭을 가질 수있다. 일부 실시예들에서, 상측 인접 루마 그룹(606) 및 좌측 인접 루마 그룹(610) 각각은 동일한 비디오 프레임의 이미 재구성된다른 루마 블록 또는 복수의 루마 블록의 일부분 일수 있다.
크로마 블록(620)은 상측 인접 크로마 그룹(624) 및 좌측 인접 그룹(628)과 인접한다. 상측 인접 크로마 그룹(624) 및 좌측 인접 그룹(628)의 크기는 명시적으로 시그널링되거나 크로마 블록(620)의 크기에 의존할 수 있다. 예를 들어, 상측 인접 크로마 그룹(624)은 1 x M의 크기를 가질 수 있고, 좌측 인접 크로마 그룹(628)은 N x 1의 크기를 가질 수있다.
일부 실시예들에서, 크로마 값들(예를 들어, 크로마 블록(620)에 대한 크로마 값들)은 재구성된 루마 샘플들(예를 들어, 루마 샘플(604))의 루마 값들에 기초하여 예측될 수 있다. 예를 들어, 비디오 프레임의 루마 값들 및 대응되는 크로마 값들 사이에 선형 또는 준-선형 관계가 존재한다고 가정할 경우, 비디오 코덱은 CCLM을 사용하여 대응되는 재구성된 루마 값들을 기반으로 크로마 값들을 예측할 수 있다. 이를 통하여, 비디오 코덱은 크로마 값들을 인코딩하고, 인코딩된 크로마 값들을 전송하고, 인코딩된 크로마 값들을 디코딩하기 위하여 수요되는 시간과 대역폭을 상당히 절약할 수 있다. CCLM을 사용하여 루마 샘플들로부터 크로마 샘플들을 예측하기 위하여, 비디오 코덱은(1) 크로마 샘플들과 루마 샘플들 사이의 선형 모델을 도출하고(2) 선형 모델을 예측될 크로마 샘플들과 대응되는 재구성된 루마 샘플들에 적용하여, 예측을 진행할 수 있다.
일부 실시예들에서, 루마 블록들 및 크로마 블록들이 상이한 해상도(예를 들어, 크로마 블록이 서브-샘플링됨)를 구비하기 때문에, 비디오 코덱은 먼저 루마 샘플들에 대해 다운-샘플링을 수행하여 각각의 크로마 샘플에 고유하게 대응되는 다운-샘플링된 루마 샘플들(예를 들어 , 다운 샘플링된 루마 샘플들(605, 609 및 612))을 생성할 수 있다. 일부 실시예들에서, 비디오 프레임의 높이 및 폭 방향 모두에서 6 개의 인접 재구성된 루마 샘플들을 사용하여 다운-샘플링된 루마 샘플들을 생성할 수 있다(예를 들어, 6-탭 다운-샘플링(six-tap down-sampling) 등을 포함하는 당업계에 공지된 가중 평균 방식). 예를 들어, 상측 인접 루마 그룹 내의 영역(611) 내의 6 개의 재구성된 루마 샘플들(도면에서 각각 작은 틀로 표시됨)을 사용하여 이들과 대응되는 루마 값들을 평균화하는 것을 통하여 다운-샘플링된 루마 샘플(609)을 생성하고, 재구성된 루마 블록(602) 내의 영역(607) 내의 6 개의 재구성된 루마 샘플들(도면에서 각각 작은 틀로 표시됨)을 사용하여 다운-샘플링된 루마 샘플(605)을 생성할 수 있다. 또는, 다운-샘플링된 루마 샘플은 관심이 있는 영역내의 재구성된 루마 샘플을 식별하여 생성되거나, 다른 형상의 영역내의 다른 수량의 재구성된 루마 샘플들을 사용하여 생성될 수 있다.
일부 실시예들에서, 선형 모델을 도출하기 위하여, 비디오 코덱은 다운 샘플링된 루마 샘플들(예를 들어, 최대 및 최소 루마 값을 갖는 다운 샘플링된 루마 샘플들)의 최대치 및 최소치 및 대응하는 재구성된 크로마 샘플들를 식별하고, 최대 및 최소 데이터 포인트들(예를 들어, 최대 데이터 포인트는 최대 루마 값을 갖는 다운-샘플링된 루마 샘플 및 대응되는 재구성된 크로마 샘플을 포함하고, 최소 데이터 포인트는 최소 루마 값을 갖는 다운-샘플링된 루마 샘플 및 대응하는 재구성된 크로마 샘플을 포함한다)를 통하여 선형 모델을 피팅(예를 들어, Y = αX +
Figure 112021041922599-pct00001
)하는 것을 통하여, Max-Min 방법을 사용합니다. 선형 모델이 도출된 후, 비디오 코덱은 재구성된 루마 블록(602) 내의 다운-샘플링된 루마 샘플들에 선형 모델을 적용하여 크로마 블록(620)의 대응하는 크로마 샘플들을 생성한다. 비디오 코덱은 다음과 같은 방법으로 최대 및 최소 데이터 포인트들을 얻을 수 있다:
1. 일부 실시예들에서, 비디오 코덱은 다운-샘플링된 루마 샘플들의 그룹(예를 들어, 상측 인접 루마 그룹(606) 및 좌측 인접 루마 그룹(610) 중 선택된 한 그룹의 다운-샘플링된 루마 샘플)을 검색하여 최대 다운-샘플링된 루마 샘플 및 최소 다운-샘플링된 루마 샘플을 검색할 수 있다. 다음, 비디오 코덱은 최대 및 최소 다운-샘플링된 루마 샘플들과 대응하는 이전에 재구성된 크로마 샘플들(예를 들어, 상측 인접 크로마 그룹(624) 및 좌측 인접 크로마 그룹(628) 내의 재구성된 크로마 샘플들)을 식별하며, 이 구현 방식에 대한 자세한 내용은 도 7A을 참조하여 아래에서 설명한다.
2. 일부 실시예들에서, 비디오 코덱은 최대 및 최소 재구성된 루마 샘플들을 식별하기 위한 재구성된 루마 샘플들의 선택된 그룹에 대한 다운-샘플링은 수행하지 않고, 재구성된 루마 샘플들의 그룹(예를 들어, 상측 인접 루마 그룹(606) 및 좌측 인접 루마 그룹(610) 중 선택된 그룹의 재구성된 루마 샘플들)을 검색하여 재구성된 루마 샘플들의 선택된 그룹내에서(i) 최대 루마 값을 갖는 재구성된 루마 샘플 및(ii) 최소 루마 값을 갖는 재구성된 루마 샘플을 식별한다한다. 다음, 비디오 코덱은 최대 및 최소 재구성된 루마 샘플들과 연관된 영역에 대한 다운-샘플링(예를 들어, 6개의 샘플들을 구비한 영역에 대한 6-탭 다운-샘플링(six-tap down-sampling) 등을 포함하는 당업계에 공지된 가중-평균 방식)을 수행하여, 다운-샘플링된 루마 샘플을 최대 재구성된 루마 샘플(정확히 최대 다운-샘플링된 루마 샘플 일 수도 있고 아닐 수도 있음)로 생성하고, 다운-샘플링된 루마 샘플을 최소 재구성된 루마 샘플(정확히 최소 다운-샘플링된 루마 샘플 일 수도 있고 아닐 수도 있음)로 생성한다. 다음, 비디오 코덱은 최대 재구성된 루마 샘플로 식별된 다운-샘플링된 루마 샘플과 대응하는(예를 들어, 상측 인접 크로마 그룹(624) 및 좌측 인접 크로마 그룹(628)내의) 재구성된 크로마 샘플 및 최소 재구성된 루마 샘플로 식별된 다운-샘플링된 루마 샘플과 대응하는 재구성된 크로마 샘플을 식별하는바, 이 구현 방식에 대한 자세한 내용은 도 7B을 참조하여 아래에서 설명한다.
3. 일부 실시예들에서, 비디오 코덱은 재구성된 크로마 샘플들(예를 들어, 상측 인접 크로마 그룹(624) 및 좌측 인접 크로마 그룹(628) 에서 선택된 크로마 샘플들)의 그룹을 검색하여, 최대 및 최소 재구성된 크로마 샘플들(예를 들어, 최대 및 최소 크로마 값을 각각 가지는 크로마 샘플들)을 식별할 수 있다. 다음, 비디오 코덱은 최대 및 최소 재구성된 크로마 샘플들과 대응하는 다운-샘플링된 루마 샘플들(예를 들어, 상측 인접 루마 그룹(606) 및 좌측 인접 루마 그룹(610) 내의 다운-샘플링 된 루마 샘플들)을 식별하는바, 이 구현 방식에 대한 자세한 내용은 도7C을 참조하여 아래에서 설명한다.
4. 일부 실시예들에서, 비디오 코덱은 다운-샘플링된 루마 샘플들의 그룹(예를 들어, 상측 인접 루마 그룹(606) 및 좌측 인접 루마 그룹(610) 에서 선택된 한 그룹의 다운-샘플링된 루마 샘플)을 검색하여, 최대 루마 값을 갖는 미리 정의한 수량(예를 들어, 둘)의 다운-샘플링된 루마 샘플들 및 최소 루마 값을 갖는 미리 정한 수량(예를 들어, 둘)의 다운-샘플링된 루마 샘플들을 식별할 수 있다. 다음, 비디오 코덱은 상측 인접 크로마 그룹(624) 및 좌측 인접 크로마 그룹(628) 내의 재구성된 크로마 샘플들을 각각 식별하고, 상측 인접 크로마 그룹(624) 및 좌측 인접 크로마 그룹(628) 각각은 최대 다운-샘플링된 루마 샘플들의 그룹 및 최소 다운-샘플링된 루마 샘플들의 그룹 중 대응되는 하나에 각각 대응한다. 다음, 비디오 코덱은 식별된 재구성된 크로마 샘플들의 그룹 및 다운-샘플링된 루마 샘플들의 그룹 각각의 값들(예를 들어, 크로마 또는 루마 값들)에 대한 가중치-평균화를 수행하여, 최대 평균 크로마 값, 최소 평균 크로마 값, 최대 평균 다운-샘플링된 루마 값(예를 들어, 최대 다운-샘플링된 루마 샘플들의 그룹으로부터), 및 최소 평균 다운-샘플링된 루마 값(예를 들어, 최소 다운-샘플링된 루마 샘플들의 그룹으로부터)을 생성할 수 있으며, 이 구현 방식에 대한 자세한 내용은 도7D 및 7E을 참조하여 아래에서 설명한다.
도 7A 내지 도 7E는 본 개시의 일부 구현 방식들에 따라 CCML을 사용하여 루마 값들과 크로마 값들 사이의 선형 모델을 도출하는 다양한 방법들을 예시한다. 구체적으로, 플롯(plot) 상의 각 원형 데이터 포인트(예를 들어, 포인트(702a))는 수평 축상의 재구성된 크로마 샘플과 수직 축상의 대응되는 재구성된 루마 샘플의 쌍을 가리킨다. 예를 들어, 재구성된 루마 샘플을 부분적으로 사용(예를 들어, 6-탭 다운-샘플링(six-tap down-sampling) 등을 포함하는 당업계에 공지된 가중 평균 방식 등을 사용)하여 생성된 다운-샘플링된 루마 샘플이 재구성된 크로마 샘플과 대응될 경우, 재구성된 크로마 샘플은 재구성된 루마 샘플과 대응된다. 플롯 상의 각 정사각형 데이터 포인트(예를 들어, 포인트(702b))는 수평 축 상의 재구성된 크로마 샘플과 수직 축 상의 대응되는 다운-샘플링된 루마 샘플의 쌍을 가리킨다. 일부 실시예들에서, 복수의 재구성된 루마 샘플들을 사용하여 다운-샘플링된 루마 샘플을 생성하므로(예를 들어, 6-탭 다운-샘플링(six-tap down-sampling) 등을 포함하는 당업계에 공지된 가중 평균 방식을 사용), 정사각형 데이터 포인트는 복수개의 원형 데이터 포인트들과 연관된다. 점선 직사각형(예를 들어, 점선 직사각형(703))은 포함된 정사각형 데이터 포인트와 원형 데이터 포인트가 연관됨을 가리킨다(예를 들어, 정사각형 데이터 포인트와 대응하는 다운-샘플링된 루마 샘플은 원형 데이터 포인트들과 대응되는 재구성된 루마 샘플로부터 생성됨). 설명을 위하여, 하나의 점선 직사각형 내에 하나의 정사각형 데이터 포인트와 하나의 원형 데이터 포인트만 도시되었으나, 실제상, 각 점선 직사각형은 복수의 원형 데이터 포인트들 및 하나의 정사각형 데이터 포인트를 포함할 수 있다.
일부 실시예들에서, 비디오 코덱은 다운-샘플링된 루마 샘플들(예를 들어, 도 6A의 다운-샘플링된 루마 샘플(609) 및(612))을 검색하여 최대 및 최소 루마 값을 갖는 다운-샘플링된 루마 샘플들 및 대응되는 재구성된 크로마 샘플들을 식별하여 선형 모델을 도출할 수 있다. 예를 들어, 도 7A에서, 정사각형 데이터 포인트(702b)는 선택된 다운-샘플링된 루마 샘플들 그룹 중에서 최소 루마 값을 갖는 다운-샘플링된 루마 샘플 및 대응되는 재구성된 크로마 샘플을 가리키고, 정사각형 데이터 포인트(704b)는 최대 루마 값을 갖는 다운-샘플링된 루마 샘플 및 대응되는 재구성된 크로마 샘플을 가리킨다. 결과적으로, 포인트(702b) 및 포인트(704b)를 통하여 피팅(fitting)한 라인은 다운-샘플링된 루마 샘플들(예하면, 도 6A의 루마 블록(602)의 다운-샘플링된 루마 블록(605))로부터 크로마 샘플(예를 들어,도 6B의 크로마 블록(620)의 크로마 샘플(622))을 예측하기 위한 선형 모델을 가리킨다.
다운-샘플링된 루마 샘플들을 생성하는 것은 대부분의 다운-샘플링된 루마 샘플들이 Max-Min 방법에서 매우 적게 사용되기 때문에 계산량이 아주 클 수 있다. 일부 실시예들에서, 모든 루마 샘플들에 대하여 다운-샘플링을 수행하는 대신, 비디오 코덱은 재구성된 루마 샘플들(예를 들어, 도 6A의 재구성된 루마 샘플(608) 및(613))을 직접 검색하여 최대 및 최소 루마 값들을 갖는 재구성된 루마 샘플들을 식별할 수 있다. 도 7B에 도시된 바와 같이, 원형 데이터 포인트(702a)는 최소 루마 값을 갖는 재구성된 루마 샘플 및 대응하는 재구성된 크로마 샘플을 가리키고, 원형 데이터 포인트(706a)는 최대 루마 값을 갖는 재구성된 루마 샘플 및 대응하는 재구성된 크로마 샘플을 가리킨다. 최소 및 최대 재구성된 루마 샘플들(원형 데이터 포인트(702a) 및(706a))을 식별한 다음, 비디오 코덱은 최소 및 최대 재구성된 루마 샘플들을 포함하는 영역에 대하여 다운-샘플링을 수행(예를 들어, 6-탭 다운-샘플링(six-tap down-sampling) 등을 포함하는 당업계에 공지된 가중 평균 방식을 사용)하여 대응하는 준-최소 및 준-최대 다운-샘플링된 루마 샘플들(도 7B에서 정사각형 데이터 포인트(702b) 및(706b)로 표시되되, 이는 도7A의 정사각형 데이터 포인트(702b) 및(704b)와 동일하거나 동일하지 않을 수 있음)을 생성할 수 있다. 도 7B의 정사각형 데이터 포인트들(702b 및 706b)을 통하여 피팅(fitting)한 라인은 재구성된 루마 샘플들로부터 크로마 샘플들을 예측하기 위한 선형 모델을 가리킨다. 도 7A에서 사용한 방법과 비교할 경우, 단지 2번의 다운-샘플링 동작이 수행된다. 식별된 최소 다운-샘플링된 루마 샘플은 도 7A에서 사용된 최소 다운-샘플링된 루마 샘플과 동일한 반면, 최대 다운-샘플링된 루마 샘플은 도 7A에서 사용된 최대 다운-샘플링된 루마 샘플과 다르다.
일부 실시예들에서, 비디오 코덱은 최대 및 최소 루마 값들을 갖는 재구성된 루마 샘플들을 사용하여 선형 모델을 생성하고 다운-샘플링은 수행하지 않습니다. 도 7C에서, 재구성된 루마 샘플들에 대하여 다운 샘플링은 수행하지 않으며, 선형 모델은 원형 데이터 포인트(702a 및 706a)를 통하여 라인을 피팅하여 직접 생성된다.
일부 실시예들에서, 최대 및 최소 루마 값들을 갖는 다운-샘플링된 루마 샘플들(또는, 재구성된 루마 샘플들)을 검색하는 대신, 비디오 코덱은 먼저 최대 및 최소 크로마 값들을 갖는 재구성된 크로마 샘플들을 검색한다. 재구성된 최대 및 최소 크로마 샘플들이 식별되면, 비디오 코덱은 대응되는 다운-샘플링된 루마 샘플들을 계산하여 선형 모델을 생성할 수 있다. 도 7D에서, 원형 데이터 포인트(708a)는 최소 크로마 값을 갖는 재구성된 크로마 샘플을 가리키고, 원형 데이터 포인트(704a)는 최대 크로마 값을 갖는 재구성된 크로마 샘플을 가리킨다. 다음, 비디오 코덱은 정사각형 데이터 포인트(708b, 원형 데이터 포인트(708a)로부터의 재구성된 루마 샘플을 부분적으로 사용하여 생성된 다운-샘플링된 루마 샘플을 가리킴) 및 정사각형 데이터 포인트(704b, 원형 데이터 포인트(704a)로부터의 재구성된 루마 샘플을 부분적으로 사용하여 생성된 다운-샘플링된 루마 샘플을 가리킴)를 통하여 라인을 피팅하여 선형 모델을 생성할 수 있다.
일부 실시예들에서, 비디오 코덱은 가장 큰 루마 값을 갖는 복수(예를 들어, 2 개)의 다운-샘플링된 루마 샘플들 및 가장 작은 루마 값을 갖는 복수의(예를 들어, 2 개)의 다운-샘플링된 루마 샘플들을 선택한다. 다음, 비디오 코덱은 재구성된 크로마 샘플들의 대응되는 최대 및 최소 그룹을 검색할 수 있다. 비디오 코덱은 각 그룹에 대하여 평균화 동작을 수행하고, 평균 루마 및 크로마 값을 사용하여 선형 모델을 생성할 수 있다. 도 7E에서, 가장 큰 2 개의 다운-샘플링된 루마 샘플들(정사각형 데이터 포인트들(710b 및 704b)) 및 가장 작은 2 개의 다운-샘플링된 루마 샘플들(정사각형 데이터 포인트(708b) 및 정사각형 데이터 포인트(702b))을 사용하여 선형 모델을 생성한다.
도 8은 비디오 코덱이 크로스-검포넌트 선형 모델을 사용하여 루마 블록으로부터의 재구성된 루마 샘플들에 기초하여 크로마 블록에 대한 크로마 샘플들을 재구성하는 기술을 구현하는 예시적인 프로세스(700)를 예시하는 흐름도이다. 프로세스(700)는 디코딩 프로세스 또는 인코딩 프로세스 과정 중에 구현될 수 있다.
첫 번째 단계로, 비디오 코덱은 크로마 블록과 대응하는 루마 블록을 재구성한다(810). 크로마 블록(예를 들어, 도 6B의 크로마 블록(620))은 재구성된 루마 블록으로부터 후속적으로 재구성될 것이며, 재구성된 루마 블록(예를 들어, 도 6A의 재구성된 루마 블록(602))의 해상도와 다른 해상도를 가질 수 있다. 루마 블록과 크로마 블록은 대응되며, 비디오 프레임의 동일한 부분의 서로 다른 성분들(예를 들어, 밝기 성분 및 색상 성분을 각각)을 각각 나타낸다. 일부 실시예들에서, 루마 블록은 복수의 이전에 재구성된 인접 루마 샘플들(예를 들어, 도 6A의 상측 인접 루마 그룹(606) 및 좌측 인접 루마 그룹(610) 내의 재구성된 루마 샘플들)과 인접하고, 크로마 블록은 복수의 이전에 재구성된 인접 크로마 샘플들(예를 들어, 도 6A의 상측 인접 크로마 그룹(624) 및 좌측 인접 크로마 그룹(628) 내의 재구성된 크로마 샘플들)과 인접할 수 있다. 본 발명에서 "인접한다"라는 용어는 "바로 옆"으로 제한되지 않으며, 코딩 블록이 루마/크로마 샘플 바로 옆에 있지 않은 상황도 포함한다. 일부 실시예들에서, 비디오 코덱은 크로스-검포넌트 선형 모델을 도출하고 당해 모델을 재구성된 루마 샘플들(또는, 루마 블록 내의 다운-샘플링된 재구성된 루마 샘플들)에 적용하는 것을 통하여 크로마 블록 내의 크로마 샘플들을 예측한다.
다음으로, 비디오 코덱은 복수의 재구성된 인접 루마 샘플들의 서브-그룹을 소정의 순서로 검색하여 적어도 하나의 최대 또는 준-최대(quasi-maximum) 루마 샘플과 적어도 하나의 최소 또는 준-최소(quasi-minimum) 루마 샘플을 식별한다(820). 일부 실시예들에서, 복수의 재구성된 인접 루마 샘플들의 서브-그룹은 복수의 재구성된 인접 루마 샘플들을 모두 커버한다. 예를 들어, 비디오 코덱은 인접 루마 샘플들 내의 모든 루마 샘플들을 검색하거나 소정 수량의 인접 루마 샘플들을 검색할 수 있다. 일부 실시예들에서, 비디오 코덱은 래스터 스캔 순서에 따라, 좌측에서 우측으로, 상측에서 하측으로, 또는 이들 순서들의 임의의 조합으로 인접 루마 샘플들을 검색합니다. 일부 실시예들에서, 인접 루마 샘플들은 공간적으로 루마 블록의 상측에 위치하는 샘플들(예를 들어, 상측 인접 크로마 그룹(624)) 및 루마 블록의 좌측에 위치하는 샘플들(예를 들어, 좌측 인접 크로마 그룹(610))을 포함한다. 비디오 코덱은 상측 인접 크로마 샘플들 또는 좌측 인접 크로마 샘플들만을 검색할 수 있다.
최대 및 최소 루마 샘플들을 식별 한 다음, 비디오 코덱은 식별된 최대 및 최소 루마 샘플들과 각각 대응하는 적어도 하나의 다운-샘플링된 최대 루마 샘플 및 적어도 하나의 다운-샘플링된 최소 루마 샘플을 계산한다(830 및 840). 예를 들어, 비디오 코덱은 6-탭 다운-샘플링(six-tap down-sampling) 기술을 사용하여 6 개의 인접 재구성된 루마 샘플들(예를 들어, 3x2 방식 또는 2x3 방식으로 배열 됨)로부터(예를 들어, 가중 평균화를 통하여) 다운-샘플링된 루마 샘플들을 생성할 수 있다. 다운-샘플링된 최대 루마 샘플 및 다운-샘플링된 최소 루마 샘플은 각각의 재구성된 크로마 샘플(예를 들어, 각각 제1 재구성된 인접 크로마 샘플 및 제2 재구성된 인접 크로마 샘플)과 대응한다. 예를 들어, 제1 재구성된 인접 크로마 샘플 및 제2 재구성된 인접 크로마 샘플은 복수의 재구성된 인접 크로마 샘플들일 수 있다.
일부 구현 방식들에서, 위에서 설명된 동작(820, 830 및 840)은 다른 순서로 재배열될 수 있다. 예를 들어, 비디오 코덱은 먼저 복수의 재구성된 인접 루마 샘플들로부터 하나 또는 그 이상의 다운-샘플링된 루마 샘플을 계산한 다음, 하나 또는 그 이상의 계산된 다운-샘플링된 루마 샘플의 서브-그룹을 검색하여 적어도 하나의 다운-샘플링된 최대 루마 샘플 및 적어도 하나의 다운-샘플링된 최소 루마 샘플을 각각 식별할 수 있다. 다운-샘플링된 최대 루마 샘플은 제1 재구성된 크로마 샘플에 대응되도록 선택되고 다운-샘플링된 최소 루마 샘플은 제2 재구성된 크로마 샘플에 대응되도록 선택된다.
다음으로, 비디오 코덱은 다운-샘플링된 최대 루마 샘플과 제1 재구성된 인접 크로마 샘플의 제1 쌍 및 다운-샘플링된 최소 루마 샘플과 제2 재구성된 인접 크로마 샘플의 제2 쌍을 사용하여 선형 모델을 생성할 수 있다(850). 일부 실시예들에서, 비디오 코덱은 2 개의 데이터 포인트들(예하면,(제1 재구성된 인접 크로마 샘플, 다운-샘플링된 최대 루마 샘플) 및(제2 재구성된 인접 크로마 샘플, 다운-샘플링된 최대 루마 샘플))을 식별하고 상기 2개의 데이터 포인트들을 통과하는 라인을 통하여, 최대-최소 방법을 사용하여 선형 모델을 생성할 수 있다.
선형 모델을 얻은 다음, 비디오 코덱은 재구성된 루마 블록의 루마 샘플들로부터 다운-샘플링된 루마 샘플들을 계산한다(860). 각 다운-샘플링된 루마 샘플들은 크로마 블록의 크로마 샘플과 대응된다. 예하면, 비디오 코덱은 다운-샘플링된 최대 및 최소 루마 샘플들을 계산하기 위하여 사용되는 것과 동일한 다운-샘플링 기술을 사용하여 다운-샘플링된 루마 샘플들을 계산할 수 있다.
마지막으로, 비디오 코덱은 선형 모델을 대응되는 다운-샘플링된 루마 샘플들에 적용하는 것을 통하여 크로마 블록의 크로마 샘플들을 예측한다(870).
하나 또는 그 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 하나 또는 이상의 명령 또는 코드로서 컴퓨터 판독 가능 매체에 저장되거나 전송될 수 있으며 하드웨어-기반 처리 장치에 의해 실행될 수 있다. 컴퓨터 판독 가능 매체는 데이터 저장 매체와 같은 유형의 매체에 해당하는 컴퓨터 판독 가능 저장 매체 또는 예를 들어 통신 프로토콜에 따라 컴퓨터 프로그램을 한 장소에서 다른 장소로 전송하도록 하는 임의의 매체를 포함하는 통신 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터 판독 가능 매체는 일반적으로(1) 비-일시적인 유형의 컴퓨터 판독 가능 저장 매체 또는(2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는하나 또는 그 이상의 컴퓨터 또는 하나 또는 그 이상의 프로세서에 의해 액세스되어 본 발명에서 설명한 구현 방식들을 구현하기 위한 명령어, 코드 및/또는 데이터 구조를 검색할 수 있는 임의의 이용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체를 포함할 수 있다.
본 발명의 구현 방식들의 설명에 사용된 용어는 단지 특정 구현 방식들을 설명하기 위한 목적이며 그 범위를 제한하려는 것이 아니다. 구현 방식들의 설명 및 첨부된 특허 청구 범위에서 사용한 바와 같이, 단수 형태는 문맥에서 달리 명시하지 않는 한 복수 형태도 포함한다. 본 명세서에서 사용된 용어 "및/또는"은 하나 또는 그 이상의 연관된 열거된 항목의 임의의 및 모든 가능한 조합을 지칭하고 포함하는 것으로 또한 이해하여야 한다. 본 명세서에서 사용된 용어 "포함하는" 및/또는 "포함한다"는 언급 된 특징, 요소 및/또는 구성이 존재하는 것을 가리키며, 하나 또는 그 이상의 다른 특징, 요소, 구성 및/또는 그 조합의 존재 또는 추가를 배제하지 않는 것으로 이해하여야 한다.
또한, 용어 "제1", "제2" 등이 본 명세서에서 다양한 요소를 설명하기 위해 사용되지만, 이러한 요소들은 이러한 용어들에 의해 제한되어서는 아니된다. 이러한 용어들은 한 요소를 다른 요소와 구별하기 위하여 사용된다. 예를 들어, 제1 전극은 제2 전극으로 명명될 수 있고, 유사하게 본 발명의 범위를 벗어나지 않는 전제하에서 제2 전극은 제1 전극으로 명명될 수 있다. 제1 전극과 제2 전극은 모두 전극이지만 같은 전극이 아니다.
본 발명의 설명은 예시 및 설명의 목적으로 제공되었으며, 공개된 형태로 본 발명을 한정하려는 것은 아니다. 전술한 설명 및 관련 도면들의 시사로부터 당업자들은 다양한 수정, 변경 및 대안적인 구현 방식들은 명백히 이해할 것이다. 실시예들은 본 발명의 원리, 실제 적용 및 당업자가 본 발명을 다양한 구현 방식으로 구현하도록 이해하고, 특정된 용도에 적합하도록 본 발명을 수정하도록 본 발명의 기본적인 원리 및 다양한 구현 방식을 제일 적합하게 사용하도록 설명되었다.따라서, 청구항의 범위는 개시된 구현 방식들의 특정 예에 제한되지 않으며, 수정 및 다른 구현 방식들은 첨부된 청구 범위에 포함되는 것으로 해석되어야 한다.

Claims (28)

  1. 비디오 신호를 디코딩하는 방법에 있어서,
    크로마 블록과 대응하는 루마 블록을 재구성하되, 상기 루마 블록은 복수의 재구성된 인접 루마 샘플들과 인접하고, 상기 크로마 블록은 복수의 재구성된 인접 크로마 샘플들과 인접하는 단계;
    상기 복수의 재구성된 인접 루마 샘플들로부터 복수의 다운-샘플링된 루마 샘플들을 계산하는 단계;
    계산된 상기 복수의 다운-샘플링된 루마 샘플들의 서브-그룹으로부터, 적어도 하나의 다운-샘플링된 최대 루마 샘플을 식별하되, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제1 재구성된 크로마 샘플과 대응되되, 상기 서브 그룹은 계산된 상기 복수의 다운-샘플링된 루마 샘플들 중 소정 수량의 계산된 다운-샘플링된 루마 샘플들로 구성되며, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 서브 그룹 중 최대 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플인 단계;
    계산된 상기 복수의 다운-샘플링된 루마 샘플들의 상기 서브-그룹으로부터, 적어도 하나의 다운-샘플링된 최소 루마 샘플을 식별하되, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제2 재구성된 크로마 샘플과 대응되되, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 서브 그룹 중 최소 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플인 단계;
    상기 적어도 하나의 다운-샘플링된 최대 루마 샘플, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플, 상기 제1 재구성된 크로마 샘플, 및 상기 제 2 재구성된 크로마 샘플에 기초하여 선형 모델을 생성하는 단계;
    상기 재구성된 루마 블록의 루마 샘플들로부터, 상기 크로마 블록의 크로마 샘플과 각각 대응되는 다운-샘플링된 루마 샘플들을 계산하는 단계;
    상기 선형 모델을 계산된 대응되는 다운-샘플링된 루마 샘플들에 적용하여 상기 크로마 블록의 크로마 샘플들을 예측하는 단계,
    를 포함하는 컴퓨팅 장치에서 수행되는 비디오 신호를 디코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 크로마 블록과 상기 루마 블록은 4 : 2 : 0 또는 4 : 2 : 2 크로마 서브-샘플링 방식을 사용하여 인코딩되고, 상기 크로마 블록과 상기 루마 블록은 서로 상이한 해상도를 구비하는, 또는
    상기 크로마 블록과 상기 루마 블록은 4 : 4 : 4 크로마 풀 샘플링 방식을 사용하여 인코딩되고, 상기 크로마 블록과 상기 루마 블록은 동일한 해상도를 구비하는
    비디오 신호를 디코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 복수의 재구성된 인접 루마 샘플들은 상기 재구성된 루마 블록의 상측에 위치하는 루마 샘플들 및/또는 상기 재구성된 루마 블록의 좌측에 위치하는 루마 샘플들을 포함하는,
    비디오 신호를 디코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 재구성된 루마 블록의 루마 샘플로부터 다운-샘플링된 루마 샘플들을 계산하는 단계는, 상기 루마 샘플에 대한 6 개의 인접 루마 샘플들의 가중 평균화를 수행하는 단계를 포함하는
    비디오 신호를 디코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 선형 모델을 생성하는 단계는,
    상기 적어도 하나의 다운-샘플링된 최대 루마 샘플 및 상기 제 1 재구성된 크로마 샘플과 연관된 적어도 하나의 데이터 포인트 및 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플 및 상기 제2 재구성된 루마 샘플과 연관된 적어도 하나의 데이터 포인트를 통하여 선형 방정식을 피팅하는 단계를 포함하는,
    비디오 신호를 디코딩하는 방법.
  6. 컴퓨팅 장치에 있어서,
    하나 또는 그 이상의 프로세서;
    상기 하나 또는 그 이상의 프로세서에 연결된 메모리; 및
    상기 메모리에 저장된 복수의 프로그램을 포함하되,
    상기 복수의 프로그램은 상기 하나 또는 그 이상의 프로세서에 의해 실행될 경우 상기 컴퓨팅 장치로 하여금,
    크로마 블록과 대응하는 루마 블록을 재구성하되, 상기 루마 블록은 복수의 재구성된 인접 루마 샘플들과 인접하고, 상기 크로마 블록은 복수의 재구성된 인접 크로마 샘플들과 인접하는 단계;
    상기 복수의 재구성된 인접 루마 샘플들로부터 복수의 다운-샘플링된 루마 샘플들을 계산하는 단계;
    계산된 상기 복수의 다운-샘플링된 루마 샘플들의 서브-그룹으로부터, 적어도 하나의 다운-샘플링된 최대 루마 샘플을 식별하되, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제1 재구성된 크로마 샘플과 대응되되, 상기 서브 그룹은 계산된 상기 복수의 다운-샘플링된 루마 샘플들 중 소정 수량의 계산된 다운-샘플링된 루마 샘플들로 구성되며, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 서브 그룹 중 최대 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플인 단계;
    계산된 상기 복수의 다운-샘플링된 루마 샘플들의 상기 서브-그룹으로부터, 적어도 하나의 다운-샘플링된 최소 루마 샘플을 식별하되, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제2 재구성된 루마 샘플과 대응되되, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 서브 그룹 중 최소 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플인 단계;
    상기 적어도 하나의 다운-샘플링된 최대 루마 샘플, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플, 상기 제1 재구성된 크로마 샘플, 및 상기 제 2 재구성된 크로마 샘플에 기초하여 선형 모델을 생성하는 단계;
    상기 재구성된 루마 블록의 루마 샘플들로부터, 상기 크로마 블록의 크로마 샘플과 각각 대응되는 다운-샘플링된 루마 샘플들을 계산하는 단계;
    상기 선형 모델을 계산된 대응되는 다운-샘플링된 루마 샘플들에 적용하여 상기 크로마 블록의 크로마 샘플들을 예측하는 단계, 를 수행하도록 하는 컴퓨터 장치.
  7. 제 6 항에 있어서,
    상기 크로마 블록과 상기 루마 블록은 4 : 2 : 0 또는 4 : 2 : 2 크로마 서브-샘플링 방식을 사용하여 인코딩되고, 상기 크로마 블록과 상기 루마 블록은 서로 상이한 해상도를 구비하는, 또는
    상기 크로마 블록과 상기 루마 블록은 4 : 4 : 4 크로마 풀 샘플링 방식을 사용하여 인코딩되고, 상기 크로마 블록과 상기 루마 블록은 동일한 해상도를 구비하는
    컴퓨터 장치.
  8. 제 6 항에 있어서,
    상기 복수의 재구성된 인접 루마 샘플들은 상기 재구성된 루마 블록의 상측에 위치하는 루마 샘플들 및/또는 상기 재구성된 루마 블록의 좌측에 위치하는 루마 샘플들을 포함하는,
    컴퓨터 장치.
  9. 제 6 항에 있어서,
    상기 재구성된 루마 블록의 루마 샘플로부터 다운-샘플링된 루마 샘플들을 계산하는 단계는, 상기 루마 샘플에 대한 6 개의 인접 루마 샘플들의 가중 평균화를 수행하는 단계를 포함하는
    컴퓨터 장치.
  10. 제 6 항에 있어서,
    상기 선형 모델을 생성하는 단계는,
    상기 적어도 하나의 다운-샘플링된 최대 루마 샘플 및 상기 제 1 재구성된 크로마 샘플과 연관된 적어도 하나의 데이터 포인트 및 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플 및 상기 제2 재구성된 루마 샘플과 연관된 적어도 하나의 데이터 포인트를 통하여 선형 방정식을 피팅하는 단계를 포함하는,
    컴퓨터 장치.
  11. 하나 또는 그 이상의 프로세서를 구비하는 컴퓨팅 장치에 의해 실행되는 복수의 프로그램을 저장하는 비-일시적 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 복수의 프로그램은 상기 하나 또는 그 이상의 프로세서에 의해 실행될 경우 상기 컴퓨팅 장치로 하여금 제 1 항 내지 제 5 항 중 어느 한 항에 의한 비디오 신호를 디코딩하는 방법을 수행하도록 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
  12. 컴퓨팅 장치로 하여금 상기 제 1 항 내지 제 5 항 중 어느 한 항에 의한 비디오 신호를 디코딩하는 방법을 수행하도록 하는 비-일시적 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램.
  13. 비디오 신호를 디코딩하는 방법에 있어서,
    크로마 블록과 대응하는 루마 블록을 재구성하되, 상기 루마 블록은 복수의 재구성된 인접 루마 샘플들과 인접하고, 상기 크로마 블록은 복수의 재구성된 인접 크로마 샘플들과 인접하는 단계;
    상기 복수의 재구성된 인접 루마 샘플들로부터 복수의 다운-샘플링된 루마 샘플들을 계산하는 단계;
    미리 정의된 순서로 상기 복수의 다운-샘플링된 루마 샘플들의 서브-그룹을 검색하여 적어도 하나의 다운-샘플링된 최대 루마 샘플 및 적어도 하나의 다운-샘플링된 최소 루마 샘플을 각각 식별하되, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제1 재구성된 크로마 샘플과 대응되고, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제2 재구성된 크로마 샘플과 대응되되, 상기 서브 그룹은 계산된 상기 복수의 다운-샘플링된 루마 샘플들 중 소정 수량의 계산된 다운-샘플링된 루마 샘플들로 구성되며, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 서브 그룹 중 최대 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플이며, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 서브 그룹 중 최소 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플인 단계;
    상기 적어도 하나의 다운-샘플링된 최대 루마 샘플, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플, 상기 제1 재구성된 크로마 샘플 및 상기 제2 재구성된 크로마 샘플을 사용하여, 선형 모델을 생성하는 단계;
    상기 재구성된 루마 블록의 루마 샘플로부터, 상기 크로마 블록의 크로마 샘플과 각각 대응되는 다운-샘플링된 루마 샘플들을 계산하는 단계;
    상기 선형 모델을 계산된 상기 대응되는 다운-샘플링된 루마 샘플들에 적용하여 상기 크로마 블록의 크로마 샘플들을 예측하는 단계, 를 포함하는 비디오 신호를 디코딩하는 방법.
  14. 컴퓨팅 장치에 있어서,
    하나 또는 그 이상의 프로세서;
    상기 하나 또는 그 이상의 프로세서에 연결된 메모리; 및
    상기 메모리에 저장된 복수의 프로그램을 포함하되,
    상기 복수의 프로그램은 상기 하나 또는 그 이상의 프로세서에 의해 실행될 경우 상기 컴퓨팅 장치로 하여금,
    크로마 블록과 대응하는 루마 블록을 재구성하되, 상기 루마 블록은 복수의 재구성된 인접 루마 샘플들과 인접하고, 상기 크로마 블록은 복수의 재구성된 인접 크로마 샘플들과 인접하는 단계;
    상기 복수의 재구성된 인접 루마 샘플들로부터 복수의 다운-샘플링된 루마 샘플들을 계산하는 단계;
    미리 정의된 순서로 상기 복수의 다운-샘플링된 루마 샘플들의 서브-그룹을 검색하여 적어도 하나의 다운-샘플링된 최대 루마 샘플 및 적어도 하나의 다운-샘플링된 최소 루마 샘플을 각각 식별하되, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제1 재구성된 크로마 샘플과 대응되고, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제2 재구성된 크로마 샘플과 대응되되, 상기 서브 그룹은 계산된 상기 복수의 다운-샘플링된 루마 샘플들 중 소정 수량의 계산된 다운-샘플링된 루마 샘플들로 구성되며, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 서브 그룹 중 최대 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플이며, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 서브 그룹 중 최소 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플인 단계;
    상기 적어도 하나의 다운-샘플링된 최대 루마 샘플, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플, 상기 제1 재구성된 크로마 샘플 및 상기 제2 재구성된 크로마 샘플을 사용하여, 선형 모델을 생성하는 단계;
    상기 재구성된 루마 블록의 루마 샘플로부터, 상기 크로마 블록의 크로마 샘플과 각각 대응되는 다운-샘플링된 루마 샘플들을 계산하는 단계;
    상기 선형 모델을 계산된 상기 대응되는 다운-샘플링된 루마 샘플들에 적용하여 상기 크로마 블록의 크로마 샘플들을 예측하는 단계, 를 수행하도록 하는 컴퓨터 장치.
  15. 하나 또는 그 이상의 프로세서를 구비하는 컴퓨팅 장치에 의해 실행되는 복수의 프로그램을 저장하는 비-일시적 컴퓨터 판독 가능 저장 매체에 있어서,
    상기 복수의 프로그램은 상기 하나 또는 그 이상의 프로세서에 의해 실행될 경우 상기 컴퓨팅 장치로 하여금:
    크로마 블록과 대응하는 루마 블록을 재구성하되, 상기 루마 블록은 복수의 재구성된 인접 루마 샘플들과 인접하고, 상기 크로마 블록은 복수의 재구성된 인접 크로마 샘플들과 인접하는 단계;
    상기 복수의 재구성된 인접 루마 샘플들로부터 복수의 다운-샘플링된 루마 샘플들을 계산하는 단계;
    미리 정의된 순서로 상기 복수의 다운-샘플링된 루마 샘플들의 서브-그룹을 검색하여 적어도 하나의 다운-샘플링된 최대 루마 샘플 및 적어도 하나의 다운-샘플링된 최소 루마 샘플을 각각 식별하되, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제1 재구성된 크로마 샘플과 대응되고, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제2 재구성된 크로마 샘플과 대응되되, 상기 서브 그룹은 계산된 상기 복수의 다운-샘플링된 루마 샘플들 중 소정 수량의 계산된 다운-샘플링된 루마 샘플들로 구성되며, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 서브 그룹 중 최대 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플이며, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 서브 그룹 중 최소 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플인 단계;
    상기 적어도 하나의 다운-샘플링된 최대 루마 샘플, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플, 상기 제1 재구성된 크로마 샘플 및 상기 제2 재구성된 크로마 샘플을 사용하여, 선형 모델을 생성하는 단계;
    상기 재구성된 루마 블록의 루마 샘플로부터, 상기 크로마 블록의 크로마 샘플과 각각 대응되는 다운-샘플링된 루마 샘플들을 계산하는 단계;
    상기 선형 모델을 계산된 상기 대응되는다운-샘플링된 루마 샘플들에 적용하여 상기 크로마 블록의 크로마 샘플들을 예측하는 단계, 를 수행하도록 하는 비-일시적 컴퓨터 판독 가능 저장 매체.
  16. 컴퓨팅 장치로 하여금,
    복수의 재구성된 인접 크로마 샘플들과 인접하는 크로마 블록과 대응하되, 복수의 재구성된 인접 루마 샘플들과 인접하는 루마 블록을 재구성하되, 상기 루마 블록은 상기 복수의 재구성된 인접 루마 샘플들과 인접하고, 상기 크로마 블록은 상기 복수의 재구성된 인접 크로마 샘플들과 인접하는 단계;
    상기 복수의 재구성된 인접 루마 샘플들로부터 복수의 다운-샘플링된 루마 샘플들을 계산하는 단계;
    미리 정의된 순서로 상기 복수의 다운-샘플링된 루마 샘플들의 서브-그룹을 검색하여 적어도 하나의 다운-샘플링된 최대 루마 샘플 및 적어도 하나의 다운-샘플링된 최소 루마 샘플을 각각 식별하되, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제1 재구성된 크로마 샘플과 대응되고, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 복수의 재구성된 인접 크로마 샘플들 중의 제2 재구성된 크로마 샘플과 대응되되, 상기 서브 그룹은 계산된 상기 복수의 다운-샘플링된 루마 샘플들 중 소정 수량의 계산된 다운-샘플링된 루마 샘플들로 구성되며, 상기 적어도 하나의 다운-샘플링된 최대 루마 샘플은 상기 서브 그룹 중 최대 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플이며, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플은 상기 서브 그룹 중 최소 루마 값을 구비한 적어도 하나의 다운-샘플링된 루마 샘플인 단계;
    상기 적어도 하나의 다운-샘플링된 최대 루마 샘플, 상기 적어도 하나의 다운-샘플링된 최소 루마 샘플, 상기 제1 재구성된 크로마 샘플 및 상기 제2 재구성된 크로마 샘플을 사용하여, 선형 모델을 생성하는 단계;
    상기 재구성된 루마 블록의 루마 샘플로부터, 상기 크로마 블록의 크로마 샘플과 각각 대응되는 다운-샘플링된 루마 샘플들을 계산하는 단계;
    상기 선형 모델을 계산된 상기 대응되는 다운-샘플링된 루마 샘플들에 적용하여 상기 크로마 블록의 크로마 샘플들을 예측하는 단계, 를 수행하도록 하는 비-일시적 컴퓨터 판독 가능 저장 매체에 저장된 컴퓨터 프로그램.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
KR1020217010676A 2018-10-08 2019-10-08 크로스-검포넌트 선형 모델에 대한 간단화 KR102398217B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227012696A KR20220051426A (ko) 2018-10-08 2019-10-08 크로스-검포넌트 선형 모델에 대한 간단화

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862742806P 2018-10-08 2018-10-08
US62/742,806 2018-10-08
PCT/US2019/055208 WO2020076835A1 (en) 2018-10-08 2019-10-08 Simplifications of cross-component linear model

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227012696A Division KR20220051426A (ko) 2018-10-08 2019-10-08 크로스-검포넌트 선형 모델에 대한 간단화

Publications (2)

Publication Number Publication Date
KR20210045497A KR20210045497A (ko) 2021-04-26
KR102398217B1 true KR102398217B1 (ko) 2022-05-16

Family

ID=70165126

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217010676A KR102398217B1 (ko) 2018-10-08 2019-10-08 크로스-검포넌트 선형 모델에 대한 간단화
KR1020227012696A KR20220051426A (ko) 2018-10-08 2019-10-08 크로스-검포넌트 선형 모델에 대한 간단화

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020227012696A KR20220051426A (ko) 2018-10-08 2019-10-08 크로스-검포넌트 선형 모델에 대한 간단화

Country Status (13)

Country Link
US (5) US20210227235A1 (ko)
EP (4) EP3847816B1 (ko)
JP (3) JP7053954B2 (ko)
KR (2) KR102398217B1 (ko)
CN (6) CN114449266B (ko)
DK (1) DK3847816T3 (ko)
ES (1) ES2949023T3 (ko)
FI (1) FI3847816T3 (ko)
HU (1) HUE062341T2 (ko)
MX (4) MX2021004028A (ko)
PL (1) PL3847816T3 (ko)
PT (1) PT3847816T (ko)
WO (1) WO2020076835A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA3213840A1 (en) * 2018-07-16 2020-01-23 Huawei Technologies Co., Ltd. Video encoder, video decoder, and corresponding encoding and decoding methods
WO2020076036A1 (ko) 2018-10-07 2020-04-16 주식회사 윌러스표준기술연구소 복수개의 참조 라인을 위한 mpm 구성 방법을 이용한 비디오 신호 처리 방법 및 장치
HUE062341T2 (hu) 2018-10-08 2023-10-28 Beijing Dajia Internet Information Tech Co Ltd Kereszt-komponenses lineáris model egyszerûsítése
JP2022503990A (ja) 2018-10-12 2022-01-12 オッポ広東移動通信有限公司 ビデオ画像成分予測方法および装置、コンピュータ記憶媒体
CN117061742A (zh) * 2018-10-12 2023-11-14 三星电子株式会社 通过使用交叉分量线性模型来处理视频信号的方法和设备
JP2021513795A (ja) * 2019-01-01 2021-05-27 エルジー エレクトロニクス インコーポレイティド 履歴ベース動きベクトル予測に基づいてビデオ信号を処理するための方法及び装置
US11190800B2 (en) 2019-02-07 2021-11-30 Qualcomm Incorporated Motion vector predictor list generation for intra block copy mode in video coding
TWI747339B (zh) * 2019-06-27 2021-11-21 聯發科技股份有限公司 視訊編解碼之方法和裝置
JP2022553444A (ja) * 2019-12-30 2022-12-22 ベイジン ダジア インターネット インフォメーション テクノロジー カンパニー リミテッド 映像データをデコードするための方法、電子デバイス、非一時的なコンピュータ可読記憶媒体およびコンピュータプログラム
US20220353547A1 (en) * 2021-04-16 2022-11-03 Tencent America LLC Entropy coding of sign map for transform coefficients
WO2023200933A1 (en) * 2022-04-13 2023-10-19 Innopeak Technology, Inc. Cross-component model adjustment for video coding
WO2023242466A1 (en) * 2022-06-17 2023-12-21 Nokia Technologies Oy A method, an apparatus and a computer program product for video coding

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160277762A1 (en) * 2015-03-20 2016-09-22 Qualcomm Incorporated Downsampling process for linear model prediction mode
US20180077426A1 (en) * 2016-09-15 2018-03-15 Qualcomm Incorporated Linear model chroma intra prediction for video coding

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101312529B (zh) * 2007-05-24 2010-07-21 华为技术有限公司 生成上下采样滤波器及实现编码的方法、系统和装置
KR20120140366A (ko) * 2011-06-21 2012-12-31 광운대학교 산학협력단 휘도 성분의 문맥을 이용하는 적응적 색차 성분 스캐닝 순서 결정 방법 및 장치
US9693070B2 (en) * 2011-06-24 2017-06-27 Texas Instruments Incorporated Luma-based chroma intra-prediction for video coding
KR20130058524A (ko) * 2011-11-25 2013-06-04 오수미 색차 인트라 예측 블록 생성 방법
CN103918269B (zh) 2012-01-04 2017-08-01 联发科技(新加坡)私人有限公司 色度帧内预测方法及装置
EP2805496B1 (en) * 2012-01-19 2016-12-21 Huawei Technologies Co., Ltd. Reference pixel reduction for intra lm prediction
CN104471940B (zh) 2012-04-16 2017-12-15 联发科技(新加坡)私人有限公司 色度帧内预测方法及装置
US9025867B2 (en) * 2012-05-31 2015-05-05 Apple Inc. Systems and methods for YCC image processing
US10397607B2 (en) * 2013-11-01 2019-08-27 Qualcomm Incorporated Color residual prediction for video coding
EP3219099B1 (en) * 2014-12-19 2021-04-28 HFI Innovation Inc. Methods of palette based prediction for non-444 color format in video and image coding
CN107211121B (zh) * 2015-01-22 2020-10-23 联发科技(新加坡)私人有限公司 视频编码方法与视频解码方法
EP3272120B1 (en) * 2015-04-21 2022-06-15 ARRIS Enterprises LLC Adaptive perceptual mapping and signaling for video coding
US20170150186A1 (en) * 2015-11-25 2017-05-25 Qualcomm Incorporated Flexible transform tree structure in video coding
WO2017139937A1 (en) 2016-02-18 2017-08-24 Mediatek Singapore Pte. Ltd. Advanced linear model prediction for chroma coding
US11039175B2 (en) * 2016-05-27 2021-06-15 Sharp Kabushiki Kaisha Systems and methods for varying quantization parameters
CN108604391B (zh) * 2016-05-29 2022-06-14 谷歌有限责任公司 基于虚拟/增强现实系统中的深度信息的时间扭曲调整
US10484712B2 (en) * 2016-06-08 2019-11-19 Qualcomm Incorporated Implicit coding of reference line index used in intra prediction
US10326986B2 (en) * 2016-08-15 2019-06-18 Qualcomm Incorporated Intra video coding using a decoupled tree structure
US10419757B2 (en) * 2016-08-31 2019-09-17 Qualcomm Incorporated Cross-component filter
US10334277B2 (en) * 2016-09-02 2019-06-25 Qualcomm Incorporated Signaling target display parameters of color remapping information supplemental enhancement information messages
US10812820B2 (en) * 2016-11-30 2020-10-20 Qualcomm Incorporated Systems and methods for signaling and constraining a high dynamic range (HDR) video system with dynamic metadata
US10477240B2 (en) * 2016-12-19 2019-11-12 Qualcomm Incorporated Linear model prediction mode with sample accessing for video coding
US11025903B2 (en) * 2017-01-13 2021-06-01 Qualcomm Incorporated Coding video data using derived chroma mode
CN107371040B (zh) * 2017-08-28 2020-05-15 荆门程远电子科技有限公司 一种无人机影像高效处理系统
GB2567249A (en) * 2017-10-09 2019-04-10 Canon Kk New sample sets and new down-sampling schemes for linear component sample prediction
CN118075473A (zh) * 2017-11-28 2024-05-24 Lx 半导体科技有限公司 图像编码/解码方法、图像数据的传输方法和存储介质
GB2571313B (en) * 2018-02-23 2022-09-21 Canon Kk New sample sets and new down-sampling schemes for linear component sample prediction
WO2020009357A1 (ko) * 2018-07-02 2020-01-09 엘지전자 주식회사 Cclm에 기반한 인트라 예측 방법 및 그 장치
EP3815370A4 (en) * 2018-07-12 2021-08-11 Huawei Technologies Co., Ltd. INTRAPREDICTION USING COMPONENT LINEAR MODEL IN VIDEO ENCODING
CA3213840A1 (en) * 2018-07-16 2020-01-23 Huawei Technologies Co., Ltd. Video encoder, video decoder, and corresponding encoding and decoding methods
HUE062341T2 (hu) 2018-10-08 2023-10-28 Beijing Dajia Internet Information Tech Co Ltd Kereszt-komponenses lineáris model egyszerûsítése
US11330298B2 (en) 2019-06-25 2022-05-10 Qualcomm Incorporated Simplified intra chroma mode coding in video coding

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160277762A1 (en) * 2015-03-20 2016-09-22 Qualcomm Incorporated Downsampling process for linear model prediction mode
US20180077426A1 (en) * 2016-09-15 2018-03-15 Qualcomm Incorporated Linear model chroma intra prediction for video coding

Also Published As

Publication number Publication date
MX2023007880A (es) 2023-07-10
MX2023007879A (es) 2023-07-10
US20210227235A1 (en) 2021-07-22
KR20210045497A (ko) 2021-04-26
US11962789B2 (en) 2024-04-16
MX2023007878A (es) 2023-07-10
CN114449266B (zh) 2023-02-17
JP7053954B2 (ja) 2022-04-12
CN116847098A (zh) 2023-10-03
US20230336749A1 (en) 2023-10-19
WO2020076835A1 (en) 2020-04-16
CN112889291A (zh) 2021-06-01
CN116170586A (zh) 2023-05-26
CN116847097B (zh) 2024-05-14
EP3847816B1 (en) 2023-04-19
JP2022500967A (ja) 2022-01-04
PT3847816T (pt) 2023-06-30
CN116847098B (zh) 2024-03-26
EP3847816A1 (en) 2021-07-14
CN114449266A (zh) 2022-05-06
JP2022095783A (ja) 2022-06-28
KR20220051426A (ko) 2022-04-26
JP7416993B2 (ja) 2024-01-17
US20210227240A1 (en) 2021-07-22
EP3847816A4 (en) 2021-11-03
CN116847097A (zh) 2023-10-03
CN116708770A (zh) 2023-09-05
JP7247398B2 (ja) 2023-03-28
ES2949023T3 (es) 2023-09-25
CN116170586B (zh) 2024-03-26
EP4228262A1 (en) 2023-08-16
FI3847816T3 (fi) 2023-06-30
MX2021004028A (es) 2021-06-30
CN116708770B (zh) 2024-03-26
PL3847816T3 (pl) 2023-08-14
JP2023078281A (ja) 2023-06-06
US20230239482A1 (en) 2023-07-27
EP4221220A1 (en) 2023-08-02
US20220217368A1 (en) 2022-07-07
US11632559B2 (en) 2023-04-18
CN116847096A (zh) 2023-10-03
US11323726B2 (en) 2022-05-03
HUE062341T2 (hu) 2023-10-28
EP4228263A1 (en) 2023-08-16
DK3847816T3 (da) 2023-07-24

Similar Documents

Publication Publication Date Title
KR102387972B1 (ko) 히스토리-기반 모션 벡터 예측을 사용한 비디오 코딩 방법 및 장치
KR102398217B1 (ko) 크로스-검포넌트 선형 모델에 대한 간단화
WO2020185888A1 (en) Video coding using multi-model linear model
WO2020190715A1 (en) Signaling of lossless coding in video coding
WO2020076838A1 (en) Motion vector storage for video coding
KR102449889B1 (ko) 비디오 코딩을 위한 서브-블록 시간적 움직임 벡터 예측
CN116847096B (zh) 视频编码方法、计算装置、存储介质和计算机程序产品

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant