KR20200118861A - 템플릿 매칭을 위한 가변 템플릿 크기 - Google Patents

템플릿 매칭을 위한 가변 템플릿 크기 Download PDF

Info

Publication number
KR20200118861A
KR20200118861A KR1020207026202A KR20207026202A KR20200118861A KR 20200118861 A KR20200118861 A KR 20200118861A KR 1020207026202 A KR1020207026202 A KR 1020207026202A KR 20207026202 A KR20207026202 A KR 20207026202A KR 20200118861 A KR20200118861 A KR 20200118861A
Authority
KR
South Korea
Prior art keywords
coding
template
coding unit
video
width
Prior art date
Application number
KR1020207026202A
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 KR20200118861A publication Critical patent/KR20200118861A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/543Motion estimation other than block-based using regions
    • 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/587Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal sub-sampling or interpolation, e.g. decimation or subsequent interpolation of pictures in a video sequence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

가변 크기의 템플릿 매칭이 사용되는 인터 코딩 시스템 및 방법. 상단 템플릿, 좌측 템플릿 및 상단-좌측 템플릿이 정의될 수 있으며, 여기서 상단 템플릿의 폭은 코딩 블록의 폭과 동등하고, 좌측 템플릿의 높이는 코딩 블록의 높이와 동등하지만, 템플릿의 제2 치수(높이와 폭)는 가변적이다. 그런 다음, 현재 코딩 블록 간의 최선의 매치가 식별된 다음, FRUC를 사용해 코딩 블록이 인코딩된다.

Description

