KR20210024487A - 효율적인 아핀 병합 모션 벡터 유도 - Google Patents

효율적인 아핀 병합 모션 벡터 유도 Download PDF

Info

Publication number
KR20210024487A
KR20210024487A KR1020207037240A KR20207037240A KR20210024487A KR 20210024487 A KR20210024487 A KR 20210024487A KR 1020207037240 A KR1020207037240 A KR 1020207037240A KR 20207037240 A KR20207037240 A KR 20207037240A KR 20210024487 A KR20210024487 A KR 20210024487A
Authority
KR
South Korea
Prior art keywords
block
way
motion vector
affine
sub
Prior art date
Application number
KR1020207037240A
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 KR20210024487A publication Critical patent/KR20210024487A/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/527Global motion vector estimation
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods 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 bits, e.g. of the compressed video stream
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • 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/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques

Abstract

효율적인 아핀 병합 모션 벡터 유도를 위한 비디오 처리 방법이 개시된다. 한 측면에서, 현재 비디오 블록을 서브 블록으로 분할하는 단계; 각 서브 블록에 대해, 모션 벡터를 유도하는 단계 - 각각의 서브 블록에 대한 모션 벡터는 위치 규칙에 따라 그 서브 블록에 대한 위치와 연관됨 -; 및 서브 블록에 대한 모션 벡터를 사용하여 현재 비디오 블록의 비트 스트림 표현을 처리하는 단계를 포함하는 비디오 처리 방법이 제공된다.

Description

