KR20200113259A - 하드웨어 친화적으로 제약된 모션 벡터 개선 - Google Patents

하드웨어 친화적으로 제약된 모션 벡터 개선 Download PDF

Info

Publication number
KR20200113259A
KR20200113259A KR1020207024649A KR20207024649A KR20200113259A KR 20200113259 A KR20200113259 A KR 20200113259A KR 1020207024649 A KR1020207024649 A KR 1020207024649A KR 20207024649 A KR20207024649 A KR 20207024649A KR 20200113259 A KR20200113259 A KR 20200113259A
Authority
KR
South Korea
Prior art keywords
motion vector
pixels
current
block
enhancement
Prior art date
Application number
KR1020207024649A
Other languages
English (en)
Other versions
KR102448218B1 (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 미디어텍 인크.
Publication of KR20200113259A publication Critical patent/KR20200113259A/ko
Application granted granted Critical
Publication of KR102448218B1 publication Critical patent/KR102448218B1/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/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/567Motion estimation based on rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/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/46Embedding additional information in the video signal during the compression process
    • 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/513Processing of motion vectors
    • 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/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • 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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • 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/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction

Landscapes

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

Abstract

디코더 측 모션 벡터 개선(decoder-side motion vector refinement)을 사용하여 비디오 시퀀스를 인코딩 또는 디코딩하는 비디오 코덱이 제공된다. 비디오 코덱은 비디오 시퀀스에서 현재 비디오 프레임의 현재 픽셀 블록을 코딩하기 위한 제1 모션 벡터 및 제2 모션 벡터를 식별한다. 비디오 코덱은 현재 픽셀 블록의 선형 치수와 문턱값 간의 비교에 기초하여 현재 픽셀 블록에 대한 모션 벡터 개선을 수행할지 여부를 결정한다. 모션 벡터 개선이 수행될 때, 비디오 코덱은 왜곡 비용을 최소화하기 위해 제1 및 제2 모션 벡터를 개선하고, 개선된 제1 및 제2 모션 벡터를 사용하여 현재 픽셀 블록을 코딩한다. 모션 벡터 개선이 수행되지 않으면, 비디오 코덱은 식별된 제1 및 제2 모션 벡터를 사용하여 현재 픽셀 블록을 코딩한다.

Description

하드웨어 친화적으로 제약된 모션 벡터 개선
본 개시는 2018년 1월 26일, 2018년 8월 27일 및 2018년 10월 3일에 각각 출원된 미국 특허 가출원 제62/622,234호, 제62/723,014호, 및 제62/740,470호의 우선권 혜택을 주장하는, 가출원이 아닌 출원의 일부이다. 상기 나열된 출원의 내용은 본원에 참조로 통합된다.
본 개시는 일반적으로 비디오 프로세싱에 대한 것이다. 특히, 본 개시는 디코더 측 모션 벡터 개선(decoder-side motion vector refinement; DMVR)에 의해 픽셀 블록을 인코딩 또는 디코딩하는 방법에 대한 것이다.
본 명세서에서 달리 지시되지 않는 한, 이 섹션에 기술된 접근법은 아래에 나열된 청구항들에 대한 선행 기술이 아니며 이 섹션에 포함시킴으로써 종래 기술로서 인정되지 않는다.
HEVC(High-Efficiency Video Coding)는 JCT-VC(Joint Collaborative Team on Video Coding)에서 개발한 국제 비디오 코딩 표준이다. HEVC는 하이브리드 블록 기반 모션 보상된 이산 코사인 변환(discrete cosine transform; DCT)과 유사한 변환 코딩 아키텍처를 기반으로 한다. 코딩 단위(coding unit; CU)라고 하는 압축의 기본 단위는 픽셀의 2Nx2N 정사각형 블록이며, 각 CU는 사전 정의된 최소 크기에 도달할 때까지 4개의 더 작은 CU로 재귀적으로 분할될 수 있다. 각 CU는 하나 또는 다수의 예측 단위(prediction unit; PU)를 포함한다. 각각의 PU는 CU 내의 픽셀 블록에 대응한다.
하이브리드 코딩 아키텍처의 최상의 코딩 효율을 달성하기 위해, HEVC는 각각의 PU에 대해 인트라 예측 및/또는 인터 예측 모드를 사용한다. 인터 예측 모드의 경우, 모션 보상 예측을 생성하는 데 사용되는 시간적 참조 프레임(temporal reference frames)을 재구성하기 위해 모션 정보가 사용된다. 모션 정보는 모션 벡터, 모션 벡터 예측자, 모션 벡터 차이, 참조 프레임을 선택하기 위한 참조 인덱스 등을 포함할 수 있다.
인터 예측 모드에는 스킵 모드(skip mode), 병합 모드, 및 고급 모션 벡터 예측(advanced motion vector prediction; AMVP) 모드의 세 가지 유형이 있다. PU가 AMVP 모드에서 코딩될 때, PU의 모션 보상된 예측에 사용되는 모션 벡터(motion vector; MV)는, MV=MVP+MVD에 따른 모션 벡터 예측자(MVP) 및 모션 벡터 차이(MVD 또는 잔여 모션 데이터)로부터 유도된다(derived). MVP 선택을 식별하는 인덱스는 모션 정보로서 대응 MVD와 함께 인코딩되고 전송된다. PU가 스킵 모드 또는 병합 모드로 코딩될 때, 선택된 후보의 병합 인덱스를 제외하고는 모션 정보가 전송되지 않는다. 스킵 모드와 병합 모드는, 참조 프레임 목록인 목록0 또는 목록1(슬라이스 헤더에 표시됨)로부터 선택되는 시간적으로 이웃하는 화상(시간적 후보)의 공간적 이웃 블록(공간적 후보) 또는 콜로케이티드 블록(collocated blocks)으로부터 모션 정보를 얻기 위해 모션 추론 방법(MV=MVP+MVD, 여기서 MVD는 0임)을 활용한다. 스킵 PU의 경우, 코딩되고 있는 블록에 대한 잔여 신호도 생략된다. AMVP, 병합 모드, 또는 스킵 모드를 사용하여 HEVC 하에서 픽셀 블록에 대한 모션 정보를 중계하기(relay) 위해, 인덱스는 후보 모션 예측자의 목록으로부터 MVP(또는 모션 예측자)를 선택하는 데 사용된다. 병합/스킵 모드에서, 병합 인덱스는 4개의 공간 후보 및 하나의 시간 후보를 포함하는 후보 모션 예측자의 목록으로부터 MVP를 선택하는 데 사용된다. 병합 인덱스는 전송되지만, 모션 예측자는 전송되지 않는다.
다음의 요약은 단지 예시적인 것이며 어떤 식으로든 제한하려는 것은 아니다. 즉, 다음 요약은 여기에 설명된 신규하고 자명하지 않은 기술의 개념, 하이라이트, 혜택, 및 이점을 소개하기 위해 제공된다. 선택된 일부 구현이 아래의 상세한 설명에서 추가로 설명된다. 따라서, 다음의 요약은 청구된 특허 대상의 필수적 특징을 식별하도록 의도된 것이 아니며, 청구된 특허 대상의 범위를 결정하는데 사용하기 위한 것도 아니다.
본 개시의 일부 실시예는 디코더 측 모션 벡터 개선을 사용하여 비디오 시퀀스를 인코딩 또는 디코딩하는 비디오 코덱을 제공한다. 비디오 코덱은 비디오 시퀀스에서 현재 비디오 프레임의 현재 픽셀 블록을 코딩하기 위한 제1 모션 벡터 및 제2 모션 벡터를 식별한다. 비디오 코덱은 현재 픽셀 블록의 크기와 문턱값 간의 비교에 기초하여 현재 픽셀 블록에 대한 모션 벡터 개선을 수행할지 여부를 결정한다. 모션 벡터 개선이 수행될 때, 비디오 코덱은 왜곡 비용을 최소화하기 위해 제1 및 제2 모션 벡터를 개선하고, 개선된 제1 및 제2 모션 벡터를 사용하여 현재 픽셀 블록을 코딩한다. 모션 벡터 개선이 수행되지 않으면, 비디오 코덱은 식별된 제1 및 제2 모션 벡터를 사용하여 현재 픽셀 블록을 코딩한다. 일부 실시예에서, 왜곡 비용은 제1 및 제2 모션 벡터에 의해 지시된(pointed) 서브샘플링된(sub-sampled) 픽셀 데이터에 기초하여 계산된다. 현재 블록의 크기는 현재 블록의 선형 치수(예를 들어, 높이 또는 폭)로서 또는 현재 블록의 면적으로서 명시될 수 있다.
일부 실시예에서, 현재 픽셀 블록의 크기가 문턱값보다 큰 경우, 비디오 코덱은 (i) 현재 픽셀 블록을 복수의 분할된 단위로 분할하고, (ii) 복수의 분할된 단위에 대한 제1 및 제2 모션 벡터를 개별적으로 개선하며, (iii) 개선된 모션 벡터를 사용하여 복수의 서브블록을 개별적으로 코딩한다.
첨부 도면은 본 개시의 추가 이해를 제공하기 위해 포함되며, 본 개시에 통합되고 본 개시의 일부를 구성한다. 도면은 본 개시의 구현을 예시하고, 상세한 설명과 함께 본 개시의 원리를 설명하는 역할을 한다. 본 개시의 개념을 명확하게 설명하기 위해 일부 구성 요소가 실제 구현에서의 크기보다 비례하지 않게 도시될 수 있기 때문에 도면들이 반드시 축척대로는 아니라는 것이 이해될 것이다.
도 1은 본 개시의 일 실시예에 따른 비디오 코딩을 위해 PMVD 및 DMVR을 사용하는 전자 시스템의 도면을 도시한다.
도 2a 및 도 2b는 본 개시의 예시적인 실시예와 일치하는 픽셀 블록을 인코딩 또는 디코딩하기 위해 양방향 예측(bi-prediction) PMVD 및 DMVR을 사용하는 것을 개념적으로 도시한다.
도 3은 본 개시의 예시적인 실시예와 일치하는 픽셀 블록을 인코딩 또는 디코딩하기 위해 템플릿 매칭 및 DMVR을 사용하는 것을 개념적으로 도시한다.
도 4는 픽셀 블록을 인코딩 또는 디코딩하기 위한 대안적인 양방향 매칭(blilateral matching) 및 DMVR 프로세스를 개념적으로 도시한다.
도 5는 픽셀 블록들을 인코딩하기 위해 PMVD 및 DMVR을 사용할 수 있는 예시적인 비디오 인코더를 도시한다.
도 6은 PMVD 및 DMVR을 구현하는 비디오 인코더의 일부를 도시한다.
도 7은 픽셀 블록들을 디코딩 및 재구성하기 위해 PMVD 및 DMVR을 사용할 수 있는 예시적인 비디오 디코더를 도시한다.
도 8은 PMVD 및 DMVR을 구현하는 비디오 인코더의 일부를 도시한다.
도 9a 및 도 9b는 비디오 코덱(인코더 또는 디코더)이 비디오 프레임의 픽셀 블록을 인코딩 또는 디코딩할 때 PMVD 및 DMVR을 구현하기 위해 사용하는 프로세스를 개념적으로 도시한다.
도 10은 본 개시의 일부 실시예들이 구현되는 전자 시스템을 개념적으로 도시한다.
다음의 상세한 설명에서, 다수의 특정한 세부사항들은 관련 교시의 완전한 이해를 제공하기 위해 예시에 의해 설명된다. 본원에 설명된 교시에 기초한 임의의 변화, 유도물 및/또는 확장은 본 개시의 보호 범위 내에 있다. 일부 예에서, 본 개시의 교시의 양상을 불필요하게 모호하게 하는 것을 피하기 위해, 본 명세서에 개시된 하나 이상의 예시적인 구현에 관한 공지된 방법, 절차, 구성 요소 및/또는 회로는 세부 사항 없이 비교적 높은 수준으로 설명될 수 있다.
I. PMVD DMVR
패턴 기반 모션 벡터 유도(Pattern-based motion vector Derivation)는 참조 프레임의 기존 모션 벡터(MV)로부터 시간적 모션 벡터 예측자(MVP)를 유도하는 방법이다. 스킵 및 병합 모드(skip and merge mode)로 코딩된 블록과 유사하게, PMVD에 의해 코딩된 블록은 모션 정보가 비디오 인코더로부터 비디오 디코더로 전송될 것을 요구하지 않는다. 대신에, 디코더는 블록을 재구성하는데 사용될 수 있는 적절한 모션 벡터에 대해 사용 가능한 참조 프레임을 검색한다. PMVD는 FRUC(frame rate up-conversion)의 형태이며, 블록의 모션 정보가 인코더로부터 시그널링없이 디코더에서 유도될 수 있게 한다.
디코더는 후보 모션 벡터들의 세트를 검사하여(examine) 초기 모션 벡터를 선택하고, 그 후 초기 모션 벡터에 의해 지시된 영역 주변을 매칭 비용 또는 왜곡 비용이 가장 적은 참조 픽셀 세트에 대해 검색(search)함으로써 디코더 측 모션 벡터 개선(decoder side motion vector refinement; DMVR)를 수행한다. 검색 결과는 개선된 모션 벡터이며, 그 후 모션 벡터는 블록을 디코딩하는 데 사용된다. 디코더는 블록의 각각의 서브블록에 대해 모션 벡터를 더 개선함으로써 제2 스테이지(stage) DMVR을 수행할 수 있다.
DMVR은 비디오 코딩(인코딩/디코딩)에서 추가 정보(예를 들어, 신택스(syntax) 요소)의 전송 없이 현재 픽셀 블록에 대한 모션 벡터를 개선하기 위해 사용되는 기술이다. 그러나, DMVR은 계산 작업량을 늘리고 프로세싱 시간을 늘릴 수 있다. 일부 실시예들에서, DMVR에 의한 비디오 품질 개선(improvement)이 프로세싱 시간의 증가에 의해 정당화되도록 하기 위해, 현재 블록의 특정 특성 또는 특징에 기초하여 DMVR이 스킵되거나 부분적으로 수행된다.
일부 실시예들에서, PMVD 및 DMVR은 현재 블록의 양방향 인터 예측(또는 양방향-예측(bi-prediction))을 위해 2개의 모션 벡터를 유도하고 개선하는데 사용된다. 현재 프레임의 현재 블록은 제1 참조 프레임에서의 제1 참조 픽셀 세트를 가리키는 제1 모션 벡터 및 제2 참조 프레임에서의 제2 참조 픽셀 세트를 가리키는 제2 모션 벡터에 의해 코딩된다. 현재 블록은 제1 참조 픽셀 세트와 제2 참조 픽셀 세트의 조합에 의해 예측된다. PMVD 및 DMVR 기술은, 현재 블록을 재구성하기 위해 제1 및 제2 참조 픽셀 세트의 조합을 사용하는 왜곡 비용이 최소화되도록, 제1 및 제2 모션 벡터를 식별하고 개선하는 데 사용된다.
도 1은 본 개시의 일 실시예에 따른 비디오 코딩을 위해 PMVD 및 DMVR을 사용하는 전자 시스템(0100)의 도면을 도시한다. 전자 시스템(0100)은 인터 예측 코딩 기술, 인트라 예측 코딩 기술 등과 같은 다양한 코딩(인코딩/디코딩) 기술을 사용하여 복수의 전자 디바이스 사이에서 비디오를 효율적으로 전달하는 다수의 전자 디바이스를 포함한다. 도 1의 예에서, 전자 시스템(0100)은 제1 디바이스(0110) 및 제2 디바이스(0160)를 포함할 수 있다. 비디오는 제1 디바이스(0110)에서 인코딩되고, 코딩된 비디오는 제1 디바이스(0110)에서 제2 디바이스(0160)로 비트스트림(0150)으로 전송되어 디코딩된다. 제1 디바이스(0110) 및/또는 제2 디바이스(0160)는 프레임 간 양방향 예측을 위한 병합 모드의 일부로서 PMVD 및 DMVR을 적용할 수 있다. DMVR은 제1 디바이스(0110)에서 그리고/또는 제2 디바이스(0160)에서 조기에 종료되거나 완전히 스킵되거나 부분적으로 수행될 수 있다.
전자 시스템(0100)의 전자 디바이스는 임의의 적절한 디바이스일 수 있다. 일 예로, 제1 디바이스(0110)는, 비디오 프레임을 생성하고 비디오 프레임을 코딩된 비디오로 인코딩하도록 구성된 비디오 레코더, 카메라, 스마트폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 데스크톱 컴퓨터 등의 멀티미디어 캡처 디바이스이며, 제2 디바이스(0160)는 디코딩된 비디오 프레임을 구성하기 위해 코딩된 비디오를 디코딩하고 디코딩된 비디오 프레임을 디스플레이하도록 구성된 텔레비전, 프로젝터, 스마트폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 데스크톱 컴퓨터 등과 같은 멀티미디어 재생 디바이스이다.
일부 실시예들에서, 제1 디바이스(0110)는 비디오 프레임들을 생성하는 멀티미디어 캡처 디바이스(도시되지 않음)에 결합되고, 제1 디바이스(0110)는 멀티미디어 캡처 디바이스로부터 비디오 프레임들을 수신하고 비디오 프레임들을 인코딩한다. 또 다른 예에서, 제2 디바이스(0160)는 멀티미디어 재생 디바이스(도시되지 않음)에 결합되고, 제2 디바이스(0160)는 코딩된 비디오를 디코딩하여 디코딩된 비디오 프레임을 구성하고 디코딩된 비디오 프레임을 플레이하기 위해 멀티미디어 재생 디바이스에 제공한다.
도 1의 예에서, 제1 디바이스(0110)는, 케이블, 근거리 통신망(local area network; LAN), 무선 LAN(wireless LAN; WLAN), 셀룰러 네트워크, 광 네트워크, 인터넷 또는 상기의 조합과 같은 하나 이상의 통신 표준에 따라 임의의 적절한 통신 채널을 통해 비트스트림에서 코딩된 비디오를 제2 디바이스(0160)로 송신한다. 일례에서, 비트스트림은 전기 신호로 운반되고(carried) 케이블을 통해 전송된다. 또 다른 예에서, 비트스트림은 패킷으로 운반되고, 패킷은 LAN에서 전기 신호에 의해 전송된다. 또 다른 예에서, 패킷은 예를 들어 WLAN 또는 셀룰러 네트워크에서 무선 주파수 신호에 의해 운반될 수 있다.
본 개시의 한 양상에 따르면, 제1 디바이스(0110)는 인코더 회로(0120)를 포함한다. 인코더 회로(0120)는 비디오 코딩 표준(예를 들어, HEVC)에 따라 비디오를 인코딩하고 코딩된 비디오의 비트스트림(0150)을 생성하도록 구성된다. 비트스트림은 제1 디바이스(0110) 및/또는 다른 디바이스(미도시)에 의해 임의의 적절한 포맷으로 전송된다. 제2 디바이스(0160)는 디코더 회로(0170)를 포함한다. 디코더 회로(0170)는 코딩된 비디오의 비트스트림을 수신하고 비디오 코딩 표준에 따라 디코딩된 비디오 프레임을 생성하기 위해 비트스트림(0150)을 디코딩하도록 구성된다. 인코더 회로(0120)에 의해 구현된 예시적인 비디오 인코더는 아래 섹션 II에서 설명될 것이다. 디코더 회로(0170)에 의해 구현된 예시적인 비디오 디코더는 아래 섹션 III에서 설명될 것이다.
또한, 인코더 회로(0120)는 인코딩 동안 프레임 간 양방향 예측을 위해 병합 모드에서 PMVD 및 DMVR을 사용하고, 디코더 회로(0170)는 디코딩 동안 프레임 간 양방향 예측을 위해 병합 모드에서 PMVD 및 DMVR을 사용한다. 문턱값 크기보다 크거나 작은 특정 조건을 충족하지 못하는 블록에 대해서는 DMVR이 선택적으로 조기에 종료하거나 비활성화될(disabled) 수 있다. 시스템(0100)의 경우, 인코더 회로(0120)는 프레임 간 양방향 예측을 위해 병합 모드에서 PMVD 및 DMVR을 적용하도록 구성된 인터 인코더(0130)를 포함한다. 인터 인코더(0130)는 패턴 매칭 엔진(0140) 및 개선 제어(0145)를 포함하는 인터 예측 모듈이다. 패턴 매칭 엔진(0140)은 PMVD 및 DMVR에 대한 왜곡 비용에 기초하여 모션 벡터를 식별하거나 이를 검색하도록 구성된다. 개선 제어(0145)는, DMVR이 완전히 수행되거나 특정 조건을 충족시키지 못하는 블록에 대해 DMVR을 비활성화도록 구성되기 전에 DMVR을 선택적으로 종료하거나 우회하도록(bypass) 구성된다.
유사하게, 디코더 회로(0170)는 인터-프레임 양방향 예측을 위해 병합 모드에서 DMVR을 적용하도록 구성되는 인터 디코더(0180)를 포함한다. 인터 디코더(0180)는 패턴 매칭 엔진(0190) 및 개선 제어기(0195)를 포함하는 인터 예측 모듈이다. 패턴 매칭 엔진(0190)은 PMVD 및 DMVR에 대한 왜곡 비용에 기초하여 모션 벡터를 검색하거나 식별하도록 구성된다. 개선 제어기(0195)는, DMVR이 완전히 수행되거나 특정 조건을 충족시키지 못한 블록에 대해 DMVR을 비활성화도록 구성되기 전에 DMVR을 선택적으로 종료하도록 구성된다. 이러한 다양한 조건은 아래 섹션 IV에 자세히 설명될 것이다.
인코더 회로(0120) 및 디코더 회로(0170)는 임의의 적절한 기술을 사용하여 구현될 수 있음에 유의한다. 일 실시예에서, 인코더 회로(0120) 및 디코더 회로(0170)는 집적 회로(integrated circuit; IC)를 사용하여 구현된다. 또 다른 예에서, 인코더 회로(0120) 및 디코더 회로(0170)는 소프트웨어 명령어를 실행하는 하나 이상의 프로세서를 사용하여 구현된다. 제1 디바이스(0110) 및 제2 디바이스(0160)는 다른 적합한 구성 요소를 포함할 수 있음에 또한 유의한다. 예를 들어, 제1 디바이스(0110)는 비디오 디코더(미도시)를 포함할 수 있고, 제2 디바이스(0160)는 인코더(미도시)를 포함할 수 있다.
도 2a 및 도 2b는 본 개시의 예시적인 실시예와 일치하는 픽셀 블록을 인코딩 또는 디코딩하기 위해 양방향 예측 PMVD 및 DMVR을 사용하는 것을 개념적으로 도시한다. 이 도면은 인코딩/디코딩을 위한 현재 프레임((present frame)(0210)(또는 현재 프레임(current frame)), 비디오 시퀀스에서 현재 프레임(0210)) 이전의 제1 참조 프레임(0220)(ref0), 및 비디오 시퀀스에서 현재 프레임(0210) 이후에 있는 제2 참조 프레임(0230)(ref1)을 도시한다. 제1 참조 프레임(0220)과 현재 프레임(0210) 사이의 프레임 수는 현재 프레임(0210)과 제2 참조 프레임(0230) 사이의 프레임 수와 다를 수 있음에 유의한다.
현재 프레임(0210)은 양방향 매칭(bilateral matching)을 사용하여 현재 코딩되고 있는 블록(0211)(현재 블록)을 포함하며, 이는 양방향 예측 PMVD의 한 형태이다. 현재 블록(0211)은 HEVC의 CU일 수 있다. 인터 예측 모듈(예를 들어, 인터 인코더(0130) 또는 인터 디코더(0180))는 2개의 모션 벡터(MV1 및 MV0)를 개선하여 블록(0211)에 대한 PMVD를 수행한다. 도 2a에 도시된 바와 같이, 제1 모션 벡터(MV0)는 제1 참조 프레임(0220)에서 제1 참조 픽셀 세트(0221)를 가리키고, 제2 모션 벡터(MV1)는 제2 참조 프레임(0230)에서 제2 참조 픽셀 세트(0231)를 가리킨다. MV0은 시간적으로 유도된 목록0 MVP이고 MV1은 시간적으로 유도된 목록1 MVP이다. 개선된 MV0(MV0'로 표시됨)은 제1 재배치된 참조 픽셀 세트(0225)를 가리킨다. 개선된 MV1(MV1'로 표시됨)은 제2 재배치된 참조 픽셀 세트(0235)를 가리킨다.
목록0 시간적 유도된 MVP를 유도하기 위해, 목록0 참조 프레임의 목록0 MV는 현재 프레임에 MV0으로 스케일링된다. 목록0 MV는 MV0 미러로서 목록0에서 refIdx가 0인 참조 화상을 가리키도록 추가로 스케일링된다. 유사한 절차를 사용하여 MV1 및 MV1 미러를 포함하는 목록1 시간적 유도된 MVP를 유도한다. 현재 프레임을 교차하는(crossing) 목록0 또는 목록1의 한 참조 프레임으로부터 또 다른 참조 프레임으로 MV의 스케일링은 동일한 모션 궤적을 따른다. MV0 및 MV0 미러는 현재 블록(0211)을 교차하는 동일한 모션 궤적에 있다. MV1 및 MV1 미러는 또한 현재 블록(0211)을 교차하는 동일한 모션 궤적에 있다.
현재 블록은 다수의 후보 시간적 유도된 MVP를 가질 수 있다. 후보 시간적 유도된 MVP는 미리 정의된 후보 모션 벡터 세트, 예를 들어 CU(0211)의 병합 목록으로부터의 후보 모션 벡터, 현재 프레임(0210)에서 CU(0211)의 공간적 이웃으로부터 상속된 모션 벡터, 모든 참조 프레임의 모든 모션 벡터 등으로부터 유도될 수 있다. 일부 실시예에서, 인터 예측 모듈은 후보 시간적 유도된 MVP 중에서 가장 작은 왜곡 비용을 갖는 MVP를 선택한다. 시간적 유도된 목록0 MVP와 연관된 왜곡 비용은 목록0 시간적 유도된 MVP의 두 MV(예를 들어, MV0 및 MV0 미러)가 가리키는 참조 픽셀 세트들 간의 차이로 계산될 수 있다. 시간적 유도된 목록1 MVP와 연관된 왜곡 비용은 목록1 시간적 유도된 MVP의 두 MV(예를 들어, MV1 및 MV1 미러)가 가리키는 참조 픽셀 세트들 간의 차이로 계산될 수 있다. 이 차이는 절대 차이의 합(sum of absolute differences; SAD) 또는 픽셀 수준의 차이 제곱의 합(sum of squared differences; SSD)으로 측정될 수 있다.
도 2b에 도시된 바와 같이. 검색은 MV0 및 MV1의 왜곡 비용을 최소화하는 개선된 MV0(MV0'로 표시) 및 개선된 MV1(MV1'로 표시)을 생성한다. 개선 전에, MV0의 왜곡 비용은 MV0으로 표시된 제1 참조 픽셀 세트(0221)와 MV0 미러로 표시된 참조 픽셀 세트(0222) 간의 차이로 계산되고, MV1의 왜곡 비용은 MV1로 표시된 제2 참조 픽셀 세트(0231)와 MV1 미러로 표시된 참조 픽셀 세트(0232) 간의 차이로 계산된다. 개선 후, MV0'의 왜곡 비용은 MV0'로 표시된 제1 재배치된 참조 픽셀 세트(0225)와 MV0' 미러로 표시된 참조 픽셀 세트(0226) 간의 차이로 계산된다. MV1'의 왜곡 비용은 MV1'로 표시된 제2 재배치된 참조 픽셀 세트(0235)와 MV1' 미러로 표시된 참조 픽셀 세트(0236) 간의 차이로 계산된다.
일부 실시예에서, 인터 예측 모듈은 2-스테이지로 양방향 매칭을 수행한다. 제1 스테이지는 블록 수준(예를 들면, PU 수준 또는 CU 수준) 매칭이고 제2 스테이지는 서브블록 수준(예를 들면, 서브 PU 수준) 매칭이다.
제1 스테이지 PU 수준(블록 수준) 매칭을 위해, 목록0 및 목록1 시간적 유도된 MVP로부터의 여러 시작 MV 쌍이 각각 선택된다. 인터 예측 모듈은 각 MV 쌍(예를 들면, MV 쌍이 가리키는 참조 픽셀 세트들 간의 SAD 또는 SSD)에 대한 왜곡 비용을 계산한다. 왜곡 비용이 최소인 MV 쌍이 블록에 대해 선택된다(예를 들면, MV0 및 MV1). 그런 다음, 선택된 MV 쌍을 개선하기 위해 다이아몬드 검색(diamond search)이 수행된다. 일부 실시예에서, 개선 정밀도는 1/8-픽셀이고, 개선 검색 범위는 ±1 픽셀 이내로 제한된다. 최종 개선된 MV 쌍은 블록 수준 유도된 MV 쌍으로 식별된다.
제2 스테이지 서브 PU 수준(또는 서브블록 수준) 검색을 위해, 현재 PU는 서브 PU로 분할된다. 서브 PU의 깊이는 SPS(예를 들면, 3)에서 시그널링된다. 최소 서브 PU 크기는 4x4 픽셀이다. 각 서브 PU에 대해, 여러 개의 시작 MV가 목록0 및 목록1로부터 선택되며, 이는 PU 수준 유도된 MV, 0 MV, 현재 서브 PU와 하단 우측 블록의 HEVC 콜로케이티드(collocated) TMVP, 현재 서브 PU의 시간적 유도된 MVP, 및 좌측 및 위쪽 PU/서브 PU의 MV를 포함할 수 있다. PU 수준 검색에서의 유사한 메커니즘을 사용하여, 각 서브 PU에 대한 최상의 MV 쌍이 선택된다. 다이아몬드 검색은 각 서브 PU의 MV 쌍을 개선하기 위해 수행된다. 각 서브 PU에 대한 모션 보상은 서브 PU에 대한 예측자를 생성하기 위해 수행된다.
일부 실시예에서, 모션 궤적을 따라 적합한 참조 픽셀 세트를 검색하기 위해 양방향 매칭을 수행하는 대신, 인터 예측 모듈(인터 인코더(0130) 또는 인터 디코더(0180))은 템플릿의 비교에 기초하여 적합한 참조 픽셀 세트를 검색하기 위해 템플릿 매칭을 수행한다. 이 디코더 MV 유도 방법에서, 템플릿 매칭은 인터 모드 코딩을 위한 MVP를 생성하는 데 사용된다. 참조 화상이 선택되면, 선택된 참조 화상에서 최상의 템플릿을 식별하기 위해 템플릿 매칭이 수행된다. 식별된 템플릿에 대응하는 MV가 유도된 MVP이다. 이 MVP는 AMVP 내의 제1 위치에 삽입된다.
도 3은 본 개시의 예시적인 실시예에 따라, 템플릿 매칭 및 DMVR을 사용하여 픽셀 블록을 인코딩 또는 디코딩하는 것을 개념적으로 예시한다. 이 도면은 인코딩/디코딩을 위한 현재 프레임((present frame)(0310)(또는 현재 프레임(current frame)), 비디오 시퀀스에서 현재 프레임(0310)) 이전의 제1 참조 프레임(0320) 및 비디오 시퀀스의 현재 프레임(0310) 이후에 있는 제2 참조 프레임(0330)을 도시한다. 제1 참조 프레임(0320)과 현재 프레임(0310) 사이의 프레임 수는 현재 프레임(0310)과 제2 참조 프레임(0330) 사이의 프레임 수와 다를 수 있음에 유의한다.
템플릿 매칭 병합 모드의 경우, 위쪽 4개의 행 및 좌측 4개의 열의 재구성된 픽셀이 템플릿을 형성하는 데 사용된다. 대응 MV와 최상으로 매칭되는 템플릿을 찾기 위해 템플릿 매칭이 수행된다. 도 3의 예에서, 현재 블록(0311)의 템플릿(0317)은 현재 블록(0311)의 위쪽 및 왼쪽에 픽셀 세트를 포함한다. 참조 픽셀 세트(0321 및 0331)는 각각 MV0 및 MV1에 대응한다. 템플릿(0327) 및 템플릿(0337)은 참조 픽셀 세트(0321 및 0331)의 위쪽 및 좌측에 있는 픽셀 세트이며 템플릿(0317)과 매칭하는 데 사용된다.
2-스테이지 매칭은 템플릿 매칭에도 적용된다. 제1 스테이지 PU 수준 매칭을 위해, 목록0 및 목록1로부터의 여러 시작 MV가 각각 선택된다. 이러한 MV에는 병합 후보로부터의 MV와 시간적 유도된 MVP로부터의 MV가 포함된다. 두 목록에 대해 두 개의 다른 시작 MV 세트가 생성된다. 하나의 목록에 있는 각 MV에 대해, MV를 갖는 템플릿의 SAD 비용이 계산된다. 비용이 가장 적은 MV가 최상의 MV이다. 그런 다음, 다이아몬드 검색을 수행하여 MV를 개선한다. 개선 정밀도는 1/8-픽셀이다. 개선 검색 범위는 ±1 픽셀 이내로 제한된다. 최종 MV는 PU 수준 유도된 MV이다. 목록0 및 목록1의 MV는 독립적으로 생성된다. 도 3의 예에서, MV0' 및 MV1'는 SAD 비용이 최저 템플릿에 대한 검색에 기초한 MV0 및 MV1의 개선된 버전이다.
제2 스테이지의 서브 PU 수준 검색을 위해, 현재 PU는 서브 PU로 분할된다. 서브 PU의 깊이는 SPS(예를 들면, 3)에서 시그널링된다. 최소 서브 PU 크기는 4x4 블록이다. 좌측 또는 상단 경계에 있는 각 서브 PU에 대해, 여러 개의 시작 MV가 목록0 및 목록1에서 선택되며, 이는 PU 수준 유도된 MV, 0 MV, 현재 서브 PU와 하단 우측 블록의 HEVC 콜로케이티드 TMVP, 현재 서브 PU의 시간적 유도된 MVP, 및 좌측 및 위쪽의 PU/서브 PU의 MV를 포함한다. PU 수준 검색에서 유사한 메커니즘을 사용하여, 서브 PU에 대한 최상의 MV 쌍이 선택된다. 다이아몬드 검색은 MV 쌍을 개선하기 위해 수행된다. 이 서브 PU에 대한 모션 보상은 이 서브 PU에 대한 예측자를 생성하기 위해 수행된다. 좌측 또는 상단 PU 경계에 있지 않은 그러한 PU에 대해서는, 제2 스테이지 서브 PU 수준 검색이 적용되지 않고 대응 MV가 제1 단계의 MV와 동일하게 설정된다.
도 4는 본 개시의 예시적인 실시예와 일치하는 픽셀 블록을 인코딩 또는 디코딩하기 위한 대안적인 양방향 매칭 및 DMVR 프로세스를 개념적으로 도시한다. 왜곡 비용은 시간적으로 현재 화상의 양쪽(opposite sides)에 위치한 두 참조 화상(ref0 및 ref1)의 예측 간의 MRSAD(mean removed sum of absolute differences) 계산에 기초한다. 이 예에서, 차이는 제1 모션 벡터(MV0)에 의해 지시되는 제1 참조 픽셀 세트 및 제2 모션 벡터(MV1)에 의해 지시되는 제2 참조 픽셀 세트에 기초하여 계산된다.
정수 정밀도 검색 중에는, 적응형 검색 패턴 방법에 따라 선택되는 6개의 포인트가 체크된다(checked). 정수 검색 프로세스가 완료된 후, 절반 픽셀 검색(half-pixel search)이 활성화된 경우 절반 샘플 정밀도 검색(half sample precision search)이 수행된다. 절반 샘플 검색에서는 (더하기 기호 형상의) 4개의 포인트만 체크된다. 일부 실시예에서, 검색 패턴은 다음 조건이 참(true)이면 병합 및 스킵 모드에서 적용된다.
(POC - POC0)*(POC - POC1)<0,
여기서 POC는 인코딩될 현재 화상의 화상 순서 카운트(count)이고, POC0 및 POC1은 현재 화상에 대한 참조 화상(ref0 및 ref1)의 화상 순서 카운트이다. 시그널링된 병합 후보 쌍은 DMVR 프로세스에 대한 입력으로 사용되며 초기 모션 벡터(MV0, MV1)로 표시된다. DMVR에 의해 검색되는 검색 포인트는 모션 벡터 차이 미러링(mirroring) 조건을 따른다. 즉, 후보 모션 벡터 쌍(MV0 ', MV1')으로 표시되는 DMVR에 의해 체크되는 임의의 포인트는 다음 두 수학식을 따른다:
MV0' = MV0 + MVdiff
MV1' = MV1 - MVdiff
여기서 MVdiff는 참조 화상 중 하나에서 검색 공간의 포인트를 나타낸다. 검색 공간의 구성 후, 정규 8-탭 DCTIF 보간 필터를 사용하여 단방향 예측(unilateral predictions)이 구성된다. 양방향 매칭 비용 함수는 두 예측들 사이의 MRSAD를 사용하여 계산되며, 최소 비용이 발생하는 검색 포인트가 개선된 MV 쌍(MV0' 및 MV1')으로 선택된다. 왜곡 비용은 개선된 제1 모션 벡터(MV0')에 의해 표시된 제1 참조 프레임 내의 제1 참조 픽셀 세트와 개선된 제2 모션 벡터(MV1')에 의해 표시된 제2 참조 프레임 내의 제2 참조 픽셀 세트 간의 차이에 기초하여 계산되고, 개선된 제1 모션 벡터(MV0') 및 개선된 제2 모션 벡터(MV1')는 중앙 검색 위치에 대한 반대쪽 검색 위치에 기초한다.
MRSAD 계산의 경우, 16 비트 정밀 샘플을 사용하여 보간 필터링의 출력을 매칭한다. 일부 실시예에서, 내부 버퍼 요건을 감소시키기 위해 MRSAD 계산 전에 클리핑(clipping) 및 반올림(rounding) 동작이 적용되지 않는다. 정수 정밀도 검색 포인트는 적응형 패턴 방법으로 선택된다. 도 4에 도시된 바와 같이, (초기 모션 벡터 (MV0 및 MV1)가 가리키는) ref0 및 ref1의 중심 포인트(P0)에 대응하는 초기 비용이 먼저 계산된다. 더하기 기호 형상(P1-P4) 내의 픽셀 위치에 대응하는 추가 4개의 비용은 중심점의 양쪽에 위치된 예측들에 의해 계산된다. 마지막 포인트(P5)는 이전에 계산된 비용의 기울기를 기반으로 선택된다. DMVR 프로세스의 출력은 최소 비용에 대응하는 개선된 모션 벡터 쌍이다.
한 번의 반복 후 검색 공간의 중심 포인트에서 최소 비용이 달성되면, 즉, 모션 벡터가 변경되지 않으면, 개선 프로세스가 종료된다. 그렇지 않으면, 검색 범위가 초과되지 않는 한, 최소 비용을 갖는 포인트가 추가 검색 프로세스에 대한 중심으로 간주된다.
절반 픽셀 검색의 적용이 검색 범위를 초과하지 않는 경우에만 절반 샘플 정밀도 검색이 적용된다. 이러한 경우, 정수 정밀도 검색 중 최소 비용에 기초해 선택되는 중심 포인트 주위의 더하기 형상 포인트에 대응하는 4개의 MRSAD 계산만 수행된다. DMVR 프로세스는 검색이 끝날 때 최소 비용 지점에 대응하는 개선된 모션 벡터 쌍을 출력한다.
II. 예시적인 비디오 인코더
도 5는 픽셀 블록들을 인코딩하기 위해 PMVD 및 DMVR을 사용할 수 있는 예시적인 비디오 인코더(0500)를 도시한다. 예시된 바와 같이, 비디오 인코더(0500)는 비디오 소스(0505)로부터 입력 비디오 신호를 수신하고 신호를 비트스트림(0595)으로 인코딩한다. 비디오 인코더(0500)는, 변환 모듈(0510), 양자화 모듈(0511), 역양자화 모듈(0514), 역변환 모듈(0515), 인트라 화상 추정 모듈(0520), 인트라 예측 모듈(0525), 모션 보상 모듈(0530), 모션 추정 모듈(0535), 인-루프 필터(in-loop filter)(0545), 재구성된 화상 버퍼(0550), MV 버퍼(0565), MV 예측 모듈(0575), 엔트로피 인코더(0590)를 포함하여, 비디오 소스(0505)로부터의 신호를 인코딩하기 위한 여러 구성 요소 또는 모듈을 갖는다. 모션 보상 모듈(0530) 및 모션 추정 모듈(0535)은 인터 예측 모듈(0540)의 일부이다.
일부 실시예에서, 모듈(0510 내지 0590)은 컴퓨팅 디바이스 또는 전자 장치의 하나 이상의 프로세싱 유닛(예를 들어, 프로세서)에 의해 실행되는 소프트웨어 명령어의 모듈이다. 일부 실시예에서, 모듈(0510-0590)은 전자 장치의 하나 이상의 집적 회로(integrated circuit; IC)에 의해 구현되는 하드웨어 회로의 모듈이다. 모듈(0510 내지 0590)은 별도의 모듈로 설명되어 있지만 일부 모듈은 단일 모듈로 결합될 수 있다.
비디오 소스(0505)는 압축 없이 각 비디오 프레임의 픽셀 데이터를 나타내는 원시 비디오 신호를 제공한다. 감산기(0508)는 비디오 소스(0505)의 원시 비디오 픽셀 데이터와 모션 보상 모듈(0530) 또는 인트라 예측 모듈(0525)로부터의 예측된 픽셀 데이터(0513) 간의 차이를 계산한다. 변환 모듈(0510)은 (예를 들어, 이산 코사인 변환 또는 DCT를 수행함으로써) 차이(또는 잔여 픽셀 데이터 또는 잔여 신호(0509))를 변환 계수로 변환한다. 양자화 모듈(0511)은 변환 계수를 양자화된 데이터(또는 양자화된 계수)(0512)로 양자화하고, 이는 엔트로피 인코더(0590)에 의해 비트스트림(0595)으로 인코딩된다.
역양자화 모듈(0514)은 양자화된 데이터(또는 양자화된 계수)(0512)를 역양자화하여 변환 계수를 얻고, 역변환 모듈(0515)은 변환 계수에 역변환을 수행하여 재구성된 잔차(residual)(0519)를 생성한다. 재구성된 잔차(0519)는 예측된 픽셀 데이터(0513)와 함께 추가되어 재구성된 픽셀 데이터(0517)를 생성한다. 일부 실시예에서, 재구성된 픽셀 데이터(0517)는 인트라 예측 및 공간적 MV 예측을 위해 라인 버퍼(도시되지 않음)에 일시적으로 저장된다. 재구성된 픽셀은 인-루프 필터(0545)에 의해 필터링되고 재구성된 화상 버퍼(0550)에 저장된다. 일부 실시예에서, 재구성된 화상 버퍼(0550)는 비디오 인코더(0500) 외부의 저장소이다. 일부 실시예에서, 재구성된 화상 버퍼(0550)는 비디오 인코더(0500) 내부의 저장소이다.
인트라-화상 추정 모듈(0520)은 재구성된 픽셀 데이터(0517)를 기반으로 인트라 예측을 수행하여 인트라 예측 데이터를 생성한다. 인트라 예측 데이터는 비트스트림(0595) 내로 인코딩되도록 엔트로피 인코더(0590)에 제공된다. 인트라 예측 데이터는 예측된 픽셀 데이터(0513)를 생성하기 위해 인트라 예측 모듈(0525)에 의해 또한 사용된다.
모션 추정 모듈(0535)은 재구성된 화상 버퍼(0550)에 저장된 이전에 디코딩된 프레임의 참조 픽셀 데이터에 대한 MV를 생성하여 인터 예측을 수행한다. 이들 MV는 예측된 픽셀 데이터를 생성하기 위해 모션 보상 모듈(0530)에 제공된다.
비디오 인코더(0500)는 비트스트림에서 전체 실제 MV를 인코딩하는 대신 MV 예측을 사용하여 예측된 MV를 생성하고, 모션 보상에 대해 사용되는 MV와 예측된 MV 간의 차이가 잔여 모션 데이터로서 인코딩되어 비트스트림(0595)에 저장된다.
MV 예측 모듈(0575)은 이전에 비디오 프레임을 인코딩하기 위해 생성된 참조 MV, 즉, 모션 보상을 수행하기 위해 사용된 모션 보상 MV를 기반으로 예측된 MV를 생성한다. MV 예측 모듈(0575)은 MV 버퍼(0565)로부터의 이전 비디오 프레임으로부터 참조 MV를 검색한다(retrieve). 비디오 인코더(0500)는 현재 비디오 프레임에 대해 생성된 MV를, 예측된 MV를 생성하기 위한 참조 MV로서 MV 버퍼(0565)에 저장한다.
MV 예측 모듈(0575)은 참조 MV를 사용하여 예측된 MV를 생성한다. 예측된 MV는 공간적 MV 예측 또는 시간적 MV 예측에 의해 계산될 수 있다. 현재 프레임(잔여 모션 데이터)의 예측된 MV와 모션 보상 MV(MC MV) 간의 차이는 엔트로피 인코더(0590)에 의해 비트스트림(0595)으로 인코딩된다.
엔트로피 인코더(0590)는 상황 적응 이진 산술 코딩(context-adaptive binary arithmetic coding; CABAC) 또는 허프만(Huffman) 인코딩과 같은 엔트로피 코딩 기술을 사용하여 다양한 파라미터 및 데이터를 비트스트림(0595)으로 인코딩한다. 엔트로피 인코더(0590)는 양자화된 변환 데이터 및 잔여 모션 데이터와 같은 파라미터를 비트스트림(0595)으로 인코딩한다. 비트스트림(0595)은 결국 저장 디바이스에 저장되거나 네트워크와 같은 통신 매체를 통해 디코더로 전송된다.
인-루프 필터(0545)는 특히 픽셀 블록의 경계에서 코딩의 아티팩트(artifacts)를 감소시키기 위해 재구성된 픽셀 데이터(0517)에 대해 필터링 또는 평활화 동작을 수행한다. 일부 실시예에서, 수행된 필터링 동작은 샘플 적응 오프셋(sample adaptive; SAO)을 포함한다. 일부 실시예에서, 필터링 동작은 적응 루프 필터(adaptive loop filter; ALF)를 포함한다.
도 6은 PMVD 및 DMVR을 구현하는 비디오 인코더(0500)의 일부를 도시한다. 구체적으로, 이 도면은 비디오 인코더(0500)의 인터 예측 모듈(0540)의 구성 요소를 예시한다. 일부 실시예에서, 비디오 인코더(0500)의 인터 예측 모듈(0540)은 인터 인코더(0130)를 구현한다. 예시된 바와 같이, 인터 예측 모듈(0540)은 MV 버퍼(0565)로부터 후보 모션 벡터를 검색하고(retrieve) 재구성된 화상 버퍼(0550)의 콘텐츠를 검색하여(search) 현재 블록의 양방향 예측을 위한 MV 쌍을 생성한다.
인터 예측 모듈(0540)은 모션 보상 모듈(0530), 모션 추정 모듈(0535), MV 선택기(0605), 개선 제어기(0610), 패턴 매칭 엔진(0620), 검색 버퍼(0630) 및 왜곡 비용 계산기(0640)를 포함한다. MV 선택기(0605)는 MV 버퍼(0565)로부터 후보 모션 벡터를 검색하고 후보들을 패턴 매칭 엔진(0620)에 제공한다. 패턴 매칭 엔진(0620)은 결국 양방향 매칭 또는 템플릿 매칭에 따라 현재 블록에 대한 MV 쌍(MV0 및 MV1)을 생성한다. 패턴 매칭 엔진(0620)은 또한 서브블록 MV 개선 동안 현재 블록의 각 서브블록에 대한 MV 쌍을 생성할 수 있다. MV 쌍은 재구성된 화상 버퍼(0550)로부터 선택적으로 검색되는 임시 콘텐츠를 저장하는 검색 버퍼(0630)로부터 픽셀 데이터를 검색하는 데 사용된다. 일부 실시예에서, 검색 버퍼(0630)는 비디오 인코더(0500)의 내부 메모리 디바이스에 의해 구현되는 반면, 재구성된 화상 버퍼(0550)는 비디오 인코더(0500) 외부의 외부 메모리 디바이스일 수 있다. 내부 메모리 디바이스는 외부 메모리 디바이스보다 용량이 훨씬 작을 수 있다.
검색 버퍼(0630)로부터 검색된 픽셀 데이터는 왜곡 비용 계산기(0640)에 의해 MV 쌍과 연관된 왜곡 비용을 계산하는 데 사용된다. 검색된 픽셀 데이터는 현재 블록과 동일한 모션 궤적을 따르거나 현재 블록과 매칭되는 템플릿을 갖는 참조 픽셀 세트에 대응할 수 있다. 계산된 왜곡 비용(예를 들어, SSD 또는 SAD)은 가장 낮은 왜곡 비용을 갖는 MV 쌍을 식별하기 위해 패턴 매칭 엔진(0620)에 의해 사용될 수 있다. 식별된 MV 쌍은 현재 블록을 재구성하기 위해 모션 보상 모듈(0530)에 제공된다.
일부 실시예에서, 인터 예측 모듈(0540)은 왜곡 비용을 계산할 때, 예를 들어 홀수 또는 짝수 라인과 같은 픽셀 데이터의 미리 정의된 서브세트만을 고려함으로써 픽셀 데이터를 서브샘플링한다. 일부 실시예들에서, 검색 버퍼(0630)를 구현하는 내부 메모리의 크기가 감소될 수 있도록 검색 버퍼에 저장된 데이터가 서브샘플링된다. 일부 실시예에서, 검색 버퍼(0630)의 출력은 서브샘플링되어 왜곡 비용 계산기(0640)에서 SSD 또는 SAD에 대한 계산의 수가 감소될 수 있다.
개선 제어기(0610)는 CU의 크기, 높이, 또는 폭이 문턱값보다 큰지 여부와 같은 특정 조건에 기초하여 DMVR의 특정 스테이지의 MV 개선을 활성화 또는 비활성화할지 여부를 결정한다. 이들 조건은 아래 섹션 IV에서 더 설명될 것이다. 이들 조건은 속도-왜곡 트레이드 오프와 같은 인자에 기초하여 모션 추정 모듈(0535)에서 결정될 수 있다.
III. 예시적 비디오 디코더
도 7은 픽셀 블록들을 디코딩 및 재구성하기 위해 PMVD 및 DMVR을 사용할 수 있는 예시적인 비디오 디코더를 도시한다. 예시된 바와 같이, 비디오 디코더(0700)는 비트스트림(0795)을 수신하고 비트스트림의 콘텐츠를 디스플레이를 위해 비디오 프레임의 픽셀 데이터로 디코딩하는 이미지 디코딩 또는 비디오 디코딩 회로이다. 비디오 디코더(0700)는 역양자화 모듈(0705), 역변환 모듈(0715), 인트라 예측 모듈(0725), 모션 보상 모듈(0730), 인-루프 필터(0745), 디코딩된 화상 버퍼(0750), MV 버퍼(0765), MV 예측 모듈(0775), 및 파서(0790)를 포함하는, 비트스트림(0795)을 디코딩하기 위한 여러 개의 구성 요소 또는 모듈을 갖는다. 모션 보상 모듈(0730)은 인터 예측 모듈(0740)의 일부이다.
일부 실시예에서, 모듈(0710 내지 0790)은 컴퓨팅 디바이스의 하나 이상의 프로세싱 유닛(예를 들어, 프로세서)에 의해 실행되고 있는 소프트웨어 명령어의 모듈이다. 일부 실시예에서, 모듈(0710 내지 0790)은 전자 장치의 하나 이상의 IC에 의해 구현되는 하드웨어 회로의 모듈이다. 모듈(0710 내지 0790)은 별도의 모듈로 설명되어 있지만 일부 모듈은 단일 모듈로 결합될 수 있다.
파서(0790)(또는 엔트로피 디코더)는 비트스트림(0795)을 수신하고 비디오 코딩 또는 이미지 코딩 표준에서 정의된 신택스에 따라 초기 파싱을 수행한다. 파싱된 신택스 요소는 다양한 헤더 요소, 플래그뿐만 아니라 양자화된 데이터(또는 양자화된 계수)(0712)를 포함한다. 파서(0790)는 상황 적응 이진 산술 코딩(CABAC) 또는 허프만 인코딩과 같은 엔트로피 코딩 기술을 사용하여 다양한 신택스 요소를 파싱(parsing)한다.
역양자화 모듈(0705)은 양자화된 데이터(또는 양자화된 계수)(0712)를 역양자화하여 변환 계수를 얻고, 역변환 모듈(0715)은 변환 계수(0716)에 대해 역변환을 수행하여 재구성된 잔여 신호(0719)를 생성한다. 재구성된 잔여 신호(0719)는 디코딩된 픽셀 데이터(0717)를 생성하기 위해 인트라 예측 모듈(0725) 또는 모션 보상 모듈(0730)로부터의 예측된 픽셀 데이터(0713)와 함께 추가된다. 디코딩된 픽셀은 인-루프 필터(0745)에 의해 필터링되고 디코딩된 화상 버퍼(0750)에 저장된다. 일부 실시예에서, 디코딩된 화상 버퍼(0750)는 비디오 디코더(0700) 외부의 저장소이다. 일부 실시예에서, 디코딩된 화상 버퍼(0750)는 비디오 디코더(0700) 내부의 저장소이다.
인트라 예측 모듈(0725)은 비트스트림(0795)으로부터 인트라 예측 데이터를 수신하고, 이에 따라 디코딩된 화상 버퍼(0750)에 저장된 디코딩된 픽셀 데이터(0717)로부터 예측된 픽셀 데이터(0713)를 생성한다. 일부 실시예에서, 디코딩된 픽셀 데이터(0717)는 인트라 예측 및 공간적 MV 예측을 위해 라인 버퍼(도시되지 않음)에 또한 저장된다.
일부 실시예에서, 디코딩된 화상 버퍼(0750)의 콘텐츠는 디스플레이하기 위해 사용된다. 디스플레이 디바이스(0755)는 디스플레이하기 위해 디코딩된 화상 버퍼(0750)의 콘텐츠를 직접 검색하거나, 디코딩된 화상 버퍼의 콘텐츠를 디스플레이 버퍼로 검색한다. 일부 실시예에서, 디스플레이 디바이스는 픽셀 전송을 통해 디코딩된 화상 버퍼(0750)로부터 픽셀 값을 수신한다.
모션 보상 모듈(0730)은 모션 보상 MV(MC MV)에 따라 디코딩된 화상 버퍼(0750)에 저장된 디코딩된 픽셀 데이터(0717)로부터 예측된 픽셀 데이터(0713)를 생성한다. 이들 모션 보상 MV는 비트스트림(0795)으로부터 수신된 잔여 모션 데이터를 MV 예측 모듈(0775)로부터 수신된 예측된 MV와 더하여 디코딩된다.
MV 예측 모듈(0775)은 이전 비디오 프레임을 디코딩하기 위해 생성된 참조 MV, 예를 들면, 모션 보상을 수행하기 위해 사용된 모션 보상 MV를 기반으로 예측된 MV를 생성한다. MV 예측 모듈(0775)은 MV 버퍼(0765)로부터 이전 비디오 프레임의 참조 MV를 검색한다. 비디오 디코더(0700)는 현재 비디오 프레임을 디코딩하기 위해 생성된 모션 보상 MV를, 예측된 MV를 생성하기 위한 참조 MV로서 MV 버퍼(0765)에 저장한다.
인-루프 필터(0745)는 특히 픽셀 블록의 경계에서 코딩의 아티팩트를 감소시키기 위해 디코딩된 픽셀 데이터(0717)에 대해 필터링 또는 평활화 동작을 수행한다. 일부 실시예에서, 수행된 필터링 동작은 샘플 적응 오프셋(sample adaptive; SAO)을 포함한다. 일부 실시예에서, 필터링 동작은 적응 루프 필터(adaptive loop filter; ALF)를 포함한다.
도 8은 PMVD 및 DMVR을 구현하는 비디오 디코더(0700)의 일부를 도시한다. 구체적으로, 이 도면은 비디오 디코더(0700)의 인터 예측 모듈(0740)의 구성 요소를 예시한다. 일부 실시예에서, 비디오 디코더(0700)의 인터 예측 모듈(0740)은 인터 디코더(0180)를 구현한다. 예시된 바와 같이, 인터 예측 모듈(0740)은 MV 버퍼(0765)로부터 후보 모션 벡터를 검색하고 디코딩된 화상 버퍼(0750)의 콘텐츠를 검색하여 현재 블록의 양방향 예측을 위한 MV 쌍을 생성한다.
인터 예측 모듈(0740)은 모션 보상 모듈(0730), MV 선택기(0805), 개선 제어기(810), 패턴 매칭 엔진(0820), 검색 버퍼(0830), 및 왜곡 비용 계산기(0840)를 포함한다. MV 선택기(0805)는 MV 버퍼(0765)로부터 후보 모션 벡터를 검색하고 후보들을 패턴 매칭 엔진(0820)에 제공한다. 패턴 매칭 엔진(0820)은 결국 양방향 매칭 또는 템플릿 매칭에 따라 현재 블록에 대한 MV 쌍(MV0 및 MV1)을 생성한다. 패턴 매칭 엔진(0820)은 또한 서브블록 MV 개선 동안 서브블록 각각에 대해 MV 쌍을 생성할 수 있다. MV 쌍은 디코딩된 화상 버퍼(0750)로부터 선택적으로 검색된 임시 콘텐츠를 저장하는 검색 버퍼(0830)로부터 픽셀 데이터를 검색하는 데 사용된다. 일부 실시예에서, 검색 버퍼(0830)는 비디오 디코더(0700)의 내부 메모리 디바이스에 의해 구현되는 반면, 디코딩된 화상 버퍼(0750)는 비디오 디코더(0700) 외부의 외부 메모리 디바이스일 수 있다. 내부 메모리 디바이스는 외부 메모리 디바이스보다 용량이 훨씬 작을 수 있다.
검색 버퍼(0830)로부터 검색된 픽셀 데이터는 왜곡 비용 계산기(0840)에 의해 MV 쌍과 연관된 왜곡 비용을 계산하는 데 사용된다. 검색된 픽셀 데이터는 현재 블록과 동일한 모션 궤적을 따르거나 현재 블록과 매칭되는 템플릿을 갖는 참조 픽셀 세트에 대응할 수 있다. 계산된 왜곡 비용(예를 들어, SSD 또는 SAD)은 최저 왜곡 비용을 갖는 MV 쌍을 식별하기 위해 패턴 매칭 엔진(0820)에 의해 사용될 수 있다. 식별된 MV 쌍은 현재 블록을 재구성하기 위해 모션 보상 모듈(0730)에 제공된다.
일부 실시예에서, 인터 예측 모듈(0740)은 왜곡 비용을 계산할 때, 예를 들어, 홀수 또는 짝수 라인과 같은 픽셀 데이터의 미리 정의된 서브세트만을 고려함으로써 픽셀 데이터를 서브샘플링한다. 일부 실시예들에서, 검색 버퍼(0830)를 구현하는 내부 메모리의 크기가 감소될 수 있도록 검색 버퍼에 저장된 데이터가 서브샘플링된다. 일부 실시예에서, 검색 버퍼(0830)의 출력은 서브샘플링되어 왜곡 비용 계산기(0840)에서 SSD 또는 SAD에 대한 계산의 수가 감소될 수 있다.
개선 제어기(0810)는 CU의 크기, 높이, 또는 폭이 문턱값보다 큰지 여부와 같은 특정 조건에 기초하여 DMVR의 특정 스테이지의 MV 개선을 활성화 또는 비활성화할지 여부를 결정한다. 이들 조건은 아래 섹션 IV에 더 설명될 것이다. 비디오 디코더의 개선 제어(0810)는 파서(0790)에 의해 제공되는 비트스트림(0795)의 콘텐츠에 기초하여 이들 조건들을 결정할 수 있다.
IV. 조건적 MV 개선
일부 실시예에서, CU가 문턱 크기보다 클 때 현재 CU에 대해 MV 개선이 허용되지 않는다. MV 개선가 허용되면, 인터 예측 모듈은 MV 검색 스테이지에서 MV 쌍을 개선하기 위해 검색(예를 들어, 다이아몬드 검색 또는 도 4를 참조하여 설명된 검색)을 수행한다. 일부 실시예에서, 현재 CU가 문턱 크기보다 큰 경우, 인터 예측 모듈은 (MV 수직 개선이 여전히 활성화될 수 있지만) CU에 대한 MV 수평 개선을 비활성화한다. 일부 실시예에서, 현재 CU가 문턱 크기보다 큰 경우, 인터 예측 모듈은 (MV 수평 개선이 여전히 활성화될 수 있지만) CU에 대한 MV 수직 개선을 비활성화한다.
일부 실시예에서, 인터 예측 모듈(0540 또는 0740)은 SSD 또는 SAD 계산을 단순화하기 위해 현재 CU를 MV 검색 스테이지에 대한 다수의 더 작은 분할된 단위로 분할할 수 있다. 예를 들어, 현재 CU의 크기가 문턱 크기보다 크면, 인터 예측 모듈은 CU를 다수의 분할된 단위로 분할하고 각 분할된 단위에 대해 MV 검색 프로세스를 수행한다. 반대로, 현재 CU의 크기가 문턱 크기보다 작으면, 인터 예측 모듈은 CU를 분할하지 않고 CU 전체에 대한 MV 검색 프로세스를 수행한다. 예를 들어, 문턱값 크기가 128x128로 정의되고 현재 CU 크기가 256x256인 경우, 인터 예측 모듈은 CU를 각각 128x128 크기의 4개의 분할된 단위로 분할하고 각 분할된 단위에 대해 MV 검색 프로세스를 수행한다.
일부 실시예에서, 인터 예측 모듈은 현재 CU를 분할된 단위로 분할하고 CU가 비디오 화상의 격자 단위 경계를 가로지르는 경우 각 분할된 단위에 대해 독립적으로 MV 개선을 수행한다. 격자 단위는 CTU에서 격자_폭 x 격자_높이의 직사각형 영역으로 정의된다. 하나의 CTU는 여러 격자 단위로 분할될 수 있다. CU가 격자 단위 내에 완전히 포함되지 않은 경우, 인터 예측 모듈은 현재 CU를 여러 분할된 단위로 분할하고 각각의 분할된 단위가 하나의 격자 단위에 속한다면 분할된 단위에 대해 독립적으로 MV 개선을 수행한다.
현재 CU는 여러 서브블록을 포함할 수 있다. MV 개선 프로세스는 서브블록 MV 개선 스테이지 동안 독립적으로 각 서브블록에 적용될 수 있다. 서브블록 MV 개선 스테이지는 서브블록에 대한 MV를 개선하기 위해 타겟 영역을 검색할 때 상당한 메모리 대역폭을 필요로 한다. 메모리 액세스를 줄이기 위해, 일부 실시예에서 비디오 코덱은 조건적으로 서브블록 MV 개선 스테이지를 스킵한다. 즉, 서브블록 MV 개선이 항상 수행되는 것은 아니다. 일부 실시예에서, 현재 CU 크기가 문턱 크기보다 작으면, 서브블록 MV 개선 프로세스가 스킵된다. MxN은 임의의 정수, 예를 들면, 4, 8, 16 등일 수 있다.
일부 실시예에서, 서브블록 MV 개선을 수행하기 위한 조건은 참조 프레임 선택, 예측 방향 또는 모션 벡터의 크기를 포함하는, 모션 정보에 기초하여 결정된다. 예를 들어, 일부 실시예에서, 참조 프레임 선택이 0과 같거나 모션 벡터의 크기가 문턱값보다 클 때 서브블록 MV 개선 스테이지가 수행된다.
일부 실시예들에서, 서브블록 MV 개선을 수행하기 위한 조건은 현재 CU 크기와 이웃 CU 크기 사이의 비율에 기초하여 결정된다. 현재 CU 크기가 이웃 CU 크기보다 훨씬 큰 경우, 서브블록 MV 개선이 허용된다. 그렇지 않으면 현재 CU에 대한 서브블록 MV 개선가 비활성화된다. 조건적 서브블록 MV 개선은 인코더 및/또는 디코더(예를 들어, 비디오 인코더(0500)의 인터 예측 모듈(0540) 및/또는 비디오 디코더(0700)의 인터 예측 모듈(0740))에 의해 구현될 수 있다.
앞서 언급한 바와 같이, MV 검색 스테이지에서 MV 개선 수행 여부, 서브블록 MV 개선 수행 여부, 또는 CU 분할 여부를 결정할 때, CU의 크기가 문턱 크기와 비교된다. 일부 실시예에서, CU의 선형 치수(예를 들어, CU의 폭 또는 높이)가 문턱값보다 큰 경우, CU는 문턱값 크기보다 큰 것으로 간주된다. 반대로, CU의 선형 치수가 문턱값보다 작으면 CU는 문턱값 크기보다 작은 것으로 간주된다. 일부 실시예에서, CU의 면적이 문턱 면적보다 크면 CU는 문턱 크기보다 큰 것으로 간주되고, CU의 면적이 문턱 면적보다 작으면 CU가 문턱 크기보다 작은 것으로 간주된다.
일부 실시예에서, CU는 문턱 높이(M) 및 문턱 폭(N)에 의해 명시되는 문턱 크기 MxN과 비교된다. M과 N의 값은 사전 정의되거나 시퀀스 수준, 화상 수준 또는 슬라이스 수준에서 시그널링될 수 있다. M 및 N 값은 또한 비디오 해상도 또는 표준 프로필에 기초해 유도될 수 있다. CU는, (i) CU의 면적이 MxN보다 큰 경우, (ii) CU의 높이가 M보다 큰 경우, (iii) CU의 폭이 N보다 큰 경우, (iv) CU의 폭이 N보다 크고, CU의 높이가 M보다 큰 경우, 또는 (v) CU의 폭이 N보다 크거나 CU의 높이가 M보다 큰 경우, 문턱 크기보다 큰 것으로 간주될 수 있다.
큰 CU의 경우. DMVR 프로세스는 더 작은 CU보다 더 많은 디코더 측 동작과 더 많은 데이터 비트 깊이를 요구할 수 있다. 큰 CU에 대한 DMVR의 계산 복잡도를 줄이기 위해, 인터 예측 모듈(0540 또는 0740)은 왜곡 비용 계산시 픽셀 데이터를 서브샘플링하여 MV 개선 프로세스를 수행할 수 있다. 예를 들어, 인터 예측 모듈은 현재 CU에 대한 최상의 MV를 선택하기 위해 홀수 행 또는 짝수 행에서의 차이만을 사용할 수 있다.
일부 실시예에서, 비디오 인코더는 MV 개선에 의해 2개의 연속 CU를 인코딩하지 않도록 제약된다. 예를 들어, 현재 CU의 이전 CU가 속도 왜곡 결정으로 인해 MV 개선에 의해 인코딩되면, 현재 CU는 MV 개선에 의해 인코딩되는 것이 방지된다. 일부 실시예에서, 이전 CU가 MV 개선에 의해 인코딩될 때마다 MV 개선을 위한 비트스트림 신택스는 현재 CU에 대해 부재한다.
인코더는 비트스트림에서 MV 개선 신택스를 사용하여 MV 개선이 턴온(turn on)되는지 여부를 디코더에 알릴 수 있다. 일부 실시예에서, 비디오 인코더는 MV 개선 동작을 턴오프하고, MV 개선 신택스는 인코더로부터 디코더로 0으로서 시그널링된다. 일부 실시예에서, 큰 CU(크기 ≥ 미리 정의된 문턱값)에 대해, MV 개선 신택스는 비트스트림으로부터 제거되고, 디코더는 CU의 크기에 기초하여 MV 개선을 자동으로 턴오프하여 비트스트림에서 적어도 하나의 비트를 절약한다.
도 9a 및 도 9b는 비디오 코덱(인코더 또는 디코더)이 비디오 프레임의 픽셀 블록을 인코딩 또는 디코딩할 때 PMVD 및 DMVR을 구현하기 위해 사용하는 프로세스를 개념적으로 도시한다. 일부 실시예에서, 비디오 인코더(0500) 또는 비디오 디코더(0700)를 구현하는 컴퓨팅 디바이스의 하나 이상의 프로세싱 유닛(예를 들어, 프로세서)은 컴퓨터 판독 가능 매체에 저장된 명령어를 실행함으로써 프로세스(0900)를 수행한다. 일부 실시예에서, 비디오 인코더(0500) 또는 비디오 디코더(0700)를 구현하는 전자 장치는 프로세스(0900)를 수행한다.
도 9a에 도시된 바와 같이, 비디오 코덱은(단계(0902)에서) 코딩될 현재 블록으로서 비디오 프레임의 픽셀 블록을 수신한다. 픽셀 블록은 PU 또는 CU로서 비트스트림으로 인코딩될 원시 비디오(raw video)로부터 올 수 있다. 픽셀 블록은 또한 픽셀 데이터로 디코딩될 PU 또는 CU로서 비트스트림으로부터 올 수 있다.
비디오 코덱은(단계(0904)에서) PMVD 및 DMVR을 사용하여 현재 블록을 코딩할지 여부를 결정한다. 비디오 인코더에서, 모션 추정 프로세스 또는 모듈은 속도 왜곡 고려 사항을 기반으로 현재 블록에 대해 PMVD 및 DMVR을 사용할지 여부를 결정할 수 있다. 현재 블록이 PMVD 및 DMVR로 코딩되는지 여부는 비디오 프레임을 인코딩하는 비트스트림에 표시될 수 있다. 일부 실시예에서, 비트스트림은 블록이 PMVD 및 DMVR로 인코딩되는지 여부를 나타내는 플래그를 포함할 수 있다. 일부 실시예에서, 비트스트림은 FRUC 모드가 사용되는지 여부를 나타내는 플래그를 포함할 수 있다. 비트스트림을 수신하는 디코더는 PMVD 및 DMVR 수행 여부를 결정하기 위해 플래그를 사용할 수 있다. 일부 실시예들에서, 그러한 플래그는 비트스트림이 스킵 모드 또는 병합 모드가 참임을 나타내는 플래그를 포함할 때 존재한다. 현재 블록이 PMVD 및 DMVR로 코딩된 경우, 프로세스는 단계(0908)로 진행한다. 그렇지 않으면, 프로세스는 단계(0906)로 진행한다.
단계(0906)에서, 비디오 코덱은 PMVD 이외의 모드, 즉, 병합 모드, 인트라 모드, AMVP 모드 등과 같은 코딩 모드를 사용하여 현재 블록을 인코딩하거나 디코딩한다. 그 후 프로세스(0900)는 종료되고 비디오 코덱은 또 다른 블록을 인코딩 또는 디코딩하도록 진행할 수 있다.
단계(0908)에서, 비디오 코덱은 현재 비디오 화상에 대한 현재 픽셀 블록을 코딩하기 위한 MV 쌍을 식별한다. MV 쌍은, 제1 참조 프레임에서의 제1 참조 픽셀 세트를 나타내는 제1 모션 벡터와, 제2 참조 프레임에서의 제2 참조 픽셀 세트를 나타내는 제2 모션 벡터를 포함한다. 비디오 코덱은 미리 정의된 후보 모션 벡터 세트, 예를 들어, 현재 블록의 병합 목록으로부터의 후보 모션 벡터, 현재 블록의 공간적 이웃으로부터 상속된 모션 벡터, 모든 참조 프레임(목록0 및 목록1)의 모든 모션 벡터 등을 기반으로 MV 쌍을 식별할 수 있다. 그 후 프로세스는 단계(0910)로 진행한다.
비디오 코덱은 (단계(0910)에서) 현재 블록에 대한 MV 개선을 턴오프할 것인지 또는 허용할 것인지를 결정한다. 일부 실시예에서, MV 개선 신택스 요소가 비트스트림에 존재하고, 디코더는 MV 개선 신택스 요소에 기초하여 MV 개선을 턴오프하거나 허용할 수 있다. 일부 실시예에서, CU의 크기가 문턱 크기보다 큰 경우, 비디오 코덱은 MV 개선 신택스 요소를 검사하지 않고 MV 개선 동작을 턴오프하고, MV 개선 신택스 요소는 비트스트림에 없을 수 있다. 일부 실시예에서, 인코더는 MV 개선을 수행하지 않고, MV 개선 신택스가 없거나 0으로 설정되고, 디코더는 CU의 크기에 기초하여 MV 개선을 턴오프하거나 허용할지를 결정한다. 일부 실시예에서, 현재 CU의 이전 CU가 MV 개선으로 코딩되면, 현재 CU는 MV 개선으로 코딩되는 것이 방지된다. 현재 블록에 대해 MV 개선이 턴오프되면, 프로세스는 단계(0912)로 진행한다. MV 개선이 허용되면 프로세스는 단계(0914)로 진행한다.
단계(0912)에서, 비디오 코덱은 MV 개선을 수행하지 않고 식별된 MV 쌍을 사용하여 현재 블록을 코딩한다. 그 후 프로세스(0900)는 종료되고 비디오 코덱은 다른 블록을 코딩하도록 진행할 수 있다.
단계(0914)에서, 비디오 코덱은 현재 블록에 대한 블록 수준 MV 검색 및 개선을 수행한다. 일부 실시예에서, 비디오 코덱은 MV 쌍(또는 MV 쌍에 의해 표시된 참조 픽셀 세트)과 연관된 왜곡 비용을 최소화하기 위해 다이아몬드 검색을 수행함으로써 MV 쌍을 개선한다.
일부 실시예에서, 왜곡 비용은 (도 4를 참조하여 설명된 바와 같이) MV 쌍에 의해 표시된 참조 픽셀 세트들 간의 차이에 기초하여 계산된다. 일부 실시예에서, 왜곡 비용은 (도 3을 참조하여 설명된 바와 같이) 현재 블록의 이웃 픽셀 및 MV 쌍에 의해 표시된 참조 픽셀 세트의 이웃 픽셀에 기초하여 계산된다. 일부 실시예에서, 왜곡 비용은 MV 쌍에 의해 표시된 참조 픽셀 세트와 MV 쌍의 미러에 의해 표시된 참조 픽셀 세트 간의 차이에 기초하여 계산된다(도 2a 및 도 2b를 참조하여 설명됨).
일부 실시예에서, 왜곡 비용은 MV 쌍이 가리키는 픽셀 데이터를 서브샘플링함으로써 계산된다. 일부 실시예에서, 현재 CU가 문턱 크기보다 큰 경우, 비디오 코덱은 CU에 대한 MV 수평 개선을 비활성화한다. 일부 실시예에서, 현재 CU가 문턱 크기보다 큰 경우, 비디오 코덱은 CU에 대한 MV 수직 개선을 비활성화한다. 그 후 프로세스는 단계(0916)로 진행한다.
단계(0916)에서, 비디오 코덱은 서브블록 수준 MV 개선을 스킵할지 여부를 결정한다. 즉, 비디오 코덱은 현재 블록이 현재 블록에 대한 서브블록 MV 개선 스테이지를 수행하기 위한 조건을 충족하는지 여부를 결정한다. 일부 실시예에서, 현재 CU 크기가 문턱 크기보다 작으면, 서브블록 MV 개선 스테이지가 생략된다. 일부 실시예에서, 서브블록 MV 개선을 수행하기 위한 조건은 참조 프레임 선택, 예측 방향, 및 모션 벡터의 크기를 포함하는 모션 정보에 기초하여 결정된다. 일부 실시예들에서, 서브블록 MV 개선을 수행하기 위한 조건은 현재 CU 크기와 이웃 CU 크기 사이의 비율에 기초하여 결정된다. 현재 CU 크기가 이웃 CU 크기보다 훨씬 큰 경우, 서브블록 MV 개선이 허용된다. 그렇지 않으면, 현재 CU에 대한 서브블록 MV 개선이 비활성화된다. 서브블록 수준 MV 개선을 스킵하기 위한 조건이 충족되면, 프로세스는 단계(0920)로 진행한다. 서브블록 수준 MV 개선을 스킵하기 위한 조건이 충족되지 않으면, 프로세스는 단계(0918)로 진행한다.
단계(0918)에서, 비디오 코덱은 각 서브블록에 대한 한 쌍의 개선된 MV를 생성하기 위해 각 서브블록에 대한 서브블록 수준 MV 개선을 수행한다. 각 서브블록에 대해, 비디오 코덱은 MV 쌍(또는 MV 쌍에 의해 표시된 참조 픽셀 세트)과 연관된 왜곡 비용을 최소화하기 위해 다이아몬드 검색을 수행함으로써 MV 쌍을 개선한다. 일부 실시예에서, 왜곡 비용은 MV 쌍이 가리키는 픽셀 데이터를 서브샘플링함으로써 계산된다. 그 후 프로세스(0900)는 ekseP(0920)로 진행한다.
단계(0920)에서, 비디오 코덱은 블록에 대해 개선된 MV 쌍 또는 서브블록 또는 분할된 단위에 대해 개선된 MV 쌍을 사용하여, 현재 블록을 인코딩 또는 디코딩하여 인터 예측을 수행한다. 그 후 프로세스(0900)는 종료되고 비디오 코덱은 또 다른 픽셀 블록을 인코딩 또는 디코딩하도록 진행할 수 있다.
일부 실시예에서, 비디오 코덱은 MV 개선을 수행할지 여부를 결정하기 위해 현재 CU의 크기를 사용하는 것이 아니라, MV 개선을 위해 현재 CU를 분할할지를 결정하기 위해 현재 CU의 크기를 사용한다.
도 9b에 도시된 바와 같이, 단계(0908)에서 현재 블록을 코딩하기 위한 MV 쌍을 식별한 후, 비디오 코덱은 (단계(0922)에서) 현재 블록을 개선을 위해 분할된 단위로 분할할지 여부를 결정한다. 현재 CU의 크기가 문턱 크기보다 크면, 비디오 코덱은 CU를 다수의 분할된 단위로 분할하고 분할된 각 단위에 대한 MV 검색 프로세스를 수행한다. 반대로 CU 크기가 문턱 크기보다 작으면, 비디오 코덱은 CU를 하나의 분할된 단위로 간주하고 CU 전체에 대한 MV 검색 프로세스를 수행한다. 일부 실시예에서, CU의 선형 치수(예를 들어, CU의 폭 또는 높이)가 문턱값보다 큰 경우, 현재 CU는 문턱값 크기보다 큰 것으로 간주된다. 일부 실시예에서, CU의 면적(예를 들어, CU의 폭 x 높이)이 문턱값보다 큰 경우, 현재 CU는 문턱값 크기보다 큰 것으로 간주된다. 일부 실시예에서, CU가 미리 정의된 격자 단위 내에 완전히 포함되지 않으면, CU는 문턱 크기보다 큰 것으로 간주된다. 일부 실시예에서, CU가 격자 단위 내에 완전히 포함되지 않은 경우, 비디오 코덱은, 현재 CU를 여러 분할된 단위로 분할하고, 분할된 각 단위가 하나의 격자 단위에 속한다면, 각 분할된 단위에 대해 독립적으로 MV 개선을 수행한다.
MV 개선을 위해 블록이 분할되어야 하는 경우, 프로세스는 단계(0924)로 진행한다. 블록이 MV 개선을 위해 분할되지 않을 경우, 프로세스는 단계(0914)로 진행하여 단계(0908)에서 현재 블록에 대해 식별된 MV 쌍을 개선하여 현재 블록에 대해 전체적으로 MV 검색 및 개선을 수행한다.
단계(0924)에서, 비디오 코덱은 현재 블록을 분할된 단위로 분할하고 분할된 각 단위에 대해 개별적으로 MV 검색 및 개선을 수행한다. 각각의 분할된 단위에 대해, 비디오 코덱은 MV 쌍(또는 MV 쌍에 의해 표시된 참조 픽셀 세트)과 연관된 왜곡 비용을 최소화하기 위해 다이아몬드 검색을 수행함으로써 MV 쌍을 개선한다. 일부 실시예에서, 왜곡 비용은 MV 쌍이 가리키는 픽셀 데이터를 서브샘플링함으로써 계산된다. 그런 다음 프로세스(0900)는 0920으로 진행된다.
일부 실시예에서, 비디오 코덱은 비디오 코덱이 CU에 대한 MV 개선을 허용했다면 MV 개선을 위해 CU를 분할할지 여부를 결정할 수 있다. 이러한 경우, 비디오 코덱이 단계(0908)에서 현재 블록을 코딩하기 위한 MV 쌍을 식별한 후, 프로세스(0900)는 비디오 코덱에 대한 단계(0910)로 진행하여 현재 블록에 대한 MV 개선을 턴오프하거나 허용할지를 결정할 수 있다. 이러한 전환은 도 9b에서 점선으로 도시되어 있다. 비디오 코덱이 MV 개선을 허용하는 경우, 프로세스(0900)는 MV 개선을 위해 블록을 분할할지 여부를 결정하기 위해 단계(0922)로 진행한다.
V. 예시적인 전자 시스템
전술한 특징 및 응용 중 다수는 컴퓨터 판독 가능 저장 매체(컴퓨터 판독 가능 매체라고도 함)에 기록된 명령어 세트로 명시되는 소프트웨어 프로세스로서 구현된다. 이들 명령어가 하나 이상의 계산 또는 프로세싱 유닛(들)(예를 들면, 하나 이상의 프로세서, 프로세서 코어 또는 기타 프로세싱 유닛)에 의해 실행될 때, 이들 명령어는 프로세싱 유닛(들)이 명령어에 표시된 동작을 수행하도록 한다. 컴퓨터 판독 가능한 매체의 예로는 CD-ROM, 플래시 드라이브, 랜덤 액세스 메모리(random-access memory; RAM) 칩, 하드 드라이브, 소거 가능 프로그램 가능 판독 전용 메모리(erasable programmable read only memories; EPROM), 전기적으로 소거 가능 프로그램 가능 판독 전용 메모리(electrically erasable programmable read-only memory; EEPROM) 등을 포함하지만, 이들에 제한되지는 않는다. 컴퓨터 판독 가능 매체는 무선 또는 유선 접속을 통과하는 반송파 및 전자 신호를 포함하지 않는다.
본 명세서에서, "소프트웨어"라는 용어는 프로세서에 의한 프로세싱을 위해 메모리로 판독될 수 있는 자기 저장소에 저장된 판독 전용 메모리 또는 애플리케이션에 상주하는 펌웨어를 포함하는 것을 의미한다. 또한, 일부 실시예에서, 다수의 소프트웨어 발명은 별개의 소프트웨어 발명을 유지하면서 더 큰 프로그램의 서브 부분(sub-parts)으로 구현될 수 있다. 일부 실시예에서, 다수의 소프트웨어 발명은 또한 별도의 프로그램으로 구현될 수 있다. 마지막으로, 여기에 설명된 소프트웨어 발명을 함께 구현하는 개별 프로그램의 임의의 조합은 본 개시의 범위 내에 있다. 일부 실시예에서, 소프트웨어 프로그램은 하나 이상의 전자 시스템에서 동작하도록 설치될 때 소프트웨어 프로그램의 동작을 실행하고 수행하는 하나 이상의 특정 기계 구현을 정의한다.
도 10은 본 개시의 일부 실시예들이 구현되는 전자 시스템(1000)을 개념적으로 도시한다. 전자 시스템(1000)은 컴퓨터(예를 들어, 데스크톱 컴퓨터, 개인용 컴퓨터, 태블릿 컴퓨터 등), 전화, PDA, 또는 임의의 다른 종류의 전자 디바이스일 수 있다. 이러한 전자 시스템은 다양한 유형의 컴퓨터 판독 가능 매체 및 다양한 다른 유형의 컴퓨터 판독 가능 매체를 위한 인터페이스를 포함한다. 전자 시스템(1000)은 버스(1005), 프로세싱 유닛(들)(1010), 그래픽 프로세싱 유닛(graphics-processing unit; GPU)(1015), 시스템 메모리(1020), 네트워크(1025), 판독 전용 메모리(1030), 영구 저장 디바이스(1035), 입력 디바이스(1040), 및 출력 디바이스(1045)를 포함한다.
버스(1005)는 전자 시스템(1000)의 수많은 내부 디바이스를 통신 가능하게 접속하는 모든 시스템, 주변 디바이스, 및 칩셋 버스를 집합적으로 나타낸다. 예를 들어, 버스(1005)는 프로세싱 유닛(들)(1010)을 GPU(1015), 판독 전용 메모리(1030), 시스템 메모리(1020), 및 영구 저장 디바이스(1035)와 통신 가능하게 접속한다.
이러한 다양한 메모리 유닛으로부터, 프로세싱 유닛(들)(1010)은 본 개시의 프로세스를 실행하기 위해 실행할 명령어 및 프로세싱할 데이터를 검색한다. 프로세싱 유닛(들)은 상이한 실시예들에서 단일 프로세서 또는 멀티 코어 프로세서일 수 있다. 일부 명령어는 GPU(1015)로 전달되고 실행된다. GPU(1015)는 다양한 계산을 오프로드(offload)하거나 프로세싱 유닛(들)(1010)에 의해 제공되는 이미지 프로세싱을 보완할 수 있다.
판독 전용 메모리(ROM)(1030)는 프로세싱 유닛(들)(1010) 및 전자 시스템의 다른 모듈에 의해 필요한 정적 데이터 및 명령어를 저장한다. 한편, 영구 저장 디바이스(1035)는 판독 및 기록 메모리 디바이스이다. 이 디바이스는 전자 시스템(1000)이 꺼져 있을 때에도 명령어 및 데이터를 저장하는 비휘발성 메모리 유닛이다. 본 개시의 일부 실시예는 영구 저장 디바이스(1035)로서 대용량 저장 디바이스(예를 들면, 자기 또는 광 디스크 및 그에 대응하는 디스크 드라이브)를 사용한다.
다른 실시예는 영구 저장 디바이스로서 이동식 저장 디바이스(예를 들면, 플로피 디스크, 플래시 메모리 디바이스 등, 및 그에 대응하는 디스크 드라이브)를 사용한다. 영구 저장 디바이스(1035)와 같이, 시스템 메모리(1020)는 판독 및 기록 메모리 디바이스이다. 그러나, 저장 디바이스(1035)와 달리, 시스템 메모리(1020)는 랜덤 액세스 메모리와 같은 휘발성 판독 및 기록 메모리이다. 시스템 메모리(1020)는 프로세서가 런타임에 필요로 하는 명령어 및 데이터의 일부를 저장한다. 일부 실시예에서, 본 개시에 따른 프로세스는 시스템 메모리(1020), 영구 저장 디바이스(1035), 및/또는 판독 전용 메모리(1030)에 저장된다. 예를 들어, 다양한 메모리 유닛은 일부 실시예에 따라 멀티미디어 클립(multimedia clips)을 프로세싱하기 위한 명령어를 포함한다. 이러한 다양한 메모리 유닛으로부터, 프로세싱 유닛(들)(1010)은 일부 실시예의 프로세스를 실행하기 위해 실행할 명령어 및 프로세싱할 데이터를 검색한다.
버스(1005)는 또한 입력 및 출력 디바이스(1040 및 1045)에 접속된다. 입력 디바이스(1040)는 사용자가 전자 시스템에 정보를 전달하고 명령을 선택할 수 있게 한다. 입력 디바이스(1040)는 영숫자 키보드 및 포인팅 디바이스("커서 제어 디바이스"라고도 함), 카메라(예를 들면, 웹캠), 마이크, 또는 음성 명령을 수신하기 위한 유사한 디바이스 등을 포함한다. 출력 디바이스(1045)는 전자 시스템에 의해 생성된 이미지를 디스플레이하거나 그렇지 않으면 데이터를 출력한다. 출력 디바이스(1045)는 프린터, 및 음극선관(cathode ray tube; CRT) 또는 액정 디스플레이(liquid crystal display; LCD)와 같은 디스플레이 디바이스뿐만 아니라 스피커 또는 유사한 오디오 출력 디바이스를 포함한다. 일부 실시예는 입력 및 출력 디바이스 둘 다로 기능하는 터치 스크린과 같은 디바이스를 포함한다.
마지막으로, 도 10에서, 버스(1005)는 또한 네트워크 어댑터(미도시됨)를 통해 전자 시스템(1000)을 네트워크(1025)에 결합한다. 이러한 방식으로, 컴퓨터는 컴퓨터들의 네트워크(예를 들면, 근거리 통신망(local area network; "LAN"), 광역 통신망(wide area network; "WAN"), 또는 인트라넷, 또는 인터넷과 같은 네트워크들의 네트워크)의 일부일 수 있다. 전자 시스템(1000)의 임의의 또는 모든 구성 요소는 본 개시와 함께 사용될 수 있다.
일부 실시예는 기계 판독 가능 또는 컴퓨터 판독 가능 매체(대안적으로 컴퓨터 판독 가능 저장 매체, 기계 판독 가능 매체, 또는 기계 판독 가능 저장 매체라고 지칭됨)에 컴퓨터 프로그램 명령어를 저장하는 마이크로프로세서, 저장소 및 메모리와 같은 전자 부품을 포함한다. 이러한 컴퓨터 판독 가능한 매체의 일부 예는, RAM, ROM, 판독 전용 컴팩트 디스크(read-only compact disc; CD-ROM), 기록 가능한 컴팩트 디스크(CD-R), 재기록 가능한 컴팩트 디스크(CD-RW), 판독 전용 디지털 다목적 디스크(예를 들면, DVD-ROM, 이중 레이어 DVD-ROM), 다양한 기록 가능/재기록 가능한 DVD(예를 들면, DVD-RAM, DVD-RW, DVD+RW 등), 플래시 메모리(예를 들면, SD 카드, 미니 SD 카드, 마이크로 SD 카드 등), 자기 및/또는 솔리드 스테이트 하드 드라이브, 판독 전용 및 기록 가능한 블루레이® 디스크, 초밀도 광학 디스크, 임의의 다른 광학 또는 자기 매체, 및 플로피 디스크를 포함한다. 컴퓨터 판독 가능 매체는 적어도 하나의 프로세싱 유닛에 의해 실행 가능한 컴퓨터 프로그램을 저장할 수 있으며 다양한 동작을 수행하기 위한 명령어 세트를 포함한다. 컴퓨터 프로그램 또는 컴퓨터 코드의 예는, 컴파일러에 의해 생성되는 것과 같은 기계어 코드와, 컴퓨터, 전자 부품, 또는 인터프리터를 사용하는 마이크로프로세서에 의해 실행되는 상위 수준 코드를 포함하는 파일을 포함한다.
위의 논의는 주로 소프트웨어를 실행하는 마이크로프로세서 또는 멀티 코어 프로세서를 언급하지만, 위에서 설명한 특징 및 응용 중 상당수는 ASIC(application specific integrated circuit) 또는 필드 프로그래밍 가능 게이트 어레이(field programmable gate array; FPGA)와 같은 하나 이상의 집적 회로에 의해 수행된다. 일부 실시예에서, 이러한 집적 회로는 회로 자체에 저장된 명령어를 실행한다. 또한, 일부 실시예는 프로그램 가능 논리 디바이스(programmable logic device; PLD), ROM, 또는 RAM 디바이스에 저장된 소프트웨어를 실행한다.
본 명세서 및 본 출원의 임의의 청구항들에 사용된 용어 "컴퓨터", "서버", "프로세서", 및 "메모리"는 모두 전자 또는 기타 기술 디바이스를 지칭한다. 이들 용어는 사람 또는 사람 그룹을 제외한다. 명세서를 위해, 디스플레이(display) 또는 디스플레이하는(displaying)이라는 용어들은 전자 디바이스에 디스플레이하는 것을 의미한다. 본 명세서 및 본 출원의 임의의 청구항에서 사용되는 "컴퓨터 판독 가능 매체", "컴퓨터 판독 가능 매체들" 및 "기계 판독 가능 매체"라는 용어는 전적으로 컴퓨터에 의해 판독 가능한 형태로 정보를 저장하는 유형의 물리적 객체로 제한된다. 이들 용어는 임의의 무선 신호, 유선 다운로드 신호, 및 임의의 다른 일시적인 신호(ephemeral signals)를 제외한다.
본 개시가 다수의 특정 세부 사항을 참조하여 설명되었지만, 당업자는 본 개시가 본 개시의 사상을 벗어나지 않고 다른 특정 형태로 구현될 수 있음을 인식할 것이다. 또한, 다수의 도면(도 9a 및 도 9b를 포함함)은 프로세스를 개념적으로 예시한다. 이러한 프로세스의 특정 동작은 도시되고 설명된 정확한 순서로 수행되지 않을 수 있다. 특정 동작은 하나의 연속적인 일련의 동작으로 수행되지 않을 수 있고, 상이한 특정 동작은 상이한 실시예에서 수행될 수 있다. 또한, 프로세스는 여러 서브 프로세스를 사용하거나 더 큰 매크로 프로세스(macro process)의 일부로 구현될 수 있다. 따라서, 당업자는 본 개시가 전술한 예시적인 세부 사항에 의해 제한되는 것이 아니라 첨부된 청구항들에 의해 정의되어야 한다는 것을 이해할 것이다.
추가 참고 사항(Additional Notes)
본 명세서에 기술된 주제는 때때로 상이한 다른 구성 요소 내에 포함되거나 다른 구성 요소와 접속된 상이한 구성 요소를 예시한다. 그러한 묘사된 아키텍처는 단지 예일 뿐이며 실제로 동일한 기능을 달성하는 많은 다른 아키텍처가 구현될 수 있다는 것을 이해해야 한다. 개념적 의미에서, 동일한 기능을 달성하기 위한 구성 요소의 임의의 배열은 원하는 기능이 달성되도록 효과적으로 "연관"된다. 따라서, 특정 기능을 달성하기 위해 여기에서 결합된 임의의 두 구성 요소는 아키텍처 또는 중간 구성 요소에 관계 없이 원하는 기능이 달성되도록 서로 "연관된" 것으로 보여질 수 있다. 마찬가지로, 이와 같이 연관된 임의의 두 구성 요소는 또한 원하는 기능을 달성하기 위해 서로 "동작 가능하게 접속된" 또는 "동작 가능하게 결합된" 것으로 볼 수 있으며, 그렇게 연관될 수 있는 임의의 두 구성 요소는 원하는 기능을 달성하기 위해 서로 "동작 가능하게 결합 가능한" 것으로 볼 수도 있다. 동작 가능하게 결합 가능한 것의 특정 예는 물리적으로 결합 가능하고(mateable) 그리고/또는 물리적으로 상호 작용하는 구성 요소 및/또는 무선으로 상호 작용할 수 있는 그리고/또는 무선으로 상호 작용하는 구성 요소 및/또는 논리적으로 상호 작용하는 그리고/또는 논리적으로 상호 작용할 수 있는 구성 요소를 포함하지만 이에 제한되지는 않는다.
또한, 본 명세서에 기재된 실질적으로 임의의 복수 및/또는 단수 용어의 사용에 대해, 상황 및/또는 응용에 적절한 대로, 복수에서 단수로 및/또는 단수에서 복수로 번역할 수 있다. 다양한 단수/복수 순열들(permutations)이 명료성을 위해 본 명세서에서 명확히 기재될 수 있다.
또한, 일반적으로, 본 명세서에서 그리고 특히 첨부된 청구항들(예를 들면, 첨부된 청구항들의 본체부들)에서 사용되는 용어는 일반적으로, "열린(open)" 용어들이라고 의도된다는 것, 예를 들면, 용어 "포함하는"은 "제한되지 않게 포함하는"으로 해석되어야 하고, 용어 "갖는"은 "적어도 갖는"으로 해석되어야 하며, 용어 "포함한다"는 "제한되지 않게 포함한다"로 해석되어야 한다는 것 등을 당업자가 이해할 것이다. 도입되는 청구항 기재의 특정 수가 의도되면, 이러한 의도는 청구항에서 명시적으로 기재될 것이고, 이러한 기재가 없을 시에는 이러한 의도가 존재하지 않는다는 것을 당업자가 또한 이해할 것이다. 예를 들면, 이해를 돕기 위해, 하기의 첨부된 청구항들은 청구항 기재를 도입하기 위해 도입 문구들 "적어도 하나"와 "하나 이상"의 사용을 포함할 수 있다. 그러나 이러한 문구의 사용은, 부정 관사 "a" 또는 "an"에 의한 청구항 기재(claim recitation)의 도입이 그러한 도입되는 청구항 기재를 포함하는 임의의 특정 청구항을, 단지 하나의 그러한 기재를 포함하는 구현으로 제한한다고 의미하도록 해석되어서는 안 되고, 동일한 청구항이 "하나 이상" 또는 "적어도 하나"라는 도입 어구와, "a" 또는 "an"과 같은 부정 관사(예를 들면, "a" 및/또는 "an")를 포함하는 경우에도 적어도 하나 " 또는 "하나 이상"을 의미하는 것으로 해석되어야 하며, 이러한 것은 청구항 기재를 도입하는 데 사용되는 정관사 사용에 대해서도 성립한다. 또한, 도입된 청구항 기재의 특정 수가 명시적으로 기재될지라도, 당업자는 이러한 기재가 적어도 기재된 개수를 의미하는 것으로 해석되어야 한다는 것, 예를 들면, 다른 수식어가 없이 "두 개의 기재들"의 단순한(bare) 기재는 적어도 두 개의 기재들, 또는 두 개 이상의 기재들을 의미한다는 것을 인정할 것이다. 더 나아가, "A, B와, C 등 중 적어도 하나"와 유사한 규정이 사용되는 예시에서, 일반적으로 이러한 구성은, 당업자가 이 규정을 이해할 의미로 의도되는데, 예를 들면, "A, B, 및 C 중 적어도 하나를 갖는 시스템"은 A만, B만, C만, A 및 B를 함께, A 및 C를 함께, B 및 C를 함께, 및/또는 A, B, 및 C를 함께 등을 갖는 시스템을 포함하지만, 이러한 시스템에만 제한되지는 않는다. 이러한 예시에서, "A, B, 또는 C 등 중 적어도 하나"와 유사한 규정이 사용되는 예시에서, 일반적으로 이러한 구성은, 당업자가 이 규정을 이해할 의미로 의도되는데, 예를 들면, "A, B, 또는 C 중 적어도 하나를 갖는 시스템"은 A만, B만, C만, A 및 B를 함께, A 및 C를 함께, B 및 C를 함께, 및/또는 A, B, 및 C를 함께 등을 갖는 시스템을 포함하지만, 이러한 시스템에만 제한되지는 않는다. 발명의 상세한 설명, 청구항들, 또는 도면들 중 어디에 있든지 간에, 2개 이상의 대안적 용어들을 제시하는 임의의 택일적 단어 및/또는 어구는 용어들 중 하나, 용어들 중 어느 하나, 또는 용어들 둘 다를 포함하는 가능성을 고려하도록 사실상 이해되어야 함을 당업자가 또한 이해할 것이다. 예를 들면, 어구 "A 또는 B"는 "A" 또는 "B" 또는 "A 및 B"의 가능성을 포함하는 것으로 이해될 것이다.
전술된 내용으로부터, 본 발명 개시의 다양한 구현들이 예증 목적을 위해 본 명세서에서 설명되었고, 다양한 수정들이 본 발명 개시의 범위 및 정신으로부터 이탈하지 않고 수행될 수 있다는 것이 인식될 것이다. 따라서, 본 명세서에서 개시되는 다양한 구현들은 제한되는 것으로 의도되지 않으며, 참된 범위 및 정신은 하기의 청구항들에 의해 표시된다.

Claims (29)

  1. 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법에 있어서,
    상기 비디오 시퀀스에서 현재 비디오 프레임의 현재 픽셀 블록을 코딩하기 위한 제1 모션 벡터 및 제2 모션 벡터를 식별하는 단계;
    상기 현재 픽셀 블록의 선형 치수와 크기와 문턱값 간의 비교에 기초하여 상기 현재 픽셀 블록의 모션 벡터 개선(video sequence refinement)을 수행할지 여부를 결정하는 단계;
    모션 벡터 개선이 수행될 때:
    왜곡 비용을 최소화하기 위해 상기 제1 모션 벡터 및 상기 제2 모션 벡터를 개선하는 단계; 및
    상기 개선된 제1 모션 벡터 및 제2 모션 벡터를 사용함으로써 상기 현재 픽셀 블록을 코딩하는 단계; 및
    모션 벡터 개선이 수행되지 않을 때:
    상기 식별된 제1 모션 벡터 및 제2 모션 벡터를 사용함으로써 상기 현재 픽셀 블록을 코딩하는 단계
    를 포함하는, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  2. 제1항에 있어서,
    상기 모션 벡터 개선은 상기 현재 픽셀 블록의 선형 치수가 상기 문턱값보다 클 때 수행되지 않는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  3. 제1항에 있어서,
    상기 모션 벡터 개선은 상기 현재 픽셀 블록이 미리 결정된 격자 단위(grid unit)에 의해 포함되지 않는 경우 수행되지 않는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  4. 제1항에 있어서,
    상기 현재 픽셀 블록의 선형 치수가 상기 문턱값보다 크지 않는 한, 모션 벡터 개선에 대응하는 비트스트림에서 비트를 코딩하는 단계를 더 포함하는, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  5. 제1항에 있어서,
    상기 왜곡 비용은 상기 제1 모션 벡터 및 상기 제2 모션 벡터에 의해 지시된 서브샘플링된(sub-sampled) 픽셀 데이터에 기초하여 계산되는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  6. 제1항에 있어서,
    상기 제1 모션 벡터는 제1 참조 프레임에서의 제1 참조 픽셀 세트를 나타내고, 상기 제2 모션 벡터는 제2 참조 프레임에서의 제2 참조 픽셀 세트를 나타내며,
    상기 왜곡 비용은 상기 현재 픽셀 블록의 이웃 픽셀 세트, 상기 제1 참조 픽셀 세트의 이웃 픽셀 세트, 및 상기 제2 참조 픽셀 세트의 이웃 픽셀 세트에 기초하여 계산되는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  7. 제1항에 있어서,
    상기 왜곡 비용은 상기 제1 모션 벡터 및 제1 미러링된 모션 벡터(mirrored motion vector)에 의해 지시된 참조 픽셀 세트들 간의 차이에 기초하여 계산되고, 상기 제1 미러링된 모션 벡터와 상기 제1 모션 벡터는 상기 현재 픽셀 블록을 가로지르는 동일한 모션 궤적에 있는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  8. 제1항에 있어서,
    상기 왜곡 비용은, 상기 개선된 제1 모션 벡터에 의해 지시된 제1 참조 프레임에서의 제1 참조 픽셀 세트와 상기 개선된 제2 모션 벡터에 의해 지시된 제2 참조 프레임에서의 제2 참조 픽셀 세트 간의 차이에 기초하여 계산되는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  9. 제8항에 있어서,
    상기 개선된 제1 모션 벡터 및 상기 개선된 제2 모션 벡터는 중앙 검색 위치에 대해 반대쪽 검색 위치에 기초하는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  10. 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법에 있어서,
    상기 비디오 시퀀스에서 현재 비디오 프레임의 현재 픽셀 블록을 코딩하기 위한 제1 모션 벡터 및 제2 모션 벡터를 식별하는 단계;
    상기 제1 모션 벡터 및 상기 제2 모션 벡터에 의해 지시된 픽셀 데이터를 서브샘플링함으로써 계산되는 왜곡 비용을 최소화하기 위해 상기 제1 모션 벡터 및 상기 제2 모션 벡터를 개선하는 단계; 및
    상기 개선된 제1 모션 벡터 및 제2 모션 벡터를 사용하여 상기 현재 픽셀 블록을 코딩하는 단계
    를 포함하는, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  11. 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법에 있어서,
    상기 비디오 시퀀스에서 현재 비디오 프레임의 현재 픽셀 블록을 코딩하기 위한 제1 모션 벡터 및 제2 모션 벡터를 식별하는 단계;
    상기 현재 픽셀 블록이 특정 조건을 만족하는지 여부에 기초하여 상기 현재 픽셀 블록에 대해 모션 벡터 개선을 수행할지 여부를 결정하는 단계;
    모션 벡터 개선이 수행될 때:
    상기 개선된 제1 모션 벡터에 의해 지시되는 제1 참조 프레임에서의 제1 픽셀 세트와 상기 개선된 제2 모션 벡터에 의해 지시되는 제2 참조 프레임에서의 제2 픽셀 세트 간의 차이에 기초하여 계산되는 왜곡 비용을 최소화하기 위해 상기 제1 모션 벡터 및 상기 제2 모션 벡터를 개선하는 단계;
    상기 개선된 제1 모션 벡터 및 제2 모션 벡터를 사용함으로써 상기 현재 픽셀 블록을 코딩하는 단계; 및
    모션 벡터 개선이 수행되지 않을 때:
    상기 식별된 제1 모션 벡터 및 제2 모션 벡터를 사용함으로서 상기 현재 픽셀 블록을 코딩하는 단계
    를 포함하는, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  12. 제11항에 있어서,
    상기 현재 픽셀 블록이 상기 특정 조건에 실패하지 않는 한, 모션 벡터 개선에 대응하는 비트스트림에서 비트를 코딩하는 단계를 더 포함하는, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  13. 제11항에 있어서,
    상기 현재 픽셀 블록은 상기 현재 픽셀 블록의 면적이 문턱 면적보다 작은 경우 상기 특정 조건을 만족시키는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  14. 제11항에 있어서,
    상기 현재 픽셀 블록은 상기 현재 픽셀 블록의 선형 치수가 문턱값보다 작은 경우 상기 특정 조건을 만족시키는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  15. 제11항에 있어서,
    상기 현재 픽셀 블록은, 상기 현재 픽셀 블록이 미리 결정된 격자 단위에 의해 포함되지 않는 경우 상기 특정 조건을 만족시키는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  16. 제11항에 있어서,
    상기 왜곡 비용은 상기 제1 모션 벡터 및 상기 제2 모션 벡터에 의해 지시된 서브샘플링된 픽셀 데이터에 기초하여 계산되는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  17. 제11항에 있어서,
    상기 개선된 제1 모션 벡터 및 상기 개선된 제2 모션 벡터는 중앙 검색 위치에 대해 반대쪽 검색 위치에 기초하는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  18. 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법에 있어서,
    상기 비디오 시퀀스에서 현재 비디오 프레임의 현재 픽셀 블록을 코딩하기 위한 제1 모션 벡터 및 제2 모션 벡터를 식별하는 단계;
    상기 현재 픽셀 블록이 특정 조건을 만족하는지 여부에 기초하여 모션 벡터 개선을 위해 상기 현재 픽셀 블록을 분할할지 여부를 결정하는 단계;
    모션 벡터 개선을 위해 상기 현재 픽셀 블록이 분할될 때:
    상기 현재 픽셀 블록을 복수의 분할된 단위로 분할하는 단계;
    상기 복수의 분할된 단위에 대해 상기 제1 모션 벡터 및 상기 제2 모션 벡터를 개별적으로 개선하는 단계;
    상기 개선된 제1 모션 벡터 및 제2 모션 벡터를 사용함으로써 상기 복수의 서브블록을 개별적으로 코딩하는 단계; 및
    모션 벡터 개선을 위해 상기 현재 픽셀 블록이 분할되지 않을 때:
    상기 식별된 제1 모션 벡터 및 제2 모션 벡터를 사용함으로써 상기 현재 픽셀 블록을 코딩하는 단계
    를 포함하는, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  19. 제18항에 있어서,
    상기 현재 픽셀 블록의 선형 치수가 문턱값보다 큰 경우 모션 벡터 개선을 위해 상기 현재 픽셀 블록이 분할되는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  20. 제18항에 있어서,
    상기 현재 픽셀 블록의 면적이 문턱값보다 큰 경우 모션 벡터 개선을 위해 상기 현재 픽셀 블록이 분할되는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  21. 제18항에 있어서,
    상기 현재 픽셀 블록이 미리 결정된 격자 단위에 의해 포함되는 경우 상기 현재 픽셀 블록은 모션 벡터 개선을 위해 분할되지 않는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  22. 제18항에 있어서,
    왜곡 비용은 상기 제1 모션 벡터 및 상기 제2 모션 벡터에 의해 지시된 서브샘플링된 픽셀 데이터에 기초하여 계산되는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  23. 제18항에 있어서,
    상기 제1 모션 벡터는 제1 참조 프레임에서의 제1 참조 픽셀 세트를 나타내고, 상기 제2 모션 벡터는 제2 참조 프레임에서의 제2 참조 픽셀 세트를 나타내며,
    왜곡 비용은 상기 현재 픽셀 블록의 이웃 픽셀 세트, 상기 제1 참조 픽셀 세트의 이웃 픽셀 세트, 및 상기 제2 참조 픽셀 세트의 이웃 픽셀 세트에 기초하여 계산되는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  24. 제18항에 있어서,
    왜곡 비용은 상기 제1 모션 벡터 및 제1 미러링된 모션 벡터에 의해 지시된 참조 픽셀 세트들 간의 차이에 기초하여 계산되고, 상기 제1 미러링된 모션 벡터와 상기 제1 모션 벡터는 상기 현재 픽셀 블록을 가로지르는 동일한 모션 궤적에 있는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  25. 제18항에 있어서,
    왜곡 비용은 상기 개선된 제1 모션 벡터에 의해 지시된 제1 참조 프레임에서의 제1 참조 픽셀 세트와 상기 개선된 제2 모션 벡터에 의해 지시된 제2 참조 프레임에서의 제2 참조 픽셀 세트 간의 차이에 기초하여 계산되는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  26. 제25항에 있어서,
    상기 개선된 제1 모션 벡터 및 상기 개선된 제2 모션 벡터는 중앙 검색 위치에 대해 반대쪽 검색 위치에 기초하는 것인, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  27. 제18항에 있어서,
    상기 현재 픽셀 블록의 크기와 문턱값 간의 비교에 기초하여 상기 현재 픽셀 블록에 대해 모션 벡터 개선을 수행할지 여부를 결정하는 단계;
    모션 벡터 개선이 수행될 때:
    왜곡 비용을 최소화하기 위해 상기 제1 모션 벡터 및 상기 제2 모션 벡터를 개선하는 단계;
    상기 개선된 제1 모션 벡터 및 제2 모션 벡터를 사용함으로써 상기 현재 픽셀 블록을 코딩하는 단계; 및
    모션 벡터 개선이 수행되지 않을 때:
    상기 식별된 제1 모션 벡터 및 제2 모션 벡터를 사용함으로써 상기 현재 픽셀 블록을 코딩하는 단계
    를 더 포함하는, 비디오 시퀀스를 인코딩 또는 디코딩하기 위한 방법.
  28. 전자 장치에 있어서,
    디코더 회로를 포함하고, 상기 디코더 회로는,
    비디오 시퀀스에서 현재 비디오 프레임의 현재 픽셀 블록을 디코딩하기 위한 제1 모션 벡터 및 제2 모션 벡터를 식별하고;
    상기 현재 픽셀 블록의 선형 치수와 문턱값 간의 비교에 기초하여 상기 현재 픽셀 블록에 대한 모션 벡터 개선을 수행할지 여부를 결정하고;
    모션 벡터 개선이 수행될 때:
    왜곡 비용을 최소화하기 위해 상기 제1 모션 벡터 및 상기 제2 모션 벡터를 개선하고;
    상기 개선된 제1 모션 벡터 및 제2 모션 벡터를 사용함으로써 상기 현재 픽셀 블록을 디코딩하며;
    모션 벡터 개선이 수행되지 않을 때:
    상기 식별된 제1 모션 벡터 및 제2 모션 벡터를 사용함으로써 상기 현재 픽셀 블록을 디코딩할 수 있는 것인, 전자 장치.
  29. 전자 장치에 있어서,
    인코더 회로를 포함하고, 상기 인코더 회로는,
    비디오 시퀀스에서 현재 비디오 프레임의 현재 픽셀 블록을 코딩하기 위한 제1 모션 벡터 및 제2 모션 벡터를 식별하고;
    상기 현재 픽셀 블록의 선형 치수와 문턱값 간의 비교에 기초하여 상기 현재 픽셀 블록의 모션 벡터 개선을 수행할지 여부를 결정하고;
    모션 벡터 개선이 수행될 때:
    왜곡 비용을 최소화하기 위해 상기 제1 모션 벡터 및 상기 제2 모션 벡터를 개선하고;
    상기 개선된 제1 모션 벡터 및 제2 모션 벡터를 사용함으로써 상기 현재 픽셀 블록을 인코딩하며;
    모션 벡터 개선이 수행되지 않을 때:
    상기 식별된 제1 모션 벡터 및 제2 모션 벡터를 사용함으로써 상기 현재 픽셀 블록을 인코딩할 수 있는 것인, 전자 장치.
KR1020207024649A 2018-01-26 2019-01-25 하드웨어 친화적으로 제약된 모션 벡터 개선 KR102448218B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201862622234P 2018-01-26 2018-01-26
US62/622,234 2018-01-26
US201862723014P 2018-08-27 2018-08-27
US62/723,014 2018-08-27
US201862740470P 2018-10-03 2018-10-03
US62/740,470 2018-10-03
US16/248,452 2019-01-15
US16/248,452 US11310526B2 (en) 2018-01-26 2019-01-15 Hardware friendly constrained motion vector refinement
PCT/CN2019/073179 WO2019144930A1 (en) 2018-01-26 2019-01-25 Hardware friendly constrained motion vector refinement

Publications (2)

Publication Number Publication Date
KR20200113259A true KR20200113259A (ko) 2020-10-06
KR102448218B1 KR102448218B1 (ko) 2022-09-28

Family

ID=67392580

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207024649A KR102448218B1 (ko) 2018-01-26 2019-01-25 하드웨어 친화적으로 제약된 모션 벡터 개선

Country Status (7)

Country Link
US (1) US11310526B2 (ko)
EP (1) EP3744098A4 (ko)
KR (1) KR102448218B1 (ko)
CN (2) CN117750032A (ko)
BR (1) BR112020015246A8 (ko)
TW (1) TWI690195B (ko)
WO (1) WO2019144930A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024072162A1 (ko) * 2022-09-28 2024-04-04 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11516490B2 (en) * 2018-07-16 2022-11-29 Lg Electronics Inc. Method and device for inter predicting on basis of DMVR
CA3111679C (en) * 2018-09-19 2023-10-03 Huawei Technologies Co., Ltd. Method for skipping refinement based on patch similarity in bilinear interpolation based decoder-side motion vector refinement
CN112913239A (zh) * 2018-10-22 2021-06-04 北京字节跳动网络技术有限公司 基于参考图片的解码器侧运动矢量推导
WO2020084474A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Gradient computation in bi-directional optical flow
CN111083484A (zh) 2018-10-22 2020-04-28 北京字节跳动网络技术有限公司 基于子块的预测
WO2020084461A1 (en) * 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Restrictions on decoder side motion vector derivation based on coding information
WO2020098655A1 (en) 2018-11-12 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Motion vector storage for inter prediction
JP7241870B2 (ja) 2018-11-20 2023-03-17 北京字節跳動網絡技術有限公司 部分的な位置に基づく差分計算
CN113170171B (zh) 2018-11-20 2024-04-12 北京字节跳动网络技术有限公司 组合帧间帧内预测模式的预测细化
US11146810B2 (en) 2018-11-27 2021-10-12 Qualcomm Incorporated Decoder-side motion vector refinement
JP7005480B2 (ja) * 2018-12-27 2022-01-21 Kddi株式会社 画像復号装置、画像符号化装置、プログラム及び画像処理システム
CN111385575A (zh) * 2018-12-29 2020-07-07 华为技术有限公司 帧间预测方法、装置以及相应的编码器和解码器
JP7474262B2 (ja) 2019-01-06 2024-04-24 ベイジン・ダジア・インターネット・インフォメーション・テクノロジー・カンパニー,リミテッド 双方向オプティカルフローに対するビット幅制御
WO2020177755A1 (en) 2019-03-06 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Usage of converted uni-prediction candidate
CN113545086A (zh) * 2019-03-08 2021-10-22 北京达佳互联信息技术有限公司 用于视频编解码的双向光流和解码器侧运动矢量细化
SI3941060T1 (sl) * 2019-03-12 2024-02-29 Lg Electronics Inc. Postopek naprava za zunanje napovedovanje na podlagi dmvr in bdof
KR102610709B1 (ko) 2019-04-02 2023-12-05 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 디코더 측 움직임 벡터 유도
JP6835337B2 (ja) * 2019-06-20 2021-02-24 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
US11223840B2 (en) * 2019-08-19 2022-01-11 Tencent America LLC Method and apparatus for video coding
CN114424543A (zh) 2019-09-12 2022-04-29 阿里巴巴集团控股有限公司 用于发送视频编解码信息的方法和装置
WO2021050226A1 (en) * 2019-09-12 2021-03-18 Alibaba Group Holding Limited Method and apparatus for encoding or decoding video
CN110719489B (zh) * 2019-09-18 2022-02-18 浙江大华技术股份有限公司 运动矢量修正、预测、编码方法、编码器及存储装置
CN110740317B (zh) 2019-09-18 2021-10-15 浙江大华技术股份有限公司 子块运动预测、编码方法、编码器及存储装置
CN110740322A (zh) * 2019-10-23 2020-01-31 李思恒 视频编码方法及装置、存储介质、视频编码设备
US11683517B2 (en) * 2020-11-23 2023-06-20 Qualcomm Incorporated Block-adaptive search range and cost factors for decoder-side motion vector (MV) derivation techniques
KR20230123946A (ko) * 2020-12-22 2023-08-24 퀄컴 인코포레이티드 다중 패스 디코더측 모션 벡터 정제
US20220394309A1 (en) * 2021-05-20 2022-12-08 Lemon Inc. On Padding Methods For Neural Network-Based In-Loop Filter
WO2023143173A1 (en) * 2022-01-28 2023-08-03 Mediatek Inc. Multi-pass decoder-side motion vector refinement
WO2023193769A1 (en) * 2022-04-06 2023-10-12 Mediatek Inc. Implicit multi-pass decoder-side motion vector refinement
WO2024080747A1 (ko) * 2022-10-11 2024-04-18 한국전자통신연구원 영상 부호화/복호화를 위한 방법, 장치 및 기록 매체

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160286230A1 (en) * 2015-03-27 2016-09-29 Qualcomm Incorporated Motion information derivation mode determination in video coding
EP3264769A1 (en) * 2016-06-30 2018-01-03 Thomson Licensing Method and apparatus for video coding with automatic motion information refinement

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7145950B2 (en) * 2003-07-14 2006-12-05 Primax Electronics Ltd. Method of motion vector determination in digital video compression
US8218636B2 (en) 2006-11-21 2012-07-10 Vixs Systems, Inc. Motion refinement engine with a plurality of cost calculation methods for use in video encoding and methods for use therewith
US20090167775A1 (en) * 2007-12-30 2009-07-02 Ning Lu Motion estimation compatible with multiple standards
CN101965733B (zh) * 2008-03-09 2013-08-07 Lg电子株式会社 用于编码或解码视频信号的方法和设备
CN102131091B (zh) * 2010-01-15 2013-01-23 联发科技股份有限公司 解码端运动向量导出方法
CN102685504B (zh) 2011-03-10 2015-08-19 华为技术有限公司 视频图像的编解码方法、编码装置、解码装置及其系统
US9544592B2 (en) * 2012-02-10 2017-01-10 Texas Instruments Incorporated Methods and systems for encoding pictures associated with video data
CN107113424B (zh) * 2014-11-18 2019-11-22 联发科技股份有限公司 以帧间预测模式编码的块的视频编码和解码方法
WO2017164645A2 (ko) 2016-03-24 2017-09-28 인텔렉추얼디스커버리 주식회사 비디오 신호 부호화/복호화 방법 및 장치
US10602180B2 (en) * 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction
US10904565B2 (en) * 2017-06-23 2021-01-26 Qualcomm Incorporated Memory-bandwidth-efficient design for bi-directional optical flow (BIO)

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160286230A1 (en) * 2015-03-27 2016-09-29 Qualcomm Incorporated Motion information derivation mode determination in video coding
EP3264769A1 (en) * 2016-06-30 2018-01-03 Thomson Licensing Method and apparatus for video coding with automatic motion information refinement

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024072162A1 (ko) * 2022-09-28 2024-04-04 엘지전자 주식회사 영상 인코딩/디코딩 방법 및 장치, 그리고 비트스트림을 저장한 기록 매체

Also Published As

Publication number Publication date
EP3744098A1 (en) 2020-12-02
TW201935928A (zh) 2019-09-01
US20190238883A1 (en) 2019-08-01
CN111886866B (zh) 2023-12-26
EP3744098A4 (en) 2021-10-20
US11310526B2 (en) 2022-04-19
BR112020015246A2 (pt) 2021-01-26
WO2019144930A1 (en) 2019-08-01
CN111886866A (zh) 2020-11-03
TWI690195B (zh) 2020-04-01
KR102448218B1 (ko) 2022-09-28
BR112020015246A8 (pt) 2023-02-07
CN117750032A (zh) 2024-03-22

Similar Documents

Publication Publication Date Title
KR102448218B1 (ko) 하드웨어 친화적으로 제약된 모션 벡터 개선
CN110169061B (zh) 编解码电子装置与方法
CN113455003B (zh) 视频编解码方法及电子设备
US11172203B2 (en) Intra merge prediction
CN112400319B (zh) 一种视频编码/解码方法及装置
US11924413B2 (en) Intra prediction for multi-hypothesis
US11245922B2 (en) Shared candidate list
TW201946470A (zh) 用於照度補償的信令
US11240524B2 (en) Selective switch for parallel processing
CN113853795A (zh) 发信运动向量差值推导
EP3468194A1 (en) Decoupled mode inference and prediction
WO2019161798A1 (en) Intelligent mode assignment in video coding
WO2023202569A1 (en) Extended template matching for video coding
WO2023186040A1 (en) Bilateral template with multipass decoder side motion vector refinement
TW202415066A (zh) 多假設預測編解碼

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
N231 Notification of change of applicant