템플릿 매칭을 위한 가변 템플릿 크기
우선권 주장
본 출원은 35 U.S.C. §119(e)에 의거하여 2018년 2월 15일에 선 출원된 미국 특허 가출원 일련번호 제62/631,047호에 대한 우선권을 주장하여, 그 전체는 참조로서 본원에 통합된다.
기술분야
본 개시는 비디오 코딩 분야, 특히 템플릿 크기가 변할 수 있는 템플릿 매칭의 활용과 연관된 코딩 효율 증가에 관한 것이다.
진화하는 비디오 코딩 표준의 기술적 개선은 더 높은 비트 전송률, 더 높은 해상도 및 더 양호한 비디오 품질을 가능하게 하기 위해 코딩 효율을 높이는 경향을 보여준다. Joint Video Exploration Team은 JVET로 지칭되는 새로운 비디오 코딩 방식을 개발하였으며, 다용도 비디오 코딩(VVC: Versatile Video Coding)으로 지칭되는 더 새로운 비디오 코딩 방식을 개발 중이다(Versatile Video Coding (Draft 2)이라는 제목으로 2018년 10월 1일에 공표된 JVET 표준의 2차 초안에 대한 VVC 7판의 전체 내용은 참조로서 본원에 통합됨). HVEC(High Efficiency Video Coding)과 같은 다른 비디오 코딩 방식과 마찬가지로, JVET와 VVC 둘 다는 블록 기반 하이브리드 공간 및 시간 예측 코딩 방식이다. 그러나, HEVC에 비해 JVET와 VVC는 비트스트림 구조, 신택스, 제약, 및 디코딩된 화상을 생성하기 위한 맵핑에 대한 많은 변형을 포함한다. JVET는 Joint Exploration Model(JEM) 인코더와 디코더에서 구현되었지만, VVC는 2020년 초까지 구현되기 어려울 것으로 예상된다.
하나 이상의 컴퓨터로 이루어진 시스템은, 시스템 상에 설치되어 작동 시 시스템으로 하여금 동작을 수행하게 하는 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합을 가짐으로써 특정 작업 또는 동작을 수행하도록 구성될 수 있다. 하나 이상의 컴퓨터 프로그램은, 데이터 처리 장치에 의해 실행될 때 장치로 하여금 동작을 수행하게 하는 명령을 포함함으로써 특정 작업 또는 동작을 수행하도록 구성될 수 있다. 하나의 일반적인 양태는 코딩 유닛을 식별하는 단계, 코딩 유닛과 연관된 정보를 결정하는 단계, 상기 코딩 유닛에 인접한 픽셀의 코딩 템플릿을 정의하는 단계를 포함하며, 여기서 상기 코딩 템플릿은 상기 코딩 유닛의 폭 및 높이 중 적어도 하나에 적어도 부분적으로 기초한다. 상기 방법은 상기 코딩 템플릿에 적어도 부분적으로 기초하여 상기 코딩 유닛을 인코딩하는 단계를 추가로 포함한다. 본 양태의 다른 구현예는 상응하는 컴퓨터 시스템, 장치, 및 하나 이상의 컴퓨터 저장 장치 상에 기록되어 각각 상기 방법의 동작을 수행하도록 구성된 컴퓨터 프로그램을 포함한다.
다양한 구현예는 다음 특징 중 하나 이상을 포함할 수 있다: 상기 코딩 템플릿이 코딩 유닛의 좌측에 위치하는 픽셀을 포함하는 경우의 인터 코딩 방법. 상기 코딩 템플릿이 상기 코딩 유닛의 상기 높이와 동등한 높이를 갖는 경우의 인터 코딩 방법. 상기 코딩 템플릿이 상기 코딩 유닛의 상기 폭과 동등하거나 더 적은 폭을 갖는 경우의 인터 코딩 방법. 상기 코딩 템플릿의 상기 폭이 가변적인 경우의 인터 코딩 방법. 상기 코딩 템플릿이 코딩 유닛의 상측에 위치하는 픽셀을 포함하는 경우의 인터 코딩 방법. 상기 코딩 템플릿이 코딩 유닛의 상측과 좌측에 위치하는 픽셀을 포함하는 경우의 인터 코딩 방법. 기술된 기술의 구현예에는 하드웨어, 방법 또는 프로세스, 또는 컴퓨터-접근 가능 매체 상의 컴퓨터 소프트웨어가 포함될 수 있다.
하나의 일반적인 양태는 다음을 포함하는 인터 코딩 시스템을 포함한다: 코딩 유닛을 메모리에 수용하는 단계; 코딩 유닛과 연관된 정보를 결정하여 메모리에 저장하는 단계; 상기 코딩 유닛에 인접한 픽셀의 코딩 템플릿을 정의하여 메모리에 저장하되, 상기 코딩 템플릿은 상기 코딩 유닛의 폭 및 높이 중 적어도 하나에 적어도 부분적으로 기초하는 단계; 및 상기 코딩 템플릿에 적어도 부분적으로 기초하여, 프레임 레이트 상향 변환을 이용해 상기 코딩 유닛을 신호로 인코딩하는 단계. 본 양태의 다른 구현예는 상응하는 컴퓨터 시스템, 장치, 및 하나 이상의 컴퓨터 저장 장치 상에 기록되어 각각 상기 방법의 동작을 수행하도록 구성된 컴퓨터 프로그램을 포함한다.
추가 구현예 또는 대안적인 구현예는 다음의 특징 중 하나 이상을 포함할 수 있다. 상기 코딩 템플릿이 코딩 유닛의 좌측에 위치하는 픽셀을 포함하는 경우의 인터 코딩 시스템. 상기 시스템은, 상기 코딩 템플릿이 상기 코딩 유닛의 상기 높이와 동등한 높이를 갖는 조건을 포함할 수도 있다. 상기 시스템은, 상기 코딩 템플릿이 상기 코딩 유닛의 상기 폭과 동등하거나 더 작은 폭을 갖는 조건을 포함할 수도 있다. 상기 인터 코딩 시스템은, 상기 코딩 템플릿이 코딩 유닛 위에 위치한 픽셀로 이루어지거나, 상기 코딩 템플릿이 상기 코딩 유닛의 상기 폭과 동일한 폭을 갖는 조건을 포함할 수도 있다. 기술된 기술의 구현예에는 하드웨어, 방법 또는 프로세스, 또는 컴퓨터-접근 가능 매체 상의 컴퓨터 소프트웨어가 포함될 수 있다.
본 발명의 추가적인 세부 내용은 첨부된 도면의 도움으로 설명되며, 여기서:
도 1은 프레임을 복수의 코딩 트리 유닛(CTU: Coding Tree Unit)으로 분할하는 것을 도시한다.
도 2a~2c는 CTU를 코딩 유닛(CU)으로 예시적으로 분할하는 것을 도시한다.
도 3은 도 2의 CU 분할을 나타내는 쿼드트리+바이너리트리(QTBT)를 도시한다.
도 4는 JVET 또는 VVC 인코더에서의 CU 코딩에 대한 단순화된 블록도를 도시한다.
도 5는 VVC의 JVET에서의 루마 성분(luma component)에 대해 가능한 인트라 예측 모드를 도시한다.
도 6은 VVC 인코더의 JVET에서의 CU 코딩에 대한 단순화된 블록도를 도시한다.
도 7은 코딩 유닛 및 가변 높이/폭을 갖는 연관된 상단 및 좌측 템플릿의 구현예를 도시한다.
도 8~9는 코딩 유닛 및 이와 연관되고 가변 높이/폭을 갖는 상단 및 좌측 템플릿의 대안적인 구현예를 도시한다.
도 10은 코딩에 있어서 가변 템플릿 크기를 이용하는 방법의 구현예를 도시한다.
도 11은 템플릿 매칭을 위한 가변 템플릿 크기를 제공하도록 맞춰지고 구성된 컴퓨터 시스템의 구현예를 도시한다.
도 12는 템플릿 매칭을 위한 가변 템플릿 크기를 제공하도록 맞춰지고 구성된 비디오 인코더/디코더의 구현예를 도시한다.
도 1은 프레임을 복수의 코딩 트리 유닛(CTU)(100)으로 분할하는 것을 도시한다. 프레임은 비디오 시퀀스 내의 이미지일 수 있다. 프레임은 이미지에서 강도 측정 값을 나타내는 픽셀 값을 갖는 매트릭스 또는 매트릭스 세트를 포함할 수 있다. 따라서, 이러한 매트릭스 세트는 비디오 시퀀스를 생성할 수 있다. 픽셀 값은 풀 컬러 비디오 코딩에서의 색상 및 명암을 나타내도록 정의될 수 있으며, 여기서 픽셀은 3개 채널로 분할된다. 예를 들어, YCbCr 색 공간에서, 픽셀은 그레이 레벨 강도를 나타내는 휘도 값 Y와, 색상이 그레이에서 블루와 레드로 달라지는 정도를 나타내는 2개의 색차(chrominance) 값을 가질 수 있다. 다른 구현예에서, 픽셀 값은 상이한 색 공간 및 색 모델에서의 값으로 표현될 수 있다. 비디오의 해상도는 프레임 내 픽셀의 수를 결정할 수 있다. 해상도가 더 높다는 것은 픽셀이 더 많고 이미지의 선명도가 더 양호함을 의미할 수 있지만, 더 높은 대역폭, 저장 용량 및 전송 성능이 요구될 수도 있다.
비디오 시퀀스의 프레임은 JVET를 사용해 인코딩 및 디코딩될 수 있다. JVET는 Joint Video Exploration Team에 의해 개발 중인 비디오 코딩 방식이다. JVET의 버전들은 JEM (Joint Exploration Model) 인코더와 디코더에 구현되었다. HVEC(High Efficiency Video Coding)과 같은 다른 비디오 코딩 방식과 마찬가지로, JVET는 블록 기반 하이브리드 공간 및 시간 예측 코딩 방식이다. JVET를 이용해 코딩하는 동안, 도 1에 도시된 바와 같이, 프레임은 먼저 CTU(100)로 불리는 정방형 블록으로 분할된다. 예를 들어, CTU(100)는 128x128 픽셀로 이루어진 블록일 수 있다.
도 2는 CTU(100)를 CU(102)로 예시적으로 분할하는 것을 도시한다. 프레임 내의 각 CTU(100)는 하나 이상의 CU(102, 코딩 유닛)로 분할될 수 있다. CU(102)는 아래에 기술된 바와 같이 예측과 변환에 사용될 수 있다. HEVC와 달리, JVET에서, CU(102)는 직사각형 또는 정방형일 수 있고, 예측 유닛 또는 변환 유닛으로 추가로 분할되지 않고 코딩될 수 있다. CU(102)는 이들의 루트 CTU(100)만큼 크거나, 루트 CTU(100)의 더 작은 하위 분할단위로서 작게는 4x4 블록일 수 있다.
JVET에서, CTU(100)는 쿼드트리+바이너리트리(QTBT) 방식에 따라 CU(102)로 분할될 수 있으며, 이 방식에서 CTU(100)는 쿼드트리에 따라 정방형 블록으로 재귀적을 분할될 수 있고, 그런 다음, 이들 정방형 블록은 바이너리트리에 따라 수평 또는 수직으로 재귀적으로 분할될 수 있다. CTU 크기, 쿼드트리 및 바이너리트리 리프 노드(binary tree leaf node), 바이너리트리 루트 노드의 최대 크기, 및 바이너리 트리의 최대 깊이와 같은 파라미터는 QTBT에 따라 분할을 조절하도록 설정될 수 있다. VVC에서도, CTU(100)는 터너리 분할(ternary splitting)을 활용해 CU로 분할될 수 있다.
비제한적 예로서, 도 2a는 CU(102)로 분할된 CTU(100)를 도시하며, 여기서 실선은 쿼드트리 분할을 나타내고 파선은 바이너리트리 분할을 나타낸다. 도시된 바와 같이, 바이너리 분할은 수평 분할 및 수직 분할을 통해 CTU의 구조를 정의할 수 있게 하고, 이의 CU로의 하위 분할을 가능하게 한다. 도 2b 및 2c는 CU의 터너리 분할의 대안적인 비제한적 예를 도시하며, 여기서 CU의 하위 분할은 동등하지 않다.
도 3은 도 2의 분할을 나타내는 QTBT를 도시한다. 쿼드트리 루트 노드는 CTU(100)을 나타내며, 여기서 쿼드트리 부분의 각 자식 노드(child node)는 부모 정방형 블록으로부터 분할된 4개의 정방형 블록 중 하나를 나타낸다. 그런 다음, 쿼드트리 리프 노드에 의해 나타나는 정방형 블록은 바이너리트리를 사용해 0회 또는 그 이상 분할될 수 있으며, 여기서 쿼드트리 리프 노드가 바이너리트리의 루트 노드이다. 바이너리 트리 부분의 각 레벨에서, 블록은 수직으로 또는 수평으로 분할될 수 있다. "0"으로 설정된 플래그는 블록이 수평으로 분할되었음을 나타내는 반면, "1"로 설정된 플래그는 블록이 수직으로 분할되었음을 나타낸다.
쿼드트리 분할 및 바이너리트리 분할 후, QTBT의 리프 노드에 의해 표시된 블록은, 예컨대 인터 예측 또는 인트라 예측을 사용하는 코딩 등에 의해 코딩될 최종 CU(102)를 나타낸다. 인터 예측으로 코딩된 슬라이스 또는 전체 프레임의 경우, 상이한 분할 구조가 루마 및 크로마 성분에 사용될 수 있다. 예를 들어, 인터 슬라이스의 경우, CU(102)는 상이한 색 성분을 위한 코딩 블록(CB), 예컨대 1개의 루마 CB 및 2개의 크로마 CB를 가질 수 있다. 인트라 예측으로 코딩된 슬라이스 또는 전체 프레임의 경우, 분할 구조는 루마 및 크로마 성분에 대해 동일할 수 있다.
도 4는 JVET 인코더에서의 CU 코딩에 대한 단순화된 블록도를 도시한다. 비디오 코딩의 주 단계는, 전술한 바와 같이 CU(102)를 식별하기 위해 분할하는 단계에 이어서, (404 또는 406)에서의 예측을 사용해 CU(102)를 인코딩하는 단계, 잔차 CU(410)을 (408에서) 생성하고, (412에서) 변환하고, (416에서) 양자화하고, (420에서) 엔트로피 코딩하는 단계를 포함한다. 도 4에 도시된 인코더 및 인코딩 과정은 아래에 보다 상세하게 기술되는 디코딩 과정도 포함한다.
현재 CU(102)가 주어지면, 인코더는 (404에서) 인트라 예측을 공간적으로 사용하거나 (406에서) 인터 예측을 시간적으로 사용해 예측 CU(402)를 획득할 수 있다. 예측 코딩의 기본 개념은 원래 신호와 원래 신호에 대한 예측 사이에서 차등 또는 잔차 신호를 전송하는 것이다. 수신기 측에서, 원래 신호는 후술하는 바와 같이 잔차와 예측을 추가함으로써 재구성될 수 있다. 차등 신호는 원래 신호보다 상관 관계가 더 낮기 때문에, 전송에 필요한 비트 수는 더 적다.
전체 화상이나 화상의 일부와 같은, 인트라 예측형 CU로 전체적으로 코딩된 슬라이스는 다른 슬라이스를 참조하지 않고 디코딩될 수 있는 I 슬라이스일 수 있으며, 따라서 디코딩이 시작될 수 있는 가능한 지점이 될 수 있다. 적어도 일부의 인터 예측형 CU로 코딩된 슬라이스는 하나 이상의 기준 화상을 기준으로 디코딩될 수 있는 예측형(P) 슬라이스 또는 이중예측형(B) 슬라이스일 수 있다. P 슬라이스는 이전에 코딩된 슬라이스와 함께 인트라 예측 및 인터 예측을 사용할 수 있다. 예를 들어, P 슬라이스는 인터 예측을 사용함으로써 I 슬라이스보다 더 압축될 수 있지만, 이를 코딩하기 위해서는 이전에 코딩된 슬라이스의 코딩이 필요하다. B 슬라이스는, 상이한 프레임으로부터의 보간 예측(interpolated prediction)을 사용하는 인터 예측 또는 인트라 예측을 사용해, 이의 코딩을 위한 이전 및/또는 후속 슬라이스의 데이터를 사용할 수 있으므로, 움직임 추정 처리(motion estimation process)의 정확도를 증가시킬 수 있다. 일부 경우에, P 슬라이스와 B 슬라이스 또한 (또는 대안적으로) 인트라 블록 카피를 사용해 인코딩될 수 있으며, 여기서는 동일한 슬라이스의 다른 부분의 데이터가 사용된다.
후술하는 바와 같이, 인트라 예측 또는 인터 예측은 이전에 코딩된 CU(102), 예컨대 인접 CU(102) 또는 기준 화상의 CU(102)로부터 재구성된 CU(434)에 기초하여 수행될 수 있다.
CU(102)가 (404에서) 인트라 예측을 이용해 공간적으로 코딩되는 경우, 화상에서 인접한 CU(102)의 샘플에 기초하여 CU(102)의 픽셀 값을 가장 잘 예측하는 인트라 예측 모드를 발견할 수 있다.
CU의 루마 성분을 코딩할 때, 인코더는 후보 인트라 예측 모드들의 목록을 생성할 수 있다. HEVC는 루마 성분을 위한 35개의 가능한 인트라 예측 모드를 가진 반면, JVET에서는 루마 성분을 위한 67개의 가능한 인트라 예측 모드가 있으며 VVC에서는 85개의 예측 모드가 있다. 여기에는 인접 픽셀에서 생성된 값의 3차원 평면을 사용하는 플레이너 모드(planar mode), 인접 픽셀의 평균 값을 사용하는 DC 모드, 도 5에 도시되고, 실선 지시 방향을 따라 인접 픽셀에서 복사된 값을 사용하는 65개의 방향 모드, 및 비정방형 블록과 함께 사용될 수 있는 18개의 광각 예측 모드가 포함된다.
CU의 루마 성분을 위한 후보 인트라 예측 모드의 목록을 생성할 때, 목록 상의 후보 모드의 수는 CU의 크기에 따라 달라질 수 있다. 후보 목록은: 절대 변환 차이 합(SATD: Sum of Absolute Transform Difference)의 비용이 가장 낮은 HEVC의 35개 모드의 하위 집합; HEVC 모드에서 발견된 후보와 인접하고, JVET를 위해 추가된 새로운 방향 모드; 기본 모드 목록뿐만 아니라 이전에 코딩된 인접 블록에 사용된 인트라 예측 모드에 기초하여 식별되는 CU(102)에 대한 6개의 가능성이 가장 높은 모드(MPM: most probable mode)로 이루어진 세트의 모드를 포함 할 수 있다.
CU의 크로마 성분을 코딩할 때, 후보 인트라 예측 모드들의 목록이 생성될 수도 있다. 후보 모드의 목록에는: 루마 샘플로부터 교차 성분 선형 모델 투영으로 생성된 모드; 크로마 블록 내의 특정 배열 위치에서 루마 CB에 대해 발견된 인트라 예측 모드; 및 인접 블록에 대해 이전에 발견된 크로마 예측 모드가 포함될 수 있다. 인코더는 목록 상에서 왜곡률 비용이 가장 낮은 후보 모드를 발견하여, CU의 루마 및 크로마 성분을 코딩할 때 이들 인트라 예측 모드를 사용할 수 있다. 신택스는 각각의 CU(102)를 코딩하는 데 사용되는 인트라 예측 모드를 나타내는 비트스트림으로 코딩될 수 있다.
CU(102)에 대한 최선의 인트라 예측 모드를 선택한 후, 인코더는 이들 모드를 사용해 예측 CU(402)를 생성할 수 있다. 선택된 모드가 방향 모드인 경우, 4-탭 필터를 사용해 방향의 정확도를 개선할 수 있다. 예측 블록의 상단 또는 좌측에 있는 열 또는 행은 2-탭 또는 3-탭 필터와 같은 경계 예측 필터를 사용해 조정할 수 있다.
예측 CU(402)는 인접 블록의 필터링된 샘플을 기준으로 인접 블록의 필터링되지 않은 샘플을 사용해 생성한 예측 CU(402)를 조정하는 위치 의존적 인트라 예측 조합(PDPC) 프로세스, 또는 3-탭 또는 5-탭 저역 통과 필터를 사용해 참조 샘플을 가공하는 적응성 참조 샘플 평활화를 통해 더 평활화될 수 있다.
CU(102)가 (406에서) 인터 예측을 사용해 시간적으로 코딩될 때, CU(102)의 픽셀 값을 가장 잘 예측하는 참조 화상에서 샘플들을 가리키는 한 세트의 움직임 벡터(MV: motion vector)가 발견될 수 있다. 인터 예측은 슬라이스에서 픽셀 블록의 변위를 표시함으로써 슬라이스 간의 시간적 중복성(temporal redundancy)를 활용한다. 변위는 움직임 보상(motion compensation)이라 불리는 프로세스를 통해 이전 또는 다음 슬라이스에서의 픽셀 값에 따라 결정된다. 특정 참조 화상에 대한 픽셀 변위를 나타내는 움직임 벡터 및 연관된 참조 인덱스는, 원래 픽셀과 움직임 보상된 픽셀 간의 잔차와 함께 비트스트림으로 디코더에 제공될 수 있다. 디코더는 잔차 및 전송된 움직임 벡터 및 참조 인덱스를 사용해 재구성된 슬라이스에서 픽셀 블록을 재구성할 수 있다.
JVET에서, 움직임 벡터의 정확도는 1/16 픽셀로 저장될 수 있고, 움직임 벡터와 CU의 예측 움직임 벡터 간의 차이는 1/4 픽셀 해상도 또는 정수 픽셀 해상도로 코딩될 수 있다.
JVET에서, 향상된 시간적 움직임 벡터 예측(advanced temporal motion vector prediction, ATMVP), 공간-시간적 움직임 벡터 예측(spatial-temporal motion vector prediction, STMVP), 아핀 움직임 보상 예측, 패턴 정합 움직임 벡터 유도(pattern matched motion vector derivation, PMMVD) 및/또는 양방향 광학 흐름(bi-directional optical flow, BIO)과 같은 기술을 사용해 CU(102) 내에서 다수의 하위 CU에 대한 움직임 벡터를 찾을 수 있다.
인코더는 ATMVP를 사용하여 참조 화상에서 상응하는 블록을 가리키는 CU(102)에 대한 시간적 벡터를 찾을 수 있다. 시간적 벡터는 이전에 코딩된 인접 CU(102)에 대해 발견된 움직임 벡터 및 참조 화상에 기초하여 발견될 수 있다. 전체 CU(102)에 대한 시간적 벡터가 가리키는 참조 블록을 사용하여 CU(102) 내의 각 하위 CU에 대한 움직임 벡터를 찾을 수 있다.
STMVP는 시간적 벡터와 함께 이전에 인터 예측으로 코딩된 인접 블록에 대해 발견된 움직임 벡터를 스케일링하고 평균화함으로써 하위 CU에 대한 모션 벡터를 찾을 수 있다.
아핀 움직임 보상 예측은, 블록의 상단 모서리에 대해 발견된 2개의 제어 움직임 벡터에 기초하여 블록 내 각 하위 CU에 대한 모션 벡터 필드를 예측하는 데 사용할 수 있다. 예를 들어, 하위 CU에 대한 움직임 벡터는 CU(102) 내의 각 4x4 블록에 대해 발견된 상단 모서리 움직임 벡터에 기초하여 유도될 수 있다.
PMMVD는 양방향 매칭 또는 템플릿 매칭을 사용해 현재 CU(102)에 대한 초기 움직임 벡터를 찾을 수 있다. 양방향 매칭은 움직임의 궤적을 따라 2개의 상이한 참조 화상에서 현재 CU(102)와 참조 블록을 볼 수 있는 반면, 템플릿 매칭은 현재 CU(102)에서 상응하는 블록과 템플릿에 의해 식별된 참조 화상을 볼 수 있다. 그런 다음, CU(102)에 대해 발견된 초기 움직임 벡터는 각 하위 CU에 대해 개별적으로 조정(refined)될 수 있다.
BIO는 인터 예측이 이전과 이후의 참조 화상에 기초한 이중 예측으로 수행될 때 사용될 수 있고, 2개의 참조 화상 간의 차이의 구배에 기초하여 하위 CU에 대한 움직임 벡터를 찾을 수 있게 한다.
일부 상황에서는, 로컬 조명 보상(LIC)을 CU 레벨에서 사용하여, 현재 CU(102)에 인접한 샘플 및 후보 움직임 벡터에 의해 식별된 참조 블록에 인접한 상응하는 샘플에 기초하여 스케일링 인자 파라미터 및 오프셋 파라미터에 대한 값을 찾을 수 있다. JVET에서, LIC 파라미터는 CU 레벨로 변경되어 전송될 수 있다.
상기 방법 중 일부의 경우, CU의 하위 CU 각각에 대해 발견된 움직임 벡터는 CU 레벨로 디코더에 전송될 수 있다. PMMVD 및 BIO와 같은 다른 방법의 경우, 오베헤드를 줄이기 위해 움직임 정보는 비트스트림으로 전송되지 않으며, 디코더는 동일한 프로세스를 통해 움직임 벡터를 유도할 수 있다.
CU(102)에 대한 움직임 벡터가 발견된 후, 인코더는 이들 움직임 벡터를 사용해 예측 CU(402)를 생성할 수 있다. 일부 경우에, 개별 하위 CU에 대한 움직임 벡터가 발견된 경우, 이들 움직임 벡터를 하나 이상의 인접 하위 CU에 대해 이전에 발견된 움직임 벡터와 결합함으로써 예측 CU(402)를 생성할 때 중첩 블록 움직임 보상(Overlapped Block Motion Compensation, OBMC)이 사용될 수 있다.
양방향 예측이 사용되는 경우, JVET는 디코더 측의 움직임 벡터 조정(motion vector refinement, DMVR)을 사용하여 움직임 벡터를 찾을 수 있다. DMVR은, 양방향 템플릿 매칭 프로세스를 사용해 양방향 예측을 위해 찾은 2개의 움직임 벡터에 기초하여 움직임 벡터를 찾을 수 있게 한다. DMVR에서는, 2개의 움직임 벡터 각각을 이용해 생성된 예측 CU(402)의 가중 조합을 찾을 수 있고, 2개의 움직임 벡터는 조합된 예측 CU(402)를 가장 잘 가리키는 새로운 움직임 벡터와 대체됨으로써 조정될 수 있다. 2개의 조정된 움직임 벡터는 최종 예측 CU(402)를 생성하는 데 사용될 수 있다.
408에서, 예측 CU(402)가 전술한 바와 같이 (404에서의) 인트라 예측 또는 (406에서의) 인터 예측을 통해 발견되면, 인코더는 현재 CU(102)로부터 예측 CU(402)를 차감하여 잔차 CU(410)를 찾을 수 있다.
인코더는, 이산 코사인 블록 변환(DCT-변환)을 사용해 데이터를 변환 도메인으로 변환하는 것과 같이, (412에서) 하나 이상의 변환 연산을 사용해 잔차 CU(410)를, 변환 도메인에서 잔차 CU(410)를 표현하는 변환 계수(414)로 변환 할 수 있다. JVET는 HEVC보다 더 많은 유형의 변환 연산을 가능하게 하며, 이에는 DCT-II, DST-VII, DST-VII, DCT-VIII, DST-I 및 DCT-V 연산이 포함된다. 허용된 변환 연산은 하위 집합으로 그룹화될 수 있으며, 이들 하위 집합에 어떤 하위 집합과 어떤 특정 연산이 사용되었는지에 대한 표시가 인코더에 의해 전송될 수 있다. 일부 경우에, 특정 크기보다 큰 CU(102)에서의 고주파 변환 계수를 "0"으로 출력하기 위해 큰 블록 변환(large block-size transform)이 사용될 수 있는데, 그 결과 이들 CU (102)에 대해서는 저주파 변환 계수만이 유지된다.
일부 경우에, 순방향 코어 변환 후에 모드 의존성 비분리형 2차 변환(MDNSST)이 저주파 변환 계수(414)에 적용될 수 있다. MDNSST 연산은 회전 데이터에 기초한 하이퍼큐브-기븐스 변환(Hypercube-Givens Transform, HyGT)을 사용할 수 있다. 사용 시, 특정 MDNSST 연산을 식별하는 인덱스 값이 인코더에 의해 전송될 수 있다.
416에서, 인코더는 변환 계수(414)를 양자화된 변환 계수(416)로 양자화할 수 있다. 각 계수의 양자화는 계수 값을 양자화 파라미터(QP)로부터 도출된 양자화 단계로 나눔으로써 계산될 수 있다. 일부 구현예에서, Qstep은 2(QP-4)/6으로 정의된다. 고정밀 변환 계수(414)는 가능한 값의 수가 한정된 양자화된 변환 계수(416)로 변환 될 수 있기 때문에, 양자화는 데이터 압축을 도울 수 있다. 따라서, 변환 계수의 양자화는 변환 프로세스에 의해 생성되고 전송되는 비트의 양을 제한할 수 있다. 그러나, 양자화는 손실이 많은 연산이고 양자화에 의한 손실은 복구될 수 없는 반면, 양자화 프로세스는 재구성된 시퀀스의 품질과 시퀀스를 나타내는 데 필요한 정보의 양 간의 트레이드-오프(trade-off)를 제공한다. 예를 들어, 표현 및 전송에 더 많은 양의 데이터가 필요할 수 있지만, QP 값이 낮을수록 디코딩된 비디오의 품질은 더 나아질 수 있다. 대조적으로, QP 값이 높으면 재구성된 비디오 시퀀스의 품질이 낮아질 수 있지만, 필요한 데이터와 밴드폭은 더 낮다.
JVET는 분산 기반 적응 양자화 기술을 활용할 수 있는데, 이는 모든 CU(102)가 이들의 코딩 프로세스에 대해 (프레임의 모든 CU(102)의 코딩에서 동일한 프레임 QP를 사용하는 대신) 상이한 양자화 파라미터를 사용할 수 있게 한다. 분산 기반 적응 양자화 기술은 특정 블록의 양자화 파라미터를 적응적으로 낮추면서 다른 블록에서는 증가시킨다. CU(102)에 대한 특정 QP를 선택하기 위해, CU의 분산이 계산된다. 간단히 말해, CU의 분산이 프레임의 평균 분산보다 높은 경우, 프레임의 QP보다 높은 QP가 CU(102)에 대해 설정될 수 있다. CU(102)가 프레임의 평균 분산보다 더 낮은 분산을 나타내는 경우, 더 낮은 QP가 할당될 수 있다.
420에서, 인코더는 양자화된 변환 계수(418)를 엔트로피 코딩함으로써 최종 압축 비트(422)를 찾을 수 있다. 엔트로피 코딩은 전송할 정보의 통계적 중복을 제거하는 것을 목표로 한다. JVET에서, 컨텍스트 적응 바이너리 산술 코딩(Context Adaptive Binary Arithmetic Coding, CABAC)이 양자화된 변환 계수(418)를 코딩하는데 사용될 수 있는데, 이에는 통계적 중복을 제거하기 위한 확률 측정치가 사용된다. "0"이 아닌 양자화된 변환 계수(418)을 갖는 CU(102)의 경우, 양자화된 변환 계수(418)를 이진수(binary)로 변환할 수 있다. 그런 다음, 이진수로 표현된 각 비트("bin")를 컨텍스트 모델(context model)을 사용해 인코딩할 수 있다. CU(102)는 3개의 영역으로 나눌 수 있으며, 각 영역은 해당 영역 내의 픽셀에 사용하기 위한 고유한 컨텍스트 모델 세트를 갖는다.
bin을 인코딩하기 위한 다수의 스캔 패스를 수행할 수 있다. 첫 3개의 bin(bin0, bin1 및 bin2)을 인코딩하기 위한 패스 도중에, bin에 사용할 컨텍스트 모델을 나타내는 인덱스 값은 템플릿에 의해 식별된 최대 5개의 이전에 코딩된 인접 양자화된 변환 계수(418)에서 해당 bin 위치의 합을 발견함으로써 찾을 수 있다.
컨텍스트 모델은 bin의 값이 "0" 또는 "1"이 될 확률에 기초할 수 있다. 값이 코딩될 때, 컨텍스트 모델에서의 확률은 발견된 "0" 및 "1" 값의 실제 수에 기초하여 갱신될 수 있다. HEVC는 고정된 테이블을 사용하여 각각의 새로운 화상에 대한 컨텍스트 모델을 재-초기화한 반면, JVET에서는, 이전에 코딩된 인터 예측 화상에 대해 개발된 컨텍스트 모델에 기초하여 새로운 인터-예측 화상에 대한 컨텍스트 모델을 초기화할 수 있다.
인코더는 잔차 CU(410)의 엔트로피 인코딩된 비트(422), 선택된 인트라 예측 모드 또는 움직임 벡터와 같은 예측 정보, QTBT 구조에 따라 CU(102)가 CTU(100)로부터 어떻게 분할되었는지에 대한 표시자, 및/또는 인코딩된 비디오에 대한 다른 정보를 포함하는 비트스트림을 생성할 수 있다. 비트스트림은 후술하는 바와 같은 디코더에 의해 디코딩될 수 있다.
최종 압축 비트(422)를 찾기 위해 양자화된 변환 계수(418)를 사용하는 것에 추가하여, 인코더는 디코더가 재구성된 CU(434)를 생성하기 위해 사용하게 될 동일한 디코딩 프로세스 이후에 재구성된 CU(434)를 생성하기 위해 양자화된 변환 계수(418)를 사용할 수도 있다. 따라서, 변환 계수가 인코더에 의해 계산되고 양자화되면, 양자화된 변환 계수(418)는 인코더 내의 디코딩 루프로 전송될 수 있다. CU의 변환 계수가 양자화된 후, 디코딩 루프는 디코딩 프로세스에서 디코더가 생성하는 것과 동일한 재구성된 CU(434)가 인코더에 의해 생성될 수 있게 한다. 따라서, 인코더는 새로운 CU(102)에 대한 인트라 예측 또는 인터 예측을 수행 할 때 디코더가 인접 CU(102) 또는 참조 화상에 사용하게 될 동일한 재구성된 CU(434)를 사용할 수 있다. 재구성된 CU(102), 재구성된 슬라이스, 또는 재구성된 완전한 프레임은 추가의 예측 단계에 대한 참조의 역할을 할 수 있다.
재구성된 이미지에 대한 픽셀 값을 얻기 위한 인코더의 디코딩 루프에서(디코더에서의 동일한 작업에 대해서는 아래 참조), 역양자화 프로세스가 수행될 수 있다. 프레임을 역양자화하기 위해, 예를 들어, 프레임의 각 픽셀의 양자화된 값에 양자화 단계(예를 들어, 전술한 Qstep)를 곱하여 재구성된 역양자화된 변환 계수(426)를 얻는다. 예를 들어, 도 4에 도시된 인코더 내의 디코딩 프로세스에서, 잔차 CU(410)의 양자화된 변환 계수(418)를 (424에서) 역양자화하여 역양자화된 변환 계수(426)를 찾을 수 있다. 인코딩 중에 MDNSST 연산이 수행되는 경우, 연산은 역양자화 후에 되돌릴 수 있다.
428에서, 역양자화된 변환 계수(426)는, 예컨대 DCT를 값에 적용하여 재구성된 이미지를 획득함으로써 역변환되어 재구성된 잔차 CU(430)를 찾을 수 있다. 432에서, 재구성된 CU(434)를 찾기 위해, 재구성된 잔차 CU(430)가 (404에서의) 인트라 예측 또는 (406에서의) 인터 예측을 통해 발견된 상응하는 예측 CU(402)에 추가될 수 있다.
436에서, 하나 이상의 필터가 (인코더에서, 또는 후술하는 바와 같이 디코더에서의) 디코딩 프로세스 중에 재구성된 데이터에 화상 레벨 또는 CU 레벨로 적용될 수 있다. 예를 들어, 인코더는 디블로킹 필터, 샘플 적응 오프셋(SAO) 필터 및/또는 적응 루프 필터(ALF)를 적용할 수 있다. 인코더의 디코딩 프로세스는 재구성된 이미지에서 잠재적인 아티팩트(artifact)를 처리할 수 있는 최적의 필터 파라미터를 추정하고 이를 디코더에 전송하는 필터를 구현할 수 있다. 이러한 개선은 재구성된 비디오의 객관적 및 주관적 품질을 향상시킨다. 디블로킹 필터링에서는, 하위 CU 경계 근처에 있는 픽셀은 수정될 수 있는 반면, SAO에서는, CTU(100) 내의 픽셀이 에지 오프셋 또는 밴드 오프셋 분류를 사용해 수정될 수 있다. JVET의 ALF는 각 2x2 블록에 대해 원형으로 대칭인 필터를 사용할 수 있다. 각 2x2 블록에 사용되는 필터의 크기 및 식별자에 대한 표시가 전송될 수 있다.
재구성된 화상이 참조 화상인 경우, 이들은 미래 CU(102)에 대한 (406에서의) 인터 예측을 위해 참조 버퍼(438)에 저장될 수 있다.
상기 단계에서, JVET는 콘텐츠 적응 클리핑 연산을 사용하여 색상 값을 하향 및 상향 클리핑 경계 사이에 맞도록 조정할 수 있게 한다. 클리핑 경계는 각각의 슬라이스에 대해 변경될 수 있고, 경계를 식별하는 파라미터는 비트스트림으로 전송될 수 있다.
도 6은 JVET에서의 CU 코딩에 대한 단순화된 블록도를 도시한다. JVET 디코더는 인코딩된 CU(102)에 관한 정보가 담긴 비트스트림을 수신할 수 있다. 비트스트림은 QTBT 구조에 따라 화상의 CU(102)가 어떻게 CTU(100)로부터 분할되었는지, 인트라 예측 모드 또는 움직임 벡터와 같은 CU(102)에 대한 예측 정보, 및 엔트로피 인코딩된 잔차 CU를 나타내는 비트(602)를 나타낼 수 있다.
604에서, 디코더는 인코더에 의해 비트스트림으로 전송된 CABAC 컨텍스트 모델을 사용해 엔트로피 인코딩된 비트(602)를 디코딩할 수 있다. 디코더는 인코더에 의해 전송된 파라미터를 사용해 컨텍스트 모델의 확률을 이들이 인코딩 중에 갱신된 것과 동일한 방식으로 갱신할 수 있다.
양자화된 변환 계수(606)를 찾기 위해 604에서의 엔트로피 인코딩을 되돌린 다음, 디코더는 608에서 이들을 역양자화하여 역양자화된 변환 계수(610)를 찾을 수 있다. 인코딩 중에 MDNSST 연산이 수행되는 경우, 연산은 역양자화 후에 디코더에 의해 되돌릴 수 있다.
612에서, 역양자화된 변환 계수(610)는 재구성된 잔차 CU(614)를 찾기 위해 역변환될 수 있다. 616에서, 재구성된 CU(618)를 찾기 위해, 재구성된 잔차 CU(614)가 (622에서의) 인트라 예측 또는 (624에서의) 인터 예측을 통해 발견된 상응하는 예측 CU(626)에 추가될 수 있다.
620에서, 하나 이상의 필터가 재구성된 데이터에 화상 레벨 또는 CU 레벨로 적용될 수 있다. 예를 들어, 디코더는 디블로킹 필터, 샘플 적응 오프셋(SAO) 필터 및/또는 적응 루프 필터(ALF)를 적용할 수 있다. 전술한 바와 같이, 인코더의 디코딩 루프 내에 위치한 인-루프 필터는 프레임의 객관적 및 주관적 품질을 향상시키기 위해 최적의 필터 파라미터를 추정하는 데 사용될 수 있다. 이들 파라미터는 디코더로 전송되어, 620에서 재구성된 프레임을 필터링하여 인코더에서 필터링된 재구성된 프레임과 일치시킨다.
재구성된 CU(618)을 찾아 전송된 필터를 적용함으로써 재구성된 화상이 생성된 후, 디코더는 재구성된 화상을 출력 비디오(628)로서 출력할 수 있다. 재구성된 화상이 참조 화상으로 사용될 경우, 이들은 미래 CU(102)에 대한 (624에서의) 인터 예측을 위해 참조 버퍼(630)에 저장될 수 있다.
프레임 레이트 상향 변환(FRUC)은 인터 코딩 도구이다. CU가 FRUC 모드를 사용해 코딩될 때, 이의 움직임 벡터는 디코더 측에서 유도된다. 유도 프로세스를 나타내기 위해 비트스트림에 시그널링(signaling)이 포함된다. 유도된 움직임 벡터(MV)가 후보 MV 목록 내의 MV로 제한되는 HEVC 병합 모드와 달리, FRUC는 명시적 MV 시그널링을 회피함으로써 코딩 효율을 개선한다. 구체적으로, FRUC는 패턴 매칭 움직임 벡터 유도 방법을 사용하는데, 이는 검색 범위 내에 있는 MV 후보의 매칭 비용에 기초하여 MV를 결정할 수 있다. 일부 구현예에서, 매칭 패턴은 FRUC 모드 및 미리 결정될 수 있는 검색 패턴에 기초하여 구체화될 수 있다. 따라서, 디코더는 동일한 프로세스를 따라 FRUC MV를 유도할 수 있다.
일부 구현예에서, FRUC에 대해 가능한 3가지 모드가 있다: 향상된 움직임 벡터 예측자(advanced motion vector predictor, AMVP) 템플릿 매칭; 병합 템플릿 매칭(Merge Template Matching); 및 병합 양방향 매칭(Merge Bilateral Matching). 템플릿 매칭 모드는 하나의 옵션으로서 MV 또는 CU를 결정하기 위해 AMVP 모드에 사용되거나, MV 또는 CU를 결정하기 위해 병합 모드에 사용될 수 있다. 템플릿 매칭의 경우, 템플릿이 대표 CU로서 사용될 수 있고, 템플릿은 코딩 프레임에서 인접 블록의 재구성된 픽셀을 사용해 형성될 수 있다. 일부 구현예에서, 인코더와 디코더 모두는 동일한 검색 패턴을 사용하여 참조 프레임의 검색 범위 내에서 후보 템플릿을 검색한다. 그런 다음, 가장 잘 매칭된 후보 템플릿의 오프셋을 MV로서 사용할 수 있다.
양방향 매칭은 또 다른 FRUC 모드로서, CU의 MV를 결정하기 위한 병합 모드에 사용할 수 있다. 템플릿 매칭에서와 같이 MV를 유도하기 위해 코딩 프레임으로부터 재구성된 픽셀에 의존하는 대신, 양방향 매칭은 2개의 참조 프레임으로부터 재구성된 픽셀을 사용해 MV를 결정할 수 있다. 양방향 매칭의 일부 구현예에서는, 연속적인 움직임 궤적이 가정될 수 있으며, (궤적이 제약된 상태에서) 가장 잘 매칭된 블록 쌍을 가리키는 2개의 MV가 병합된 MV로서 사용될 수 있다.
도 7은 코딩 유닛(700) 및 가변 높이/폭을 갖는 연관된 상단 템플릿(702) 및 좌측 템플릿(704)의 구현예를 도시한다. 템플릿 구성은 템플릿 매칭을 사용하는 코딩 성능에 있어서 중요한 역할을 한다. 도 7은 일부 인코딩 구현예에 사용된 W(706) x H(708) 크기의 CU(700)에 대한 템플릿 구성을 도시한다. 일부 구현예에서, 템플릿은 2개의 부분, 즉 상단 템플릿(702)과 좌측 템플릿(704)을 포함할 수 있다. 상단 템플릿(702)은 코딩 블록 또는 코딩 유닛(700)의 상단 행에 인접한 인접 블록으로부터 재구성된 픽셀로 이루어진 4개의 행을 사용해 형성될 수 있다. 도 7에 도시된 구현예에서, 상단 템플릿(702)은 코딩 블록/코딩 유닛(CU)과 동일한 폭(706)을 가질 수 있다. 또한, 도 7에 도시 된 구현예에서, 좌측 템플릿(704)은 코딩 블록(CU)의 좌측 열에 인접한 인접 블록으로부터 재구성된 픽셀로 이루어진 4개의 열을 사용해 형성될 수 있으므로, 좌측 템플릿(704)은 코딩 블록(CU)과 동일한 높이를 가질 수 있다. 도 7은 4개의 행을 갖는 상단 템플릿(702) 및 4개의 열을 갖는 좌측 템플릿(704)을 도시하고 있지만, 대안적인 구현예에서는, 상단 및 좌측 템플릿(702 및 704)와 관련하여 임의의 알려진 통상적인 및/또는 바람직한 수의 행과 열이 사용될 수 있다.
도 7에 도시된 구현예에서, 템플릿 구성으로서 사용된 CU와 관련된 템플릿 구성이 템플릿 매칭에서 대표 CU로서 사용된다. 일부 구현예에서, 템플릿은 높은 예측 정확도를 달성하기위해 CU와 유사한 특성을 가질 수 있다. 템플릿 크기가 지나치게 작은 구현예에서, 템플릿은 CU에 관한 중요한 세부 사항을 제공하지 못할 수 있다. 반대로, 템플릿 크기가 크면 CU와 무관한 추가 정보가 포함될 수 있고, 이는 불필요한 시스템 부담을 유발하고/하거나 추가/불필요한 정보의 "노이즈"로 인해 좋지 않은 결과를 유발할 수 있다. 이를 감안할 때, JEM7에서 사용된 것과 같은, 고정된 템플릿 크기(상단 템플릿(702)의 경우 4행, 좌측 템플릿(704)의 경우 4열)가 상관성 측면에서 준최적이다. 따라서, CU의 특성과 일치하는 가변 템플릿 크기를 활용할 수 있는 시스템 및 방법이 필요하다. 일부 구현예에서, 템플릿(상단 템플릿(702) 및/또는 좌측 템플릿(704)) 크기는 완전히 신축적일 수 있다. 그러나, 완전한 크기 신축성에는 상당한 오버헤드가 필요할 수 있고, 이는 시스템 운영에 너무 많은 비용이 소요될 수 있는 것으로 이해된다. 일부 구현예에서, 일부 코딩 정보가 템플릿 크기를 결정하는 데 사용될 수 있다. 그러나, 일부 구현예에서는, 크기 결정 단계를 관리하고/하거나 이의 복잡도를 감소시킴으로써 시스템 부담을 최소화할 수 있다. 일부 구현예에서, 템플릿 크기는 코딩 블록(CU) 크기에 적어도 부분적으로 기초한다. 다시 말해, 코딩 블록(CU) 크기가 작을 때, 템플릿 크기(702 및 704)도 작아짐으로써 오류가 있거나 불필요한 정보를 포함할 가능성을 감소시킬 수 있다. 반대로, 일부 구현예에서, 코딩 블록(CU) 크기가 클 때 템플릿 크기(702 및 704)가 커짐으로써 템플릿이 로컬 최소값에 묶이는 것을 회피할 수 있다.
CU가 W x H의 크기를 갖되, W는 코딩 블록의 폭(706)이고 H가 코딩 블록의 높이(708)인 시스템 및 방법의 일부 구현예에서, 상단 템플릿(702) 크기는 W x X로서 정의될 수 있고, 좌측 템플릿(704)의 크기는 Y x H로서 정의될 수 있다. 그러나, 대안적인 구현예는 아래의 방정식에 의해 나타낸 바와 같이 다수의 템플릿 크기를 포함하고 뒷받침할 수 있으며, 여기서 X-상단 템플릿의 높이 및 Y-좌측 템플릿의 폭은 다음과 같이 계산된다:
H < VerThreshold(1)일 때, X = VerSize1
H < VerThreshold(2)일 때, X = VerSize2
H < VerThreshold(3)일 때, X = VerSize3
. . .
H >= VerThreshold(N-1)일 때, X = VerSizeN
W < HorThreshold(1)일 때 Y = HorSize1
W < HorThreshold(2)일 때 Y = HorSize2
W < HorThreshold(3)일 때 Y = HorSize3
. . .
W >= HorThreshold(N-1)일 때 Y = HorSizeN
(여기서 VerSize 및 VerThreshold는 행과 열 각각에 대한 템플릿 크기 파라미터이고; VerThreshold 및 HorThreshold는 행과 열 각각에 대한 코딩 블록 크기 파라미터임).
일부 구현예에서, HorSize1 및 VerSize1은 1로 설정될 수 있고, HorSize2 및 VerSize2는 2로 설정될 수 있으며, HorSize3 및 VerSize3은 3으로 설정될 수 있다. 이러한 구성에서, HorThreshold(1) 및 VerThreshold(1)은 8로 설정될 수 있고, HorThreshold(2) 및 VerThreshold(2)는 16으로 설정될 수 있으며, HorThreshold(3) 및 VerThreshold(3)은 32로 설정될 수 있다. 그러나, 대안적인 구현예에서, 32보다 크거나 작은 임의의 알려진 통상적인 및/또는 원하는 값이 사용될 수 있다.
도 8~9는 코딩 유닛(700) 및 이와 연관된 상단-좌측 템플릿(802)의 대안적인 구현예를 도시한다. 도 8은 코딩 블록의 상단-좌측 인접 블록으로부터의 재구성된 픽셀을 포함하는 템플릿 구성의 예를 도시하며, 여기서 T는 템플릿의 두께(804)이다. 도 8에 도시된 구현예에서, 템플릿의 폭은 W + T이고, 템플릿의 높이는 H + T이며, 템플릿 크기는 W, H 및 T의 값에 따라 신축적으로 적용될 수도 있으며, 편리한대로 및/또는 원하는대로 제한될 수 있다.
도 9에 도시된 바와 같은 비제한적인 예로서, 템플릿 크기 신축성은 폭 및 높이에 대해 상이한 두께 파라미터를 사용하는 것에 의해 영향을 받을 수 있으며, 여기서 파라미터는 코딩 블록 크기에 적어도 부분적으로 기초하여 결정될 수 있다. 도 9는 이러한 템플릿 크기의 신축성을 가능하게 하는 템플릿의 구현예를 도시한다. 도 9에 도시된 구현예에서, T_W는 두께 파라미터(902)를 나타내며, T_H는 템플릿(802)의 높이 파라미터(904)를 나타낸다. 따라서, 파라미터가 있는 구조는 다음과 같이 상이한 코딩 블록 크기에 대해 T_W 및 T_H에 의해 정의될 수 있다:
H < VerThreshold(1)일 때, T_H = VerSize1
H < VerThreshold(2)일 때, T_H = VerSize2
H < VerThreshold(3)일 때, T_H = VerSize3
. . .
H >= VerThreshold(N-1)일 때, T_H = VerSizeN
W < HorThreshold(1)일 때 T_W = HorSize1
W < HorThreshold(2)일 때 T_W = HorSize2
W < HorThreshold(3)일 때 T_W = HorSize3
. . .
W >= HorThreshold(N-1)일 때 T_W = HorSizeN
(여기서 VerSize 및 VerThreshold는 행과 열 각각에 대한 템플릿 크기 파라미터이고; VerThreshold 및 HorThreshold는 행과 열 각각에 대한 코딩 블록 크기 파라미터임).
비제한적 예로서, 도 9에 도시된 시스템 및 방법이 구현된 하나의 가능한 구성에서, HorSize1 및 VerSize1은 1로 설정될 수 있고, HorSize2 및 VerSize2는 2로 설정될 수 있으며, HorSize3 및 VerSize3은 3으로 설정될 수 있다. 이러한 구성에서, HorThreshold(1) 및 VerThreshold(1)은 8로 설정될 수 있고, HorThreshold(2) 및 VerThreshold(2)는 16으로 설정될 수 있으며, HorThreshold(3) 및 VerThreshold(3)은 32로 설정될 수 있다. 그러나, 대안적인 구현예에서, 32보다 크거나 작은 임의의 알려진 통상적인 및/또는 원하는 값이 사용될 수 있다.
일부 구현예에서, 템플릿(702, 704 및 802)의 최소 및 최대 크기는 코딩 블록(CU)의 크기, 구현 하드웨어와 연관된 제약 사항, 가용한 밴드폭과 연관된 제약 사항 또는 전송 제약 사항 및/또는 임의의 알려진 통상적인 및/또는 원하는 조건에 적어도 부분적으로 기초할 수 있다. 비제한적 예로서, 일부 구현예에서, 템플릿(702, 704 및 802)의 최대 템플릿 크기는 블록 크기의 1/4로 고정될 수 있다. 그러나, 대안적인 구현예에서, 임의의 알려진 통상적인 및/또는 원하는 값이 사용될 수 있다.
도 10은 코딩(1000)에 있어서 가변 템플릿 크기를 이용하는 방법의 구현예를 도시한다. 도 10에 도시된 구현예에서, 코딩 유닛 정보는 단계(1002)에서 획득된다. 그런 다음, 단계(1004)에서, 사용될 템플릿이 좌측 템플릿(1006), 상단 템플릿(1008) 및/또는 상단-좌측 템플릿(1010) 중 하나인지의 여부가 결정된다. 일부 구현예에서, 사용할 템플릿(1006, 1008 및 1010)에 대한 결정은 현재 코딩 블록(CU)과 상단 템플릿(1006), 좌측 템플릿(1008) 및/또는 상단-좌측 템플릿(1010) 간의 최적 매칭 기준에 기초할 수 있다. 좌측 템플릿이 사용될 경우, 단계(1012)에서 템플릿의 폭을 결정할 수 있고, 블록은 FRUC 단계(1014)로 진행할 수 있다. 상단 템플릿이 사용될 경우, 단계(1016)에서 템플릿의 높이를 결정할 수 있고, 블록은 FRUC 단계(1014)로 진행할 수 있다. 상단-좌측 템플릿이 사용되도록 결정되면, 단계(1018)에서 상단-좌측 템플릿이 균일한 깊이(T)를 갖는지 여부를 결정할 수 있다. 사용될 상단-좌측 템플릿이 균일한 깊이를 갖는 경우, 템플릿을 단계(1020)에서 정의할 수 있으며, 블록은 FRUC 단계(1014)로 진행할 수 있다. 단계(1018)에서, 상단-좌측 템플릿이 균일한 깊이를 갖지 않는 것으로 결정되면, 템플릿 치수(T_H 및 T_W)를 단계(1022)에서 정의할 수 있고, 블록은 FRUC 단계(1014)로 진행할 수 있다.
구현예를 실시하는 데 필요한 명령 시퀀스의 실행은 도 11에 도시된 바와 같은 컴퓨터 시스템(1100)에 의해 수행될 수 있다. 일 구현예에서, 명령 시퀀스의 실행은 하나의 컴퓨터 시스템(1100)에 의해 수행된다. 다른 구현예에 따르면, 통신 링크(1115)에 의해 결합된 둘 이상의 컴퓨터 시스템(1100)이 서로 협력하여 명령 시퀀스를 수행할 수 있다. 단 하나의 컴퓨터 시스템(1100)에 대한 설명이 아래에 제시되겠지만, 임의의 수의 컴퓨터 시스템(1100)이 구현예를 실시하는 데 사용될 수 있는 것으로 이해해야 한다.
이제부터, 컴퓨터 시스템(1100)의 기능적 구성 요소들의 블록도인 도 11을 참조하여, 일 구현예에 따른 컴퓨터 시스템(1100)이 기술될 것이다. 본원에서 사용되는 바와 같이, 컴퓨터 시스템(1100)이란 용어는 하나 이상의 프로그램을 저장하고 독립적으로 실행할 수 있는 임의의 컴퓨팅 장치를 기술하도록 광범위하게 사용된다.
각각의 컴퓨터 시스템(1100)은 버스(1106)에 결합된 통신 인터페이스(1114)를 포함할 수 있다. 통신 인터페이스(1114)는 컴퓨터 시스템들(1100) 간의 양방향 통신을 제공한다. 각 컴퓨터 시스템(1100)의 통신 인터페이스(1114)는 전기적, 전자기적 또는 광학적 신호를 송신하고 수신하며, 이에는 다양한 유형의 신호 정보, 예를 들어, 명령, 메시지 및 데이터를 나타내는 데이터 스트림이 포함된다. 통신 링크(1115)는 하나의 컴퓨터 시스템(1100)을 또 다른 컴퓨터 시스템(1100)과 연결시킨다. 예를 들어, 통신 링크(1115)는 LAN일 수 있고, 이 경우의 통신 인터페이스(1114)는 LAN 카드일 수 있고, 또는 통신 링크(1115)는 PSTN일 수 있고, 이 경우의 통신 인터페이스(1114)는 종합 정보 통신망(integrated services digital network, ISDN) 카드 또는 모뎀일 수 있고, 또는 통신 링크(1115)는 인터넷일 수 있고, 이 경우의 통신 인터페이스(1114)는 다이얼-업 모뎀, 케이블 모뎀 또는 무선 모뎀일 수 있다.
컴퓨터 시스템(1100)은 프로그램(애플리케이션, 코드)을 포함하여 메시지, 데이터 및 명령을 각각의 통신 링크(1115) 및 통신 인터페이스(1114)를 통해 송신하고 수신할 수 있다. 수신된 프로그램 코드는 수신되는 즉시 각각의 프로세서(들)(1107)에 의해 실행되고/되거나 나중에 실행하기 위해 저장 장치(1110) 또는 다른 연관 비휘발성 매체에 저장될 수 있다.
구현예에서, 컴퓨터 시스템(1100)은 데이터 저장 시스템(1131), 예를 들어, 컴퓨터 시스템(1100)에 의해 쉽게 접근할 수 있는 데이터베이스(1132)를 포함하는 데이터 저장 시스템(1131)과 함께 작동한다. 컴퓨터 시스템(1100)은 데이터 인터페이스(1133)를 통해 데이터 저장 시스템(1131)과 통신한다. 버스(1106)에 결합된 데이터 인터페이스(1133)은 전기적, 전자기적 또는 광학적 신호를 송신하고 수신하며, 이에는 다양한 유형의 신호 정보, 예를 들어, 명령, 메시지 및 데이터를 나타내는 데이터 스트림이 포함된다. 구현예에서, 데이터 인터페이스(1133)의 기능은 통신 인터페이스(1114)에 의해 수행될 수 있다.
컴퓨터 시스템(1100)은 정보로 통칭되는 명령, 메시지 및 데이터 통신을 위한 버스(1106) 또는 다른 통신 메커니즘; 및 버스(1106)에 결합된, 정보를 처리하기 위한 하나 이상의 프로세서(1107)를 포함한다. 컴퓨터 시스템(1100)은 또한, 버스(1106)에 결합되어 동적 데이터 및 프로세서(들)(1107)에 의해 실행될 명령을 저장하기 위한 주 메모리(1108), 예컨대 랜덤 액세스 메모리(RAM) 또는 기타 동적 저장 장치를 포함한다. 주 메모리(1108)는 프로세서(들)(1107)가 명령을 수행하는 동안 임시 데이터, 즉 변수 또는 다른 중간 정보를 저장하는 데 사용될 수도 있다.
컴퓨터 시스템(1100)은, 버스(1106)에 결합되어 정적 데이터 및 프로세서(들)(1107)를 위한 명령을 저장하기 위한 읽기 전용 메모리(ROM)(1109) 또는 기타 정적 저장 장치를 추가로 포함할 수 있다. 또한, 자기 디스크 또는 광학 디스크와 같은 저장 장치(1110)가 제공되어, 데이터 및 프로세서(들)(1107)를 위한 명령을 저장하기 위해 버스(1106)에 결합될 수 있다.
컴퓨터 시스템(1100)은 사용자에게 정보를 디스플레이하기 위해 버스(1106)를 통해 음극선관(CRT) 또는 액정 디스플레이(LCD) 모니터와 같은 그러나 이들로 한정되지 않는 디스플레이 장치(1111)에 결합될 수 있다. 영숫자 및 기타 키와 같은 입력 장치(1112)가 정보 및 명령 선택을 프로세서(들)(1107)에 전달하기 위해 버스(1106)에 결합된다.
일 구현예에 따르면, 개별 컴퓨터 시스템(1100)은 주 메모리(1108)에 포함된 하나 이상의 명령의 하나 이상의 시퀀스를 실행하는 이들 각각의 프로세서(들)(1107)에 의해 특정 동작을 수행한다. 이러한 명령은 ROM(1109) 또는 저장 장치(1110)와 같은 다른 컴퓨터-가용 매체로부터 주 메모리(1108)로 판독될 수 있다. 주 메모리(1108)에 포함된 명령 시퀀스의 실행은 프로세서(들)(1107)로 하여금 본원에 기술된 프로세스를 수행하게 한다. 대안적인 구현예에서, 하드-와이어드 회로(hard-wired circuitry)가 소프트웨어 명령 대신에 또는 이와 조합하여 사용될 수 있다. 따라서, 구현예는 하드웨어 회로 및/또는 소프트웨어의 임의의 특정 조합으로 한정되지는 않는다.
본원에서 사용된 바와 같이, 용어 "컴퓨터 가용 매체"는 정보를 제공하거나 프로세서(들)(1107)에 의해 사용 가능한 임의의 매체를 지칭한다. 이러한 매체는 많은 형태를 취할 수 있으며, 이에는 비휘발성, 휘발성 및 전송 매체를 포함하지만 이에 한정되지는 않는다. 비휘발성 매체, 즉 전원이 없을 때 정보를 유지할 수 있는 매체는 ROM(1109), CD ROM, 자기 테이프 및 자기 디스크를 포함한다. 휘발성 매체, 즉 전원이 없을 때 정보를 유지할 수 없는 매체는 주 메모리(1108)를 포함한다. 전송 매체는 버스(1106)를 구성하는 와이어를 포함하여 동축 케이블, 구리 와이어 및 광섬유를 포함한다. 전송 매체는 정보 신호를 전송하기 위해 주파수, 진폭 또는 위상에 있어서의 변조가 가능한 반송파, 즉 전자기파의 형태를 취할 수도 있다. 또한, 전송 매체는 전파 통신 및 적외선 데이터 통신 중에 생성되는 것들과 같은 음향파 또는 광파의 형태를 취할 수 있다.
명세서의 전술한 내용 중에서, 구현예는 이의 특정 요소를 참조하여 기술되었다. 그러나, 구현예의 더 넓은 사상 및 범주를 벗어나지 않고도 구현예에 대한 다양한 수정 및 변경이 이루어질 수 있음이 명백할 것이다. 예를 들어, 독자는 본원에 기술된 프로세스 흐름도에 나타낸 프로세스 동작의 특정 순서 및 조합이 단지 예시적이며, 상이한 또는 추가의 프로세스 동작을 사용하거나 프로세스 동작의 상이한 조합 또는 순서를 사용해 구현예를 제정할 수 있다는 것을 이해할 것이다. 따라서, 명세서 및 도면은 제한적인 의미가 아니라 예시적인 의미로 간주되어야 할 것이다.
본 발명은 다양한 컴퓨터 시스템으로 구현될 수 있다는 점에도 유의해야 한다. 본원에 기술된 다양한 기술은 하드웨어나 소프트웨어, 또는 이 둘의 조합으로 구현될 수 있다. 바람직하게는, 기술은 각각 프로세서, 프로세서에 의해 판독 가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 요소 포함), 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함하는 프로그램 가능한 컴퓨터에서 실행되는 컴퓨터 프로그램으로 구현된다. 프로그램 코드는, 전술한 기능을 수행하고 출력 정보를 생성하기 위해 입력 장치를 사용하여 입력한 데이터에 적용된다. 출력 정보는 하나 이상의 출력 장치에 적용된다. 각각의 프로그램은 컴퓨터 시스템과 통신하기 위해 고급 절차 언어 또는 객체 지향 프로그래밍 언어로 구현되는 것이 바람직하다. 그러나, 프로그램은 필요에 따라 어셈블리어 또는 기계어로 구현될 수 있다. 임의의 경우에, 언어는 컴파일러형 언어 또는 해석형 언어일 수 있다. 이러한 각각의 컴퓨터 프로그램은 바람직하게는 전술한 절차를 수행하기 위해 컴퓨터가 저장 매체 또는 장치를 판독할 때, 컴퓨터를 구성하고 작동시키기 위해 범용 또는 특수 목적의 프로그램 가능한 컴퓨터에 의해 판독 가능한 저장 매체 또는 장치(예: ROM 또는 자기 디스크)에 저장된다. 상기 시스템은 컴퓨터 프로그램으로 구성된 컴퓨터-판독 가능 저장 매체로서 구현되는 것으로 간주될 수도 있으며, 이렇게 구성된 저장 매체는 컴퓨터로 하여금 특정한 사전 정의된 방식으로 작동하게 한다. 또한, 예시적인 컴퓨팅 애플리케이션의 저장 요소는 다양한 조합 및 구성으로 데이터를 저장할 수 있는 관계형 또는 순차형(플랫 파일) 컴퓨팅 데이터베이스일 수 있다.
도 12는 본원에서 기술된 시스템 및 장치의 특징을 통합할 수 있는 소스 장치(1212) 및 목적지 장치(1210)의 개략도(high level view)이다. 도 12에 도시된 바와 같이, 예시적인 비디오 코딩 시스템(1210)은 소스 장치(1212) 및 목적지 장치(1214)를 포함하며, 본 예에서는 소스 장치(1212)가 인코딩된 비디오 데이터를 생성한다. 따라서, 소스 장치(1212)는 비디오 인코딩 장치로서 지칭될 수 있다. 목적지 장치(1214)는 소스 장치(1212)에 의해 생성된 인코딩된 비디오 데이터를 디코딩할 수 있다. 따라서, 목적지 장치(1214)는 비디오 디코딩 장치로서 지칭될 수 있다. 소스 장치(1212) 및 목적지 장치(1214)는 비디오 코딩 장치의 예일 수 있다.
목적지 장치(1214)는 채널(1216)을 통해 소스 장치(1212)로부터 인코딩된 비디오 데이터를 수신할 수 있다. 채널(1216)은 인코딩된 비디오 데이터를 소스 장치(1212)로부터 목적지 장치(1214)로 이동시킬 수 있는 유형의 매체 또는 장치를 포함할 수 있다. 일 예에서, 채널(1216)은 소스 장치(1212)가 인코딩된 비디오 데이터를 목적지 장치(1214)에 실시간으로 직접 전송할 수 있게 하는 통신 매체를 포함할 수 있다.
본 예에서, 소스 장치(1212)는 인코딩된 비디오 데이터를 통신 표준, 예컨대 무선 통신 프로토콜에 따라 변조할 수 있고, 변조된 비디오 데이터를 목적지 장치(1214)에 전송할 수 있다. 통신 매체는 무선 또는 유선 통신 매체, 예컨대 전파(RF) 스펙트럼 또는 하나 이상의 물리적 전송 라인을 포함할 수 있다. 통신 매체는 근거리 통신망(local area network), 광역망(wide-area network), 또는 인터넷과 같은 글로벌 네트워크(global network) 등과 같은 패킷-기반 네트워크의 일부를 형성할 수 있다. 통신 매체는 소스 장치(1212)로부터 목적지 장치(1214)로의 통신을 용이하게 하는 라우터, 스위치, 기지국 또는 다른 장비를 포함할 수 있다. 또 다른 예에서, 채널(1216)은 소스 장치(1212)에 의해 생성된 인코딩된 비디오 데이터를 저장하는 저장 매체에 상응할 수 있다.
도 12의 예에서, 소스 장치(1212)는 비디오 소스(1218), 비디오 인코더(1220) 및 출력 인터페이스(1222)를 포함한다. 일부 경우에, 출력 인터페이스(1228)는 변조기/복조기(모뎀) 및/또는 송신기를 포함할 수 있다. 소스 장치(1212)에서, 비디오 소스(1218)는 비디오 캡처 장치, 예를 들어, 비디오 카메라와 같은 소스, 이전에 캡처된 비디오 데이터를 포함하는 비디오 아카이브, 비디오 콘텐츠 제공자로부터 비디오 데이터를 수신하기위한 비디오 피드 인터페이스 및/또는 비디오 데이터를 생성하기 위한 컴퓨터 그래픽 시스템, 또는 이러한 소스의 조합을 포함할 수 있다.
비디오 인코더(1220)는 캡처된, 미리 캡처된, 또는 컴퓨터로 생성한 비디오 데이터를 인코딩할 수 있다. 입력 이미지는 비디오 인코더(1220)에 의해 수신되어 입력 프레임 메모리(1221)에 저장될 수 있다. 범용 프로세서(1223)는 여기서 정보를 로딩하여 인코딩을 수행할 수 있다. 범용 프로세서를 구동시키기 위한 프로그램은 저장 장치, 예컨대 도 12에 도시된 예시적인 메모리 모듈로부터 로딩될 수 있다. 범용 프로세서는 인코딩을 수행하기 위해 처리 메모리(1222)를 사용할 수 있고, 범용 프로세서에 의한 인코딩 정보의 출력은 출력 버퍼(1226)와 같은 버퍼에 저장될 수 있다.
비디오 인코더(1220)는 적어도 하나의 기본 계층(base layer) 및 적어도 하나의 향상 계층(enhancement layer)을 정의하는 스케일러블 비디오 코딩 방식(scalable video coding scheme)으로 비디오 데이터를 코딩(예를 들어, 인코딩)하도록 구성될 수 있는 리샘플링 모듈(1225)을 포함할 수 있다. 리샘플링 모듈(1225)는 인코딩 프로세스의 일부로서 적어도 일부 비디오 데이터를 리샘플링할 수 있으며, 여기서 리샘플링은 리샘플링 필터를 사용해 적응 방식으로 수행될 수 있다.
인코딩된 비디오 데이터, 예를 들어, 코딩된 비트스트림은 소스 장치(1212)의 출력 인터페이스(1228)를 통해 목적지 장치(1214)에 직접 전송될 수 있다. 도 12의 예에서, 목적지 장치(1214)는 입력 인터페이스(1238), 비디오 디코더(1230) 및 디스플레이 장치(1232)를 포함한다. 일부 경우에, 입력 인터페이스(1228)는 수신기 및/또는 모뎀을 포함할 수 있다. 목적지 장치(1214)의 입력 인터페이스(1238)는 인코딩된 비디오 데이터를 채널(1216)을 통해 수신한다. 인코딩된 비디오 데이터는 비디오 인코더(1220)에 의해 생성되어 비디오 데이터를 나타내는 다양한 신택스 요소를 포함할 수 있다. 이러한 신택스 요소는 통신 매체를 이용해 전송되거나, 저장 매체에 저장되거나, 파일 서버에 저장되는 인코딩된 비디오 데이터에 함께 포함될 수 있다.
인코딩된 비디오 데이터도 목적지 장치(1214)가 디코딩 및/또는 재생을 위해 추후에 접근할 수 있도록 저장 매체 또는 파일 서버 상에 저장될 수 있다. 예를 들어, 코딩된 비트스트림은 입력 버퍼(1231)에 임시로 저장된 다음, 범용 프로세서(1233)에 로딩될 수 있다. 범용 프로세서를 구동시키기 위한 프로그램은 저장 장치 또는 메모리로부터 로딩될 수 있다. 범용 프로세서는 디코딩을 수행하기 위한 처리 메모리(1232)를 사용할 수 있다. 비디오 디코더(1230)는 비디오 인코더(1220)에 사용된 리샘플링 모듈(1225)과 유사한 리샘플링 모듈(1235)를 포함할 수도 있다.
도 12는 범용 프로세서(1233)와 별개로 리샘플링 모듈(1235)을 도시하고 있지만, 당업자는 리샘플링 기능이 범용 프로세서에 의해 실행되는 프로그램에 의해 수행될 수 있고, 비디오 인코더에서의 처리가 하나 이상의 프로세서를 사용해 달성될 수 있음을 이해할 것이다. 디코딩된 이미지(들)는 출력 프레임 버퍼(1236)에 저장된 다음 입력 인터페이스(1238)로 보내질 수 있다.
디스플레이 장치(1238)는 목적지 장치(1214)에 통합되거나 목적지 장치의 외부에 있을 수 있다. 일부 예에서, 목적지 장치(1214)는 통합형 디스플레이 장치를 포함할 수 있고, 외부 디스플레이 장치와 접속되도록 구성될 수도 있다. 다른 예에서, 목적지 장치(1214)는 디스플레이 장치일 수 있다. 일반적으로, 디스플레이 장치(1238)는 디코딩된 비디오 데이터를 사용자에게 디스플레이한다.
비디오 인코더(1220) 및 비디오 디코더(1230)는 비디오 압축 표준에 따라 동작할 수 있다. ITU-T VCEG (Q6/16) 및 ISO/IEC MPEG (JTC 1/SC 29/WG 11)는 현재의 고효율 비디오 코딩(High Efficiency Video Coding, HEVC) 표준(화면 컨텐츠 코딩 및 높은 동적 범위 코딩을 위한 현재 확장 및 단기 확장을 포함함)을 훨씬 능가하는 압축 성능을 갖는 미래 비디오 코딩 기술의 표준화에 대한 잠재적인 필요성을 연구하고 있다. 이들 그룹은 이 분야의 전문가들에 의해 제안된 압축 기술 설계를 평가하기 위해 JVET(Joint Video Exploration Team)로서 알려진 공동 협업체에서 본 탐사 활동에 협력하고 있다. 최근에 수집된 JVET 개발에 대한 내용은 J. Chen, E. Alshina, G. Sullivan, J. Ohm, J. Boyce에 의해 집필된 "Algorithm Description of Joint Exploration Test Model 5 (JEM 5)", JVET-E1001-V2에 기술되어 있다.
추가적으로 또는 대안적으로, 비디오 인코더(1220) 및 비디오 디코더(1230)는 개시된 JVET 특징과 함께 기능하는 다른 배타적 또는 산업 표준에 따라 동작할 수 있다. 따라서, MPEG-4, Part 10, Advanced Video Coding (AVC)으로 대안적으로 지칭되는 ITU-T H.264 표준과 같은 다른 표준 또는 이러한 표준들의 확장. 따라서, JVET를 위해 새롭게 개발되었지만, 본 개시의 기술은 임의의 특정 코딩 표준 또는 기술로 한정되지 않는다. 비디오 압축 표준 및 기술의 다른 예는 MPEG-2, ITU-T H.263 및 배타적 또는 오픈 소스 압축 포맷 및 관련 포맷을 포함한다.
비디오 인코더(1220) 및 비디오 디코더(1230)는 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 예를 들어, 비디오 인코더(1220) 및 디코더(1230)는 하나 이상의 프로세서, 디지털 신호 처리기(DSP), 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 이산 논리회로, 또는 이들의 임의의 조합을 포함할 수 있다. 비디오 인코더(1220) 및 디코더(1230)가 부분적으로 소프트웨어로 구현되는 경우, 장치는 소프트웨어용 명령을 적합한 비일시적 컴퓨터-판독 가능한 저장 매체에 저장할 수 있고, 본 개시의 기술을 수행하기 위해 하나 이상의 프로세서를 사용해 하드웨어에서 이 명령을 실행할 수 있다. 비디오 인코더(1220) 및 비디오 디코더(1230)의 각각은 하나 이상의 인코더 또는 디코더에 포함될 수 있으며, 이들 중 어느 하나는 결합된 인코더/디코더(CODEC)의 일부로서 각 장치에 통합될 수 있다.
본원에서 기술된 주제의 양태는 컴퓨터-실행형 명령, 예컨대 전술한 범용 프로세서(1223 및 1233)과 같은 컴퓨터에 의해 실행되는 프로그램 모듈의 일반적인 맥락에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 구성 요소, 데이터 구조 등을 포함한다. 본원에서 기술된 주제의 양태는, 통신망을 통해 연결되는 원격 처리 장치들에 의해 작업이 수행되는 분산 컴퓨팅 환경에서 실시될 수도 있다. 원격 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 또는 원격 컴퓨터 저장 매체 모두에 위치할 수 있다.
메모리의 예는 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM) 또는 둘 다를 포함한다. 메모리는 전술한 기술을 수행할 수 있는 명령, 예컨대 소스 코드 또는 바이너리 코드를 저장할 수 있다. 메모리는 프로세서(1223 및 1233)과 같은 프로세서에 의해 실행될 명령을 실행하는 도중의 변수 또는 다른 중간 정보를 저장하는 데 사용될 수도 있다.
저장 장치가 전술한 기술을 수행할 수 있는 명령, 예컨대 소스 코드 또는 바이너리 코드를 저장할 수도 있다. 저장 장치는 컴퓨터 프로세서에 의해 사용되고 조작되는 데이터를 추가로 저장할 수 있다. 예를 들어, 비디오 인코더(1220) 또는 비디오 디코더(1230) 내의 저장 장치는 컴퓨터 시스템(1223 또는 1233)에 의해 접근되는 데이터베이스일 수 있다. 저장 장치의 다른 예를 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 하드 드라이브, 자기 디스크, 광학 디스크, CD-ROM, DVD, 플래시 메모리, USB 메모리 카드, 또는 컴퓨터가 판독할 수 있는 임의의 다른 매체를 포함한다.
메모리 또는 저장 장치는 비디오 인코더 및/또는 비디오 디코더에 의해 사용되거나, 이와 결합하여 사용하기 위한 비일시적 컴퓨터-판독 가능한 저장 매체의 일 예일 수 있다. 비일시적 컴퓨터-판독 가능한 저장 매체는 특정 구현예에서 기술된 기능을 수행하도록 구성될 컴퓨터 시스템을 제어하기 위한 명령을 포함한다. 하나 이상의 컴퓨터 프로세서에 의해 실행될 때의 명령은 특정 구현예에서 기술된 것을 수행하도록 구성될 수 있다.
또한, 일부 구현예는 흐름도 또는 블록도로서 도시될 수 있는 프로세스로서 기술되었음에 유의한다. 각각은 작업을 순차적 프로세스로서 기술할 수 있지만, 많은 작업이 병렬로 또는 동시에 수행될 수 있다. 또한, 작업의 순서는 재배열될 수 있다. 프로세스는 도면에 포함되지 않은 추가의 단계를 가질 수 있다.
특정 구현예는 명령 실행 시스템, 장치, 시스템 또는 기계에 의해 또는 이와 결합하여 사용하기 위한 비일시적 컴퓨터-판독 가능한 저장 매체에 구현될 수 있다. 컴퓨터-판독 가능한 저장 매체는 특정 구현예에서 기술된 방법을 수행하기 위한 컴퓨터 시스템을 제어하기 위한 명령을 포함한다. 컴퓨터 시스템은 하나 이상의 컴퓨팅 장치를 포함할 수 있다. 하나 이상의 컴퓨터 프로세서에 의해 실행될 때의 명령은 특정 구현예에서 기술된 것을 수행하도록 구성될 수 있다.
본원의 상세한 내용 및 후속 청구범위 전반에 걸쳐 사용된 바와 같이 단수형 표현("a", "an" 및 "the")은 문맥에 의해 명확히 달리 지시되지 않는 한 복수의 지시 대상을 포함한다. 또한, 본원의 상세한 내용 및 후속 청구범위 전반에 걸쳐 사용된 바와 같이 내("in")의 의미는 문맥에 의해 명확히 달리 지시되지 않는 한 내("in") 및 위("on")를 포함한다.
본 발명의 예시적인 구현예가 상기 구조적 특징 및/또는 방법론적 행위에 특이적인 언어로 상세하게 설명되었지만, 당업자는 본 발명의 신규한 교시 및 장점으로부터 실질적으로 벗어나지 않고도 예시적인 구현예에서 많은 추가적인 수정이 가능하다는 것을 쉽게 인식할 수 있다는 점을 이해해야 한다. 또한, 첨부된 청구범위에서 정의된 주제는 본질적으로 전술한 특정 특징 또는 행위로 제한되는 것이 아님을 이해해야 한다. 따라서, 이들 및 모든 이러한 수정은 첨부된 청구범위에 따른 범위와 범주로 해석되는 본 발명의 범위에 포함되도록 의도된다.