효율적인 아핀 병합 모션 벡터 유도
이 특허 문서는 비디오 코딩 및 디코딩 기술, 장치 및 시스템에 관한 것이다.
파리 협약에 따른 관련 특허법 및/또는 규칙에 따라, 본 출원은 2018년 7월 1일에 출원된 국제 특허 출원 번호 PCT/CN2018/093943 및 2018년 7월 13일에 출원된 국제 특허 출원 번호 PCT/CN2018/095568의 우선권과 혜택을 적시에 주장하기 위해 만들었다. 미국 법률에 따른 모든 목적을 위해, 국제 특허 출원 번호 PCT/CN2018/093943 및 국제 특허 출원 번호 PCT/CN2018/095568의 전체 개시는 본 출원의 개시의 일부로서 참고로 포함된다.
비디오 압축의 진보에도 불구하고, 디지털 비디오는 여전히 인터넷 및 기타 디지털 통신 네트워크에서 가장 큰 대역폭 사용을 차지한다. 영상을 수신하고 표시할 수 있는 연결된 사용자 장치의 수가 증가함에 따라, 디지털 비디오 사용에 대한 대역폭 수요는 계속해서 증가할 것으로 예상된다.
이 문서는 특히 아핀 모션 코딩 모드를 사용할 때 서브 블록 기반 코딩의 성능을 향상시키기 위해 비디오 코딩 및 디코딩 실시예에서 사용될 수 있는 기술을 개시한다.
하나의 예시적인 측면에서, 비디오 처리 방법(video processing method)은 현재 블록을 서브 블록(sub-block)으로 분할하는 단계; 각각의 서브 블록에 대해 모션 벡터(motion vector)를 유도하는 단계 - 각각의 서브 블록에 대한 모션 벡터는 위치 규칙(position rule)에 따라 그 서브 블록에 대한 위치와 연관됨 -; 및 서브 블록에 대한 모션 벡터를 사용하여 현재 블록의 비트 스트림 표현(bitstream representation)을 처리하는 단계를 포함하는 방법이 제공된다.
또 다른 측면에서, 다음을 포함하는 비디오 처리 방법이 제공된다: 아핀 모드(affine mode)를 사용하여 현재 블록과 현재 블록의 비트 스트림 표현 사이의 변환(conversion)을 위해, 위치 규칙에 기초한 현재 블록의 제어점(control point)에서 모션 벡터를 유도하는 단계; 및 모션 벡터를 사용하여 현재 블록과 비트 스트림 표현 사이의 변환을 수행하는 단계, 및 위치 규칙은 유도를 위해 인접하지 않은 이웃 블록(neighboring block)의 사용을 배제하도록 지정한다.
또 다른 측면에서, 다음을 포함하는 비디오 처리 방법이 제공된다: 현재 블록과 현재 블록의 비트 스트림 표현 간의 변환을 위해, 하나 이상의 이웃 블록의 위치에 기초한 유효성 기준(validity criterion)을 만족하는 하나 이상의 이웃 블록으로부터의 병합 후보(merge candidate)를 포함함으로써 변환을 위한 아핀 병합 후보(affine merge candidate)의 목록을 결정하는 단계; 및 모션 벡터를 사용하여 현재 블록과 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 측면에서, 본 명세서에 기술된 비디오 인코딩 방법을 구현하는 비디오 인코더 장치(video encoder device)가 개시된다.
또 다른 대표적인 측면에서, 여기에 설명된 다양한 기술은 비 일시적 컴퓨터 판독 가능 매체(non-transitory computer readable media)에 저장된 컴퓨터 프로그램 제품으로 구현될 수 있다. 컴퓨터 프로그램 제품은 여기에 설명된 방법을 수행하기 위한 프로그램 코드(program code)를 포함한다.
또 다른 대표적인 측면에서, 비디오 디코더 장치(video decoder apparatus)는 여기에 설명된 방법을 구현할 수 있다.
하나 이상의 구현의 세부 사항은 수반되는 첨부, 도면 및 아래의 설명에 명시되어 있다. 다른 특징은 설명과 도면, 그리고 청구 범위로부터 명백해질 것이다.
도 1은 서브 블록 기반 예측의 예를 도시한다.
도 2는 단순화된 아핀 모션 모델의 예를 예시한다.
도 3은 서브 블록 당 아핀 모션 벡터 필드(MVF)의 예를 도시한다.
도 4는 AF_INTER 모드에 대한 모션 벡터 예측(MVP)의 예를 도시한다.
도 5a 및 도 5b는 AF_MERGE. 인코딩 모드에 대한 후보의 예를 도시한다.
도 6은 코딩 유닛(CU)에 대한 진보된 시간적 모션 벡터 예측기(ATMVP) 모션 예측의 예시적인 프로세스를 도시한다.
도 7은 4 개의 서브 블록(A-D) 및 그 이웃 블록(a-d)을 갖는 하나의 CU의 예를 도시한다.
도 8은 비디오 코딩에서 광 흐름 궤적(optical flow trajectory)의 예를 도시한다.
도 9a 및 9b는 블록 확장이 없는 양방향 광학(bi-directional optical)(BIO) 코딩 기술의 예를 도시한다. 도 9a는 블록 외부의 액세스 위치의 예를 도시하고, 도 9b는 추가 메모리 액세스 및 계산을 피하기 위해 사용되는 패딩의 예를 도시한다.
도 10은 쌍방 매칭(bilateral matching)의 예를 보여준다.
도 11은 템플릿 매칭의 예를 보여준다.
도 12는 프레임 레이트 상향 변환(frame rate up-conversion)(FRUC)에서 단독의 모션 추정(Unilateral motion estimation)(ME)의 예를 보여준다.
도 13은 인터위브(interweaved) 예측의 예시적인 구현을 예시한다.
도 14는 별이 상이한 위치를 나타낼때, 상이한 서브 블록에 대한 MV를 유도하기 위한 상이한 위치의 예를 도시한다.
도 15는 v0x 및 v0y를 유도하기 위한 이웃 블록의 예를 도시한다.
도 16a 및 도 16b는 아핀 모드(a)로 코딩 된 외쪽 인접 블록 또는 아핀 모드로 코딩 된 상부 인접 블록으로부터 아핀 병합 모드에 대한 MV를 유도하는 예이다.
도 17은 상이한 코딩 트리 유닛(coding tree unit)(CTU) 라인에 속하는 이웃 블록과 현재 블록의 예를 나타낸 것으로, 이러한 이웃 블록의 아핀 병합 후보는 무효로 취급된다.
도 18은 개시된 기술에 따른 2 개의 분할 패턴(dividing pattern)을 갖는 인터위브 예측의 예를 도시한다.
도 19a는 개시된 기술에 따라 블록이 4x4 서브 블록으로 분할되는 예시적인 분할 패턴을 도시한다.
도 19b는 개시된 기술에 따라 블록이 8x8 서브 블록으로 분할되는 예시적인 분할 패턴을 도시한다.
도 19c는 개시된 기술에 따라 블록이 4x8 서브 블록으로 분할되는 예시적인 분할 패턴을 도시한다.
도 19d는 개시된 기술에 따라 블록이 8x4 서브 블록으로 분할되는 예시적인 분할 패턴을 도시한다.
도 19e는 개시된 기술에 따라 블록이 불균일한 서브 블록으로 분할되는 예시적인 분할 패턴을 도시한다.
도 19f는 개시된 기술에 따라 블록이 불균일한 서브 블록으로 분할되는 다른 예시적인 분할 패턴을 도시한다.
도 19g는 개시된 기술에 따라 블록이 불균일한 서브 블록들로 분할되는 또 다른 예시적인 분할 패턴을 도시한다.
도 20은 본 문서에 기술된 비주얼 미디어 디코딩 또는 비주얼 미디어 인코딩 기술을 구현하기 위한 하드웨어 플랫폼의 예의 블록도이다.
도 21은 예시적인 비디오 처리 방법에 대한 흐름도이다.
도 22는 비디오 처리의 다른 예시적인 방법에 대한 흐름도이다.
도 23은 비디오 처리의 다른 예시적인 방법에 대한 흐름도이다.
섹션 제목은 가독성을 향상시키기 위해 본 문서에서 사용되며 섹션에서 설명된 기술 및 실시예를 해당 섹션으로 만 제한하지 않는다. 비디오의 압축률을 향상시키기 위해, 연구원들은 비디오를 인코딩하는 새로운 기술을 지속적으로 찾고 있다.
1. 소개
이 특허 문서는 비디오/이미지 코딩 기술과 관련이 있다. 특히, 비디오/이미지 코딩에서 서브 블록 기반 예측(sub-block based prediction)과 관련이 있다. HEVC와 같은 기존 비디오 코딩 표준 또는 최종화될 표준(Versatile Video Coding)에 적용될 수 있다. 향후 비디오/이미지 코딩 표준 또는 비디오/이미지 코덱에도 적용될 수 있다.
간단한 토론
서브 블록 기반 예측은 HEVC Annex I(3D-HEVC)에 의해 비디오 코딩 표준에 처음 도입되었다. 서브 블록 기반 예측을 사용하면, 코딩 유닛(Coding Unit)(CU) 또는 예측 유닛(Prediction Unit)(PU)과 같은 블록이 중첩되지 않은 여러 서브 블록으로 분할된다. 참조 인덱스(reference index)나 모션 벡터(Motion Vector)(MV)와 같은 서로 다른 모션 정보가 서로 다른 서브 블록에 할당될 수 있다. 모션 보상(Motion Compensation)(MC)은 각 서브 블록에 대해 개별적으로 수행된다. 도 1은 서브 블록 기반 예측의 개념을 보여준다.
HEVC를 넘어선 미래의 비디오 코딩 기술을 탐구하기 위해, 2015 년에 VCEG와 MPEG가 공동으로 공동 비디오 탐구 팀(Joint Video Exploration Team)(JVET)을 설립했다. 그 이후로 많은 새로운 방법이 JVET에서 채택되어 공동 탐구 모델(Joint Exploration Model)(JEM)이라는 참조 소프트웨어에 포함되었다.
JEM에서 서브 블록 기반 예측은 아핀 예측, 대체 시간 모션 벡터 예측(Alternative temporal motion vector prediction)(ATMVP), 공간 시간 모션 벡터 예측(spatial-temporal motion vector prediction)(STMVP), 양방향 광학 흐름(Bi-directional Optical flow)(BIO) 및 프레임 속도 상승 변환(Frame-Rate Up Conversion)(FRUC).
2.1 아핀 예측(Affine Prediction)
HEVC에서, 모션 보상 예측(motion compensation prediction)(MCP)에는 전환 모션 모델(translation motion model) 만 적용된다. 실제 세계에는, 예를 들어 확대/축소, 회전, 원근 모션 및 기타 불규칙한 모션의 여러 종류의 모션이 있다. JEM에서, 단순화된 아핀 변형 모션 보상 예측(simplified affine transform motion compensation prediction)이 적용된다. 도 2에 도시된 바와 같이, 블록의 아핀 모션 필드는 두 개의 제어점(control point) 모션 벡터로 설명된다.
블록의 모션 벡터 필드(motion vector field)(MVF)는 다음 식으로 설명된다.
Figure pct00001
(1)
여기서(v0x, v0y)는 왼쪽 상단 모서리 제어점의 모션 벡터이고, 및(v1x, v1y)는 오른쪽 상단 모서리 제어점의 모션 벡터이다.
모션 보상 예측을 더욱 단순화하기 위해 서브 블록 기반 아핀 변형 예측(affine transform prediction)이 적용된다. 서브 블록 크기 MxN은 식(2)에서 유도되고, 여기서 MvPre는 모션 벡터 분수 정확도(motion vector fraction accuracy)(JEM에서 1/16)이고,(v2x, v2y)는 식(1)에 따라 계산된 왼쪽 하단 제어점의 모션 벡터이다.
Figure pct00002
(2)
식(2)에 의해 유도된 이후, M과 N은 필요한 경우 각각 w와 h의 제수로 만들기 위해 아래쪽으로 조정해야 한다.
각 MxN 서브 블록의 모션 벡터를 유도하려면, 도 3에 도시된 바와 같이 각 서브 블록의 중앙 샘플의 모션 벡터는 식(1)에 따라 계산되고, 및 1/16 분수 정확도로 반올림된다. 그런 다음 유도된 모션 벡터로 각 서브 블록의 예측을 생성하기 위해 모션 보상 보간 필터가 적용된다.
MCP 후, 각 서브 블록의 아핀 모션 벡터는 반올림되어 일반 모션 벡터와 동일한 정확도로 저장된다.
JEM에서, 두 가지 아핀 모션 모드가 있다:AF_INTER 모드 및 AF_MERGE 모드. 너비와 높이가 모두 8 보다 큰 CU의 경우 AF_INTER 모드를 적용할 수 있다. CU 레벨의 아핀 플래그(affine flag)는 AF_INTER 모드가 사용되는지 여부를 나타내기 위해 비트 스트림에서 시그널링 된다. 이 모드에서, 모션 벡터 쌍 {(v0, v1) | v0 = {vA, vB, vc}, v1 = {vD, vE}}가 있는 후보 목록은 이웃 블록을 사용하여 구성된다. 도 4에 도시된 바와 같이, 블록 A, B 또는 C의 모션 벡터에서 v0이 선택된다. 이웃 블록의 모션 벡터는 참조 목록과 이웃 블록에 대한 참조의 POC, 현재 CU에 대한 참조의 POC 및 현재 CU의 POC 간의 관계에 따라 스케일링 된다. 그리고 이웃 블록 D와 E에서 v1을 선택하는 방법은 유사하다. 후보 목록의 수가 두 개 미만인 경우 목록은 각 AMVP 후보를 복제하여 구성된 모션 벡터 쌍으로 채워진다. 후보 목록이 두 개 보다 크면, 첫 번째로 후보는 먼저 인접한 모션 벡터의 일관성(쌍 후보에서 두 개의 모션 벡터의 유사성)에 따라 정렬되고 처음 두 후보 만 유지된다. RD 비용 검사(RD cost check)는 현재 CU의 제어점 모션 벡터 예측(control point motion vector prediction)(CPMVP)으로 어떤 모션 벡터 쌍 후보가 선택되었는지 결정하는 데 사용된다. 그리고 후보 목록에서 CPMVP의 위치를 나타내는 인덱스는 비트 스트림에서 시그널링 된다. 현재 아핀 CU의 CPMVP가 결정된 후, 아핀 모션 추정(affine motion estimation)이 적용되고 및 제어점 모션 벡터(control point motion vector)(CPMV)가 발견된다. 그런 다음 CPMV와 CPMVP의 차이가 비트 스트림에서 시그널링 된다.
CU가 AF_MERGE 모드에 적용되면, 유효한 이웃 재구성 블록에서 아핀 모드로 코딩 된 첫 번째 블록을 가져온다. 그리고 후보 블록에 대한 선택 순서는 도 5a에 도시된 바와 같이 왼쪽, 위, 오른쪽 위, 왼쪽 하단에서 왼쪽 위이다. 이웃 왼쪽 하단 블록 A가 도 5b에 도시된 바와 같이 아핀 모드로 코딩 되면, 블록 A를 포함하는 CU의 왼쪽 상단 모서리, 오른쪽 상단 모서리 및 왼쪽 하단 모서리의 모션 벡터 v2, v3 및 v4가 유도된다. 그리고 현재 CU의 왼쪽 상단 모서리의 모션 벡터 v0은 v2, v3 및 v4에 따라 계산된다. 두 번째로, 현재 CU의 오른쪽 위의 모션 벡터 v1을 계산한다.
현재 CU v0 및 v1의 CPMV가 우도된 후, 단순화된 아핀 모션 모델 식(1)에 따라 현재 CU의 MVF가 생성된다. 현재 CU가 AF_MERGE 모드로 코딩 되었는지 확인하기 위해, 적어도 하나의 이웃 블록이 아핀 모드로 코딩 되면 아핀 플래그가 비트 스트림에서 시그널링 된다.
2.2 ATMVP
대체 시간적 모션 벡터 예측(alternative temporal motion vector prediction)(ATMVP) 방법에서, 모션 벡터 시간 모션 벡터 예측(TMVP)은 현재 CU보다 작은 블록에서 모션 정보의 여러 세트(모션 벡터 및 참조 인덱스 포함)를 가져옴으로써 수정된다. 도 6에 도시된 바와 같이, 서브 CU는 정사각형 NxN 블록이다(N은 기본적으로 4로 설정됨).
ATMVP는 CU 내의 하위 CU의 모션 벡터를 두 단계로 예측한다. 제1 단계는 이른바 시간 벡터(temporal vector)를 사용하여 참조 픽처(reference picture)에서 해당 블록을 식별하는 것이다. 참조 영상을 모션 소스 영상이라고 한다. 제2 단계는 도 6과 같이 현재 CU를 하위 CU로 분할하고 각 하위 CU에 해당하는 블록에서 각 하위 CU의 참조 인덱스뿐만 아니라 모션 벡터를 얻는 것이다.
제1 단계에서, 현재 CU의 공간적 이웃 블록들의 모션 정보에 의해 참조 픽처와 대응 블록이 결정된다. 이웃 블록의 반복적인 스캐닝 프로세스를 피하기 위해, 현재 CU의 병합 후보 목록에서 제1 병합 후보가 사용된다. 사용 가능한 제1 모션 벡터 및 연관 참조 인덱스는 시간 벡터 및 모션 소스 픽처에 대한 인덱스로 설정된다. 이렇게 하면, ATMVP에서, TMVP에 비해 해당 블록을 더 정확하게 식별할 수 있다. 여기서 대응하는 블록(때때로 배치된 블록이라고도 함)은 현재 CU에 대해 항상 오른쪽 하단 또는 중앙 위치에 있다.
제2 단계에서, 서브 CU의 대응하는 블록은 현재 CU의 좌표에 시간 벡터를 더함으로써, 모션 소스 픽처의 시간 벡터에 의해 식별된다. 각 서브 CU에 대해, 해당 블록(중앙 샘플을 덮는 가장 작은 모션 그리드)의 모션 정보는 서브 CU에 대해 모션 정보를 유도하기 위해 사용된다. 해당 NxN 블록의 모션 정보를 확인한 후, HEVC의 TMVP와 동일한 방식으로, 이는 현재 서브 CU의 참조 인덱스 및 모션 벡터로 변환되고, 모션 스케일링 및 기타 절차가 적용된다. 예를 들면, 디코더는 저 지연 조건(즉, 현재 픽처의 모든 참조 픽처의 POC가 현재 픽처의 POC보다 작은 경우)이 충족되었는지 및 각각의 서브 CU에 대해 모션 벡터 MVy(X는 0 또는 1과 같고 Y는 1-X와 같음)를 예측하기 위해 모션 벡터 MVx(참조 픽처 목록 X에 해당하는 모션 벡터)를 사용할 수 있는지 검사한다.
3. STMVP
이 방법에서 하위 CU의 모션 벡터는 래스터 스캔 순서에 따라 반복적으로 유도된다. 도 7은 이 개념을 예시한다. 네 개의 4x4 하위 CU A, B, C 및 D를 포함하는 8x8 CU를 고려하자. 현재 프레임에서 인접한 4x4 블록은 a, b, c 및 d로 레이블이 지정된다.
서브 CU A에 대한 모션 유도는 두 개의 공간 이웃을 식별하는 것으로 시작된다. 제1 이웃은 하위 CU A 위의 NxN 블록이다(블록 c). 이 블록 c를 사용할 수 없거나 인트라 코딩 된 경우, 서브 CU A 위의 다른 NxN 블록이 검사된다(블록 c에서 시작하여 왼쪽에서 오른쪽으로). 제2 이웃은 하위 CU A의 왼쪽에 있는 블록이다(블록 b). 블록 b를 사용할 수 없거나 인트라 코딩 된 경우, 서브 CU A의 왼쪽에 있는 다른 블록이 확인된다(위에서 아래로, 블록 b에서 시작). 각 목록에 대한 이웃 블록에서 얻은 모션 정보는 주어진 목록에 대한 제1 참조 프레임(reference frame)으로 스케일링 된다. 다음으로, 서브 블록 A의 시간적 모션 벡터 예측기(TMVP)는 HEVC에 명시된 것과 동일한 TMVP 유도 절차에 따라 유도된다. 위치 D에서 배치된 블록의 모션 정보를 가져와서 그에 따라 크기를 조정한다. 마지막으로, 모션 정보를 검색하고 크기를 조정한 후 사용 가능한 모든 모션 벡터(최대 3 개)는 각 참조 목록에 대해 개별적으로 평균화 된다. 평균 모션 벡터는 현재 하위 CU의 모션 벡터로 할당된다.
4. BIO
양방향 광학 흐름(Bi-directional Optical flow)(BIO)은 이중 예측(bi-prediction)을 위한 블록 유닛 모션 보상 위에 수행되는 샘플 단위 모션 미세 조정(sample-wise motion refinement)이다. 샘플 레벨 모션 미세 조정은 신호를 사용하지 않는다.
I(k)는 블록 모션 보상(block motion compensation) 후 참조 k(k = 0, 1)의 루마 값(luma value)으로 하고, 및
Figure pct00003
는 각각 I(k) 기울기(gradient)의 수평 및 수직 구성 요소이다. 광학 흐름이 유효하다고 가정하면, 모션 벡터 필드(vx, vy)는 식으로 주어진다.
Figure pct00004
(3)
이 광학 흐름 식을 각 샘플의 모션 궤적에 대한 에르미트 보간법(Hermite interpolation)과 결합하면 끝에서 함수 값 I(k)과 미분
Figure pct00005
모두 매치 하는 고유한 3 차 다항식이 생성된다. t = 0에서이 다항식의 값은 BIO 예측이다:
Figure pct00006
(4)
여기서,
Figure pct00007
Figure pct00008
은 도 8에서 도시된 바와 같이 참조 프레임까지의 거리를 나타낸다. 거리
Figure pct00009
Figure pct00010
은Ref0 및 Ref1에 대한 POC에 기초하여 계산된다:
Figure pct00011
= POC(current) - POC(Ref0),
Figure pct00012
= POC(Ref1) - POC(current). 이경우, BIO는 예측이 같은 시점(즉,
Figure pct00013
)에서 있지 않은 경우에만 적용되고, 양자 참조된 영역은 0이 아닌 모션(
Figure pct00014
) 및 블록 모션 벡터는 시간 거리에 비례한다.
모션 벡터 필드(vx, vy)는 지점 A와 B(도 9a 및 9b에서 모션 궤적과 참조 프레임 평면의 교차점)의 값 사이의 차이 △를 최소화하여 결정된다. 모델은 △에 대해 국소 테일러(Taylor) 확장의 제1 선형 항만 사용한다:
Figure pct00015
(5)
위 식의 모든 값은 지금까지 표기법에서 생략된 샘플 위치(i', j')에 따라 다르다. 모션이 주변 지역에서 일관된다고 가정하면, 현재 예측 지점(i, j) 상의 중앙에 있는(2M + 1) (2M + 1) 사각형 윈도우 Ω 내부의 를 최소화하고, 여기서 M은 2이다:
Figure pct00016
(6)
이 최적화 문제에 대해, JEM은 먼저 수직 방향으로 및 다음 수평 방향으로 최소화하는 단순화된 접근 방식을 사용한다. 이 결과는:
Figure pct00017
(7)
Figure pct00018
(8)
이고, 여기서,
Figure pct00019
(9)
0 또는 아주 작은 값으로 나누는 것을 피하기 위해, 정규화 파라미터 r 및 m은 식(7) 및 식(8)에 도입되었다.
Figure pct00020
(10)
Figure pct00021
(11)
여기서 d는 비디오 샘플의 비트 깊이이다.
BIO에 대한 메모리 액세스를 일반 양방향 예측 모션 보상과 동일하게 유지하기 위해, 모든 예측 및 기울기 값,
Figure pct00022
는 현재 블록 내부 위치에 대해서만 계산된다. 식(9)에서, 예측 블록의 경계에서 현재 예측된 지점의 중앙에 있는(2M + 1)x(2M + 1) 사각형 윈도우 Ω는 록 외부의 위치에 액세스 해야 한다(도 9a 참조). JEM에서 블록 외부의
Figure pct00023
값은 동일하게 설정된다. 블록 내에서 사용 가능한 가장 가까운 값으로. 예를 들어, 이것은 도 9b에 도시된 바와 같이 패딩으로 구현될 수 있다.
BIO를 사용하면 각 샘플에 대해 모션 필드를 다듬을 수 있다. 계산 복잡성을 줄이기 위해 JEM에서는 블록 기반 BIO 설계가 사용된다. 모션 미세 조정은 4x4 블록을 기준으로 계산된다. 블록 기반 BIO에서, 4x4 블록에 있는 모든 샘플의 식(9)의 sn 값은 응집되고, 및 그 다음 sn의 응집된 값은 4x4 블록에 대한 유도된 BIO 모션 벡터 오프셋에 사용된다. 보다 구체적으로, 블록 기반 BIO 유도에는 다음 공식이 사용된다:
Figure pct00024
(12)
여기서 bk는 예측 블록의 k 번째 4x4 블록에 속하는 샘플 세트를 나타낸다. 식(7) 및 식(8)의 sn은((sn, bk) >> 4)로 대체되어 연관 모션 벡터 오프셋을 유도한다.
경우에 따라, BIO의 MV 연대(regiment)는 소음이나 불규칙한 모션으로 인해 신뢰할 수 없을 수 있다. 따라서 BIO에서 MV 연대의 크기는 임계 값 thBIO로 잘린다. 임계 값은 현재 픽처의 참조 픽처가 모두 한 방향인지 여부에 따라 결정된다. 현재 픽처의 모든 참조 픽처가 한 방향에 있는 경우 임계 값은 12x214-d로 설정된다; 그렇지 않으면 12x213-d로 설정된다.
BIO에 대한 기울기는 HEVC 모션 보상 프로세스(motion compensation process)(2D 분리형(separable) FIR)와 일치하는 작업을 사용하여 모션 보상 보간(motion compensation interpolation)과 동시에 계산된다. 이 2D 분리형 FIR에 대한 입력은 블록 모션 벡터의 분수 부분에 따른 모션 보상 프로세스 및 분수 위치(fracX, fracY)와 동일한 참조 프레임 샘플이다. 디 스케일링 시프트(de-scaling shift) d-8과 함께 분수 위치 fracY에 해당하는 BIOfilterS를 사용하여 먼저 수직으로 보간된 수평 기울기 ∂I/∂x 신호의 경우, 이후 기울기 필터 BIOfilterG가 18-d만큼 디 스케일링 시프트와 함께 분수 위치 fracX에 해당하는 수평 방향으로 적용된다. 수직 기울기 ∂I/∂x 의 경우 디 스케일링 시프트 d-8과 함께 분수 위치 fracY에 해당하는 BIOfilterG를 사용하여 제1 기울기 필터가 수직으로 적용되고, 이후 신호 변위(signal displacement)는 BIOfilterS를 사용하여 분수 위치 fracX에 해당하는 수평 방향으로 18-d의 디 스케일링 시프트로 수행된다. 기울기 계산 BIOfilterG 및 신호 변위 BIOfilterF를 위한 보간 필터의 길이는 합리적인 복잡성을 유지하기 위해 더 짧다(6 탭). 표는 BIO에서 블록 모션 벡터의 다양한 부분 위치에 대한 기울기 계산에 사용되는 필터를 보여준다. 표는 BIO에서 예측 신호 생성에 사용되는 보간 필터를 보여준다.
BIO에서 기울기 계산을 위한 필터
위치별 분수(Fractional pel position) 기울기(BIOfilterG)에 대한 보간 필터(Interpolation filter for prediction signal(BIOfilterS))
0 { 8, -39, 3, 46, 17, 5}
1/16 { 8, -32, 13, 50, 18, 5}
1/8 { 7, -27, 20, 54, 19, 5}
3/16 { 6, -21, 29, 57, -18, 5}
1/4 { 4, -17, 36, 60, 15, 4}
5/16 { 3, -9, 44, 61, 15, 4}
3/8 { 1, -4, 48, 61, 13, 3}
7/16 { 0, 1, -54, 60, 9, 2}
1/2 { -1, 4, -57, 57, 4, 1}
BIO에서 예측 신호 생성을 위한 보간 필터
위치별 분수(Fractional pel position) 예측 신호(BIOfilterG)에 대한 보간 필터(Interpolation filter for prediction signal(BIOfilterG))
0 { 8, 39, 3, 46, 17, 5}
1/16 { 8, 32, 13, 50, 18, 5}
1/8 { 7, 27, 20, 54, 19, 5}
3/16 { 6, 21, 29, 57, 18, 5}
1/4 { 4, 17, 36, 60, 15, 4}
5/16 { 3, 9, 44, 61, 15, 4}
3/8 { 1, 4, 48, 61, 13, 3}
7/16 { 0, 1, 54, 60, 9, 2}
1/2 { 1, 4, 57, 57, 4, 1}
JEM에서 BIO는 두 예측이 서로 다른 참조 픽처에서 나온 경우 모든 이중 예측 블록에 적용된다. CU에 대해 LIC가 활성화되면 BIO가 비활성화 된다.
JEM에서, OBMC는 정상적인 MC 프로세스 후 블록에 적용된다. 계산 복잡성을 줄이기 위해, OBMC 프로세스 중에는 BIO가 적용되지 않는다. 즉, BIO는 자신의 MV를 사용할 때 블록에 대한 MC 프로세스에서만 적용되고 및 OBMC 프로세스에서 이웃 블록의 MV를 사용하는 경우 MC 프로세스에는 적용되지 않는다.
2.5 FRUC
FRUC 플래그(flag)는 병합 플래그(merge flag)가 참일 때 CU에 대해 신호를 보낸다. FRUC 플래그가 거짓이면 병합 인덱스가 신호를 받고 일반 병합 모드가 사용된다. FRUC 플래그가 참이면 추가 FRUC 모드 플래그가 신호를 받아 블록에 대한 모션 정보를 유도하는 데 사용할 방법(쌍방 매칭(bilateral matching) 또는 템플릿 매칭)을 나타낸다.
인코더 측에서, CU에 대해 FRUC 병합 모드를 사용할지 여부에 대한 결정은 일반 병합 후보에 대해 수행된 RD 비용 선택을 기반으로 한다. 즉, RD 비용 선택을 사용하여 CU에 대해 두 가지 매칭 모드(쌍방 매칭 및 템플릿 매칭)를 모두 검사한다. 최소 비용으로 이어지는 것은 다른 CU 모드와 더 비교된다. FRUC 매칭 모드가 가장 효율적인 경우 FRUC 플래그는 CU에 대해 true로 설정되고 관련 매칭 모드가 사용된다.
FRUC 병합 모드의 모션 유도 프로세스는 두 단계로 구성된다. CU 레벨 모션 검색이 먼저 수행된 다음 서브 CU 레벨 모션 미세 조정(motion refinement)이 수행된다. CU 레벨에서 쌍방 매칭 또는 템플릿 매칭를 기반으로 전체 CU에 대한 초기 모션 벡터가 유도된다. 먼저 MV 후보 목록이 생성되고 최소 매칭 비용으로 이어지는 후보가 추가 CU 레벨 미세 조정을 위한 출발점으로 선택된다. 그런 다음 시작점을 중앙으로 쌍방 매칭 또는 템플릿 매칭을 기반으로 한 로컬 검색이 수행되고 최소 매칭 비용의 MV 결과가 전체 CU에 대한 MV로 간주된다. 그 후, 모션 정보는 유도된 CU 모션 벡터를 시작점으로 하여 서브 CU 레벨에서 더욱 세분화된다.
예를 들어, W Х H CU 모션 정보 유도를 위해 다음과 같은 유도 과정이 수행된다. 제1 단계에서 전체 WxH CU에 대한 MV가 유도된다. 제2 단계에서 CU는 MxM 서브 CU로 더 분할된다. M의 값은(16)에서와 같이 계산되며, D는 JEM에서 기본적으로 3으로 설정되는 미리 정의된 분할 깊이이다. 그런 다음 각 서브 CU의 MV가 유도된다.
Figure pct00025
(13)
도 10과 같이, 쌍방 매칭은 두 개의 다른 참조 픽처에서 현재 CU의 모션 궤적을 따라 두 블록 사이에서 가장 가까운 매칭을 찾아 현재 CU의 모션 정보를 유도하는 데 사용된다. 연속 모션 궤적(continuous motion trajectory)을 가정하면, 두 참조 블록을 가리키는 모션 벡터 MV0 및 MV1은 현재 픽처와 두 참조 픽처 사이의 시간적 거리, 즉 TD0 및 TD1에 비례해야 한다. 특별한 경우, 현재 픽처가 두 참조 픽처 사이에 시간적으로 있고 현재 픽처에서 두 참조 픽처까지의 시간적 거리가 같을 때, 쌍방 매칭(bilateral matching)은 미러 기반 양방향 MV가 된다.
도 11에 나타난 바와 같이, 템플릿 매칭은 현재 픽처의 템플릿(현재 CU의 상단 및/또는 왼쪽 이웃 블록)과 참조 픽처의 블록(템플릿과 동일한 크기) 사이에서 가장 가까운 매칭을 찾아 현재 CU의 모션 정보를 유도하는 데 사용된다. 앞서 언급한 FRUC 병합 모드를 제외하고, 템플릿 매칭은 AMVP 모드에도 적용된다. HEVC에서와 같이 JEM에서 AMVP에는 두 가지 후보가 있다. 템플릿 매칭 방법을 사용하면 새로운 후보가 유도된다. 템플릿 매칭에 의해 새로 유도된 후보가 제1 기존 AMVP 후보와 다른 경우, AMVP 후보 목록의 맨 처음에 삽입되고 목록 크기는 2로 설정된다(기존의 제2 AMVP 후보를 제거함을 의미). AMVP 모드 적용시 CU 레벨 검색 만 적용된다.
CU 레벨 MV 후보 세트
CU 레벨에서 설정된 MV 후보는 다음으로 구성된다.
(i) 현재 CU가 AMVP 모드 인 경우 원래 AMVP 후보
(ii) 모든 병합 후보,
(iii) 보간된 MV 필드의 여러 MV(후술).
(iv) 위쪽 및 왼쪽 인접 모션 벡터
쌍방 매칭을 사용하는 경우, 병합 후보의 각 유효한 MV는 쌍방 매칭을 가정하여 MV 쌍을 생성하기 위한 입력으로 사용된다. 예를 들어, 병합 후보의 유효한 MV는 참조 목록 A에있는(MVa, refa) 이다. 그런 다음 쌍을 이룬 쌍방 MV의 참조 픽처 refb가 다른 참조 목록 B에서 발견되어 refa 및 refb가 일시적으로 현재 픽처의 다른 측면에 존재한다. 이러한 refb가 참조 목록 B에서 사용 가능하지 않은 경우 refb는 refa와 다른 참조로 결정되며 현재 픽처 까지의 시간적 거리는 목록 B에서 최소값이다. refb가 결정된 후, MVb는 현재 픽처와 refa, refb 사이의 시간적 거리를 기반으로 MVa를 스케일링 하여 유도된다.
보간된 MV 필드의 4 개의 MV도 CU 레벨 후보 목록에 추가된다. 보다 구체적으로 현재 CU의(0, 0),(W/2, 0),(0, H/2) 및(W/2, H/2) 위치에서 보간된 MV가 추가된다.
FRUC가 AMVP 모드에서 적용되면 원래 AMVP 후보도 CU 레벨 MV 후보 세트에 추가된다.
CU 레벨에서 AMVP CU의 경우 최대 15 MV, 병합 CU의 경우 최대 13 MV가 후보 목록에 추가된다.
Sub-CU 레벨 MV 후보 세트
서브 CU 레벨에서 설정된 MV 후보는 다음으로 구성된다:
(i) CU 레벨 검색에서 결정된 MV,
(ii) 상단, 왼쪽, 상단 왼쪽 및 상단 오른쪽 이웃 MV,
(iii) 참조 픽처에서 배치된 MV의 스케일드 버전,
(iv) 최대 4 개의 ATMVP 후보,
(v) 최대 4 개의 STMVP 후보
참조 픽처에서 스케일링 된 MV는 다음과 같이 유도된다. 두 목록의 모든 참조 픽처가 트레버스(traverse) 된다. 참조 픽처에서 서브 CU의 배치된 위치에 있는 MV는 시작 CU 레벨 MV의 참조로 스케일링 된다. ATMVP 및 STMVP 후보는 4 개의 제1 후보로 제한된다. 서브 CU 레벨에서 최대 17 개의 MV가 후보 목록에 추가된다.
보간된 MV 필드 생성
프레임을 코딩하기 전에, 일방적인 ME를 기반으로 전체 화면에 대해 보간된 모션 필드가 생성된다. 그러면 모션 필드는 나중에 CU 레벨 또는 서브 CU 레벨 MV 후보로 사용될 수 있다.
먼저, 두 참조 목록에 있는 각 참조 픽처의 모션 필드는 4x4 블록 레벨에서 트레버스(traverse) 된다. 각 4x4 블록에 대해, 현재 픽처(도 12 참조)에서 4x4 블록을 통과하는 블록과 관련된 모션이 보간된 모션이 할당되지 않은 경우, 참조 블록의 모션은 시간적 거리 TD0 및 TD1(HEVC에서 TMVP의 MV 스케일링과 동일한 방식)에 따라 현재 픽처로 스케일링 되고 스케일링 된 모션은 현재 프레임의 블록에 할당된다. 스케일링 된 MV가 4x4 블록에 할당되지 않은 경우 블록의 모션은 보간된 모션 필드에서 사용할 수 없는 것으로 표시됩니다.
보간 및 매칭 비용
모션 벡터가 분수 샘플 위치를 가리키는 경우 모션 보상 보간이 필요하다. 복잡성을 줄이기 위해, 일반 8 탭 HEVC 보간 대신 양방향 보간이 쌍방 매칭과 템플릿 매칭 모두에 사용된다. 매칭 비용 계산은 단계에 따라 약간 다르다. CU 레벨에서 설정 한 후보자 중에서 후보자를 선택할 때, 매칭 비용은 양자 매칭 또는 템플릿 매칭의 절대 합계 차이(SAD)이다. 시작 MV가 결정된 이후, 서브 CU 레벨 검색에서 양자 매칭의 매칭 비용 C는 다음과 같이 계산된다:
Figure pct00026
(14)
여기서 w는 경험적으로 4로 설정된 가중치 인자이고 MV와 MVs는 각각 현재 MV와 시작 MV를 나타낸다. SAD는 여전히 서브 CU 레벨 검색에서 템플릿 매칭의 매칭 비용으로 사용된다.
FRUC 모드에서, MV는 루마 샘플 만 사용하여 유도된다. 유도된 모션은 MC 인터 예측을 위해 루마와 크로마 모두에 사용된다. MV가 결정된 후, 루마 용 8 탭 보간 필터와 크로마 용 4 탭 보간 필터를 사용하여 최종 MC를 수행한다.
MV 미세 조정
MV 미세 조정은 쌍방 매칭 비용 또는 템플릿 매칭 비용을 기준으로 패턴 기반의 MV 검색이다. JEM에서, 두 가지 검색 패턴이 지원된다 - 각각 CU 레벨 및 서브 CU 레벨에서 MV 미세 조정에 대한 제한 없는 중앙 편향 다이아몬드 검색(unrestricted center-biased diamond search)(UCBDS) 및 적응형 교차 검색이다. CU 및 서브 CU 레벨 MV 미세 조정 모두에 대해, MV는 1/4 루마 샘플 MV 정확도로 직접 검색된다. 8 분의 1 루마 샘플 MV 미세 조정이 이어진다. CU 및 서브 CU 단계에 대한 MV 미세 조정의 검색 범위는 8 루마 샘플과 동일하게 설정된다.
FRUC 병합 모드와 매칭 하는 템플릿에서 예측 방향 선택
쌍방 매칭 병합 모드에서, CU의 모션 정보는 두 개의 서로 다른 참조 픽처에서 현재 CU의 모션 궤적을 따라 두 블록 사이의 가장 가까운 매치를 기반으로 유도되기 때문에 양방향 예측이 항상 적용된다. 템플릿 매칭 병합 모드에는 이러한 제한이 없다. 템플릿 매칭 병합 모드에서, 인코더는 list0의 단일 예측(uni-prediction), list1의 단일 예측 또는 CU에 대한 이중 예측(bi-prediction) 중에서 선택할 수 있다. 선택은 다음과 같이 템플릿 매칭 비용을 기반으로 한다:
costBi <= factor * min(cost0, cost1) 이면,
이중 예측이 사용된다;
아니면, cost0 <= cost1 이면
list0의 단일 예측이 사용된다;
아니면,
List1의 단일 예측이 사용된다;
여기서 cost0은 list0 템플릿 매칭의 SAD이고, cost1은 list1 템플릿 매칭의 SAD이고, costBi는 양방향 예측 템플릿 매칭의 SAD이다. 계수(factor) 값은 1.25이고, 이는 선택 과정이 이중 예측쪽으로 편향되어 있음을 의미한다. 인터 예측 방향 선택은 CU 레벨 템플릿 매칭 프로세스에만 적용된다.
인터위브 예측 예(Interweaved Prediction Example)
인터위브 예측으로, 블록은 하나 이상의 분할 패턴이 있는 서브 블록으로 분할된다. 분할 패턴은 블록을 서브 블록의 크기와 서브 블록의 위치를 포함하여 서브 블록으로 나누는 방법으로 정의된다. 각 분할 패턴에 대해, 분할 패턴에 기초하여 각 서브 블록의 모션 정보를 유도하여 대응하는 예측 블록을 생성할 수 있다. 따라서 하나의 예측 방향에 대해서도, 다중 분할 패턴에 의해 다중 예측 블록이 생성될 수 있다. 또는 각 예측 방향에 대해 분할 패턴 만 적용될 수 있다.
X 개의 분할 패턴이 있고 P0, P1,..., PX-1로 표시된 현재 블록의 X 개의 예측 블록이 X 개의 분할 패턴을 갖는 서브 블록 기반 예측에 의해 생성된다고 가정한다. P로 표시된 현재 블록의 최종 예측은 다음과 같이 생성될 수 있다.
Figure pct00027
(15)
여기서(x, y)는 블록의 픽셀 좌표이고 및 w_i(x, y)는 Pi의 가중치 값이다. 일반화를 잃지 않고,
Figure pct00028
으로 가정하고, 여기서 N은 음이 아닌 값이다. 도 13은 두 개의 분할 패턴을 갖는 인터위브 예측의 예를 보여준다.
3. 설명된 실시예에 의해 해결된 예시적인 문제
도 5에 도시된 바와 같이 아핀 병합 MV 유도 프로세스에는 두 가지 잠재적 단점이 있다. 첫째, CU의 왼쪽 상단 지점의 좌표와 CU의 크기는 CU에 속하는 각 4x4 블록별로 저장되어야 한다. 이 정보는 HEVC에 저장할 필요가 없다.
둘째, 디코더는 현재 CU에 인접하지 않은 4x4 블록의 MV에 액세스 해야 한다. HEVC에서 디코더는 현재 CU에 인접한 4x4 블록의 MV에만 액세스 하면 된다.
4. 실시예의 예
우리는 인터위브 예측과 아핀 병합 MV 유도 과정을 포함하여 서브 블록 기반 예측을 더욱 향상시킬 수 있는 몇 가지 방법을 제안한다.
아래의 기술 및 실시예 목록은 일반적인 개념을 설명하기위한 예로 고려되어야 한다. 더욱이, 이들 기술은 비디오 인코딩 동안 또는 그에 상응하여 디코딩 동안 함께 작동하도록 결합될 수 있다. 여기서 "인코딩"이라는 용어는 비 압축 형식의 소스 비디오가 다른 코딩 된 형식으로 인코딩 되는 "트랜스 코딩(transcoding)"을 포함한다.
서브 블록의 MV 유도
일 실시예에서, 서브 블록에 대한 MV는 서브 블록의 중앙에 대해 유도된다.
a. 대안으로, 서브 블록에 대한 MV는 서브 블록의 중앙에 있지 않을 수 있는 서브 블록 내의 임의의 위치에 대해 유도된다.
b. 또는 MV가 유도되는 위치는 서브 블록마다 다를 수 있다.(위치는 각 서브 블록에 상대적이다)
c. MV가 유도되는 위치는 서브 블록의 위치에 따라 달라질 수 있다. 도 14는 예를 보여준다.
d. 서브 블록 크기를 MxN으로 나타내며, 여기서 중앙 위치는((M >> 1) + a) x((N >> 1) + b)로 정의될 수 있다. 여기서 a, b는 0 또는 -1 일 수 있다.
도 14는 상이한 서브 블록에 대한 MV를 유도하기 위한 상이한 위치의 예를 도시한다. 별은 위치를 나타낸다. 알 수 있듯이 MV 유도를 위해 다양한 위치가 사용될 수 있다.
효율적인 아핀 병합 MV 유도
2. 일 실시예에서, 제어점(control point)에서 MV(예를 들어, 왼쪽 상단 지점의 mv0 및 오른쪽 상단 지점의 mv1)는 아핀 병합 MV 유도 과정에서 인접한 이웃 블록의 정보로만 유도된다. 한 예에서, 아핀 병합 모드를 사용하여 현재 CU의 MV를 유도하기 위해 왼쪽 상단 지점의 좌표와 이웃 CU의 크기, 현재 CU에 인접하지 않은 4x4 블록의 MV는 필요하지 않는다.
a. 일 실시예에서, 아핀 파라미터(예를 들어, 식(1)의 4 개 파라미터 아핀 모드에 대한 a, b, c 및 d)는 아핀 모드(아핀 인터 모드 및 아핀 병합 모드 포함)로 코딩 된 각 블록에 저장된다.
i. 블록이 아핀 병합 모드로 코딩 된 경우, 아핀 모드로 코딩 된 이웃 블록에서 4 개의 파라미터를 물려받는다.
ii. 한 예에서, 네 개의 파라미터는 목록 0과 목록 1에 대해 상이하다.
iii. 한 예에서, 두 참조 픽처 목록에 대한 파라미터가 저장될 수 있다. 대안으로, 이중 예측을 위해서도 아핀 파라미터 세트 만 저장할 수 있다. 대안으로, 다중 가설의 경우, 2 세트의 아핀 파라미터가 저장될 수 있으며 각각은 이중 예측을 위한 하나의 참조 픽처 목록에 대응한다.
b. 일 실시예에서, 아핀 파라미터 세트의 일부(예를 들어, 4 개 파라미터 아핀에 대한 식(1)의 두 파라미터(a 및 b)) 만 아핀 모드.(아핀 인터 모드 및 아핀 병합 포함)로 코딩 된 각 블록에 저장된다. 블록이 아핀 병합 모드로 코딩 된 경우, 아핀 모드로 코딩 된 이웃 블록에서 저장된 부분 파라미터를 물려받는다.
i. 한 예에서, 상이한 참조 픽처 또는 상이한 참조 픽처 목록은 관련된 모든 부분 아핀 파라미터를 저장할 수 있다.
ii. 두 개의 파라미터는 목록 0과 목록 1에 대해 상이하다.
iii.
c. 일 실시예에서, 식(1)의 v0x 및 v0y(c 및 d로도 표시됨)는 현재 블록의 왼쪽 상단 모서리에 인접한 블록에서 유도된다. 다음 예에서, 현재 블록이 아핀 모드로 코딩 된 이웃 블록 G에 병합되었다고 가정한다.
i. 한 예에서, 도 15에 도시된 바와 같이 3 개의 이웃 블록 R, S 및 T는(v0x, v0y)를 유도하는데 사용된다. 세 블록의 MV는 MV(R), MV(S) 및 MV(T)로 표시된다.
(a) 한 예에서, R, S, 및 T가 인터 코딩 된 경우,(v0x, v0y)는 MV(X)와 동일하게 설정된다(X는 R, S 또는 T 일 수 있음).
(b) 한 예에서, X가 인터 코딩 된 경우,(v0x, v0y)는 MV(R), MV(S) 및 MV(T)의 평균과 동일하게 설정된다.
(c) 한 예에서, X와 Y가 인터 코딩 된 경우,(v0x, v0y)는 MV(X) 및 MV(Y)의 평균과 동일하게 설정된다(X 및 Y는 R, S 또는 T 일 수 있음).
(d) 한 예에서,(v0x, v0y)는 MV(X)와 동일하게 설정되고, MV(X)는 블록 G의 동일한 참조를 참조해야 한다.
ii. 한 예에서,(v0x, v0y)는 시간적 이웃 블록의 MV에서 유도된다.
iii. 한 예에서,(v0x, v0y)는 블록 G의 참조로 확장된다.
d. 일 실시예에서, 아핀 병합 모드로 코딩 된 블록의 MV는 아핀 모드로 코딩 된 왼쪽 인접 블록 S(4 개 파라미터 아핀 모드에 대해 S = 2, 6 개 파라미터 아핀 모드의 경우 3)에서 유도된다. 도 18a는 예를 보여준다. L0 및 L1은 아핀 모드로 코딩 된 두 개의 왼쪽 인접 블록이다. Δ는 왼쪽에 인접한 두 블록 사이의 거리이다. 두 블록의 모션 벡터는 각각(mvL0 x, mvL0 y) 및(mvL1 x, mvL1 y)이다.(mv0 x, mv0 y)는 현재 블록(식(1)의(v0x, v0y)로 알려진)의 왼쪽 상단 제어점에 있는 MV이다. 두 블록 중 하나(예를 들어, L0)와 왼쪽 상단 제어점 사이의 y 거리는 Φ로 표시된다. 거리는 블록의 상단, 중간 또는 하단에서 측정할 수 있다. 도 16a에서는 바닥에서 측정한다.
i. 한 예에서, a와 b는 식(1)에서 다음과 같이 유도될 수 있다.
Figure pct00029
ii. △는 고정된 숫자 일 수 있다.
(a) 이는 1, 4, 8, 16 등과 같은 2N 형식 일 수 있다. 이 경우, 위의 a와 b를 계산하는 나누기 연산은 시프트 연산으로 구현할 수 있다.
iii. △는 블록의 높이에 의존하는 숫자가 될 수 있다.
iv. △는 L0과 L1(둘 다 포함) 사이의 모든 왼쪽 인접 블록이 아핀 모드로 코딩 되고 동일한 참조 픽처를 공유하는 것을 만족하는 최대 길이로 유도될 수 있다.
v.(mv0 x, mv0 y)는 다음과 같이 유도될 수 있다.
Figure pct00030
vi. Φ가 L1과 왼쪽 상단 제어점 사이의 y 거리이면(mv0 x, mv0 y)는 다음과 같이 유도될 수 있다.
Figure pct00031
e. 일 실시예에서, 아핀 병합 모드로 코딩 된 블록의 MV는 아핀 모드로 코딩 된 상위 인접 블록 S(4 개 파라미터 아핀 모드의 경우 S = 2, 6 개 파라미터 아핀 모드의 경우 3)에서 유도된다. 도 16b는 예를 보여준다. T0 및 T1은 아핀 모드로 코딩 된 두 개의 상단 인접 블록이다. △는 두 개의 상단 인접 블록 사이의 거리이다. 두 블록의 모션 벡터는 각각(mvT0 x, mvT0 y) 및(mvT1 x, mvT1 y)이다.(mv0 x, mv0 y)는 현재 블록(식(1)에서(v0x, v0y)로 알려진)의 왼쪽 상단 제어점에 있는 MV이다. 두 블록 중 하나(예를 들어, T0)와 왼쪽 상단 제어점 사이의 x 거리는 Φ로 표시된다. 거리는 블록의 왼쪽, 중간 또는 오른쪽에서 측정할 수 있다. 도 16b에서는 오른쪽에서 측정한다.
i. 한 예에서 a와 b는 식(1) 다음과 같이 유도될 수 있다.
Figure pct00032
ii. △는 고정된 숫자 일 수 있다.
(a) 1, 4, 8, 16 등과 같이 2N의 형태가 될 수 있다. 이 경우, 위의 a와 b를 계산하는 나눗셈 연산을 시프트 연산으로 구현할 수 있다.
iii. △는 블록의 높이에 의존하는 숫자가 될 수 있다.
iv. △는 T0과 T1 사이의 모든 상위 인접 블록(둘 다 포함)이 아핀 모드로 코딩 되고 동일한 참조 픽처를 공유하는 것을 만족하는 최대 길이로 유도될 수 있다.
v.(mv0 x, mv0 y)는 다음과 같이 유도될 수 있다.
Figure pct00033
vi. Φ가 T1과 왼쪽 상단 제어점 사이의 x 거리 인 경우(mv0 x, mv0 y)는 다음과 같이 유도될 수 있다.
Figure pct00034
도 16a 및 16b는 아핀 모드로 코딩 된 왼쪽 인접 블록(도 16a) 또는 아핀 모드로 코딩 된 상부 인접 블록(도 16b)으로부터 아핀 병합 모드에 대한 유도 MV의 예를 도시한다.
f. 아핀 병합 모드로 코딩 된 블록의 MV는 아핀 모드로 코딩 된 인접하지 않은 블록에서 유도될 수 있다.
g. 아핀 병합 모드로 코딩 된 블록의 MV를 유도하기 위해 사용되는 인접 블록은 블록 모양에 따라 달라질 수 있다.
i. 크기가 MxN 및 M> N 인 블록의 경우, 아핀 병합 모드로 코딩 된 블록의 MV는 아핀 모드로 코딩 된 상위 인접 블록에서 유도된다.
ii. 크기가 MxN이고 M <N 인 블록의 경우, 아핀 병합 모드로 코딩 된 블록의 MV는 아핀 모드로 코딩 된 왼쪽 인접 블록에서 유도된다.
iii. 크기가 MxN이고 M=N 인 블록의 경우, 아핀 병합 모드로 코딩 된 블록의 MV는 현재 블록의 왼쪽 상단 모서리에 인접한 블록에서 유도된다.
3. 일 실시예에서, 이웃 블록의 아핀 병합 후보가 유효한 아핀 병합 후보인지 여부는 이웃 블록의 위치에 따라 다르다.
a. 한 예에서, 이웃 블록이 현재 CTU와 다른 CTU(Coding Tree Unit)(예 : LCU(Largest CU))에 속하는 경우 이웃 블록의 아핀 병합 후보는 유효하지 않은 것으로 취급된다(병합 후보 목록에 포함되지 않음).
b. 대안으로, 이웃 블록의 아핀 병합 후보가 유효하지 않은 것으로 취급한다. 도 17에 도시된 바와 같이 이웃 블록이 현재 CTU 라인과 다른 CTU 라인에 속하는 경우 id(병합 후보 목록에 포함되지 않음).
c. 대안으로, 이웃 블록이 슬라이스와 다른 슬라이스에 속하는 경우 이웃 블록의 아핀 병합 후보는 유효하지 않은 것으로 취급된다(병합 후보 목록에 포함되지 않음).
d. 대안으로, 이웃 블록이 타일과 다른 타일에 속하는 경우 이웃 블록의 아핀 병합 후보는 유효하지 않은 것으로 취급된다(병합 후보 목록에 포함되지 않음).
도 17은 서로 다른 CTU 라인에 속하는 이웃 블록과 현재 블록의 예를 나타낸다. 이 예에서, 이웃 블록이 현재 CTU 라인과 다른 CTU 라인에 속하면 이웃 블록의 아핀 병합 후보는 유효하지 않은 것으로 취급된다(병합 후보 목록에 포함되지 않음).
인터위브(interweaved) 예측의 예
도 18은 개시된 기술에 따른 2 개의 분할 패턴을 갖는 인터위브 예측의 예를 도시한다. 현재 블록(1300)은 여러 패턴으로 나눌 수 있다. 예를 들어, 도 18과 같이 현재 블록은 패턴 0(1301)과 패턴 1(1302)로 나뉘어진다. 두 개의 예측 블록, P0(1303) 및 P1(1304)이 생성된다. 현재 블록(1300)의 최종 예측 블록 P(1305)는 P0(1303) 및 P1(1304)의 가중 합을 계산함으로써 생성될 수 있다.
보다 일반적으로, X 개의 분할 패턴이 주어지면 현재 블록의 X 개의 예측 블록(P0, P1,..., PX-1 표시됨)은 X 개의 분할 패턴을 갖는 서브 블록 기반 예측에 의해 생성될 수 있다. P로 표시된 현재 블록의 최종 예측은 다음과 같이 생성될 수 있다.
Figure pct00035
식(15)
여기서(x, y)는 블록 내 픽셀의 좌표이고 wi(x, y)는 Pi의 가중치이다. 제한이 아닌 예를 들어 가중치는 다음과 같이 표현할 수 있다.
Figure pct00036
식(16)
N은 음이 아닌 값이다. 또는 식(16)은 다음과 같이 표현할 수도 있다.
Figure pct00037
식(17)
가중치의 합이 2의 거듭 제곱이면 부동 소수점 나누기 대신 비트 시프팅 연산을 수행하여 가중치 합 P를 보다 효율적으로 계산할 수 있다.
분할 패턴은 서브 블록의 모양, 크기 또는 위치가 다를 수 있다. 일부 실시예에서, 분할 패턴은 불규칙한 서브 블록 크기를 포함할 수 있다. 도 19a-g는 16x16 블록에 대한 분할 패턴의 여러 예를 보여준다. 도 19a에서, 블록은 개시된 기술에 따라 4x4 서브 블록으로 분할된다. 이 패턴은 JEM에서도 사용된다. 도 19b는 개시된 기술에 따라 블록이 8x8 서브 블록으로 분할되는 예를 도시한다. 도 19c는 개시된 기술에 따라 블록이 8x4 서브 블록으로 분할되는 예를 도시한다. 도 19d는 개시된 기술에 따라 블록이 4x8 서브 블록으로 분할되는 예를 도시한다. 도 19e에서, 블록의 일부는 개시된 기술에 따라 4x4 서브 블록으로 분할된다. 블록 경계의 픽셀은 2x4, 4x2 또는 2x2와 같은 크기의 작은 서브 블록으로 나뉜다. 일부 서브 블록은 병합되어 더 큰 서브 블록을 형성할 수 있다. 도 19f는 6x4, 4x6 또는 6x6과 같은 크기를 가진 더 큰 서브 블록을 형성하기 위해 병합되는 4x4 서브 블록 및 2x4 서브 블록과 같은 인접한 서브 블록의 예를 도시한다. 도 19g에서 블록의 일부는 8x8 서브 블록으로 분할된다. 블록 경계의 픽셀은 대신 8x4, 4x8 또는 4x4와 같은 크기의 더 작은 서브 블록으로 나뉜다.
서브 블록 기반 예측에서 서브 블록의 형태 및 크기는 코딩 블록 및/또는 코딩 된 블록 정보의 형태 및/또는 크기에 기초하여 결정될 수 있다. 예를 들어, 일부 실시예에서, 현재 블록의 크기가 MxN 인 경우 서브 블록의 크기는 4xN(또는 8xN 등)이다. 즉, 서브 블록의 높이는 현재 블록과 동일하다. 일부 실시예에서, 현재 블록이 MxN의 크기를 가질 때 서브 블록은 Mx4(또는 Mx8 등)의 크기를 갖는다. 즉, 서브 블록은 현재 블록과 동일한 너비를 갖는다. 일부 실시예에서, 현재 블록의 크기가 MxN(여기서 M> N) 인 경우 서브 블록은 A> B(예ㄹ르 들어, 8x4) 인 AxB 크기를 갖는다. 대안으로, 서브 블록은 BxA(예 : 4x8)의 크기를 가질 수 있다.
일부 실시예에서, 현재 블록은 MxN의 크기를 갖는다. 서브 블록은 M Х N <= T(또는 Min(M, N) <= T 또는 Max(M, N) <= T 등) 일 때 A Х B의 크기를 가지며, 서브 블록은 M Х N> T(또는 Min(M, N)> T 또는 Max(M, N)> T 등) 인 경우 C Х D의 크기를 가지며, 여기서 A <= C 및 B <= D. 예를 들어, M Х N <= 256이면 서브 블록의 크기는 4 x 4 일 수 있다. 일부 구현에서, 서브 블록은 8x8의 크기를 갖는다.
일부 실시예에서, 인터위브 예측 적용 여부는 인터 예측 방향에 따라 결정될 수 있다. 예를 들어, 일부 실시예에서, 인터위브 예측은 이중 예측에 적용될 수 있지만 단일 예측에는 적용될 수 없다. 또 다른 예로 다중 가설을 적용하면, 인터위브 예측은 하나 이상의 참조 블록이 있을 때 하나의 예측 방향에 적용될 수 있다.
일부 실시예에서, 인터위브 예측을 적용하는 방법은 또한 인터 예측 방향에 기초하여 결정될 수 있다. 일부 실시예에서, 서브 블록 기반 예측을 갖는 이중 예측 블록은 두 개의 서로 다른 참조 목록에 대해 두 개의 서로 다른 분할 패턴을 갖는 서브 블록으로 분할된다. 예를 들어, 이중 예측 블록은 참조 목록 0(L0)에서 예측될 때 도 19d에 도시된 바와 같이 4x8 서브 블록으로 분할된다. 동일한 블록은 참조 목록 1(L1)에서 예측될 때 도 19c에 도시된 바와 같이 8x4 서브 블록으로 분할된다. 최종 예측 P는 다음과 같이 계산된다.
Figure pct00038
식(18)
여기서 P0과 P1은 각각 L0과 L1의 예측이다. w0 및 w1은 각각 L0 및 L1에 대한 가중치 값이다. 식(16)에서 보는 바와 같이, 가중치 값은 다음과 같이 결정될 수 있다: w0(x, y) + w1(x, y) = 1 << N(여기서 N은 음이 아닌 정수 값이다). 각 방향에서 예측을 위해 더 적은 수의 서브 블록이 사용되기 때문에(예를 들어, 8x8 서브 블록이 아닌 4x8 서브 블록), 계산은 기존 서브 블록 기반 방법에 비해 적은 대역폭을 필요로 한다. 더 큰 서브 블록을 사용하면 예측 결과가 잡음 간섭에 덜 민감하다.
일부 실시예에서, 서브 블록 기반 예측을 갖는 단일 예측 블록은 동일한 참조 목록에 대해 둘 이상의 다른 분할 패턴을 갖는 서브 블록으로 분할된다. 예를 들어, 목록 L(L = 0 또는 1) PL에 대한 예측은 다음과 같이 계산된다.
Figure pct00039
식(19)
여기서 XL은 목록 L에 대한 분할 패턴의 수이다. Pi L(x, y)는 i 번째 분할 패턴으로 생성된 예측이고 및 wi L(x, y)는 Pi L(x, y)의 가중치 값이다. 예를 들어 XL이 2 일 때, 목록 L에는 두 개의 분할 패턴이 적용된다. 제 1 분할 패턴에서 블록은 도 19d에 도시된 바와 같이 4x8 서브 블록으로 분할된다. 제2 분할 패턴에서 블록은 도 19d에 도시된 바와 같이 8x4 서브 블록으로 분할된다.
일부 실시예에서, 서브 블록 기반 예측을 갖는 이중 예측 블록은 각각 L0 및 L1의 두 개의 단일 예측 블록의 조합으로 간주된다. 각 목록의 예측은 위의 예에서 설명한대로 유도될 수 있다. 최종 예측 P는 다음과 같이 계산할 수 있다.
Figure pct00040
식(20)
여기서 파라미터 a와 b는 두 개의 내부 예측 블록에 적용되는 두 개의 추가 가중치이다. 이 특정 예제에서 a와 b를 모두 1로 설정할 수 있다. 위의 예와 유사하게, 각 방향에서 더 적은 수의 서브 블록이 예측에 사용되기 때문에(예를 들어, 8x8 서브 블록이 아닌 4x8 서브 블록), 대역폭 사용량은 기존의 서브 블록 기반 방법보다 우수하거나 동등하다. 동시에 더 큰 서브 블록을 사용하여 예측 결과를 향상시킬 수 있다.
일부 실시예에서, 각 단일 예측 블록에서 단일 비 균일 패턴(single non-uniform pattern)이 사용될 수 있다. 예를 들어, 각 목록 L(예를 들어, L0 또는 L1)에 대해, 블록은 다른 패턴으로 분할된다(예를 들어, 도 19e 또는 도 19f에 도시된 바와 같이). 더 적은 수의 서브 블록을 사용하면 대역폭에 대한 요구가 줄어든다. 서브 블록의 비 균일성은 또한 예측 결과의 견고성을 증가시킨다.
일부 실시 측면에서, 다중 가설 코딩 된 블록의 경우, 각 예측 방향(또는 참조 픽처 목록)에 대해 서로 다른 분할 패턴에 의해 생성된 하나 이상의 예측 블록이 있을 수 있다. 추가 가중치가 적용된 최종 예측을 생성하는 데 여러 예측 블록을 사용할 수 있다. 예를 들어, 추가 가중치는 1/M으로 설정될 수 있으며, 여기서 M은 생성된 예측 블록의 총 수이다.
일부 실시예에서, 인코더는 인터위브 예측을 적용할지 여부와 적용 방법을 결정할 수 있다. 그런 다음 인코더는 시퀀스 레벨, 픽처 레벨, 뷰 레벨, 슬라이스 레벨, 코딩 트리 유닛(CTU)(가장 큰 코딩 유닛(Largest Coding Unit)(LCU)이라고도 함) 레벨, CU 레벨, PU 레벨, 트리 유닛(TU) 레벨 또는 영역 레벨(여러 CU/PU/Tus/LCU를 포함할 수 있음)에서 결정에 해당하는 정보를 디코더에 전송할 수 있다. 정보는 시퀀스 파라미터 세트(SPS), 뷰 파라미터 세트(VPS), 픽처 파라미터 세트(PPS), 슬라이스 헤더(SH), CTU/LCU, CU, PU, TU, 또는 지역의 제1 블록 에서 신호를 받을 수 있다.
일부 구현에서, 인터위브 예측은 아핀 예측, ATMVP, STMVP, FRUC 또는 BIO와 같은 기존 서브 블록 방법에 적용된다. 이러한 경우 추가 신호 비용이 필요하지 않다. 일부 구현에서, 인터위브 예측에 의해 생성된 새로운 서브 블록 병합 후보는 예를 들어, 인터위브 예측 + ATMVP, 인터위브 예측 + STMVP, 인터위브 예측 + FRUC 등의 병합 목록에 삽입될 수 있다.
일부 실시예에서, 현재 블록에 의해 사용될 분할 패턴은 공간적 및/또는 시간적 이웃 블록으로부터의 정보에 기초하여 유도될 수 있다. 예를 들어 인코더에 의존하여 관련 정보를 알리는 대신, 인코더와 디코더 모두 시간적 인접성(예를 들어, 동일한 블록의 이전에 사용된 분할 패턴) 또는 공간적 인접성(예를 들어, 이웃 블록에서 사용하는 분할 패턴)을 기반으로 분할 패턴을 얻기 위해 미리 결정된 규칙 세트를 채택할 수 있다.
일부 실시예에서, 가중치 w는 고정될 수 있다. 예를 들어, 모든 분할 패턴에 wi(x, y) = 1로 가중치를 적용할 수 있다. 일부 실시예에서, 가중치는 블록의 위치와 사용된 분할 패턴에 따라 결정될 수 있다. 예를 들어, wi(x, y)는(x, y)마다 다를 수 있다. 일부 실시예에서, 가중 값은 코딩 기술(예를 들어, 아핀 또는 ATMVP) 및/또는 다른 코딩 된 정보(예를 들어, 스킵 또는 비-스킵 모드 및/또는 MV 정보)에 기반한 서브 블록 예측에 더 의존할 수 있다.
일부 실시예에서, 인코더는 가중치 값을 결정하고 시퀀스 레벨, 픽처 레벨, 슬라이스 레벨, CTU/LCU 레벨, CU 레벨, PU 레벨 또는 영역 레벨(여러 CU/PU/Tus/LCU를 포함할 수 있음)에서 값을 디코더로 전송할 수 있다. 가중치 값은 시퀀스 파라미터 세트(Sequence Parameter Set)(SPS), 픽처 파라미터 세트(Picture Parameter Set)(PPS), 슬라이스 헤더(Slice Header)(SH), CTU/LCU, CU, PU 또는 영역의 제1 블록에서 신호를 받을 수 있다. 일부 실시예에서, 가중치는 공간적 및/또는 시간적 이웃 블록의 가중치로부터 유도될 수 있다.
본 명세서에 개시된 인터위브 예측 기술은 서브 블록 기반 예측의 하나, 일부 또는 모든 코딩 기술에 적용될 수 있다는 점에 유의한다. 예를 들어, 인터위브 예측 기술은 아핀 예측에 적용될 수 있는 반면, 서브 블록 기반 예측의 다른 코딩 기술(예를 들어, ATMVP, STMVP, FRUC 또는 BIO)은 인터위브 예측을 사용하지 않는다. 또 다른 예로서, 모든 아핀, ATMVP 및 STMVP는 여기에 개시된 인터위브 예측 기술을 적용한다.
도 20은 예시적인 비디오 비트 스트림 처리 장치(video bitstream processing apparatus)(2000)의 블록도이다. 장치(2000)는 여기에 설명된 하나 이상의 방법을 구현하는 데 사용될 수 있다. 장치(2000)는 스마트 폰, 태블릿, 컴퓨터, 사물 인터넷(IoT) 수신기 등으로 구현될 수 있다. 장치(2000)는 하나 이상의 프로세서(processor)(2002), 하나 이상의 메모리(memory)(2004) 및 비디오 처리 하드웨어(video processing hardware)(2006)를 포함할 수 있다. 프로세서(들)(2002)는 본 문서에 설명된 하나 이상의 방법을 구현하도록 구성될 수 있다. 메모리(메모리들)(2004)는 여기에 설명된 방법 및 기술을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있다. 비디오 처리 하드웨어(2006)는 하드웨어 회로에서 본 문서에 설명된 일부 기술을 구현하는 데 사용될 수 있다. 프로세서(2002) 전자 장치에서 메모리(2004) 및 회로(circuitry)(2006)의 부분 또는 전체 외부 성은 선택 사항이며 구현 선택 사항이다.
도 21은 비디오 처리를 위한 예시적인 방법(2100)에 대한 흐름도를 도시한다. 방법(2100)은 현재 블록을 서브 블록으로 분할하는 단계(partitioning)(2102)를 포함한다. 방법(2100)은 각각의 서브 블록에 대해 모션 벡터를 유도하는 단계(deriving)(2104)를 더 포함하고, 여기서 각각의 서브 블록에 대한 모션 벡터는 위치 규칙에 따라 그 서브 블록에 대한 위치와 연관된다. 방법(2100)은 서브 블록에 대한 모션 벡터를 사용하여 현재 블록의 비트 스트림 표현을 처리하는 단계(processing)(2106)를 더 포함한다.
도 22는 비디오 처리를 위한 예시적인 방법(2200)에 대한 흐름도이다. 방법(2200)은 아핀 모드를 사용하여 현재 블록과 현재 블록의 비트 스트림 표현 사이의 변환을 위해 위치 규칙에 기초하여 현재 블록의 제어점에서 모션 벡터를 유도하는 단계(2202)를 포함한다. 방법(2200)은 모션 벡터를 사용하여 현재 블록과 비트 스트림 표현 사이의 변환을 수행하는 단계(2204)를 더 포함한다. 일부 구현에서, 위치 규칙은 유도를 위해 인접하지 않은 이웃 블록의 사용을 배제하도록 지정할 수 있다. 일부 구현에서, 모션 벡터는 현재 블록의 적어도 하나의 인접하지 않은 4x4 블록을 포함하는 이웃 코딩 유닛(a neighboring coding)의 정보를 사용하지 않고 유도될 수 있다. 일부 구현에서, 방법은 이전에 변환된 이웃 블록의 적어도 일부 아핀 파라미터를 저장하는 단계(storing) 및 재사용하는 단계(reusing)를 더 포함한다. 일부 구현에서, 적어도 일부 아핀 파라미터의 저장 및 재사용은 서로 별개로 두 단계로 수행될 수 있다.
도 23은 비디오 처리를 위한 예시적인 방법(2300)에 대한 흐름도이다. 방법(2300)은, 현재 블록과 현재 블록의 비트 스트림 표현 간의 변환을 위해, 하나 이상의 이웃 블록의 위치에 기초하여 유효성 기준을 만족하는 하나 이상의 이웃 블록으로부터의 병합 후보를 포함함으로써 변환을 위한 아핀 병합 후보의 목록을 결정하는 단계(determining)(2302)를 포함한다. 방법(2300)은 모션 벡터를 사용하여 현재 블록과 비트 스트림 표현 사이의 변환을 수행하는 단계(2304)를 더 포함한다.
전술한 방법/기술의 추가 특징 및 실시예는 항목 기반(clause-based)의 설명 형태를 사용하여 아래에서 설명된다.
항목 1. 비디오 처리 방법에 있어서(예를 들어, 도 21에 도시된 방법(2100)), 현재 블록을 서브 블록으로 분할하는 단계; 각각의 서브 블록에 대해, 모션 벡터를 유도하는 단계 - 각각의 서브 블록에 대한 모션 벡터는 위치 규칙에 따라 그 서브 블록에 대한 위치와 연관됨 -; 및 서브 블록에 대한 모션 벡터를 사용하여 현재 블록의 비트 스트림 표현을 처리하는 단계를 포함하는 방법.
항목 2. 제1항목에 있어서, 위치 규칙은 위치가 해당 서브 블록의 중앙임을 지정하는 방법.
항목 3. 제2항목에 있어서, 대응하는 서브 블록의 크기는 M x N이고 중앙은((M >> 1) + a) x((N >> 1) + b)로 정의되고, M과 N은 자연수이고 a, b는 0 또는 -1인 방법.
항목 4. 제1항목에 있어서, 위치 규칙은 위치가 해당 서브 블록의 중앙이 아닌 위치임을 지정하는 방법.
항목 5. 제1항목에 있어서, 위치 규칙에 의해 지정된 위치는 상이한 서브 블록의 상이한 위치에서 유도된 모션 벡터가 되는 방법.
항목 6. 비디오 처리 방법에 있어서(예를 들어, 도 22에 도시된 방법(2200)), 아핀 모드를 사용하여 현재 블록과 현재 블록의 비트 스트림 표현 사이의 변환을 위해, 위치 규칙에 기초한 현재 블록의 제어점에서 모션 벡터를 유도하는 단계; 및 모션 벡터를 사용하여 현재 블록과 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함하고, 위치 규칙은 유도를 위해 인접하지 않은 이웃 블록의 사용을 배제하도록 지정하는 방법.
항목 7. 제6항목에 있어서, 모션 벡터는 현재 블록의 적어도 하나의 인접하지 않은 4x4 블록을 포함하는 이웃 코딩 유닛의 정보를 사용하지 않고 유도된 방법.
항목 8. 제7항목에 있어서, 이전에 변환된 이웃 블록의 적어도 일부 아핀 파라미터를 저장하는 단계 및 재사용하는 단계를 더 포함하는 방법.
항목 9. 제8항목에 있어서, 현재 블록은 아핀 모드로 코딩 된 이웃 블록에서 적어도 일부 아핀 파라미터를 물려받는 방법.
항목 10. 제8항목에 있어서, 적어도 일부 아핀 파라미터는 목록 0 및 목록 1 참조 프레임에 대해 상이한 방법.
항목 11. 제8항목에 있어서, 적어도 일부 아핀 파라미터는 다중 가설 참조 픽처 목록 중 하나에 대한, 두 개의 세트를 포함하는 방법.
항목 12. 제8항목 내지 제11항목 중 어느 한 항목에 있어서, 적어도 일부 아핀 파라미터는 네 개의 아핀 파라미터 중 두 개를 포함하는 방법.
항목 13. 제6항목에 있어서, 현재 블록의 왼쪽 상단 모서리의 모션 벡터(v0x, v0y)는 현재 블록의 왼쪽 상단 모서리에 인접한 블록에서 유도되고 및 현재 블록은 아핀 모드로 코딩 된 이웃 블록에 병합되는 방법.
항목 14. 제13항목에 있어서, 모션 벡터(v0x, v0y)를 유도하기 위해, 각각에 대응하는 모션 벡터 MV(R), MV(S) 및 MV(T)를 갖는 세 개의 이웃 블록 R, S 및 T를 사용하는 단계를 더 포함하고, 및 X가 인터 코딩 된 경우, 모션 벡터(v0x, v0y)는 MV(X)와 동일하게 설정되고 및 X는 R, S 또는 T인 방법.
항목 15. 제13항목에 있어서, 모션 벡터(v0x, v0y)를 유도하기 위해, 각각에 대응하는 모션 벡터 MV(R), MV(S) 및 MV(T)를 갖는 세 개의 이웃 블록 R, S 및 T를 사용하는 단계를 더 포함하고, 및 R, S 및 T가 인터 코딩 된 경우, 모션 벡터(v0x, v0y)는 MV(R), MV(S) 및 MV(T)의 평균과 동일하게 설정되는 방법.
항목 16. 제13항목에 있어서, 모션 벡터(v0x, v0y)를 유도하기 위해, 각각에 대응하는 모션 벡터 MV(R), MV(S) 및 MV(T)를 갖는 세 개의 이웃 블록 R, S 및 T를 사용하는 단계를 더 포함하고, 및 X 및 Y가 인터 코딩 된 경우, 모션 벡터(v0x, v0y)는 MV(X) 및 MV(Y)의 평균과 동일하게 설정되고 및 X 및 Y는 R, S 또는 T인 방법.
항목 17. 제13항목에 있어서, 모션 벡터(v0x, v0y)는 시간적 이웃 블록의 모션 벡터에서 유도되는 방법.
항목 18. 제13항목에 있어서, 모션 벡터(v0x, v0y)는 이웃 블록의 참조로 스케일 되는 방법.
항목 19. 제6항목에 있어서, 모션 벡터는 아핀 모드로 코딩 된 왼쪽 인접 블록에서 유도되는 방법.
항목 20. 제6항목에 있어서, 아핀 모드로 코딩 된 블록의 모션 벡터는 아핀 모드로 코딩 된 S 개의 상위 인접 블록에서 유도되고, S는 네 개의 파라미터 아핀 모드에 대해 2와 동일한 방법.
항목 21. 제20항목에 있어서, 두 개의 상부 인접 블록 사이의 거리는 2N의 형태로 고정된 숫자이고, N은 정수인 방법.
항목 22. 제20항목에 있어서, 상단 인접 블록 사이의 거리는 아핀 모드로 코딩 된 블록의 높이에 의존하는 방법.
항목 23. 제20항목에 있어서, 상위 인접 블록 사이의 거리는 모든 상위 인접 블록이 아핀 모드로 코딩 되고 동일한 참조 픽처를 공유하는 것을 만족하는 최대 길이로 유도되는 방법.
항목 24. 제20항목에 있어서, 현재 블록의 왼쪽 상단 제어점에서 모션 벡터(mv0 x, mv0 y)는 i) mv0 x = mvT0 x - aΦ 및 mv0 y = mvT0 y - bΦ 또는 ii) mv0 x = mvT1 x 1x -aΦ, mv0 y = mvT1 y - bΦ로 유도되고, Φ는 왼쪽 상단 제어점과 아핀 모드로 코딩 된 두 개의 상단 인접 블록 T0 및 T1 중 하나 사이의 거리인 방법.
항목 25. 제6항목에 있어서, 현재 블록은 M x N 픽셀 크기이며, 여기서 M과 N은 정수이고, 및 M <N 일 때 모션 벡터는 왼쪽 인접 블록에서 유도되는 방법.
항목 26. 제6항목에 있어서, 현재 블록의 크기는 M x N 픽셀이며, 여기서 M과 N은 정수이고, 및 모션 벡터는 M> N 일 때 상단 측면 인접 블록에서 유도되는 방법.
항목 27. 제6항목에 있어서, 현재 블록은 M x N 픽셀 크기이고, 여기서 M과 N은 정수이고, 모션 벡터는 M = N 일 때 왼쪽 상단 모서리에 인접한 블록에서 유도되는 방법.
항목 28. 비디오 처리 방법에 있어서(예를 들어, 도 23에 도시된 방법(2300)), 현재 블록과 현재 블록의 비트 스트림 표현 간의 변환을 위해, 하나 이상의 이웃 블록의 위치에 기초한 유효성 기준을 만족하는 하나 이상의 이웃 블록으로부터의 병합 후보를 포함함으로써 변환을 위한 아핀 병합 후보의 목록을 결정하는 단계; 및 모션 벡터를 사용하여 현재 블록과 비트 스트림 표현 사이의 변환을 수행하는 단계를 포함하는 방법.
항목 29. 제28항목에 있어서, 이웃 블록은 현재 CTU와 상이한 CTU(코딩 트리 유닛)에서 왔고, 및 이웃 블록의 아핀 병합 모드 후보는 유효하지 않은 방법.
항목 30. 제28항목에 있어서, 현재 CTU는 현재 CTU 라인에 속하고, 이웃 블록은 현재 CTU 라인과 상이한 CTU 라인에 속하고, 및 이웃 블록의 아핀 병합 모드 후보는 유효하지 않은 방법.
항목 31. 제28항목에 있어서, 현재 블록은 현재 슬라이스에 속하고, 이웃 블록은 현재 슬라이스와 상이한 슬라이스에 속하고, 및 이웃 블록의 아핀 병합 모드 후보는 유효하지 않은 방법.
항목 32. 제28항목에 있어서, 현재 블록은 현재 타일에 속하고, 이웃 블록은 현재 타일과 상이한 타일에 속하고, 및 이웃 블록의 아핀 병합 모드 후보는 유효하지 않은 방법.
항목 33. 비디오 처리 방법에 있어서, 아핀 모드를 사용하여 현재 블록과 현재 블록의 비트 스트림 표현 사이의 변환을 위해, 하나 이상의 인접한 이웃 블록에 기초한 현재 블록의 제어점에서 모션 벡터를 유도하는 단계; 및 모션 벡터를 사용하여 현재 블록과 비트 스트림 표현 사이의 변환을 수행하는 방법.
항목 34. 제33항목에 있어서, 아핀 모드를 사용하는 현재 블록의 제어점에 있는 모션 벡터는 위의 하나 이상의 인접한 이웃 블록에서 물려받는 방법.
항목 35. 제33항목에 있어서, 인접한 이웃 블록이 또한 아핀 모드로 코딩 되는 방법.
항목 36. 제35항목에 있어서, 인접한 이웃 블록은 4-파라미터 아핀 모드로 코딩 되는 방법.
항목 37. 제36항목에 있어서, 아핀 모드를 사용하는 현재 블록의 제어점에 있는 모션 벡터는 하나 이상의 인접한 이웃 블록의 왼쪽 하단 및 오른쪽 하단 제어점 모션 벡터에서 물려받는 방법.
항목 38. 제1항목 내지 제37항목 중 어느 한 항목에 있어서, 변환은 현재 블록에서 비트 스트림 표현을 생성하는 단계를 포함하는 방법.
항목 39. 제1항목 내지 제37항목 중 어느 한 항목에 있어서, 변환은 비트 스트림 표현으로부터 현재 블록을 생성하는 단계를 포함하는 방법.
항목 40. 비디오 디코딩 장치에 있어서, 제1항목 내지 제39항목 중 하나 이상에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 장치.
항목 41. 비디오 인코딩 장치에 있어서, 제1항목 내지 제39항목 중 하나 이상에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 장치.
항목 42. 코드가 저장된 컴퓨터 판독 가능 프로그램 매체에 있어서, 코드는, 프로세서에 의해 실행될 때, 프로세서로 하여금 제1항목 내지 제39항목 중 하나 이상에 기재된 방법을 구현하는 명령을 포함하는 컴퓨터 판독 가능 프로그램 매체.
앞서 말한 것에서, 현재 개시된 기술의 특정 실시예가 예시의 목적으로 여기에 설명되었지만, 본 발명의 범위를 벗어나지 않고 다양한 수정이 이루어질 수 있다는 것을 이해할 것이다. 따라서, 현재 개시된 기술은 첨부된 청구 범위를 제외하고는 제한되지 않는다.
이 문서에 설명된 공개 및 기타 실시예, 모듈 및 기능적 동작은, 이 문서에 공개된 구조 및 구조적 등가물을 포함하거나 이들 중 하나 이상의 조합을 포함하는, 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다. 개시된 및 다른 실시예는 하나 이상의 컴퓨터 프로그램 제품, 즉, 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 동작을 제어하기 위해 컴퓨터 판독 가능 매체 상에 인코딩 된 컴퓨터 프로그램 명령의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독 가능 매체는 기계 판독 가능 저장 장치, 기계 판독 가능 저장 기판, 메모리 장치, 기계 판독 가능 전파 신호에 영향을 미치는 물질의 구성, 또는 이들 중 하나 이상의 조합일 수 있다. 용어 "데이터 처리 장치(data processing apparatus)"는 데이터 처리를 위한 모든 장치, 장치 및 기계를 포함하며, 예를 들어 프로그램 가능한 프로세서, 컴퓨터 또는 다중 프로세서 또는 컴퓨터를 포함한다. 장치는 하드웨어에 추가하여 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파된 신호는 인공적으로 생성된 신호, 예를 들어 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하기 위해 생성되는 기계 생성 전기, 광학 또는 전자기 신호이다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 응용 프로그램, 스크립트 또는 코드라고도 함)은 컴파일 되거나 해석된 언어를 포함하여 모든 형태의 프로그래밍 언어로 작성될 수 있고, 독립 실행형 프로그램이나 모듈, 구성 요소, 서브 루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 장치를 포함하여 모든 형태로 배치될 수 있다. 컴퓨터 프로그램이 반드시 파일 시스템의 파일에 해당하는 것은 아니다. 프로그램은 다른 프로그램이나 데이터(예를 들어, 마크 업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일부, 해당 프로그램 전용 단일 파일 또는 여러 개의 조정된 파일(예를 들어, 하나 이상의 모듈, 서브 프로그램 또는 코드 일부를 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 위치하거나 여러 사이트에 분산되고 통신 네트워크로 상호 연결된 여러 컴퓨터에서 실행되도록 배치될 수 있다.
이 문서에 설명된 프로세스 및 논리 흐름은 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능 프로세서에서 입력 데이터를 조작하고 출력을 생성하여 기능을 수행할 수 있다. 프로세스 및 로직 흐름은 또한 FPGA(필드 프로그래밍 가능 게이트 어레이) 또는 ASIC(애플리케이션 특정 집적 회로(application specific integrated circuit))와 같은 특수 목적의 로직 회로로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는, 예를 들어 범용 및 특수 목적의 마이크로 프로세서와 모든 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로 프로세서는 읽기 전용 메모리 나 랜덤 액세스 메모리 또는 둘 다에서 명령과 데이터를 수신한다. 컴퓨터의 필수 요소는 명령을 수행하기 위한 프로세서와 명령과 데이터를 저장하기 위한 하나 이상의 메모리 장치이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치, 예를 들어, 마그네틱, 마그네토 광 디스크 또는 광 디스크, 로부터 데이터를 수신하거나 데이터를 전송하거나 둘 모두를 포함하거나 작동 가능하게 결합된다. 그러나 컴퓨터에는 이러한 장치가 필요하지 않는다. 컴퓨터 프로그램 명령 및 데이터를 저장하는 데 적합한 컴퓨터 판독 가능 매체에는 모든 형태의 비 휘발성 메모리, 매체 및 메모리 장치, 예를 들어, EPROM, EEPROM 및 플래시 메모리 장치와 같은 반도체 메모리 장치; 예를 들어 내부 하드 디스크 또는 이동식 디스크와 같은 자기 디스크; 광 자기 디스크; 및 CD ROM 및 DVD-ROM 디스크와 같은 사례를 포함한다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.
이 특허 문서에는 많은 세부 사항이 포함되어 있지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 것에 대한 제한으로 해석되어서는 안되며, 오히려 특정 발명의 특정 실시예에 특정할 수 있는 특징의 설명으로 해석되어야 한다. 개별 실시예의 맥락에서 본 특허 문서에 설명된 특정 특징은 또한 단일 실시예에서 조합하여 구현될 수 있다. 반대로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 다중 실시예에서 개별적으로 또는 임의의 적절한 서브 조합으로 구현될 수 있다. 더욱이, 특징이 특정 조합으로 작용하는 것으로 위에서 설명될 수 있고 심지어 처음에 그렇게 주장될 수도 있지만, 청구된 조합으로부터의 하나 이상의 특징은 일부 경우에 조합으로부터 배제될 수 있고, 청구된 조합은 서브 조합 또는 하위 조합의 변형으로 향할 수 있다.
마찬가지로 작업은 특정 순서로 도면에 표시되지만, 이는 바람직한 결과를 달성하기 위해 그러한 동작이 도시된 특정 순서 또는 순차적인 순서로 수행되거나 모든 예시된 동작이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 또한, 이 특허 문서에 설명된 실시예에서 다양한 시스템 구성 요소의 분리는 모든 실시예에서 그러한 분리를 요구하는 것으로 이해되어서는 안된다.

Claims (42)

  1. 비디오 처리 방법에 있어서,
    현재 블록을 서브 블록으로 분할하는 단계;
    각각의 서브 블록에 대해, 모션 벡터를 유도하는 단계 - 각각의 서브 블록에 대한 상기 모션 벡터는 위치 규칙에 따라 그 서브 블록에 대한 위치와 연관됨 -; 및
    상기 서브 블록에 대한 모션 벡터를 사용하여 상기 현재 블록의 비트 스트림 표현을 처리하는 단계
    를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 위치 규칙은 상기 위치가 해당 서브 블록의 중앙임을 지정하는
    방법.
  3. 제2항에 있어서,
    상기 대응하는 서브 블록의 크기는 M x N이고 상기 중앙은((M >> 1) + a) x((N >> 1) + b)로 정의되고, M과 N은 자연수이고 a, b는 0 또는 -1인
    방법.
  4. 제1항에 있어서,
    상기 위치 규칙은 상기 위치가 해당 서브 블록의 중앙이 아닌 위치임을 지정하는
    방법.
  5. 제1항에 있어서,
    상기 위치 규칙에 의해 지정된 위치는 상이한 서브 블록의 상이한 위치에서 유도된 모션 벡터가 되는
    방법.
  6. 비디오 처리 방법에 있어서,
    아핀 모드를 사용하여 현재 블록과 상기 현재 블록의 비트 스트림 표현 사이의 변환을 위해, 위치 규칙에 기초한 상기 현재 블록의 제어점에서 모션 벡터를 유도하는 단계; 및
    상기 모션 벡터를 사용하여 상기 현재 블록과 상기 비트 스트림 표현 사이의 상기 변환을 수행하는 단계를 포함하고,
    상기 위치 규칙은 상기 유도를 위해 인접하지 않은 이웃 블록의 사용을 배제하도록 지정하는
    방법.
  7. 제6항에 있어서,
    모션 벡터는 상기 현재 블록의 적어도 하나의 인접하지 않은 4x4 블록을 포함하는 이웃 코딩 유닛의 정보를 사용하지 않고 유도된
    방법.
  8. 제7항에 있어서,
    이전에 변환된 이웃 블록의 적어도 일부 아핀 파라미터를 저장하는 단계 및 재사용하는 단계
    를 더 포함하는
    방법.
  9. 제8항에 있어서,
    상기 현재 블록은 아핀 모드로 코딩 된 이웃 블록에서 적어도 상기 일부 아핀 파라미터를 물려받는
    방법.
  10. 제8항에 있어서,
    상기 적어도 일부 아핀 파라미터는 목록 0 및 목록 1 참조 프레임에 대해 상이한
    방법.
  11. 제8항에 있어서,
    적어도 상기 일부 아핀 파라미터는 다중 가설 참조 픽처 목록 중 하나에 대한, 두 개의 세트를 포함하는
    방법.
  12. 제8항 내지 제11항 중 어느 한 항에 있어서,
    적어도 상기 일부 아핀 파라미터는 네 개의 아핀 파라미터 중 두 개를 포함하는
    방법.
  13. 제6항에 있어서,
    상기 현재 블록의 왼쪽 상단 모서리의 모션 벡터(v0x, v0y)는 상기 현재 블록의 상기 왼쪽 상단 모서리에 인접한 블록에서 유도되고 및 상기 현재 블록은 상기 아핀 모드로 코딩 된 이웃 블록에 병합되는
    방법.
  14. 제13항에 있어서,
    상기 모션 벡터(v0x, v0y)를 유도하기 위해, 각각에 대응하는 모션 벡터 MV(R), MV(S) 및 MV(T)를 갖는 세 개의 이웃 블록 R, S 및 T를 사용하는 단계를 더 포함하고, 및
    X가 인터 코딩 된 경우, 상기 모션 벡터(v0x, v0y)는 MV(X)와 동일하게 설정되고 및 X는 R, S 또는 T인
    방법.
  15. 제13항에 있어서,
    상기 모션 벡터(v0x, v0y)를 유도하기 위해, 각각에 대응하는 모션 벡터 MV(R), MV(S) 및 MV(T)를 갖는 세 개의 이웃 블록 R, S 및 T를 사용하는 단계를 더 포함하고, 및
    R, S 및 T가 인터 코딩 된 경우, 상기 모션 벡터(v0x, v0y)는 MV(R), MV(S) 및 MV(T)의 평균과 동일하게 설정되는
    방법.
  16. 제13항에 있어서,
    상기 모션 벡터(v0x, v0y)를 유도하기 위해, 각각에 대응하는 모션 벡터 MV(R), MV(S) 및 MV(T)를 갖는 세 개의 이웃 블록 R, S 및 T를 사용하는 단계를 더 포함하고, 및
    X 및 Y가 인터 코딩 된 경우, 상기 모션 벡터(v0x, v0y)는 MV(X) 및 MV(Y)의 평균과 동일하게 설정되고 및 X 및 Y는 R, S 또는 T인
    방법.
  17. 제13항에 있어서,
    상기 모션 벡터(v0x, v0y)는 시간적 이웃 블록의 모션 벡터에서 유도되는
    방법.
  18. 제13항에 있어서,
    상기 모션 벡터(v0x, v0y)는 상기 이웃 블록의 참조로 스케일 되는
    방법.
  19. 제6항에 있어서,
    상기 모션 벡터는 상기 아핀 모드로 코딩 된 왼쪽 인접 블록에서 유도되는
    방법.
  20. 제6항에 있어서,
    상기 아핀 모드로 코딩 된 블록의 모션 벡터는 상기 아핀 모드로 코딩 된 S 개의 상위 인접 블록에서 유도되고, S는 네 개의 파라미터 아핀 모드에 대해 2와 동일한
    방법.
  21. 제20항에 있어서,
    두 개의 상부 인접 블록 사이의 거리는 2N의 형태로 고정된 숫자이고, N은 정수인
    방법.
  22. 제20항에 있어서,
    상기 상단 인접 블록 사이의 거리는 상기 아핀 모드로 코딩 된 상기 블록의 높이에 의존하는
    방법.
  23. 제20항에 있어서,
    상기 상위 인접 블록 사이의 거리는 모든 상위 인접 블록이 상기 아핀 모드로 코딩 되고 동일한 참조 픽처를 공유하는 것을 만족하는 최대 길이로 유도되는
    방법.
  24. 제20항에 있어서,
    상기 현재 블록의 왼쪽 상단 제어점에서 모션 벡터(mv0 x, mv0 y)는 i) mv0 x = mvT0 x - aΦ 및 mv0 y = mvT0 y - bΦ 또는 ii) mv0 x = mvT1 x 1x -aΦ, mv0 y = mvT1 y - bΦ로 유도되고,
    Φ는 왼쪽 상단 제어점과 아핀 모드로 코딩 된 두 개의 상단 인접 블록 T0 및 T1 중 하나 사이의 거리인
    방법.
  25. 제6항에 있어서,
    상기 현재 블록은 M x N 픽셀 크기이며, 여기서 M과 N은 정수이고, 및 M <N 일 때 모션 벡터는 왼쪽 인접 블록에서 유도되는
    방법.
  26. 제6항에 있어서,
    상기 현재 블록의 크기는 M x N 픽셀이며, 여기서 M과 N은 정수이고, 및 모션 벡터는 M> N 일 때 상단 측면 인접 블록에서 유도되는
    방법.
  27. 제6항에 있어서,
    상기 현재 블록은 M x N 픽셀 크기이고, 여기서 M과 N은 정수이고, 모션 벡터는 M = N 일 때 왼쪽 상단 모서리에 인접한 블록에서 유도되는
    방법.
  28. 비디오 처리 방법에 있어서,
    현재 블록과 상기 현재 블록의 비트 스트림 표현 간의 변환을 위해, 하나 이상의 이웃 블록의 위치에 기초한 유효성 기준을 만족하는 하나 이상의 이웃 블록으로부터의 병합 후보를 포함함으로써 상기 변환을 위한 아핀 병합 후보의 목록을 결정하는 단계;
    및 모션 벡터를 사용하여 상기 현재 블록과 상기 비트 스트림 표현 사이의 변환을 수행하는 단계
    를 포함하는
    방법.
  29. 제28항에 있어서,
    이웃 블록은 현재 CTU와 상이한 CTU(코딩 트리 유닛)에서 왔고, 및 상기 이웃 블록의 아핀 병합 모드 후보는 유효하지 않은
    방법.
  30. 제28항에 있어서,
    현재 CTU는 현재 CTU 라인에 속하고, 상기 이웃 블록은 상기 현재 CTU 라인과 상이한 CTU 라인에 속하고, 및 상기 이웃 블록의 상기 아핀 병합 모드 후보는 유효하지 않은
    방법.
  31. 제28항에 있어서,
    상기 현재 블록은 현재 슬라이스에 속하고, 상기 이웃 블록은 상기 현재 슬라이스와 상이한 슬라이스에 속하고, 및 상기 이웃 블록의 상기 아핀 병합 모드 후보는 유효하지 않은
    방법.
  32. 제28항에 있어서,
    상기 현재 블록은 현재 타일에 속하고, 상기 이웃 블록은 상기 현재 타일과 상이한 타일에 속하고, 및 상기 이웃 블록의 상기 아핀 병합 모드 후보는 유효하지 않은
    방법.
  33. 비디오 처리 방법에 있어서,
    아핀 모드를 사용하여 현재 블록과 현재 블록의 비트 스트림 표현 사이의 변환을 위해, 하나 이상의 인접한 이웃 블록에 기초한 상기 현재 블록의 제어점에서 모션 벡터를 유도하는 단계; 및
    상기 모션 벡터를 사용하여 상기 현재 블록과 상기 비트 스트림 표현 사이의 상기 변환을 수행하는
    방법.
  34. 제33항에 있어서,
    아핀 모드를 사용하는 상기 현재 블록의 제어점에 있는 상기 모션 벡터는 위의 상기 하나 이상의 인접한 이웃 블록에서 물려받는
    방법.
  35. 제33항에 있어서,
    상기 인접한 이웃 블록이 또한 아핀 모드로 코딩 되는
    방법.
  36. 제35항에 있어서,
    상기 인접한 이웃 블록은 4-파라미터 아핀 모드로 코딩 되는
    방법.
  37. 제36항에 있어서,
    아핀 모드를 사용하는 상기 현재 블록의 제어점에 있는 상기 모션 벡터는 상기 하나 이상의 인접한 이웃 블록의 왼쪽 하단 및 오른쪽 하단 제어점 모션 벡터에서 물려받는
    방법.
  38. 제1항 내지 제37항 중 어느 한 항에 있어서,
    상기 변환은 상기 현재 블록에서 상기 비트 스트림 표현을 생성하는 단계
    를 포함하는
    방법.
  39. 제1항 내지 제37항 중 어느 한 항에 있어서,
    상기 변환은 상기 비트 스트림 표현으로부터 현재 블록을 생성하는 단계
    를 포함하는
    방법.
  40. 비디오 디코딩 장치에 있어서,
    제1항 내지 제39항 중 하나 이상에 기재된 방법을 구현하도록 구성된 프로세서
    를 포함하는
    장치.
  41. 비디오 인코딩 장치에 있어서,
    제1항 내지 제39항 중 하나 이상에 기재된 방법을 구현하도록 구성된 프로세서
    를 포함하는
    장치.
  42. 코드가 저장된 컴퓨터 판독 가능 프로그램 매체에 있어서,
    상기 코드는, 프로세서에 의해 실행될 때,
    상기 프로세서로 하여금 제1항 내지 제39항 중 하나 이상에 기재된 방법을 구현하는 명령을 포함하는 컴퓨터 판독 가능 프로그램 매체.
