KR20240026140A - 디코더 측 모션 벡터 개선을 위한 적응적 양자간 매칭 - Google Patents

디코더 측 모션 벡터 개선을 위한 적응적 양자간 매칭 Download PDF

Info

Publication number
KR20240026140A
KR20240026140A KR1020237043762A KR20237043762A KR20240026140A KR 20240026140 A KR20240026140 A KR 20240026140A KR 1020237043762 A KR1020237043762 A KR 1020237043762A KR 20237043762 A KR20237043762 A KR 20237043762A KR 20240026140 A KR20240026140 A KR 20240026140A
Authority
KR
South Korea
Prior art keywords
motion vector
block
motion
difference
video
Prior art date
Application number
KR1020237043762A
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
Priority claimed from US17/847,942 external-priority patent/US11895302B2/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20240026140A publication Critical patent/KR20240026140A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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/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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards

Landscapes

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

Abstract

비디오 데이터를 프로세싱하기 위한 시스템들 및 기법들이 제공된다. 예를 들어, 시스템들 및 기법들은 비디오 데이터의 현재 픽처를 획득하는 것 및 비디오 데이터로부터 현재 픽처에 대한 기준 픽처들을 획득하는 것을 포함할 수 있다. 현재 픽처에 대해 병합 모드 후보가 결정될 수 있다. 병합 모드 후보에 대해 제1 및 제2 모션 벡터들이 식별될 수 있다. 복수의 모션 벡터 검색 전략들로부터 병합 모드 후보에 대한 모션 벡터 검색 전략이 선택될 수 있다. 선택된 모션 벡터 검색 전략은 제1 모션 벡터 또는 제2 모션 벡터 중 적어도 하나에 대응하는 하나 이상의 제약들과 연관될 수 있다. 선택된 모션 벡터 검색 전략은 제1 모션 벡터, 제2 모션 벡터, 및 기준 픽처들에 기초하여 개선된 모션 벡터들을 결정하는 데 사용될 수 있다. 병합 모드 후보는 개선된 모션 벡터들을 사용하여 프로세싱될 수 있다.

Description

디코더 측 모션 벡터 개선을 위한 적응적 양자간 매칭
본 개시내용은 대체적으로 비디오 인코딩 및 디코딩에 관한 것이다. 예를 들어, 본 개시내용의 양태들은 양자간 매칭(bilateral matching)을 사용하는 디코더 측 모션 벡터 개선(decoder-side motion vector refinement, DMVR)과 관련된 비디오 코딩 기법들을 향상시키는 것을 포함한다.
디지털 비디오 능력들은, 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인 휴대 정보 단말기들(PDA들), 랩톱 또는 데스크톱 컴퓨터들, 태블릿 컴퓨터들, e-북 리더들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 무선 전화기들, 소위 "스마트 폰들", 비디오 텔레컨퍼런싱 디바이스들, 비디오 스트리밍 디바이스들 등을 포함하는, 광범위한 디바이스들에 통합될 수 있다. 그러한 디바이스들은 비디오 데이터가 프로세싱되고 소비를 위해 출력되도록 허용한다. 디지털 비디오 데이터는 소비자들 및 비디오 제공자들의 수요들을 충족시키기 위해 대량의 데이터를 포함한다. 예를 들어, 비디오 데이터의 소비자들은 높은 충실도, 해상도들, 프레임 레이트들 등을 갖는 최고 품질의 비디오를 원한다. 결과로서, 이들 요구들을 충족시키기 위해 필요한 대량의 비디오 데이터는 그 비디오 데이터를 프로세싱하고 저장하는 통신 네트워크들 및 디바이스들에 부담을 지운다.
디지털 비디오 디바이스들은 비디오 데이터를 압축하기 위해 비디오 코딩 기법들을 구현할 수 있다. 비디오 코딩은 하나 이상의 비디오 코딩 표준들 또는 포맷들에 따라 수행된다. 예를 들어, 비디오 코딩 표준들 또는 포맷들은 특히, 다기능 비디오 코딩(versatile video coding; VVC), 고효율 비디오 코딩(high-efficiency video coding; HEVC), 어드밴스드 비디오 코딩(advanced video coding; AVC), MPEG-2 파트 2 코딩(MPEG은 동영상 전문가 그룹을 나타낸다) 뿐만 아니라, Alliance for Open Media에 의해 개발된 AOMedia 비디오 1(AV1)과 같은 독점 비디오 코덱들/포맷들을 포함한다. 비디오 코딩은 대체적으로, 비디오 이미지들 또는 시퀀스들에서 존재하는 리던던시(redundancy)의 이점을 취하는 예측 방법들(예컨대, 인터 예측, 인트라 예측 등)을 활용한다. 비디오 코딩 기법들의 목표는 비디오 품질에 대한 열화를 회피 또는 최소화하면서 더 낮은 비트 레이트를 이용하는 형태로 비디오 데이터를 압축하는 것이다. 끊임없이 진화하는 비디오 서비스가 이용가능하게 됨에 따라, 우수한 코딩 효율을 갖는 코딩 기법들이 필요하다.
일부 예들에서, 적응적 양자간 매칭을 사용하는 디코더 측 모션 벡터 개선(DMVR)을 위한 시스템들 및 기법들이 설명된다. 적어도 하나의 예시적인 예에 따르면, 적어도 하나의 메모리(예컨대, 비디오 데이터 등과 같은 데이터를 저장하도록 구성됨) 및 적어도 하나의 메모리에 커플링된 적어도 하나의 프로세서(예컨대, 회로부로 구현됨)를 포함하는, 비디오 데이터를 프로세싱하기 위한 장치가 제공된다. 적어도 하나의 프로세서는, 현재 픽처에 대한 하나 이상의 기준 픽처들을 획득하고; 병합 모드 후보에 대한 제1 모션 벡터 및 제2 모션 벡터를 식별하고; 복수의 모션 벡터 검색 전략들로부터 병합 모드 후보에 대한 선택된 모션 벡터 검색 전략을 결정하고; 선택된 모션 벡터 검색 전략을 사용하여, 제1 모션 벡터 또는 제2 모션 벡터 중 적어도 하나 및 하나 이상의 기준 픽처들에 기초하여 하나 이상의 개선된 모션 벡터들을 결정하고; 그리고 하나 이상의 개선된 모션 벡터들을 사용하여 병합 모드 후보를 프로세싱하도록 구성되고, 이들을 할 수 있다.
다른 예에서, 비디오 데이터를 프로세싱하기 위한 방법이 제공된다. 본 방법은, 현재 픽처에 대한 하나 이상의 기준 픽처들을 획득하는 단계; 병합 모드 후보에 대한 제1 모션 벡터 및 제2 모션 벡터를 식별하는 단계; 복수의 모션 벡터 검색 전략들로부터 병합 모드 후보에 대한 선택된 모션 벡터 검색 전략을 결정하는 단계; 선택된 모션 벡터 검색 전략을 사용하여, 제1 모션 벡터 또는 제2 모션 벡터 중 적어도 하나 및 하나 이상의 기준 픽처들에 기초하여 하나 이상의 개선된 모션 벡터들을 결정하는 단계; 및 하나 이상의 개선된 모션 벡터들을 사용하여 병합 모드 후보를 프로세싱하는 단계를 포함한다.
다른 예에서, 명령들을 저장한 비일시적 컴퓨터 판독가능 매체가 제공되고, 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금: 현재 픽처에 대한 하나 이상의 기준 픽처들을 획득하게 하고; 병합 모드 후보에 대한 제1 모션 벡터 및 제2 모션 벡터를 식별하게 하고; 복수의 모션 벡터 검색 전략들로부터 병합 모드 후보에 대한 선택된 모션 벡터 검색 전략을 결정하게 하고; 선택된 모션 벡터 검색 전략을 사용하여, 제1 모션 벡터 또는 제2 모션 벡터 중 적어도 하나 및 하나 이상의 기준 픽처들에 기초하여 하나 이상의 개선된 모션 벡터들을 결정하게 하고; 하나 이상의 개선된 모션 벡터들을 사용하여 병합 모드 후보를 프로세싱하게 한다.
다른 예에서, 비디오 데이터를 프로세싱하기 위한 장치가 제공된다. 본 장치는, 현재 픽처에 대한 하나 이상의 기준 픽처들을 획득하기 위한 수단; 병합 모드 후보에 대한 제1 모션 벡터 및 제2 모션 벡터를 식별하기 위한 수단; 복수의 모션 벡터 검색 전략들로부터 병합 모드 후보에 대한 선택된 모션 벡터 검색 전략을 결정하기 위한 수단; 선택된 모션 벡터 검색 전략을 사용하여, 제1 모션 벡터 또는 제2 모션 벡터 중 적어도 하나 및 하나 이상의 기준 픽처들에 기초하여 하나 이상의 개선된 모션 벡터들을 결정하기 위한 수단; 및 하나 이상의 개선된 모션 벡터들을 사용하여 병합 모드 후보를 프로세싱하기 위한 수단을 포함한다.
이러한 발명의 내용은 청구 대상의 핵심적인 또는 본질적인 특징들을 확인하는 것으로 의도되는 것도, 청구 대상의 범위를 결정하기 위해 별개로 사용되는 것으로 의도되는 것도 아니다. 청구 대상은 본 특허의 전체 명세서의 적절한 부분들, 임의의 또는 모든 도면들, 및 각각의 청구항에 대한 참조에 의해 이해되어야 한다.
전술한 내용은 다른 특징들 및 양태들과 함께, 이하의 명세서, 청구항들, 및 첨부 도면들을 참조할 때 더 명백해질 것이다.
본 출원의 예시적인 양태들은 이하의 도면들을 참조하여 하기에서 상세히 설명된다:
도 1은 본 개시내용의 일부 예들에 따른, 인코딩 디바이스 및 디코딩 디바이스의 일례를 예시하는 블록도이다.
도 2a는 본 개시내용의 일부 예들에 따른, 병합 모드에 대한 예시적인 공간적 이웃 모션 벡터 후보들을 예시하는 개념도이다.
도 2b는 본 개시내용의 일부 예들에 따른, 어드밴스드 모션 벡터 예측(advanced motion vector prediction, AMVP) 모드에 대한 예시적인 공간적 이웃 모션 벡터 후보들을 예시하는 개념도이다.
도 3a는 본 개시내용의 일부 예들에 따른, 예시적인 시간적 모션 벡터 예측자(temporal motion vector predictor, TMVP) 후보를 예시하는 개념도이다.
도 3b는 본 개시내용의 일부 예들에 따른, 모션 벡터 스케일링의 일례를 예시하는 개념도이다.
도 4a는 본 개시내용의 일부 예들에 따른, 현재 코딩 유닛에 대한 모션 보상 파라미터들을 추정하기 위해 사용된 현재 코딩 유닛의 이웃 샘플들의 일례를 예시하는 개념도이다.
도 4b는 본 개시내용의 일부 예들에 따른, 현재 코딩 유닛에 대한 모션 보상 파라미터들을 추정하기 위해 사용된 기준 블록의 이웃 샘플들의 일례를 예시하는 개념도이다.
도 5는 본 개시내용의 일부 예들에 따른, 블록을 프로세싱하는 데 사용하기 위한 공간적 병합 후보들의 위치들을 예시한다.
도 6은 본 개시내용의 일부 예들에 따른, 블록을 프로세싱하는 데 사용하기 위한 시간적 병합 후보들에 대한 모션 벡터 스케일링의 양태들을 예시한다.
도 7은 본 개시내용의 일부 예들에 따른, 블록을 프로세싱하는 데 사용하기 위한 시간적 병합 후보들의 양태들을 예시한다.
도 8은 본 개시내용의 일부 예들에 따른, 양자간 매칭의 양태들을 예시한다.
도 9는 본 개시내용의 일부 예들에 따른, 양방향성 광학 흐름(bi-directional optical flow, BDOF)의 양태들을 예시한다.
도 10은 본 개시내용의 일부 예들에 따른 검색 지역 영역들을 예시한다.
도 11은 본 개시내용의 일부 예들에 따른, 적응적 양자간 매칭을 이용한 디코더 측 모션 벡터 개선을 위한 예시적인 프로세스를 예시하는 흐름도이다.
도 12는 본 개시내용의 일부 예들에 따른, 예시적인 비디오 인코딩 디바이스를 예시하는 블록도이다.
도 13은 본 개시내용의 일부 예들에 따른, 예시적인 비디오 디코딩 디바이스를 예시하는 블록도이다.
본 개시내용의 소정 양태들 및 양태들이 하기에 제공된다. 이들 양태들 및 양태들 중 일부는 독립적으로 적용될 수 있고, 그들 중 일부는 당업자들에게 명백하듯이, 조합하여 적용될 수 있다. 이하의 설명에서는, 설명의 목적으로, 본 출원의 양태들의 전반적인 이해를 제공하기 위해 특정 세부사항들이 기재된다. 그러나 다양한 양태들이 이들 특정 세부사항들 없이 실시될 수 있음이 명백할 것이다. 도면들 및 설명은 제한적인 것으로 의도되지 않는다.
다음의 설명은 예시적인 양태들만을 제공하고, 본 개시내용의 범주, 적용가능성, 또는 구성을 제한하도록 의도되지 않는다. 오히려, 예시적인 양태들의 다음의 설명은 예시적인 양태를 구현하기 위한 가능한 설명을 당업자들에게 제공할 것이다. 첨부된 청구항들에 제시된 바와 같이 본 출원의 사상 및 범위를 벗어나지 않으면서 엘리먼트들의 기능 및 어레인지먼트에 다양한 변경들이 이루어질 수 있다고 이해되어야 한다.
비디오 코딩 디바이스들(예컨대, 인코딩 디바이스들, 디코딩 디바이스들, 또는 조합된 인코딩-디코딩 디바이스들)은 비디오 데이터를 효율적으로 인코딩하고/하거나 디코딩하기 위해 비디오 압축 기법들을 구현한다. 비디오 압축 기법들은, 비디오 시퀀스들에 내재하는 리던던시를 감소 또는 제거하기 위해 공간적 예측(예컨대, 인트라 프레임 예측 또는 인트라 예측), 시간적 예측(예컨대, 인터 프레임 예측 또는 인터 예측), (비디오 데이터의 상이한 계층들에 걸친) 인터 레이어 예측, 및/또는 다른 예측 기법들을 포함하는, 상이한 예측 모드들을 적용하는 것을 포함할 수 있다. 비디오 인코더는, 원래의 비디오 시퀀스의 각각의 픽처를, 비디오 블록들 또는 코딩 유닛들로서 지칭되는 직사각형 영역들로 파티셔닝할 수 있다(이하에서 더 상세히 설명됨). 이들 비디오 블록들은 특정 예측 모드를 사용하여 인코딩될 수 있다.
비디오 블록들은 하나 이상의 방식들로 더 작은 블록들의 하나 이상의 그룹들로 분할될 수 있다. 블록들은 코딩 트리 블록들, 예측 블록들, 변환 블록들, 또는 다른 적합한 블록들을 포함할 수 있다. 대체적으로 "블록"에 대한 언급들은, 달리 명시되지 않는 한, 그러한 비디오 블록들(예컨대, 당업자에 의해 이해되는 바와 같이, 코딩 트리 블록들, 코딩 블록들, 예측 블록들, 변환 블록들, 또는 다른 적절한 블록들 또는 서브 블록들)을 지칭할 수 있다. 추가로, 이들 블록들의 각각은 또한, "유닛들"(예컨대, 코딩 트리 유닛(CTU), 코딩 유닛, 예측 유닛(PU), 변환 유닛(TU) 등)로서 본 명세서에서 상호교환가능하게 지칭될 수 있다. 일부 경우들에서, 유닛은 비트스트림에서 인코딩되는 코딩 논리 유닛을 나타낼 수 있는 한편, 블록은 프로세스가 목표로 하는 비디오 프레임 버퍼의 일부분을 나타낼 수 있다.
인터 예측 모드들에 대해, 비디오 인코더는, 기준 프레임 또는 기준 픽처로서 지칭되는, 다른 시간적 위치에서 위치된 프레임(또는 픽처)에서 인코딩되는 블록과 유사한 블록을 검색할 수 있다. 비디오 인코더는 검색을, 인코딩될 블록으로부터의 특정 공간적 변위로 제약할 수 있다. 최상의 매치가, 수평 변위 컴포넌트 및 수직 변위 컴포넌트를 포함하는 2차원(2D) 모션 벡터를 사용하여 위치될 수 있다. 인트라 예측 모드들에 대해, 비디오 인코더는 동일한 픽처 내에서 이전에 인코딩된 이웃 블록들로부터의 데이터에 기초하여 공간적 예측 기법들을 이용하여 예측된 블록을 형성할 수 있다.
비디오 인코더는 예측 오차를 결정할 수 있다. 예를 들어, 예측은 인코딩되는 블록과 예측된 블록 내의 픽셀 값들 간의 차이로서 결정될 수 있다. 예측 오차는 잔차로서 또한 지칭될 수 있다. 비디오 인코더는 또한 변환 계수들을 생성하기 위해 예측 오차에 대한 변환(예컨대, 이산 코사인 변환(DCT) 또는 다른 적절한 변환)을 적용할 수 있다. 변환 후에, 비디오 인코더는 변환 계수들을 양자화할 수 있다. 양자화된 변환 계수들 및 모션 벡터들은 신택스 엘리먼트들을 사용하여 표현될 수 있고, 제어 정보와 함께 비디오 시퀀스의 코딩된 표현을 형성할 수 있다. 일부 사례들에서, 비디오 인코더는 신택스 엘리먼트들을 엔트로피 코딩하고, 그에 의해, 그들의 표현에 필요한 비트들의 수를 추가로 감소시킬 수 있다.
비디오 디코더는 상기에 논의된 신택스 엘리먼트들 및 제어 정보를 이용하여, 현재 프레임을 디코딩하기 위한 예측 데이터(예컨대, 예측 블록)를 구축할 수 있다. 예를 들어, 비디오 디코더는 예측된 블록 및 압축된 예측 오차를 추가할 수 있다. 비디오 디코더는 양자화된 계수들을 사용하여 변환 베이시스 함수들을 가중함으로써 압축된 예측 오차를 결정할 수 있다. 재구성된 프레임과 원래의 프레임 간의 차이는 재구성 오차로 지칭된다.
예측 기법(예컨대, 인터 예측 모드)을 수행할 때 비디오 코딩 디바이스(예컨대, 비디오 디코더 또는 디코딩 디바이스)에 의해 사용될 수 있는 하나 이상의 모션 벡터들의 정확도를 증가시키기 위한 시스템들, 장치들, 프로세스들(방법들로도 지칭됨), 및 컴퓨터 판독가능 매체들(본 명세서에서 총괄하여 "시스템들 및 기법들"로 지칭됨)이 본 명세서에 설명된다. 예를 들어, 시스템들 및 기법들은 디코더 측 모션 벡터 개선(DMVR)을 위해 양자간 매칭을 수행할 수 있다. 양자간 매칭은 2개의 초기 모션 벡터들의 쌍을 개선하는 기법이다. 그러한 개선은 블록 매칭 비용을 최소화하는 업데이트된 모션 벡터들을 도출하기 위해 초기 모션 벡터들의 쌍 주위의 검색으로 발생할 수 있다. 블록 매칭 비용은 절대 차이의 합(sum of absolute difference, SAD) 기준, 절대 변환된 차이의 합(sum of absolute transformed difference, SATD) 기준, 제곱 오차의 합(sum of square error, SSE) 기준, 또는 다른 그러한 기준을 사용하는 것을 포함하는 다양한 방식들로 생성될 수 있다. 본 명세서에 설명된 양태들은 양방향 예측(bi-prediction) 병합 후보의 모션 벡터들의 정확도를 증가시킬 수 있으며, 그 결과 본 명세서에 설명된 양태들에 따라 동작하는 디바이스들의 향상된 비디오 품질 및 연관된 향상된 성능을 초래한다.
일부 양태들에서, 시스템들 및 기법들은 DMVR을 위해 적응적 양자간 매칭을 수행하는 데 사용될 수 있다. 예를 들어, 시스템들 및 기법들은 상이한 코딩된 블록들에 대한 상이한 검색 전략들 및/또는 검색 파라미터들을 사용하여 양자간 매칭을 수행할 수 있다. 하기에서 더 자세히 설명되는 바와 같이, DMVR을 위한 적응적 양자간 매칭은 주어진 블록에 대해 결정되거나 또는 시그널링되는 선택된 검색 전략에 기초할 수 있다. 선택된 검색 전략은 양자간 매칭 검색 프로세스에 대한 하나 이상의 제약들을 포함할 수 있다. 일부 예들에서, 선택된 검색 전략은 추가적으로 또는 대안적으로, 제1 모션 벡터 차이 및/또는 제2 모션 차이에 대한 하나 이상의 제약들을 포함할 수 있다. 일부 예들에서, 선택된 검색 전략은 제1 모션 벡터 차이와 제2 모션 벡터 차이 사이의 하나 이상의 제약들을 포함할 수 있다.
일부 양태들에서, 모션 벡터들이 개선되기 위한 제약이 선택된다. 제약은 미러링 제약, 제1 벡터에 대한 제로(0) 제약, 제2 벡터에 대한 제로 제약, 또는 다른 타입의 제약일 수 있다. 일부 경우들에서, 제약은 하나 이상의 DMVR 조건들을 만족하는 병합 후보 내의 병합 모드 코딩된 블록에 적용된다. 이어서, 하나 이상의 제약들이 하나 이상의 검색 전략들과 함께 사용되어, 후보들을 식별하고 개선된 모션 벡터들을 선택할 수 있다.
일부 양태들에서, 상이한 검색 전략들이 사용된다. 검색 전략들은 다수의 서브세트들로 그룹화될 수 있으며, 이때 각각의 서브세트는 하나 이상의 검색 전략들을 포함한다. 일부 경우들에서, 디코더는 신택스 엘리먼트를 사용하여, 선택된 서브세트를 결정할 수 있다. 예를 들어, 인코더는 비트스트림에 신택스 엘리먼트를 포함할 수 있다. 그러한 예에서, 디코더는 비트스트림을 수신하고, 비트스트림으로부터의 신택스 엘리먼트를 디코딩할 수 있다. 디코더는 신택스 엘리먼트를 사용하여, 비트스트림에 포함된 비디오 데이터의 주어진 블록 또는 블록들에 대한 선택된 서브세트 및 임의의 연관된 제약(들)을 결정할 수 있다. 선택된 서브세트 및 서브세트와 연관된 임의의 제약(들)을 사용하여, 디코더는 모션 벡터들(예컨대, 양방향 예측 병합 후보의 2개의 모션 벡터들)을 프로세싱하여 개선된 모션 벡터들을 식별할 수 있다. 하나의 예시적인 양태에서, 적응적 양자간 모드가 제공되며, 여기서 코딩 디바이스는 (예컨대, 새로운 적응적 양자간 모드의 일부로서 시그널링 구조들을 이용하여) 관련 DMVR 조건들을 만족하는 선택된 모션 정보 후보들을 시그널링한다.
상기에서 언급된 검색 전략들 및 연관된 제약(들)을 사용하는 것은, 예컨대 선택가능한 검색 알고리즘들 및 연관된 제약들을 사용하여 적응적 양자간 모션 벡터 개선을 제공함으로써, 디코더 측 모션 벡터 개선에 대한 향상들을 제공할 수 있다. 디코더 측 모션 벡터 개선에서의 그러한 향상들은, 강화된 압축 모델(enhanced compression model, ECM) 구현들과 같은 다양한 비디오 코덱들과 함께 사용될 수 있다. 본 명세서에 설명된 예들은 하나 이상의 비디오 코딩 표준들에 따라 동작하는 ECM 시스템들을 향상시키기 위해 다중 패스(multi-pass) DMVR에 적용된 구현예를 포함한다. 본 명세서에 설명된 기법들은 하나 이상의 인코딩 디바이스들, 디코딩 디바이스들, 또는 조합된 인코딩-디코딩 디바이스들을 포함하는 하나 이상의 코딩 디바이스들을 사용하여 구현될 수 있다. 코딩 디바이스들은 플레이어 디바이스, 예컨대 모바일 디바이스, 확장 현실(extended reality, XR) 디바이스, 차량 또는 차량의 컴퓨팅 시스템, 서버 디바이스 또는 시스템(예컨대, 다수의 서버들을 포함하는 분배형 서버 시스템, 단일 서버 디바이스 또는 시스템 등), 또는 다른 디바이스 또는 시스템 중 하나 이상에 의해 구현될 수 있다.
본 명세서에 설명된 시스템들 및 기법들은 고효율 비디오 코딩(HEVC), 어드밴스드 비디오 코딩(AVC), 다목적 비디오 코딩(VVC), VP9, AOMedia 비디오 1(AV1) 포맷/코덱, 및/또는 존재하는, 개발 중인, 또는 개발될 다른 비디오 코딩 표준을 포함하지만 이로 제한되지 않는, 임의의 기존의 비디오 코덱들, 개발 중인 임의의 비디오 코덱들, 및/또는 임의의 미래의 비디오 코딩 표준들에 적용될 수 있다. 본 명세서에 설명된 시스템들 및 기법들은 본 명세서에 설명된 바와 같은 적응적 양자간 매칭으로부터의 향상된 모션 벡터 선택에 기초하여 향상된 압축 및 연관된 향상된 비디오 품질과 함께 디바이스들에 의한 비디오 데이터 전송의 성능을 향상시킴으로써 통신 시스템들 및 시스템 내의 디바이스들의 동작을 향상시킬 수 있다.
도 1은 인코딩 디바이스(104) 및 디코딩 디바이스(112)를 포함하는 시스템(100)의 일례를 예시한 블록도이다. 인코딩 디바이스(104)는 소스 디바이스의 일부일 수 있고, 디코딩 디바이스(112)는 수신 디바이스의 일부일 수 있다. 소스 디바이스 및/또는 수신 디바이스는 전자 디바이스, 예컨대 이동식 또는 정지식 전화 핸드셋(예컨대, 스마트폰, 셀룰러폰 등), 데스크톱 컴퓨터, 랩톱 또는 노트북 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 비디오 스트리밍 디바이스, 인터넷 프로토콜(Internet Protocol, IP) 카메라, 또는 임의의 다른 적합한 전자 디바이스를 포함할 수 있다. 일부 예들에서, 소스 디바이스와 수신 디바이스는 무선 통신들을 위한 하나 이상의 무선 트랜시버들을 포함할 수 있다. 본 명세서에서 설명되는 코딩 기법들은, 스트리밍 비디오 송신들(예컨대, 인터넷을 통함), 텔레비전 브로드캐스트들 또는 송신들, 데이터 저장 매체 상의 저장을 위한 디지털 비디오의 인코딩, 데이터 저장 매체 상에 저장되는 디지털 비디오의 디코딩, 또는 다른 애플리케이션들을 포함하는, 다양한 멀티미디어 애플리케이션들에서의 비디오 코딩에 적용가능하다. 본 명세서에서 사용되는 바와 같이, 용어 코딩은 인코딩 및/또는 디코딩을 지칭할 수 있다. 일부 예들에서, 시스템(100)은 화상회의 시스템, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 게이밍, 및/또는 화상 통화와 같은 애플리케이션들을 지원하기 위해 단방향 또는 양방향 비디오 송신을 지원할 수 있다.
인코딩 디바이스(104)(또는 인코더)는 비디오 코딩 표준, 포맷, 코덱, 또는 프로토콜을 사용하여 비디오 데이터를 인코딩하여 인코딩된 비디오 비트스트림을 생성하는데 사용될 수 있다. 비디오 코딩 표준들 및 포맷들/코덱들의 예들은 스케일러블 비디오 코딩(Scalable Video Coding, SVC) 및 멀티뷰 비디오 코딩(Multiview Video Coding, MVC) 확장들, 및 고효율 비디오 코딩(High Efficiency Video Coding, HEVC) 또는 ITU-T H.265, 및 다기능 비디오 코딩(Versatile Video Coding, VVC) 또는 TU-T H.266을 포함하여, ITU-T H.261, ISO/IEC MPEG-1 비주얼, ITU-T H.262 또는 ISO/IEC MPEG-2 비주얼, ITU-T H.263, ISO/IEC MPEG-4 비주얼, ITU-T H.264(ISO/IEC MPEG-4 AVC로서 또한 알려짐)를 포함한다. 범위 및 스크린 콘텐츠 코딩 확장본들, 3D 비디오 코딩(3D-HEVC) 및 멀티뷰 확장본들(MV-HEVC) 그리고 스케일러블 확장본(scalable extension, SHVC)을 포함하는, 다층 비디오 코딩을 다루는 HEVC에 대한 다양한 확장본들이 존재한다. HEVC 및 그 확장들은 JCT-VC(Joint Collaboration Team on Video Coding) 뿐만 아니라 ITU-T 비디오 코딩 전문가 그룹(VCEG) 및 ISO/IEC 모션 픽처 전문가 그룹(MPEG)의 JCT-3V(Joint Collaboration Team on 3D Video Coding Extension Development)에 의해 개발되었다. VP9, AOMedia(Alliance for Open Media Alliance of Open Media)에 의해 개발된 AOMedia Video 1(AV1) 및 EVC(Essential Video Coding)은 본 명세서에 설명된 기법들이 적용될 수 있는 다른 비디오 코딩 표준들이다.
본 명세서에 기술된 기법들은 기존의 비디오 코덱들(예컨대, 고효율 비디오 코딩(HEVC), 고급 비디오 코딩(AVC), 또는 다른 적절한 기존의 비디오 코덱) 중 임의의 것에 적용될 수 있고/거나, 예를 들어, VVC, 및/또는 개발 중에 있거나 개발될 다른 비디오 코딩 표준과 같이, 개발되고 있는 임의의 비디오 코딩 표준들 및/또는 미래의 비디오 코딩 표준들에 대한 효율적 코딩 툴일 수 있다. 예를 들어, 본 명세서에 설명된 예들은 VVC, HEVC, AVC, 및/또는 이들의 확장들과 같은 비디오 코덱들을 사용하여 수행될 수 있다. 그러나, 본 명세서에서 설명된 기법들 및 시스템들은 또한, 다른 코딩 표준들, 코덱들, 또는 포맷들, 예컨대 MPEG, JPEG(또는 스틸 이미지들을 위한 다른 코딩 표준), VP9, AV1, 이들의 확장들, 또는 이미 이용가능하거나 아직 이용가능하지 않거나 개발되는 다른 적절한 코딩 표준들에 적용가능할 수 있다. 예를 들어, 일부 예들에서, 인코딩 디바이스(104) 및/또는 디코딩 디바이스(112)는 독점적인 비디오 코덱/포맷, 예컨대 AV1, AVI의 확장들, 및/또는 AV1의 후속 버전들(예컨대, AV2), 또는 다른 독점적인 포맷들 또는 산업 표준들에 따라 동작할 수 있다. 따라서, 본 명세서에서 설명되는 기법들 및 시스템들이 특정 비디오 코딩 표준을 참조하여 설명될 수 있지만, 당업자는 그 설명이 특정 표준에만 적용되도록 해석되지 않아야 함을 이해할 것이다.
도 1을 참조하면, 비디오 소스(102)가 비디오 데이터를 인코딩 디바이스(104)에 제공할 수 있다. 비디오 소스(102)는 소스 디바이스의 일부일 수 있거나, 또는 소스 디바이스와는 다른 디바이스의 일부일 수 있다. 비디오 소스(102)는 비디오 캡처 디바이스(예컨대, 비디오 카메라, 카메라 폰, 비디오 폰 등), 저장된 비디오를 포함하는 비디오 아카이브, 비디오 데이터를 제공하는 비디오 서버 또는 콘텐츠 제공자, 비디오 서버 또는 콘텐츠 제공자로부터 비디오를 수신하는 비디오 피드 인터페이스, 컴퓨터 그래픽 비디오 데이터를 생성하는 컴퓨터 그래픽 시스템, 이러한 소스들의 조합, 또는 임의의 다른 적합한 비디오 소스를 포함할 수 있다.
비디오 소스(102)로부터의 비디오 데이터는 하나 이상의 입력 픽처들 또는 프레임들을 포함할 수 있다. 픽처 또는 프레임은 일부 경우에, 비디오의 부분인 스틸 이미지이다. 일부 예들에서, 비디오 소스(102)로부터의 데이터는 비디오의 일부가 아닌 스틸 이미지일 수 있다. HEVC, VVC, 및 다른 비디오 코딩 사양들에서, 비디오 시퀀스는 일련의 픽처들을 포함할 수 있다. 픽처는 SL, SCb, 및 SCr로 표기되는, 3개의 샘플 어레이들을 포함할 수 있다. SL은 루마 샘플들의 2차원 어레이이고, SCb는 Cb 크로미넌스 샘플들의 2차원 어레이이고, SCr은 Cr 크로미넌스 샘플들의 2차원 어레이이다. 크로미넌스 샘플들은 또한, 본 명세서에서 "크로마(chroma)" 샘플들로서 지칭될 수 있다. 픽셀은 픽처의 어레이에서의 주어진 위치에 대한 모든 3개의 컴포넌트들(루마 및 크로마 샘플들)을 지칭할 수 있다. 다른 경우들에서, 픽처는 단색(monochrome)일 수 있고, 루마 샘플들의 어레이만을 포함할 수 있고, 이 경우에, 용어들 픽셀 및 샘플은 상호교환가능하게 사용될 수 있다. 예시적인 목적들을 위해 개별 샘플들을 참조하는 본 명세서에 설명된 예시적인 기법들에 대해, 동일한 기법들이 픽셀들(예컨대, 픽처의 어레이 내의 주어진 위치에 대한 모든 3개의 샘플 컴포넌트들)에 적용될 수 있다. 예시적인 목적들을 위해 픽셀들(예컨대, 픽처의 어레이에서의 주어진 위치에 대한 모든 3개의 샘플 컴포넌트들)을 참조하는 본 명세서에 설명된 예시적인 기법들에 대해, 동일한 기법들이 개별 샘플들에 적용될 수 있다.
인코딩 디바이스(104)의 인코더 엔진(106)(또는 인코더)은 인코딩된 비디오 비트스트림을 생성하기 위해 비디오 데이터를 인코딩한다. 일부 예에서, 인코딩된 비디오 비트스트림(또는 "비디오 비트스트림" 또는 "비트스트림")은 일련의 하나 이상의 코딩된 비디오 시퀀스들이다. 코딩된 비디오 시퀀스(coded video sequence, CVS)가 기본 계층에서의 그리고 특정한 성질들을 가지는 랜덤 액세스 포인트 픽처를 갖는 액세스 유닛(AU)으로 시작하여 기본 계층에서의 그리고 특정한 성질들을 가지는 랜덤 액세스 포인트 픽처를 갖는 다음 AU까지 상기 다음 AU를 제외한 일련의 AU들을 포함한다. 예를 들어, CVS를 시작하는 랜덤 액세스 포인트 픽처의 특정한 성질들은 1과 동일한 RASL 플래그(예컨대, NoRaslOutputFlag)를 포함할 수 있다. 그렇지 않으면, 랜덤 액세스 포인트 픽처(0과 동일한 RASL 플래그를 가짐)가 CVS를 시작하지 않는다. 액세스 유닛(AU)이 하나 이상의 코딩된 픽처들 및 동일한 출력 시간을 공유하는 코딩된 픽처들에 대응하는 제어 정보를 포함한다. 픽처들의 코딩된 슬라이스들은 비트스트림 레벨에서 네트워크 추상화 계층(NAL) 유닛들이라 지칭되는 데이터 유닛들로 캡슐화된다. 예를 들어, HEVC 비디오 비트스트림이 NAL 유닛들을 포함하는 하나 이상의 CVS들을 포함할 수 있다. NAL 유닛들의 각각은 NAL 유닛 헤더를 가진다. 하나의 예에서, 헤더는 H.264/AVC의 경우 1-바이트(다층 확장본들 제외) 그리고 HEVC의 경우 2-바이트이다. NAL 유닛 헤더에서의 신택스 엘리먼트들은 지정된 비트들을 취하고 그러므로, 무엇보다도, 전송 스트림, 실시간적 전송(Real-time Transport, RTP) 프로토콜, 파일 포맷과 같은 모든 종류들의 시스템들 및 전송 계층들에 가시적이다.
비디오 코딩 계층(video coding layer, VCL) NAL 유닛들과 비-VCL NAL 유닛들을 포함하는 두 가지 클래스들의 NAL 유닛들이 HEVC 표준에 존재한다. VCL NAL 유닛들은 코딩된 비디오 비트스트림을 형성하는 코딩된 픽처 데이터를 포함한다. 예를 들어, 코딩된 비디오 비트스트림을 형성하는 비트들의 시퀀스가 VCL NAL 유닛들에 존재한다. VCL NAL 유닛은 코딩된 픽처 데이터의 하나의 슬라이스 또는 슬라이스 세그먼트(하기에서 설명됨)를 포함하고, 비-VCL NAL 유닛은 하나 이상의 코딩된 픽처들에 관련되는 제어 정보를 포함할 수 있다. 일부 경우들에서, NAL 유닛이 패킷이라고 지칭될 수 있다. HEVC AU가 코딩된 픽처 데이터를 포함하는 VCL NAL 유닛들과 코딩된 픽처 데이터에 대응하는 비-VCL NAL 유닛들(있다면)을 포함한다. 비-VCL NAL 유닛들은 다른 정보에 더하여, 인코딩된 비디오 비트스트림에 관련한 고레벨 정보를 갖는 파라미터 세트들을 포함할 수 있다. 예를 들어, 파라미터 세트가 비디오 파라미터 세트(video parameter set, VPS), 시퀀스 파라미터 세트(sequence parameter set, SPS), 및 픽처 파라미터 세트(picture parameter set, PPS)를 포함할 수 있다. 일부 경우들에서, 비트스트림의 각각의 슬라이스 또는 다른 부분은, 디코딩 디바이스(112)가 비트스트림의 슬라이스 또는 다른 부분을 디코딩하기 위해 사용될 수 있는 정보에 액세스하는 것을 허용하기 위해, 단일 활성 PPS, SPS, 및/또는 VPS를 참조할 수 있다.
NAL 유닛들은 비디오 데이터의 코딩된 표현(예컨대, 인코딩된 비디오 비트스트림, 비트스트림의 CVS 등), 예컨대 비디오에서의 픽처들의 코딩된 표현들을 형성하는 비트들의 시퀀스를 포함할 수 있다. 인코더 엔진(106)은 각각의 픽처를 다수의 슬라이스들로 파티셔닝함으로써 픽처들의 코딩된 표현들을 생성한다. 슬라이스가 그 슬라이스에서의 정보가 동일한 픽처 내의 다른 슬라이스들로부터의 데이터에 의존하지 않고 코딩되도록 다른 슬라이스들과는 독립적이다. 슬라이스가 독립적인 슬라이스 세그먼트와, 존재한다면, 이전의 슬라이스 세그먼트들에 의존하는 하나 이상의 종속적인 슬라이스 세그먼트들을 포함하는 하나 이상의 슬라이스 세그먼트들을 포함한다.
HEVC에서, 슬라이스들은 그 후 루마 샘플들 및 크로마 샘플들의 코딩 트리 블록(CTB)들로 파티셔닝된다. 루마 샘플들의 CTB와 크로마 샘플들의 하나 이상의 CTB들이, 그 샘플들을 위한 신택스와 함께, 코딩 트리 유닛(coding tree unit, CTU)이라고 지칭된다. CTU는 또한 "트리 블록" 또는 "최대 코딩 유닛"(LCU)으로서 지칭될 수 있다. CTU가 HEVC 인코딩을 위한 기본 프로세싱 유닛이다. CTU가 가변하는 크기들의 다수의 코딩 유닛(coding unit, CU)들로 분할될 수 있다. CU가 코딩 블록(coding block, CB)들이라고 지칭되는 루마 및 크로마 샘플 어레이들을 포함한다.
루마 및 크로마 CB들은 예측 블록(prediction block, PB)들로 추가로 분할될 수 있다. PB는 (이용가능하거나 사용을 위해 인에이블될 때) 인터 예측 또는 인트라 블록 카피(IBC) 예측에 대해 동일한 모션 파라미터들을 사용하는 루마 컴포넌트 또는 크로마 컴포넌트의 샘플들의 블록이다. 루마 PB 및 하나 이상의 크로마 PB들은, 연관된 신택스와 함께, 예측 유닛(PU)을 형성한다. 인터 예측의 경우, 모션 파라미터 세트(예컨대, 하나 이상의 모션 벡터들, 기준 인덱스들 등)가 각각의 PU에 대한 비트스트림에서 시그널링되고 루마 PB 및 하나 이상의 크로마 PB들의 인터 예측을 위해 사용된다. 모션 파라미터들은 모션 정보라고 또한 지칭될 수 있다. CB가 하나 이상의 변환 블록(transform block, TB)들로 또한 파티셔닝될 수 있다. TB는, 예측 잔차 신호를 코딩하기 위해 잔차 변환(예컨대, 일부 경우에 동일한 2차원 변환)이 적용되는 컬러 컴포넌트의 샘플들의 정방형 블록을 나타낸다. 변환 유닛(TU)이 루마 및 크로마 샘플들의 TB들과, 대응하는 신택스 엘리먼트들을 나타낸다. 변환 코딩은 하기에 보다 상세히 기재한다.
CU의 크기가 코딩 모드의 크기에 대응하고 형상이 정사각형일 수 있다. 예를 들어, CU의 크기가 8 x 8 샘플들, 16 x 16 샘플들, 32 x 32 샘플들, 64 x 64 샘플들, 또는 대응하는 CTU의 크기까지의 임의의 다른 적절한 크기일 수 있다. "N x N"이라는 어구는 수직 및 수평 치수들(예컨대, 8 픽셀들 x 8 픽셀들)의 측면에서 비디오 블록의 픽셀 치수들을 지칭하기 위해 본 명세서에서 사용된다. 블록의 픽셀들은 행들 및 열들로 배열될 수 있다. 일부 구현들에서, 블록들은 세로 방향에서와 동일한 수의 픽셀들을 수평 방향에서 가지지 않을 수 있다. CU와 연관된 신택스 데이터는 예를 들어, CU의 하나 이상의 PU들로의 파티셔닝을 설명할 수 있다. 파티셔닝 모드들은 CU가 인트라 예측 모드 인코딩되든지, 또는 인터 예측 모드 인코딩되든지 간에 상이할 수 있다. PU들은 형상에서 비-정사각형으로 파티셔닝될 수 있다. CU에 연관된 신택스 데이터는, 예를 들어, CTU에 따라 하나 이상의 TU들로의 CU의 파티셔닝을 또한 기술할 수 있다. TU가 형상이 정사각형이거나 또는 정사각형이 아닐 수 있다.
HEVC 표준에 따르면, 변환들이 변환 유닛(TU)들을 사용하여 수행될 수 있다. TU들은 상이한 CU들에 대해 가변할 수 있다. TU들은 주어진 CU 내의 PU들의 크기에 기초한 크기로 될 수 있다. TU들은 PU들과 동일한 크기이거나 또는 그것들보다 작을 수 있다. 일부 예들에서, CU에 대응하는 잔차 샘플들은 잔차 쿼드 트리(residual quad tree, RQT)로서 알려진 쿼드트리 구조를 사용하여 더 작은 유닛들로 세분될 수 있다. RQT의 리프 노드들이 TU들에 대응할 수 있다. TU들에 연관되는 픽셀 차이 값들이 변환 계수들을 형성하도록 변환될 수 있다. 변환 계수들은 그 다음에 인코더 엔진(106)에 의해 양자화될 수 있다.
일단 비디오 데이터의 픽처들이 CU들로 파티셔닝되면, 인코더 엔진(106)은 예측 모드를 사용하여 각각의 PU를 예측한다. 예측 유닛 또는 예측 블록은 그 다음에 잔차들을 얻기 위해 원래의 비디오 데이터로부터 감산된다(아래에서 설명됨). 각각의 CU에 대해, 예측 모드가 신택스 데이터를 사용하여 비트스트림 내부에서 시그널링될 수 있다. 예측 모드가 인트라 예측(또는 픽처내 예측) 또는 인터 예측(또는 픽처간 예측)을 포함할 수 있다. 인트라 예측은 픽처 내에서 공간적으로 이웃하는 샘플들 간의 상관을 이용한다. 예를 들어, 인트라 예측을 사용하여, 각각의 PU는, 예를 들어, PU에 대한 평균값을 찾기 위한 DC 예측, PU에 평면 표면을 맞추기 위한 평면 예측, 이웃하는 데이터로부터 외삽하기 위한 방향 예측, 또는 임의의 다른 적합한 유형들의 예측을 사용하여, 동일한 픽처에서 이웃 이미지 데이터로부터 예측된다. 인터 예측은 이미지 샘플들의 블록에 대한 모션 보상 예측을 도출하기 위하여 픽처들 간의 시간적 상관을 사용한다. 예를 들어, 인터 예측을 사용하여, 각각의 PU는 (출력 순서에서 현재 픽처 전 또는 후에) 하나 이상의 기준 픽처들에서 이미지 데이터로부터 모션 보상 예측을 사용하여 예측된다. 픽처 지역을 픽처간 예측을 사용하여 코딩할지 또는 픽처내 예측을 사용하여 코딩할지의 결정은, 예를 들어, CU 레벨에서 이루어질 수 있다.
인코더 엔진(106) 및 디코더 엔진(116)(아래에서 더 상세히 설명됨)은 VVC에 따라 동작하도록 구성될 수 있다. VVC에 따르면, (인코더 엔진(106) 및/또는 디코더 엔진(116)과 같은) 비디오 코더는 픽처를 복수의 코딩 트리 유닛들(CTU들)로 분할한다(여기서, 샘플들에 대한 신택스와 함께, 루마 샘플들의 CTB 및 크로마 샘플들의 하나 이상의 CTB들은 CTU 라고 지칭된다). 비디오 코더는 트리 구조, 이를 테면, 쿼드트리 바이너리 트리(QTBT) 구조 또는 멀티-타입 트리(MTT) 구조에 따라 CTU를 파티셔닝할 수 있다. QTBT 구조는 HEVC의 CU들, PU들, 및 TU들 사이의 분리와 같은, 다수의 파티션 유형들의 개념들을 제거한다. QTBT 구조는 2개의 레벨들을 포함하며, 쿼드트리 파티셔닝에 따라 파티셔닝된 제1 레벨, 및 바이너리 트리 파티셔닝에 따라 파티셔닝된 제2 레벨을 포함한다. QTBT 구조의 루트 노드는 CTU에 대응한다. 이진 트리들의 리프 노드들은 코딩 유닛(CU)들에 대응한다.
MTT 파티셔닝 구조에서, 블록들은 쿼드트리 파티션, 이진 트리 파티션, 및 하나 이상의 타입들의 트리플 트리 파티션들을 사용하여 파티셔닝될 수 있다. 트리플 트리 파티션은 블록이 3개의 서브 블록들로 스플릿되는 파티션이다. 일부 예들에서, 트리플 트리 파티션은 원래의 블록을 중앙을 통해 나누지 않고 블록을 3개의 서브 블록들로 나눈다. MTT에서의 분할 타입(예컨대, 쿼드트리, 바이너리 트리, 및 트리플 트리)은 대칭이거나 비대칭일 수 있다.
AV1 코덱에 따라 동작할 때, 인코딩 디바이스(104) 및 디코딩 디바이스(112)는 비디오 데이터를 블록들로 코딩하도록 구성될 수 있다. AV1에서, 프로세싱될 수 있는 가장 큰 코딩 블록은 수퍼블록이라 한다. AV1에서, 수퍼블록은 128x128 루마 샘플 또는 64x64 루마 샘플일 수 있다. 그러나, 후속 비디오 코딩 포맷들(예컨대, AV2)에서, 수퍼블록은 상이한 (예컨대, 더 큰) 루마 샘플 크기들에 의해 정의될 수 있다. 일부 예들에서, 수퍼블록은 블록 쿼드트리의 최상위 레벨이다. 인코딩 디바이스(104)는 슈퍼블록을 더 작은 코딩 블록들로 파티셔닝할 수 있다. 인코딩 디바이스(104)는 정사각형 또는 정사각형이 아닌 파티셔닝을 사용하여 수퍼블록 및 다른 코딩 블록들을 더 작은 블록들로 파티셔닝할 수 있다. 비-정사각형 블록들은 N/2xN, NxN/2, N/4xN, 및 NxN/4 블록을 포함할 수 있다. 인코딩 디바이스(104) 및 디코딩 디바이스(112)는 코딩 블록들 각각에 대해 별개의 예측 및 변환 프로세스들을 수행할 수 있다.
AV1은 또한 비디오 데이터의 타일을 정의한다. 타일은 다른 타일들과 독립적으로 코딩될 수 있는 수퍼블록들의 직사각형 어레이이다. 즉, 인코딩 디바이스(104) 및 디코딩 디바이스(112)는 다른 타일들로부터의 비디오 데이터를 사용하지 않고 타일 내의 코딩 블록들을 각각 인코딩 및 디코딩할 수 있다. 그러나, 인코딩 디바이스(104) 및 디코딩 디바이스(112)는 타일 바운더리들에 걸쳐 필터링을 수행할 수 있다. 타일들은 크기가 균일하거나 균일하지 않을 수 있다. 타일 기반 코딩은 인코더 및 디코더 구현들을 위한 병렬 프로세싱 및/또는 멀티-스레딩(threading)을 가능하게 할 수 있다.
일부 예들에서, 비디오 코더는 루미넌스 및 크로미넌스 컴포넌트들의 각각을 나타내기 위해 단일 QTBT 또는 MTT 구조를 사용할 수 있는 한편, 다른 예들에서, 비디오 코더는 2개 이상의 QTBT 또는 MTT 구조들, 예컨대 루미넌스 컴포넌트를 위한 하나의 QTBT 또는 MTT 구조 및 양자의 크로미넌스 컴포넌트들을 위한 다른 QTBT 또는 MTT 구조들(또는 개별의 크로미넌스 컴포넌트들을 위한 2개의 QTBT 및/또는 MTT 구조들)을 사용할 수 있다.
비디오 코더는 쿼드트리 파티셔닝, QTBT 파티셔닝, MTT 파티셔닝, 수퍼블록 파티셔닝, 또는 다른 파티셔닝 구조를 사용하도록 구성될 수 있다.
일부 예들에서, 픽처의 하나 이상의 슬라이스들에는 슬라이스 타입이 배정된다. 슬라이스 타입들은 인트라 코딩된 슬라이스(I-슬라이스), 인터 코딩된 P-슬라이스, 및 인터 코딩된 B-슬라이스를 포함한다. I-슬라이스(인트라 코딩된 프레임, 독립적으로 디코딩 가능)는 인트라 예측에 의해서만 코딩되는 픽처의 슬라이스이며, 따라서 I 슬라이스는 슬라이스의 임의의 예측 유닛 또는 예측 블록을 예측하기 위해 프레임 내의 데이터만을 필요로 하기 때문에 독립적으로 디코딩 가능하다. P-슬라이스(단방향 예측 프레임들)는 인트라 예측 및 단방향 인터 예측으로 코딩될 수 있는 픽처의 슬라이스이다. P-슬라이스 내의 각각의 예측 유닛 또는 예측 블록은 인트라 예측 또는 인터 예측 중 어느 하나로 코딩된다. 인터 예측이 적용될 때, 예측 유닛 또는 예측 블록은 하나의 기준 픽처에 의해서만 예측되고, 그러므로 기준 샘플들은 하나의 프레임의 하나의 기준 영역만으로부터의 것들이다. B-슬라이스(양방향 예측 프레임들)는 인트라 예측 및 인터 예측(예컨대, 양방향 예측 또는 단방향 예측)으로 코딩될 수 있는 픽처의 슬라이스이다. B-슬라이스의 예측 유닛 또는 예측 블록은 2개의 기준 픽처로부터 양방향적으로 예측될 수 있으며, 여기서 각각의 픽처는 하나의 기준 영역에 기여하고 2개의 기준 영역들의 샘플 세트들은 (예컨대, 동일한 가중치 또는 상이한 가중치를 사용하여) 가중되어, 양방향 예측된 블록의 예측 신호를 생성한다. 위에서 설명된 바와 같이, 하나의 픽처의 슬라이스들은 독립적으로 코딩된다. 일부 경우들에서, 픽처가 그저 하나의 슬라이스로서 코딩될 수 있다.
상기 언급된 바와 같이, 픽처의 인트라 픽처 예측은 픽처 내에서 공간적으로 이웃하는 샘플 간의 상관을 활용한다. 복수의 인트라 예측 모드들(또한 "인트라 모드들"로서 지칭됨)이 존재한다. 일부 예들에서, 루마 블록의 인트라 예측은 평면 모드, DC 모드 및 33개의 각도 모드들(예컨대, 대각선 인트라 예측 모드들 및 대각선 인트라 예측 모드들에 인접하는 각도 모드들)을 포함하는 35개의 모드들을 포함한다. 인트라 예측의 35개의 모드들은 이하의 표 1에 나타낸 바와 같이 인덱싱된다. 다른 예들에서, 33개의 각도 모드들로 이미 표현되지 않을 수 있는 예측 각도들을 포함하여 더 많은 인트라 모드들이 정의될 수 있다. 다른 예들에서, 각도 모드들과 연관된 예측 각도들이 HEVC에 사용된 것들과는 상이할 수 있다.
[표 1]
인터 픽처 예측은 이미지 샘플들의 블록에 대한 모션 보상된 예측을 도출하기 위해 픽처들 간의 시간적 상관을 사용한다. 병진 모션 모델을 사용하여, 이전에 디코딩된 픽처(기준 픽처)에서의 블록의 포지션은 모션 벡터(에 의해 표시되고, 이때 는 현재 블록의 포지션에 대한 기준 블록의 수평 변위를 특정하고 는 수직 변위를 특정한다. 일부 경우들에서, 모션 벡터( )는 정수 샘플 정확도(정수 정확도로서 또한 지칭됨)일 수 있고, 이 경우 모션 벡터는 기준 프레임의 정수-펠 그리드(또는 정수-픽셀 샘플링 그리드)를 가리킨다. 일부 경우들에서, 모션 벡터( )는 기준 프레임의 정수-펠 그리드에 제한되지 않고, 기본 객체의 움직임을 보다 정확하게 캡처하기 위해 분수 샘플 정확도(분수-펠 정확도 또는 비-정수 정확도로서 또한 지칭됨)일 수 있다. 모션 벡터들의 정확도는 모션 벡터들의 양자화 레벨에 의해 표현될 수 있다. 예를 들어, 양자화 레벨은 정수 정확도(예컨대, 1-픽셀) 또는 분수-펠 정확도(예컨대, 1/4-픽셀, 1/2-픽셀, 또는 다른 서브-픽셀 값)일 수 있다. 기준 픽처에 보간을 적용하여, 해당 모션 벡터가 분수 샘플 정확도를 가질 때 예측 신호를 도출한다. 예를 들어, 정수 위치에서 이용가능한 샘플들은 분수 위치에서의 값들을 추정하기 위해 (예컨대, 하나 이상의 보간 필터들을 사용하여) 필터링될 수 있다. 이전에 디코딩 기준 픽처는 기준 인덱스(refIdx)에 의해 기준 픽처 목록으로 표시된다. 모션 벡터 및 기준 인덱스는 모션 파라미터로 지칭될 수 있다. 2 종류의 인터 픽처 예측이 수행될 수 있으며, 단방향 예측 및 양방향 예측을 포함한다.
양방향 예측을 사용한 인터 예측(양방향 인터 예측으로 또한 지칭됨)으로, 2개의 세트들의 모션 파라미터들( )이 (동일한 기준 픽처로부터 또는 가능하게는 상이한 기준 픽처들로부터) 2개의 모션 보상된 예측들을 생성하는데 사용된다. 예를 들어, 양방향 예측에 의해, 각각의 예측 블록은 2개의 모션 보상된 예측 신호를 사용하고, B 개의 예측 유닛들을 생성한다. 그 후, 2개의 모션 보상된 예측들은 최종 모션 보상된 예측을 획득하기 위해 결합된다. 예를 들어, 2개의 모션 보상된 예측들은 평균화에 의해 결합될 수 있다. 다른 예에서, 가중 예측이 사용될 수 있고, 이 경우 상이한 가중치들이 각각의 모션 보상 예측에 적용될 수 있다. 양방향 예측에 사용될 수 있는 기준 픽처들은 목록 0 및 목록 1로 표시된 2개의 별개의 목록들에 저장된다. 모션 파라미터들은 모션 추정 프로세스를 사용하여 인코더에서 도출될 수 있다.
단방향 예측을 사용한 인터 예측(단방향 인터 예측으로 또한 지칭됨)으로, 하나의 세트의 모션 파라미터들( )이 기준 픽처로부터 모션 보상된 예측을 생성하는데 사용된다. 예를 들어, 단방향 예측에 의해, 각각의 예측 블록은 최대 하나의 모션 보상된 예측 신호를 사용하고, B 개의 예측 유닛들을 생성한다.
PU가 예측 프로세스에 관련된 데이터(예컨대, 모션 파라미터들 또는 다른 적합한 데이터)를 포함할 수 있다. 예를 들어, PU가 인트라 예측을 사용하여 인코딩될 때, PU는 PU에 대한 인트라 예측 모드를 기술하는 데이터를 포함할 수 있다. 다른 예로서, PU가 인터 예측을 사용하여 인코딩될 때, PU는 PU에 대한 모션 벡터를 정의하는 데이터를 포함할 수 있다. PU에 대한 모션 벡터를 정의하는 데이터는, 예를 들어, 모션 벡터의 수평 컴포넌트(), 모션 벡터의 수직 컴포넌트(), 모션 벡터에 대한 레졸루션(예컨대, 정수 정밀도, 1/4 픽셀 정밀도 또는 1/8 픽셀 정밀도), 모션 벡터가 가리키는 기준 픽처, 기준 인덱스, 모션 벡터에 대한 기준 픽처 목록(예컨대, 목록 0, 목록 1, 또는 목록 C), 또는 이들의 임의의 조합을 설명할 수 있다.
AV1은 비디오 데이터의 코딩 블록을 인코딩 및 디코딩하기 위한 2개의 일반 기법을 포함한다. 2개의 일반 기법은 인트라 예측(예컨대, 인트라 프레임 예측 또는 공간적 예측) 및 인터 예측(예컨대, 인터 프레임 예측 또는 시간적 예측) 이다. AV1의 맥락에서, 인트라 예측 모드를 사용하여 비디오 데이터의 현재 프레임의 블록들을 예측할 때, 인코딩 디바이스(104) 및 디코딩 디바이스(112)는 비디오 데이터의 다른 프레임들로부터의 비디오 데이터를 사용하지 않는다. 대부분의 인트라 예측 모드들에 대해, 비디오 인코딩 디바이스(104)는 현재 블록에서의 샘플 값들과 동일한 프레임에서의 기준 샘플들로부터 생성된 예측된 값들 사이의 차이에 기초하여 현재 프레임의 블록들을 인코딩한다. 비디오 인코딩 디바이스(104)는 인트라 예측 모드에 기초하여 기준 샘플들로부터 생성된 예측 값들을 결정한다.
인트라 예측 및/또는 인터 예측을 이용하여 예측을 수행한 후에, 인코딩 디바이스(104)는 변환 및 양자화를 수행할 수 있다. 예를 들어, 예측에 뒤따라, 인코더 엔진(106)은 PU에 대응하는 잔차 값들을 산출할 수 있다. 잔차 값들은 코딩된(PU) 픽셀들의 현재 블록과 현재 블록을 예측하는데 사용된 예측 블록(예컨대, 현재 블록의 예측된 버전) 사이의 픽셀 차이 값들을 포함할 수 있다. 예를 들어, 예측 블록을 생성한(예컨대, 인터 예측 또는 인트라 예측을 발행한) 후, 인코더 엔진(106)은 현재 블록으로부터 예측 유닛에 의해 생성된 예측 블록을 감산함으로써 잔차 블록을 생성할 수 있다. 잔차 블록은 현재 블록의 픽셀 값들과 예측 블록의 픽셀 값들 사이의 차이들을 정량화하는 픽셀 차이 값들의 세트를 포함한다. 일부 예들에서, 잔차 블록은 2-차원 블록 포맷(예컨대, 픽셀 값들의 2-차원 매트릭스 또는 어레이)으로 표현될 수 있다. 이러한 예들에서, 잔차 블록은 픽셀 값들의 2-차원 표현이다.
예측이 수행된 후에 남을 수 있는 임의의 잔차 데이터는 이산 코사인 변환, 이산 사인 변환, 정수 변환, 웨이브렛 변환, 다른 적절한 변환 함수 또는 이들의 임의의 조합에 기초할 수 있는 블록 변환을 사용하여 변환된다. 일부 경우들에서, 하나 이상의 블록 변환들(예컨대, 크기 32 x 32, 16 x 16, 8 x 8, 4 x 4, 또는 다른 적합한 크기)이 각 CU의 잔차 데이터에 적용될 수 있다. 일부 양태들에서, TU가 인코더 엔진(106)에 의해 구현된 변환 및 양자화 프로세스들을 위해 사용될 수 있다. 하나 이상의 PU들을 갖는 주어진 CU가 하나 이상의 TU들을 또한 포함할 수 있다. 아래에서 더 상세히 설명되는 바와 같이, 잔차 값들은 블록 변환들을 사용하여 변환 계수들로 변환될 수 있고, 그 다음에 엔트로피 코딩을 위한 직렬화된 변환 계수들을 생성하기 위해 TU들을 사용하여 양자화되고 스캐닝될 수 있다.
일부 양태들에서, CU의 PU들을 사용한 인트라 예측 또는 인터 예측 코딩에 이어서, 인코더 엔진(106)은 CU의 TU들에 대한 잔차 데이터를 계산할 수 있다. PU들은 공간적 도메인(또는 픽셀 도메인)에서의 픽셀 데이터를 포함할 수 있다. TU들은 블록 변환의 적용에 뒤따르는 변환 도메인에서의 계수들을 포함할 수 있다. 이전에 언급된 바와 같이, 잔차 데이터는 인코딩되지 않은 픽처의 픽셀들 및 PU들에 대응하는 예측 값들 사이의 픽셀 차이 값들에 해당할 수 있다. 인코더 엔진(106)은 CU에 대한 잔차 데이터를 포함하는 TU들을 형성할 수 있고 그 다음에 CU에 대한 변환 계수들을 생성하기 위해 그 TU들을 변환할 수 있다.
인코더 엔진(106)은 변환 계수들의 양자화를 수행할 수 있다. 양자화는 계수들을 표현하는데 사용되는 데이터의 양을 줄이기 위해 변환 계수들을 양자화함으로써 추가의 압축을 제공한다. 예를 들어, 양자화는 계수들의 일부 또는 전부에 연관된 비트 깊이를 감소시킬 수 있다. 하나의 예에서, n 비트 값을 갖는 계수는 양자화 동안 m 비트 값으로 라운드-다운될 수 있으며, 여기서, n은 m 보다 크다.
일단 양자화가 수행되면, 코딩된 비디오 비트스트림은 양자화된 변환 계수들, 예측 정보(예컨대, 예측 모드들, 모션 벡터, 블록 벡터들 등), 파티셔닝 정보, 및 임의의 다른 적합한 데이터, 예컨대 다른 신택스 데이터를 포함한다. 코딩된 비디오 비트스트림의 상이한 엘리먼트들은 그 다음에 인코더 엔진(106)에 의해 엔트로피 인코딩될 수 있다. 일부 예들에서, 인코더 엔진(106)은 엔트로피 인코딩될 수 있는 직렬화된 벡터를 생성하기 위해 미리정의된 스캔 순서를 이용하여 양자화된 변환 계수들을 스캔할 수 있다. 일부 예들에서, 인코더 엔진(106)은 적응적 스캔을 수행할 수 있다. 벡터(예컨대, 1차원 벡터)를 형성하기 위해 양자화된 변환 계수들을 스캐닝한 후, 인코더 엔진(106)은 그 벡터를 엔트로피 인코딩할 수 있다. 예를 들어, 인코더 엔진(106)은 콘텍스트 적응 가변 길이 코딩, 콘텍스트 적응 이진 산술 코딩, 신택스 기반 콘텍스트 적응 이진 산술 코딩, 확률 간격 파티셔닝 엔트로피 코딩, 또는 다른 적합한 엔트로피 인코딩 기법을 사용할 수 있다.
인코딩 디바이스(104)의 출력(110)은 인코딩된 비디오 비트스트림 데이터를 구성하는 NAL 유닛들을 통신 링크(120)를 통해 수신 디바이스의 디코딩 디바이스(112)로 전송할 수 있다. 디코딩 디바이스(112)의 입력(114)은 NAL 유닛들을 수신할 수 있다. 통신 링크(120)는 무선 네트워크, 유선 네트워크, 또는 유선 및 무선 네트워크의 조합에 의해 제공되는 채널을 포함할 수 있다. 무선 네트워크가 임의의 무선 인터페이스 또는 무선 인터페이스들의 조합을 포함할 수 있고, 임의의 적합한 무선 네트워크(예컨대, 인터넷 또는 다른 광역 네트워크, 패킷 기반 네트워크, WiFiTM, 무선 주파수(RF), 초광대역(UWB), WiFi-Direct, 셀룰러, LTE(Long-Term Evolution), WiMaxTM 등)를 포함할 수 있다. 유선 네트워크가 임의의 유선 인터페이스(예컨대, 섬유, 이더넷, 전력선 이더넷, 동축 케이블을 통한 이더넷, 디지털 신호 라인(DSL) 등)를 포함할 수 있다. 유선 및/또는 무선 네트워크들은 다양한 장비, 예컨대 기지국들, 라우터들, 액세스 포인트들, 브리지들, 게이트웨이들, 스위치들 등을 사용하여 구현될 수 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되고, 수신 디바이스로 송신될 수 있다.
일부 예에서, 인코딩 디바이스(104)는 인코딩된 비디오 비트스트림 데이터를 저장소(108)에 저장할 수 있다. 출력(110)은 인코더 엔진(106)으로부터 또는 저장소(108)로부터 인코딩된 비디오 비트스트림 데이터를 취출할 수 있다. 저장소(108)는 다양한 분산되거나 또는 국부적으로 액세스되는 데이터 저장 미디어 중 어느 것을 포함할 수 있다. 예를 들어, 저장소(108)는 하드 드라이브, 저장 디스크, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 미디어를 포함할 수 있다. 또한, 저장소(108)는 인터 예측에서 사용하기 위한 기준 픽처들을 저장하는 DPB(Decoded Picture Buffer)를 포함할 수 있다. 추가 예에서, 저장소(108)는, 소스 디바이스에 의해 생성되는 인코딩된 비디오를 저장할 수 있는, 파일 서버 또는 다른 중간 저장 디바이스에 대응할 수 있다. 이러한 경우, 디코딩 디바이스(112)를 포함하는 수신 디바이스는 스트리밍 또는 다운로드를 통해 저장소 디바이스로부터 저장된 비디오 데이터에 액세스할 수 있다. 파일 서버는, 인코딩된 비디오 데이터를 저장하고 그리고 그 인코딩된 비디오 데이터를 수신 디바이스로 송신하는 것이 가능한 임의의 타입의 서버일 수 있다. 예의 파일 서버들은 웹 서버(예컨대, 웹사이트용), FTP 서버, NAS(network attached storage) 디바이스들, 또는 로컬 디스크 드라이브를 포함한다. 수신 디바이스는, 인터넷 접속을 포함한, 임의의 표준 데이터 접속을 통해 인코딩된 비디오 데이터에 액세스할 수 있다. 이는 무선 채널(예컨대, Wi-Fi 접속), 유선 접속(예컨대, DSL, 케이블 모뎀 등), 또는 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하기에 적합한 둘 모두의 조합을 포함할 수 있다. 저장소(108)로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들의 조합일 수 있다.
디코딩 디바이스(112)의 입력(114)은 인코딩된 비디오 비트스트림 데이터를 수신하고 디코더 엔진(116)에 의해 나중에 사용하기 위해 비디오 비트스트림 데이터를 디코더 엔진(116) 또는 저장소(118)에 제공할 수 있다. 예를 들어, 저장소(118)는 인터 예측에 사용하기 위한 기준 픽처들을 저장하기 위한 디코딩된 픽처 버퍼(decoded picture buffer, DPB)를 포함할 수 있다. 디코딩 디바이스(112)를 포함하는 수신 디바이스는 저장소(108)를 통해 디코딩될 인코딩된 비디오 데이터를 수신할 수 있다. 인코딩된 비디오 데이터는 통신 표준, 예컨대 무선 통신 프로토콜에 따라 변조되고 수신 디바이스로 송신될 수 있다. 인코딩된 비디오 데이터를 송신하기 위한 통신 매체는 임의의 무선 또는 유선 통신 매체, 이를 테면 무선 주파수(RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들을 포함할 수 있다. 통신 매체는 패킷 기반 네트워크, 예컨대 근거리 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크의 일부를 형성할 수 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스로부터 수신 디바이스로의 통신을 용이하게 하는데 유용할 수 있는 임의의 다른 장비를 포함할 수 있다.
디코더 엔진(116)은 인코딩된 비디오 데이터를 구성하는 하나 이상의 코딩된 비디오 시퀀스들의 엘리먼트들을 (예컨대, 엔트로피 디코더를 이용하여) 엔트로피 디코딩하고 추출함으로써 인코딩된 비디오 비트스트림 데이터를 디코딩할 수 있다. 디코더 엔진(116)은 그 다음에 인코딩된 비디오 비트스트림 데이터에 대한 스케일링 및 역변환을 수행할 수 있다. 잔차 데이터는 그 다음에 디코더 엔진(116)의 예측 스테이지에 전해진다. 디코더 엔진(116)은 그 다음에 픽셀들의 블록(예컨대, PU)을 예측한다. 일부 예들에서, 예측은 역변환의 출력(잔차 데이터)에 가산된다.
비디오 디코딩 디바이스(112)는 디코딩된 비디오를 비디오 목적지 디바이스(122)에 출력할 수 있고, 비디오 목적지 디바이스는 디코딩된 비디오 데이터를 콘텐츠의 소비자에게 디스플레이하기 위한 디스플레이 또는 다른 출력 디바이스를 포함할 수 있다. 일부 양태들에서, 비디오 목적지 디바이스(122)는 디코딩 디바이스(112)를 포함하는 수신 디바이스의 일부일 수 있다. 일부 양태들에서, 비디오 목적지 디바이스(122)는 수신 디바이스와는 다른 별개의 디바이스의 일부일 수 있다.
일부 양태들에서, 비디오 인코딩 디바이스(104) 및/또는 비디오 디코딩 디바이스(112)는 각각 오디오 인코딩 디바이스 및 오디오 디코딩 디바이스와 통합될 수 있다. 비디오 인코딩 디바이스(104) 및/또는 비디오 디코딩 디바이스(112)는 위에서 설명된 코딩 기법들을 구현하는데 필요한 다른 하드웨어 또는 소프트웨어, 예컨대 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들(DSP들), 주문형 집적회로들(ASIC들), 필드 프로그램가능 게이트 어레이들(FPGA들), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 그것들의 임의의 조합들을 또한 포함할 수 있다. 비디오 인코딩 디바이스(104)와 비디오 디코딩 디바이스(112)는 각각의 디바이스에서의 조합된 인코더/디코더(코덱)의 일부로서 통합될 수 있다.
도 1에 도시된 예시적인 시스템은 본 명세서에서 사용될 수 있는 하나의 예시적인 예이다. 본 명세서에서 설명된 기술들을 사용하여 비디오 데이터를 프로세싱하기 위한 기술들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수 있다. 비록 대체적으로 본 개시내용의 기술들이 비디오 인코딩 디바이스 또는 비디오 디코딩 디바이스에 의해 수행되지만, 그 기술들은 또한, 통상적으로 "CODEC"으로서 지칭되는 결합된 비디오 인코더/디코더에 의해 수행될 수 있다. 또한, 본 개시내용의 기술들은 비디오 프리프로세서에 의해 수행될 수 있다. 소스 디바이스 및 수신 디바이스는, 소스 디바이스가 수신 디바이스로의 송신을 위해 코딩된 비디오 데이터를 생성하는 그러한 코딩 디바이스들의 예들일 뿐이다. 일부 예들에서, 소스 및 수신 디바이스들은 디바이스들의 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭적인 방식으로 동작할 수 있다. 따라서, 예시의 시스템들은 예를 들어, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 또는 비디오 전화를 위해, 비디오 디바이스들 간의 일방향 또는 양방향 비디오 송신을 지원할 수 있다.
본 개시내용은 대체적으로 신택스 엘리먼트들과 같은 어떤 정보를 "시그널링(signaling)" 하는 것을 언급할 수 있다. 용어 "시그널링"은 대체적으로 인코딩된 비디오 데이터를 디코딩하는 데 사용되는 신택스 엘리먼트들에 대한 값들 및/또는 다른 데이터의 통신을 지칭할 수 있다. 예를 들어, 비디오 인코딩 디바이스(104)는 비트스트림에서 신택스 엘리먼트들에 대한 값들을 시그널링할 수 있다. 대체적으로, 시그널링은 비트스트림에서 값을 생성하는 것을 의미한다. 위에 언급된 바와 같이, 소스 디바이스(102)는 비디오 목적지 디바이스(122)에 의한 나중 취출을 위해 저장소(108)에 신택스 엘리먼트를 저장할 때 발생할 수 있는 것과 같은, 실질적으로 실시간으로 또는 비실시간으로, 비트스트림을 비디오 목적지 디바이스(122)로 전송할 수 있다.
비디오 비트스트림이 보충 강화 정보(SEI) 메시지들을 또한 포함할 수 있다. 예를 들어, SEI NAL 유닛이 비디오 비트스트림의 일부일 수 있다. 일부 경우들에서, SEI 메시지가 디코딩 프로세스에 의해 필요하지 않은 정보를 포함할 수 있다. 예를 들어, SEI 메시지에서의 정보는 디코더가 비트스트림의 비디오 픽처들을 디코딩하는 데 필수적이지 않을 수 있지만, 디코더는 그 정보를 사용하여 픽처들(예컨대, 디코딩된 출력)의 디스플레이 또는 프로세싱을 향상시킬 수 있다. SEI 메시지에서의 정보는 메타데이터에 임베디드될 수 있다. 하나의 구체적인 예에서, SEI 메시지에서의 정보는 콘텐츠의 가시성을 향상시키기 위해 디코더측 엔티티들에 의해 사용될 수 있다. 일부 사례들에서, 특정한 애플리케이션 표준들은 애플리케이션 표준을 준수하는 모든 디바이스들에 품질의 향상이 가져와질 수 있도록 비트스트림에서의 이러한 SEI 메시지들의 존재(예컨대, 많은 다른 예들에 더하여, SEI 메시지가 비디오의 모든 프레임에 대해 운반되는 프레임 호환 평면-입체(plano-stereoscopic) 3DTV 비디오 포맷에 대한 프레임-패킹 SEI 메시지의 운반, 복원 포인트 SEI 메시지의 핸들링, DVB에서의 팬-스캔 스캔 직사각형 SEI 메시지의 사용)를 요구할 수 있다.
상술한 바와 같이, 각각의 블록에 대해, 모션 정보(본 명세서에서는 모션 파라미터라고도 함)의 세트가 이용가능할 수 있다. 모션 정보의 세트는 순방향 및 역방향 예측 방향들에 대한 모션 정보를 포함한다. 순방향 및 역방향 예측 방향들은 양방향 예측 모드의 2개의 예측 방향들이며, 이 경우 용어 "순방향" 및 "역방향"은 반드시 기하학적 의미를 가질 필요는 없다. 대신, "순방향" 및 "역방향"은 현재 픽처의 기준 픽처 목록 0(RefPicList0 또는 L0) 및 기준 픽처 목록 1(RefPicList1 또는 L1)에 대응한다. 일부 예들에서, 오직 하나의 기준 픽처 목록이 픽처 또는 슬라이스에 이용가능할 경우, 오직 RefPicList0만이 이용가능하고 슬라이스의 각각의 블록의 모션 정보는 항상 순방향이다.
일부 경우들에서, 그 기준 인덱스와 함께 모션 벡터는 코딩 프로세스들(예컨대, 모션 보상)에서 사용된다. 연관된 기준 인덱스를 갖는 이러한 모션 벡터는 단일 예측성(uni-predictive) 모션 정보 세트로 표기된다. 각각의 예측 방향에 대해, 모션 정보는 기준 인덱스 및 모션 벡터를 포함할 수 있다. 일부 경우들에서, 단순화를 위해, 모션 벡터 자체는, 관련 기준 인덱스를 갖는 것으로 가정되는 방식으로 참조될 수 있다. 기준 인덱스는 현재 기준 픽처 목록(RefPicList0 또는 RefPicList1)에서의 기준 픽처를 식별하는데 사용된다. 모션 벡터는, 현재 픽처의 좌표 위치로부터 기준 인덱스에 의해 식별된 기준 픽처에서의 좌표까지의 오프셋을 제공하는 수평 및 수직 컴포넌트를 갖는다. 예를 들어, 기준 인덱스는 현재 픽처 내의 블록에 대해 이용해야 하는 특정 기준 픽처를 나타낼 수 있고, 모션 벡터는 기준 픽처에서 최상의 매칭된 블록(현재 블록과 최상으로 매칭하는 블록)이 기준 픽처 내에 어디에 있는지를 나타낼 수 있다.
H.264/AVC에서, 각각의 인터 매크로블록(macroblock, MB)은 4개의 상이한 방식들로 파티셔닝될 수 있는데: 하나의 16x16 MB 파티션; 2개의 16x8 MB 파티션들; 2개의 8x16 MB 파티션들; 및 4개의 8x8 MB 파티션들을 포함한다. 하나의 MB에서의 상이한 MB 파티션들은 각각의 방향에 대해 상이한 기준 인덱스 값들(RefPicList0 또는 RefPicList1)을 가질 수 있다. 일부 경우들에서, MB가 4개의 8x8 MB 파티션들로 파티셔닝되지 않을 경우, MB는 각각의 방향에서 각각의 MB 파티션에 대해 오직 하나의 모션 벡터만을 가질 수 있다. 일부 경우들에서, MB가 4개의 8x8 MB 파티션들로 파티셔닝될 경우, 각각의 8x8 MB 파티션은 서브 블록들로 추가로 파티셔닝될 수 있으며, 이 경우, 각각의 서브 블록은 각각의 방향에서 상이한 모션 벡터를 가질 수 있다. 일부 예들에서, 8x8 MB 파티션으로부터 서브 블록들을 얻기 위해 4개의 상이한 방식들이 존재하는데: 하나의 8x8 서브 블록; 2개의 8x4 서브 블록들; 2개의 4x8 서브 블록들; 및 4개의 4x4 서브 블록들을 포함한다. 각각의 서브 블록은 각각의 방향에서 상이한 모션 벡터를 가질 수 있다. 따라서, 모션 벡터는 서브 블록과 같거나 더 높은 레벨에 존재한다.
AVC에서, 시간적 직접 모드는, B 슬라이스들에서 스킵 및/또는 직접 모드에 대해 MB 레벨 또는 MB 파티션 레벨 중 어느 하나에서 인에이블될 수 있다. 각각의 MB 파티션에 대해, 현재 블록의 RefPicList1[0]에서의 현재 MB 파티션과 공동위치된(co-located) 블록의 모션 벡터들이 모션 벡터들을 도출하는데 사용된다. 공동위치된 블록에서의 각각의 모션 벡터는 픽처 순서 카운트(Picture Order Count, POC) 거리들에 기초하여 스케일링된다.
AVC에서 공간적 직접 모드를 또한 수행할 수 있다. 예를 들어, AVC에서, 직접 모드는 또한, 공간적 이웃들로부터 모션 정보를 예측할 수 있다.
상기 언급된 바와 같이, HEVC에서, 슬라이스에서의 최대 코딩 유닛은 코딩 트리 블록(CTB) 이라 불린다. CTB는 쿼드 트리를 포함하고, 그 노드들은 코딩 유닛들이다. CTB의 크기는 HEVC 메인 프로파일에서 16x16부터 64x64까지의 범위일 수 있다. 일부 경우들에서, 8x8 CTB 크기들이 지원될 수 있다. 코딩 유닛(CU)은 CTB의 동일한 크기일 수 있고 8x8 만큼 작을 수 있다. 일부 경우들에서, 각각의 코딩 유닛은 하나의 모드로 코딩된다. CU가 인터 코딩될 경우, CU는 2 또는 4개의 예측 유닛들(PU들)로 추가로 파티셔닝될 수 있거나, 또는 추가의 파티션이 적용되지 않을 경우 단지 하나의 PU가 될 수 있다. 2개의 PU들이 하나의 CU에 존재할 경우, 그 PU들은 하프 크기 직사각형들 또는 CU의 ¼ 또는 ¾ 크기인 2개의 직사각형들일 수 있다. CU가 인터 코딩될 때, 모션 정보의 하나의 세트는 각각의 PU에 대해 존재한다. 부가적으로, 각각의 PU는 모션 정보의 세트를 도출하기 위해 고유한 인터 예측 모드로 코딩된다.
예를 들어, HEVC에서의 모션 예측에 대해, 예측 유닛(PU)에 대한 병합 모드 및 어드밴스드 모션 벡터 예측(AMVP) 모드를 포함하는 2개의 인터 예측 모드가 있다. 스킵은 병합의 특별 케이스로서 고려된다. AMVP 모드 또는 병합 모드 중 어느 하나에서, 모션 벡터(motion vector, MV) 후보 목록이 다수의 모션 벡터 예측자들에 대해 유지된다. 현재 PU의 병합 모드에서의 기준 인덱스들뿐만 아니라 모션 벡터(들)가 MV 후보 목록으로부터 하나의 후보를 취함으로써 생성된다. 일부 예들에서, 하나 이상의 스케일링 윈도우 오프셋은 MV 후보 목록에서 저장된 모션 벡터들과 함께 포함될 수 있다.
MV 후보 목록이 블록의 모션 예측을 위해 사용되는 예들에서, MV 후보 목록은 인코딩 디바이스 및 디코딩 디바이스에 의해 별개로 구축될 수 있다. 예를 들어, MV 후보 목록은 블록을 인코딩할 때 인코딩 디바이스에 의해 생성될 수 있고, 블록을 디코딩할 때 디코딩 디바이스에 의해 생성될 수 있다. MV 후보 목록에서의 모션 정보 후보와 관련된 정보(예컨대, 하나 이상의 모션 벡터들과 관련된 정보, 일부 경우들에서 MV 후보 목록에 저장될 수 있는 하나 이상의 LIC 플래그들과 관련된 정보, 및/또는 다른 정보)는 인코딩 디바이스와 디코딩 디바이스 사이에서 시그널링될 수 있다. 예를 들어, 병합 모드에서, 저장된 모션 정보 후보들에 대한 인덱스 값들은 (예컨대, 픽처 파라미터 세트(PPS), 시퀀스 파라미터 세트(SPS), 비디오 파라미터 세트(VPS), 슬라이스 헤더, 비디오 비트스트림으로 또는 비디오 비트스트림으로부터 별개로 전송된 보충 강화 정보(SEI) 메시지, 및/또는 다른 시그널링과 같은 신택스 구조에서) 인코딩 디바이스로부터 디코딩 디바이스로 시그널링될 수 있다. 디코딩 디바이스는 MV 후보 목록을 구성하고, 모션 보상 예측에 사용하기 위해, 구성된 MV 후보 목록으로부터 하나 이상의 모션 정보 후보들을 획득하기 위해 시그널링된 기준들 또는 인덱스들을 사용할 수 있다. 예를 들어, 디코딩 디바이스(112)는 MV 후보 목록을 구성하고, 블록의 모션 예측을 위해 인덱싱된 위치로부터의 모션 벡터(및 일부 경우들에서 LIC 플래그)를 사용할 수 있다. AMVP 모드의 경우, 기준들 또는 인덱스들에 추가하여, 차이들 또는 잔차 값들도 또한 델타들로서 시그널링될 수 있다. 예를 들어, AMVP 모드에 대해, 디코딩 디바이스는 하나 이상의 MV 후보 목록들을 구성하고, 블록의 모션 보상 예측을 수행함에 있어서 시그널링된 인덱스 값들을 사용하여 획득된 하나 이상의 모션 정보 후보들에 델타 값들을 적용할 수 있다.
일부 예들에서, MV 후보 목록은 병합 모드에 대한 5개까지의 후보들 및 AMVP 모드에 대한 2개의 후보들을 포함한다. 다른 예들에서, 상이한 수들의 후보들이 병합 모드 및/또는 AMVP 모드에 대한 MV 후보 목록에 포함될 수 있다. 병합 후보는 모션 정보의 세트를 포함할 수 있다. 예를 들어, 모션 정보의 세트는 기준 픽처 목록(목록 0 및 목록 1) 및 기준 인덱스들 양자 모두에 대응하는 모션 벡터들을 포함할 수 있다. 병합 후보가 병합 인덱스에 의해 식별되면, 기준 픽처들은 현재 블록들의 예측을 위해 사용될 뿐 아니라 관련 모션 벡터들이 결정된다. 하지만, AMVP 모드 하에서, 목록 0 또는 목록 1 중 어느 하나로부터의 각각의 잠재적 예측 방향에 대해, AMVP 후보가 오직 모션 벡터만을 포함하기 때문에, MV 후보 목록에 대한 MVP 인덱스와 함께, 기준 인덱스가 명시적으로 시그널링될 필요가 있다. AMVP 모드에서, 예측 모션 벡터들은 추가로 개선될 수 있다.
위에서 알 수 있는 바와 같이, 병합 후보는 모션 정보의 전체 세트에 대응하는 한편, AMVP 후보는 특정 예측 방향 및 기준 인덱스에 대해 단지 하나의 모션 벡터만을 포함한다. 양자 모두의 모드들에 대한 후보들은 동일한 공간적 및 시간적 이웃 블록들로부터 유사하게 도출된다.
일부 예들에서, 병합 모드는 인터 예측된 PU로 하여금 공간적으로 이웃한 모션 데이터 위치들의 그룹으로부터 선택된 모션 데이터 위치 및 2개의 시간적으로 공동위치된 모션 데이터 위치들 중 하나를 포함한 인터 예측된 PU로부터의 동일한 모션 벡터 또는 벡터들, 예측 방향, 및 기준 픽처 인덱스 또는 인덱스들을 상속하게 한다. AMVP 모드에 대해, PU의 모션 벡터 또는 벡터들은, 인코더 및/또는 디코더에 의해 구성된 AMVP 후보 목록으로부터의 하나 이상의 모션 벡터 예측자(MVP)들에 대해 예측적으로 코딩될 수 있다. 일부 경우들에서, PU의 단일 방향 인터 예측에 대해, 인코더 및/또는 디코더는 단일 AMVP 후보 목록을 생성할 수 있다. 일부 경우들에서, PU의 양방향 예측에 대해, 인코더 및/또는 디코더는 2개의 AMVP 후보 목록들을 생성할 수 있으며, 하나는 순방향 예측 방향으로부터 공간적 및 시간적 이웃 PU들의 모션 데이터를 사용하고, 하나는 역방향 예측 방향으로부터 공간적 및 시간적 이웃 PU들의 모션 데이터를 사용한다.
양자의 모드들에 대한 후보들은 공간적 및/또는 시간적 이웃 블록들로부터 도출될 수 있다. 예를 들어, 도 2a 및 도 2b는 공간적 이웃 후보들을 예시하는 개념도들을 포함한다. 도 2a는 병합 모드에 대한 공간적 이웃 모션 벡터(MV) 후보들을 예시한다. 도 2b는 AMVP 모드를 위한 공간적 이웃 모션 벡터(MV) 후보들을 예시한다. 공간적 MV 후보들이 특정 PU(PU0)에 대한 이웃 블록들로부터 도출되지만, 블록들로부터 후보들을 생성하는 방법들은 병합 및 AMVP 모드들에 대해 상이하다.
병합 모드에서, 인코더 및/또는 디코더는 다양한 모션 데이터 위치들로부터의 병합 후보들을 고려함으로써 병합 후보 목록을 형성할 수 있다. 예를 들어, 도 2a에 나타낸 바와 같이, 4개까지의 공간적 MV 후보들이 도 2a에서의 번호들 0 내지 4로 나타낸 공간적으로 이웃한 모션 데이터 위치들에 대해 도출될 수 있다. MV 후보들은 병합 후보 목록에서 번호들 0 내지 4로 나타낸 순서로 순서화될 수 있다. 예를 들어, 위치들 및 순서는 좌측 위치(0), 상부 위치(1), 우상부 위치(2), 좌하부 위치(3), 및 좌상부 위치(4)를 포함할 수 있다.
도 2b에 도시된 AVMP 모드에서, 이웃한 블록들은 2개의 그룹들: 즉, 블록들 0 및 1을 포함하는 좌측 그룹, 및 블록들 2, 3, 및 4를 포함하는 상부 그룹으로 분할된다. 각각의 그룹에 대해, 시그널링된 기준 인덱스에 의해 표시된 것과 동일한 기준 픽처를 참조하는 이웃한 블록에서의 잠재적인 후보가 그룹의 최종 후보를 형성하도록 선택될 최고 우선순위를 갖는다. 모든 이웃한 블록들이 동일한 기준 픽처를 가리키는 모션 벡터를 포함하지 않는 것이 가능하다. 따라서, 이러한 후보가 발견될 수 없으면, 최종 후보를 형성하기 위해 제1 이용가능 후보가 스케일링될 것이며, 따라서, 시간적 거리 차이들이 보상될 수 있다.
도 3a 및 도 3b는 시간적 모션 벡터 예측을 예시하는 개념도들을 포함한다. 시간적 모션 벡터 예측자(TMVP) 후보는, 인에이블되고 이용가능한 경우, 공간적 모션 벡터 후보들 이후에 MV 후보 목록에 부가된다. TMVP 후보에 대한 모션 벡터 도출의 프로세스는 병합 모드 및 AMVP 모드 양자에 대해 동일하다. 일부 경우들에서, 하지만, 병합 모드에서 TMVP 후보에 대한 타깃 기준 인덱스는 제로로 설정될 수 있거나 또는 이웃한 블록들의 타깃 기준 인덱스로부터 도출될 수 있다.
TMVP 후보 도출을 위한 일차 블록 위치는, 공간적 이웃 후보를 생성하는데 사용된 상부 및 좌측 블록에 대한 바이어스를 보상하기 위해, 도 3a에 블록 "T"로서 도시된 바와 같이 공동위치된 PU 외부의 우하부 블록이다. 하지만, 그 블록이 현재의 CTB(또는 LCU) 행의 외부에 위치되거나 또는 모션 정보가 이용가능하지 않으면, 블록은 PU의 중심 블록으로 치환된다. TMVP 후보에 대한 모션 벡터는, 슬라이스 레벨에서 표시된, 공동위치된 픽처의 공동위치된 PU로부터 도출된다. AVC에서의 시간적 직접 모드와 유사하게, TMVP 후보의 모션 벡터는, 거리 차이들을 보상하도록 수행되는 모션 벡터 스케일링을 당할 수 있다.
모션 예측의 다른 양태들은 HEVC 표준 및/또는 다른 표준, 포맷, 또는 코덱에서 커버된다. 예를 들어, 병합 및 AMVP 모드들의 수개의 다른 양태들이 커버된다. 하나의 양태는 모션 벡터 스케일링을 포함한다. 모션 벡터 스케일링에 대하여, 모션 벡터들의 값이 그 프리젠테이션 시간에서의 픽처들의 거리에 비례한다고 가정될 수 있다. 모션 벡터는 2개의 픽처들, 즉, 기준 픽처와, 모션 벡터를 포함하는 픽처(즉, 포함 픽처)를 연관시킨다. 모션 벡터가 다른 모션 벡터를 예측하는데 활용될 경우, 포함 픽처와 기준 픽처의 거리는 픽처 순서 카운트(POC) 값들에 기초하여 계산된다.
예측될 모션 벡터에 대해, 그의 연관된 포함 픽처 및 기준 픽처 양자는 상이할 수 있다. 따라서, (POC에 기초한) 새로운 거리가 계산된다. 그리고, 모션 벡터는 이들 2개의 POC 거리들에 기초하여 스케일링된다. 공간적 이웃 후보에 대해, 2개의 모션 벡터들에 대한 포함 픽처들은 동일한 반면, 기준 픽처들은 상이하다. HEVC에서, 모션 벡터 스케일링이 공간적 및 시간적 이웃 후보들에 대해 TMVP 및 AMVP 양자에 적용된다.
모션 예측의 다른 양태는 인위적인 모션 벡터 후보 생성을 포함한다. 예를 들어, 모션 벡터 후보 목록이 완료되지 않으면, 인위적인 모션 벡터 후보들이 생성되고, 모든 후보들이 획득될 때까지 목록의 끝에 삽입된다. 병합 모드에서, 2개의 유형들의 인위적인 MV 후보들: 즉, 오직 B-슬라이스들에 대해서만 도출되는 결합된 후보; 및 제1 유형이 충분한 인위적인 후보들을 제공하지 않으면 오직 AMVP에 대해서만 사용되는 제로 후보들이 존재한다. 후보 목록에 이미 있고 필요한 모션 정보를 갖는 후보들의 각각의 쌍에 대해, 양방향 결합된 모션 벡터 후보들이 목록 0에서의 픽처를 참조하는 제1 후보의 모션 벡터와 목록 1에서의 픽처를 참조하는 제2 후보의 모션 벡터의 조합에 의해 도출된다.
일부 구현들에서, 프루닝 프로세스(pruning process)는 MV 후보 목록에 새로운 후보들을 추가하거나 삽입할 때 수행될 수 있다. 예를 들어, 일부 경우들에서, 상이한 블록들로부터의 MV 후보들이 동일한 정보를 포함하는 것이 가능하다. 이러한 경우들에서, MV 후보 목록에 다수의 MV 후보들의 중복 모션 정보를 저장하는 것은 MV 후보 목록의 효율성의 감소 및 리던던시(redundancy)를 초래할 수 있다. 일부 예들에서, 프루닝 프로세스는 MV 후보 목록에서의 리던던시들을 제거하거나 최소화할 수 있다. 예를 들어, 프루닝 프로세스는 MV 후보 목록에 추가될 잠재적인 MV 후보를 MV 후보 목록에 이미 저장된 MV 후보들에 대해 비교하는 것을 포함할 수 있다. 하나의 예시적인 예에서, 저장된 모션 벡터의 수평 변위() 및 수직 변위()(현재 블록의 포지션에 대한 기준 블록의 포지션을 나타냄)는 잠재적 후보의 모션 벡터의 수평 변위() 및 수직 변위()와 비교될 수 있다. 비교가 잠재적 후보의 모션 벡터가 하나 이상의 저장된 모션 벡터들 중 임의의 것과 매칭하지 않는다는 것을 나타내면, 잠재적 후보는 프루닝될 후보로서 간주되지 않고 MV 후보 목록에 추가될 수 있다. 이러한 비교에 기초하여 매칭이 발견되면, 잠재적인 MV 후보는 MV 후보 목록에 추가되지 않고, 동일한 후보의 삽입을 회피한다. 일부 경우들에서, 복잡성을 감소시키기 위해, 각각의 잠재적인 MV 후보를 모든 기존 후보들과 비교하는 대신에 프루닝 프로세스 동안 제한된 수의 비교들만이 수행된다.
HEVC와 같은 소정의 코딩 방식들에서, 가중 예측(Weighted Prediction, WP)이 지원되며, 이 경우 스케일링 팩터(a로 표기됨), 시프트 번호(s로 표기됨) 및 오프셋(b로 표기됨)이 모션 보상에서 사용된다. 기준 픽처의 위치(x, y)에서의 픽셀 값이 p(x, y) 라고 가정하면, p(x, y) 대신에 p'(x, y) = ((a*p(x, y) +(1 << (s-1))) >> s) + b가 모션 보상에서 예측 값으로서 사용된다.
WP가 인에이블될 때, 현재 슬라이스의 각각의 기준 픽처에 대해, WP가 기준 픽처에 대해 적용되는지 여부를 표시하기 위해 플래그가 시그널링된다. WP가 하나의 기준 픽처에 대해 적용되는 경우에, WP 파라미터들의 세트(즉, a, sb)가 디코더에 전송되고, 기준 픽처로부터의 모션 보상을 위해 사용된다. 일부 예들에서, 루마 및 크로마 컴포넌트에 대해 WP를 유연하게 턴 온/오프하기 위해, WP 플래그 및 WP 파라미터들은 루마 및 크로마 컴포넌트에 대해 개별적으로 시그널링된다. WP에서, 하나의 동일한 세트의 WP 파라미터들이 하나의 기준 픽처의 모든 픽셀들에 대해 사용된다.
도 4a는 단방향 인터 예측에 사용되는 기준 블록(404)의 이웃 샘플들 및 현재 블록(402)의 이웃 재구성된 샘플들의 일례를 예시하는 도면이다. 모션 벡터(MV)는 현재 블록(402)에 대해 코딩될 수 있고, 여기서 MV는 기준 픽처 목록에 대한 기준 인덱스 및/또는 기준 블록(404)을 식별하기 위한 다른 모션 정보를 포함할 수 있다. 예를 들어, MV는 현재 픽처에서의 좌표 포지션으로부터 기준 인덱스에 의해 식별되는 기준 픽처에서의 좌표들까지의 오프셋을 제공하는 수평 및 수직 컴포넌트를 포함할 수 있다. 도 4b는 양방향성 인터 예측에 사용된 제1 기준 블록(424) 및 제2 기준 블록(426)의 이웃 샘플들 및 현재 블록(422)의 이웃 재구성된 샘플들의 일례를 예시하는 도면이다. 이러한 경우에, 2개의 모션 벡터들(MV0, MV1)은 제1 기준 블록(424) 및 제2 기준 블록(426)을 각각 식별하기 위해 현재 블록(422)에 대해 코딩될 수 있다.
양자간 매칭(BM)은 2개의 초기 모션 벡터들(예컨대, 제1 모션 벡터(MV0) 및 제2 모션 벡터(MV1))의 쌍을 개선하는 데 사용될 수 있는 기법이다. 예를 들어, BM은 초기 모션 벡터들(MV0, MV1)의 쌍 주위를 검색하여 개선된 모션 벡터들(예컨대, 개선된 모션 벡터들(MV0', MV1'))을 도출함으로써 수행될 수 있다. 개선된 모션 벡터들(MV0', MV1')은 후속적으로 제1 모션 벡터(MV0) 및 제2 모션 벡터(MV1)를 각각 대체하는 데 사용될 수 있다. 개선된 모션 벡터들은 블록 매칭 비용을 최소화하는 검색에서 식별된 모션 벡터들로서 검색 시에 선택될 수 있다.
일부 예들에서, 블록 매칭 비용은 2개의 MV들에 대해 생성된 2개의 모션 보상된 예측자들 사이의 유사성에 기초하여 생성될 수 있다. 블록 매칭 비용들에 대한 예시적인 기준들은, 절대 차이의 합(SAD), 절대 변환된 차이의 합(SATD), 제곱 오차의 합(SSE) 등을 포함하지만, 이들로 제한되지 않는다. 블록 매칭 비용 기준들은 또한, 현재 MV 쌍(예컨대, MV 쌍은 개선된 모션 벡터들(MV0', MV1')로서 선택하기 위해 고려됨)과 초기 MV 쌍(예컨대, MV0, MV1) 사이의 MV 차이들에 기초하여 도출되는 정규화 항을 포함할 수 있다.
일부 예들에서, 하나 이상의 제약들이 MV 차이 항들(MVD0, MVD1)에 적용될 수 있다(예컨대, 여기서 MVD0 = MV0' - MV0이고 MVD1 = MV1' - MV1임). 예를 들어, 일부 경우들에서, MVD0 및 MVD1이 현재 픽처(예컨대, 현재 블록)와 2개의 MV들이 가리키는 기준 픽처들(예컨대, 기준 블록들) 사이의 시간적 거리(temporal distance, TD)들에 비례한다는 가정에 기초한 제약이 적용될 수 있다. 일부 예들에서, MVD0 = -MVD1(예컨대, MVD0 및 MVD1이 동일한 크기들을 갖지만 반대 부호들을 가짐)이라는 가정에 기초한 제약이 적용될 수 있다.
일부 예들에서, 인터 예측된 CU들은 하나 이상의 모션 파라미터들과 연관될 수 있다. 예를 들어, 다목적 비디오 코딩(VVC) 표준에서, 각각의 인터 예측된 CU는 하나 이상의 모션 파라미터들과 연관될 수 있는데, 이는 모션 벡터들, 기준 픽처 인덱스들 및 기준 픽처 목록 사용 인덱스를 포함할 수 있지만 이들로 제한되지 않는다. 모션 파라미터들은 인터 예측된 샘플 생성에 사용될 VVC의 코딩 특징들과 연관된 추가적인 정보를 추가로 포함할 수 있다. 모션 파라미터들은 명시적 또는 암시적 방식으로 시그널링될 수 있다. 예를 들어, CU가 스킵 모드로 코딩될 때, CU는 하나의 PU와 연관되고 어떠한 유의한 잔차 계수들도 갖지 않고 어떠한 코딩된 모션 벡터 델타 또는 기준 픽처 인덱스도 갖지 않는다.
일부 양태들에서, 병합 모드가 특정될 수 있으며, 여기서 현재 CU에 대한 모션 파라미터들은 공간적 및 시간적 후보들을 포함하는 이웃 CU들로부터 획득된다. 하나 이상의 병합 모드들은 추가적으로 또는 대안적으로, VVC 표준에 도입된 추가적인 스케줄들에 기초하여 특정될 수 있다. 일부 예들에서, 병합 모드는 임의의 인터 예측된 CU에 적용될 수 있다(예컨대, 병합 모드는 스킵 모드를 넘어서 적용될 수 있음). 일부 예들에서, 병합 모드에 대한 대안은 하나 이상의 모션 파라미터들의 명시적 송신을 포함할 수 있다. 예를 들어, 모션 벡터들, 각각의 기준 픽처 목록에 대한 대응하는 기준 픽처 인덱스들, 기준 픽처 목록 사용 플래그들, 및 다른 관련 정보가 각각의 CU에 대해 명시적으로 시그널링될 수 있다.
HEVC에서의 인터 코딩 특징들을 넘어서, VVC는 다수의 새로운 그리고 개선된 인터 예측 코딩 기법들을 포함하며, 이들은 다음을 포함한다: 확장된 병합 예측; 모션 벡터 차이를 갖는 병합 모드(Merge mode with motion vector difference, MMVD); 대칭 MVD(SMVD) 시그널링; 아핀 모션 보상된 예측; 서브 블록 기반 시간적 모션 벡터 예측(SbTMVP); 적응적 모션 벡터 레졸루션(adaptive motion vector resolution, AMVR); 모션 필드 저장: 1/16 루마 샘플 MV 저장 및 8x8 모션 필드 압축; CU 레벨 가중치를 갖는 양방향 예측(BCW); 양방향성 광학 흐름(BDOF); 디코더 측 모션 벡터 개선(DMVR); 기하학적 파티셔닝 모드(geometric partitioning mode, GPM); 조합된 인터 및 인트라 예측(combined inter and intra prediction, CIIP).
VVC 병합 모드(예컨대, 정규 또는 디폴트 병합 모드로 지칭됨)에서 확장된 병합 예측을 위해, 병합 후보 목록은 다음의 5개의 타입들의 후보들을 순서대로 포함함으로써 구성될 수 있다: 공간적 이웃 CU들로부터의 공간적 모션 벡터 예측(MVP); 공동위치된 CU들부터의 시간적 MVP; 선입 선출(first-in-first-out, FIFO) 테이블로부터의 이력 기반 MVP; 쌍별 평균 MVP; 및 제로 MV들. 병합 후보 목록의 크기는 시퀀스 파라미터 세트 헤더에서 시그널링될 수 있다. 병합 후보 목록의 최대 허용된 크기는 6일 수 있다(예컨대, 6개의 엔트리들 또는 6개의 후보들). 병합 모드에서 코딩된 각각의 CU에 대해, 최상의 병합 후보(들)의 인덱스는 절단된 단항 이진화(TU)를 사용하여 인코딩된다. 일부 예들에서, VVC는 또한 (예컨대, HEVC에서 행해진 바와 같이) 소정 크기 또는 지역 내의 모든 CU들에 대한 병합 후보 목록들의 병렬 도출을 지원할 수 있다. 5개의 전술한 타입들의 병합 후보들, 및 병합 후보의 각각의 카테고리의 연관된 예시적인 도출 프로세스가 하기에 차례로 설명된다.
도 5는 본 개시내용의 일부 예들에 따른, 블록을 프로세싱하는 데 사용하기 위한 공간적 병합 후보들의 위치들 또는 포지션들을 예시한다. 예를 들어, 도 5는 본 개시내용의 일부 예들에 따른, 프로세싱 블록(500)에서 사용하기 위한 공간적 병합 후보들(또한 "공간적 이웃들"로 지칭됨)의 예시적인 포지션들(A0, A1, B0, B1, B2)을 도시한다. 공간적 이웃들(A0, A1, B0, B1, B2)은 블록(500)과의 그들의 관계에 기초하여 도 5에 나타나 있다. VVC 내의 공간적 병합 후보들의 도출은 HEVC에서와 동일할 수 있으며, 이때 첫 번째 2개의 병합 후보들의 포지션들은 스왑(swap)된다. 일부 예들에서, 4개의 병합 후보들의 최대치가 도 5에 도시된 포지션들(예컨대, A0, A1, B0, B1, B2)에 위치된 5개의 공간적 병합 후보들로부터 선택될 수 있다.
도출의 순서는 B0, A0, B1, A1 및 B2일 수 있다. 예를 들어, 병합 후보 포지션(B2)은, 포지션들(B0, A0, B1, A1)과 연관된 하나 이상의 CU들이 이용가능하지 않거나 또는 인트라 코딩될 때에만 고려될 수 있다. CU가 상이한 슬라이스 또는 타일에 속하기 때문에, 포지션들(B0, A0, B1, 또는 A1)과 연관된 CU는 이용가능하지 않을 수 있다. 일부 양태들에서, 포지션(A1)에서 병합 후보가 추가된 후에, 나머지 병합 후보들의 추가는 리던던시 체크(redundancy check)를 받을 수 있다. 리던던시 체크는, 동일한 모션 정보를 갖는 병합 후보들이 (예컨대, 코딩 효율을 향상시키기 위해) 병합 후보 목록으로부터 배제되도록 수행될 수 있다.
도 6은 본 개시내용의 일부 예들에 따른, 블록을 프로세싱하는 데 사용하기 위한 시간적 병합 후보들에 대한 모션 벡터 스케일링(600)의 양태들을 예시한다. 일부 예들에서, 하나의 병합 후보(예컨대, 시간적 병합 후보)가 병합 후보 목록에 추가되는 시간적 병합 후보 도출이 수행될 수 있다. 시간적 병합 후보 도출은 스케일링된 모션 벡터에 기초하여 수행될 수 있다. 스케일링된 모션 벡터는 공동위치된 기준 픽처에 포함된 공동위치된 CU에 기초하여 도출될 수 있다. 공동위치된 CU의 도출을 위해 사용될 기준 픽처 목록은 슬라이스 헤더에서 명시적으로 시그널링될 수 있다.
예를 들어, 도 6은 현재 픽처(610) 및 공동위치된 픽처(630)를 도시하며, 이들은 현재 기준 픽처(615) 및 공동위치된 기준 픽처(635)와 각각 연관될 수 있다. 도 6은 또한 (예컨대, 현재 픽처(610)와 연관된) 현재 CU(612) 및 (예컨대, 공동위치된 픽처(630)와 연관된) 공동위치된 CU를 도시한다. 일부 예들에서, 시간적 병합 후보 도출에 대한 스케일링된 모션 벡터가 도 6에 예시된 바와 같이 도출되거나 또는 획득될 수 있다. 예를 들어, 도 6은 픽처 순서 카운트(POC) 거리들, tb 및 td를 사용하여 공동위치된 CU(632)의 모션 벡터로부터 스케일링되는 점선(611)을 도시한다. 일부 예들에서, tb는 현재 기준 픽처(615)와 현재 픽처(610) 사이의 POC 차이이고, td는 공동위치된 기준 픽처(635)와 공동위치된 픽처(630) 사이의 POC 차이이다. 시간적 병합 후보의 기준 픽처 인덱스는 0과 동일하게 설정될 수 있다.
도 7은 본 개시내용의 일부 예들에 따른, 블록을 프로세싱하는 데 사용하기 위한 시간적 병합 후보들(700)의 양태들을 예시한다. 일부 예들에서, 도 6과 관련하여 상기에서 논의된 바와 같이 단일 시간적 병합 후보가 선택된 후에, 도 7에 도시된 바와 같이, 시간적 병합 후보에 대한 포지션이 후보 포지션들(C0, C1) 사이에서 선택될 수 있다. 일부 예들에서, 포지션(C0)에서의 CU가 이용가능하지 않거나, 인트라 코딩되거나, 또는 CTU들의 현재 행의 밖에 있는 경우, 후보 포지션(C1)이 사용될 수 있다. 그렇지 않은 경우, 포지션(C0)이 시간적 병합 후보의 도출에 사용된다.
일부 양태들에서, 이력 기반 모션 벡터 예측(history-based motion vector prediction, HMVP) 병합 후보들은, 공간적 MVP 병합 후보들(예컨대, 도 5와 관련하여 전술된 바와 같음) 및 TMVP 병합 후보들(예컨대, 도 6 및 도 7과 관련하여 전술된 바와 같음) 이후에 병합 후보 목록에 추가될 수 있다. HMVP 병합 후보들은 이전에 코딩된 블록의 모션 정보에 기초하여 도출될 수 있다. 예를 들어, 이전에 코딩된 블록의 모션 정보가 (예컨대, 테이블에) 저장되고 현재 CU에 대한 모션 벡터 예측(MVP)으로서 사용될 수 있다. 일부 예들에서, 다수의 HMVP 후보들을 갖는 테이블은 인코딩 및/또는 디코딩 프로세스 동안 유지될 수 있다. 새로운 CTU 행이 조우될 때, 테이블이 리셋된다(비워진다). 비-서브 블록 인터 코딩된 CU가 존재할 때마다, 연관된 모션 정보는 새로운 HMVP 후보로서 테이블의 마지막 엔트리에 추가된다.
일부 예들에서, HMVP 테이블 크기(S)가 6의 값으로 설정될 수 있다(예컨대, 최대 6개의 이력 기반 MVP(HMVP) 후보들이 HMVP 테이블에 추가될 수 있음). 새로운 HMVP 후보를 HMVP 테이블 내에 삽입할 때, 제약된 선입 선출(FIFO) 규칙이 활용될 수 있다. 제약된 FIFO 규칙은, 테이블에 동일한 HMVP가 존재하는지 여부를 결정하기 위해(예컨대, 새롭게 삽입된 HMVP 후보가 테이블에서 기존 HMVP 후보와 동일한지 여부를 결정하기 위해) 적용되는 리던던시 체크를 포함할 수 있다. 새롭게 삽입된 HMVP 후보에 대한 리던던시 체크가, 동일한 HMVP가 이미 테이블에 포함되어 있음을 확인하는 경우, 동일한 HMVP는 테이블로부터 제거될 수 있고, 이후에 모든 HMVP 후보들이 순방향으로 이동된다.
일부 양태들에서, (예컨대, HMVP 목록 또는 HMVP 테이블에 포함된) HMVP 후보들은 후속적으로 병합 후보 목록을 구성하거나 또는 달리 생성하는 데 사용될 수 있다. 예를 들어, 병합 후보 목록을 생성하기 위해, 테이블 내의 가장 최근의 몇몇 HMVP 후보들이 순서대로 체크되고 TMVP 후보 이후에 병합 후보 목록에 삽입될 수 있다. 리던던시 체크가 병합 후보 목록에 추가된 HMVP 후보들 상에 적용될 수 있고, 여기서 리던던시 체크는, HMVP 후보들이 병합 후보 목록에 이전에 추가되었거나 또는 이미 포함되었던 공간적 또는 시간적 병합 후보들 중 임의의 것과 동일한지 또는 같은지 여부를 결정하는 데 사용된다.
일부 예들에서, 병합 후보 목록 및/또는 HMVP 테이블을 생성하는 것과 연관되어 수행된 리던던시 체크 동작들의 수가 감소될 수 있다. 예를 들어, 병합 목록 생성을 위해 사용되는 HMVP 후보들의 수는 (N <= 4) ? M:(8 - N)로서 설정될 수 있으며, 여기서 N은 병합 후보 목록 내의 기존의 후보들의 수를 나타내고, M은 HMVP 테이블 내의 이용가능한 HMVP 후보들의 수를 나타낸다. 다시 말하면, 조건 N <= 4가 참으로 평가되는 경우(예컨대, 병합 후보 목록이 4개의 후보들 또는 더 적은 후보들을 포함함), HMVP 테이블 내의 HMVP 후보들 중 M개 모두가 병합 목록 생성을 위해 사용될 것이다. 조건 N <= 4가 거짓으로 평가되면(예컨대, 병합 후보 목록이 4개 초과의 후보들을 포함함), HMVP 테이블 내의 HMVP 후보들 중 8 - N개가 병합 목록 생성을 위해 사용될 것이다. 일부 예들에서, 일단 이용가능한 병합 후보들의 총 수가 최대로 허용된 병합 후보들의 수에서 1을 뺀 것에 도달하면, HMVP로부터 병합 후보 목록 구성 프로세스가 종료될 수 있다.
쌍별 평균 병합 후보 도출은 기존의 병합 후보 목록 내의 병합 후보들의 사전정의된 쌍들에 기초하여 수행될 수 있다. 예를 들어, 쌍별 평균 병합 후보들은 기존의 병합 후보 목록 내의 병합 후보들의 사전정의된 쌍들을 평균함으로써 생성될 수 있으며, 여기서 사전정의된 쌍들은 {(0, 1), (0, 2), (1, 2), (0, 3), (1, 3), (2, 3)}로서 주어지고, 여기서 숫자들은 병합 후보 목록에 대한 병합 인덱스들을 나타낸다. 일부 경우들에서, 평균된 모션 벡터들은 각각의 기준 목록에 대해 별개로 계산될 수 있다. (예컨대, 사전정의된 쌍의) 모션 벡터들 둘 모두가 동일한 목록에 포함되는 경우, 이들 2개의 모션 벡터들은, 2개의 모션 벡터들이 상이한 기준 픽처들을 가리킬 때에도 평균될 수 있다. 일부 경우들에서, (예컨대, 사전정의된 쌍의) 하나의 모션 벡터만이 이용가능한 경우, 하나의 이용가능한 모션 벡터가 평균된 모션 벡터로서 사용될 수 있다. (예컨대, 사전정의된 쌍의) 어떠한 모션 벡터도 이용가능하지 않은 경우, 목록은 무효한 것으로 식별될 수 있다. 일부 예들에서, 전술된 바와 같이 쌍별 평균 병합 후보들이 추가된 후에 병합 후보 목록이 가득차지 않은 경우, 병합 후보들의 최대 수에 도달될 때까지 하나 이상의 제로 MVP들이 병합 후보 목록의 끝에 삽입될 수 있다.
일부 양태들에서, CU 레벨 가중치를 갖는 양방향 예측(BCW)이 활용될 수 있다. 예를 들어, 2개의 상이한 기준 픽처들로부터 획득된 2개의 예측 신호들을 평균함으로써 양방향 예측 신호가 생성될 수 있다. 양방향 예측 신호가 추가적으로 또는 대안적으로, 2개의 상이한 모션 벡터들을 사용하여 생성될 수 있다. 일부 예들에서, HEVC 표준을 사용하여, 2개의 상이한 기준 신호들로부터 획득된 2개의 예측 신호들을 평균하고/하거나 2개의 상이한 모션 벡터들을 사용함으로써 양방향 예측 신호가 생성될 수 있다.
다른 양태들에서, 양방향 예측 모드는 2개의 예측 신호들의 가중된 평균화를 포함하도록 단순한 평균화를 넘어 확장될 수 있다. 예를 들어, 양방향 예측 모드는 VVC 표준을 사용하여 2개의 예측 신호들의 가중된 평균화를 포함할 수 있다. 일부 예들에서, 양방향 예측 모드는 다음과 같이 2개의 예측 신호들의 가중된 평균화를 포함할 수 있다:
식 (1)
식 (1)에서 주어진 가중된 평균화 양방향 예측은 5개의 가중치들, ∈ {-2,3,4,5,10}을 포함할 수 있다. 각각의 양방향 예측된 CU에 대해, 가중치(w)는 다음 중 하나 이상에 따라 결정될 수 있다. 일례에서, 비-병합 CU에 대해, 모션 벡터 차이(motion vector difference, MVD) 후에 가중치 인덱스가 시그널링될 수 있다. 다른 예에서, 병합 CU에 대해, 가중치 인덱스는 병합 후보 인덱스에 기초하여 이웃 블록들로부터 추론될 수 있다. 일부 경우들에서, BCW는 256개 이상의 루마 샘플들을 갖는 CU들(예컨대, CU 폭과 CU 높이의 곱이 256 이상인 CU들)에만 적용될 수 있다. 일부 경우들에서, 가중치들(w) 중 5개 모두가 저 지연 픽처들에 사용될 수 있다. 비-저 지연 픽처들에 대해, 5개의 가중치들(w) 중 3개만이 사용될 수 있다(예컨대, 3개의 가중치들 ∈ {3,4,5}).
인코더에서, 하기에 더 상세히 설명되는 바와 같이, 인코더 복잡도를 유의하게 증가시키지 않고서 가중치 인덱스를 찾기 위해 빠른 검색 알고리즘들이 적용될 수 있다. 일부 예들에서, JVET-L0646에 적어도 부분적으로 설명된 바와 같이, 가중치 인덱스를 찾기 위해 빠른 검색 알고리즘들이 적용될 수 있다. 예를 들어, 적응적 모션 벡터 레졸루션(adaptive motion vector resolution, AMVR)과 조합될 때, 현재 픽처가 저 지연 픽처인 경우, 동일하지 않은 가중치들은 1-픽셀 및 4-픽셀 모션 벡터 정밀도들에 대해서만 조건부로 체크된다. 아핀 모드와 조합될 때, 아핀 모션 추정(motion estimation, ME)은, 아핀 모드가 현재 최상의 모드로서 선택되는 경우 및 그 경우에만 동일하지 않은 가중치들에 대해 수행될 수 있다. 양방향 예측 모드에서 2개의 기준 픽처들이 동일할 때, 동일하지 않은 가중치들만이 조건부로 체크될 수 있다. 일부 경우들에서, (예컨대, 현재 픽처와 그의 기준 픽처들 사이의 픽처 순서 카운트(POC) 거리, 코딩 양자화 파라미터(QP), 및/또는 시간적 레벨 등에 따라) 소정 조건들이 충족될 때, 동일하지 않은 가중치들이 검색되지 않는다.
일부 예들에서, BCW 가중치 인덱스는 하나의 콘텍스트 코딩된 빈을 사용하여, 이어서 하나 이상의 바이패스 코딩된 빈들을 사용하여 코딩될 수 있다. 예를 들어, 제1 콘텍스트 코딩된 빈은, 동일한 가중치가 사용되는지를 나타내는 데 사용될 수 있다. 동일하지 않은 가중치가 사용되는 경우, 어떤 동일하지 않은 가중치가 사용되는지를 나타내기 위해 바이패스 코딩을 사용하여 추가적인 빈들이 시그널링될 수 있다.
가중된 예측(WP)은, 페이딩(fading)을 이용하여 비디오 콘텐츠를 효율적으로 코딩하기 위해 H.264/AVC 및 HEVC 표준들에 의해 지원되는 코딩 툴이다. WP에 대한 지원이 또한 VVC 표준에 추가되었다. WP는, 기준 픽처 목록들(L0, L1) 각각에서의 각각의 기준 픽처에 대해 하나 이상의 가중화 파라미터들(예컨대, 가중치 및 오프셋)이 시그널링될 수 있게 하는 데 사용될 수 있다. 후속적으로, 모션 보상 동안, 대응하는 기준 픽처(들)의 가중치(들) 및 오프셋(들)이 적용된다.
WP 및 BCW가 상이한 타입들의 비디오 콘텐츠에 활용될 수 있다. 일부 예들에서, CU가 WP를 활용하면, BCW 가중치 인덱스는 시그널링되지 않을 수 있고, w는 4의 값을 갖는 것으로 추론될 수 있다(예컨대, 동일한 가중치가 적용됨). 예를 들어, CU가 WP와 BCW 사이의 상호작용들(예컨대, 이는 VVC 디코더 설계를 복잡하게 만들 수 있음)을 회피하기 위해 WP를 활용할 때, BCW 가중치 인덱스가 시그널링되지 않을 수 있다.
병합 CU의 경우, 가중치 인덱스는, 일반 병합 모드 및 계승된 아핀 병합 모드 둘 모두에서 병합 후보 인덱스에 기초하여 이웃하는 블록들로부터 추론될 수 있다. 구성된 아핀 병합 모드의 경우, 아핀 모션 정보는 최대 3개의 블록들의 모션 정보에 기초하여 구성될 수 있다. 예를 들어, 구성된 아핀 병합 모드를 사용하는 CU에 대한 BCW 인덱스는 제1 제어 포인트 MV의 BCW 인덱스와 동일하게 설정될 수 있다. 일부 예들에서, VVC 표준을 사용하여, 조합된 인터 및 인트라 예측(CIIP) 및 CU 레벨 가중치를 갖는 양방향 예측(BCW)이 CU에 대해 공동으로 적용될 수 없다. CU가 CIIP 모드로 코딩될 때, 현재 CU의 BCW 인덱스는 2의 값으로 설정될 수 있다(예컨대, 동일한 가중치로 설정됨).
도 8은 본 개시내용의 일부 예들에 따른, 양자간 매칭의 양태들을 예시하는 도면(800)이다. 이전에 언급된 바와 같이, 양자간 매칭(BM)은 2개의 초기 모션 벡터들(MV0, MV1)의 쌍을 개선하는 데 사용될 수 있다. 예를 들어, BM은, 블록 매칭 비용을 최소화하는 개선된 모션 벡터들(MV0', MV1')을 각각 도출하기 위해 MV0 및 MV1 주위를 검색함으로써 수행될 수 있다. 블록 매칭 비용은 초기 모션 벡터들(예컨대, MV0, MV1)의 쌍을 사용하여 생성된 2개의 모션 보상된 예측자들 사이의 유사성에 기초하여 계산될 수 있다. 예를 들어, 블록 매칭 비용은 절대 차이의 합(SAD)에 기초할 수 있다. 블록 매칭 비용은 추가적으로 또는 대안적으로, 현재 MV 쌍(예컨대, 현재 테스트된 MV0', MV1')과 초기 MV 쌍(예컨대, MV0, MV1) 사이의 모션 벡터 차이(MVD)들에 기초하는 정규화 항에 기초하거나 또는 이를 포함할 수 있다. 하기에 더 상세히 설명되는 바와 같이, 하나 이상의 제약들이 MVD0(예컨대, MVD0 = MV0' - MV0) 및 MVD1(예컨대, MVD1 = MV1' - MV1)에 기초하여 적용될 수 있다.
이전에 언급된 바와 같이, 다목적 비디오 코딩 표준(VVC)에서, 양자간 매칭 기반 디코더 측 모션 벡터 개선(DMVR)이 양방향 예측 병합 후보의 MV들의 정확도를 증가시키기 위해(예컨대, MV들을 개선하기 위해) 적용될 수 있다. 예를 들어, 도 8의 예에 예시된 바와 같이, 양자간 매칭 기반 DMVR은 양방향 예측 병합 후보(812)의 MV들의 정확도를 증가시키거나 또는 달리 MV들을 개선하기 위해 적용될 수 있다. 양방향 예측 병합 후보(812)는 현재 픽처(810)에 포함될 수 있고, 모션 벡터들(MV0, MV1)의 초기 쌍과 연관될 수 있다. 초기 모션 벡터들(MV0, MV1)은, 양자간 매칭 기반 DMVR을 수행하기 이전에 양방향 예측 병합 후보(812)에 대해 획득되거나, 식별되거나, 또는 달리 결정될 수 있다. 후속적으로, 초기 모션 벡터들(MV0, MV1)은, 하기에 더 상세히 설명되는 바와 같이, 양방향 예측 병합 후보(812)에 대한 개선된 모션 벡터들(MV0', MV1')을 식별하는 데 사용될 수 있다.
도 8의 예에 예시된 바와 같이, 제1 초기 모션 벡터(MV0)는 제1 기준 픽처(830)를 가리킬 수 있다. 제1 기준 픽처(830)는 (예컨대, 현재 픽처(810)에 대한) 역방향 방향과 연관될 수 있고/있거나 기준 픽처 목록(L0)에 포함될 수 있다. 제2 초기 모션 벡터(MV1)는 제2 기준 픽처(820)를 가리킬 수 있다. 제2 기준 픽처(820)는 (예컨대, 현재 픽처(810)에 대한) 순방향 방향과 연관될 수 있고/있거나 기준 픽처 목록(L1)에 포함될 수 있다.
제1 초기 모션 벡터(MV0)는, 제1 기준 픽처(830)에 포함된 블록일 수 있는 제1 예측자(832)를 결정하거나 또는 이를 생성하는 데 사용될 수 있다. 제1 예측자(832)는 또한 제1 후보 블록으로 지칭될 수 있다(예컨대, 제1 예측자(832)는 제1 기준 픽처(830) 및/또는 기준 픽처 목록(L0) 내의 후보 블록임). 제2 초기 모션 벡터(MV1)는, 제2 기준 픽처(820)에 포함된 블록일 수 있는 제2 예측자(822)를 결정하거나 또는 이를 생성하는 데 사용될 수 있다. 제2 예측자(822)는 또한 제2 후보 블록으로 지칭될 수 있다(예컨대, 제2 예측자(822)는 제2 기준 픽처(820) 및/또는 기준 픽처 목록(L1) 내의 후보 블록임).
후속적으로, 제1 개선된 모션 벡터(MV0') 및 제2 개선된 모션 벡터(MV1')를 각각 식별하거나 또는 이를 결정하기 위해 제1 예측자(832) 및 제2 예측자(822) 주위에서 검색이 수행될 수 있다. 예시된 바와 같이, 제1 예측자(832)(예컨대, 제1 기준 픽처(830) 및/또는 기준 픽처 목록(L0) 내의 지역) 및 제2 예측자(822)(예컨대, 제2 기준 픽처(820) 및/또는 기준 픽처 목록(L1) 내의 지역) 각각과 연관된 주변 지역이 검색될 수 있다. 예를 들어, 제1 예측자(832)와 연관된 주변 지역은 하나 이상의 개선된 후보 블록들(834)을 식별하거나 또는 이를 검사하기 위해 검색될 수 있고, 제2 예측자(822)와 연관된 주변 지역은 하나 이상의 개선된 후보 블록들(824)을 식별하거나 또는 이를 검사하기 위해 검색될 수 있다. 검색은 왜곡(예컨대, SAD, SATD, SSE 등) 및/또는 초기 예측자들 중 하나의 예측자(832 또는 822)와 대응하는 개선된 후보 블록(834 또는 824) 사이에서 계산된 정규화 항 중 하나 이상에 기초하여 수행될 수 있다. 일부 예들에서, 왜곡 및/또는 정규화는 초기 포인트로부터 멀리 이동된 거리(예컨대, 초기 예측자(832 또는 822)와 연관된 초기 포인트와 개선된 후보 블록(834 또는 824)과 연관된 검색된 포인트 각각 사이의 거리)에 기초하여 계산될 수 있다.
검색이 초기 예측자들(832, 822) 각각과 연관된 초기 포인트 주위에서 이동함에 따라, 새로운 개선된 후보 블록(예컨대, 개선된 후보 블록들(834, 824))이 획득된다. 각각의 새로운 개선된 후보 블록은 새로운 비용(예컨대, 계산된 SAD 값, 모션 벡터 차이들 중 하나(MVD0 또는 MVD1) 등)과 연관될 수 있다. 검색은 검색 범위 및/또는 검색 윈도우와 연관될 수 있다. 초기 예측자들(832, 822)에 대한 검색 범위 및/또는 검색 윈도우에 포함된 각각의 후보 블록을 검색한(예컨대, 그리고 각각의 검색된 후보 블록에 대한 대응하는 비용을 결정한) 후에, 최소 결정된 비용을 갖는 후보 블록이 식별되고, 개선된 모션 벡터들(MV0', MV1')을 생성하는 데 사용될 수 있다.
일부 예들에서, 양자간 매칭(BM) 기반 DMVR이 기준 픽처 목록(L0) 및 목록(L1) 내의 2개의 후보 블록들 사이에서 SAD를 계산함으로써 수행될 수 있다. 도 8에 예시된 바와 같이, 초기 MV 주위의(예컨대, 각각 예측자들(832, 822) 주위의) 각각의 MV'의 후보에 기초한 블록들(예컨대, 블록들(834, 824)) 사이의 SAD가 계산될 수 있다. 가장 낮은 SAD를 갖는 MV'의 후보가 개선된 MV로서 선택되고, 양방향 예측된 신호를 생성하는 데 사용될 수 있다. 일부 예들에서, 초기 MV들의 SAD는 SAD 값의 1/4만큼 차감되어 정규화 항으로서 역할을 한다. 일부 경우들에서, 2개의 기준 픽처들로부터 현재 픽처까지의 시간적 거리들(예컨대, 픽처 순서 카운트(POC) 차이)은 동일할 수 있고, MVD0 및 MVD1은 동일한 크기를 갖지만 반대 부호를 가질 수 있다(예컨대, MVD0 = -MVD1).
일부 경우들에서, 양자간 매칭 기반 DMVR은 초기 MV로부터의 2개의 정수 루마 샘플들의 개선 검색 범위를 사용하여 수행될 수 있다. 예를 들어, 도 8의 맥락에서, 양자간 매칭 기반 DMVR은 초기 모션 벡터들(MV0, MV1)로부터의(예컨대, 초기 예측자들(832, 822) 각각으로부터의) 2개의 정수 루마 샘플들의 개선 검색 범위를 사용하여 수행될 수 있다. 검색은 정수 샘플 오프셋 검색 스테이지 및 분수 샘플 개선 스테이지를 포함할 수 있다.
일부 경우들에서, 정수 샘플 오프셋 검색을 위해 25-포인트 전체 검색(full search)이 적용될 수 있다. 25-포인트 전체 개선 검색은, 먼저 초기 MV 쌍(예컨대, MV0 및 MV1의 초기 MV 쌍 및/또는 초기 예측자들(832, 822))의 SAD를 계산함으로써 수행될 수 있다. 초기 MV 쌍의 SAD가 임계치보다 더 작은 경우, DMVR의 정수 샘플 스테이지가 종료될 수 있다. 초기 MV 쌍의 SAD가 임계치 이상인 경우, 나머지 24개의 포인트들의 SAD들이 계산되고 래스터 스캐닝 순서로 체크될 수 있다. 이어서, 가장 작은 SAD를 갖는 포인트가 정수 샘플 오프셋 검색 스테이지의 출력으로서 선택될 수 있다.
상기 언급된 바와 같이, 정수 샘플 오프셋 검색 이후에, 분수 샘플 개선이 이어질 수 있다. 일부 경우들에서, (예컨대, SAD 비교와 함께 추가적인 검색(들)을 수행하기보다는) 분수 샘플 개선을 도출하기 위해 하나 이상의 파라미터 오차 표면 방정식들을 사용함으로써 계산 복잡도가 감소될 수 있다. 분수 샘플 개선은 정수 샘플 오프셋 검색 스테이지의 출력에 기초하여 조건부로 인보크(invok)될 수 있다. 예를 들어, 제1 반복 또는 제2 반복 검색에서 가장 작은 SAD를 갖는 중심으로 정수 샘플 오프셋 검색 스테이지가 종료될 때, 그에 응답하여 분수 샘플 개선이 추가로 적용될 수 있다.
상기 언급된 바와 같이, 파라미터 오차 표면이 분수 샘플 개선을 도출하는 데 사용될 수 있다. 예를 들어, 파라미터 오차 표면 기반 서브 픽셀 오프셋들 추정에서, 중심 포지션 비용 및 (예컨대, 중심에 대한) 4개의 이웃 포지션들에서의 비용들은 다음의 형태의 2D 포물선 오차 표면 식에 피팅하는데 사용된다:
식 (2)
여기서, (x min , y min )은 가장 적은 비용을 갖는 분수 포지션에 대응하고, C는 최소 비용 값에 대응한다. 5개의 검색 포인트들(예컨대, 중심 포지션 및 4개의 이웃하는 포지션들)의 비용 값을 사용하여 식 (2)를 해결함으로써, (x min , y min )가 다음과 같이 컴퓨팅될 수 있다:
식 (3)
식 (4)
x min y min 의 값들은 -8 과 8 사이이도록 자동으로 제약될 수 있고(예컨대, 모든 비용 값들은 양(positive)이고, 최소 값은 E(0,0)임), 이는 VVC에서 1/16 픽셀 MV 정확도를 갖는 반 픽셀(half-pel) 오프셋에 대응할 수 있다. 컴퓨팅된 분수(x min , y min ) 값들은 서브 픽셀 정확한 개선 델타 MV를 획득하거나 또는 결정하기 위해 (예컨대, 전술된 정수 샘플 오프셋 검색으로부터의) 정수 거리 개선 MV에 추가될 수 있다.
VVC에서, 모션 벡터 레졸루션은 1/16 루마 샘플들일 수 있다. 일부 예들에서, 분수 포지션들에서의 샘플들은 8-탭 보간 필터를 사용하여 보간된다. DMVR에서, 개선 검색 포인트들은 정수 샘플 오프셋을 갖는 초기 분수 픽셀 MV를 둘러쌀 수 있고, DMVR 검색 프로세스는 분수 포지션들의 샘플들을 보간하는 것을 포함할 수 있다. 일부 예들에서, 이중 선형 보간 필터가 DMVR 검색 프로세스에 대한 분수 샘플들을 생성하는 데 사용될 수 있다. DMVR 검색 프로세스에 대한 분수 샘플들을 생성하기 위한 이중 선형 보간 필터의 사용은 계산 복잡도를 감소시킬 수 있다. 일부 경우들에서, 이중 선형 보간 필터가 2-샘플 검색 범위와 함께 활용될 때, DMVR 검색 프로세스는 (예컨대, 기존의 모션 보상 프로세스들에 비해) 추가적인 기준 샘플들에 액세스할 필요가 없을 수 있다.
DMVR 검색 프로세스를 사용하여 개선된 MV가 결정된 후에, 8-탭 보간 필터가 적용되어 최종 예측을 생성할 수 있다. 일부 예들에서, (예컨대, 전술된 바와 같이) 원래의 MV에 기초하여 보간 프로세스를 수행하기 위해 추가적인 기준 샘플들이 필요하지 않을 수 있다. 일부 예들에서, 추가적인 샘플들이 개선된 MV에 기초하여 보간을 수행하는 데 활용될 수 있다. 추가적인 기준 샘플들에 액세스(예컨대, 기존의 모션 보상 프로세스들에 대해 추가적인 기준 샘플들에 액세스)하기보다는, 기존의 또는 이용가능한 기준 샘플들은 개선된 MV에 기초하여 보간을 수행하기 위한 추가적인 기준 샘플들을 생성하도록 패딩될 수 있다. 일부 경우들에서, CU의 폭 및/또는 높이가 16개의 루마 샘플들보다 더 클 때, DMVR 프로세스는, 하기에 더 상세히 설명되는 바와 같이, CU를, 16개의 루마 샘플들과 동일한 폭 및/또는 높이를 각각 갖는 서브 블록들로 분할하는 것을 추가로 포함할 수 있다.
VVC에서, DMVR은 다음의 모드들 및 특징들 중 하나 이상으로 코딩되는 CU들에 대해 적용될 수 있다. 하나의 예시적인 예에서, DMVR이 적용될 수 있는 CU들과 연관된 모드들 또는 특징들은 또한 "DMVR 조건들"로 지칭될 수 있다. 일부 예들에서, DMVR 조건들은 다음의 모드들 및/또는 특징들 중 하나 이상으로 코딩되는 CU들을 포함할 수 있지만, 이로 제한되지 않는다: 양방향 예측 MV를 이용한 CU 레벨 병합 모드; (예컨대, 현재 픽처에 대한) 과거의 하나의 기준 픽처 및 (예컨대, 현재 픽처에 대한) 미래의 다른 기준 픽처; 2개의 기준 픽처들에서 현재 픽처까지의 거리(예컨대, POC 차이)는 동일함; 기준 픽처들 둘 모두는 단기 기준 픽처들임; 64개 초과의 루마 샘플들을 포함하는 CU; CU 높이 및 CU 폭 둘 모두는 8개 이상의 루마 샘플들임; BCW 가중치 인덱스는 동일한 가중치를 나타냄; 가중된 예측(WP)이 현재 블록에 대해 인에이블되지 않음; 조합된 인터 및 인트라 예측(CIIP) 모드가 현재 블록에 대해 활용되지 않음; 등.
도 9는 본 개시내용의 일부 예들에 따른, 양방향성 광학 흐름(BDOF)을 수행하는 데 활용될 수 있는 예시적인 확장된 CU 영역(900)을 예시한다. 예를 들어, BDOF는 4x4 서브 블록 레벨(예컨대, 4x4 서브 블록(910))에서 CU 내의 루마 샘플들의 양방향 예측 신호를 개선하는 데 사용될 수 있다. 일부 경우들에서, BDOF는 다른 크기의 서브 블록들(예컨대, 8×8 서브 블록들, 4×8 서브 블록들, 8×4 서브 블록들, 16×16 서브 블록들, 및/또는 다른 크기의 서브 블록들)에 대해 사용될 수 있다. BDOF 모델은, 객체의 모션이 매끄럽다고 가정하는 광학 흐름에 기초할 수 있다. 도 9에 도시된 바와 같이, BDOF 모드는 확장된 CU 영역(900)의 경계들(예컨대, 확장된 행들(970) 및 확장된 열들(980)) 주위의 하나의 확장된 행 및 열을 활용할 수 있다.
각각의 4×4 서브 블록(예컨대, 4x4 서브 블록(910))에 대해, L0 및 L1 예측 샘플들 사이의 차이를 최소화하는 것에 기초하여 모션 개선(v x , v y )이 계산될 수 있다. 이어서, 모션 개선(v x , v y )은 4x4 서브 블록(예컨대, 4x4 서브 블록(910))에서 양방향 예측된 샘플 값들을 조정하는데 사용될 수 있다. 하나의 예시적인 예에서, BDOF는 후술되는 바와 같이 수행될 수 있다.
먼저, 2개의 예측 신호들의 수평 및 수직 그래디언트들(각각 , 이때 k = 0,1임)이 2개의 이웃하는 샘플들 사이의 차이를 직접 계산함으로써 컴퓨팅될 수 있다:
식 (5)
식 (6)
여기서, 는 목록 k(k = 0,1임) 내의 예측 신호의 좌표 에서의 샘플 값을 나타낸다.shift1은, shift1이 6과 동일하게 설정될 수 있는 것과 같이, 루마 비트 깊이(예컨대, bitDepth)에 기초하여 계산될 수 있다.
그래디언트들(S1, S2, S3, S5, S6)의 자동 상관 및 교차 상관은 후속적으로, 다음과 같이 계산될 수 있다:
식 (7)
식 (8)
식 (9)
식 (10)
식 (11)
여기서,
식 (12)
식 (13)
식 (14)
여기서, Ω는 4×4 서브 블록(910)(또는 다른 크기의 서브 블록) 주위의 6×6 윈도우(또는 다른 크기의 윈도우)일 수 있다. shift2의 값은 4(또는 다른 적합한 값)와 동일하게 설정될 수 있고, shift3의 값은 1(또는 다른 적합한 값)과 동일하게 설정될 수 있다.
이어서, 모션 개선(v x , v y )은 다음을 사용하는 교차 상관 및 자동 상관 항들을 사용하여 도출될 수 있다:
식 (15)
식 (16)
여기서, =1≪4이고 는 바닥 함수이다.
모션 개선 및 그래디언트들에 기초하여, 다음의 조정이 4×4 서브 블록(910)(또는 다른 크기의 서브 블록)에서 각각의 샘플에 대해 계산될 수 있다:
식 (17)
마지막으로, 도 9에 예시된 확장된 CU 영역(900)의 BDOF 샘플들은 다음과 같이 양방향 예측 샘플들을 조정함으로써 계산될 수 있다:
식 (18)
여기서, 는 Max(3, 15 - BitDepth)와 동일하게 설정될 수 있고, 변수 는 (1 << (shift5 - 1))와 동일하게 설정될 수 있다.
일부 경우들에서, 상기 값들은, (예컨대, 전술된) BDOF 프로세스에서의 승수들이 15 비트들을 초과하지 않고, (예컨대, 전술된) BDOF 프로세스에서의 중간 파라미터들의 최대 비트 폭이 32 비트들 내에서 유지되도록 선택될 수 있다.
일부 예들에서, 그래디언트 값들은 목록 k(여기서, k = 0,1)에서 하나 이상의 예측 샘플들 을 생성하는 것에 적어도 부분적으로 기초하여 도출될 수 있고, 여기서 하나 이상의 예측 샘플들은 현재 CU 경계들 밖에 있다. 도 9에 도시되고 상기에서 언급된 바와 같이, BDOF는 확장된 CU 영역(900)(예컨대, 확장된 행(970) 및 확장된 열(980))의 경계들 주위에서 하나의 확장된 행 및 하나의 확장된 열을 활용할 수 있다. 일부 경우들에서, 경계 외 예측 샘플들을 생성하는 계산 복잡도는, 보간 없이 부근의 정수 포지션들에서 직접 기준 샘플들을 취함으로써 확장된 지역에서 예측 샘플들(예컨대, 확장된 CU 영역(900) 외연부를 따라 확장된 행(970) 및 확장된 열(980)에 포함된 음영처리되지 않은 블록들)을 생성하는 것에 적어도 부분적으로 기초하여 제어될 수 있다. 예를 들어, 근처의 기준 샘플들에서 기준 샘플들의 좌표들 상에 floor() 연산이 사용될 수 있다. 후속적으로, 8-탭 모션 보상 보간 필터가 확장된 CU 영역(900)의 음영처리된 박스들(예컨대, 확장된 행(970) 및 확장된 열(980)의 확장된 지역 예측 샘플들의 음영처리되지 않은 외연부 내부의 박스들) 내에서 예측 샘플들을 생성하는 데 사용될 수 있다. 일부 예들에서, 확장된 샘플 값들은 그래디언트 계산에서만 사용될 수 있다. BDOF 프로세스의 나머지 단계들은, 필요에 따라, 그들의 가장 가까운 이웃들에 기초하여 확장된 CU 영역(900)의 경계들 밖에서 임의의 샘플 및 그래디언트 값들을 패딩(예컨대, 반복)함으로써 수행될 수 있다.
일부 예들에서, BDOF는 상기에서 언급된 바와 같이, 4×4 서브 블록 레벨(또는 다른 서브 블록 레벨들)에서 CU의 양방향 예측 신호를 개선하는 데 사용될 수 있다. 하나의 예시적인 예에서, CU가 다음의 조건들 중 일부 또는 전부를 만족하는 경우, BDOF가 CU에 적용될 수 있다: CU는 "진정한(true)" 양방향 예측 모드를 사용하여 코딩됨(예컨대, 2개의 기준 픽처들 중 하나가 디스플레이 순서에서 현재 픽처 이전에 위치되고, 다른 기준 픽처가 디스플레이 순서에서 현재 픽처 후에 위치됨); CU는 아핀 모드 또는 SbTMVP 병합 모드를 사용하여 코딩되지 않음; CU는 64개 초과의 루마 샘플들을 가짐; CU 높이 및 CU 폭 둘 모두는 8개 이상의 루마 샘플들임; BCW 가중치 인덱스는 동일한 가중치를 나타냄; WP는 현재 CU에 대해 인에이블되지 않음; 및/또는 CIIP 모드는 현재 CU에 사용되지 않음; 등.
일부 양태들에서, 다중 패스 디코더 측 모션 개선이 사용될 수 있다. 예를 들어, JVET-V 회의에서, VVC를 넘어서는 압축 기법들을 연구하기 위해 강화된 압축 모델(ECM)이 확립되었다(https://vcgit.hhi.fraunhofer.de/ecm/VVCSoftware_VTM/-/tree/ECM). ECM에서, "multi-pass decoder side motion refinement" [JVET_U0100]는 VVC에서 DMVR을 대체하기 위해 채택된다. 다중 패스 디코더 측 모션 개선은 다수의 패스들을 포함할 수 있다. 일부 예들에서, 다중 패스 디코더 측 모션 개선은 양자간 매칭(BM)을 다수회 적용함으로써 수행될 수 있다. 예를 들어, (예컨대, 다중 패스 디코더 측 모션 개선의) 각각의 패스에서, BM은 상이한 블록 크기에 적용될 수 있다.
제1 패스에서, 양자간 매칭(BM)이 (예컨대, VVC에서의 DMVR의 것과 유사한 그리고/또는 전술된 바와 같은) 전체 코딩 블록 또는 코딩 유닛에 적용될 수 있다. 예를 들어, 제1 패스 BM은 64x64, 64x32, 32x32, 32x16, 16x16 등, 및 이들의 조합들의 크기를 갖는 코딩 블록 또는 CU에 적용될 수 있다.
제2 패스에서, BM이 다시 적용될 수 있는데, 이번에는 제1 패스에서 BM이 수행되었던 전체 코딩 블록 내에 포함되는(또는 그로부터 생성될 수 있는) 각각의 16x16 서브 블록에 대해 적용된다. 예를 들어, 제1 패스 BM이 64x64 블록에 적용된 경우, 64x64 블록은 4x4 그리드의 서브 블록들로 분할될 수 있으며, 여기서 각각의 서브 블록은 16x16이다. 제2 패스에서, BM은 상기 예에서 16개의 서브 블록들 각각에 적용될 수 있다. 다른 예에서, 제1 패스 BM이 32x32 블록에 적용된 경우, 32x32 블록은, 크기가 각각 16x16인 2x2 그리드의 서브 블록들로 분할될 수 있다. 이러한 예에서, 제2 패스는 32x32 블록의 4개의 16x16 서브 블록들 각각에 BM을 적용함으로써 수행될 수 있다. 제1 패스 BM으로부터 생성되거나 또는 획득된 개선된 MV들은, 제2 패스 BM이 수행되는 각각의 16x16 서브 블록에 대한 초기 MV들로서 활용될 수 있다.
제3 패스에서, (예컨대, 제1 BM 패스로부터) 원래의 블록에 기초하여 그리고/또는 (예컨대, 제2 BM 패스로부터) 16x16 서브 블록들에 기초하여, 복수의 8x8 서브 블록들이 획득되거나 또는 생성될 수 있다. 일부 예들에서, 제2 BM 패스로부터의 각각의 16x16 서브 블록은 8x8 크기를 갖는 2x2 그리드의 서브 블록들로 분할될 수 있다. 제3 BM 패스에서, 양방향성 광학 흐름(BDOF)을 적용함으로써 각각의 8x8 서브 블록과 연관된 하나 이상의 MV들이 추가로 개선될 수 있다.
하나의 예시적인 예에서, 다중 패스 디코더 측 모션 개선이 64x64 블록 또는 CU에 대해 수행될 수 있다. 제1 패스에서, BM이 64x64 블록에 대해 적용되어 한 쌍의 개선된 MV들을 생성하거나 또는 획득할 수 있다. 제2 패스에서, 64x64 블록은 16개의 서브 블록들로 분할될 수 있으며, 여기서 각각의 서브 블록은 크기가 16x16이다. 제2 패스에서, BM이 다시 적용될 수 있는데, 이번에는 16개의 서브 블록들 각각에, 그리고 제1 패스로부터의 개선된 MV들을 초기 MV들로서 사용하여 적용된다. 제3 패스에서, 각각의 16x16 서브 블록은 (예컨대, 원래의 64x64 블록에 대해 총 16 * 4 = 64개의 8x8 서브 블록들에 대해) 8x8 크기를 갖는 4개의 서브 블록들로 분할될 수 있다. 제3 패스에서, 이전에 설명되었던 바와 같이, BDOF를 적용함으로써 각각의 8x8 서브 블록과 연관된 하나 이상의 MV들이 개선될 수 있다.
다중 패스 디코더 측 모션 개선에 포함되거나 또는 이를 수행하기 위해 활용될 수 있는 제1 패스, 제2 패스, 및 제3 패스의 예들이 하기에 차례로 설명된다.
일부 예들에서, 제1 패스는 블록 기반 양자간 매칭(BM) 모션 벡터(MV) 개선을 수행하는 것을 포함할 수 있다. 예를 들어, 제1 패스에서, 코딩 블록에 BM을 적용함으로써 개선된 MV가 도출된다. 디코더 측 모션 벡터 개선(DMVR)과 유사하게, BM과 연관된 양방향 예측 동작에서, 개선된 MV가 기준 픽처 목록들(L0, L1) 내의 2개의 초기 MV들(예컨대, MV0, MV1) 주위에서 검색된다. 개선된 MV들(예컨대, MV0pass1, MV1pass1)은 L0 및 L1 내의 2개의 기준 블록들 사이의 최소 양자간 매칭 비용에 기초하여 초기 MV들(예컨대, 각각 MV0, MV1)의 쌍 주위에서 도출된다.
제1 패스 BM은 정수 샘플 정밀도(intDeltaMV)를 도출하기 위해 로컬 검색을 수행하는 것을 포함할 수 있다. 로컬 검색은, 수평 방향에서 검색 범위 [-sHor, sHor]를 통해 루프를 이루도록 그리고 수직 방향에서 검색 범위 [-sVer, sVer]를 통해 루프를 이루도록 3×3 정사각형 검색 패턴(또는 다른 검색 패턴)을 적용함으로써 수행될 수 있다. sHorsVer의 값들은 블록 치수에 의해 결정될 수 있다. 일부 경우들에서, sHor 및/또는 sVer의 최대 값은 8(또는 다른 적합한 값)일 수 있다.
양자간 매칭 비용은 다음과 같이 계산될 수 있다:
bilCost = mvDistanceCost + sadCost 식 (19)
블록 크기 cbW * cbH가 64(또는 다른 블록 크기 임계치) 초과일 때, 평균 제거된 절대 차이의 값(mean-removed sum of absolute difference, MRSAD) 비용 함수가 적용되어 기준 블록들 사이의 왜곡의 DC 효과를 제거할 수 있다. 3×3 검색 패턴(또는 다른 검색 패턴)의 중심 포인트에서의 bilCost가 최소 비용을 가질 때, intDeltaMV 로컬 검색이 종료된다. 그렇지 않은 경우, 현재 최소 비용 검색 포인트가 3×3 검색 패턴(또는 다른 검색 패턴)의 새로운 중심 포인트가 되고, 로컬 검색이 계속되어, 검색 범위(예컨대, 수평 방향에서의 [-sHor, sHor] 및 수직 방향에서의 [-sVer, sVer])의 끝에 도달할 때까지 최소 비용을 검색한다.
일부 경우들에서, 기존의 분수 샘플 개선이 추가로 적용되어 최종 deltaMV를 도출할 수 있다. 이어서, 제1 패스 후의 개선된 MV들은 다음과 같이 도출될 수 있다:
MV0pass1 = MV0 + deltaMV 식 (20)
MV1pass1 = MV1 - deltaMV 식 (21)
일부 예들에서, 제2 패스는 서브 블록 기반 양자간 매칭(BM) 모션 벡터(MV) 개선을 수행하는 것을 포함할 수 있다. 예를 들어, 제2 패스에서, BM을 16×16(또는 다른 크기) 그리드 서브 블록에 적용함으로써 개선된 MV가 도출될 수 있다. 각각의 서브 블록에 대해, 기준 픽처 목록 L0 및 L1에서, 제1 패스에서 획득된 개선된 MV가 2개의 MV들(예컨대, MV0pass1, MV1pass1) 주위에서 검색된다.
검색에 기초하여, 2개의 개선된 MV들, 즉 MV0pass2(sbIdx2) 및 MV1pass2(sbIdx2)이 L0 및 L1 내의 2개의 기준 서브 블록들 사이의 최소 양자간 매칭 비용에 기초하여 도출될 수 있다. 여기서, sbIdx2 = 0, …, N-1은 (예컨대, 제2 패스 BM이 제1 패스 BM에서 사용된 원래의 블록으로부터 생성된 각각의 서브 블록에 적용될 수 있기 때문에) 서브 블록에 대한 인덱스이다. 예를 들어, 이전에 설명된 바와 같이, 치수 16x16을 각각 갖는 총 16개의 서브 블록들이 크기 64x64를 갖는 입력 블록에 대해 생성되거나 또는 획득될 수 있다. 이러한 예에서, sbIdx2는 16개의 서브 블록들의 개별 서브 블록들에 대한 인덱스일 수 있다.
각각의 서브 블록에 대해, 제2 패스 BM은 정수 샘플 정밀도(intDeltaMV)를 도출하기 위해 전체 검색을 수행하는 것을 포함할 수 있다. 전체 검색은 수평 방향의 검색 범위 [-sHor, sHor] 및 수직 방향의 검색 범위 [- sVer, sVer]를 가질 수 있다. sHorsVer의 값들은 블록 치수에 의해 결정될 수 있고, sHorsVer의 최대 값은 8(또는 다른 적합한 값)일 수 있다.
도 10은 본 개시내용의 일부 예들에 따른, 코딩 유닛(CU)(1000) 내의 예시적인 검색 지역 영역들을 예시하는 도면이다. 예를 들어, 도 10은 코딩 유닛(1000) 내의 4개의 상이한 검색 영역들(예컨대, 제1 검색 영역(1020), 제2 검색 영역(1030), 제3 검색 영역(1040), 제4 검색 영역(1050) 등)을 도시한다. 일부 경우들에서, 양자간 매칭 비용은 다음과 같이 2개의 기준 서브 블록들 사이에서 SATD 비용(또는 다른 비용 함수)에 비용 팩터를 적용함으로써 계산될 수 있다:
bilCost = satdCost * costFactor 식 (22)
검색 지역 (2*sHor + 1) * (2*sVer + 1)은 도 10에 도시된 바와 같이 5개의 다이아몬드 형상의 검색 영역들로 분할된다. 다른 양태들에서, 다른 검색 영역들이 사용될 수 있다. 각각의 검색 영역에는 costFactor 값이 할당되며, 이는 각각의 검색 포인트와 시작 MV 사이의 거리(intDeltaMV)에 의해 결정된다. 각각의 다이아몬드 형상의 검색 영역(예컨대, 검색 영역들(1020, 1030, 1040, 1050))은 검색 지역의 중심에서부터 시작하여 일정 순서로 프로세싱될 수 있다. 각각의 검색 영역 내에서, 검색 포인트들은 영역의 상단 좌측에서 시작하여 하단 우측 코너로 가는 래스터 스캔 순서로 프로세싱된다.
일부 예들에서, 제1 검색 영역(1020)이 먼저 검색되고, 이어서 제2 검색 영역(1030)이, 이어서 제3 검색 영역(1040)이, 이어서 제4 검색 영역(1050)이 이어진다. 현재 검색 영역 내에서 최소 bilCostsbW*sbH와 동일한 임계치 미만일 때, 정수 픽셀 전체 검색이 종료되고; 그렇지 않은 경우, 모든 검색 포인트들이 조사될 때까지 정수 픽셀 전체 검색이 다음 검색 영역으로 계속된다.
일부 경우들에서, VVC DMVR 분수 샘플 개선이 추가로 적용되어 최종 deltaMV(sbIdx2)를 도출할 수 있다. 이어서, 제2 패스에서 개선된 MV들은 다음과 같이 도출될 수 있다:
MV0pass2(sbIdx2) = MV0pass1 + deltaMV(sbIdx2) 식 (23)
MV1pass2(sbIdx2) = MV1pass1 - deltaMV(sbIdx2) 식 (24)
일부 예들에서, 제3 패스는 서브 블록 기반 양방향성 광학 흐름(BDOF) 모션 벡터(MV) 개선을 수행하는 것을 포함할 수 있다. 예를 들어, 제3 패스에서, BDOF를 8×8(또는 다른 크기) 그리드 서브 블록에 적용함으로써 개선된 MV가 도출될 수 있다. 각각의 8×8 서브 블록에 대해, 제2 패스의 페어런트(parent) 서브 블록의 개선된 MV로부터 시작하여, 클립핑(clipping) 없이, 스케일링된 VxVy을 도출하기 위해 BDOF 개선이 적용될 수 있다. 예를 들어, 제2 패스의 각각의 페어런트 서브 블록은 크기가 16x16일 수 있다(예컨대, 제2 패스의 각각의 페어런트 서브 블록은 제3 패스에서 사용된 4개의 8x8 서브 블록들과 연관될 수 있음). 제3 패스 BDOF 개선은, 개선된 MV들, 즉 MV0pass2(sbIdx2) 및 MV1pass2(sbIdx2)에 기초하여 적용되거나 또는 수행될 수 있고, 여기서 sbIdx2는 제2 패스의 페어런트 서브 블록들 중 하나의 서브 블록의 인덱스이다.
후속적으로, 도출된 bioMv(Vx, Vy)는 1/16 샘플 정밀도로 반올림되고, -32 내지 32(또는 다른 샘플 정밀도 및/또는 다른 클립핑 값들 또는 범위들)에서 클립핑될 수 있다.
이어서, 제3 패스에서 개선된 MV들(MV0pass3(sbIdx3) 및 MV1pass3(sbIdx3))은 다음과 같이 도출될 수 있다:
MV0pass3(sbIdx3) = MV0pass2(sbIdx2) + bioMv 식 (25)
MV1pass3(sbIdx3) = MV0pass2(sbIdx2) - bioMv 식 (26)
여기서, sbIdx3은 제3 패스에서 활용된 8x8 서브 블록들 중 특정 서브 블록에 대한 인덱스이고, sbIdx2는 제2 패스에서 활용된 16x16 서브 블록들 중 특정 서브 블록에 대한 인덱스이다. 일부 예들에서, sbIdx3은, 각각의 8x8 서브 블록이 그의 sbIdx3 인덱스에 의해 고유하게 식별가능하도록 하는 범위를 가질 수 있다. 예를 들어, 64x64 블록은 64개의 8x8 서브 블록들로 분할될 수 있고, sbIdx3은 상이한 8x8 서브 블록들에 대한 64개의 고유 인덱스 값들을 포함할 수 있다. 일부 예들에서, sbIdx3은, 각각의 8x8 서브 블록이 대응하는 16x16 페어런트 블록의 sbIdx2 값과 조합하여 그의 sbIdx3 값에 의해 고유하게 식별가능하도록 하는 범위를 가질 수 있다. 예를 들어, 64x64 블록은 16x16 크기를 각각 갖는 총 16개의 서브 블록들로 분할될 수 있고, 각각의 16x16 서브 블록은 8x8 크기를 각각 갖는 4개의 서브 블록들로 추가로 분할될 수 있다. 이러한 예에서, sbIdx2는 16개의 고유 값들 중 하나의 값을 취할 수 있고, sbIdx3은 4개의 고유 값들 중 하나의 값을 취할 수 있어서, 64개의 8x8 서브 블록들 각각이 대응하는 sbIdx2sbIdx3 인덱스들에 기초하여 식별가능하도록 한다.
상기에서 언급된 검색 전략들을 향상시키기 위한 양태들이 본 명세서에 설명된다. 본 명세서에 설명된 양태들은 하나 이상의 코딩(예컨대, 인코딩, 디코딩, 또는 조합된 인코딩-디코딩) 기법들, 예컨대 현재 픽처의 블록이 모션 벡터들을 사용하여 하나 이상의 기준 픽처들(예컨대, 2개의 각자의 기준 픽처들로부터의 2개의 기준 블록들)로부터 예측되는 하나 이상의 코딩 기법들에 적용될 수 있으며, 여기서 모션 벡터들은 개선 기법들에 의해 개선된다. 향상들은 전술된 바와 같은 임의의 적합한 비디오 코딩 표준 또는 포맷(예컨대, HEVC, VVC, AV1)에, 2개의 각자의 기준 픽처들로부터의 기준 블록들에 기초하여 블록에 대한 코딩을 적용하는 다른 기존의 표준들 또는 포맷들에, 그리고 그러한 기법들을 사용하는 임의의 미래의 표준들에 적용될 수 있다. 대체적으로, 2개의 기준 픽처들로부터의 2개의 기준 블록들이 사용될 때, 그러한 기법들은 대체적으로 양방향 예측된 병합 모드들 및 양자간 매칭 기법들로 지칭된다.
전술된 정확한 검색 전략들을 따르기보다는, 본 명세서에 설명된 다양한 양태들은 상이한 코딩된 블록들이 양자간 매칭을 위해 상이한 검색 전략들(또는 방법들)을 가질 수 있게 할 수 있다. 블록에 대한 선택된 검색 전략은 비트스트림에서 코딩되는 하나 이상의 신택스 엘리먼트(들)에서 시그널링될 수 있다. 검색 전략은, 양자간 매칭 검색 프로세스 동안 부과되는 MVD0와 MVD1 사이의 제약/관계를 포함하고, 또한 검색 패턴, 검색 범위 또는 최대 검색 라운드들, 비용 기준 등의 소정 조합과 연관될 수 있다. 일부 경우들에서, 제약은 또한 제한으로 지칭될 수 있다.
본 명세서에 설명된 시스템들 및 기법들은 디코더 측 모션 벡터 개선(DMVR)에 대한 적응적 양자간 매칭(BM)을 수행하는 데 활용될 수 있다. 예를 들어, 시스템들 및 기법들은 상이한 코딩된 블록들에 대한 상이한 검색 전략들 및/또는 검색 방법들을 적용함으로써 DMVR에 대한 적응적 양자간 매칭을 수행할 수 있다. 일부 양태들에서, 블록에 대한 선택된 검색 전략은 비트스트림에서 코딩되는 하나 이상의 신택스 엘리먼트들을 사용하여 시그널링될 수 있다. 일부 예들에서, 블록에 대한 선택된 검색 전략은 명시적으로, 암시적으로, 또는 이들의 조합을 사용하여 시그널링될 수 있다. 하기에 더 상세히 설명되는 바와 같이, (예컨대, 주어진 블록에 대해 DMVR에 대한 적응적 BM을 수행하는 데 사용될) 선택된 검색 전략은 MVD0과 MVD1 사이의 제약 또는 관계를 포함할 수 있으며, 여기서 검색 전략 제약은 양자간 매칭 검색 프로세스 동안 활용되거나 또는 적용된다. 일부 예들에서, 검색 전략은 추가적으로 또는 대안적으로, 검색 패턴, 검색 범위, 최대 검색 라운드들, 비용 기준 등의 하나 이상의 조합들을 포함할 수 있다.
하나의 예시적인 예에서, 본 명세서에 설명된 시스템들 및 기법들은 하나 이상의 모션 벡터 차이(MVD) 제약들을 사용하여 DMVR에 대한 적응적 양자간 매칭을 수행할 수 있다. 이전에 설명된 바와 같이, 모션 벡터 차이는 초기 모션 벡터와 개선된 모션 벡터 사이의 차이(예컨대, MVD0 = MV0' - MV0 및 MVD1 = MV1' - MV1)를 나타내는 데 사용될 수 있다.
일부 예들에서, 주어진 양자간 매칭 블록에 대해 MVD 제약이 선택될 수 있다(예컨대, 선택된 검색 전략에 포함될 수 있음). 예를 들어, MVD 제약은 미러링 제약일 수 있으며, 여기서 MVD0 및 MVD1은 동일한 크기를 갖지만, 반대 부호를 갖는다(예컨대, MVD0 = -MVD1). MVD 미러링 제약은 또한, 본 명세서에서 "제1 제약"으로 지칭될 수 있다.
다른 예에서, MVD 제약은 MVD0 = 0을 설정할 수 있다(예컨대, MVD0의 x 및 y 컴포넌트들 둘 모두는 0임). 예를 들어, MVD0 = 0 제약은, 개선된 MV1', 및 MV0' = MV0을 도출하기 위해 MV1 주위를 검색하면서 MV0을 고정된 상태로 유지함으로써 활용될 수 있다. MVD0 = 0 제약은 또한, 본 명세서에서 "제2 제약"으로 지칭될 수 있다.
다른 예에서, MVD 제약은 MVD1 = 0을 설정할 수 있다(예컨대, MVD1의 x 및 y 컴포넌트들 둘 모두는 0임). 예를 들어, mVD1 = 0 제약은, 개선된 MV0', 및 MV1' = MV1을 도출하기 위해 MV0 주위를 검색하면서 MV1을 고정된 상태로 유지함으로써 활용될 수 있다. MVD1 = 0 제약은 또한, 본 명세서에서 "제3 제약"으로 지칭될 수 있다.
다른 예에서, MVD 제약은 MV0 주위를 독립적으로 검색하여 MV0'을 도출하는 데 그리고 MV1 주위를 독립적으로 검색하여 MV1'을 도출하는 데 활용될 수 있다. MVD 독립적 검색 제약은 또한 본 명세서에서 "제4 제약"으로 지칭될 수 있다.
하기에 더 상세히 설명되는 바와 같이, 일부 경우들에서, 제1 및 제2 제약들만이 양자간 매칭 블록마다 (예컨대, 선택된 또는 시그널링된 검색 전략에 포함된) 옵션들로서 제공될 수 있다. 일부 경우들에서, 제1 및 제3 제약들만이 양자간 매칭 블록마다 옵션들로서 제공된다(예컨대, 선택된 또는 시그널링된 검색 전략에 포함됨). 일부 경우들에서, 제1 및 제4 제약들만이 양자간 매칭 블록마다 옵션들로서 제공된다(예컨대, 선택된 또는 시그널링된 검색 전략에 포함됨). 일부 경우들에서, 제2 및 제3 제약들만이 양자간 매칭 블록마다 옵션들로서 제공된다(예컨대, 선택된 또는 시그널링된 검색 전략에 포함됨). 일부 경우들에서, 제1, 제2 및 제3 제약들이 양자간 매칭 블록마다 옵션들로서 제공된다(예컨대, 선택된 또는 시그널링된 검색 전략에 포함됨). 임의의 다른 조합의 제약들이 양자간 매칭 블록마다 옵션들로서 제공될 수 있다(예컨대, 선택된 또는 시그널링된 검색 전략에 포함됨).
일부 양태들에서, 하나 이상의 신택스 엘리먼트들이 (예컨대, 비트스트림에서) 시그널링될 수 있으며, 여기서 하나 이상의 신택스 엘리먼트들은, 제약들 중 하나 이상이 적용되는지 여부를 나타내기 위한 값(들)을 포함한다. 일부 예들에서, 신택스 엘리먼트들은 주어진 양자간 매칭 블록에 대해 적용할 상기의 MVD 제약들 중 특정 제약을 나타내거나 또는 결정하는 데 사용될 수 있다.
하나의 예시적인 예에서, 제1 신택스 엘리먼트는, 제1 제약이 적용되는지 여부를 나타내는 데 사용될 수 있다. 예를 들어, 제1 신택스 엘리먼트는, 미러링 제약(예컨대, MVD0 = -MVD1)이 제1 신택스 엘리먼트가 시그널링되는 주어진 양자간 매칭 블록에 적용되어야 하는지 여부를 나타내는 데 사용될 수 있다. 일부 경우들에서, 제1 신택스 엘리먼트는 미러링 제약이 적용될 때 제1 값을, 그리고 미러링 제약이 적용되지 않을 때 제2 값을 가질 수 있다. 일부 경우들에서, 제1 신택스 엘리먼트의 존재는, 미러링 제약이 주어진 또는 현재의 양자간 매칭 블록에 적용될 것임을 추론하는 데(예컨대, 암시적으로 시그널링함) 사용될 수 있는 한편, 제1 신택스 엘리먼트의 부재는 미러링 제약이 적용되지 않아야 한다고 추론하는 데(예컨대, 암시적으로 시그널링함) 사용될 수 있다.
상기의 예에 계속하여, 제1 신택스 엘리먼트가, 제1 제약(예컨대, MVD 미러링 제약, MVD0 = -MVD1)이 적용되지 않음을 나타내는 경우, 나머지 제약들 중 어느 것을 적용할지를 나타내기 위해 제2 신택스 엘리먼트가 사용될 수 있다. 예를 들어, 제2 신택스 엘리먼트는, 제2 제약(예컨대, MVD0 = 0) 또는 제3 제약(예컨대, MVD1 = 0)이 신택스 엘리먼트들이 시그널링되는 주어진 또는 현재의 양자간 매칭 블록에 적용되어야 하는지 여부를 나타내는 데 사용될 수 있다. 일부 예들에서, 제2 신택스 엘리먼트는 제2 제약이 적용될 때 제1 값을, 그리고 제3 제약이 적용될 때 제2 값을 가질 수 있다. 일부 경우들에서, 제2 신택스 엘리먼트의 존재는 제2 제약 또는 제3 제약 중 사전결정된 제약이 적용되어야 한다고 추론하는 데 사용될 수 있는(예컨대, 암시적으로 시그널링하는 데 사용됨) 한편, 제2 신택스 엘리먼트의 부재는 제2 제약 또는 제3 제약 중 나머지 제약이 대신 적용되어야 한다고 추론하는 데(예컨대, 암시적으로 시그널링함) 사용될 수 있다.
일부 예들에서, 하나 이상의 신택스 엘리먼트들(예컨대, 제1 신택스 엘리먼트 및/또는 제2 신택스 엘리먼트)은 모드 정보를 포함할 수 있고, 상기 언급된 MVD 제약들로부터의 선택된 제약은 모드 정보에 의해 표시된 모드(예컨대, 병합 모드)에 기초하여 결정될 수 있다. 예를 들어, 하나 이상의 신택스 엘리먼트들은 현재 양자간 매칭 블록에 대한 상이한 병합 모드들을 나타내는 모드 정보를 포함할 수 있다. 하나의 예시적인 예에서, 제1 제약(예컨대, 미러링 제약, MVD0 = -MVD1)은, 정규 병합 후보가 상기에 언급된 DMVR 조건들을 만족할 때, 정규(예컨대, VVC 병합 모드에서의 확장된 병합 예측과 같은, 표준 또는 디폴트) 병합 모드 코딩된 블록에 적용될 수 있다.
이전에 설명된 바와 같이, DMVR 조건들은 다음의 모드들 및 특징부들 중 하나 이상으로 코딩되는 CU들을 나타낼 수 있다. 일부 예들에서, DMVR 조건들은 다음의 모드들 및/또는 특징들 중 하나 이상으로 코딩되는 CU들을 포함할 수 있지만, 이로 제한되지 않는다: 양방향 예측 MV를 이용한 CU 레벨 병합 모드; (예컨대, 현재 픽처에 대한) 과거의 하나의 기준 픽처 및 (예컨대, 현재 픽처에 대한) 미래의 다른 기준 픽처; 2개의 기준 픽처들에서 현재 픽처까지의 거리(예컨대, POC 차이)는 동일함; 기준 픽처들 둘 모두는 단기 기준 픽처들임; 64개 초과의 루마 샘플들을 포함하는 CU; CU 높이 및 CU 폭 둘 모두는 8개 이상의 루마 샘플들임; BCW 가중치 인덱스는 동일한 가중치를 나타냄; 가중된 예측(WP)이 현재 블록에 대해 인에이블되지 않음; 조합된 인터 및 인트라 예측(CIIP) 모드가 현재 블록에 대해 활용되지 않음; 등.
다른 예시적인 예에서, 제2 제약(예컨대, MVD0 = 0) 또는 제3 제약(예컨대, MVD1 = 0) 중 하나는, 코딩된 블록이 지정된 새로운 병합 모드(예컨대, 본 명세서에 설명된 바와 같은, 적응적 양자간 매칭 모드)를 사용할 때 적용될 수 있고, 모든 병합 후보들은 DMVR 조건들을 충족시킨다. 일부 경우들에서, 제2 제약 및/또는 제3 제약은 추가적으로 또는 대안적으로, 모드 플래그 또는 병합 인덱스에 의해 표시될 수 있다. 예를 들어, 제2 제약과 제3 제약 사이의 선택 또는 그의 표시는 모드 플래그 또는 병합 인덱스에 기초하여 결정될 수 있다.
일부 예들에서, 본 명세서에 설명된 하나 이상의 신택스 엘리먼트들은 병합 후보 목록의 인덱스를 포함할 수 있다. 이어서, 선택된 제약은 병합 후보 목록으로부터의 선택된 병합 후보를 나타내는 인덱스에 의해 결정될 수 있다(예컨대, 제약은 선택된 병합 후보에 의존함). 또 다른 예에서, 신택스 엘리먼트들은 모드 플래그들 및 인덱스들의 조합을 포함할 수 있다.
일부 양태들에서, 본 명세서에 설명된 시스템들 및 기법들은 전술된 다중 레벨(예컨대, 다중 패스) DMVR을 수행하는 데 활용될 수 있는 선택된 검색 전략을 (예컨대, 명시적으로 그리고/또는 암시적으로) 시그널링할 수 있다. 일부 예들에서, 선택된 검색 전략은 다중 패스 DMVR의 하나의 패스에서 적용될 수 있다. 다른 예에서, 선택된 검색 전략은 다중 패스 DMVR의 다수의 레벨들 또는 패스들에서 적용될 수 있다(예컨대, 그러나 일부 경우들에서, 프로세스의 모든 레벨들 또는 패스들에서 적용되지는 않음).
전술되는 3-패스 DMVR의 예의 경우, 하나의 예시적인 예에서, 선택된 전략은 제1 패스(예컨대, PU 레벨 양자간 매칭)에서만 적용될 수 있다. 제2 및 제3 패스들(예컨대, 이는 제1 서브 블록 크기에 대한 양자간 매칭 및 제1 서브 블록 크기보다 작은 제2 서브 블록 크기에 대한 BDOF를 각각 수행함)은 디폴트 전략, 예를 들어, 도 10과 관련하여 전술된 것들 및 표준화된 3-패스 구조를 활용하여 수행될 수 있다. 하나의 예시적인 예에서, 다중 패스 DMVR(예컨대, 전술된 3-패스 DMVR)은 제1 패스에서 제2 검색 전략(예컨대, 제2 제약 MVD0 = 0) 및/또는 제3 검색 전략(예컨대, 제3 제약 MVD1 = 0)을 활용하여 PU 레벨 양자간 매칭을 수행할 수 있다. 후속적 패스들(예컨대, 제2 및 제3 패스들)은 제1 제약(예컨대, 미러링 제약 MVD0 = -MVD1)을 포함하는 디폴트 검색 전략을 사용할 수 있다.
일부 양태들에서, 검색 전략들은 다수의 서브세트들로 그룹화될 수 있다. 일부 예들에서, 하나 이상의 신택스 엘리먼트들이 선택된 서브세트들을 결정하는 데 사용될 수 있다. 일부 경우들에서, 주어진 서브세트 내의 선택된 전략이 암시적으로 결정될 수 있다. 하나의 예시적인 예에서, 제1 제약(예컨대, 미러링 제약 MVD0 = - MVD1)은 제1 서브세트에 포함될 수 있고, 제2 제약(예컨대, MVD0 = 0) 및 제3 제약(예컨대, MVD1 = 0) 둘 모두는 제2 서브세트에 포함될 수 있다. 신택스 엘리먼트는, 제2 서브세트가 사용되는지 여부를 나타내는 데 사용될 수 있다. 제2 서브세트가 (예컨대, 대응하는 신택스 엘리먼트에 기초하여) 사용되면, 제2 제약을 적용하는 것 또는 제3 제약을 적용하는 것 사이의 선택 또는 결정은 암시적으로 결정될 수 있다. 예를 들어, 양자간 매칭에 대해 제2 제약을 사용하는 것과 양자간 매칭에 대해 제3 제약을 사용하는 것 사이의 최소 매칭 비용에 기초하여 암시적 결정이 이루어질 수 있다. 제2 제약을 사용하는 양자간 매칭이 제3 제약을 사용하는 양자간 매칭보다 더 작은 매칭 비용을 제공하는 것으로 결정되면, 제2 제약이 선택될 수 있고, 그렇지 않으면 제3 제약이 선택될 수 있다.
일부 예들에서, 본 명세서에 설명된 시스템들 및 기법들의 하나 이상의 양태들은 강화된 압축 모델(ECM)과 함께 활용되거나 또는 그에 기초하여 적용될 수 있다. 예를 들어, ECM에서, 다중 패스 DMVR은 전술된 것들과 동일한 또는 유사한 하나 이상의 특징들을 갖는 정규(예컨대, VVC 병합 모드에서 확장된 병합 예측과 같은, 표준 또는 디폴트) 병합 모드 후보에 적용될 수 있다. 예를 들어, 하나 이상의 특징들은 전술된 DMVR 조건들의 일부(또는 전부)와 동일하거나 또는 유사할 수 있다. 상기에 언급된 바와 같이, 병합 후보는, 현재 블록을 코딩(예컨대, 인코딩 및/또는 디코딩)하는 데 사용하기 위해 정보(예컨대, 하나 이상의 모션 벡터들, 예측 모드 등)가 계승되는 후보 블록을 지칭하며, 여기서 후보 블록은 현재 블록에 이웃하는 블록일 수 있다. 예를 들어, 병합 후보는, 2개의 시간적으로 공동위치된 모션 데이터 포지션들 중 하나 및 공간적으로 이웃하는 모션 데이터 포지션들의 그룹으로부터 선택된 모션 데이터 포지션을 포함하는 인터 예측된 PU일 수 있다.
ECM에서 다중 패스 DMVR은 디폴트로 제1 제약(예컨대, 미러링 제약 MVD0 = -MVD1)을 적용하는 것에 기초하여 수행될 수 있다. 하나의 예시적인 예에서, 본 명세서에 설명된 시스템들 및 기법들은 적응적 양자간 매칭 모드를 다중 패스 DMVR에 대한 새로운 모드로서 활용할 수 있다. 일부 예들에서, 적응적 양자간 매칭 모드는 또한 "adaptive_bm_mode"로 지칭될 수 있다. adaptive_bm_mode에서, 선택된 모션 정보 후보를 나타내기 위해 병합 인덱스가 시그널링될 수 있다. 그러나, 후보 목록 내의 모든 후보들이 DMVR 조건들을 만족할 수 있다. 일부 경우들에서, 적응적 양자간 매칭 모드의 사용을 시그널링하거나 또는 나타내는 데 플래그(예컨대, bm_merge_flag)가 사용될 수 있다. 예를 들어, 플래그가 참인 경우(예컨대, bm_merge_flag가 1과 동일함), adaptive_bm_mode가 사용되거나 또는 적용될 수 있다(예컨대, 후술되는 바와 같음). 일부 양태들에서, 플래그가 참일 때(예컨대, bm_merge_flag가 1과 동일함), 추가적인 플래그(예컨대, bm_dir_flag)가 사용되어, adaptive_bm_mode에서 사용될 bm_dir 값을 시그널링하거나 또는 이를 나타낼 수 있다.
일부 양태들에서, adaptive_bm_mode = 1인 경우, 적응적 양자간 매칭이 수행될 수 있고, adaptive_bm_mode = 0이면, 적응적 양자간 매칭은 수행되지 않는다. 하나의 예시적인 예에서, 적응적 양자간 매칭 프로세스(예컨대, adaptive_bm_mode = 1과 연관됨)가 제2 제약 또는 제3 제약 중 어느 하나를 선택된 후보에 적용하는 것(예컨대, MVD0 또는 MVD1 중 어느 하나를 각각 0과 동일한 것으로서 고정함)에 적어도 부분적으로 기초하여 수행될 수 있다. 일부 경우들에서, 변수 bm_dir이, 어떤 제약이 적용되는지를 나타내는 데 그리고/또는 선택된 제약을 나타내는 데 사용될 수 있다. 예를 들어, 적응적 양자간 매칭이 수행될 때(예컨대, adaptive_bm_mode에 기초하여 시그널링되거나 또는 결정됨), bm_dir = 1은 VMD1을 0으로 고정함으로써 적응적 양자간 매칭이 수행되어야 한다는 것(예컨대, 제3 제약이 적용되어야 함)을 나타내거나 또는 시그널링하는 데 사용될 수 있다. 일부 예들에서, bm_dir = 2는 MVD0을 0으로 고정함으로써 적응적 양자간 매칭이 수행되어야 한다는 것(예컨대, 제2 제약이 적용되어야 함)을 나타내거나 또는 시그널링하는 데 사용될 수 있다.
일부 경우들에서, 적응적 양자간 매칭이 수행되지 않는 경우, 정규 병합 모드가 활용될 수 있다. 이전에 언급된 바와 같이, 정규 병합 모드는 adaptive_bm_mode = 0에 기초하여 결정되거나 또는 시그널링될 수 있으며, 이는 적응적 양자간 매칭이 수행되지 않는다는 것을 나타낸다. 일부 예들에서, (예컨대, 적응적 양자간 매칭이 수행되지 않기 때문에) 정규 병합 모드가 활용될 때, 시스템들 및 기법들은 bm_dir = 3의 추론된 값을 활용할 수 있으며, 이는 MVD0 및 MVD1이 고정되지 않는다는 것 및 MVD0 = -MVD1임(예컨대, 첫 번째로 미러링 제약이 적용되어야 함)을 나타내거나 또는 시그널링한다. 일부 예들에서, bm_dir = 3은 정규 병합 모드를 나타내기 위해 명시적으로 시그널링되거나 또는 사용될 수 있다.
일부 예들에서, 시스템들 및 기법들은 하나 이상의 수정된 양자간 매칭 동작들과 양자간 매칭을 수행할 수 있다. 일부 양태들에서, bm_dir = 3일 때, 양자간 매칭 프로세스는 이전에 전술된 3-패스 양자간 매칭 프로세스와 동일할 수 있다. 예를 들어, MV들의 초기 쌍이 주어지면, 제1 예측자는 제1 기준 픽처를 참조하는 제1 MV에 의해 생성되고, 제2 예측자는 제2 기준 픽처를 참조하는 제2 MV에 의해 생성된다. 후속적으로, 개선된 제1 예측자(예컨대, 제1 개선된 MV를 사용하여 생성됨)와 개선된 제2 예측자(예컨대, 제2 개선된 MV를 사용하여 생성됨) 사이의 BM 비용을 최소화함으로써 개선된 쌍의 MV들이 도출되고, 여기서 개선된 MV들과 초기 MV들 사이의 모션 벡터 차이는 MVD0 및 MVD1이고, MVD0 =-MVD1이다.
일부 양태들에서, bm_dir = 1일 때, 제2 MV는 고정된 상태로 유지되면서, 제1 MV만이 개선된다. 예를 들어, 개선된 제1 MV는 제2 MV에 의해 생성되는 제2 예측자와 개선된 제1 MV에 의해 생성되는 개선된 제1 예측자 사이의 BM 비용을 최소화함으로써 도출될 수 있다. 예를 들어, bm_dir = 1일 때, MV1은 고정된 상태로 유지되면서, MV0이 개선될 수 있다. 개선된 모션 벡터, 즉 MV0'은 MV1에 기초하여 생성된 예측자와 MV0'에 기초하여 생성되는 개선된 예측자 사이의 BM 비용을 최소화함으로써 도출될 수 있다.
일부 예들에서, bm_dir = 2일 때, 제1 MV는 고정된 상태로 유지되면서, 제2 MV만이 개선된다. 예를 들어, 개선된 제2 MV는 제1 MV에 의해 생성되는 제1 예측자와 개선된 제2 MV에 의해 생성되는 개선된 제2 예측자 사이의 BM 비용을 최소화함으로써 도출될 수 있다. 예를 들어, bm_dir- = 2일 때, MV0은 고정된 상태로 유지되면서, MV1이 개선될 수 있다. 개선된 모션 벡터, 즉 MV1'은 MV1에 기초하여 생성된 예측자와 MV1'에 기초하여 생성되는 개선된 예측자 사이의 BM 비용을 최소화함으로써 도출될 수 있다.
일부 양태들에서, (예컨대, 전술된 바와 같은) BM 비용은 추가적으로 또는 대안적으로, 모션 벡터 차이(MVD)에 기초한 또는 그로부터 도출된 정규화 항을 포함할 수 있다. 하나의 예시적인 예에서, 다중 패스 DMVR 검색 프로세스는 개선된 MV 포지션에 의존하는 MV 비용에 기초하여 결정된 정규화 항을 포함할 수 있다.
일부 양태들에서, 전술된 양자간 매칭 수정들 중 하나 이상은 다중 패스 양자간 매칭 프로세스의 제1 패스(예컨대, PU 레벨 DMVR)에서만 적용될 수 있다. 다른 양태들에서, 전술된 양자간 매칭 수정들 중 하나 이상은 제1 패스 및 제2 패스 둘 모두에서 적용될 수 있다(예컨대, PU 레벨 및 서브 PU 레벨 DMVR 패스들에서 적용됨).
일부 예들에서, 본 명세서에 설명된 시스템들 및 기법들은 상기의 예들에서 설명된 것보다 더 많은 또는 더 적은 양의 패스들을 사용하여 다중 패스 양자간 매칭 DMVR을 수행할 수 있다. 예를 들어, 3 미만의 패스들이 활용될 수 있고/있거나 3 초과의 패스가 활용될 수 있다. 일부 예들에서, 임의의 수의 패스들이 사용될 수 있고, 패스들은 임의의 방식으로 구조화될 수 있다. 일부 양태들에서, 다중 패스 설계는 adaptive_bm_mode에서 유사하게 적용될 수 있다. 일부 양태들에서, 제2 패스는 adaptive_bm_mode에서 스킵될 수 있다. 일부 양태들에서, 제2 패스 및 제3 패스 둘 모두는 adaptive_bm_mode에서 스킵될 수 있다. 다른 양태들에서, 패스들의 임의의 조합(예컨대, 전술된 3-패스 시스템으로부터의 패스 동작들)은 특정 적응적 양자간 매칭 기준들에 기초하여 반복된 패스들 또는 다른 패스 타입들과 조합될 수 있다.
다중 패스 DMVR의 일부 양태들에서, 상이한 검색 패턴들이 상이한 검색 레벨들 및/또는 검색 정밀도(들)에 대해 사용될 수 있다. 예를 들어, PU 레벨 DMVR(예컨대, 제1 패스)을 수행하기 위해 적용될 수 있는 반 픽셀 검색 및 정수 검색 둘 모두에 대해 정사각형 검색이 사용될 수 있다. 일부 예들에서, 서브 PU 레벨 DMVR(예컨대, 제2 패스 및/또는 제3 패스)의 경우, 전체 검색이 정수 검색에 대해 사용될 수 있고 정사각형 검색이 반 픽셀 검색에 대해 사용될 수 있다. 일부 예들에서, bm_dir이 제1 값(1의 값), 제2 값(2의 값), 또는 제3 값(3의 값)과 동일하다는 결정에 기초하여, 전술된 검색 패턴들 중 하나 이상(또는 전부)이 활용될 수 있다. 일례에서, bm_dir = 3이라는 결정에 기초하여, 전술된 검색 패턴들 중 하나 이상(또는 전부)이 활용될 수 있다.
다음의 양태들은, bm_dir이 1 또는 2와 같을 때의 예시적인 검색 패턴들 및/또는 검색 프로세스를 설명한다. 일 양태에서, bm_dir = 3일 때와 동일한 검색 패턴들이, bm_dir = 1일 때 그리고/또는 bm_dir- = 2일 때 사용될 수 있다. 다른 양태에서, bm_dir- = 1 및 bm_dir = 2는, bm_dir- = 3일 때와는 상이한 검색 패턴들을 사용할 수 있다. 예를 들어, 일례에서, PU 레벨 DMVR에서의 정수 검색에 대해 전체 검색이 사용될 수 있고, PU 레벨 DMVR에서의 반 픽셀 검색에 대해 정사각형 검색이 사용될 수 있다.
일부 양태들에서, 동일한 검색 범위 및/또는 최대 양의 검색 라운드들이 bm_dir의 상이한 값들에 대해 사용될 수 있다. 다른 양태들에서, bm_dir = 1 또는 2일 때, 상이한 검색 범위 및/또는 상이한 최대 양의 검색 라운드들이 사용될 수 있다. 예를 들어, 상이한 MVD들에 할당된 상이한 비용 팩터들을 갖는 전체 검색의 경우에, 하나 이상의 MVD 영역들이 스킵될 수 있다. 예를 들어, 도 10에 예시된 바와 같이, CU(1000)에 대한 검색 지역은 다수의 검색 영역들(예컨대, 제1 검색 영역(1020), 제2 검색 영역(1030), 제3 검색 영역(1040), 제4 검색 영역(1050))로 분할된다. 일부 경우들에서, 검색 지역의 중심으로부터 더 멀리 있는(예컨대, 제1 검색 영역(1020)으로부터 더 먼) 영역들이 스킵될 수 있다.
일부 예들에서, 정규 병합 모드에서 모든 검색 영역들이 검색될 수 있다. 예를 들어, 도 10과 관련하여, 정규 병합 모드에서, 4개의 검색 영역들(1020 내지 1050) 중 하나의 영역에 아직 포함되지 않은 CU(1000)의 나머지 블록들을 포함하는 제5 검색 영역과 함께, 4개의 검색 영역들(1020, 1030, 1040, 1050)이 검색될 수 있다. 상기에 언급된 바와 같이, 일부 경우들에서, 검색 지역의 중심으로부터 더 멀리 있는 검색 영역들이 스킵될 수 있다. 예를 들어, 적응적 양자간 매칭 모드에서(예컨대, bm_dir = 1 또는 2일 때), 도 10의 CU(1000)와 연관된 첫 번째 3개의 검색 영역들만이 검색될 수 있다(예컨대, 적응적 양자간 매칭 모드에서, 제1 검색 영역(1020), 제2 검색 영역(1030), 및 제3 검색 영역(1040)만이 검색될 수 있음).
다중 패스 DMVR의 일부 양태들에서, SAD 또는 평균 제거 SAD(예컨대, PU 크기에 따름)는 정수 검색 및 PU 레벨 DMVR 패스와 연관된 반 픽셀 검색에 대해 사용될 수 있다. 일부 경우들에서, SATD는 서브 PU 레벨 DMVR에 대해 사용될 수 있다. 일부 양태들에서, bm_dir의 상이한 값들에 대해 동일한 비용 기준들이 사용될 수 있다. 예를 들어, ECM에서의 현재 비용 기준들 선택이 bm_dir의 모든 값들에 대해 사용될 수 있다. 다른 양태들에서, 비용 기준들 선택은 bm_dir의 상이한 값들에 대해 상이할 수 있다. 예를 들어, bm_dir = 3일 때, 현재 ECM에서의 비용 기준들 선택이 적용될 수 있다. PU 크기에 따른 SAD 또는 평균 제거 SAD는 PU 레벨 DMVR에서의 정수 및 반 픽셀 검색에 대해 사용될 수 있다. bm_dir = 1 또는 2일 때, PU 레벨 DMVR 프로세스는 정수 검색에 대해 SATD를 사용할 수 있고, 반 픽셀 검색에 대해 SAD를 사용할 수 있다.
이전에 언급된 바와 같이, 일부 양태들에 대한 후보 목록 내의 후보들은 DMVR 조건들을 만족한다. 하나의 추가적인 양태에서, bm_dir은 adaptive_bm_mode mode 모드에 포함된 추가적인 bm_dir_flag에 의해 표시된 바와 같이 1 또는 2와 동일하게 설정될 수 있다. 일부 경우들에서, adaptive_bm_mode에 대한 후보 목록은 정규 병합 후보 목록의 상단 상에 생성된다. 예를 들어, 정규 병합 후보 목록에서 DMVR 조건들을 만족하도록 결정되는 하나 이상의 후보들은 adaptive_bm_mode에 대한 후보 목록 내로 삽입될 수 있다.
다른 추가적인 양태에서, bm_dir을 1 또는 2와 동일하게 설정할지 여부는 adaptive_bm_mode 모드 내의 병합 인덱스에 의해 표시될 수 있다. adaptive_bm_mode에 대한 후보 목록은 정규 병합 후보 목록의 상단 상에 생성될 수 있다. DMVR 조건들을 만족하는 정규 병합 후보 목록 내의 각각의 후보에 대해, 2개의 후보들의 쌍, 즉 bm_dir = 1을 갖는 하나의 후보 및 bm_dir = 2를 갖는 다른 후보가 adaptive_bm_mode 후보 목록 내로 삽입될 수 있으며, 여기서 쌍 내의 2개의 후보들은 동일한 모션 정보를 갖는다. 일부 예들에서, bm_dir은, 병합 인덱스가 짝수인지 또는 홀수인지 여부를 결정함으로써 결정될 수 있다.
하나의 예시적인 예에서, adaptive_bm_mode에 대한 후보 목록은 정규 병합 후보 목록과는 독립적으로 생성될 수 있다. 일부 경우들에서, adaptive_bm_mode에 대한 후보 목록의 생성은 정규 병합 모드에 대한 후보 목록을 생성하는 것과 동일한 또는 유사한 프로세스를 따를 수 있다(예컨대, 동일한 공간적, 시간적 이웃 포지션들, 이력 기반 후보들, 쌍별 후보들, 등을 체크함). 일부 경우들에서, 프루닝이 목록 구성 프로세스 동안 적용될 수 있다.
또 다른 양태에서, 동일하지 않은 가중치를 나타내는 CU 레벨 가중치를 갖는 양방향 예측(BCW) 가중치 인덱스와 연관된 하나 이상의 후보들이 또한 후보 목록에 추가될 수 있다(예컨대, BCW 가중치 인덱스가 동일한 가중치를 나타낼 수 있는, DMVR 조건들을 갖는 일부 시스템들과 비교됨)
일부 예들에서, adaptive_bm_mode에 대한 후보 목록 내의 그리고/또는 정규 병합 모드에 대한 후보 목록 내의 후보들의 수가 사전정의된 최대치 미만인 경우, 패딩 프로세싱이 적용될 수 있다. 예를 들어, 일단 adaptive_bm_mode에 대한 후보 목록이 생성되면, 사전정의된 최대 수의 후보들보다 더 적은 후보들이 목록에 존재할 수 있다. 그러한 예에서, 패딩 프로세스는, 패딩된 후보 목록이 사전정의된 수의 후보들을 포함하도록 후보 목록에 대한 다수의 패딩된 후보들을 생성하는 데 적용될 수 있다. 하나의 예시적인 예에서, 적응적 양자간 매칭이 인에이블되는 경우에(예컨대, adaptive_bm_mode = 1), 병합 목록 구성에서 패딩을 위해 하나 이상의 디폴트 후보들이 사용될 수 있다. 디폴트 후보는, 그것이 DMVR 조건들을 만족하도록 도출될 수 있다.
일부 예들에서, MV들은 디폴트 후보들에 대해 제로(0)로 설정될 수 있다. 예를 들어, 패딩 프로세스 동안 제로 MV 후보들이 추가될 수 있다. 일부 예들에서, 기준 픽처들은 DMVR 조건들에 따라 선택될 수 있다. 일부 경우들에서, 기준 인덱스는, 후보 목록 내의 후보들의 수가 후보들의 최대 수(예컨대, 사전정의된 최대치)에 도달할 때까지 모든 가능한 값들에 걸쳐 루프를 이룰 수 있다. 다른 양태에서, BCW 가중치 인덱스는 정규 후보들에 대한 동일한 가중치를 나타내는 데 사용될 수 있고, 하나 이상의 동일하지 않은 가중치 BCW 후보들이 그 후에 그리고 제로 후보들을 추가하기 전에 추가될 수 있다.
일부 양태들에서, 디폴트 후보들에 할당된 기준 픽처들(예컨대, 전술된 패딩된 제로 MV 후보들에 할당된 기준 픽처들)은 adaptive_bm_mode와 연관된 하나 이상의 조건들을 만족하도록 선택될 수 있다. 그러한 조건들의 예시적인 예는 다음의 조건들 중 하나의 조건 또는 다수의 조건을 포함할 수 있고/있거나, 본 명세서에 열거되지 않은 다른 조건들을 포함할 수 있다: 현재 픽처에 대한, 과거의 하나의 기준 픽처 및 미래의 하나의 기준 픽처를 포함하는 기준 픽처들의 적어도 하나의 쌍이 선택됨; 기준 픽처들 둘 모두로부터 현재 픽처까지의 각자의 거리들이 동일함; 기준 픽처들 둘 모두는 장기 기준 픽처들이 아님; 기준 픽처들 둘 모두는 현재 픽처와 동일한 레졸루션을 가짐; 가중된 예측(WP)은 기준 픽처들 중 임의의 것에 적용되지 않음; 이들의 임의의 조합; 및/또는 다른 조건들.
일부 양태들에서, 하나 이상의 기준 픽처들이, 특정된 또는 선택된 제약(예컨대, 제2 제약, MVD0 = 0, 또는 제3 제약, MVD1 = 0)과 연관된 또는 그에 기초하는 하나 이상의 조건들을 만족하는 기준 픽처들을 선택하는 것에 기초하여 디폴트 후보들에(예컨대, 전술된 패딩된 제로 MV 후보들에) 할당될 수 있다. 일부 예들에서, 기준 픽처들은 주어진 제약과 연관된 하나 이상의 조건들을 만족하도록 선택될 수 있으며, 여기서 주어진 제약은 (예컨대, 이전에 설명된 바와 같이) bm_dir에 기초하여 결정된다. 예를 들어, bm-_dir에 기초한 하나 이상의 조건들은, 개선이 수행되는 MV에만(예컨대, bm_dir- = 1인 경우) 적용될 수 있다. 그러한 조건들의 예시적인 예는 다음 중 하나 또는 다수를 포함할 수 있고/있거나, 여기에 열거되지 않은 다른 조건들을 포함할 수 있다: 주어진 목록 X에서의 기준 픽처는 장기 기준 픽처가 아님; 목록 X에서의 기준 픽처는 현재 픽처와 동일한 레졸루션을 가짐; 가중된 예측(WP)은 목록 X에서 기준 픽처에 적용되지 않음; 목록 X에서의 제1 기준 픽처로부터 현재 픽처까지의 각자의 거리는 다른 기준 픽처(예컨대, 목록 X에서의 제2 기준 픽처)로부터 현재 픽처까지의 각자의 거리보다 더 작지 않음; 이들의 임의의 조합; 및/또는 다른 조건들.
일부 경우들에서, bm_dir이 목록 0에서의 MV가 개선된다는 것을 나타내는 경우, 목록 X는 목록 0(예컨대, 목록 L0)과 동일할 수 있다. 일부 경우들에서, bm_dir이 목록 1에서의 MV가 개선된다는 것을 나타내는 경우, 목록 X는 목록 1(예컨대, 목록 L1)과 동일할 수 있다. 일부 양태들에서, 모든 가능한 제로 MV 후보들은 기준 픽처들의 모든 가능한 조합들에 걸쳐 루프를 이루고 사전정의된 조건들을 만족하는 기준 픽처들을 소정 순서로 식별함으로써 발견될 수 있다. 하나의 예시적인 예에서, 목록 0에 대해 제1 루프가 수행될 수 있고, 목록 1에 대해 제2 루프가 수행될 수 있다. 다른 예에서, 목록 1에 대해 제1 루프가 수행될 수 있고, 목록 0에 대해 제2 루프가 수행될 수 있다. 다른 순서화가 또한 가능하며, 본 개시내용의 범주 내에서 고려될 것이다. (예컨대, 사전정의된 조건들을 만족하는 기준 픽처들을 소정 순서로 식별하기 위해 기준 픽처들의 조합들에 걸쳐 루프를 이룸으로써) 가능한 제로 MV 후보들을 결정하는 프로세스는 슬라이스 레벨, 픽처 레벨, 또는 다른 레벨에서 수행될 수 있다. 식별된 디폴트 MV 후보들(예컨대, 제로 MV 후보들)의 목록은 디폴트 후보들로서 저장될 수 있다. 일부 경우들에서, 블록 레벨에서 가능한 제로 MV 후보들을 결정할 때, 후보들의 수가 후보들의 사전정의된 최대 수 미만일 때, 본 명세서에 설명된 시스템들 및 기법들은 디폴트 후보들에 걸쳐 루프를 이루고, 후보들의 수가 사전정의된 최대치에 도달할 때까지 디폴트 후보들 중 하나 이상의 디폴트 후보를 후보 목록에 추가할 수 있다.
일부 양태들에서, 하나 이상의 크기 제약들이 본 명세서에 설명된 adaptive_bm_mode에 포함되고/되거나 그에 의해 활용될 수 있다. 일 양태에서, 정규 DMVR에서와 동일한 크기 제약이 adaptive_bm_mode에 적용될 수 있다. 다른 양태에서, 현재 블록의 폭도 높이도 DMVR에 대한 최소 블록 크기보다 더 크지 않은 경우, adaptive_bm_mode는 적용되지 않는다.
일부 양태들에서, adaptive_bm_mode는 추가적인 병합 모드로서 정규 병합 모드로 시그널링될 수 있다. 일부 예들에서, 다양한 시그널링 방법들이 적용되거나 활용되어, adaptive_bm_mode를 추가적인 병합 모드로서 시그널링할 수 있다. 예를 들어, adaptive_bm_mode는 정규 병합 모드의 변형으로서 간주되거나 또는 시그널링될 수 있다. 하나의 예시적인 예들에서, 하나 이상의 신택스 엘리먼트들은 먼저 정규 병합 모드를 나타내도록 시그널링될 수 있고, 하나 이상의 추가적인 플래그들 및/또는 신택스 엘리먼트들은 adaptive_bm_mode를 나타내도록 그리고/또는 adaptive_bm_mode의 사용과 연관되어 적용될 수 있는 제약들(예컨대, 제2 제약 MDV0 = 0 또는 제3 제약 MDV1 = 0) 중 특정 제약을 나타내도록 시그널링될 수 있다.
다른 양태에서, adaptive_bm_mode는 정규 병합 모드의 표시 이전에 하나 이상의 플래그들에 의해 표시될 수 있다. 예를 들어, 신택스(예컨대, 하나 이상의 제1 신택스 엘리먼트들)가 현재 블록이 adaptive_bm_mode를 사용하고 있지 않다는 것을 나타내면, 현재 블록이 정규 병합 모드를 사용하는지 또는 다른 병합 모드들을 사용하는지 여부를 나타내기 위해 하나 이상의 추가적인 신택스 엘리먼트들이 시그널링될 수 있다. 예를 들어, 현재 블록이 adaptive_bm_mode 또는 정규 병합 모드를 사용하지 않는 경우, 하나 이상의 추가적인 신택스 엘리먼트들은, 현재 블록이 조합된 인터 및 인트라 예측(CIIP), 기하학적 파티션 모드(GPM) 등과 같은 다른 병합 모드들을 사용한다는 것을 나타내도록 시그널링될 수 있다.
또 다른 양태에서, adaptive_bm_mode는 다른 병합 모드 분기들에서 시그널링될 수 있다. 예를 들어, adaptive_bm_mode는 템플릿 매칭 병합 모드 분기에서 시그널링될 수 있다. 일부 경우들에서, adaptive_bm_mode 및 템플릿 매칭 병합 모드 중 하나가 사용되는지를 나타내기 위해 하나 이상의 신택스 엘리먼트들이 먼저 시그널링될 수 있다. 하나 이상의 신택스 엘리먼트들이, adaptive_bm_mode 또는 템플릿 매칭 병합 모드가 사용된다는 것을 나타내면, 템플릿 매칭 병합 모드 및 adaptive_bm_mode 중 어느 것이 사용되는지를 나타내기 위해 하나 이상의 추가적인 플래그들 또는 신택스 엘리먼트들이 시그널링될 수 있다.
일부 양태들에서, adaptive_bm_mode에서의 병합 인덱스는 정규 병합 모드에서와 동일한 시그널링 방법을 사용할 수 있다. 일 양태에서, adaptive_bm_mode는 정규 병합 모드에서와 동일한(또는 유사한) 콘텍스트 모델들을 사용할 수 있다. 다른 양태에서, 별개의 콘텍스트 모델들이 adaptive_bm_mode에 대해 사용될 수 있다. 일부 예들에서, 병합 후보들의 최대 수는 정규 병합 모드에 대한 병합 후보들의 최대 수와는 adaptive_bm_mode에 대해 상이할 수 있다.
하나의 예시적인 예에서, adaptive_bm_mode가 적용될 수 있는지 또는 적용될 것인지 여부를 나타내기 위해 하나 이상의 고레벨 신택스 엘리먼트들이 사용될 수 있다. 일 양태에서, 정규 DMVR이 적용될 것인지 여부를 나타내는 데 사용되는 동일한 고레벨 신택스가 또한, adaptive_bm_mode가 적용될 것인지 여부를 나타내는 데 사용될 수 있다. 다른 양태에서, 하나 이상의 별개의(예컨대, 추가적인) 고레벨 신택스 엘리먼트들이, adaptive_bm_mode가 적용되어야 하는지 여부를 나타내는 데 사용될 수 있다. 또 다른 양태에서, adaptive_bm_mode가 활용되는지 여부를 나타내기 위해 별개의 고레벨 신택스 엘리먼트들이 사용될 수 있고, 여기서 adaptive_bm_mode에 대한 별개의 고레벨 신택스 엘리먼트들은, 정규 DMVR이 인에이블되는 경우에만 존재한다. 예를 들어, 정규 DMVR과 연관된 별개의 고레벨 신택스 엘리먼트들이, 정규 DMVR이 인에이블되지 않거나 활용되지 않는다는 것을 나타내도록 결정되면, adaptive_bm_mode와 연관된 별개의 또는 추가적인 고레벨 신택스 엘리먼트들은 시그널링되지 않고, adaptive_bm_mode는 오프상태인 것으로(예컨대, 인에이블되거나 또는 활용되지 않음) 추론된다.
일부 양태들에서, 전술된 하나 이상의 고레벨 신택스 엘리먼트들에 더하여, adaptive_bm_mode는 이용가능한 기준 픽처들에 따라 코딩된 픽처 또는 슬라이스에 대해 디스에이블될 수 있다. 일부 경우들에서, 기준 픽처들의 어떠한 조합도 기준 픽처 조건들을 만족하지 않거나 또는 이를 만족할 수 없다고 결정되면, adaptive_bm_mode는 디스에이블될 수 있고 대응하는 신택스 엘리먼트들이 (예컨대, 블록 레벨에서) 시그널링되지 않는다. 일부 경우들에서, adaptive_bm_mode를 활용하기 위해 기준 픽처 조건들을 만족하는 기준 픽처들의 적어도 하나의 쌍이 존재해야 한다. 그러한 조건들의 예시적인 예는 다음 중 하나 또는 다수를 포함할 수 있고/있거나, 본 명세서에 열거되지 않은 다른 조건들을 포함할 수 있다: 현재 픽처에 대한, 과거의 하나의 기준 픽처 및 미래의 하나의 기준 픽처; 기준 픽처들 둘 모두로부터 현재 픽처까지의 각자의 거리들이 동일함; 기준 픽처들 둘 모두는 장기 기준 픽처들이 아님; 기준 픽처들 둘 모두는 현재 픽처와 동일한 레졸루션을 가짐; 가중된 예측(WP)은 기준 픽처들 중 어느 하나에 적용되지 않음; 이들의 임의의 조합; 및/또는 다른 조건들.
상기에 열거된 조건들은 별개로 또는 조합하여 사용될 수 있다.
일부 양태들에서, 본 명세서에 설명된 적응적 양자간 매칭 모드들의 서브세트(예컨대, 제2 조건 MDV0 = 0과 연관된 제1 적응적 양자간 매칭 모드, 및 제3 조건 MDV1 = 0과 연관된 제2 적응적 양자간 매칭 모드)만이 기준 픽처들에 따라 인에이블될 수 있다. bm_dir = 1(예컨대, 제2 조건 MDV0 = 0과 연관됨) 또는 bm_dir = 2(예컨대, 제3 조건 MDV1 = 0과 연관됨)만을 허용하기 위한 그러한 조건들의 예시적인 예는 다음 중 하나 또는 다수를 포함할 수 있고/있거나, 여기에 열거되지 않은 다른 조건들을 포함할 수 있다: 기준 픽처들 중 하나의 기준 픽처는 장기 기준 픽처이고 다른 기준 픽처는 장기 기준 픽처가 아님; 기준 픽처들 중 하나의 기준 픽처는 현재 픽처와 동일한 레졸루션을 갖지만, 다른 기준 픽처는 현재 픽처와는 상이한 레졸루션을 가짐; 가중된 예측(WP)은 기준 픽처들 중 하나의 기준 픽처에 적용됨; 기준 픽처들 중 하나의 기준 픽처로부터 현재 픽처까지의 각자의 거리는 다른 기준 픽처로부터 현재 픽처까지의 각자의 거리보다 더 짧지 않음; 이들의 임의의 조합; 및/또는 다른 조건들.
일부 경우들에서, 양자간 매칭 모드를 식별하는 (예컨대, 블록 레벨에서의) 신택스 엘리먼트가 시그널링되지 않을 수 있고, 그에 따라 추론될 수 있다. 일부 예들에서, 신택스 엘리먼트는 (예컨대, 특정 신택스 테이블의 일부로서 비트스트림에서) 명시적으로 시그널링되기보다는 암시적으로 시그널링될 수 있다(예컨대, 추론됨). 일부 경우들에서, 신택스 엘리먼트는 명시적으로 시그널링되거나 암시적으로 시그널링되지도 않을 수 있고, 추론될 수 있다. 예를 들어, 제1 값의 bm_dir이 인에이블되지만(예컨대, bm_dir = 1이 인에이블됨) 제2 값의 bm_dir은 디스에이블되면(예컨대, bm_dir = 2가 디스에이블됨), 블록 레벨에서 bm_dir을 나타내는 데 사용되는 신택스 엘리먼트는 시그널링되지 않을 수 있다. 이러한 신택스 엘리먼트의 부재 시에, bm_dir은 제1 값인 것으로 추론될 수 있다(예컨대, bm_dir은 1인 것으로 추론됨). 다른 예에서, 제2 값의 bm_dir이 인에이블되지만(예컨대, bm_dir = 2가 인에이블됨) 제1 값의 bm_dir은 디스에이블되면(예컨대, bm_dir = 1이 디스에이블됨), 블록 레벨에서 bm_dir을 나타내는 데 사용되는 신택스 엘리먼트는 시그널링되지 않을 수 있다. 이러한 신택스 엘리먼트의 부재 시에, bm_dir은 제2 값인 것으로 추론될 수 있다(예컨대, bm_dir은 2인 것으로 추론됨).
다른 예에서, 슬라이스 레벨 플래그 및/또는 픽처 레벨 플래그가 adaptive_bm_mode에 대해 활용될 수 있다. 예를 들어, 상기 조건들 중 적어도 하나의 조건이 만족되지 않는 경우, 슬라이스 레벨 플래그 및/또는 픽처 레벨 플래그가, 플래그가 0으로 설정된다는(예컨대, DMVR 모드들이 디스에이블됨) 비트스트림 부합 제약으로서 활용될 수 있다.
또 다른 예에서, 비트스트림 부합 제약이 기존의 시그널링에 도입될 수 있으며, 여기서 비트스트림 부합 제약은, 상기 조건들 중 적어도 하나의 조건이 만족되지 않는 경우, adaptive_bm_mode가 적용되지 않아야 하고 대응하는 오버헤드가 0으로 설정된다는 것을 나타낸다(예컨대, adaptive_bm_mode가 사용되지 않는다는 것을 나타냄).
ECM의 일부 양태들에서, 다수의 가설 예측(multiple hypothesis prediction, MHP)이 활용될 수 있다. MHP에서, 인터 예측 기법은 2개 초과의 모션 보상된 예측 신호들의 가중된 중첩을 획득하거나 또는 결정하는 데 사용될 수 있다. 결과적인 전체 예측 신호는 샘플별 가중된 중첩을 수행하는 것에 기초하여 획득될 수 있다. 예를 들어, 단방향/양방향 예측 신호(puni/bi) 및 제1 추가적인 인터 예측 신호/가설(h3)에 기초하여, 결과적인 예측 신호(p3)는 다음과 같이 획득될 수 있다:
식 (27)
여기서, 가중 팩터 α는 다음의 맵핑에 따라, 신택스 엘리먼트 add_hyp_weight_idx에 의해 특정될 수 있다:
[표 2]
일부 예들에서, 하나 초과의 추가적인 예측 신호들이 사용될 수 있다. 일부 경우들에서, 하나 초과의 추가적인 예측 신호들은 상기와 동일한 또는 유사한 방식으로 활용될 수 있다. 예를 들어, 다수의 추가적인 예측 신호들을 활용할 때, 결과적인 전체 예측 신호는 다음과 같이 각각의 추가적인 예측 신호와 함께 반복적으로 축적될 수 있다:
식 (28)
여기서, 결과적인 전체 예측 신호는 마지막 p n 로서 획득될 수 있다(예컨대, p n 는 가장 큰 인덱스(n)를 가짐).
일부 양태들에서, MHP는 임의의 adaptive_bm_mode에 대해 적용되지 않을 수 있다(예컨대, 디스에이블됨). 일부 양태들에서, MHP는, MHP가 표준화된(예컨대, 정규) 병합 모드에 대해 적용되는 것과 동일한 또는 유사한 방식으로 adaptive_bm_mode의 상단에 적용될 수 있다.
도 11은 비디오 데이터를 프로세싱하기 위한 프로세스(1100)의 일례를 예시하는 흐름도이다. 일부 예들에서, 프로세스(100)는 본 개시내용의 일부 예들에 따른, 적응적 양자간 매칭을 이용한 디코더 측 모션 벡터 개선(DMVR)을 수행하는 데 사용될 수 있다. 일부 양태들에서, 프로세스(1100)는 메모리 및 메모리에 커플링되고 프로세스(1100)의 동작들을 수행하도록 구성된 하나 이상의 프로세서들을 포함하는, 비디오 데이터를 프로세싱하기 위한 장치에서 구현될 수 있다. 일부 양태들에서, 프로세스(1100)는, 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 디바이스로 하여금 프로세스(1100)의 동작들을 수행하게 하는 명령들을 포함하는 비일시적 컴퓨터 판독가능 매체에서 구현될 수 있다.
블록(1102)에서, 프로세스(1100)는 현재 픽처(예컨대, 현재 픽처의 현재 블록)에 대한 하나 이상의 기준 픽처들을 획득하는 단계를 포함한다. 예를 들어, 하나 이상의 기준 픽처들은 도 1에 예시된 디코딩 디바이스(112)에 대한 입력들(114) 중 하나 이상의 입력에 기초하여 획득될 수 있다. 일부 예들에서, 하나 이상의 기준 픽처들 및 현재 픽처들은 도 1에 예시된 디코딩 디바이스(112)에 의해 획득되거나 또는 그에 제공된 비디오 데이터로부터 획득될 수 있다.
블록(1104)에서, 프로세스(1100)는 병합 모드 후보에 대한 제1 모션 벡터 및 제2 모션 벡터를 식별하는 단계를 포함한다. 예를 들어, 제1 모션 벡터 및/또는 제2 모션 벡터는 도 1에 예시된 디코딩 디바이스(112)에 의해 식별될 수 있다. 일부 예들에서, 제1 모션 벡터 및/또는 제2 모션 벡터는 도 1에 예시된 디코딩 디바이스(112)의 디코더 엔진(116)을 사용하여 식별될 수 있다. 일부 경우들에서, 제1 모션 벡터 및 제2 모션 벡터 중 하나 이상(또는 둘 모두)은 시그널링된 정보를 사용하여 식별될 수 있다. 예를 들어, 도 1에 예시된 인코딩 디바이스(104)는 디코딩 디바이스(112) 및/또는 디코딩 엔진(116)에 의해 사용될 수 있는 시그널링 정보를 포함하여 제1 모션 벡터 및 제2 모션 벡터 중 하나 이상(또는 둘 모두)을 식별할 수 있다. 일부 경우들에서, 프로세스(1100)는 현재 픽처에 대한 병합 모드 후보를 결정하는 단계를 포함할 수 있다. 본 명세서에 언급된 바와 같이, 병합 모드 후보는, 예측 데이터가 현재 픽처의 블록에 대해 계승될 수 있는 블록의 이웃 블록을 포함할 수 있다. 예를 들어, 병합 모드 후보는 도 1에 예시된 디코딩 디바이스(112)에 의해 결정될 수 있다. 일부 예들에서, 병합 모드 후보는 도 1에 예시된 디코딩 디바이스(112)의 디코더 엔진(116)을 사용하여 결정될 수 있다. 일부 예들에서, 시그널링 정보는 현재 픽처에 대한 병합 모드 후보를 결정하기 위해 디코딩 디바이스(112) 및/또는 디코딩 엔진(116)에 의해 사용될 수 있다. 일부 경우들에서, 병합 모드 후보는 병합 모드 후보와 연관된 제1 모션 벡터 및 제2 모션 벡터 중 하나 이상(또는 둘 모두)을 식별하는 데 사용되는 동일한 시그널링 정보를 사용하여 결정될 수 있다. 일부 경우들에서, 병합 모드 후보, 및 제1 및 제2 모션 벡터들은 별개의 시그널링 정보를 사용하여 결정될 수 있다.
블록(1106)에서, 프로세스(1100)는 복수의 모션 벡터 검색 전략들로부터 병합 모드 후보에 대한 선택된 모션 벡터 검색 전략을 결정하는 단계를 포함한다. 일부 양태들에서, 선택된 모션 벡터 검색 전략은 제1 모션 벡터 및/또는 제2 모션 벡터에 기초하는 또는 그에 대응하는 하나 이상의 제약들과 연관된다. 하나의 예시적인 예에서, 선택된 모션 벡터 검색 전략은 양자간 매칭(BM) 모션 벡터 검색 전략일 수 있다. 일부 경우들에서, 병합 모드 후보에 대한 모션 벡터 검색 전략은 다중 패스 디코더 측 모션 벡터 개선 전략, 분수 샘플 개선 전략, 양방향성 광학 흐름 전략, 또는 서브 블록 기반 양자간 매칭 모션 벡터 개선 전략 중 적어도 2개를 포함하는 복수의 모션 벡터 검색 전략들로부터 선택될 수 있다. 일부 예들에서, 선택된 모션 벡터 검색 전략은, 병합 모드 후보가 결정되기 전에 결정될 수 있다. 예를 들어, 선택된 모션 벡터 검색 전략은 (예컨대, 전술된 바와 같이) 결정되고, 병합 후보 목록을 생성하는 데 사용될 수 있다. 병합 모드 후보는 생성된 병합 후보 목록으로부터의 선택에 기초하여 결정될 수 있다. 일부 예들에서, 선택된 병합 모드 후보는, 선택된 모션 벡터 검색 전략이 결정되기 전에 결정될 수 있다. 예를 들어, 일부 경우들에서, 병합 후보 목록은 선택된 검색 전략을 사용하지 않고서 생성될 수 있고(예컨대, 생성된 병합 후보 목록은 복수의 검색 전략들의 각각의 각자의 검색 전략에 대해 동일할 수 있음), 선택된 병합 후보는 선택된 검색 전략 전에 결정될 수 있다.
일부 예들에서, 선택된 모션 벡터 검색 전략은 다중 패스 디코더 측 모션 벡터 개선(DMVR) 검색 전략일 수 있다. 예를 들어, 다중 패스 DMVR 검색 전략은 하나 이상의 블록 기반 양자간 매칭 모션 벡터 개선 패스들을 포함할 수 있고, 또한 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들을 포함할 수 있다. 일부 예들에서, 하나 이상의 블록 기반 양자간 매칭 모션 벡터 개선 패스들은 제1 모션 벡터 차이 및/또는 제2 모션 벡터 차이와 연관되는 제1 제약을 사용하여 수행될 수 있다. 제1 모션 벡터 차이는 제1 모션 벡터와 개선된 제1 모션 벡터 사이에서 결정된 차이일 수 있다. 제2 모션 벡터 차이는 제2 모션 벡터와 개선된 제2 모션 벡터 사이에서 결정된 차이일 수 있다. 일부 예들에서, 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들은 제1 제약과는 상이한 제2 제약을 사용하여 수행될 수 있다. 제2 제약은, 전술된 바와 같이 제1 모션 벡터 차이 및/또는 제2 모션 벡터 차이 중 적어도 하나와 연관될 수 있다. 일부 경우들에서, 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들은 서브 블록 기반 양자간 매칭(BM) 모션 벡터 개선 패스 및/또는 서브 블록 기반 양방향성 광학 흐름(BDOF) 모션 벡터 개선 패스 중 적어도 하나를 포함할 수 있다.
일부 예들에서, 선택된 모션 벡터 검색 전략은 (예컨대, 전술된 바와 같이) 제1 모션 벡터 또는 제2 모션 벡터 중 적어도 하나에 대응하는 하나 이상의 제약들과 연관된다. 하나 이상의 제약들은 하나 이상의 시그널링된 신택스 엘리먼트들에 기초하여 결정될 수 있다. 예를 들어, 하나 이상의 제약들은 블록에 대해 시그널링된 신택스 엘리먼트에 기초하여 현재 픽처의 블록에 대해 결정될 수 있다. 일부 양태들에서, 하나 이상의 제약들은 제1 모션 벡터와 연관된 제1 모션 벡터 차이(예컨대, 제1 모션 벡터와 개선된 제1 모션 벡터 사이의 차이) 및 제2 모션 벡터와 연관된 제2 모션 벡터 차이(예컨대, 제2 모션 벡터와 개선된 제2 모션 벡터 사이의 차이) 중 적어도 하나와 연관된다. 일부 예들에서, 하나 이상의 제약들은 제1 모션 벡터 차이 및 제2 모션 벡터 차이에 대한 미러링 제약을 포함할 수 있다. 미러링 제약은 제1 모션 벡터 차이 및 제2 모션 벡터 차이를, 동일한 크기(예컨대, 절대 값)를 갖지만 반대 부호를 갖도록 설정할 수 있다. 일부 경우들에서, 하나 이상의 제약들은 제1 모션 벡터 차이에 대한 제로 값 제약(예컨대, 제1 모션 벡터 차이를 0과 동일하게 설정함)을 포함할 수 있다. 일부 예들에서, 하나 이상의 제약들은 제2 모션 벡터 차이에 대한 제로 값 제약(예컨대, 제2 모션 벡터 차이를 0과 동일하게 설정함)을 포함할 수 있다. 일부 양태들에서, 제로 값 제약은 모션 벡터 차이를 고정된 것으로 유지하는 것을 나타낼 수 있다. 예를 들어, 제로 값 제약에 기초하여, 프로세스(1100)는, 제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 첫 번째 모션 벡터 차이를 고정 값으로서 유지하고 제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 두 번째 모션 벡터 차이에 대해 검색함으로써, 선택된 모션 벡터 검색 전략을 사용하여 하나 이상의 개선된 모션 벡터들을 결정하는 단계를 포함할 수 있다. 예를 들어, 제1 모션 벡터 차이는 고정될 수 있고, 제2 모션 벡터 차이 주위에서 검색이 수행되어 개선된 모션 벡터를 도출할 수 있다.
블록(1108)에서, 프로세스(1100)는, 선택된 모션 벡터 검색 전략을 사용하여, 제1 모션 벡터, 제2 모션 벡터, 및/또는 하나 이상의 기준 픽처들에 기초하여(예컨대, 제1 모션 벡터 및 하나 이상의 기준 픽처들에 기초하여, 제2 모션 벡터 및 하나 이상의 기준 픽처들에 기초하여, 또는 제1 모션 벡터, 제2 모션 벡터, 및 하나 이상의 기준 픽처들에 기초하여) 하나 이상의 개선된 모션 벡터들을 결정하는 단계를 포함한다. 일부 경우들에서, 하나 이상의 개선된 모션 벡터들을 결정하는 단계는 비디오 데이터의 블록에 대한 하나 이상의 개선된 모션 벡터들을 결정하는 단계를 포함할 수 있다. 일부 예들에서, 하나 이상의 개선된 모션 벡터들은 제1 모션 벡터 및 제2 모션 벡터에 대해 각각 결정된 제1 개선된 모션 벡터 및 제2 개선된 모션 벡터를 포함할 수 있다. 일부 예들에서, 제1 모션 벡터 차이는 제1 개선된 모션 벡터와 제1 모션 벡터 사이의 차이로서 결정되고, 제2 모션 벡터 차이는 제2 개선된 모션 벡터와 제2 모션 벡터 사이의 차이로서 결정된다.
일부 예들에서, 선택된 모션 벡터 검색 전략은, 이전에 언급된 바와 같이, 양자간 매칭(BM) 모션 벡터 검색 전략이다. 선택된 모션 벡터 검색 전략이 BM 모션 벡터 검색 전략일 때, 하나 이상의 개선된 모션 벡터들을 결정하는 단계는 제1 모션 벡터 주위에서 제1 기준 픽처를 검색함으로써 제1 개선된 모션 벡터를 결정하는 단계를 포함할 수 있다. 제1 기준 픽처는 선택된 모션 벡터 검색 전략에 기초하여 제1 모션 벡터 주위에서 검색될 수 있다. 제2 개선된 모션 벡터는 선택된 모션 벡터 검색 전략에 기초하여 제2 모션 벡터 주위에서 제2 기준 픽처를 검색함으로써 결정될 수 있다. 선택된 모션 벡터 검색 전략은 모션 벡터 차이 제약(예컨대, 제1 및 제2 모션 벡터 차이가 동일한 크기를 갖지만 반대 부호를 갖는 미러링 제약, 제1 모션 벡터 차이를 0과 동일하게 설정하는 제약, 제2 모션 벡터 차이를 0과 동일하게 설정하는 제약 등)을 포함할 수 있다. 일부 예들에서, 제1 개선된 모션 벡터 및 제2 개선된 모션 벡터는 제1 개선된 모션 벡터와 연관된 제1 기준 블록과 제2 개선된 모션 벡터와 연관된 제2 기준 블록 사이의 차이를 최소화함으로써 결정될 수 있다.
블록(1110)에서, 프로세스(1100)는 하나 이상의 개선된 모션 벡터들을 사용하여 병합 모드 후보를 프로세싱하는 단계를 포함한다. 예를 들어, 도 1에 예시된 디코딩 디바이스(112)는 하나 이상의 개선된 모션 벡터들을 사용하여 병합 모드 후보를 프로세싱할 수 있다. 일부 예들에서, 도 1에 예시된 디코딩 디바이스(112)의 디코더 엔진(116)은 하나 이상의 개선된 모션 벡터들을 사용하여 병합 모드 후보를 프로세싱할 수 있다.
일부 구현들에서, 본 명세서에서 설명된 프로세스들(또는 방법들)은 도 1에 도시된 시스템(100)과 같은 컴퓨팅 디바이스 또는 장치에 의해 수행될 수 있다. 예를 들어, 프로세스는 도 1 및 도 12에 도시된 인코딩 디바이스(104)에 의해, 다른 비디오 소스 측 디바이스 또는 비디오 송신 디바이스에 의해, 도 1 및 도 13에 도시된 디코딩 디바이스(112)에 의해, 및/또는 플레이어 디바이스, 디스플레이 또는 임의의 다른 클라이언트 측 디바이스와 같은 다른 클라이언트 측 디바이스에 의해 수행될 수 있다. 일부 경우들에서, 컴퓨팅 디바이스 또는 장치는 하나 이상의 입력 디바이스들, 하나 이상의 출력 디바이스들, 하나 이상의 프로세서들, 하나 이상의 마이크로프로세서들, 하나 이상의 마이크로컴퓨터들, 및/또는 프로세스(1100)의 단계들을 실행하도록 구성되는 다른 컴포넌트(들)를 포함할 수 있다.
일부 예들에서, 컴퓨팅 디바이스는 무선 통신 디바이스, 예컨대 모바일 디바이스, 태블릿 컴퓨터, 확장 현실(XR) 디바이스(예컨대, 헤드 마운트 디스플레이(HMD)와 같은 가상 현실(VR) 디바이스, HMD 또는 AR 안경과 같은 증강 현실(AR) 디바이스, HMD 또는 MR 안경과 같은 혼합 현실(MR) 디바이스 등), 데스크톱 컴퓨터, 서버 컴퓨터 및/또는 서버 시스템, 차량 또는 차량의 컴퓨팅 시스템 또는 컴포넌트, 또는 다른 타입의 컴퓨팅 디바이스를 포함할 수 있다. 컴퓨팅 디바이스의 컴포넌트들(예컨대, 하나 이상의 입력 디바이스들, 하나 이상의 출력 디바이스들, 하나 이상의 프로세서들, 하나 이상의 마이크로프로세서들, 하나 이상의 마이크로컴퓨터들, 및/또는 다른 컴포넌트)은 회로부에서 구현될 수 있다. 예를 들어, 컴포넌트들은 하나 이상의 프로그래밍가능 전자 회로들(예컨대, 마이크로프로세서들, GPU(graphics processing unit)들, DSP(digital signal processor)들, CPU(central processing unit)들 및/또는 다른 적절한 전자 회로들)을 포함할 수 있는 전자 회로들 또는 다른 전자 하드웨어를 포함할 수 있고 그리고/또는 이들을 사용하여 구현될 수 있으며, 그리고/또는 본 명세서에서 설명되는 다양한 동작들을 수행하기 위해 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 포함할 수 있고 그리고/또는 이들을 사용하여 구현될 수 있다. 일부 예에서, 컴퓨팅 디바이스 또는 장치는 비디오 프레임들을 포함하는 비디오 데이터(예컨대, 비디오 시퀀스)를 캡처하도록 구성된 카메라를 포함할 수 있다. 일부 예들에서, 비디오 데이터를 캡처하는 카메라 또는 다른 캡처 디바이스는 컴퓨팅 디바이스로부터 분리되어 있으며, 이 경우 컴퓨팅 디바이스는 캡처된 비디오 데이터를 수신 또는 획득한다. 컴퓨팅 디바이스는 비디오 데이터를 통신하도록 구성된 네트워크 인터페이스를 포함할 수 있다. 네트워크 인터페이스는 인터넷 프로토콜(IP) 기반 데이터 또는 다른 타입의 데이터를 통신하도록 구성될 수 있다. 일부 예들에서, 컴퓨팅 디바이스 또는 장치는 비디오 비트스트림의 픽처들의 샘플들과 같은 출력 비디오 콘텐츠를 디스플레이하기 위한 디스플레이를 포함할 수 있다.
프로세스들은 논리 흐름도에 관해 기술될 수 있고, 그것들의 동작은 하드웨어, 컴퓨터 명령들 또는 이들의 조합으로 구현될 수 있는 동작들의 시퀀스를 표현한다. 컴퓨터 명령들과 관련하여, 동작들은 하나 이상의 컴퓨터 판독가능 저장 매체들 상에 저장된 컴퓨터 실행가능 명령들을 표현하며, 이러한 명령들은 하나 이상의 프로세서들에 의해 실행될 때, 열거된 동작들을 수행한다. 대체적으로, 컴퓨터 실행가능 명령들은 특정 기능들을 수행하거나 특정 데이터 타입들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 데이터 구조들 등을 포함한다. 동작들이 설명되는 순서는 제한으로서 해석되는 것으로 의도되지 않으며, 임의의 수의 설명되는 동작들이 임의의 순서로 그리고/또는 병렬로 조합되어 프로세스들을 구현할 수 있다.
추가적으로, 프로세스들은 실행가능 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에서 수행될 수 있고, 집합적으로 하나 이상의 프로세서들 상에서 실행하는 코드(예컨대, 실행가능 명령들, 하나 이상의 컴퓨터 프로그램들, 또는 하나 이상의 애플리케이션들)로서, 하드웨어에 의해, 또는 이들의 조합으로 구현될 수 있다. 위에서 언급된 바와 같이, 코드는 예를 들어, 하나 이상의 프로세서들에 의해 실행가능한 복수의 명령들을 포함하는 컴퓨터 프로그램의 형태로, 컴퓨터 판독가능 또는 머신 판독가능 저장 매체 상에 저장될 수 있다. 컴퓨터 판독가능 또는 머신 판독가능 저장 매체는 비일시적일 수 있다.
본 명세서에서 논의된 코딩 기법들은 일례의 비디오 인코딩 및 디코딩 시스템(예컨대, 시스템(100))에서 구현될 수 있다. 일부 예들에서, 시스템이 목적지 디바이스에 의해 나중에 디코딩될 인코딩된 비디오 데이터를 제공하는 소스 디바이스를 포함한다. 특히, 소스 디바이스는 비디오 데이터를, 컴퓨터 판독가능 매체를 통해 목적지 디바이스에 제공한다. 소스 디바이스 및 목적지 디바이스는 데스크톱 컴퓨터들, 노트북(즉, 랩톱) 컴퓨터들, 태블릿 컴퓨터들, 셋톱 박스들, 소위 "스마트" 폰들과 같은 전화기 핸드셋들, 소위 "스마트" 패드들, 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 콘솔들, 비디오 스트리밍 디바이스 등을 포함한 광범위한 디바이스들 중 임의의 디바이스를 포함할 수 있다. 일부 경우들에서, 소스 디바이스 및 목적지 디바이스는 무선 통신을 위해 장비될 수 있다.
목적지 디바이스는 디코딩될 인코딩된 비디오 데이터를 컴퓨터 판독가능 매체를 통해 수신할 수 있다. 컴퓨터 판독가능 매체는 인코딩된 비디오 데이터를 소스 디바이스로부터 목적지 디바이스로 이동시킬 수 있는 임의의 타입의 매체 또는 디바이스를 포함할 수 있다. 일례에서, 컴퓨터 판독가능 매체는, 소스 디바이스로 하여금 인코딩된 비디오 데이터를 직접 목적지 디바이스로 실시간으로 송신할 수 있게 하는 통신 매체를 포함할 수 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되고, 목적지 디바이스로 송신될 수 있다. 통신 매체는 무선 주파수(RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 매체는 패킷 기반 네트워크, 예컨대 근거리 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크의 일부를 형성할 수 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스로부터 목적지 디바이스로의 통신을 용이하게 하는데 유용할 수 있는 임의의 다른 장비를 포함할 수 있다.
일부 예들에서, 인코딩된 데이터는 출력 인터페이스로부터 저장 디바이스로 출력될 수 있다. 유사하게, 인코딩된 데이터는 입력 인터페이스에 의해 저장 디바이스로부터 액세스될 수 있다. 저장 디바이스는 하드 드라이브, 블루-레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적합한 디지털 저장 매체들과 같은 다양한 분산된 또는 국부적으로 액세스된 데이터 저장 매체들 중 임의의 데이터 저장 매체를 포함할 수 있다. 추가의 예에서, 저장 디바이스는, 소스 디바이스에 의해 생성된 인코딩된 비디오를 저장할 수 있는 파일 서버 또는 다른 중간 저장 디바이스에 대응할 수 있다. 목적지 디바이스는, 스트리밍 또는 다운로드를 통해 저장 디바이스로부터 저장된 비디오 데이터에 액세스할 수 있다. 파일 서버는, 인코딩된 비디오 데이터를 저장하고 그리고 그 인코딩된 비디오 데이터를 목적지 디바이스에 송신하는 것이 가능한 임의의 타입의 서버일 수 있다. 예의 파일 서버들은 웹 서버(예컨대, 웹사이트용), FTP 서버, NAS(network attached storage) 디바이스들, 또는 로컬 디스크 드라이브를 포함한다. 목적지 디바이스는 인코딩된 비디오 데이터에, 인터넷 커넥션을 포함한 임의의 표준 데이터 커넥션을 통해 액세스할 수 있다. 이는 무선 채널(예컨대, Wi-Fi 접속), 유선 접속(예컨대, DSL, 케이블 모뎀 등), 또는 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하기에 적합한 둘 모두의 조합을 포함할 수 있다. 인코딩된 비디오 데이터의 저장 디바이스로부터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이들의 조합일 수 있다.
본 개시내용의 기법들은 무선 애플리케이션들 또는 설정들로 반드시 한정되는 것은 아니다. 기술들은 다양한 멀티미디어 애플리케이션들, 예를 들어, 오버-디- 에어 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 인터넷 스트리밍 비디오 송신들, 예를 들어, DASH(dynamic adaptive streaming over HTTP), 데이터 저장 매체 상에 인코딩된 디지털 비디오, 데이터 저장 매체 상에 저장된 디지털 비디오의 디코딩 또는 다른 애플리케이션들 중 임의의 것의 지원으로 비디오 코딩에 적용될 수 있다. 일부 예들에서, 시스템은, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅 및/또는 비디오 전화 등의 애플리케이션들을 지원하기 위하여 일방향 또는 양방향 비디오 송신을 지원하도록 구성될 수 있다.
하나의 예에서 소스 디바이스는 비디오 소스, 비디오 인코더, 및 출력 인터페이스를 포함한다. 목적지 디바이스는 입력 인터페이스, 비디오 디코더, 및 디스플레이 디바이스를 포함할 수 있다. 소스 디바이스의 비디오 인코더는 여기에 개시된 기술들을 적용하도록 구성 될 수 있다. 다른 예들에서, 소스 디바이스 및 목적지 디바이스는 다른 컴포넌트들 또는 어레인지먼트들을 포함할 수 있다. 예를 들어, 소스 디바이스는 외부 카메라와 같은 외부 비디오 소스로부터 비디오 데이터를 수신할 수 있다. 유사하게, 목적지 디바이스는 통합된 디스플레이 디바이스를 포함하는 것보다는 외부 디스플레이 디바이스와 인터페이싱할 수 있다.
위의 예시적인 시스템은 단지 하나의 예이다. 비디오 데이터를 병렬로 프로세싱하기 위한 기술들은 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수 있다. 비록 대체적으로 본 개시내용의 기술들이 비디오 인코딩 디바이스에 의해 수행되지만, 그 기술들은 또한, 통상적으로 "CODEC"로서 지칭되는 비디오 인코더/디코더에 의해 수행될 수 있다. 또한, 본 개시내용의 기술들은 비디오 프리프로세서에 의해 수행될 수 있다. 소스 디바이스 및 목적지 디바이스는, 단지, 소스 디바이스가 목적지 디바이스로의 송신을 위한 코딩된 비디오 데이터를 생성하는 그러한 코딩 디바이스들의 예들일 뿐이다. 일부 예들에서, 소스 및 목적지 디바이스들은, 디바이스들 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭적인 방식으로 동작할 수 있다. 따라서, 예시의 시스템들은 예를 들어, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 또는 비디오 전화를 위해, 비디오 디바이스들 간의 일방향 또는 양방향 비디오 송신을 지원할 수 있다.
비디오 소스는 비디오 카메라와 같은 비디오 캡처 디바이스, 이전에 캡처된 비디오를 포함하는 비디오 아카이브, 및/또는 비디오 콘텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스를 포함할 수 있다. 추가의 대안으로서, 비디오 소스는 소스 비디오, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 생성된 비디오의 조합으로서 컴퓨터 그래픽 기반 데이터를 생성할 수 있다. 일부 경우들에서, 비디오 소스가 비디오 카메라이면, 소스 디바이스 및 목적지 디바이스는 소위 카메라 폰들 또는 비디오 폰들을 형성할 수 있다. 그러나, 상기 언급된 바와 같이, 본 개시내용에서 설명된 기법들은 대체적으로 비디오 코딩에 적용가능할 수 있고, 무선 및/또는 유선 애플리케이션들에 적용될 수 있다. 각각의 경우에, 캡처된, 미리캡처된, 또는 컴퓨터-생성된 비디오는 비디오 인코더에 의해 인코딩될 수 있다. 인코딩된 비디오 정보는 그 후 컴퓨터 판독가능 매체 상으로 출력 인터페이스에 의해 출력될 수 있다.
언급된 바와 같이, 컴퓨터 판독가능 매체는 무선 브로드캐스트 또는 유선 네트워크 송신과 같은 일시적 매체들, 또는 하드 디스크, 플래시 드라이브, 콤팩트 디스크, 디지털 비디오 디스크, 블루-레이 디스크, 또는 다른 컴퓨터 판독가능 매체들과 같은 저장 매체들(즉, 비일시적 저장 매체들)을 포함할 수 있다. 일부 예들에서, 네트워크 서버(도시되지 않음)는 인코딩된 비디오 데이터를 소스 디바이스로부터 수신하고, 인코딩된 비디오 데이터를, 예를 들어, 네트워크 송신을 통해 목적지 디바이스에 제공할 수 있다. 유사하게, 디스크 스탬핑 설비와 같은 매체 생성 설비의 컴퓨팅 디바이스는 인코딩된 비디오 데이터를 소스 디바이스로부터 수신하고, 인코딩된 비디오 데이터를 포함하는 디스크를 생성할 수 있다. 따라서, 컴퓨터 판독가능 매체는, 다양한 예들에서, 다양한 형태들의 하나 이상의 컴퓨터 판독가능 매체들을 포함하도록 이해될 수 있다.
목적지 디바이스의 입력 인터페이스는 컴퓨터 판독가능 매체로부터 정보를 수신한다. 컴퓨터 판독가능 매체의 정보는 비디오 인코더에 의해 정의되고 또한 비디오 디코더에 의해 이용되는 신택스 정보를 포함할 수 있으며, 이 신택스 정보는 블록들 및 다른 코딩된 유닛들, 예를 들어, 화상들의 그룹(GOP)의 특성 및/또는 프로세싱을 기술하는 신택스 엘리먼트들을 포함한다. 디스플레이 디바이스는 디코딩된 비디오 데이터를 사용자에게 디스플레이하며, 음극선관(CRT), 액정 디스플레이(LCD), 플라즈마 디스플레이, 유기 발광 다이오드(OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 디바이스를 포함할 수 있다. 본 출원의 다양한 양태들이 설명되었다.
인코딩 디바이스(104) 및 디코딩 디바이스(112)의 특정 세부사항들은 각각 도 12 및 도 13에 도시된다. 도 12는 본 개시내용에서 설명된 기법들 중 하나 이상을 구현할 수 있는 예시적인 인코딩 디바이스(104)를 예시하는 블록도이다. 인코딩 디바이스(104)는, 예를 들어, 본 명세서에서 설명되는 신택스 구조들(예컨대, VPS, SPS, PPS, 또는 다른 신택스 엘리먼트들의 신택스 구조들)을 생성할 수 있다. 인코딩 디바이스(104)는 비디오 슬라이스들 내의 비디오 블록들의 인트라 예측 및 인터 예측 코딩을 수행할 수 있다. 이전에 설명된 바와 같이, 인트라 코딩은 주어진 비디오 프레임 또는 픽처 내에서 공간적 리던던시를 감소시키거나 또는 제거하기 위해 공간적 예측에 적어도 부분적으로 의존한다. 인터 코딩은, 비디오 시퀀스의 인접한 또는 주위의 프레임들 내의 시간적 리던던시를 감소시키거나 또는 제거하기 위해 시간적 예측에 적어도 부분적으로 의존한다. 인트라 모드(I 모드)는 여러 공간적 기반의 압축 모드들 중 임의의 것을 지칭할 수 있다. 단방향 예측(P 모드) 또는 양방향 예측(B 모드)과 같은 인터 모드들은 수개의 시간적 기반 압축 모드들 중 임의의 모드를 지칭할 수 있다.
인코딩 디바이스(104)는 파티셔닝 유닛(35), 예측 프로세싱 유닛(41), 필터 유닛(63), 픽처 메모리(64), 합산기(50), 변환 프로세싱 유닛(52), 양자화 유닛(54), 및 엔트로피 인코딩 유닛(56)을 포함한다. 예측 프로세싱 유닛(41)은 모션 추정 유닛(42), 모션 보상 유닛(44), 및 인트라 예측 프로세싱 유닛(46)을 포함한다. 비디오 블록 재구성을 위해, 인코딩 디바이스(104)는 역양자화 유닛(58), 역변환 프로세싱 유닛(60), 및 합산기(62)를 또한 포함한다. 필터 유닛(63)은 블록화제거 필터, 적응적 루프 필터(adaptive loop filter, ALF), 및 샘플 적응 오프셋(sample adaptive offset, SAO) 필터와 같은 하나 이상의 루프 필터들을 표현하도록 의도된다. 필터 유닛(63)이 루프내 필터인 것으로 도 12에 도시되어 있지만, 다른 구성들에서, 필터 유닛(63)은 사후 루프 필터로서 구현될 수 있다. 포스트 프로세싱 디바이스(57)가 인코딩 디바이스(104)에 의해 생성되는 인코딩된 비디오 데이터에 대해 추가적인 프로세싱을 수행할 수 있다. 본 개시내용의 기법들은 일부 경우들에서 인코딩 디바이스(104)에 의해 구현될 수 있다. 그러나, 다른 경우들에서, 본 개시내용의 기법들 중 하나 이상은 포스트 프로세싱 디바이스(57)에 의해 구현될 수 있다.
도 12에 도시된 바와 같이, 인코딩 디바이스(104)는 비디오 데이터를 수신하고, 파티셔닝 유닛(35)은 그 데이터를 비디오 블록들로 파티셔닝한다. 파티셔닝은 또한, 예를 들어, LCU 및 CU 들의 쿼드트리 구조에 따른, 비디오 블록 파티셔닝뿐만 아니라 슬라이스들, 슬라이스 세그먼트들, 타일들 또는 다른 더 큰 유닛들로의 파티셔닝을 포함할 수 있다. 인코딩 디바이스(104)는 인코딩될 비디오 슬라이스 내의 비디오 블록들을 인코딩하는 컴포넌트들을 대체적으로 예시한다. 슬라이스는 다수의 비디오 블록들로 (그리고 아마도 타일들로서 지칭되는 비디오 블록들의 세트들로) 분할될 수 있다. 예측 프로세싱 유닛(41)은 복수의 가능한 코딩 모드들 중 하나, 예컨대 복수의 인트라 예측 코딩 모드들 중 하나 또는 복수의 인터 예측 코딩 모드들 중 하나를 오차 결과들(예컨대, 코딩 레이트와 왜곡 레벨 등)에 기초하여 현재 비디오 블록에 대해 선택할 수 있다. 예측 프로세싱 유닛(41)은 결과적인 인트라 또는 인터 코딩된 블록을 합산기(50)에 제공하여 잔차 블록 데이터를 생성하고, 합산기(62)에 제공하여 기준 픽처로서의 사용을 위한 인코딩된 블록을 재구성할 수 있다.
예측 프로세싱 유닛(41) 내의 인트라 예측 프로세싱 유닛(46)은 코딩될 현재 블록과 동일한 프레임 또는 슬라이스에서의 하나 이상의 이웃 블록들을 기준으로 현재 비디오 블록의 인트라 예측 코딩을 수행하여 공간적 압축을 제공할 수 있다. 예측 프로세싱 유닛(41) 내의 모션 추정 유닛(42) 및 모션 보상 유닛(44)은 하나 이상의 기준 픽처들에서의 하나 이상의 예측성 블록들을 기준으로 현재 비디오 블록의 인터 예측 코딩을 수행하여 시간적 압축을 제공한다.
모션 추정 유닛(42)은 비디오 시퀀스에 대한 미리결정된 패턴에 따라 비디오 슬라이스에 대해 인터 예측 모드를 결정하도록 구성될 수 있다. 미리결정된 패턴은 시퀀스에서의 비디오 슬라이스들을 P 슬라이스들, B 슬라이스들 또는 GPB 슬라이스들로서 지정할 수 있다. 모션 추정 유닛(42) 및 모션 보상 유닛(44)은 고도로 집적화될 수 있지만, 개념적 목적들을 위해 별개로 예시되어 있다. 모션 추정 유닛(42)에 의해 수행된 모션 추정은 비디오 블록들을 위한 모션을 추정하는 모션 벡터들을 생성하는 프로세스이다. 모션 벡터가, 예를 들어, 기준 픽처 내의 예측성 블록에 대한 현재 비디오 프레임 또는 픽처 내의 비디오 블록의 예측 유닛(PU)의 변위를 나타낼 수 있다.
예측 블록은 픽셀 차이의 관점에서 코딩될 비디오 블록의 PU와 밀접하게 매칭되도록 발견되는 블록이며, 이 픽셀 차이는 절대 차이의 합(SAD), 제곱 차이의 합(SSD), 또는 다른 차이 메트릭들에 의해 결정될 수 있다. 일부 예들에서, 인코딩 디바이스(104)는 픽처 메모리(64)에 저장된 기준 픽처들의 부정수(sub-integer) 픽셀 위치들에 대한 값들을 산출할 수 있다. 예를 들어, 인코딩 디바이스(104)는 기준 픽처의 1/4 픽셀 위치들, 1/8 픽셀 위치들, 또는 다른 분수(fractional) 픽셀 위치들의 값들을 보간할 수 있다. 따라서, 모션 추정 유닛(42)은 풀 픽셀 포지션들 및 분수 픽셀 포지션들에 관한 모션 검색을 수행하고, 분수 픽셀 정밀도로 모션 벡터를 출력할 수 있다.
모션 추정 유닛(42)은 인터 코딩된 슬라이스에서의 비디오 블록의 PU에 대한 모션 벡터를, 그 PU의 포지션을 기준 픽처의 예측 블록의 포지션과 비교함으로써 계산한다. 기준 픽처는 픽처 메모리(64)에 저장된 하나 이상의 기준 픽처들을 각각 식별하는 제1 기준 픽처 목록(List 0) 또는 제2 기준 픽처 목록(List 1)으로부터 선택될 수 있다. 모션 추정 유닛(42)은 계산된 모션 벡터를 엔트로피 인코딩 유닛(56) 및 모션 보상 유닛(44)으로 전송한다.
모션 보상 유닛(44)에 의해 수행된 모션 보상은, 모션 추정에 의해 결정된 모션 벡터에 기초하여 예측 블록을 페칭 또는 생성하는 것을, 가능하게는 서브-픽셀 정밀도에 대한 보간들을 수행하는 것을 수반할 수 있다. 현재 비디오 블록의 PU에 대한 모션 벡터를 수신 시, 모션 보상 유닛(44)은 기준 픽처 목록에서 모션 벡터가 가리키는 예측성 블록을 찾을 수 있다. 인코딩 디바이스(104)는, 코딩되고 있는 현재 비디오 블록의 픽셀 값들로부터 예측성 블록의 픽셀 값들을 감산하여 픽셀 차이 값들을 형성함으로써 잔차 비디오 블록을 형성한다. 픽셀 차이 값들은 블록에 대한 잔차 데이터를 형성하고, 루마 및 크로마 차이 컴포넌트들 양자를 포함할 수 있다. 합산기(50)는 이러한 감산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 표현한다. 모션 보상 유닛(44)은 비디오 슬라이스의 비디오 블록들을 디코딩함에 있어서 디코딩 디바이스(112)에 의한 사용을 위해 비디오 블록들 및 비디오 슬라이스에 연관된 신택스 엘리먼트들을 또한 생성할 수 있다.
인트라 예측 프로세싱 유닛(46)은, 위에서 기술된 바와 같이, 모션 추정 유닛(42) 및 모션 보상 유닛(44)에 의해 수행된 인터 예측에 대한 대안으로서 현재 블록을 인트라 예측할 수 있다. 특히, 인트라 예측 프로세싱 유닛(46)은 현재 블록을 인코딩하는데 사용하기 위한 인트라 예측 모드를 결정할 수 있다. 일부 예들에서, 인트라 예측 프로세싱 유닛(46)은 예를 들어 별개의 인코딩 패스들 동안에 다양한 인트라 예측 모드들을 이용하여 현재 블록을 인코딩할 수 있으며, 인트라 예측 프로세싱 유닛(46)은 테스팅된 모드들로부터의 이용을 위해 적절한 인트라 예측 모드를 선택할 수 있다. 예를 들어, 인트라 예측 프로세싱 유닛(46)은 다양한 테스트된 인트라 예측 모드들에 대한 레이트 왜곡 분석을 사용하여 레이트 왜곡 값들을 산출하고, 테스트된 모드들 중에서 최상의 레이트 왜곡 특성들을 갖는 인트라 예측 모드를 선택할 수 있다. 레이트 왜곡 분석은 대체적으로, 인코딩된 블록과 인코딩된 블록을 생성하기 위해 인코딩되었던 원래의 인코딩되지 않은 블록 사이의 왜곡(또는 오차)의 양, 뿐만 아니라 인코딩된 블록을 생성하는데 사용된 비트 레이트(다시 말하면, 비트들의 수)를 결정한다. 인트라 예측 프로세싱 유닛(46)은 어떤 인트라 예측 모드가 그 블록에 대한 최상의 레이트 왜곡 값을 나타내는지를 결정하기 위해 다양한 인코딩된 블록들에 대한 왜곡들 및 레이트들로부터 비율들을 산출할 수 있다.
어느 경우에나, 블록에 대한 인트라 예측 모드를 선택한 후, 인트라 예측 프로세싱 유닛(46)은 그 블록에 대한 선택된 인트라 예측 모드를 나타내는 정보를 엔트로피 인코딩 유닛(56)에 제공할 수 있다. 엔트로피 인코딩 유닛(56)은 선택된 인트라 예측 모드를 표시하는 정보를 인코딩할 수 있다. 인코딩 디바이스(104)는 다양한 블록들에 대한 콘텍스트들을 인코딩하는 구성 데이터 정의들뿐만 아니라 콘텍스트들의 각각을 위해 사용할 가장 가능성 있는 인트라 예측 모드, 인트라 예측 모드 인덱스 테이블, 및 수정된 인트라 예측 모드 인덱스 테이블의 표시들을 송신되는 비트스트림에 포함시킬 수 있다. 비트스트림 구성 데이터는 복수의 인트라 예측 모드 인덱스 테이블들과 복수의 수정된 인트라 예측 모드 인덱스 테이블들(코드워드 맵핑 테이블들이라고 또한 지칭됨)을 포함할 수 있다.
예측 프로세싱 유닛(41)이 인터 예측 또는 인트라 예측 중 어느 하나를 통해 현재 비디오 블록에 대한 예측성 블록을 생성한 후, 인코딩 디바이스(104)는 현재 비디오 블록으로부터 예측성 블록을 감산함으로써 잔차 비디오 블록을 형성한다. 잔차 블록에서의 잔차 비디오 데이터는 하나 이상의 TU들 내에 포함될 수 있고 변환 프로세싱 유닛(52)에 적용될 수 있다. 변환 프로세싱 유닛(52)은 이산 코사인 변환(discrete cosine transform; DCT) 또는 개념적으로 유사한 변환과 같은 변환을 이용하여 잔차 비디오 데이터를 잔차 변환 계수들로 변환한다. 변환 프로세싱 유닛(52)은 잔차 비디오 데이터를 픽셀 도메인으로부터, 주파수 도메인과 같은 변환 도메인으로 변환할 수 있다.
변환 프로세싱 유닛(52)은 결과적 변환 계수들을 양자화 유닛(54)에 전송할 수 있다. 양자화 유닛(54)은 비트 레이트를 추가로 감소시키기 위해 변환 계수들을 양자화한다. 양자화 프로세스는 그 계수들의 일부 또는 모두와 연관되는 비트 심도를 감소시킬 수 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수 있다. 그 후, 일부 예들에서, 양자화 유닛(54)은, 양자화된 변환 계수들을 포함하는 매트릭스의 스캔을 수행할 수 있다. 대안적으로, 엔트로피 인코딩 유닛(56)은 스캔을 수행할 수 있다.
양자화 이후, 엔트로피 인코딩 유닛(56)은 양자화된 변환 계수들을 엔트로피 인코딩한다. 예를 들어, 엔트로피 인코딩 유닛(56)은 콘텍스트 적응 가변 길이 코딩(CAVLC), 콘텍스트 적응 이진 산술 코딩(CABAC), 신택스 기반 콘텍스트 적응 이진 산술 코딩(SBAC), 확률 간격 파티셔닝 엔트로피(PIPE) 코딩 또는 다른 엔트로피 인코딩 기법을 수행할 수 있다. 엔트로피 인코딩 유닛(56)에 의한 엔트로피 인코딩에 뒤이어, 인코딩된 비트스트림은 디코딩 디바이스(112)로 송신되거나 또는 나중의 송신 또는 디코딩 디바이스(112)에 의한 취출을 위해 보관될 수 있다. 엔트로피 인코딩 유닛(56)은 또한, 코딩되고 있는 현재의 비디오 슬라이스에 대한 모션 벡터들 및 다른 신택스 엘리먼트들을 엔트로피 인코딩할 수 있다.
역양자화 유닛(58) 및 역변환 프로세싱 유닛(60)은, 각각, 역양자화 및 역변환을 적용하여, 기준 픽처의 기준 블록으로서의 나중의 사용을 위해 픽셀 도메인에서 잔차 블록을 재구성한다. 모션 보상 유닛(44)은 기준 픽처 목록 내의 기준 픽처들 중 하나의 기준 픽처의 예측성 블록에 잔차 블록을 가산함으로써 기준 블록을 산출할 수 있다. 모션 보상 유닛(44)은 또한, 하나 이상의 보간 필터들을 재구성된 잔차 블록에 적용하여, 모션 추정에서의 사용을 위한 서브-정수 픽셀 값들을 계산할 수 있다. 합산기(62)는 재구성된 잔차 블록을 모션 보상 유닛(44)에 의해 생성된 모션 보상된 예측 블록에 가산하여, 픽처 메모리(64)에서의 저장을 위한 기준 블록을 생성한다. 기준 블록은, 후속 비디오 프레임 또는 화상에서의 블록을 인터 예측하기 위해 기준 블록으로서 모션 추정 유닛(42) 및 모션 보상 유닛(44)에 의해 사용될 수 있다.
이러한 방식으로, 도 12의 인코딩 디바이스(104)는, 도 11에 관련하여 전술된 프로세스를 포함하여, 본 명세서에서 설명된 기법들 중 임의의 기법을 수행하도록 구성된 비디오 인코더의 일례를 나타낸다. 일부 경우들에서, 본 개시내용의 기법들 중 일부는 포스트 프로세싱 디바이스(57)에 의해 또한 구현될 수 있다.
도 13은 예시적인 디코딩 디바이스(112)를 예시하는 블록도이다. 디코딩 디바이스(112)는 엔트로피 디코딩 유닛(80), 예측 프로세싱 유닛(81), 역양자화 유닛(86), 역변환 프로세싱 유닛(88), 합산기(90), 필터 유닛(91), 및 픽처 메모리(92)를 포함한다. 예측 프로세싱 유닛(81)은 모션 보상 유닛(82)과 인트라 예측 프로세싱 유닛(84)을 포함한다. 디코딩 디바이스(112)는, 일부 예들에서, 도 12로부터의 인코딩 디바이스(104)와 관련하여 설명된 인코딩 패스에 일반적으로 역인 디코딩 패스를 수행할 수 있다.
디코딩 프로세스 동안, 디코딩 디바이스(112)는 인코딩 디바이스(104)에 의해 전송되는 인코딩된 비디오 슬라이스의 비디오 블록들 및 연관된 신택스 엘리먼트들을 나타내는 인코딩된 비디오 비트스트림을 수신한다. 일부 양태들에서, 디코딩 디바이스(112)는 인코딩 디바이스(104)로부터 인코딩된 비디오 비트스트림을 수신할 수 있다. 일부 양태들에서, 디코딩 디바이스(112)는 서버, 미디어 인식 네트워크 엘리먼트(media-aware network element, MANE), 비디오 편집자/스플라이서(splicer), 또는 전술된 기법들 중 하나 이상을 구현하도록 구성된 다른 그러한 디바이스와 같은 네트워크 엔티티(79)로부터 인코딩된 비디오 비트스트림을 수신할 수 있다. 네트워크 엔티티(79)는 인코딩 디바이스(104)를 포함할 수 있거나 또는 포함하지 않을 수 있다. 본 개시내용에서 설명되는 기법들 중 일부는 네트워크 엔티티(79)가 인코딩된 비디오 비트스트림을 디코딩 디바이스(112)로 송신하기 전에 네트워크 엔티티(79)에 의해 구현될 수 있다. 일부 비디오 디코딩 시스템들에서, 네트워크 엔티티(79)와 디코딩 디바이스(112)는 별개의 디바이스들의 부분들일 수 있지만, 다른 경우들에서, 네트워크 엔티티(79)에 관해 설명된 기능은 디코딩 디바이스(112)를 포함하는 동일한 디바이스에 의해 구현될 수 있다.
디코딩 디바이스(112)의 엔트로피 디코딩 유닛(80)은 그 비트스트림을 엔트로피 디코딩하여 양자화된 계수들, 모션 벡터들, 및 다른 신택스 엘리먼트들을 생성한다. 엔트로피 디코딩 유닛(80)은 모션 벡터들 및 다른 신택스 엘리먼트들을 예측 프로세싱 유닛(81)으로 포워딩한다. 디코딩 디바이스(112)는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 신택스 엘리먼트들을 수신할 수 있다. 엔트로피 디코딩 유닛(80)은 VPS, SPS, 및 PPS와 같은 하나 이상의 파라미터 세트들에서 고정 길이 신택스 엘리먼트들 및 가변 길이 신택스 엘리먼트들 양쪽 모두를 프로세싱하고 파싱할 수 있다.
비디오 슬라이스가 인트라 코딩된(I) 슬라이스로서 코딩될 때, 예측 프로세싱 유닛(81)의 인트라 예측 프로세싱 유닛(84)은 현재 비디오 슬라이스의 비디오 블록에 대한 예측 데이터를 현재 프레임 또는 픽처의 이전에 디코딩된 블록들로부터의 시그널링된 인트라 예측 모드 및 데이터에 기초하여 생성할 수 있다. 비디오 프레임이 인터 코딩된(즉, B, P, 또는 GPB) 슬라이스로서 코딩되는 경우, 예측 프로세싱 유닛(81)의 모션 보상 유닛(82)은 엔트로피 디코딩 유닛(80)으로부터 수신된 모션 벡터들 및 다른 신택스 엘리먼트들에 기초하여, 현재 비디오 슬라이스의 비디오 블록에 대한 예측성 블록들을 생성한다. 예측성 블록들은 기준 픽처 목록 내의 기준 픽처들 중 하나로부터 생성될 수 있다. 디코딩 디바이스(112)는 픽처 메모리(92)에 저장된 기준 픽처들에 기초하여 디폴트 구축 기법들을 사용하여, 기준 프레임 목록들(List 0 및 List 1)을 구축할 수 있다.
모션 보상 유닛(82)은, 모션 벡터들 및 다른 신택스 엘리먼트들을 파싱(parsing)함으로써 현재 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 디코딩되는 현재 비디오 블록에 대한 예측 블록들을 생성하기 위해 예측 정보를 이용한다. 예를 들어, 모션 보상 유닛(82)은 파라미터 세트에서의 하나 이상의 신택스 엘리먼트들을 사용하여, 비디오 슬라이스의 비디오 블록들을 코딩하는데 사용된 예측 모드(예컨대, 인트라 예측 또는 인터 예측), 인터 예측 슬라이스 타입(예컨대, B 슬라이스, P 슬라이스, 또는 GPB 슬라이스), 슬라이스에 대한 하나 이상의 기준 픽처 목록들에 대한 구축 정보, 슬라이스의 각각의 인터 인코딩된 비디오 블록에 대한 모션 벡터들, 슬라이스의 각각의 인터 코딩된 비디오 블록에 대한 인터 예측 스테이터스, 및 현재 비디오 슬라이스에서의 비디오 블록들을 디코딩하기 위한 다른 정보를 결정할 수 있다.
모션 보상 유닛(82)은 또한 보간 필터들에 기초하여 보간을 수행할 수 있다. 모션 보상 유닛(82)은 비디오 블록들의 인코딩 동안에 인코딩 디바이스(104)에 의해 사용된 바와 같은 보간 필터들을 사용하여 기준 블록들의 부정수 픽셀들에 대한 보간된 값들을 산출할 수 있다. 이 경우, 모션 보상 유닛(82)은 수신된 신택스 엘리먼트들로부터 인코딩 디바이스(104)에 의해 사용된 보간 필터들을 결정할 수 있고, 그 보간 필터들을 사용하여 예측성 블록들을 생성할 수 있다.
역양자화 유닛(86)은 비트스트림으로 제공되고 엔트로피 디코딩 유닛(80)에 의해 디코딩된 양자화된 변환 계수들을 역양자화, 즉, 탈양자화한다. 역양자화 프로세스는 양자화 정도와, 마찬가지로, 적용되어야 할 역양자화의 정도를 결정하기 위해, 비디오 슬라이스에서의 각각의 비디오 블록에 대해 인코딩 디바이스(104)에 의해 산출된 양자화 파라미터의 사용을 포함할 수 있다. 역변환 프로세싱 유닛(88)은 픽셀 도메인에서 잔차 블록들을 생성하기 위하여 역변환(예컨대, 역 DCT 또는 다른 적합한 역변환), 역 정수 변환, 또는 개념적으로 유사한 역변환 프로세스를 변환 계수들에 적용한다.
모션 보상 유닛(82)이 현재 비디오 블록에 대한 예측성 블록을 모션 벡터들 및 다른 신택스 엘리먼트들에 기초하여 생성한 후, 디코딩 디바이스(112)는 역변환 프로세싱 유닛(88)으로부터의 잔차 블록들을 모션 보상 유닛(82)에 의해 생성된 대응하는 예측성 블록들과 합산함으로써 디코딩된 비디오 블록을 형성한다. 합산기(90)는 이 합산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 원한다면, 루프 필터들이 (코딩 루프 내 또는 코딩 루프 뒤 중 어느 하나에서) 픽셀 전환(transition)들을 부드럽게 하기 위해, 또는 그렇지 않으면 비디오 품질을 향상시키기 위해 또한 사용될 수 있다. 필터 유닛(91)은 블록화제거 필터, 적응적 루프 필터(adaptive loop filter, ALF), 및 샘플 적응 오프셋(sample adaptive offset, SAO) 필터와 같은 하나 이상의 루프 필터들을 표현하도록 의도된다. 필터 유닛(91)이 루프내 필터인 것으로 도 8에 도시되어 있지만, 다른 구성들에서, 필터 유닛(91)은 사후 루프 필터로서 구현될 수 있다. 주어진 프레임 또는 픽처에서의 디코딩된 비디오 블록들은 그러면 픽처 메모리(92)에 저장되며, 그 픽처 메모리는 후속 모션 보상을 위해 사용되는 기준 픽처들을 저장한다. 픽처 메모리(92)는 디스플레이 디바이스, 예컨대 도 1에 도시된 비디오 목적지 디바이스(122) 상의 나중의 프레젠테이션을 위해 디코딩된 비디오를 또한 저장한다.
이러한 방식으로, 도 13의 디코딩 디바이스(112)는, 도 11에 관련하여 전술된 프로세스를 포함하여, 본 명세서에서 설명된 기법들 중 임의의 기법을 수행하도록 구성된 비디오 디코더의 일례를 나타낸다.
본 명세서에 사용된 바와 같이, 용어 "컴퓨터 판독가능 매체(computer-readable medium)"는, 휴대 또는 비휴대 저장 디바이스, 광학 저장 디바이스, 및 명령(들) 및/또는 데이터를 저장, 포함 또는 운반할 수 있는 다양한 다른 매체를 포함하지만, 이에 한정되지는 않는다. 컴퓨터 판독가능 매체는 데이터가 저장될 수 있고 무선으로 또는 유선 연결들을 통해 전파되는 반송파들 및/또는 일시적 전자 신호들을 포함하지 않는 비일시적 매체를 포함할 수 있다. 비일시적 매체의 예들은 자기 디스크 또는 테이프, CD(compact disk) 또는 DVD(digital versatile disk)와 같은 광학 저장 매체들, 플래시 메모리, 메모리 또는 메모리 디바이스들을 포함할 수 있지만, 이것들로 제한되지는 않는다. 컴퓨터 판독가능 매체 상에는 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들 또는 프로그램 명령문들의 임의의 조합을 나타낼 수 있는 코드 및/또는 머신 실행가능 명령들이 저장될 수 있다. 코드 세그먼트는 정보, 데이터, 독립변수(argument)들, 파라미터들, 또는 메모리 콘텐츠를 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수 있다. 정보, 독립변수들, 파라미터들, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함하는 임의의 적당한 수단을 통해 전달, 포워딩 또는 송신될 수 있다.
일부 양태들에서, 컴퓨터 판독가능 저장 디바이스들, 매체들 및 메모리들은 비트스트림 등을 포함하는 케이블 또는 무선 신호를 포함할 수 있다 그러나 언급될 때, 비일시적 컴퓨터 판독가능 저장 매체들은 에너지, 반송파 신호들, 전자파들, 및 신호들 그 자체와 같은 매체들을 명시적으로 배제한다.
본 명세서에서 제공되는 양태들 및 예들의 철저한 이해를 제공하기 위해, 특정 세부사항들이 상기의 설명에서 제공된다. 하지만, 그 양태들은 이들 특정 상세들 없이도 실시될 수 있음이 당업자에 의해 이해될 것이다. 설명의 명확성을 위해, 일부 경우들에서, 본 기술은 디바이스들, 디바이스 컴포넌트들, 소프트웨어로 구현되는 방법의 단계들 또는 루틴들, 또는 하드웨어와 소프트웨어의 조합들을 포함하는 기능 블록들을 포함하는 개별 기능 블록들을 포함하는 것으로 제시될 수 있다. 도면들에 도시된 그리고/또는 본 명세서에서 설명되는 것들 이외의 추가 컴포넌트들이 사용될 수 있다. 예를 들어, 회로들, 시스템들, 네트워크들, 프로세스들, 및 다른 컴포넌트들은 양태들을 불필요한 세부사항으로 모호하게 하지 않기 위해 블록도 형태의 컴포넌트들로서 도시될 수 있다. 다른 사례들에서, 잘 알려진 회로들, 프로세스들, 알고리즘들, 구조들, 및 기법들은 양태들을 모호하게 하는 것을 회피하기 위해 불필요한 상세사항 없이 도시될 수 있다.
개별 양태들은 상기에서 흐름도, 순서도, 데이터 순서도, 구조도, 또는 블록도로서 도시되는 프로세스 또는 방법으로서 설명될 수 있다. 흐름도가 동작들을 순차적인 프로세스로서 설명할 수 있지만, 동작들의 대부분은 병렬로 또는 동시에 수행될 수 있다. 추가로, 동작들의 순서는 재배열될 수 있다. 프로세스는 프로세서의 동작들이 완료될 때 종료되지만 도면에 포함되지 않은 추가 단계들을 가질 수 있다. 프로세스는 방법, 함수, 절차(procedure), 서브루틴(subroutine), 서브프로그램(subprogram) 등에 대응할 수 있다. 프로세스가 함수에 대응할 때, 그 종료는 호출 함수 또는 메인 함수로의 함수의 복귀에 대응할 수 있다.
위에서 설명된 예들에 따른 프로세스들 및 방법들은 컴퓨터 판독가능 매체들로부터 저장되거나 아니면 컴퓨터 판독가능 매체들로부터 이용가능한 컴퓨터 실행가능 명령들을 사용하여 구현될 수 있다. 이러한 명령들은 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터 또는 프로세싱 디바이스로 하여금 특정 기능 또는 기능들의 그룹을 수행하게 하거나 아니면 구성하는 명령들 및 데이터를 포함할 수 있다. 사용되는 컴퓨터 리소스들의 부분들은 네트워크를 통해 액세스가능할 수 있다. 컴퓨터 실행가능 명령들은, 예를 들어, 어셈블리 언어, 펌웨어, 소스 코드 등과 같은 이진수들, 중간 포맷 명령들일 수 있다. 명령들, 사용되는 정보, 및/또는, 설명된 예들에 따른 방법들 동안 형성된 정보를 저장하기 위해 사용될 수 있는 컴퓨터 판독가능 매체들의 예들은 자기 또는 광학 디스크들, 플래시 메모리, 비휘발성 메모리가 제공된 USB 디바이스들, 네트워킹된 저장 디바이스들 등을 포함한다.
이러한 개시내용들에 따른 프로세스들 및 방법들을 구현하는 디바이스들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어들, 또는 이들의 임의의 조합을 포함할 수 있고, 다양한 폼 팩터들 중 임의의 폼 팩터를 취할 수 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드로 구현될 때, 필요한 작업들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들(예컨대, 컴퓨터 프로그램 제품)은 컴퓨터 판독가능 또는 머신 판독가능 매체에 저장될 수 있다. 프로세서(들)는 필요한 작업들을 수행할 수 있다. 폼 팩터들의 통상적인 예들은 랩톱들, 스마트 폰들, 모바일 폰들, 태블릿 디바이스들 또는 다른 소형 퍼스널 컴퓨터들, 퍼스널 디지털 어시스턴트들, 랙마운트 디바이스들, 독립형 디바이스들 등을 포함한다. 본 명세서에서 설명되는 기능은 또한 주변 기기들 또는 애드인(add-in) 카드들로 구현될 수 있다. 그러한 기능은 또한 추가 예로서, 단일 디바이스에서 실행되는 상이한 프로세스들 또는 상이한 칩들 사이의 회로 기판 상에서 구현될 수 있다.
명령들, 그러한 명령들을 전달하기 위한 매체들, 명령들을 실행하기 위한 컴퓨팅 리소스들, 및 그러한 컴퓨팅 리소스들을 지원하기 위한 다른 구조들은 본 개시내용에서 설명되는 기능들을 제공하기 위한 예시적인 수단들이다.
전술한 설명에서, 본 출원의 양태들은 그의 특정 양태들을 참조하여 설명되지만, 당업자는 본 출원이 이에 제한되지 않는다는 것을 인식할 것이다. 따라서, 본 출원의 예시적인 양태들이 본 명세서에서 상세히 설명되었지만, 본 발명의 개념들은 달리 다양하게 구체화되고 채용될 수 있으며, 첨부된 청구항들은 종래기술에 의해 제한되는 것을 제외하고는 그러한 변형들을 포함하는 것으로 해석되도록 의도된다는 것이 이해되어야 한다. 위에서 설명된 애플리케이션의 다양한 특징들 및 양태들은 개별적으로 또는 공동으로 사용될 수 있다. 추가로, 양태들은 본 명세서의 더 넓은 사상 및 범주로부터 벗어나지 않고서 본 명세서에서 설명된 것들을 넘어서는 임의의 수의 환경들 및 애플리케이션들에서 활용될 수 있다. 이에 따라, 본 명세서 및 도면들은 제한적인 것이 아니라 예시적인 것으로 간주되어야 한다. 예시의 목적들로, 방법들은 특정 순서로 설명되었다. 대안적인 양태들에서, 방법들은 설명된 것과는 상이한 순서로 수행될 수 있다는 것이 이해되어야 한다.
당업자는 본 명세서에서 사용된 미만("<") 및 초과(">") 기호들 또는 용어가 본 설명의 범주를 벗어나지 않고서, 이하("") 및 이상("") 기호들로 각각 대체될 수 있다는 것을 인식할 것이다.
컴포넌트들이 특정 동작을 수행하도록 "구성된" 것으로 기술되는 경우, 그러한 구성은 예를 들어, 전자 회로 또는 다른 하드웨어를 설계하여 그 동작을 수행하는 것에 의해, 프로그래밍가능한 전자 회로(예컨대, 마이크로프로세서 또는 다른 적절한 전자 회로)를 프로그래밍하여 그 동작을 수행하는 것에 의해 또는 이들의 임의의 조합에 의해, 달성될 수 있다.
문구 "~에 커플링된(coupled to)"은 다른 컴포넌트에 직접적으로 또는 간접적으로 물리적으로 접속된 임의의 컴포넌트, 및/또는, 다른 컴포넌트와 직접적으로 또는 간접적으로 통신하는 (예컨대, 유선 또는 무선 접속, 및/또는 다른 적합한 통신 인터페이스를 통해 다른 컴포넌트에 접속된) 임의의 컴포넌트를 지칭한다.
세트 중 "적어도 하나" 및/또는 세트 중 "하나 이상"을 인용하는 본 개시내용의 청구항 언어 또는 다른 언어는 세트 중 하나의 멤버 또는 세트 중 다중 멤버들(임의의 조합으로)이 청구항을 만족한다는 것을 나타낸다. 예를 들어, "A 및 B 중 적어도 하나" 또는 "A 또는 B 중 적어도 하나"를 언급하는 청구항 언어는 A, B, 또는 A와 B를 의미한다. 다른 예에서, "A, B 및 C 중 적어도 하나" 또는 "A, B 또는 C 중 적어도 하나"를 언급하는 청구항 언어는 A, B, C, 또는 A와 B, 또는 A와 C, 또는 B와 C, 또는 A와 B와 C를 의미한다. 그 언어, 세트 "중 적어도 하나" 및/또는 세트 중 "하나 이상"은 세트를 그 세트에 열거된 항목들로 제한하지 않는다. 예를 들어, "A 및 B 중 적어도 하나" 및 "A 또는 B 중 적어도 하나"를 인용하는 청구항 언어는 A, B, 또는 A와 B를 의미할 수 있으며, A와 B의 세트에 열거되지 않은 항목들을 추가적으로 포함할 수 있다.
본 명세서에 개시된 양태들과 연관되어 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 조합들로서 구현될 수 있다. 하드웨어와 소프트웨어의 이러한 상호교환가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 그것들의 기능 관점들에서 대체적으로 위에서 설명되었다. 이러한 기능이 하드웨어로 구현되는지, 또는 소프트웨어로 구현되는지 여부는 특정 애플리케이션 및 전체 시스템에 대해 부과된 설계 제한들에 의존한다. 당해 기술분야에서 통상의 지식을 가진 자들은 설명된 기능을 특정 출원마다 다양한 방식들로 구현할 수 있지만, 이러한 구현 결정들이 본 출원의 범위를 벗어나게 하는 것으로 해석되지는 않아야 한다.
본 명세서에서 설명되는 기법들은 또한 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 이러한 기법들은 무선 통신 디바이스 핸드셋들 및 다른 디바이스들에서의 적용을 포함하여 다수의 용도들을 갖는 범용 컴퓨터들, 무선 통신 디바이스 핸드셋들 또는 집적 회로 디바이스들과 같은 다양한 디바이스들 중 임의의 디바이스에서 구현될 수 있다. 모듈들 또는 컴포넌트들로서 설명되는 임의의 특징들은 통합된 로직 디바이스로 함께 또는 개별적이지만 상호 운용가능한 로직 디바이스들로서 별개로 구현될 수 있다. 소프트웨어로 구현된다면, 이 기법들은 적어도 부분적으로는, 실행될 때 위에서 설명된 방법들 중 하나 이상을 수행하는 명령들을 포함하는 프로그램 코드를 포함하는 컴퓨터 판독가능 데이터 저장 매체에 의해 실현될 수 있다. 컴퓨터 판독가능 데이터 저장 매체는 패키징 재료들을 포함할 수 있는 컴퓨터 프로그램 제품의 일부를 형성할 수 있다. 컴퓨터 판독가능 매체는 메모리 또는 데이터 저장 매체들, 예컨대 RAM(random access memory), 예컨대 SDRAM(synchronous dynamic random access memory), ROM(read-only memory), NVRAM(non-volatile random access memory), EEPROM(electrically erasable programmable read-only memory), FLASH 메모리, 자기 또는 광 데이터 저장 매체들 등을 포함할 수 있다. 추가로 또는 대안으로, 이 기법들은 적어도 부분적으로는, 명령들 또는 데이터 구조들의 형태로 프로그램 코드를 운반 또는 전달하고 컴퓨터, 예컨대 전파 신호들 또는 파들 의해 액세스, 판독 및/또는 실행될 수 있는 컴퓨터 판독가능 통신 매체에 의해 실현될 수 있다.
프로그램 코드는 하나 이상의 프로세서들, 예컨대 하나 이상의 DSP(digital signal processor)들, 범용 마이크로프로세서들, ASIC(application specific integrated circuit)들, FPGA(field programmable logic array)들 또는 다른 대등한 집적 또는 이산 로직 회로부를 포함할 수 있는 프로세서에 의해 실행될 수 있다. 그러한 프로세서는 본 개시내용에서 설명되는 기법들 중 임의의 기법을 수행하도록 구성될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만; 대안으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예컨대, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수 있다. 이에 따라, 본 명세서에서 사용된 바와 같은 용어 "프로세서"는 전술한 구조, 전술한 구조의 임의의 조합, 또는 본 명세서에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 또는 장치 중 임의의 것을 지칭할 수 있다. 부가적으로, 일부 양태들에서, 본 명세서에서 설명된 기능은, 인코딩 및 디코딩을 위해 구성된 전용 소프트웨어 모듈들 또는 하드웨어 모듈들 내에서 제공되거나, 또는 결합된 비디오 인코더-디코더(CODEC)에 통합될 수 있다.
본 개시내용의 예시적인 양태들은 다음을 포함한다:
양태 1: 비디오 데이터를 프로세싱하기 위한 장치로서, 메모리; 및 메모리에 커플링된 하나 이상의 프로세서들을 포함한다. 하나 이상의 프로세서들은, 비디오 데이터의 현재 픽처를 획득하고; 비디오 데이터로부터 현재 픽처에 대한 기준 픽처들을 획득하고; 현재 픽처로부터 병합 모드 후보를 결정하고; 병합 모드 후보에 대한 제1 모션 벡터 및 제2 모션 벡터를 식별하고; 복수의 모션 벡터 검색 전략들로부터 병합 모드 후보에 대한 모션 벡터 검색 전략을 선택하고; 모션 벡터 검색 전략을 사용하여 제1 모션 벡터, 제2 모션 벡터, 및 기준 픽처들로부터 개선된 모션 벡터들을 도출하고; 그리고 개선된 모션 벡터들을 사용하여 병합 모드 후보를 프로세싱하도록 구성된다.
양태 2: 양태 1의 장치에 있어서, 병합 모드 후보는 병합 후보 목록으로부터 선택된다.
양태 3: 양태 2의 장치에 있어서, 병합 후보 목록은, 병합 모드 후보의 공간적 이웃 블록들로부터의 공간적 모션 벡터 예측자, 병합 모드 후보의 공동위치된 블록들로부터의 시간적 모션 벡터 예측자, 이력 테이블로부터의 이력 기반 모션 벡터 예측자, 쌍별 평균 모션 벡터 예측자, 및 제로 값 모션 벡터 중 하나 이상으로부터 구성된다.
양태 4: 양태 1 내지 양태 3 중 어느 한 양태의 장치에 있어서, 하나 이상의 프로세서들은, 2개의 상이한 기준 픽처들로부터 획득된 2개의 예측 신호들을 평균함으로써 제1 모션 벡터 및 제2 모션 벡터를 사용하여 모션 벡터 양방향 예측 신호를 생성하도록 구성된다.
양태 5: 양태 1 내지 양태 4 중 어느 한 양태의 장치에 있어서, 복수의 모션 벡터 검색 전략들은 분수 샘플 개선 전략을 포함한다.
양태 6: 양태 5의 장치에 있어서, 복수의 모션 벡터 검색 전략들은 양방향성 광학 흐름 전략을 포함한다.
양태 7: 양태 6의 장치에 있어서, 복수의 모션 벡터 검색 전략들은 서브 블록 양자간 매칭 모션 벡터 개선 전략을 포함한다.
양태 8: 양태 1 내지 양태 7 중 어느 한 양태의 장치에 있어서, 제1 모션 벡터 및 제2 모션 벡터는 하나 이상의 제약들과 연관된다.
양태 9: 양태 8의 장치에 있어서, 하나 이상의 제약들은 미러링 제약을 포함한다.
양태 10: 양태 1 내지 양태 9 중 어느 한 양태의 장치에 있어서, 하나 이상의 제약들은 제1 모션 벡터 차이에 대한 제로 값 제약을 포함한다.
양태 11: 양태 1 내지 양태 9 중 어느 한 양태의 장치에 있어서, 하나 이상의 제약들은 제2 모션 벡터 차이에 대한 제로 값 제약을 포함한다.
양태 12: 양태 1 내지 양태 11 중 어느 한 양태의 장치에 있어서, 비디오 데이터는 하나 이상의 제약들을 나타내는 신택스를 포함한다.
양태 13: 양태 1 내지 양태 12 중 어느 한 양태의 장치에 있어서, 모션 벡터 검색 전략은 다중 패스 디코더 측 모션 벡터 개선 전략을 포함한다.
양태 14: 양태 13의 장치에 있어서, 다중 패스 디코더 측 모션 벡터 개선 전략은 동일한 개선 타입의 2개 이상의 개선 패스들을 포함한다.
양태 15: 양태 14의 장치에 있어서, 다중 패스 디코더 측 모션 벡터 개선 전략은 동일한 개선 타입과는 상이한 타입의 하나 이상의 개선 패스들을 포함한다.
양태 16: 양태 14 또는 양태 15의 장치에 있어서, 동일한 개선 타입의 2개 이상의 개선 패스들은 블록 기반 양자간 매칭 모션 벡터 개선, 서브 블록 기반 양자간 매칭 모션 벡터 개선, 또는 서브 블록 기반 양방향성 광학 흐름 모션 벡터 개선이다.
양태 17: 양태 1 내지 양태 16 중 어느 한 양태의 장치에 있어서, 복수의 모션 벡터 검색 전략들은 다중 패스 전략들의 다수의 서브세트들을 포함한다.
양태 18: 양태 17의 장치에 있어서, 다중 패스 전략들의 다수의 서브세트들은 비디오 데이터의 하나 이상의 신택스 엘리먼트들에서 시그널링된다.
양태 19: 양태 1 내지 양태 18 중 어느 한 양태의 장치에 있어서, 개선된 모션 벡터들을 도출하는 것은, 모션 벡터 검색 전략에 따라 복수의 후보 모션 벡터 쌍들에 대한 매칭 비용들을 계산하는 것을 포함한다.
양태 20: 양태 1 내지 양태 19 중 어느 한 양태의 장치에 있어서, 모션 벡터 검색 전략은 비디오 데이터로부터 결정된 매칭 비용들에 기초하여 적응적으로 선택된다.
양태 21: 양태 1 내지 양태 19 중 어느 한 양태의 장치에 있어서, 모션 벡터 검색 전략은 비디오 데이터에 기초하여 모션 벡터 검색 전략의 패스들의 수를 적응적으로 설정하도록 선택된다.
양태 22: 양태 1 내지 양태 19 중 어느 한 양태의 장치에 있어서, 모션 벡터 검색 전략은 비디오 데이터에 기초하여 개선된 모션 벡터들에 대한 후보들을 결정하기 위해 검색 패턴을 적응적으로 설정하도록 선택된다.
양태 23: 양태 1 내지 양태 19 중 어느 한 양태의 장치에 있어서, 모션 벡터 검색 전략은 비디오 데이터에 기초하여 개선된 모션 벡터들에 대한 후보들의 목록을 생성하기 위해 기준들의 세트를 적응적으로 설정하도록 선택된다.
양태 24: 양태 1 내지 양태 19 중 어느 한 양태의 장치에 있어서, 모션 벡터 검색 전략은 비디오 데이터로부터의 디코더 측 모션 벡터 개선 제약들에 기초하여 적응적으로 수행된다.
양태 25: 양태 1 내지 양태 19 중 어느 한 양태의 장치에 있어서, 모션 벡터 검색 전략은 비디오 데이터에서의 병합 모드 후보에 대한 블록 크기에 기초하여 적응적으로 수행된다.
양태 26: 양태 1 내지 양태 25 중 어느 한 양태의 장치에 있어서, 하나 이상의 프로세서들은 다수의 가설 예측을 디스에이블하도록 구성된다.
양태 27: 양태 1 내지 양태 26 중 어느 한 양태의 장치에 있어서, 하나 이상의 프로세서들은 모션 벡터 검색 전략과 함께 다수의 가설 예측을 수행하도록 구성된다.
양태 28: 양태 1 내지 양태 27 중 어느 한 양태의 장치에 있어서, 하나 이상의 프로세서들은 병합 모드 후보를 포함하는 병합 후보 목록을 생성하도록 구성된다.
양태 29: 양태 28의 장치에 있어서, 병합 후보 목록을 생성하기 위해, 하나 이상의 프로세서들은, 적응적 병합 모드와 연관된 하나 이상의 조건들(예컨대, adaptive_bm_mode에 대한 조건들)에 기초하여, 병합 후보 목록 내의 후보들의 수가 후보들의 최대 수 미만이라는 것에 기초하여 병합 후보 목록에 추가하기 위한 하나 이상의 디폴트 후보들을 결정하도록 구성된다.
양태 30: 양태 28의 장치에 있어서, 병합 후보 목록을 생성하기 위해, 하나 이상의 프로세서들은, 적응적 병합 모드와 연관된 제약과 연관된 하나 이상의 조건들(예컨대, bm_dir에 따른 조건들)에 기초하여, 병합 후보 목록 내의 후보들의 수가 후보들의 최대 수 미만이라는 것에 기초하여 병합 후보 목록에 추가하기 위한 하나 이상의 디폴트 후보들을 결정하도록 구성된다.
양태 31: 양태 1 내지 양태 30 중 어느 한 양태의 장치에 있어서, 장치는 모바일 디바이스이다.
양태 32: 양태 1 내지 양태 31 중 어느 한 양태의 장치에 있어서, 하나 이상의 프레임들을 캡처하도록 구성된 카메라를 추가로 포함한다.
양태 33: 양태 1 내지 양태 32 중 어느 한 양태의 장치에 있어서, 하나 이상의 프레임들을 디스플레이하도록 구성된 디스플레이를 추가로 포함한다.
양태 34: 양태 1 내지 양태 33의 동작들 중 어느 한 동작에 따라 비디오 데이터를 프로세싱하는 방법.
양태 35: 컴퓨터 판독가능 저장 매체로서, 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 디바이스로 하여금, 양태 1 내지 양태 33 중 어느 한 양태의 동작들을 수행하게 하는 명령들을 포함한다.
양태 36: 장치로서, 양태 1 내지 양태 33의 동작들 중 어느 한 동작을 수행하기 위한 하나 이상의 수단을 포함한다.
양태 37: 비디오 데이터를 프로세싱하기 위한 장치로서, 적어도 하나의 메모리; 및 적어도 하나의 메모리에 커플링된 적어도 하나의 프로세서를 포함하고, 적어도 하나의 프로세서는, 현재 픽처에 대한 하나 이상의 기준 픽처들을 획득하고; 병합 모드 후보에 대한 제1 모션 벡터 및 제2 모션 벡터를 식별하고; 복수의 모션 벡터 검색 전략들로부터 병합 모드 후보에 대한 선택된 모션 벡터 검색 전략을 결정하고; 선택된 모션 벡터 검색 전략을 사용하여, 제1 모션 벡터 또는 제2 모션 벡터 중 적어도 하나 및 하나 이상의 기준 픽처들에 기초하여 하나 이상의 개선된 모션 벡터들을 결정하고; 그리고 하나 이상의 개선된 모션 벡터들을 사용하여 병합 모드 후보를 프로세싱하도록 구성된다.
양태 38. 양태 37의 장치에 있어서, 선택된 모션 벡터 검색 전략은 적어도 제1 모션 벡터 또는 제2 모션 벡터 중 적어도 하나에 기초한 하나 이상의 제약들과 연관된다.
양태 39. 양태 38의 장치에 있어서, 하나 이상의 제약들은 블록에 대해 시그널링된 신택스 엘리먼트에 기초하여 비디오 데이터의 블록에 대해 결정된다.
양태 40. 양태 38 또는 양태 39의 장치에 있어서, 하나 이상의 제약들은 제1 모션 벡터와 연관된 제1 모션 벡터 차이 또는 제2 모션 벡터와 연관된 제2 모션 벡터 차이 중 적어도 하나와 연관된다.
양태 41. 양태 40의 장치에 있어서, 하나 이상의 개선된 모션 벡터들은 제1 개선된 모션 벡터 및 제2 개선된 모션 벡터를 포함하고, 적어도 하나의 프로세서는, 제1 개선된 모션 벡터와 제1 모션 벡터 사이의 차이로서 제1 모션 벡터 차이를 결정하고; 그리고 제2 개선된 모션 벡터와 제2 모션 벡터 사이의 차이로서 제2 모션 벡터 차이를 결정하도록 구성된다.
양태 42. 양태 40 또는 양태 41의 장치에 있어서, 하나 이상의 제약들은 제1 모션 벡터 차이 및 제2 모션 벡터 차이에 대한 미러링 제약을 포함하고, 제1 모션 벡터 차이 및 제2 모션 벡터 차이는 동일한 크기 및 상이한 부호를 갖는다.
양태 43. 양태 40 내지 양태 42 중 어느 한 양태의 장치에 있어서, 하나 이상의 제약들은 제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 적어도 하나에 대한 제로(0) 값 제약을 포함한다.
양태 44. 양태 43의 장치에 있어서, 제로 값 제약에 기초하여, 적어도 하나의 프로세서는, 제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 첫 번째 모션 벡터 차이를 고정 값으로서 유지하고 제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 두 번째 모션 벡터 차이에 대해 검색함으로써, 선택된 모션 벡터 검색 전략을 사용하여 하나 이상의 개선된 모션 벡터들을 결정하도록 구성된다.
양태 45. 양태 37 내지 양태 44 중 어느 한 양태의 장치에 있어서, 선택된 모션 벡터 검색 전략은 양자간 매칭(BM) 모션 벡터 검색 전략이다.
양태 46. 양태 37 내지 양태 45 중 어느 한 양태의 장치에 있어서, 적어도 하나의 프로세서는 선택된 모션 벡터 검색 전략과 연관된 하나 이상의 제약들에 기초하여 하나 이상의 개선된 모션 벡터들을 결정하도록 구성되고, 하나 이상의 제약들에 기초하여 하나 이상의 개선된 모션 벡터들을 결정하기 위해, 적어도 하나의 프로세서는, 선택된 모션 벡터 검색 전략에 기초하여 제1 모션 벡터 주위에서 제1 기준 픽처를 검색함으로써 제1 개선된 모션 벡터를 결정하고; 그리고 선택된 모션 벡터 검색 전략에 기초하여 제2 모션 벡터 주위에서 제2 기준 픽처를 검색함으로써 제2 개선된 모션 벡터를 결정하도록 구성되고, 하나 이상의 제약들은 모션 벡터 차이 제약을 포함한다.
양태 47. 양태 46의 장치에 있어서, 제1 개선된 모션 벡터 및 제2 개선된 모션 벡터를 결정하기 위해, 적어도 하나의 프로세서는, 제1 개선된 모션 벡터와 연관된 제1 기준 블록과 제2 개선된 모션 벡터와 연관된 제2 기준 블록 사이의 차이를 최소화하도록 구성된다.
양태 48. 양태 37 내지 양태 47 중 어느 한 양태의 장치에 있어서, 복수의 모션 벡터 검색 전략들은 다중 패스 디코더 측 모션 벡터 개선 전략, 분수 샘플 개선 전략, 양방향성 광학 흐름 전략, 또는 서브 블록 기반 양자간 매칭 모션 벡터 개선 전략 중 적어도 2개를 포함한다.
양태 49. 양태 37 내지 양태 48 중 어느 한 양태의 장치에 있어서, 선택된 모션 벡터 검색 전략은 다중 패스 디코더 측 모션 벡터 개선 전략을 포함한다.
양태 50. 양태 49의 장치에 있어서, 다중 패스 디코더 측 모션 벡터 개선 전략은 하나 이상의 블록 기반 양자간 매칭 모션 벡터 개선 패스들 또는 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들 중 적어도 하나를 포함한다.
양태 51. 양태 50의 장치에 있어서, 적어도 하나의 프로세서는, 제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 적어도 하나와 연관된 제1 제약을 사용하여 하나 이상의 블록 기반 양자간 매칭 모션 벡터 개선 패스들을 수행하고; 그리고 제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 적어도 하나와 연관된 제2 제약을 사용하여 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들을 수행하도록 구성되고, 제1 제약은 제2 제약과는 상이하다.
양태 52. 양태 50 또는 양태 51의 장치에 있어서, 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들은 서브 블록 기반 양자간 매칭 모션 벡터 개선 패스 또는 서브 블록 기반 양방향성 광학 흐름 모션 벡터 개선 패스 중 적어도 하나를 포함한다.
양태 53. 양태 37 내지 양태 52 중 어느 한 양태의 장치에 있어서, 장치는 무선 통신 디바이스이다.
양태 54. 양태 37 내지 양태 53 중 어느 한 양태의 장치에 있어서, 적어도 하나의 프로세서는 비디오 데이터의 블록에 대한 하나 이상의 개선된 모션 벡터들을 결정하도록 구성되고, 병합 모드 후보는 블록의 이웃 블록을 포함한다.
양태 55: 비디오 데이터를 프로세싱하기 위한 방법으로서, 현재 픽처에 대한 하나 이상의 기준 픽처들을 획득하는 단계; 병합 모드 후보에 대한 제1 모션 벡터 및 제2 모션 벡터를 식별하는 단계; 복수의 모션 벡터 검색 전략들로부터 병합 모드 후보에 대한 선택된 모션 벡터 검색 전략을 결정하는 단계; 선택된 모션 벡터 검색 전략을 사용하여, 제1 모션 벡터 또는 제2 모션 벡터 중 적어도 하나 및 하나 이상의 기준 픽처들에 기초하여 하나 이상의 개선된 모션 벡터들을 결정하는 단계; 및 하나 이상의 개선된 모션 벡터들을 사용하여 병합 모드 후보를 프로세싱하는 단계를 포함한다.
양태 56. 양태 55의 방법에 있어서, 선택된 모션 벡터 검색 전략은 제1 모션 벡터 또는 제2 모션 벡터 중 적어도 하나에 기초한 하나 이상의 제약들과 연관된다.
양태 57. 양태 56의 방법에 있어서, 하나 이상의 제약들은 블록에 대해 시그널링된 신택스 엘리먼트에 기초하여 비디오 데이터의 블록에 대해 결정된다.
양태 58. 양태 56 또는 양태 57의 방법에 있어서, 하나 이상의 제약들은 제1 모션 벡터와 연관된 제1 모션 벡터 차이 또는 제2 모션 벡터와 연관된 제2 모션 벡터 차이 중 적어도 하나와 연관된다.
양태 59. 양태 58의 방법에 있어서, 하나 이상의 개선된 모션 벡터들은 제1 개선된 모션 벡터 및 제2 개선된 모션 벡터를 포함하고, 방법은, 제1 개선된 모션 벡터와 제1 모션 벡터 사이의 차이로서 제1 모션 벡터 차이를 결정하는 단계; 및 제2 개선된 모션 벡터와 제2 모션 벡터 사이의 차이로서 제2 모션 벡터 차이를 결정하는 단계를 추가로 포함한다.
양태 60. 양태 58 또는 양태 59의 방법에 있어서, 하나 이상의 제약들은 제1 모션 벡터 차이 및 제2 모션 벡터 차이에 대한 미러링 제약을 포함하고, 제1 모션 벡터 차이 및 제2 모션 벡터 차이는 동일한 크기 및 상이한 부호를 갖는다.
양태 61. 양태 58 내지 양태 60 중 어느 한 양태의 방법에 있어서, 하나 이상의 제약들은 제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 적어도 하나에 대한 제로(0) 값 제약을 포함한다.
양태 62. 양태 61의 방법에 있어서, 제로 값 제약에 기초하여, 제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 첫 번째 모션 벡터 차이를 고정 값으로서 유지하고 제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 두 번째 모션 벡터 차이에 대해 검색함으로써, 선택된 모션 벡터 검색 전략을 사용하여 하나 이상의 개선된 모션 벡터들이 결정된다.
양태 63. 양태 55 내지 양태 62 중 어느 한 양태의 방법에 있어서, 선택된 모션 벡터 검색 전략은 양자간 매칭(BM) 모션 벡터 검색 전략이다.
양태 64. 양태 55 내지 양태 63 중 어느 한 양태의 방법에 있어서, 하나 이상의 개선된 모션 벡터들은 선택된 모션 벡터 검색 전략과 연관된 하나 이상의 제약들에 기초하여 결정되고, 하나 이상의 제약들에 기초하여 하나 이상의 개선된 모션 벡터들을 결정하는 단계는, 선택된 모션 벡터 검색 전략에 기초하여 제1 모션 벡터 주위에서 제1 기준 픽처를 검색함으로써 제1 개선된 모션 벡터를 결정하는 단계; 및 선택된 모션 벡터 검색 전략에 기초하여 제2 모션 벡터 주위에서 제2 기준 픽처를 검색함으로써 제2 개선된 모션 벡터를 결정하는 단계를 포함하고, 하나 이상의 제약들은 모션 벡터 차이 제약을 포함한다.
양태 65. 양태 64의 방법에 있어서, 제1 개선된 모션 벡터 및 제2 개선된 모션 벡터를 결정하는 단계는, 제1 개선된 모션 벡터와 연관된 제1 기준 블록과 제2 개선된 모션 벡터와 연관된 제2 기준 블록 사이의 차이를 최소화하는 단계를 포함한다.
양태 66. 양태 55 내지 양태 65 중 어느 한 양태의 방법에 있어서, 복수의 모션 벡터 검색 전략들은 다중 패스 디코더 측 모션 벡터 개선 전략, 분수 샘플 개선 전략, 양방향성 광학 흐름 전략, 또는 서브 블록 기반 양자간 매칭 모션 벡터 개선 전략 중 적어도 2개를 포함한다.
양태 67. 양태 55 내지 양태 66 중 어느 한 양태의 방법에 있어서, 선택된 모션 벡터 검색 전략은 다중 패스 디코더 측 모션 벡터 개선 전략을 포함한다.
양태 68. 양태 67의 방법에 있어서, 다중 패스 디코더 측 모션 벡터 개선 전략은 하나 이상의 블록 기반 양자간 매칭 모션 벡터 개선 패스들 또는 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들 중 적어도 하나를 포함한다.
양태 69. 양태 68의 방법에 있어서, 제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 적어도 하나와 연관된 제1 제약을 사용하여 상기 하나 이상의 블록 기반 양자간 매칭 모션 벡터 개선 패스들을 수행하는 단계; 및 제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 적어도 하나와 연관된 제2 제약을 사용하여 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들을 수행하는 단계를 추가로 포함하고, 제1 제약은 제2 제약과는 상이하다.
양태 70. 양태 68 또는 양태 69의 방법에 있어서, 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들은 서브 블록 기반 양자간 매칭 모션 벡터 개선 패스 또는 서브 블록 기반 양방향성 광학 흐름 모션 벡터 개선 패스 중 적어도 하나를 포함한다.
양태 71: 양태 37 내지 양태 70의 동작들 중 어느 한 동작에 따라 비디오 데이터를 프로세싱하는 방법.
양태 72: 컴퓨터 판독가능 저장 매체로서, 디바이스의 하나 이상의 프로세서들에 의해 실행될 때, 디바이스로 하여금, 양태 37 내지 양태 70 중 어느 한 양태의 동작들을 수행하게 하는 명령들을 포함한다.
양태 73: 장치로서, 양태 37 내지 양태 70의 동작들 중 어느 한 동작을 수행하기 위한 하나 이상의 수단을 포함한다.

Claims (30)

  1. 비디오 데이터를 프로세싱하기 위한 장치로서,
    적어도 하나의 메모리; 및
    상기 적어도 하나의 메모리에 커플링된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는,
    현재 픽처에 대한 하나 이상의 기준 픽처들을 획득하고;
    병합 모드 후보에 대한 제1 모션 벡터 및 제2 모션 벡터를 식별하고;
    복수의 모션 벡터 검색 전략들로부터 상기 병합 모드 후보에 대한 선택된 모션 벡터 검색 전략을 결정하고;
    상기 선택된 모션 벡터 검색 전략을 사용하여, 상기 제1 모션 벡터 또는 상기 제2 모션 벡터 중 적어도 하나 및 상기 하나 이상의 기준 픽처들에 기초하여 하나 이상의 개선된 모션 벡터들을 결정하고; 그리고
    상기 하나 이상의 개선된 모션 벡터들을 사용하여 상기 병합 모드 후보를 프로세싱하도록 구성되는, 비디오 데이터를 프로세싱하기 위한 장치.
  2. 제1항에 있어서, 상기 선택된 모션 벡터 검색 전략은 상기 제1 모션 벡터 또는 상기 제2 모션 벡터 중 적어도 하나에 기초한 하나 이상의 제약들과 연관되는, 비디오 데이터를 프로세싱하기 위한 장치.
  3. 제2항에 있어서, 상기 하나 이상의 제약들은 블록에 대해 시그널링된 신택스 엘리먼트에 기초하여 상기 비디오 데이터의 상기 블록에 대해 결정되는, 비디오 데이터를 프로세싱하기 위한 장치.
  4. 제2항에 있어서, 상기 하나 이상의 제약들은 상기 제1 모션 벡터와 연관된 제1 모션 벡터 차이 또는 상기 제2 모션 벡터와 연관된 제2 모션 벡터 차이 중 적어도 하나와 연관되는, 비디오 데이터를 프로세싱하기 위한 장치.
  5. 제4항에 있어서, 상기 하나 이상의 개선된 모션 벡터는 제1 개선된 모션 벡터 및 제2 개선된 모션 벡터를 포함하고, 상기 적어도 하나의 프로세서는,
    상기 제1 개선된 모션 벡터와 상기 제1 모션 벡터 사이의 차이로서 상기 제1 모션 벡터 차이를 결정하고; 그리고
    상기 제2 개선된 모션 벡터와 상기 제2 모션 벡터 사이의 차이로서 상기 제2 모션 벡터 차이를 결정하도록 구성되는, 비디오 데이터를 프로세싱하기 위한 장치.
  6. 제4항에 있어서, 상기 하나 이상의 제약들은 상기 제1 모션 벡터 차이 및 상기 제2 모션 벡터 차이에 대한 미러링 제약(mirroring constraint)을 포함하고, 상기 제1 모션 벡터 차이 및 상기 제2 모션 벡터 차이는 동일한 크기 및 상이한 부호를 갖는, 비디오 데이터를 프로세싱하기 위한 장치.
  7. 제4항에 있어서, 상기 하나 이상의 제약들은 상기 제1 모션 벡터 차이 또는 상기 제2 모션 벡터 차이 중 적어도 하나에 대한 제로(0) 값 제약을 포함하는, 비디오 데이터를 프로세싱하기 위한 장치.
  8. 제7항에 있어서, 상기 제로 값 제약에 기초하여, 상기 적어도 하나의 프로세서는, 상기 제1 모션 벡터 차이 또는 상기 제2 모션 벡터 차이 중 첫 번째 모션 벡터 차이를 고정 값으로서 유지하고 상기 제1 모션 벡터 차이 또는 상기 제2 모션 벡터 차이 중 두 번째 모션 벡터 차이에 대해 검색함으로써, 상기 선택된 모션 벡터 검색 전략을 사용하여 상기 하나 이상의 개선된 모션 벡터들을 결정하도록 구성되는, 비디오 데이터를 프로세싱하기 위한 장치.
  9. 제1항에 있어서, 상기 선택된 모션 벡터 검색 전략은 양자간 매칭(bilateral matching, BM) 모션 벡터 검색 전략인, 비디오 데이터를 프로세싱하기 위한 장치.
  10. 제9항에 있어서, 상기 적어도 하나의 프로세서는 상기 선택된 모션 벡터 검색 전략과 연관된 하나 이상의 제약들에 기초하여 상기 하나 이상의 개선된 모션 벡터들을 결정하도록 구성되고, 상기 하나 이상의 제약들에 기초하여 상기 하나 이상의 개선된 모션 벡터들을 결정하기 위해, 상기 적어도 하나의 프로세서는,
    상기 선택된 모션 벡터 검색 전략에 기초하여 상기 제1 모션 벡터 주위에서 제1 기준 픽처를 검색함으로써 제1 개선된 모션 벡터를 결정하고; 그리고
    상기 선택된 모션 벡터 검색 전략에 기초하여 상기 제2 모션 벡터 주위에서 제2 기준 픽처를 검색함으로써 제2 개선된 모션 벡터를 결정하도록 구성되고,
    상기 하나 이상의 제약들은 모션 벡터 차이 제약을 포함하는, 비디오 데이터를 프로세싱하기 위한 장치.
  11. 제10항에 있어서, 상기 제1 개선된 모션 벡터 및 상기 제2 개선된 모션 벡터를 결정하기 위해, 상기 적어도 하나의 프로세서는,
    상기 제1 개선된 모션 벡터와 연관된 제1 기준 블록과 상기 제2 개선된 모션 벡터와 연관된 제2 기준 블록 사이의 차이를 최소화하도록 구성되는, 비디오 데이터를 프로세싱하기 위한 장치.
  12. 제1항에 있어서, 상기 복수의 모션 벡터 검색 전략들은 다중 패스 디코더 측 모션 벡터 개선 전략, 분수 샘플 개선 전략, 양방향성 광학 흐름 전략, 또는 서브 블록 기반 양자간 매칭 모션 벡터 개선 전략 중 적어도 2개를 포함하는, 비디오 데이터를 프로세싱하기 위한 장치.
  13. 제1항에 있어서, 상기 선택된 모션 벡터 검색 전략은 다중 패스 디코더 측 모션 벡터 개선 전략을 포함하는, 비디오 데이터를 프로세싱하기 위한 장치.
  14. 제13항에 있어서, 상기 다중 패스 디코더 측 모션 벡터 개선 전략은 하나 이상의 블록 기반 양자간 매칭 모션 벡터 개선 패스들 또는 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들 중 적어도 하나를 포함하는, 비디오 데이터를 프로세싱하기 위한 장치.
  15. 제14항에 있어서, 상기 적어도 하나의 프로세서는,
    제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 적어도 하나와 연관된 제1 제약을 사용하여 상기 하나 이상의 블록 기반 양자간 매칭 모션 벡터 개선 패스들을 수행하고; 그리고
    상기 제1 모션 벡터 차이 또는 상기 제2 모션 벡터 차이 중 적어도 하나와 연관된 제2 제약을 사용하여 상기 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들을 수행하도록 구성되고, 상기 제1 제약은 상기 제2 제약과는 상이한, 비디오 데이터를 프로세싱하기 위한 장치.
  16. 제14항에 있어서, 상기 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들은 서브 블록 기반 양자간 매칭 모션 벡터 개선 패스 또는 서브 블록 기반 양방향성 광학 흐름 모션 벡터 개선 패스 중 적어도 하나를 포함하는, 비디오 데이터를 프로세싱하기 위한 장치.
  17. 제1항에 있어서, 상기 장치는 무선 통신 디바이스인, 비디오 데이터를 프로세싱하기 위한 장치.
  18. 제1항에 있어서, 상기 적어도 하나의 프로세서는 상기 비디오 데이터의 블록에 대한 상기 하나 이상의 개선된 모션 벡터들을 결정하도록 구성되고, 상기 병합 모드 후보는 상기 블록의 이웃 블록을 포함하는, 비디오 데이터를 프로세싱하기 위한 장치.
  19. 비디오 데이터를 프로세싱하기 위한 방법으로서,
    현재 픽처에 대한 하나 이상의 기준 픽처들을 획득하는 단계;
    병합 모드 후보에 대한 제1 모션 벡터 및 제2 모션 벡터를 식별하는 단계;
    복수의 모션 벡터 검색 전략들로부터 상기 병합 모드 후보에 대한 선택된 모션 벡터 검색 전략을 결정하는 단계;
    상기 선택된 모션 벡터 검색 전략을 사용하여, 상기 제1 모션 벡터 또는 상기 제2 모션 벡터 중 적어도 하나 및 상기 하나 이상의 기준 픽처들에 기초하여 하나 이상의 개선된 모션 벡터들을 결정하는 단계; 및
    상기 하나 이상의 개선된 모션 벡터들을 사용하여 상기 병합 모드 후보를 프로세싱하는 단계를 포함하는, 비디오 데이터를 프로세싱하기 위한 방법.
  20. 제19항에 있어서, 상기 선택된 모션 벡터 검색 전략은 상기 제1 모션 벡터 또는 상기 제2 모션 벡터 중 적어도 하나에 기초한 하나 이상의 제약들과 연관되는, 비디오 데이터를 프로세싱하기 위한 방법.
  21. 제20항에 있어서, 상기 하나 이상의 제약들은 블록에 대해 시그널링된 신택스 엘리먼트에 기초하여 상기 비디오 데이터의 상기 블록에 대해 결정되는, 비디오 데이터를 프로세싱하기 위한 방법.
  22. 제20항에 있어서, 상기 하나 이상의 제약들은 상기 제1 모션 벡터와 연관된 제1 모션 벡터 차이 또는 상기 제2 모션 벡터와 연관된 제2 모션 벡터 차이 중 적어도 하나와 연관되는, 비디오 데이터를 프로세싱하기 위한 방법.
  23. 제22항에 있어서, 상기 하나 이상의 개선된 모션 벡터들은 제1 개선된 모션 벡터 및 제2 개선된 모션 벡터를 포함하고, 상기 방법은,
    상기 제1 개선된 모션 벡터와 상기 제1 모션 벡터 사이의 차이로서 상기 제1 모션 벡터 차이를 결정하는 단계; 및
    상기 제2 개선된 모션 벡터와 상기 제2 모션 벡터 사이의 차이로서 상기 제2 모션 벡터 차이를 결정하는 단계를 추가로 포함하는, 비디오 데이터를 프로세싱하기 위한 방법.
  24. 제22항에 있어서, 상기 하나 이상의 제약들은 상기 제1 모션 벡터 차이 및 상기 제2 모션 벡터 차이에 대한 미러링 제약을 포함하고, 상기 제1 모션 벡터 차이 및 상기 제2 모션 벡터 차이는 동일한 크기 및 상이한 부호를 갖는, 비디오 데이터를 프로세싱하기 위한 방법.
  25. 제22항에 있어서, 상기 하나 이상의 제약들은 상기 제1 모션 벡터 차이 또는 상기 제2 모션 벡터 차이 중 적어도 하나에 대한 제로(0) 값 제약을 포함하는, 비디오 데이터를 프로세싱하기 위한 방법.
  26. 제25항에 있어서, 상기 제로 값 제약에 기초하여, 상기 제1 모션 벡터 차이 또는 상기 제2 모션 벡터 차이 중 첫 번째 모션 벡터 차이를 고정 값으로서 유지하고 상기 제1 모션 벡터 차이 또는 상기 제2 모션 벡터 차이 중 두 번째 모션 벡터 차이에 대해 검색함으로써, 상기 선택된 모션 벡터 검색 전략을 사용하여 상기 하나 이상의 개선된 모션 벡터들이 결정되는, 비디오 데이터를 프로세싱하기 위한 방법.
  27. 제19항에 있어서, 상기 선택된 모션 벡터 검색 전략은 양자간 매칭(BM) 모션 벡터 검색 전략이고, 상기 하나 이상의 개선된 모션 벡터들은 상기 선택된 모션 벡터 검색 전략과 연관된 하나 이상의 제약들에 기초하여 결정되고, 상기 하나 이상의 제약들에 기초하여 상기 하나 이상의 개선된 모션 벡터들을 결정하는 단계는,
    상기 선택된 모션 벡터 검색 전략에 기초하여 상기 제1 모션 벡터 주위에서 제1 기준 픽처를 검색함으로써 제1 개선된 모션 벡터를 결정하는 단계; 및
    상기 선택된 모션 벡터 검색 전략에 기초하여 상기 제2 모션 벡터 주위에서 제2 기준 픽처를 검색함으로써 제2 개선된 모션 벡터를 결정하는 단계를 포함하고,
    상기 하나 이상의 제약들은 모션 벡터 차이 제약을 포함하는, 비디오 데이터를 프로세싱하기 위한 방법.
  28. 제27항에 있어서, 상기 제1 개선된 모션 벡터 및 상기 제2 개선된 모션 벡터를 결정하는 단계는,
    상기 제1 개선된 모션 벡터와 연관된 제1 기준 블록과 상기 제2 개선된 모션 벡터와 연관된 제2 기준 블록 사이의 차이를 최소화하는 단계를 포함하는, 비디오 데이터를 프로세싱하기 위한 방법.
  29. 제19항에 있어서, 상기 선택된 모션 벡터 검색 전략은 다중 패스 디코더 측 모션 벡터 개선 전략을 포함하고, 상기 다중 패스 디코더 측 모션 벡터 개선 전략은 하나 이상의 블록 기반 양자간 매칭 모션 벡터 개선 패스들 또는 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들 중 적어도 하나를 포함하는, 비디오 데이터를 프로세싱하기 위한 방법.
  30. 제29항에 있어서,
    제1 모션 벡터 차이 또는 제2 모션 벡터 차이 중 적어도 하나와 연관된 제1 제약을 사용하여 상기 하나 이상의 블록 기반 양자간 매칭 모션 벡터 개선 패스들을 수행하는 단계; 및
    상기 제1 모션 벡터 차이 또는 상기 제2 모션 벡터 차이 중 적어도 하나와 연관된 제2 제약을 사용하여 상기 하나 이상의 서브 블록 기반 모션 벡터 개선 패스들을 수행하는 단계를 추가로 포함하고, 상기 제1 제약은 상기 제2 제약과는 상이한, 비디오 데이터를 프로세싱하기 위한 방법.
KR1020237043762A 2021-06-29 2022-06-24 디코더 측 모션 벡터 개선을 위한 적응적 양자간 매칭 KR20240026140A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US202163216468P 2021-06-29 2021-06-29
US63/216,468 2021-06-29
US202163263754P 2021-11-08 2021-11-08
US63/263,754 2021-11-08
US17/847,942 US11895302B2 (en) 2021-06-29 2022-06-23 Adaptive bilateral matching for decoder side motion vector refinement
US17/847,942 2022-06-23
PCT/US2022/073155 WO2023278964A1 (en) 2021-06-29 2022-06-24 Adaptive bilateral matching for decoder side motion vector refinement

Publications (1)

Publication Number Publication Date
KR20240026140A true KR20240026140A (ko) 2024-02-27

Family

ID=82701841

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237043762A KR20240026140A (ko) 2021-06-29 2022-06-24 디코더 측 모션 벡터 개선을 위한 적응적 양자간 매칭

Country Status (10)

Country Link
EP (1) EP4364418A1 (ko)
KR (1) KR20240026140A (ko)
AU (1) AU2022303514A1 (ko)
BR (1) BR112023027261A2 (ko)
CA (1) CA3216820A1 (ko)
CL (1) CL2023003553A1 (ko)
CO (1) CO2023017540A2 (ko)
IL (1) IL307644A (ko)
TW (1) TW202308389A (ko)
WO (1) WO2023278964A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220417521A1 (en) * 2021-06-25 2022-12-29 Qualcomm Incorporated Hybrid inter bi-prediction in video coding

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020185427A1 (en) * 2019-03-11 2020-09-17 Alibaba Group Holding Limited Inter prediction methods for coding video data

Also Published As

Publication number Publication date
TW202308389A (zh) 2023-02-16
BR112023027261A2 (pt) 2024-03-12
CL2023003553A1 (es) 2024-04-26
IL307644A (en) 2023-12-01
CA3216820A1 (en) 2023-01-05
WO2023278964A1 (en) 2023-01-05
EP4364418A1 (en) 2024-05-08
CO2023017540A2 (es) 2023-12-20
AU2022303514A1 (en) 2023-11-02

Similar Documents

Publication Publication Date Title
US11051034B2 (en) History-based motion vector predictor
CN110383839B (zh) 仿射运动信息导出
US11659201B2 (en) Systems and methods for generating scaling ratios and full resolution pictures
US11140408B2 (en) Affine motion prediction
US11582475B2 (en) History-based motion vector prediction
US11317111B2 (en) Affine coding with vector clipping
CN113170123A (zh) 照明补偿与帧间预测的相互作用
KR20230150284A (ko) 효율적인 비디오 인코더 아키텍처
KR20230123952A (ko) 중첩 블록 모션 보상
US11895302B2 (en) Adaptive bilateral matching for decoder side motion vector refinement
KR20240026140A (ko) 디코더 측 모션 벡터 개선을 위한 적응적 양자간 매칭
US20230103767A1 (en) Motion vector (mv) candidate reordering
CN112823517B (zh) 基于历史的运动矢量预测子的改进
US20240080474A1 (en) Block-level collocated motion field projection for video coding
US20220201282A1 (en) Overlapped block motion compensation
CN117837143A (zh) 用于解码器侧运动矢量细化的自适应双边匹配
CN116601959A (zh) 重叠块运动补偿