Claims (19)

  1. 인터 코딩 방법으로서:
    코딩 유닛을 식별하는 단계;
    코딩 유닛과 연관된 정보를 결정하는 단계;
    상기 코딩 유닛과 인접한 픽셀의 코딩 템플릿을 정의하되, 상기 코딩 템플릿은 상기 코딩 유닛의 폭 및 높이 중 적어도 하나에 적어도 부분적으로 기초하는 단계; 및
    상기 코딩 템플릿에 적어도 부분적으로 기초하여 상기 코딩 유닛을 인코딩하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 코딩 템플릿은 코딩 유닛의 좌측에 위치하는 픽셀로 이루어지는, 인터 코딩 방법.
  3. 제2항에 있어서, 상기 코딩 템플릿은 상기 코딩 유닛의 상기 높이와 동등한 높이를 갖는, 인터 코딩 방법.
  4. 제3항에 있어서, 상기 코딩 템플릿은 상기 코딩 유닛의 상기 폭과 동등하거나 더 적은 폭을 갖는, 인터 코딩 방법.
  5. 제4항에 있어서, 상기 코딩 템플릿의 상기 폭은 가변적인, 인터 코딩 방법.
  6. 제1항에 있어서, 상기 코딩 템플릿은 코딩 유닛의 위에 위치하는 픽셀로 이루어지는, 인터 코딩 방법.
  7. 제6항에 있어서, 상기 코딩 템플릿은 상기 코딩 유닛의 상기 폭과 동등한 폭을 갖는, 인터 코딩 방법.
  8. 제7항에 있어서, 상기 코딩 템플릿은 상기 코딩 유닛의 상기 높이와 동등하거나 더 적은 높이를 갖는, 인터 코딩 방법.
  9. 제8항에 있어서, 상기 코딩 템플릿의 상기 높이는 가변적인, 인터 코딩 방법.
  10. 제1항에 있어서, 상기 코딩 템플릿은 코딩 유닛의 위 및 좌측에 위치하는 픽셀로 이루어지는, 인터 코딩 방법.
  11. 제10항에 있어서, 상기 코딩 템플릿은 상기 코딩 유닛의 상기 높이와 동등하거나 더 적은 두께를 갖는, 인터 코딩 방법.
  12. 제11항에 있어서, 상기 코딩 템플릿은 상기 코딩 유닛의 상기 폭과 동등하거나 더 적은 두께를 갖는, 인터 코딩 방법.
  13. 제12항에 있어서, 상기 코딩 템플릿의 상기 두께는 가변적인, 인터 코딩 방법.
  14. 인터 코딩 시스템으로서:
    코딩 유닛을 메모리에 수용하는 단계;
    코딩 유닛과 연관된 정보를 결정하여 메모리에 저장하는 단계;
    상기 코딩 유닛과 인접한 픽셀의 코딩 템플릿을 정의하여 메모리에 저장하되, 상기 코딩 템플릿은 상기 코딩 유닛의 폭 및 높이 중 적어도 하나에 적어도 부분적으로 기초하는 단계; 및
    상기 코딩 템플릿에 적어도 부분적으로 기초하여, 프레임 레이트 상향 변환을 이용해 상기 코딩 유닛을 신호에 인코딩하는 단계를 포함하는, 인터 코딩 시스템.
  15. 제14항에 있어서, 상기 코딩 템플릿은 코딩 유닛의 좌측에 위치하는 픽셀로 이루어지고;
    상기 코딩 템플릿은 상기 코딩 유닛의 상기 높이와 동등한 높이를 가지며;
    상기 코딩 템플릿은 상기 코딩 유닛의 상기 폭과 동등하거나 더 적은 폭을 갖는, 인터 코딩 시스템.
  16. 제14항에 있어서, 상기 코딩 템플릿은 코딩 유닛의 위에 위치하는 픽셀로 이루어지고;
    상기 코딩 템플릿은 상기 코딩 유닛의 상기 폭과 동등한 폭을 가지며;
    상기 코딩 템플릿은 상기 코딩 유닛의 상기 높이와 동등하거나 적은 높이를 갖는, 인터 코딩 시스템.
  17. 제14항에 있어서, 상기 코딩 템플릿은 코딩 유닛의 위 및 좌측에 위치하는 픽셀로 이루어지며;
    상기 코딩 템플릿은 상기 코딩 유닛의 상기 높이와 동등하거나 적은 두께를 갖는, 인터 코딩 시스템.
  18. 제17항에 있어서, 상기 코딩 템플릿은 상기 코딩 유닛의 상기 폭과 동등하거나 더 적은 두께를 갖는, 인터 코딩 시스템.
  19. 제17항에 있어서, 상기 코딩 템플릿의 상기 두께는 가변적인, 인터 코딩 시스템.