KR1020207037240A 2018-07-01 2019-07-01 효율적인 아핀 병합 모션 벡터 유도 KR20210024487A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CNPCT/CN2018/093943 2018-07-01
CN2018093943 2018-07-01
CNPCT/CN2018/095568 2018-07-13
CN2018095568 2018-07-13
PCT/IB2019/055592 WO2020008334A1 (en) 2018-07-01 2019-07-01 Efficient affine merge motion vector derivation

Publications (1)

Publication Number Publication Date
KR20210024487A true KR20210024487A (ko) 2021-03-05

Family

ID=67297216

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207037240A KR20210024487A (ko) 2018-07-01 2019-07-01 효율적인 아핀 병합 모션 벡터 유도

Country Status (7)

Country Link
US (3) US20210058637A1 (ko)
EP (1) EP3804327A1 (ko)
JP (2) JP2021530154A (ko)
KR (1) KR20210024487A (ko)
CN (2) CN114374850A (ko)
TW (1) TWI731363B (ko)
WO (1) WO2020008334A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2577318B (en) * 2018-09-21 2021-03-10 Canon Kk Video coding and decoding
WO2020075053A1 (en) 2018-10-08 2020-04-16 Beijing Bytedance Network Technology Co., Ltd. Generation and usage of combined affine merge candidate
GB2578150C (en) 2018-10-18 2022-05-18 Canon Kk Video coding and decoding
CN111083484A (zh) 2018-10-22 2020-04-28 北京字节跳动网络技术有限公司 基于子块的预测
US11539940B2 (en) * 2018-11-12 2022-12-27 Hfi Innovation Inc. Method and apparatus of multi-hypothesis in video coding
WO2020098644A1 (en) 2018-11-12 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Bandwidth control methods for inter prediction
CN117319644A (zh) 2018-11-20 2023-12-29 北京字节跳动网络技术有限公司 基于部分位置的差计算
WO2020103877A1 (en) 2018-11-20 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Coding and decoding of video coding modes
CN113056920A (zh) 2018-11-22 2021-06-29 北京字节跳动网络技术有限公司 基于子块的帧间预测的协调方法
EP3888360A1 (en) * 2018-11-30 2021-10-06 InterDigital VC Holdings, Inc. Triangle and multi-hypothesis combination for video coding and decoding
WO2020114405A1 (en) 2018-12-03 2020-06-11 Beijing Bytedance Network Technology Co., Ltd. Indication method of maximum number of candidates
WO2020177756A1 (en) 2019-03-06 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Size dependent inter coding
JP7026064B2 (ja) * 2019-03-11 2022-02-25 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
KR20230169434A (ko) 2019-04-02 2023-12-15 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 디코더 측 움직임 벡터 유도
EP3997868A4 (en) 2019-08-10 2023-02-22 Beijing Bytedance Network Technology Co., Ltd. BUFFER MANAGEMENT DURING SUBPICTURE DECODING
EP3997877A4 (en) 2019-08-13 2023-05-24 Beijing Bytedance Network Technology Co., Ltd. MOTION ACCURACY IN SUBBLOCK-BASED INTERPREDICTION
WO2021052507A1 (en) 2019-09-22 2021-03-25 Beijing Bytedance Network Technology Co., Ltd. Sub-picture coding and decoding of video
BR112022006387A2 (pt) 2019-10-02 2022-07-26 Beijing Bytedance Network Tech Co Ltd Método e aparelho de processamento de vídeo, e, meio legível por computador
EP4333431A1 (en) 2019-10-18 2024-03-06 Beijing Bytedance Network Technology Co., Ltd. Syntax constraints in parameter set signaling of subpictures
CN114071147B (zh) * 2020-07-29 2023-04-11 四川大学 一种基于双线性模型的vvc运动补偿方法
CN117581542A (zh) * 2021-09-06 2024-02-20 北京达佳互联信息技术有限公司 视频编解码中针对仿射合并模式的候选导出
WO2023049219A1 (en) * 2021-09-24 2023-03-30 Beijing Dajia Internet Information Technology Co., Ltd. Candidate derivation for affine merge mode in video coding
WO2023137234A1 (en) * 2022-01-17 2023-07-20 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for candidate derivation for affine merge mode in video coding
WO2023185933A1 (en) * 2022-03-30 2023-10-05 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9060176B2 (en) * 2009-10-01 2015-06-16 Ntt Docomo, Inc. Motion vector prediction in video coding
WO2016008157A1 (en) * 2014-07-18 2016-01-21 Mediatek Singapore Pte. Ltd. Methods for motion compensation using high order motion model
SG11201703551VA (en) * 2014-12-09 2017-05-30 Mediatek Inc Method of motion vector predictor or merge candidate derivation in video coding
CN106303543B (zh) * 2015-05-15 2018-10-30 华为技术有限公司 视频图像编码和解码的方法、编码设备和解码设备
CN104935938B (zh) * 2015-07-15 2018-03-30 哈尔滨工业大学 一种混合视频编码标准中帧间预测方法
CN108965871B (zh) * 2015-09-29 2023-11-10 华为技术有限公司 图像预测的方法及装置
WO2017118411A1 (en) * 2016-01-07 2017-07-13 Mediatek Inc. Method and apparatus for affine inter prediction for video coding system
WO2017147765A1 (en) * 2016-03-01 2017-09-08 Mediatek Inc. Methods for affine motion compensation
US10602180B2 (en) * 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction

Also Published As

Publication number Publication date
US20240098295A1 (en) 2024-03-21
EP3804327A1 (en) 2021-04-14
CN114374850A (zh) 2022-04-19
WO2020008334A1 (en) 2020-01-09
JP2021530154A (ja) 2021-11-04
TW202021356A (zh) 2020-06-01
US20220046267A1 (en) 2022-02-10
US20210058637A1 (en) 2021-02-25
JP2023181441A (ja) 2023-12-21
CN110677675A (zh) 2020-01-10
TWI731363B (zh) 2021-06-21
CN110677675B (zh) 2022-02-08

Similar Documents

Publication Publication Date Title
KR20210024487A (ko) 효율적인 아핀 병합 모션 벡터 유도
CN110581999B (zh) 色度解码器侧运动矢量细化
CN112913247B (zh) 使用局部照明补偿的视频处理
CN110620923B (zh) 广义的运动矢量差分辨率
CN113287317B (zh) 并置的局部照明补偿和修改的帧间编解码工具
CN113597766B (zh) 基于光流的预测细化的计算
KR20210089155A (ko) 페어와이즈 평균 후보 계산에서 라운딩
CN113302918A (zh) 视频编解码中的加权预测
CN110677674B (zh) 视频处理的方法、设备和非暂时性计算机可读介质
CN113316933A (zh) 使用运动预测进行去方块滤波
CN113841396B (zh) 简化的局部照明补偿
CN113966616A (zh) 使用临近块信息的运动候选列表构建
TW202025726A (zh) 部分交織的預測

Legal Events

Date Code Title Description
A201 Request for examination