KR1020207026202A 2018-02-15 2019-02-15 템플릿 매칭을 위한 가변 템플릿 크기 KR20200118861A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862631047P 2018-02-15 2018-02-15
US62/631,047 2018-02-15
PCT/US2019/018279 WO2019161248A1 (en) 2018-02-15 2019-02-15 Variable template size for template matching
US16/277,532 US20190253722A1 (en) 2018-02-15 2019-02-15 Variable template size for template matching
US16/277,532 2019-02-15

Publications (1)

Publication Number Publication Date
KR20200118861A true KR20200118861A (ko) 2020-10-16

Family

ID=67540888

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207026202A KR20200118861A (ko) 2018-02-15 2019-02-15 템플릿 매칭을 위한 가변 템플릿 크기

Country Status (7)

Country Link
US (1) US20190253722A1 (ko)
JP (1) JP7350757B2 (ko)
KR (1) KR20200118861A (ko)
CN (1) CN111903133A (ko)
CA (1) CA3091356A1 (ko)
MX (1) MX2020008575A (ko)
WO (1) WO2019161248A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023195824A1 (ko) * 2022-04-08 2023-10-12 한국전자통신연구원 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체
WO2023200217A1 (ko) * 2022-04-11 2023-10-19 엘지전자 주식회사 템플릿 매칭을 이용하는 영상 부호화/복호화 방법, 비트스트림을 전송하는 방법 및 비트스트림을 저장한 기록 매체

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10715810B2 (en) 2018-02-20 2020-07-14 Qualcomm Incorporated Simplified local illumination compensation
US11736720B2 (en) * 2019-09-03 2023-08-22 Tencent America LLC Motion vector refinement methods for video encoding

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007043651A (ja) 2005-07-05 2007-02-15 Ntt Docomo Inc 動画像符号化装置、動画像符号化方法、動画像符号化プログラム、動画像復号装置、動画像復号方法及び動画像復号プログラム
TW201032600A (en) 2009-02-20 2010-09-01 Sony Corp Image processing device and method
JP2010268259A (ja) * 2009-05-15 2010-11-25 Sony Corp 画像処理装置および方法、並びにプログラム
CN101588487B (zh) * 2009-06-10 2011-06-29 武汉大学 一种视频帧内预测编码方法
JP5869493B2 (ja) 2009-12-08 2016-02-24 トムソン ライセンシングThomson Licensing ビデオ符号化および復号化のためのテンプレート・マッチング予測の適応型残差更新のための方法および装置
KR20110068792A (ko) * 2009-12-16 2011-06-22 한국전자통신연구원 적응적 영상 부호화 장치 및 방법
CN106105196A (zh) * 2014-04-28 2016-11-09 松下电器(美国)知识产权公司 编码方法、解码方法、编码装置以及解码装置
US10958927B2 (en) * 2015-03-27 2021-03-23 Qualcomm Incorporated Motion information derivation mode determination in video coding
US10397569B2 (en) * 2016-06-03 2019-08-27 Mediatek Inc. Method and apparatus for template-based intra prediction in image and video coding

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023195824A1 (ko) * 2022-04-08 2023-10-12 한국전자통신연구원 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체
WO2023200217A1 (ko) * 2022-04-11 2023-10-19 엘지전자 주식회사 템플릿 매칭을 이용하는 영상 부호화/복호화 방법, 비트스트림을 전송하는 방법 및 비트스트림을 저장한 기록 매체

Also Published As

Publication number Publication date
WO2019161248A1 (en) 2019-08-22
CN111903133A (zh) 2020-11-06
US20190253722A1 (en) 2019-08-15
JP7350757B2 (ja) 2023-09-26
JP2021514145A (ja) 2021-06-03
CA3091356A1 (en) 2019-08-22
MX2020008575A (es) 2020-11-12

Similar Documents

Publication Publication Date Title
US11936856B2 (en) Template matching for JVET intra prediction
US11653028B2 (en) JVET coding block structure with asymmetrical Partitioning
US10939097B2 (en) Weighted angular prediction for intra coding
US11463708B2 (en) System and method of implementing multiple prediction models for local illumination compensation
US20170339405A1 (en) System and method for intra coding
US20170347103A1 (en) Weighted angular prediction coding for intra coding
CN115174910A (zh) 帧内模式jvet编译方法
US20220141470A1 (en) System and method for constructing a plane for planar prediction
JP7350757B2 (ja) テンプレートマッチングのための可変テンプレートサイズ
CA3092638A1 (en) System and method of motion information storage for video coding and signaling
EP3443746A1 (en) Template matching for jvet intra prediction
EP3446481B1 (en) Jvet coding block structure with asymmetrical partitioning

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E601 Decision to refuse application