KR102647582B1 - 모션 정보 개선의 서브영역 기반 결정 - Google Patents

모션 정보 개선의 서브영역 기반 결정 Download PDF

Info

Publication number
KR102647582B1
KR102647582B1 KR1020217036613A KR20217036613A KR102647582B1 KR 102647582 B1 KR102647582 B1 KR 102647582B1 KR 1020217036613 A KR1020217036613 A KR 1020217036613A KR 20217036613 A KR20217036613 A KR 20217036613A KR 102647582 B1 KR102647582 B1 KR 102647582B1
Authority
KR
South Korea
Prior art keywords
delete delete
motion vector
clause
video
video block
Prior art date
Application number
KR1020217036613A
Other languages
English (en)
Other versions
KR20220009947A (ko
Inventor
훙빈 류
리 장
카이 장
웨 왕
Original Assignee
베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드
바이트댄스 아이엔씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드, 바이트댄스 아이엔씨 filed Critical 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드
Publication of KR20220009947A publication Critical patent/KR20220009947A/ko
Application granted granted Critical
Publication of KR102647582B1 publication Critical patent/KR102647582B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/537Motion estimation other than block-based
    • H04N19/543Motion estimation other than block-based using regions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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

Abstract

비디오 처리를 위한 디바이스들, 시스템들 및 방법들이 설명된다. 한 양태에서, 비디오 처리 방법이 제공되고, 이 방법은, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 현재 비디오 블록 내의 한 영역에 대해 적어도 하나의 모션 벡터 오프셋이 도출되는 광학적 흐름 기반의 방법을 이용하여 현재 비디오 블록의 모션 정보가 개선된다고 결정하는 단계; 적어도 하나의 모션 벡터 오프셋을 범위 [-N, M]으로 클리핑하는 단계, ―여기서 N 및 M은 규칙에 기초한 정수들임―; 및 적어도 하나의 클리핑된 모션 벡터 오프셋에 기초하여 변환을 수행하는 단계를 포함한다.

Description

모션 정보 개선의 서브영역 기반 결정
관련 출원의 상호참조
본 출원은 2020년 5월 18일 출원된 국제 특허 출원 번호 PCT/CN2020/090802호의 국내 단계이며, 2019년 5월 16일 출원된 국제 특허 출원 번호 PCT/CN2019/087193호, 2019년 6월 4일 출원된 국제 특허 출원 번호 PCT/CN2019/090037호, 2019년 6월 12일 출원된 국제 특허 출원 번호 PCT/CN2019/090903호, 2019년 6월 28일 출원된 국제 특허 출원 PCT/CN2019/093616호, 2019년 6월 29일 출원된 국제 특허 출원 PCT/CN2019/093973호, 2019년 7월 1일 출원된 국제 특허 출원 번호 PCT/CN2019/094282호, 2019년 9월 5일 출원된 국제 특허 출원 번호 PCT/CN2019/104489호, 2019년 11월 8일 출원된 국제 특허 출원 번호 PCT/CN2019/116757호의 우선권을 주장한다. 앞서 언급된 출원들의 전체 개시내용은 본 출원의 개시내용의 일부로서 참조에 의해 포함된다.
기술 분야
이 특허 문서는, 비디오 처리 기술들, 디바이스들 및 시스템들에 관한 것이다.
비디오 압축에서의 진보에도 불구하고, 디지털 비디오는 여전히 인터넷 및 기타의 디지털 통신 네트워크에서 가장 큰 대역폭을 이용한다. 비디오를 수신하고 디스플레이할 수 있는 접속된 사용자 디바이스들의 수가 증가함에 따라, 디지털 비디오 이용에 대한 대역폭 수요는 계속 증가할 것으로 예상된다.
서브영역 기반의 모션 정보 개선을 포함하는 디지털 비디오 코딩과 관련된 디바이스들, 시스템들 및 방법들이 설명된다. 설명된 방법들은 기존의 비디오 코딩 표준들(예를 들어, 고효율 비디오 코딩(HEVC)) 및 미래의 비디오 코딩 표준들(예를 들어, VVC(Versatile Video Coding)) 또는 코덱들 양쪽 모두에 적용될 수 있다.
한 대표적인 양태에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는데 이용될 수 있고, 이 방법은 : 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 현재 비디오 블록 내의 한 영역에 대해 적어도 하나의 모션 벡터 오프셋이 도출되는 광학적 흐름 기반의 방법을 이용하여 현재 비디오 블록의 모션 정보가 개선된다고 결정하는 단계; 적어도 하나의 모션 벡터 오프셋을 범위 [-N, M]으로 클리핑하는 단계, ―여기서 N 및 M은 규칙에 기초한 정수들임―; 및 적어도 하나의 클리핑된 모션 벡터 오프셋에 기초하여 변환을 수행하는 단계를 포함한다.
또 다른 양태에서, 개시된 기술은 비디오 처리를 위한 방법을 제공하는데 이용될 수도 있고, 이 방법은 : 모션 정보를 개선하는데 이용되는 디코더측 모션 벡터 개선(DMVR) 동작 동안 개선된 모션 벡터로서, 비디오의 현재 비디오 블록과 연관된 하나 이상의 모션 벡터 차이를 이용하여 유사성 정합 함수를 적용한 결과와 동일한 모션 정보를 선택하는 단계; 및 개선된 모션 벡터를 이용하여 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함한다.
역시 또 다른 예시적인 양태에서, 비디오 처리 방법이 개시된다. 이 방법은, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해 현재 비디오 블록과 연관된 모션 정보를 도출하는 단계; 규칙에 따라 제1 서브영역 및 제2 서브영역을 포함하는 현재 비디오 블록에 개선 동작을 적용하되, 제1 서브영역 및 제2 서브영역이 개선 동작으로 인해 서로 상이한 모션 정보를 갖는 것을 규칙이 허용하도록, 개선 동작을 적용하는 단계; 및 현재 비디오 블록의 개선된 모션 정보를 이용하여 변환을 수행하는 단계를 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 현재 비디오 블록과 연관된 모션 정보를 도출하는 단계; 현재 비디오 블록의 서브영역에 대해, 모션 정보를 개선하는데 이용되는 디코더측 모션 벡터 개선(DMVR)의 출력에 기초하여 양방향 광학적 흐름(BIO)을 이용한 개선 동작의 적용가능성을 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은 2개의 모션 후보들 사이의 거리를 명시하는 거리 테이블을 포함하는 모션 벡터 표현을 포함하는 모션 벡터 차이를 갖는 병합 모드(MMVD; merge mode with motion vector difference)로 코딩된 현재 비디오 블록과 연관된 모션 정보를 도출하는 단계; MMVD에 이용되는 거리를 개선하는 방법을 명시하는 규칙에 따라 모션 정보를 개선하기 위해 현재 비디오 블록에 디코더측 모션 벡터 개선(DMVR)을 적용하는 단계; 및 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은 현재 비디오 블록의 샘플 또는 서브블록에 대해, 도출된 모션 정보에 기초하여 규칙에 따라, 도출된 모션 정보가 공간적 및/또는 시간적 구배를 이용하여 개선되는 양방향 광학적 흐름(BDOF)의 적용가능성을 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 모션 벡터 차이(MVD)를 도출하는 단계; 클리핑된 모션 벡터 차이를 생성하기 위해 도출된 모션 벡터 차이에 클리핑 동작을 적용하는 단계; 비용 함수를 이용하여 클리핑된 모션 벡터 차이의 비용을 계산하는 단계; 도출된 모션 벡터 차이, 클리핑된 모션 벡터 차이, 또는 비용 중 적어도 하나에 기초하여 규칙에 따라, 도출된 모션 벡터 차이가 공간적 및/또는 시간적 구배를 이용하여 개선되는 양방향 광학적 흐름(BDOF) 동작을 불허하기로 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 모션 벡터 차이를 도출하는 단계; 하나 이상의 모션 벡터 개선 툴 및 후보 모션 벡터 차이(MVD)들에 기초하여 도출된 모션 벡터 차이를 개선하는 단계; 및 개선된 모션 벡터 차이를 이용하여 변환을 수행하는 단계를 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은 현재 비디오 블록과 연관된 도출된 모션 벡터 차이를 후보 세트로 제한하는 단계, ―도출된 모션 벡터 차이는 현재 비디오 블록과 연관된 모션 정보를 개선하는 개선 동작에 이용됨―; 및 제한의 결과로서 도출된 모션 벡터 차이를 이용하여 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은, 비디오의 비디오 유닛의 현재 비디오 블록과 연관된 모션 정보를 개선하는데 이용되는 양방향 광학적 흐름(BDOF) 동작 동안, 비디오 유닛 및/또는 비디오 유닛에서의 코딩 툴의 이용에 기초하여 규칙에 따라 결정되는 클리핑 파라미터 세트를 이용하여 클리핑 동작을 적용하는 단계; 및 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은, 비디오의 현재 비디오 블록과 연관된 모션 정보를 개선하는데 이용되는 개선 동작 동안, 모션 벡터 차이(vx, vy)의 x 성분 및/또는 y 성분을 클리핑하기 위해 규칙에 따라 클리핑 동작을 적용하는 단계; 및 모션 벡터 차이를 이용하여 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 여기서, 규칙은 클리핑 동작 전 또는 후에 모션 벡터 차이를 0 또는 K-m 형태의 값으로 변환할 것을 명시하고, m은 정수이다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 따라 디코더측 모션 도출 동작 또는 디코더측 모션 개선 동작 동안에 모션 정보를 도출하거나 개선하는데 이용되는 검색 영역을 선택하는 단계; 및 도출되거나 개선된 모션 정보에 기초하여 변환을 수행하는 단계를 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 최상으로 정합하는 정수 위치를 포함한 개선에 이용되는 검색 영역을 이용함으로써 현재 비디오 블록과 연관된 모션 벡터 차이를 개선하기 위해 디코더측 모션 벡터 차이(DMVR; decoder-side motion vector difference) 동작을 적용하는 단계; 및 개선된 모션 벡터 차이를 이용하여 변환을 수행하는 단계를 포함하고, 여기서, DMVR 동작의 적용은 규칙에 따라 서브펠 모션 벡터 차이(MVD)를 도출하는 것을 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은, 비디오의 비디오 유닛의 현재 비디오 블록에 대해, 현재 비디오 블록과 연관된 모션 벡터 차이를 개선하기 위해 디코더측 모션 벡터 차이(DMVR) 동작을 적용하는 단계; 및 개선된 모션 벡터 차이를 이용하여 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 여기서, DMVR 동작의 적용은 비디오 유닛에 대한 양방향 광학적 흐름(BDOF)의 이용에 따라 서브펠 모션 벡터 차이(MVD) 도출을 허용하거나 불허하기로 결정하는 것을 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은, 광학적 흐름을 이용한 개선 동작 동안, 비디오의 현재 비디오 블록의 제1 샘플의 모션 벡터 차이를 도출하는 단계; 제1 샘플의 도출된 모션 벡터 차이에 기초하여 제2 샘플의 모션 벡터 차이를 결정하는 단계; 및 결정에 기초하여 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은, 비디오의 현재 비디오 블록에 양방향 광학적 흐름(BDOF) 동작을 이용한 개선 동작을 적용함으로써 예측 개선 샘플을 도출하는 단계; 규칙에 따라, 도출된 예측 개선 샘플을 미리결정된 범위 [-M, N]로 클리핑하는 클리핑 동작의 적용가능성을 결정하는 단계, ―M 및 N은 정수들임―; 및 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은, 상이한 잔차 코딩 모드들을 이용하여 코딩되는 제1 코딩 그룹 및 제2 코딩 그룹을 포함하는 현재 비디오 블록에 대한 코딩 그룹 크기들을 결정하되, 제1 코딩 그룹 및 제2 코딩 그룹의 크기들이 규칙에 따라 정렬되도록, 코딩 그룹 크기들을 결정하는 단계; 및 결정에 기초하여 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함한다.
역시 또 다른 예시적인 양태에서, 또 다른 비디오 처리 방법이 개시된다. 이 방법은, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 광학적 흐름을 이용하여 모션 정보가 개선되는 예측 개선 광학적 흐름(PROF; prediction refinement optical flow) 툴의 적용가능성을, 현재 비디오 블록과 연관된 코딩된 정보 및/또는 디코딩된 정보에 기초하여 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함한다.
역시 또 다른 대표적인 양태에서, 전술된 방법은 프로세서-실행가능한 코드의 형태로 구현되어 컴퓨터-판독가능 프로그램 매체에 저장된다.
역시 또 다른 대표적인 양태에서, 전술된 방법을 수행하도록 구성되거나 동작가능한 디바이스가 개시된다. 디바이스는, 이 방법을 구현하도록 프로그래밍된 프로세서를 포함할 수 있다.
역시 또 다른 대표적인 양태에서, 비디오 디코더 장치는 여기서 설명된 방법을 구현할 수 있다.
개시된 기술의 상기 및 기타의 양태들 및 피처들은, 도면들, 상세한 설명 및 청구항들에서 더 상세하게 설명된다.
도 1은 쌍방 정합의 한 예를 도시한다.
도 2는 템플릿 정합의 한 예를 도시한다.
도 3은 프레임-레이트 상향 변환(FRUC; frame-rate up conversion)에서 일방적 ME의 한 예를 도시한다.
도 4는 광학적 흐름 궤적의 한 예를 도시한다.
도 5a는 블록 외부의 액세스 위치들의 예를 도시하고 도 5b는 추가 메모리 액세스 및 계산을 피하는데 이용되는 패딩의 한 예를 도시한다.
도 6은 6개 포인트 검색을 이용한 쌍방 정합의 한 예를 도시한다.
도 7a는 적응형 정수 검색 패턴의 한 예를 도시하고 도 7b는 절반 샘플 검색 패턴의 한 예를 도시한다.
도 8은 파라미터 오차 표면 핏팅(fit)이 수행될 정수 위치들의 한 예를 도시한다.
도 9는 DMVR에서 서브펠 MVD가 도출되는 위치들의 한 예를 도시한다.
도 10은 서브블록 MV VSB 및 픽셀 의 한 예를 도시한다.
도 11은 PROF에서 크기 4*4에서 도출된 MVD의 한 예를 도시한다. 동일한 색상(음영)을 갖는 위치 쌍은 반대 MVD 값을 갖는다.
도 12a 내지 도 12f는 개시된 기술에 따른 비디오 처리를 위한 예시적인 방법들의 플로차트들을 도시한다.
도 13a 내지 도 13f는 개시된 기술에 따른 비디오 처리를 위한 예시적인 방법들의 플로차트들을 도시한다.
도 14a 내지 도 14f는 개시된 기술에 따른 비디오 처리를 위한 예시적인 방법들의 플로차트들을 도시한다.
도 15는 본 문서에 설명된 시각적 미디어 디코딩 또는 시각적 미디어 인코딩 기술을 구현하기 위한 하드웨어 플랫폼의 한 예에 대한 블록도이다.
도 16은 비디오 처리 시스템의 블록도이다.
본 문서에 공개된 기술들 및 디바이스들은 모션 정보 개선을 제공한다. 개시된 기술의 일부 구현은 서브영역 기반의 모션 정보 개선에 관한 것이다. 개시된 기술의 일부 구현은 비디오 코딩 및 디코딩에서 모션 보상에 적용될 수 있다.
비디오 코딩 표준은 주로, 널리 공지된 ITU-T 및 ISO/IEC 표준들의 개발을 통해 발전해 왔다. ITU-T는 H.261과 H.263을 생성했고, ISO/IEC는 MPEG-1과 MPEG-4 Visual을 생성했고, 2개의 조직은 공동으로 H.262/MPEG-2 Video와 H.264/MPEG-4 Advanced Video Coding (AVC) 및 H.265/HEVC 표준들을 생성했다. H.262 이후로, 비디오 코딩 표준들은, 시간적 예측에 더하여 변환 코딩이 이용되는 하이브리드 비디오 코딩 구조에 기초한다. HEVC를 넘어 미래의 비디오 코딩 기술들을 탐구하기 위해, JVET(Joint Video Exploration Team)가 2015년 VCEG와 MPEG에 의해 공동으로 설립되었다. 그 이후로, JVET에 의해 많은 새로운 방법들이 채택되었고 JEM(Joint Exploration Model)이라는 레퍼런스 소프트웨어에 적용되었다. 2018년 4월, VCEG(Q6/16)와 ISO/IEC JTC1 SC29/WG11(MPEG) 사이의 JVET(Joint Video Expert Team)가 HEVC에 비해 50% 비트레이트 감소를 목표로 하는 VVC 표준 작업을 위해 창설되었다.
1.1. 패턴 정합된 모션 벡터 도출
PMMVD(패턴 정합형 모션 벡터 도출) 모드는 FRUC(Frame-Rate Up Conversion) 기술에 기초하는 특별한 병합 모드이다. 이 모드에서, 블록의 모션 정보는 시그널링되지 않고 디코더측에서 도출된다.
FRUC 플래그는, 병합 플래그가 참일 때 CU에 대해 시그널링된다. FRUC 플래그가 거짓일 때, 병합 인덱스가 시그널링되고 일반 병합 모드가 이용된다. FRUC 플래그가 참일 때, 블록에 대한 모션 정보를 도출하기 위해 어떤 방법(쌍방 정합 또는 템플릿 정합)이 이용될 것인지를 나타내도록 추가적인 FRUC 모드 플래그가 시그널링된다.
인코더 측에서, CU에 대해 FRUC 병합 모드를 이용할지에 관한 결정은, 일반 병합 후보에 대해 이루어지는 RD 비용 선택에 기초한다. 즉, RD 비용 선택을 이용하여 CU에 대해 2개의 정합 모드(쌍방 정합 및 템플릿 정합) 양쪽 모두가 체크된다. 최소 비용으로 이어지는 모드는 다른 CU 모드들과 더 비교된다. FRUC 정합 모드가 가장 효율적인 모드인 경우, CU에 대해 FRUC 플래그가 참으로 설정되고 관련 정합 모드가 이용된다.
FRUC 병합 모드에서 모션 도출 프로세스는 2개의 단계를 가진다. CU-레벨 모션 검색이 먼저 수행된 다음, 서브CU 레벨 모션 개선이 뒤따른다. CU 레벨에서, 쌍방 정합 또는 템플릿 정합에 기초하여 전체 CU에 대해 초기 모션 벡터가 도출된다. 먼저, MV 후보 목록이 생성되고 최소 정합 비용으로 이어지는 후보가 추가 CU 레벨 개선을 위한 시작 포인트로서 선택된다. 그 다음, 시작 포인트를 중심으로 쌍방 정합 또는 템플릿 정합에 기초한 로컬 검색을 수행되고 최소 정합 비용에서의 MV 결과가 전체 CU에 대한 MV로서 취해진다. 후속해서, 모션 정보는, 도출된 CU 모션 벡터들을 시작 포인트들로 하여 서브CU 레벨에서 더 개선된다.
예를 들어, W×H CU 모션 정보 도출을 위해 다음과 같은 도출 프로세스가 수행된다. 제1 스테이지에서, 전체 W×H CU에 대한 MV가 도출된다. 제2 스테이지에서, CU는 M×M 서브CU들로 더 분할된다. M의 값은 (16)에서와 같이 계산되고, 는 JEM에서 디폴트로 3으로 설정되는 미리정의된 분할 깊이이다. 그 다음, 각각의 서브CU에 대한 MV가 도출된다.
(1)
도 1에 도시된 바와 같이, 쌍방 정합은, 2개의 상이한 기준 픽처 내의 현재 CU의 모션 궤적을 따른 2개의 블록 사이에서 가장 가까운 정합을 발견함으로써 현재 CU의 모션 정보를 도출하는데 이용된다. 연속적인 모션 궤적의 가정하에, 2개의 기준 블록을 가리키는 모션 벡터들 MV0, MV1은, 현재 픽처와 2개의 기준 픽처 사이의 시간적 거리들, 즉, TD0, TD1에 비례해야 한다. 특별한 경우로서, 현재 픽처가 시간적으로 2개의 기준 픽처 사이에 있고 현재 픽처로부터 2개의 기준 픽처까지의 시간적 거리가 동일할 때, 쌍방 정합은 미러 기반의 양방향 MV가 된다.
도 2에 도시된 바와 같이, 템플릿 정합은 현재 픽처 내의 템플릿(현재 CU의 상단 및/또는 좌측 이웃 블록들)과 기준 픽처 내의 블록(템플릿과 동일한 크기) 사이의 가장 가까운 정합을 발견함으로써 현재 CU의 모션 정보를 도출하는데 이용된다. 앞서 언급된 FRUC 병합 모드를 제외하고, 템플릿 정합은 AMVP 모드에도 적용된다. JEM에서, HEVC에서와 같이, AMVP는 2개의 후보를 갖는다. 템플릿 정합 방법에 의해, 새로운 후보가 도출된다. 템플릿 정합에 의해 새로이 도출된 후보가 제1 기존 AMVP 후보와는 상이한 경우, 이것은 AMVP 후보 목록의 맨 처음에 삽입된 다음, 목록 크기가 2로 설정된다(즉, 제2 기존 AMVP 후보를 제거한다는 의미). AMVP 모드에 적용될 때, CU 레벨 검색만이 적용된다.
CU 레벨 MV 후보 세트
CU 레벨의 MV 후보 세트는 하기의 것들로 구성된다:
i) 현재 CU가 AMVP 모드에 있는 경우 원래의 AMVP 후보들
ii) 모든 병합 후보들,
iii) 2.1.1.3절에 소개된 보간된 MV 필드 내의 수개의 MV들.
iv) 상단 및 좌측 이웃 모션 벡터들
쌍방 정합을 이용할 때, 병합 후보의 각각의 유효한 MV는 쌍방 정합을 가정하여 MV 쌍을 생성하기 위한 입력으로서 이용된다. 예를 들어, 병합 후보의 하나의 유효한 MV는 기준 목록 A의 (MVa, refa)이다. 그 다음, 그 쌍을 이루는 쌍방 MV의 기준 픽처 refb는 다른 기준 목록 B에서 발견되어 refa와 refb가 시간적으로 현재 픽처의 상이한 측들에 있게 된다. 이러한 refb가 기준 목록 B에서 이용가능하지 않는 경우, refb는 refa와는 상이한 기준으로서 결정하고 현재 픽처까지의 그 시간적 거리는 목록 B에서 최소의 것이다. refb가 결정된 후, 현재 픽처와 refa, refb 사이의 시간적 거리에 기초하여 MVa를 스케일링함으로써 MVb가 도출된다.
보간된 MV 필드로부터의 4개의 MV도 역시 CU 레벨 후보 목록에 추가된다. 더 구체적으로, 현재 CU의 위치 (0, 0), (W/2, 0), (0, H/2), (W/2, H/2)에 있는 보간된 MV들이 추가된다.
AMVP 모드에서 FRUC가 적용될 때, 원래의 AMVP 후보들도 역시 CU 레벨 MV 후보 세트에 추가된다.
CU 레벨에서, AMVP CU들에 대한 최대 15개의 MV와 병합 CU들에 대한 최대 13개의 MV가 후보 목록에 추가된다.
서브CU 레벨 MV 후보 세트
서브CU 레벨의 MV 후보 세트는 하기의 것들로 구성된다:
i) CU-레벨 검색으로부터 결정된 MV,
ii) 상단, 좌측, 좌측 상단 및 우측 상단 이웃 MV들,
iii) 기준 픽처들로부터 함께 배치된 MV들의 스케일링된 버전,
iv) 최대 4개의 ATMVP 후보,
v) 최대 4개의 STMVP 후보
기준 픽처들로부터 스케일링된 MV들은 다음과 같이 도출된다. 양쪽 목록의 모든 기준 픽처들이 순회된다. 기준 픽처 내의 서브CU의 함께 배치된 위치에 있는 MV들은 시작 CU-레벨 MV의 기준으로 스케일링된다.
ATMVP 및 STMVP 후보들은 처음 4개의 것들로 제한된다.
서브CU 레벨에서, 최대 17개의 MV가 후보 목록에 추가된다.
보간된 MV 필드의 생성
프레임을 코딩하기 전에, 일방 ME에 기초하여 전체 픽처에 대해 보간된 모션 필드가 생성된다. 그러면, 모션 필드는 나중에 CU 레벨 또는 서브CU 레벨 MV 후보들로서 이용될 수 있다.
먼저, 양쪽 기준 목록들 내의 각각의 기준 픽처의 모션 필드는 4×4 블록 레벨에서 순회된다. 각각의 4x4 블록에 대해, (FRUC에서 일방 ME의 한 예를 도시하는 도 3에 도시된 바와 같은) 현재 픽처의 4x4 블록을 통과하는 블록과 연관된 모션과 그 블록이 어떠한 보간된 모션도 할당받지 않았다면, 기준 블록의 모션은 시간적 거리 TD0 및 TD1에 따라 현재 픽처로 스케일링되고(HEVC에서 TMVP의 MV 스케일링과 동일한 방식) 스케일링된 모션은 현재 프레임의 블록에 할당된다. 스케일링된 MV가 4×4 블록에 할당되지 않은 경우, 블록의 모션은 보간된 모션 필드에서 이용불가능한 것으로서 마킹된다.
보간 및 정합 비용
모션 벡터가 분수 샘플 위치를 가리킬 때, 모션 보상 보간이 필요하다. 복잡성을 감소시키기 위해, 일반 8탭 HEVC 보간 대신 쌍선형 보간이 쌍방 정합과 템플릿 정합 양쪽 모두에 이용된다.
정합 비용의 계산은 상이한 단계들에서 약간 상이하다. CU 레벨의 후보 세트로부터 후보를 선택할 때, 정합 비용은 쌍방 정합 또는 템플릿 정합의 SAD(절대 합계 차이)이다. 시작 MV가 결정된 후, 서브CU 레벨 검색에서 쌍방 정합의 정합 비용 C는 다음과 같이 계산된다:
(2)
여기서, 는 경험적으로 4로 설정한 가중치 인자이고, MV 및 MVs는 각각 현재 MV와 시작 MV를 나타낸다. SAD는 여전히, 서브CU 레벨 검색에서 템플릿 정합의 정합 비용으로서 이용된다.
FRUC 모드에서, MV는 루마 샘플들만을 이용하여 도출된다. 도출된 모션은 MC 인터 예측을 위해 루마와 크로마 양쪽 모두에 이용된다. MV가 결정된 후, 루마에 대해서는 8탭 보간 필터, 크로마에 대해서는 4탭 보간 필터를 이용하여 최종 MC가 수행된다.
MV 개선
MV 개선은 쌍방 정합 비용 또는 템플릿 정합 비용을 기준으로 하는 패턴 기반의 MV 검색이다. JEM에서는, 2개의 검색 패턴이 지원된다 ―각각, CU 레벨 및 서브CU 레벨에서의 MV 개선을 위한 무제한 중심-편향된 다이아몬드 검색(UCBDS) 및 적응형 교차 검색. CU 및 서브CU 레벨 MV 개선 양쪽 모두에 대해, MV는 1/4 루마 샘플 MV 정확도에서 직접 검색되고, 그 다음, 1/8 루마 샘플 MV 개선이 뒤따른다. CU 및 서브CU 단계에 대한 MV 개선의 검색 범위는 8개 루마 샘플과 동일하게 설정된다.
템플릿 정합 FRUC 병합 모드에서의 예측 방향 선택
쌍방 정합 병합 모드에서, CU의 모션 정보는 2개의 상이한 기준 픽처에서의 현재 CU의 모션 궤적을 따른 2개의 블록 사이의 가장 가까운 정합에 기초하여 도출되기 때문에 쌍방 예측은 항상 적용된다. 템플릿 정합 병합 모드에 대해서는 이러한 제한이 없다. 템플릿 정합 병합 모드에서, 인코더는, list0으로부터 일방 예측, list1로부터의 일방 예측 또는 CU에 대한 쌍방 예측 중에서 선택할 수 있다. 선택은 다음과 같이 템플릿 정합 비용에 기초한다 :
만일 costBi <= factor * min (cost0, cost1)이면,
쌍방 예측이 이용된다;
그렇지 않고, cost0 <= cost1이라면,
list0으로부터의 일방 예측이 이용된다;
그외의 경우,
list1로부터의 일방 예측이 이용된다;
여기서, cost0은 list0 템플릿 정합의 SAD이고, cost1은 list1 템플릿 정합의 SAD이고, costBi는 쌍방 예측 템플릿 정합의 SAD이다. factor의 값은 1.25와 같으며, 이것은 선택 프로세스가 쌍방 예측을 향해 편향됨을 의미한다.
인터 예측 방향 선택은 CU-레벨 템플릿 정합 프로세스에만 적용된다.
1.2 하이브리드 인트라 및 인터 예측
JVET-L0100에서는, 다중-가설 예측이 제안되며, 여기서 하이브리드 인트라 및 인터 예측은 복수의 가설을 생성하는 한 방식이다.
다중-가설 예측이 인트라 모드를 개선하기 위해 적용될 때, 다중-가설 예측은 하나의 인트라 예측과 하나의 병합 인덱싱된 예측을 결합한다. 병합 CU에서, 병합 모드에 대해 하나의 플래그가 시그널링되어 플래그가 참일 때 인트라 후보 목록으로부터 인트라 모드를 선택한다. 루마 성분에 대해, 인트라 후보 목록은 DC, 평면, 수평, 수직 모드를 포함한 4가지 인트라 예측 모드로부터 도출되며, 인트라 후보 목록의 크기는 블록 형상에 따라 3 또는 4일 수 있다. CU 폭이 CU 높이의 2배보다 크면, 수평 모드는 인트라 모드 목록에서 제외되고, CU 높이가 CU 폭의 2배보다 크면, 수직 모드는 인트라 모드 목록에서 제거된다. 인트라 모드 인덱스에 의해 선택된 하나의 인트라 예측 모드와, 병합 인덱스에 의해 선택된 하나의 병합 인덱스 예측은 가중 평균을 이용하여 결합된다. 크로마 성분에 대해, 추가 시그널링 없이 항상 DM이 적용된다. 예측들을 결합하기 위한 가중치들은 다음과 같이 설명된다. DC 또는 평면 모드가 선택되거나 CB 폭 또는 높이가 4보다 작으면, 동일한 가중치들이 적용된다. CB 폭 및 높이가 4보다 크거나 같은 CB들에 대해, 수평/수직 모드가 선택되면, 먼저, 하나의 CB가 4개의 동일 면적의 영역으로 수직/수평으로 분할된다. (w_intrai, w_interi)로 표기된 각각의 가중치 세트, ―여기서 i는 1부터 4까지이고, (w_intra1, w_inter1) =(6, 2), (w_intra2, w_inter2) =(5, 3), (w_intra3, w_inter3) =(3, 5), (w_intra4, w_inter4) =(2, 6)―가 대응하는 영역에 적용될 것이다. (w_intra1, w_inter1)은 기준 샘플들에 가장 가까운 영역에 대한 것이고, (w_intra4, w_inter4)는 기준 샘플들로부터 가장 먼 영역에 대한 것이다. 그 다음, 2개의 가중 예측을 합산하고 3개 비트를 우측 시프팅함으로써 결합 예측이 계산될 수 있다. 또한, 예측자들의 인트라 가설에 대한 인트라 예측 모드는 후속 이웃 CU들의 참조를 위해 저장될 수 있다.
1.3 양방향 광학적 흐름
BIO는 BDOF(Bi Directional Optical Flow)라고도 알려져 있다. BIO에서 모션 보상이 먼저 수행되어 현재 블록의 (각각의 예측 방향에서의) 제1 예측들을 생성한다. 제1 예측들은, 블록 내의 각각의 서브블록/픽셀의 공간적 구배, 시간적 구배 및 광학적 흐름을 도출하는데 이용되고, 그 다음, 제2 예측, 즉, 서브블록/픽셀의 최종 예측을 생성하는데 이용된다. 상세사항들은 다음과 같이 설명된다.
양방향 광학적 흐름(BIO)은 쌍방 예측에 대해 블록별 모션 보상의 상단에 수행되는 샘플별 모션 개선이다. 샘플-레벨 모션 개선은 시그널링을 이용하지 않는다.
I(k)를, 블록 모션 보상 후의 기준 k(k=0, 1)의 루마 값이라 하고, 를, 각각, I(k) 구배의 수평 및 수직 성분이라 하자. 광학적 흐름이 유효하다고 가정하면, 모션 벡터 필드 는 다음과 같은 방정식에 의해 주어진다
(3)
이 광학적 흐름 방정식을 각각의 샘플의 모션 궤적에 대한 Hermite 보간과 결합하면, 결과적으로 말단들에서 함수 값들 I(k)와 도함수들 양쪽 모두와 정합하는 고유한 3차 다항식이 생성된다. t=0에서 이 다항식의 값이 BIO 예측이다:
(4)
여기서, τ0 및 τ1은 광학적 흐름 궤적의 한 예를 도시하는 도 4에서와 같이 기준 프레임들까지의 거리들을 나타낸다. 거리들 τ0 및 τ1은, Ref0 및 Ref1에 대한 POC에 기초하여 계산된다 : τ0=POC(current)-POC(Ref0), τ1= POC(Ref1)-POC(current). 양쪽 예측들 모두가 동일한 시간 방향으로부터(양쪽 모두 과거로부터 또는 양쪽 모두 미래로부터) 나온다면, 부호들은 상이하다(즉, τ0 · τ1 < 0). 이 경우, BIO는 예측이 동일한 시점으로부터 나온 것이 아닌 경우(즉, τ0 ≠ τ1)에만 적용되며, 참조된 양쪽 영역은 모두 0이 아닌 모션()을 가지며 블록 모션 벡터들은 시간 거리에 비례한다().
모션 벡터 필드 는 포인트 A와 B(도 4의 모션 궤적과 기준 프레임 평면들의 교차부)의 값들 사이의 차이 △를 최소화함으로써 결정된다. 모델은 △에 대해 로컬 테일러 급수의 제1 선형 항만을 이용한다:
(5)
수학식 5의 모든 값은 지금까지 표기법에서 생략된 샘플 위치 에 의존한다. 모션이 로컬 주변 영역에서 일관적이라고 가정하면, 현재 예측된 포인트 (i, j)에 중심을 둔 (2M+1)×(2M+1) 정사각형 윈도우 Ω 내부의 △를 최소화한다, 여기서 M은 2이다 :
(6)
이 최적화 문제에 대해, JEM은 먼저 수직 방향으로 최소화한 다음 수평 방향으로 최소화하는 단순화된 접근법을 이용한다. 이 결과
(7)
(8)
여기서,
(9)
0 또는 매우 작은 값으로 나누는 것을 피하기 위해, 정규화 파라미터들 r 및 m이 방정식 7 및 8에 도입되었다.
(10)
(11)
여기서, d는 비디오 샘플들의 비트 깊이이다.
BIO에 대한 메모리 액세스를 일반 쌍방 예측 모션 보상과 동일하게 유지하기 위해, 모든 예측 및 구배 값들, 은, 현재 블록 내부의 위치들에 대해서만 계산된다. 방정식 (9)에서, 예측 블록의 경계 상의 현재 예측된 포인트에 중심을 둔 (2M+1)×(2M+1) 정사각형 윈도우 Ω는, 도 5a에 도시된 바와 같이 블록 외부의 위치들에 액세스할 필요가 있다. JEM에서, 블록 외부의 의 값들은 블록 내부에서 이용가능한 가장 가까운 값과 동일하게 설정된다. 예를 들어, 이것은, 도 5b에 도시된 바와 같이, 패딩으로서 구현될 수 있다. 도 5a 및 도 5b는 블록 확장이 없는 BIO의 예들을 도시한다. 도 5a는 블록 외부의 액세스 위치들의 예들을 도시하고 도 5b는 추가 메모리 액세스 및 계산을 피하는데 이용되는 패딩의 한 예를 도시한다.
BIO를 이용하여, 각각의 샘플에 대해 모션 필드가 개선될 수 있는 것이 가능하다. 계산 복잡성을 감소시키기 위해, BIO의 블록-기반의 설계가 JEM에서 이용된다. 모션 개선은 4×4 블록에 기초하여 계산된다. 블록-기반의 BIO에서, 4×4 블록의 모든 샘플에 대한 방정식 9의 sn의 값들이 집계된 다음, 집계된 sn의 값들은 4×4 블록에 대한 BIO 모션 벡터 오프셋을 도출하는데 이용된다. 더 구체적으로, 블록-기반의 BIO 도출에 대해 다음과 같은 공식이 이용된다:
(12)
여기서 bk는 예측된 블록의 k번째 4x4 블록에 속하는 샘플 세트를 나타낸다. 방정식 7 및 8에서 sn은 연관된 모션 벡터 오프셋들을 도출하기 위해 ((sn, bk) >>4)로 대체된다.
일부 경우에, BIO의 MV 집단은 노이즈 또는 불규칙한 모션으로 인해 신뢰성이 없을 수도 있다. 따라서, BIO에서, MV 집단의 크기는 임계값 thBIO로 클리핑된다. 임계값은, 현재 픽처의 기준 픽처들이 모두가 하나의 방향으로부터 나온 것인지에 기초하여 결정된다. 현재 픽처의 모든 기준 픽처가 하나의 방향에서 나온 경우 임계값은 12×214-d로 설정된다; 그렇지 않으면 12×213-d로 설정된다.
BIO에 대한 구배들은 HEVC 모션 보상 프로세스(2D 분리가능한 FIR)와 일치하는 동작들을 이용하여 모션 보상 보간과 동시에 계산된다. 이 2D 분리가능한 FIR에 대한 입력은, 모션 보상 프로세스와 블록 모션 벡터의 분수 부분에 따른 분수 위치(fracX, fracY)와 동일한 기준 프레임 샘플이다. 디스케일링 시프트 d-8로 분수 위치 fracY에 대응하는 BIOfilterS를 이용하여 수직으로 먼저 보간된 수평 구배 신호의 경우, 18-d만큼의 디스케일링 시프트로 분수 위치 fracX에 대응하는 수평 방향으로 구배 필터 BIOfilterG가 적용된다. 디스케일링 시프트 d-8로 분수 위치 fracY에 대응하는 BIOfilterG를 이용하여 수직으로 수직 구배 제1 구배 필터가 적용하는 경우, 18-d만큼의 디스케일링 시프트로 분수 위치 fracX에 대응하는 수평 방향으로 BIOfilterS를 이용하여 신호 변위가 수행된다. 구배 계산 BIOfilterG 및 신호 변위 BIOfilterF에 대한 보간 필터의 길이는 합리적인 복잡성을 유지하기 위해 더 짧다(6-탭). 표 1은 BIO에서 블록 모션 벡터의 상이한 분수 위치들에 대한 구배 계산에 이용되는 필터들을 도시한다. 표 2는 BIO에서 예측 신호 생성에 이용되는 보간 필터들을 도시한다.
표 1 : BIO에서 구배 계산을 위한 필터들
Figure 112021129063637-pct00027
표 2 : BIO에서 예측 신호 생성을 위한 보간 필터들
Figure 112021129063637-pct00028
JEM에서, BIO는, 2개의 예측이 상이한 기준 픽처들로부터 나온 경우 모든 쌍방 예측된 블록들에 적용된다. CU에 대해 LIC가 인에이블되면, BIO는 디스에이블된다.
JEM에서, OBMC는 보통의 MC 프로세스 이후에 블록에 적용된다. 계산 복잡도를 감소시키기 위해, OBMC 프로세스 동안에는 BIO는 적용하지 않는다. 이것은, BIO는 자신의 MV를 이용할 경우 블록에 대해 MC 프로세스에서만 적용되고, OBMC 프로세스 동안에 이웃 블록의 MV가 이용될 경우 MC 프로세스에서는 적용되지 않음을 의미한다.
2-스테이지 조기 종료 방법을 이용하여 2개의 예측 신호들 사이의 유사도에 따라 BIO 동작들을 조건부로 디스에이블한다. 조기 종료는 먼저 CU-레벨에서 적용된 다음, 서브CU-레벨에서 적용된다. 구체적으로, 제안된 방법은 먼저 CU 레벨에서 L0 및 L1 예측 신호들 사이의 SAD를 계산한다. BIO가 루마에만 적용된다는 점을 감안할 때, SAD 계산에 대해 루마 샘플들만이 고려될 필요가 있다. CU-레벨 SAD가 미리정의된 임계값보다 크지 않으면, 전체 CU에 대해 BIO 프로세스가 완전히 디스에이블된다. CU-레벨 임계값은 샘플당 2(BDepth-9)로 설정된다. BIO 프로세스가 CU 레벨에서 디스에이블되지 않고 현재 CU가 복수의 서브CU를 포함하는 경우, CU 내부의 각각의 서브CU의 SAD가 계산될 것이다. 그 다음, BIO 프로세스를 인에이블할지 또는 디스에이블할지에 관한 결정은, 샘플당 3*2(BDepth-10)으로 설정된 미리정의된 서브CU-레벨 SAD 임계값에 기초하여 서브CU-레벨에서 이루어진다.
1.4 VVC에서의 BDOF(양방향 광학적 흐름)에 대한 명세
(JVET-N1001-v2에서) BDOF의 명세는 다음과 같다 :
8.5.7.4 양방향 광학적 흐름 예측 프로세스
이 프로세스에 대한 입력은 다음과 같다 :
-현재 코딩 블록의 폭과 높이를 명시하는 2개의 변수 nCbW 및 nCbH,
-2개의 (nCbW + 2)x(nCbH + 2) 루마 예측 샘플 어레이들 predSamplesL0 및 predSamplesL1,
-예측 목록 이용 플래그들 predFlagL0 및 predFlagL1,
-기준 인덱스들 refIdxL0 및 refIdxL1,
-양방향 광학적 흐름 이용 플래그들 bdofUtilizationFlag[ xIdx ][ yIdx ], 여기서 xIdx = 0..(nCbW >> 2 )-1, yIdx = 0..( nCbH >> 2 )-1.
이 프로세스의 출력은 루마 예측 샘플 값들의 (nCbW)x(nCbH) 어레이 pbSamples이다.
변수들 bitDepth, shift1, shift2, shift3, shift4, offset4 및 mvRefineThres는 다음과 같이 도출된다:
-변수 bitDepth는 BitDepthY와 동일하게 설정된다.
-변수 shift1은 Max( 2, 14-bitDepth )와 동일하게 설정된다.
-변수 shift2는 Max( 8, bitDepth-4 )와 동일하게 설정된다.
-변수 shift3은 Max( 5, bitDepth-7 )과 동일하게 설정된다.
-변수 shift4는 Max( 3, 15-bitDepth )와 동일하게 설정되고 변수 offset4는 1 << ( shift4-1 )과 동일하게 설정된다.
-변수 mvRefineThres는 Max( 2, 1 << ( 13-bitDepth ) )와 동일하게 설정된다.
xIdx = 0..( nCbW >> 2 )-1 및 yIdx = 0..( nCbH >> 2 )-1에 대해, 다음이 적용된다 :
-변수 xSb는 ( xIdx << 2) + 1과 동일하게 설정되고 ySb는 ( yIdx << 2 ) + 1과 동일하게 설정된다.
-bdofUtilizationFlag[ xSbIdx ][ yIdx ]가 FALSE와 같다면, x = xSb-1..xSb+2, y = ySb-1.. ySb+2에 대해, 현재 서브블록의 예측 샘플 값들은 다음과 같이 도출된다 :
-그렇지 않다면(bdofUtilizationFlag[ xSbIdx ][ yIdx ]가 TRUE와 같음), 현재 서브블록의 예측 샘플 값들은 다음과 같이 도출된다 :
-x =xSb-1..xSb+4, y = ySb-1..ySb+4에 대해, 다음과 같은 순서화된 단계들이 적용된다 :
1. 예측 샘플 어레이들 내부의 대응하는 샘플 위치 (x, y) 각각에 대한 위치들(hx, vy)은 다음과 같이 도출된다 :
2. 변수들 gradientHL0[ x ][ y ], gradientVL0[ x ][ y ], gradientHL1[ x ][ y ] 및 gradientVL1[ x ][ y ]는 다음과 같이 도출된다 :
3. 변수들 temp [x] [y], tempH [x] [y] 및 tempV [x] [y]는 다음과 같이 도출된다 :
-변수들 sGx2, sGy2, sGxGy, sGxdI 및 sGydI는 다음과 같이 도출된다 :
-현재 서브블록의 수평 및 수직 모션 오프셋은 다음과 같이 도출된다 :
-x = xSb - 1..xSb + 2, y = ySb - 1..ySb + 2에 대해, 현재 서브블록의 예측 샘플 값들은 다음과 같이 도출된다 :
[Ed. (JC): float 입력에 대해 Round() 동작이 정의된다. 입력이 정수 값이기 때문에 Round() 동작은 여기에서 중복적인 것처럼 보인다. 제안자에 의해 확인 예정]
공간적 구배는 다음과 같이 계산된다 :
반면, 시간적 구배는 다음과 같이 계산된다 :
공간적 구배와 시간적 구배의 계산은 정렬되지 않는다.
1.5 디코더측 모션 벡터 개선
쌍방 예측 동작에서, 하나의 블록 영역의 예측을 위해, list0의 모션 벡터(MV)와 list1의 MV를 이용하여 각각 형성된 2개의 예측 블록을 결합하여 단일의 예측 신호를 형성한다. JVET-K0217, 디코더측 모션 벡터 개선(DMVR; Decoder-side Motion Vector Refinement) 방법에서, 쌍방 정합 프로세스에 의해 쌍방 예측의 2개의 모션 벡터가 더 개선된다.
제안된 방법에서 DMVR은, 다음과 같은 조건이 참인 경우, 병합 및 스킵 모드에서만 적용된다 :
(POC - POC0)*(POC - POC1) < 0,
여기서, POC - 인코딩될 현재 픽처의 픽처 순서 카운트, POC0 및 POC1 - 현재 픽처에 대한 기준들의 픽처 순서 카운트.
시그널링된 병합 후보 쌍은 DMVR 프로세스에 대한 입력으로 이용되고, 초기 모션 벡터들(MV0, MV1)로서 표기된다. DMVR에 의해 검색되는 검색 포인트들은 모션 벡터 차이 미러링 조건을 준수한다. 즉, 후보 모션 벡터 쌍(MV0', MV1')으로 표기되는 DMVR에 의해 체크되는 임의의 포인트는 다음과 같은 2개의 방정식을 준수한다 :
여기서 MVdiff는 기준 픽처들 중 하나의 검색 공간 내의 포인트들을 나타낸다.
검색 공간의 구성 후, 일방 예측들이 일반 8-탭 DCTIF 보간 필터를 이용하여 구성된다. 쌍방 정합 비용 함수는 2개의 예측 사이의 MRSAD(mean removed sum of absolute differences; 절대 차이의 평균 제거된 합)를 이용하여 계산되며(6 포인트 검색을 이용한 쌍방 정합의 한 예를 도시하는 도 6을 참조) 최소 비용을 생성하는 검색 포인트가 개선된 MV 쌍으로서 선택된다. MRSAD 계산에 대해, (보간 필터링의 출력인) 샘플들의 16비트 정밀도가 이용되며, MRSAD 계산 전에 클리핑 및 반올림 동작들은 적용되지 않는다. 반올림 및 클리핑을 적용하지 않는 이유는 내부 버퍼 요구조건을 감소시키기 위함이다.
제안된 방법에서 정수 정밀도 검색 포인트들은 적응형 패턴 방법에 의해 선택된다. (초기 모션 벡터들이 가리키는) 중심 포인트들에 대응하는 비용이 먼저 계산된다. (부호 형상에서) 다른 4개의 비용은, 중심 포인트를 기준으로 서로 반대쪽에 위치한 2개의 예측에 의해 계산된다. 각도에서 마지막 6번째 포인트는 도 7a 및 도 7b에 도시된 바와 같이 이전에 계산된 비용들의 구배에 의해 선택된다. 도 7a는 적응형 정수 검색 패턴의 한 예를 도시하고 도 7b는 절반 샘플 검색 패턴의 한 예를 도시한다.
DMVR 프로세스의 출력은 최소 비용에 대응하는 개선된 모션 벡터 쌍이다.
한 번의 반복 후에 검색 공간의 중심 포인트에서 최소 비용이 달성된다면, 즉, 모션 벡터들이 변경되지 않는다면, 개선 프로세스가 종료된다. 그렇지 않으면, 최상의 비용이 더 중심으로 간주되어 프로세스가 계속되는 반면, 최소 비용은 중심 포인트에 대응하지 않고 검색 범위를 초과하지 않는다.
절반 샘플 정밀도 검색은, 절반 픽셀 검색의 적용이 검색 범위를 초과하지 않는 경우에만 적용된다. 이 경우, 정수 정밀도 검색 동안에 최상으로서 선택된, 중심 포인트 주변의 플러스 형상의 포인트들에 대응하는, 4개의 MRSAD 계산만이 수행된다. 결국, 최소 비용 포인트에 대응하는 개선된 모션 벡터 쌍이 출력된다.
JVET-L0163에서 일부 간소화 및 개선이 추가로 제안된다.
기준 샘플 패딩
기준 샘플 패딩은 초기 모션 벡터가 가리키는 기준 샘플 블록을 확장하기 위해 적용된다. 코딩 블록의 크기가 "w" 및 "h"에 의해 주어지면, 크기 w+7 및 h+7의 블록이 기준 픽처 버퍼로부터 회수된다고 가정한다. 그 다음, 회수된 버퍼는, 가장 가까운 샘플을 이용한 반복적인 샘플 패딩에 의해 각각의 방향으로 2개의 샘플만큼 확장된다. 그 후, 일단 (초기 모션 벡터로부터 각각의 방향으로 2개의 샘플만큼 벗어날 수 있는) 개선된 모션 벡터가 획득되고 나면 확장된 기준 샘플 블록을 이용하여 최종 예측을 생성한다.
이 수정은 어떠한 코딩 손실도 없이 DMVR의 외부 메모리 액세스 요구조건을 완전히 제거한다는 점에 유의한다.
8-탭 DCTIF 대신 쌍선형 보간
제안에 따르면 쌍선형 보간은 DMVR 검색 프로세스 동안 적용되며, 이것은 MRSAD 계산에서 이용된 예측들이 쌍선형 보간을 이용하여 생성됨을 의미한다. 일단 최종 개선된 모션 벡터들이 획득되고 나면, 일반 8-탭 DCTIF 보간 필터가 적용되어 최종 예측을 생성한다.
작은 블록들에 대한 DMVR의 디스에이블링
DMVR은, 블록들 4x4, 4x8 및 8x4에 대해 디스에이블된다.
병합 후보들간 MV 차이에 기초한 조기 종료
MV 개선 프로세스를 제한하기 위해 DMVR에 추가 조건이 부과된다. 이에 의해, DMVR은 아래의 조건이 충족될 때 조건부로 디스에이블된다.
선택된 병합 후보와 동일한 병합 목록 내의 이전의 것들 중 임의의 것 사이의 MV 차이는 미리정의된 임계값(즉, 각각, 64픽셀 미만, 256픽셀 미만 및 적어도 256픽셀을 갖는 CU들에 대해 ¼, ½ 및 1픽셀 폭 간격들)보다 작다.
중앙 검색 좌표에서 SAD 비용에 기초한 조기 종료
현재 CU의 초기 모션 벡터들을 이용하여 2개의 예측 신호(L0 및 L1 예측) 사이의 SAD(Sum of Absolute Difference)가 계산된다. SAD가 미리정의된 임계값, 즉, 샘플당 2(BDepth-9)보다 크지 않다면, DMVR은 스킵된다; 그렇지 않으면, DMVR은 현재 블록의 2개의 모션 벡터를 개선하기 위해 여전히 적용된다.
DMVR 적용 조건
DMVR 적용 조건은 (POC - POC1)x(POC-POC2)<0이며 BMS2.1에서 구현될 때 새로운 조건 (POC - POC1)==(POC2 - POC)로 대체된다. 이것은, 기준 픽처들이 반대의 시간 방향들이고 현재 픽처까지 등거리인 경우에만 DMVR이 적용된다는 것을 의미한다.
하나걸러 하나의 행을 이용한 MRSAD 계산
MRSAD 비용은 블록의 홀수 행들에 대해서만 계산되고 짝수 샘플 행들은 고려되지 않는다. 따라서, MRSAD 계산을 위한 동작 횟수는 반감된다.
파라메트릭 오차 표면 기반의 서브픽셀 오프셋 추정
JVET-K0041에서, 계산 복잡성을 최소화하면서 1/16-픽셀 정밀도의 서브픽셀 오프셋을 결정하기 위해 정수 거리 위치 평가된 비용들을 이용하여 핏팅된 파라메트릭 오차 표면이 제안되었다.
이 방법은 VVC 내에 채택되었으며 다음과 같이 요약된다 :
1. 파라메트릭 오차 표면 핏팅은 정수 MVD의 최소 정합 비용이 0이 아니고 제로 MVD의 정합 비용이 임계값보다 큰 경우에만 계산된다.
2. 최상의 정수 위치가 중심 위치로서 취해지고, 중심 위치의 비용 및 중심 위치에 관한 (정수 픽셀 단위의) 위치들 (-1, 0), (0, -1), (1, 0) 및 (0, 1)의 비용은 다음과 같은 형태의 2D 포물선 오차 표면 방정식을 핏팅하는데 이용된다.
여기서, 는 최소 비용을 갖는 위치에 대응하고 C는 최소 비용 값에 대응한다. 5개의 미지수의 5개의 방정식을 풀면, 는 다음과 같이 계산된다 :
(나눗셈이 수행되는 정밀도(즉, 몫에 대해 얼마나 많은 비트가 계산되는지)를 조정함으로써 임의의 요구되는 서브픽셀 정밀도로 이 계산될 수 있다. 1/16 픽셀 정확도의 경우, 몫의 절대값에서 4비트만 계산될 필요가 있고, 이것은 CU당 요구되는 2개의 나눗셈의 고속 시프트형 뺄셈 기반의 구현에 적합하다.
3. 계산된 은 서브픽셀 정밀도의 개선 델타 MV를 얻기 위해 정수 거리 개선 MV에 추가된다.
한편, 5*5 검색 공간의 경우, 도 8에 도시된 바와 같이, 중심 9개 위치 중 하나가 최상의 정수 위치인 경우에만 파라메트릭 오차 표면 핏팅이 수행된다.
JVET-N0236: 광학적 흐름을 이용한 예측 개선
이 기여분은, 광학적 흐름을 이용한 서브블록 기반의 어파인 모션 보상된 예측(affine motion compensated prediction)을 개선하는 방법을 제안한다. 서브블록 기반의 어파인 모션 보상이 수행된 후, 광학적 흐름 방정식에 의해 도출된 차이를 추가함으로써 예측 샘플이 개선되며, 이것을 광학적 흐름을 통한 예측 개선(PROF)라고 한다. 제안되는 방법은 메모리 액세스 대역폭을 증가시키지 않고 픽셀 레벨 세분도에서 인터 예측을 달성할 수 있다.
모션 보상의 더 미세한 세분도를 달성하기 위해, 이 기여분은 광학적 흐름을 이용하여 서브블록 기반의 어파인 모션 보상 예측을 개선하는 방법을 제안한다. 서브블록 기반의 어파인 모션 보상이 수행된 후, 광학적 흐름 방정식에 의해 도출된 차이를 추가함으로써 루마 예측 샘플이 개선된다. 제안된 PROF(Prediction Refinement with Optical Flow; 광학적 흐름을 이용한 예측 개선)는 다음과 같은 4단계로 설명된다.
단계 1) 서브블록 기반의 어파인 모션 보상을 수행하여 서브블록 예측 I(i, j)를 생성한다.
단계 2) 서브블록 예측의 공간적 구배들 이 3-탭 필터 [-1, 0, 1]을 이용하여 각각의 샘플 위치에서 계산된다.
서브블록 예측은 구배 계산을 위해 각각의 측에서 한 픽셀씩 확장된다. 메모리 대역폭과 복잡성을 감소시키기 위해, 확장된 경계들 상의 픽셀들은 기준 픽처 내의 가장 가까운 정수 픽셀 위치로부터 복사된다. 따라서, 패딩 영역에 대한 추가 보간이 회피된다.
단계 3) 광학적 흐름 방정식에 의해 계산된 루마 예측 개선(ΔI로 표기).
여기서, 델타 MV(로 표기됨)는, 로 표기되는 샘플 위치 에 대해 계산된 픽셀 MV와, 도 10에 도시된 바와 같이, 픽셀이 속한 서브블록의 서브블록 MV 사이의 차이이다.
어파인 모델 파라미터들과 서브블록 중심에 관한 픽셀 위치는 서브블록마다 변경되지 않기 때문에 제1 서브블록에 대해 이 계산될 수 있고 동일한 CU 내의 다른 서브블록들에 재사용될 수 있다. x 및 y를 픽셀 위치로부터 서브블록의 중심까지의 수평 및 수직 오프셋이라 하면, 는 다음과 같은 방정식으로 도출될 수 있다,
(PROF-방정식1)
4-파라미터 어파인 모델의 경우,
6-파라미터 어파인 모델의 경우,
여기서, 는, 좌측 상단, 우측 상단 및 좌측 하단 제어 포인트 모션 벡터들이고, w와 h는 CU의 폭과 높이이다.
단계 4) 마지막으로, 루마 예측 개선이 서브블록 예측 에 추가된다. 최종 예측 I'는 다음과 같은 방정식으로서 생성된다.
JVET-N0236에서의 약간의 상세사항
a) PROF에 대한 구배들을 도출하는 방법
JVET-N0263에서, 구배들은 각각의 기준 목록에 대한 각각의 서브블록(VTM-4.0에서의 4x4 서브블록)에 대해 계산된다. 각각의 서브블록에 대해, 기준 블록의 가장 가까운 정수 샘플들을 가져와 샘플들의 4 측면 외부 라인들을 패딩한다(이전 도면 참조).
현재 서브블록에 대한 MV가 (MVx, MVy)라고 가정한다. 그 다음, 분수 부분은, (FracX, FracY)=(MVx&15, MVy&15)로서 계산된다. 정수 부분은, (IntX, IntY)=(MVx>>4, MVy>>4)로서 계산된다. 오프셋들 (OffsetX, OffsetY)은 다음과 같이 도출된다 :
OffsetX = FracX > 7 ? 1 : 0;
OffsetY = FracY > 7 ? 1 : 0;
현재 서브블록의 좌측 상단 좌표가(xCur, yCur)이고 현재 서브블록의 치수가 W×H라고 가정하자.
그 다음, (xCor0, yCor0), (xCor1, yCor1), (xCor2, yCor2) 및 (xCor3, yCor3)이 다음과 같이 계산된다
(xCor0, yCor0) = (xCur+IntX+OffsetX-1, yCur+IntY+OffsetY-1);
(xCor1, yCor1) = (xCur+IntX+OffsetX-1, yCur+IntY+OffsetY+H);
(xCor2, yCor2) = (xCur+IntX+OffsetX-1, yCur+IntY+OffsetY);
(xCor3, yCor3) = (xCur+IntX+OffsetX+W, yCur+IntY+OffsetY);
x=0..W-1, y=0..H-1인 PredSample[x][y]은 서브블록에 대한 예측 샘플들을 저장한다고 가정한다. 그 다음, 패딩 샘플들은 다음과 같이 도출된다
PredSample[x][-1] = (Ref(xCor0+x, yCor0) << Shift0) - Rounding, for x=-1..W;
PredSample[x][H] = (Ref (xCor1+x, yCor1) << Shift0) - Rounding, for x=-1..W;
PredSample[-1][y] = (Ref (xCor2, yCor2+y) << Shift0) - Rounding, for y=0..H-1;
PredSample[W][y] = (Ref (xCor3, yCor3+y) << Shift0) - Rounding, for y=0..H-1;
여기서 Rec는 기준 픽처를 나타낸다. 반올림은, 예시적인 PROF 구현에서 213과 동일한 정수이다. Shift0 = Max(2, (14-BitDepth));
PROF는, 구배들이 입력 루마 샘플들과 동일한 정밀도로 출력되는 VTM-4.0에서의 BIO와는 달리, 구배들의 정밀도를 증가시키려고 시도한다.
PROF에서의 구배들은 다음과 같이 계산된다 :
Shift1 = Shift0-4.
gradientH [ x ][ y ]  =  (predSamples [ x + 1 ][y] -  predSample [ x - 1 ][ y ] ) >> Shift1
gradientV [ x ][ y ]  =  (predSample[ x ][ y + 1 ] - predSample [ x ][y - 1 ] ) >> Shift1
predSamples[x][y]는 보간 후에도 정밀도를 유지한다는 점에 유의해야 한다.
b) PROF에 대한 Δv를 도출하는 방법
(posX = 0..W-1, posY=0..H-1인, dMvH[posX][posY] 및 dMvV[posX][posY]로 표기된) Δv의 도출은 다음과 같이 설명될 수 있다
현재 블록의 치수가 cbWidth × cbHeight이고, 제어 포인트 모션 벡터들의 수는 numCpMv이고, 제어 포인트 모션 벡터들은 cpMvLX[ cpIdx ]이며, cpIdx = 0..numCpMv-1이고, X는 2개의 기준 목록을 나타내는 0 또는 1이다.
변수들 log2CbW 및 log2CbH는 다음과 같이 도출된다 :
log2CbW = Log2( cbWidth )
log2CbH = Log2( cbHeight )
변수들 mvScaleHor, mvScaleVer, dHorX 및 dVerX는 다음과 같이 도출된다 :
mvScaleHor = cpMvLX[ 0 ][ 0 ] << 7
mvScaleVer = cpMvLX[ 0 ][ 1 ] << 7
dHorX = ( cpMvLX[ 1 ][ 0 ] - cpMvLX[ 0 ][ 0 ] ) << ( 7 - log2CbW )
dVerX = ( cpMvLX[ 1 ][ 1 ] - cpMvLX[ 0 ][ 1 ] ) << ( 7 - log2CbW )
변수들 dHorY 및 dVerY는 다음과 같이 도출된다 :
- numCpMv가 3과 같다면, 다음이 적용된다 :
dHorY = ( cpMvLX[ 2 ][ 0 ] -  cpMvLX[ 0 ][ 0 ] ) << ( 7 - log2CbH )
dVerY = ( cpMvLX[ 2 ][ 1 ] - cpMvLX[ 0 ][ 1 ] ) << ( 7 - log2CbH )
- 그렇지 않으면(numCpMv가 2와 같음) 다음이 적용된다 :
dHorY =  - dVerX
dVerY = dHorX
변수들 qHorX, qVerX, qHorY 및 qVerY는 다음과 같이 도출된다
qHorX = dHorX << 2;
qVerX = dVerX << 2;
qHorY = dHorY << 2;
qVerY = dVerY << 2;
dMvH[0][0] 및 dMvV[0][0]은 다음과 같이 계산된다
dMvH[0][0] = ((dHorX + dHorY) << 1) - ((qHorX + qHorY) << 1);
dMvV[0][0] = ((dVerX + dVerY) << 1) - ((qVerX + qVerY) << 1);
1에서 W-1까지의 xPos에 대한 dMvH[xPos][0] 및 dMvV[xPos][0]은 다음과 같이 도출된다 :
dMvH[xPos][0] = dMvH[xPos-1][0] + qHorX;
dMvV[xPos][0] = dMvV[xPos-1][0] + qVerX;
1에서 H-1까지의 yPos의 경우, 다음이 적용된다 :
dMvH[xPos][yPos] = dMvH[xPos][yPos-1] + qHorY with xPos=0..W-1
dMvV[xPos][yPos] = dMvV[xPos][yPos-1] + qVerY with xPos=0..W-1
마지막으로, posX = 0..W-1, posY=0..H-1인 dMvH[xPos][yPos] 및 dMvV[xPos][yPos]는 다음과 같이 우측 시프트된다
dMvH[xPos][yPos] = SatShift( dMvH[xPos][yPos], 7+2-1);
dMvV[xPos][yPos] = SatShift( dMvV[xPos][yPos], 7+2-1);
여기서, SatShift(x, n) 및 Shift(x, n)는 다음과 같이 정의된다
한 예에서, offset0 및/또는 offset1은(1<<n)>>1로 설정된다.
c) PROF에 대한 ΔI를 도출하는 방법
서브블록 내의 위치(posX, posY)에 대해, 그 대응하는 위치 는, (dMvH[posX][posY], dMvV[posX][posY])로서 표기된다. 그 대응하는 구배는 (gradientH[posX][posY], gradientV[posX][posY])로서 표시된다.
그 다음, ΔI(posX, posY)는 다음과 같이 도출된다.
(dMvH[posX][posY], dMvV[posX][posY])가 다음과 같이 클리핑된다
dMvH[posX][posY] = Clip3( -32768, 32767, dMvH[posX][posY]);
dMvV[posX][posY] = Clip3( -32768, 32767, dMvV[posX][posY]);
ΔI(posX, posY)= dMvH[posX][posY] × gradientH[posX][posY] + dMvV[posX][posY] × gradientV[posX][posY]; (PROF-eq2)
ΔI(posX, posY) = Shift(ΔI(posX, posY), 1+1+4);
ΔI(posX, posY) = Clip3( -(213-1), 213-1, ΔI(posX, posY));
d) PROF에 대한 I' 도출 방법
현재 블록이 쌍방 예측 또는 가중 예측으로서 코딩되지 않는다면,
I’(posX, posY) = Shift((I(posX, posY) + ΔI(posX, posY)), Shift0),
I’(posX, posY) = ClipSample (I’(posX, posY)),
여기서, ClipSample은 샘플 값을 유효한 출력 샘플 값으로 클리핑한다.
그 다음, 인터 예측 값으로서 I'(posX, posY)가 출력된다.
그렇지 않으면(현재 블록이 쌍방 예측 또는 가중된 예측으로서 코딩됨) I'(posX, posY)가 저장되고 다른 예측 값들 및/또는 가중 값들에 따라 인터 예측 값을 생성하는데 이용될 것이다.
관련 방법들
이전 출원들, PCT 출원 번호 PCT/CN2018/096384, PCT/CN2018/098691, PCT/CN2018/104301, PCT/CN2018/106920, PCT/CN2018/109250, 및 PCT/CN2018/109425에서, MV 업데이트 방법 및 2-단계 인터 예측 방법이 제안되었다. BIO에서 기준 블록 0과 기준 블록 1 사이의 도출된 MV는 스케일링되어 목록 0과 목록 1의 원래의 모션 벡터에 추가된다. 한편, 업데이트된 MV를 이용하여 모션 보상을 수행하고 최종 예측으로서 제2 인터 예측이 생성된다.
한편, 이전 PCT 출원들에서, 기준 블록 0과 기준 블록 1 사이의 평균 차이를 제거함으로써 시간적 구배가 수정된다.
또 다른 이전 출원인 PCT 출원 번호 PCT/CN2018/092118에서, 상이한 여러 서브블록에 대해, 크롬 성분에 대해 한 세트의 MV만이 생성된다.
JVET-N0145에서, DMVR은 MMVD와 조율된다(MVD와 병합). MMVD의 거리가 2 픽셀보다 클 때 MMVD에 의해 도출된 모션 벡터들에 DMVR이 적용된다.
1.7 VVC 초안 4에서의 DMVR
JVET-M1001_v7(VVC 연구 초안 4, 버전 7)에서의 DMVR의 이용은 다음과 같이 정의된다 :
-다음과 같은 조건들이 모두 참이면, dmvrFlag가 1로 설정된다 :
-sps_dmvr_enabled_flag는 1과 같다.
-현재 블록은, 삼각 예측 모드, AMVR 어파인 모드, 서브블록 모드(병합 어파인 모드 및 ATMVP 모드 포함)로 코딩되지 않는다.
-merge_flag[ xCb ][ yCb ]는 1과 같다.
-predFlagL0[ 0 ][ 0 ]과 predFlagL1[ 0 ][ 0 ] 양쪽 모두는 1과 같다.
-mmvd_flag[ xCb ][ yCb ]는 0과 같다.
-DiffPicOrderCnt( currPic, RefPicList[ 0 ][ refIdxL0 ])는 DiffPicOrderCnt( RefPicList[ 1 ][ refIdxL1 ], currPic )와 같다.
-cbHeight가 8보다 크거나 같다
-cbHeight*cbWidth가 64보다 크거나 같다
기존 구현들의 단점들
DMVR/BIO의 현재 설계에는 다음과 같은 문제들을 갖는다 :
1) DMVR이 DMVR을 처리하기 위해 하나의 블록 또는 하나의 유닛(예를 들어, 16x16)에 적용될 때, 전체 유닛/블록은 동일한 개선 모션 정보를 공유할 것이다. 그러나, 개선된 모션 정보는 전체 유닛/블록 내의 샘플들의 일부에 대해 유익하지 않을 수 있다.
2) JVET-N0145에서, DMVR은 MMVD 코딩된 블록들에도 적용될 수 있다. 그러나, DMVR은 MMVD의 거리가 2 픽셀보다 클 때에만 적용되는 것으로 제약된다. 선택된 MMVD 거리는 먼저, 현재 블록에 대한 첫 번째 개선된 모션 벡터들을 도출하는데 이용된다. DMVR이 더 적용된다면, DMVR에 기인한 두 번째 개선된 MMVD 거리가 MMVD 거리 테이블에 포함될 수 있어서, 비합리적이다.
3) DMVR/BIO는 블록 치수들 및 POC 거리들의 조건들을 충족하는 블록들에 항상 적용된다. 그러나, 이것은 한 블록의 디코딩된 정보를 완전히 고려하지 않아 개선 후 성능 저하를 초래할 수 있다.
4) 5*5 정사각형 MVD 공간이 DMVR에서 검색되어, 계산적으로 복잡하다. 수평 MVD는 -2 내지 2의 범위이고, 수직 MVD는 -2 내지 2의 범위일 수 있다.
5) 파라메트릭 오차 표면 핏팅은 중심 9개의 정수 위치들에 대해서만 수행되므로, 비효율적일 수 있다.
6) BDOF/PROF에서의 MVD 값들(즉, 디코딩된 MV와 개선된 MV 사이의 차이), 즉, BDOF에 있어서 8.5.7.4 방정식 8-867 및 8-868에서 도출된 vx 및 vy, 또는 PROF에서 는, 큰 범위에 있을 수 있으므로, BDOF/PROF 프로세스에서 곱셈들을 시프트들로 대체하는 것이 가능하지 않다.
7) BDOF에 대한 도출된 샘플 예측 개선(예를 들어, 예측 샘플에 추가될 오프셋)는 클리핑되지 않으므로, 저장에 대해 비우호적일 수 있다. 반면, PROF는 BDOF와 동일한 OF 흐름을 이용하는 반면, PROF는 도출된 오프셋에 대해 클리핑 동작을 기동한다.
잔차 코딩에서의 문제
1) 변환 스킵 모드 및 일반 잔차 코딩 모드(예를 들어, 변환 모드)에서 이용되는 코딩 그룹(CG) 크기가 오정렬된다. 일반 잔차 코딩에서, 2*2, 2*4, 4*2 잔차 블록들에 대해 2*2 CG 크기가 이용되고, 2*N, N*2 잔차 블록들에 대해서는 2*8, 8*2 CG 크기가 각각 이용된다(N >= 8). 반면, 변환 스킵 모드에서, 2*N 및 N*2(N >= 2) 잔차 블록들에 대해 항상 2*2 CG 크기가 이용된다.
적응형 해상도 변환을 수반한 코딩 툴들을 위한 예시적인 방법들
개시된 기술의 실시예들은 기존 구현들의 단점들을 극복한다. 이하에서 제공되는 개시된 기술의 예들은, 개시된 기술의 이해를 용이화하기 위해 논의되는 것이며, 개시된 기술을 제한하는 방삭으로 해석되어서는 안된다. 달리 명시적으로 나타내지 않는 한, 이들 예에 설명된 다양한 피처들은 결합될 수 있다.
MV0 및 MV1을, 각각 예측 방향 0 및 1에서의 블록의 MV로서 표기한다. MVX(x = 0 또는 1)의 경우, MVX[0] 및 MVX[1]은 각각 MVX의 수평 및 수직 성분을 나타낸다. MV'가 (MV0+MV1)과 같다면, MV'[0]=MV0[0]+MV1[0]이고, MV'[1]=MV0[1]+MV1[1]이다. MV'가 a*MV0과 같다면, MV'[0]=a*MV0[0]이고 MV'[1]=a*MV0[1]이다. 목록 0과 목록 1의 기준 픽처가 각각 Ref0과 Ref1이고, 현재 픽처와 Ref0 사이의 POC 거리는 PocDist0(즉, (현재 픽처의 POC - Ref0의 POC)의 절대값), Ref1과 현재 픽처 사이의 POC 거리는 PocDist1(즉, (Ref1의 POC - 현재 픽처의 POC)의 절대값)이라고 가정하다. 블록의 폭과 높이는 각각 W와 H로 표기한다. 함수 abs(x)는 x의 절대값을 반환한다고 가정한다.
DMVR에서의 수평 MVD가 -MVD_Hor_TH1 내지 MVD_Hor_TH2의 범위이고, 수직 MVD가 -MVD_Ver_TH1 내지 MVD_Ver_TH2의 범위일 수 있다고 가정한다. 블록의 폭과 높이는 각각 W와 H로 표기한다. abs(X)는 X의 절대값을 반환하고 Max(X, Y)는 X와 Y 중 더 큰 값을 반환한다고 가정한다. sumAbsHorMv = abs(MV0[0]) + abs(MV1[0]), sumAbsVerMv = abs(MV0[1]) + abs(MV1[1]), maxHorVerMv = Max(abs(MV0[0], abs(MV1[0])), maxAbsVerMv = Max(abs(MV0[1], abs(MV1[1]))라고 가정한다. 클리핑된 vx 및 vy를 각각 clipVx 및 clipVy로 표기한다.
이하의 개시내용에서, 용어 MV=(MVx, MVy)의 절대값 MV란, abs(MVx), 또는 abs(MVy), 또는 abs(MVx)+ abs(MVy), 또는 Max(abs( MVx), abs(MVy))를 말한다. 용어 "절대 수평 MV"는 abs(MVx)를 지칭하고, "절대 수직 MV"는 abs(MVy)를 지칭한다.
함수 logK(x)는 밑수 K인 x의 로그를 반환하고, 함수 ceil(y)는 y보다 크거나 같은 가장 작은 정수를 반환한다고 가정한다(예를 들어, y <= inty < y + 1인, 정수 값 inty), floor(y)는 y보다 작거나 같은 가장 큰 정수를 반환한다(예를 들어, y - 1 < inty <= y인, 정수 값 inty). 함수 sign(x)는 x의 부호를 반환한다, 예를 들어 x >= 0이면 0을 반환하고 x < 0이면 1을 반환한다. x^y는 xy와 같다고 가정한다. 함수 이고, 이라고 가정한다.
제안된 방법들은 다른 종류들의 디코더측 모션 벡터 도출/개선, 예측/재구성 샘플 개선 방법들에도 적용될 수 있다는 점에 유의한다.
DMVR은 DMVR(예를 들어, 16x16)을 처리하기 위해 하나의 블록 또는 하나의 유닛에 적용되며, 이하의 설명에서, 서브영역은 처리 유닛보다 작은 부분일 수 있다.
BIO는 BDOF(Bi-Directional Optical Flow; 양방향 광학적 흐름)라고도 알려져 있다.
이하의 논의에서, 디코더측 모션 도출 프로세스(예를 들어, BDOF, PROF)에서 활용되는 MVD는, vx, vy, 로 표기될 수 있다. 한 예에서, vx 및 vy는, BDOF에 있어서 8.5.7.4 방정식 8-867 및 8-868에서 도출된 "vx 및 vy", 또는 PROF에서 ""를 지칭할 수 있다. 한 예에서, 는, BDOF에 있어서 8.5.7.4 방정식 8-867 및 8-868에서 도출된 "vx 및 vy", 또는 PROF에서 ""를 지칭할 수 있다.
PROF/BDOF에 관한 제안된 방법들은 광학적 흐름을 이용하는 다른 종류들의 코딩 방법들에도 적용될 수 있다.
1. 주어진 MVD(또는 2개의 목록에 대한 주어진 MVD 쌍)를 이용하는 MRSAD 또는 기타의 규칙들(예를 들어, SAD, SATD)의 결과들은 디코더측 모션 도출 프로세스에서 개선된 모션 벡터들을 선택하는데 이용되기 전에 추가로 수정될 수 있다.
a. 한 예에서, 결과들은 스케일링 인자에 의해 곱해지는 것을 통해 수정될 수 있다.
i. 대안으로서, 결과들은 스케일링 인자로 나누는 것을 통해 수정될 수 있다.
ii. 대안으로서, 결과들은 스케일링 인자에 의해 가산/차감되는 것을 통해 수정될 수 있다.
iii. 한 예에서, 스케일링 인자는 MVD의 값들에 의존할 수 있다.
1. 한 예에서, 스케일링 인자는 더 큰 MVD(예를 들어, MVD의 수평 및/또는 수직 성분의 더 큰 절대값)에 대해 증가될 수 있다.
2. 한 예에서, 스케일링 인자는 초기화된 MV에 테스트된 MVD가 더해진 후보 MV의 서브펠 위치에 의존할 수 있다.
iv. 한 예에서, 스케일링 인자들은 허용된 MVD 세트들에 의존할 수 있다(예를 들어, 허용된 MVD 세트 내의 한 후보의 수평 또는 수직 성분은 범위 [-M, N] 내에 있고, 여기서 M 및 N은 음이 아닌 값들이다).
2. DMVR 또는/및 BIO를 적용할지 여부 및/또는 방법은 블록의 코딩 정보에 의존할 있다는 것을 제안한다.
a. 한 예에서 코딩 정보는 기준 픽처들의 모션 벡터들 및 POC 값들을 포함할 수 있다.
i. 한 예에서, 코딩 정보는 블록이 AMVP 모드로 또는 병합 모드로 코딩되는지를 포함할 수 있다.
1. 한 예에서, AMVP 코딩된 블록들에 대해, BIO는 디스에이블될 수 있다.
ii. 한 예에서, DMVR/BIO를 인에이블할지는 2개의 모션 벡터(MV0 및 MV1에 의존하는 MV0' 및 MV1'로 표기됨)의 합 또는 MV 성분들의 절대값들에 의존할 수 있다.
1. 한 예에서, abs(MV0'[0] + MV1'[0]) > T1 또는 abs(MV0'[1] + MV1'[1]) > T1이면, DMVR 또는/및 BIO는 디스에이블될 수 있다. 예를 들어, T1 = 10 정수 픽셀이다.
2. 한 예에서, abs(MV0'[0] + MV1'[0]) > T1 및 abs(MV0'[1] + MV1'[1]) > T1이면, DMVR 또는/및 BIO는 디스에이블될 수 있다.
3. 한 예에서, abs(MV0'[0] + MV1'[0]) + abs(MV0'[1] + MV1'[1]) > T2이면, DMVR 또는/및 BIO는 디스에이블될 수 있다. 예를 들어, T2 = 15 정수 픽셀이다.
4. 한 예에서, abs(MV0'[0] + MV1'[0]) < T1 또는 abs(MV0'[1] + MV1'[1]) < T1이면, DMVR 또는/및 BIO는 디스에이블될 수 있다. 예를 들어, T1 = 10 정수 픽셀이다.
5. 한 예에서, abs(MV0'[0] + MV1'[0]) < T1 및 abs(MV0'[1] + MV1'[1]) < T1이면, DMVR 또는/및 BIO는 디스에이블될 수 있다.
6. 한 예에서, abs(MV0'[0] + MV1'[0]) + abs(MV0'[1] + MV1'[1]) < T2이면, DMVR 또는/및 BIO는 디스에이블될 수 있다. 예를 들어, T2 = 15 정수 픽셀이다.
7. 한 예에서, MV0'은 MV0과 동일하게 설정되고 MV1'은 MV1과 동일하게 설정된다.
8. 한 예에서, MV0'은 MV0과 동일하게 설정되고 MV1은 MV1'을 생성하도록 스케일링될 수 있다.
a. 한 예에서 MV1' = MV1 * PocDist0/PocDist1이다.
b. 한 예에서 MV1' = -MV1이다.
9. 한 예에서, MV1'은 MV1과 동일하게 설정되고 MV0은 MV0'를 생성하도록 스케일링될 수 있다.
a. 한 예에서, MV0' = MV0 * PocDist1/PocDist0이다.
b. 한 예에서 MV0' = -MV0이다.
10. 한 예에서, MV0'은 MV0*(POCRef1-POCcur)와 동일하게 설정될 수 있고, MV1'은 MV1*(POCcur-POCRef0)과 동일하게 설정될 수 있으며, 여기서 POCcur, POCRef0 및 POCRef1은, 현재 픽처의 POC 값, MV0의 기준 픽처와 MV1의 기준 픽처를 각각 나타낼 수 있다.
b. 한 예에서, 정보는 병합 인덱스 및/또는 MVP 인덱스를 포함할 수 있다.
i. 예를 들어, DMVR 또는/및 BDOF는 소정의 병합 인덱스에 대해서만 허용될 수 있다.
1. 예를 들어, DMVR 또는/및 BDOF는 짝수 병합 인덱스에 대해서만 허용될 수 있다.
2. 예를 들어, DMVR 또는/및 BDOF는 홀수 병합 인덱스에 대해서만 허용될 수 있다.
3. 예를 들어, DMVR 또는/및 BDOF는 임계값 T1보다 작은 병합 인덱스에 대해서만 허용될 수 있다.
4. 예를 들어, DMVR 또는/및 BDOF는 임계값 T1보다 큰 병합 인덱스에 대해서만 허용될 수 있다.
ii. 예를 들어, BDOF는, 소정의 MVP 인덱스, 예를 들어 짝수 또는 홀수 MVP 인덱스에 대해서만 허용될 수 있다.
c. 한 예에서, 정보는 SBT 모드가 블록에 의해 이용되는지 여부를 포함할 수 있다.
i. 한 예에서, DMVR 또는/및 BDOF는 SBT 모드가 이용될 때 불허될 수 있다.
ii. 한 예에서, DMVR 또는/및 BDOF는, SBT 모드에서 0이 아닌 잔차를 갖는 서브-파티션들에 대해서만 허용될 수 있다.
iii. 한 예에서, DMVR 또는/및 BDOF는 SBT 모드에서 0이 아닌 잔차를 갖는 서브-파티션에 대해 불허될 수 있다.
3. DMVR 또는/및 BIO를 적용할지의 여부 및/또는 방법은, 제1 기준 목록(예를 들어, 2.5절에서 MV0으로 표기됨)을 참조하는 개선 전의 MV와 제2 기준 목록(예를 들어, 2.5절에서 MV1로 표기됨)을 참조하는 개선 전 MV 사이의 관계에 의존할 수 있다는 것이 제안된다.
a. 한 예에서, MV0 및 MV1이 블록에서 대칭이면 DMVR 또는/및 BIO가 디스에이블될 수 있다.
i. 예를 들어, 블록이 대칭 모션 벡터들을 갖는다면((MV0+MV1) 등은 0 성분만을 가짐), BIO는 디스에이블될 수 있다. 한 예에서, 블록은 AMVP 모드로 코딩될 수 있다. 한 대안적인 예에서, 블록은 병합 모드로 코딩될 수 있다.
ii. MV0과 MV1이 대칭인지는 POC들에 의존할 수 있다.
1. 예를 들어, MV1*(POCcur-POC0)+ MV0*(POC1-POCcur)가 제로 모션 벡터와 같다면, MV0과 MV1은 대칭이다. POCcur, POC0, POC1은, 각각, 현재 픽처의 POC, MV0의 기준 픽처, MV1의 기준 픽처를 나타낸다.
b. 한 예에서, MV0 및 MV1이 블록에서 거의 대칭이라면, DMVR 또는/및 BIO는 디스에이블될 수 있다.
i. 예를 들어, MV0과 MV1은 abs(MV0+MV1)<Th1이라면 거의 대칭이며, 여기서 Th1은 1 정수 픽셀 등의 숫자이다.
ii. MV0과 MV1이 대칭인지는 POC들에 의존할 수 있다.
1. 예를 들어, MV0과 MV1은 abs(MV1*(POCcur-POC0)+ MV0*(POC1-POCcur))< Th2라면 거의 대칭이고, 여기서 Th2는 POC들에 의존할 수 있는 숫자이다.
c. 한 예에서, MV0 및 MV1이 블록에서 대칭이 아니라면, DMVR 또는/및 BIO는 디스에이블될 수 있다.
i. 예를 들어, MV0과 MV1은 abs(MV0+MV1)>Th1이라면 대칭이 아니고, 여기서 Th1은 16 정수 픽셀 등의 숫자이다.
ii. MV0과 MV1이 대칭인지는 POC들에 의존할 수 있다.
1. 예를 들어, MV0과 MV1은 abs(MV1*(POCcur-POC0)+ MV0*(POC1-POCcur))> Th2라면 대칭이 아니고, 여기서 Th2는 POC들에 의존할 수 있는 숫자이다.
4. 복수-단계 개선이 적용될 수 있고, 여기서 단계 크기를 증가시킬 때 더 작은 개선된 영역들이 수반된다.
a. 한 예에서, k번째 단계는 하나 또는 복수의 Mk*Nk 유닛들을 개선하는 것이고, j번째 단계는 하나 또는 복수의 Mj*Nj 유닛들을 개선하는 것이며, 여기서 k>j, Mk*Nk는 Mj*Nj와 같지 않고, 2개의 조건 중 적어도 하나는 참이다: Mk<=Mj, Nk<=Mj.
5. 하나의 블록 내의 개선된 모션 정보는 KxL 서브영역마다 상이할 수 있다.
a. 한 예에서, 제1 KxL 서브영역은 디코딩된 모션 정보를 이용할 수 있고, 제2 KxL 서브영역은 두 번째 서브영역을 커버하는 유닛에 적용된 DMVR 프로세스에서 도출된 개선된 모션 정보를 이용할 수 있다.
6. 서브영역에 대한 BIO 적용 여부는 DMVR 프로세스의 출력에 의존할 수 있다.
a. 한 예에서, DMVR이 적용되는 블록/단위 내의 서브영역에 대해, DMVR 프로세스 후에 모션 정보가 변경되지 않는다면, 그 서브영역에 대해 BIO는 디스에이블될 수 있다.
7. 2.5) 절에서 N(N > 1)개 쌍의 MVD들( 등)이 최종 예측 샘플을 생성하기 위해 DMVR에서 선택될 수 있으며, 여기서, 하나의 쌍은, 목록 0에 대한 하나와 목록 1에 대한 하나씩, 2개의 모션 벡터 차이를 포함하는 것이 제안된다.
a. 한 예에서, DMVR 프로세스에서 선택된 MVD 쌍 및 모두 0인 MVD 쌍을 포함한, N = 2이다.
b. 한 예에서, N = 2이다. DMVR 프로세스에서 2개 쌍의 최상의 MVD들(예를 들어, 최소 비용을 갖는 2개의 MVD)이 이용될 수 있다.
c. 한 예에서, 블록 내의 각각의 KxL 서브영역은 그 자신의 MVD 쌍들을 결정할 수 있다.
d. 한 예에서, 각각의 쌍의 MVD들과 함께, 2개의 기준 블록이 식별될 수 있다. 2개의 기준 블록 내의 각각의 샘플 또는 서브블록(예를 들어, 2*2 블록 또는 4*4 블록 등) 사이의 비용(예를 들어, SAD/SSE)이 계산될 수 있다. 그러면, 최종 예측 샘플은 비용 값에 따라 모든 기준 블록 쌍들의 조합으로서 생성될 수 있다. predKLX(K = 1, 2, …, N)를 K번째 쌍의 MVD들에 의해 식별되는 목록 X(X = 0 또는 1) 내의 기준 샘플로서 표기하고 costK를 K번째 쌍의 MVD들의 비용으로서 표기한다. predKLX와 costK 양쪽 모두는 (x, y)(예를 들어, 샘플의 위치)의 함수일 수 있다.
e. 한 예에서, 각각의 샘플의 가중은 비용에 반비례할 수 있다.
i. 한 예에서,
ii. 한 예에서,
f. 한 예에서, 각각의 샘플 또는 서브블록에 대해, 최소 비용을 달성하는 MVD는 최종 예측을 생성하는데 이용된다.
8. DMVR과 MMVD가 함께 이용될 때, DMVR은 MMVD 거리를 소정 값들로 개선하는 것이 허용되지 않을 수 있다는 것이 제안된다.
a. 한 예에서, DMVR에 의한 개선된 MMVD 거리는 MMVD 거리 테이블에 포함되지 않는다.
i. 대안으로서, 또한, DMVR에 의한 개선된 MMVD 거리가 MMVD 거리 테이블에 포함될 때, DMVR은 불허되고, 원래의 MMVD(예를 들어, 시그널링된 MMVD 거리) 거리가 이용된다.
b. 한 예에서, DMVR에서 최상의 정수 MVD를 생성한 후, 원래의 MMVD 거리에 추가되어 대략적으로 개선된 MMVD 거리를 생성한다. 대략적으로 개선된 MMVD 거리가 MMVD 거리 테이블 포함된다면 DMVR이 불허될 수 있다.
c. 한 예에서, DMVR은 위의 제약들과 함께 모든 MMVD 거리에 대해 허용될 수 있다.
i. 예를 들어, DMVR은 2-픽셀 MMVD 거리에 대해 허용될 수 있다.
9. 도출된 MVD 및/또는 공간적 구배들 및/또는 시간적 구배들 등에 따라 샘플 또는 서브블록에 대해 BDOF가 불허될 수 있다는 것이 제안된다.
a. 한 예에서, 도출된 부분이 기준 목록 0의 예측 샘플과 기준 목록 1의 예측 샘플 사이의 차이를 더 크게 만든다면 샘플에 대해 BDOF가 불허될 수 있다.
i. 예를 들어, I(0)(x, y) - I(1)(x, y) < 0이고 (2.3절의 방정식 (5)에 도시된 바와 같이) 이면, 위치 (x, y)에 대해 BDOF가 불허될 수 있다.
ii. 예를 들어, I(0)(x, y) - I(1)(x, y)> 0이고 이면, 위치 (x, y)에 대해 BDOF가 불허될 수 있다.
iii. 예를 들어, I(0)(x, y) - I(1)(x, y) > 0이고 (2.3절의 방정식 (5)에 도시된 바와 같이) 이면, 위치 (x, y)에 대해 BDOF가 불허될 수 있다.
iv. 예를 들어, I(0)(x, y) - I(1)(x, y)< 0이고 이면, 위치 (x, y)에 대해 BDOF가 불허될 수 있다.
v. 대안으로서, 도출된 부분이 기준 목록 0의 예측 샘플과 기준 목록 1의 예측 샘플 사이의 차이를 더 크게 만든다면, 도출된 오프셋은 fbdof(fbdof < 1.0)로 표기된 인자에 의해 스케일링될 수 있다.
1. 예를 들어, .
b. 한 예에서, 도출된 부분이 기준 목록 0의 예측 서브블록과 기준 목록 1의 예측 서브블록 사이의 차이를 더 크게 만든다면, 샘플 또는 K*L(예를 들어, 2*2, 1*1) 서브블록에 대해 BDOF가 불허될 수 있다.
i. 예를 들어, 일 때 BDOF는 불허될 수 있고, 여기서,
및 Ω은 샘플들이 서브블록에 속한다는 것을 나타낼 수 있다.
ii. 한 예에서, BDOF는 일 때 불허될 수 있다.
iii. 한 예에서, 차이는 SSE(sum of squared error; 제곱 오차의 합) 또는 평균-제거된 SSE 또는 SATD(Sum of Absolute Transformed Difference; 절대 변환된 차이의 합)에 의해 측정될 수 있다. 예를 들어,
iv. 한 예에서, 차이는 서브블록의 소정의 샘플들에 관해 계산될 수 있다.
1. 예를 들어, 차이는 서브블록의 짝수 행 또는 홀수 행에 관해 계산될 수 있다.
v. 대안으로서, 도출된 오프셋 또는/및 vx 또는/및 vy는, 도출된 부분이 기준 목록 0의 예측 서브블록과 기준 목록 1의 예측 서브블록 사이의 차이를 더 크게 만든다면, fbdof(fbdof < 1.0)로서 표기된 인자에 의해 스케일링될 수 있다.
c. 한 예에서, 도출된 오프셋(예를 들어, ) 또는/및 vx 또는/및 vy는, 도출된 부분이 기준 목록 0의 예측 서브블록(또는 샘플)과 기준 목록 1의 예측 서브블록(또는 샘플) 사이의 차이를 더 작게 만든다면, fbdof(fbdof >= 1.0)로서 표기된 인자에 의해 스케일링될 수 있다.
10. BDOF에서 도출 MVD(예를 들어, vx 및 vy)가 클리핑 동작 후에 변경될 때, 비용, 예를 들어, , (는 방정식 (5)에서 정의되고, Ω는 샘플들이 서브블록에 속한다는 것을 나타냄)는 클리핑된 MVD에 대해 계산될 수 있다는 것이 제안된다. 원래의 도출된 MVD의 비용을 costDerivedMvd로서, 클리핑된 MVD의 비용을 costClipMvd로서, 모든 0 MVD의 비용을 costZeroMvd로서 표기한다.
a. 한 예에서, costClipMvd > Th * costZeroMvd이면, BDOF는 불허될 수 있다.
b. 한 예에서, costClipMvd > Th * costDerivedMvd이면, BDOF는 불허될 수 있다.
c. 한 예에서, costClipMvd > Th * costZeroMvd 또는 costClipMvd > Th * costDerivedMvd이라면, 도출된 오프셋(예를 들어, )은 1.0보다 작은 인자에 의해 스케일링될 수 있다.
d. 대안으로서, 클리핑 동작 후, vx와 vy 양쪽 모두가 변경된다면, BDOF가 불허될 수 있다.
e. 대안으로서, 클리핑 동작 후, vx 또는 vy가 변경된다면, BDOF가 불허될 수 있다.
f. 대안으로서, vx와 클리핑된 vx 사이의 절대 차이가 임계값 T보다 크다면, BDOF가 불허될 수 있다.
g. 대안으로서, vy와 클리핑된 vy 사이의 절대 차이가 임계값 T보다 크다면, BDOF가 불허될 수 있다.
h. 대안으로서, vx와 클리핑된 vx 사이의 절대 차이가 임계값 T1보다 크고 vy와 클리핑된 vy 사이의 절대 차이가 임계값 T2보다 크다면, BDOF가 불허될 수 있다.
i. 한 예에서, T/T1/T2는 1 또는 2 또는 3 또는 4 정수 픽셀일 수 있다.
j. 한 예에서, vx가 clipVx와 같지 않을 때, 비용은, 일부 특정한 MVD들, 예를 들어, (0, 0), (clipVx/2, 0), (clipVx * 2, 0)에 대해 계산될 수 있다. 최소 비용을 달성한 MVD는 최종 MVD로서 선택될 수 있다.
k. 한 예에서, vy가 clipVy와 같지 않을 때, 비용은, 일부 특정한 MVD들, 예를 들어(clipVx, 0), (clipVx, clipVy/2), (clipVx, clipVy * 2)에 대해 계산될 수 있다. 최소 비용을 달성한 MVD는 최종 MVD로서 선택될 수 있다.
l. 한 예에서, vx가 clipVx와 같지 않고 vy가 clipVy와 같지 않을 때, 비용은 일부 특정한 MVD들, 예를 들어(0, 0), (clipVx/2, 0), (clipVx * 2, 0), (0, clipVy), (clipVx/2, clipVy), (clipVx * 2, clipVy), (0, 2 * clipVy), (clipVx/2, 2 * clipVy), (clipVx * 2, 2 * clipVy)에 대해 계산될 수 있다. 최소 비용을 달성한 MVD는 최종 MVD로서 선택될 수 있다.
m. 한 예에서, vx가 clipVx와 같지 않고 vy가 clipVy와 같지 않을 때, 수평 MVD와 수직 MVD는 순차적으로 결정될 수 있다.
i. 예를 들어, 수평 MVD는, 수직 MVD가 소정의 값(예를 들어, 0)과 동일하다고 가정하여 먼저 결정될 수 있다. 그 다음, 결정된 수평 MVD에 기초하여 수직 MVD가 결정될 수 있다.
1. 한 예에서, 비용은, 수직 MVD가 0과 같다고 가정하여 일부 특정한 수평 MVD들, 예를 들어 MVD들, (0, 0), (clipVx/2, 0), (clipVx * 2, 0)에 대해 먼저 계산될 수 있고, 최소 비용을 달성하는 수평 MVD가 finalVx로 표기된 최종 수평 MVD로서 선택될 수 있다. 그 다음, 비용은, 일부 특정한 수직 MVD들, 예를 들어 MVD들, (finalVx, 0), (finalVx, clipVy/2), (finalVx, clipVy * 2)에 대해 계산될 수 있다. 최소 비용을 달성하는 수직 MVD가 최종 수직 MVD로서 선택될 수 있다.
ii. 예를 들어, 수직 MVD는, 수평 MVD가 소정의 값(예를 들어, 0)과 동일하다고 가정하여 먼저 결정될 수 있다. 그 다음, 결정된 수직 MVD에 기초하여 수평 MVD가 결정될 수 있다.
1. 한 예에서, 비용은, 수평 MVD가 0과 같다고 가정하여 일부 특정한 수직 MVD, 예를 들어, MVD들, (0, 0), (0, clipVy/2), (0, clipVy * 2)에 대해 먼저 계산될 수 있고, 최소 비용을 달성하는 수직 MVD는 finalVy로서 표기된 최종 수직 MVD로서 선택될 수 있다. 그 다음, 비용은, 일부 특정한 수평 MVD, 예를 들어 MVD들, (0, finalVy), (clipVx/2, finalVy), (clipVx * 2, finalVy)에 대해 계산될 수 있다. 최소 비용을 달성하는 수평 MVD가 최종 수평 MVD로서 선택될 수 있다.
n. 한 예에서, 상이한 MVD들은 비용 함수에서 몇 가지 공통 부분들을 가질 수 있고, 이것은 비교에서 재계산되지 않을 수 있다.
i. 대안으로서, 모든 MVD에 대한 비용 함수로부터 공통 부분이 제거된다.
11. BDOF 및 다른 디코더 개선 툴들(예를 들어, PROF)에서의 도출된 모션 벡터 차이들(즉, MVD)은, 도출된 MVD들에 의존하는 후보 MVD들의 세트 또는 복수의 세트에 기초하여 더 개선될 수 있다. 그리고, 시그널링된 모션 벡터들 및 개선된 MVD들에 기초하여 블록이 복원될 수 있다. 도출된 MVD는 (vx, vy)로, 개선된 MVD는 (refinedVx, refinedVy)로 표기한다.
a. 한 예에서, 2단계 개선이 적용될 수 있고, 여기서 제1 단계에서 이용되는 후보 MVD들의 제1 세트는 수정되지 않은 vy 및 수정된 vx에 기초하고; 후보 MVD들의 제2 세트는 수정되지 않은 vx 및 수정된 vy에 기초하거나, 그 반대의 경우도 마찬가지이다.
b. 한 예에서, 후보 MVD들의 세트는 (vx + offsetX, vy)를 포함하도록 정의되며, 여기서 offsetX는 [-ThX1, ThX2] 범위에 있고, ThX1 및 ThX2는 음이 아닌 정수 값들이다. 한 예에서, ThX1=ThX2=ThX이고, 여기서 ThX는 음이 아닌 정수이다. 또 다른 예에서, ThX1=ThX2+1=ThX이고, 여기서 ThX는 음이 아닌 정수이다.
i. 한 예에서 ThX = 2이다. 한 예에서, (vx - 2, vy), (vx - 1, vy), (vx, vy), (vx + 1, vy) 및 (vx + 2, vy) 를 포함하는 MVD는 vx를 도출한 후 체크될 수 있다.
ii. 대안으로서, ThX = 1이다. 한 예에서, (vx - 1, vy), (vx, vy) 및 (vx + 1, vy)를 포함하는 MVD들은 vx를 도출한 후 체크될 수 있다.
iii. 한 예에서, [-ThX, ThX] 범위의 값들(예를 들어, offsetX)의 일부만이 허용될 수 있다.
iv. 대안으로서, vy는 0과 동일하게 설정된다.
v. 대안으로서, vx는 refinedVy와 동일하게 설정된다.
c. 한 예에서, 후보 MVD들의 세트는 (vx, vy + offsetY)를 포함하도록 정의되며, 여기서 offsetY는 [-ThY1, ThY2]에 있고, 여기서 ThY1 및 ThY2는 음이 아닌 정수 값들이다. 또 다른 예에서, ThY1=ThY2+1=ThY이고, 여기서 ThY는 음이 아닌 정수이다.
i. 한 예에서 ThY = 2이다. 한 예에서, (vx, vy - 2), (vx, vy - 1), (vx, vy), (vx, vy + 1) 및 (vx, vy + 2)를 포함하는 MVD들은 vy를 도출한 후 체크될 수 있다.
ii. 대안으로서, ThY = 1이다. 한 예에서, (vx, vy - 1), (vx, vy) 및 (vx, vy + 1)을 포함하는 MVD들은 vy를 도출한 후 체크될 수 있다.
iii. 한 예에서, [-ThY, ThY] 범위 내의 값들(예를 들어, offsetY)의 일부만이 허용될 수 있다.
iv. 대안으로서, vx는 refinedVx와 동일하게 설정된다.
v. 대안으로서, vx는 0과 동일하게 설정된다.
d. 한 예에서, vx 및 vy는 순서대로 개선될 수 있다.
i. 예를 들어, vx는, 예를 들어, 글순서 기호 10. b.에 따라 먼저 개선된다.
1. 대안으로서, 또한, vy는 0과 같다고 가정된다.
ii. 예를 들어, vy는, 예를 들어 글순서 기호 10. c.에 따라 먼저 개선된다.
1. 대안으로서, 또한, vx는 0과 동일하다고 가정된다.
e. 한 예에서, vx 및 vy는 공동으로 개선될 수 있다. 예를 들어, 후보 MVD들의 세트는 (vx + offsetX, vy + offsetY)를 포함하도록 정의되고, 여기서 offsetX는 [-ThX1, ThX2] 범위에 있고 offsetY는 [-ThY1, ThY2] 범위에 있다.
i. 예를 들어, ThX1 = ThX2 = 2이고, ThY1 = ThY2 = 2이다.
ii. 예를 들어, ThX1 = ThX2 = 1이고, ThY1 = ThY2 = 1이다.
iii. 한 예에서, (vx + offsetX, vy + offsetY)의 일부 값들만이 후보 MVD 세트에 포함될 수 있다.
f. 한 예에서, vx 및 vy로부터 도출된 후보 MVD들의 수는 동일할 수 있다, 예를 들어 ThX1 = ThY1이고 ThX2 = ThY2이다.
i. 대안으로서, vx 및 vy로부터 도출된 후보 MVD들의 수는 상이할 수 있다, 예를 들어, ThX1 != ThY1 또는 ThX2 != ThY2이다.
g. 대안으로서, 또한, 최소 비용(예를 들어, 글순서 기호 9에 정의된 비용)을 달성하는 MVD가 개선된 MVD로서 선택될 수 있다.
12. BDOF 및 기타의 디코더 개선 방법들(예를 들어, PROF)에서 이용되는 MVD들은 주어진 후보 세트 내에 있도록 제한될 수 있다고 제안된다.
a. 수평 MVD의 최대값과 최소값은 각각 MVDmaxX 및 MVDminX로 표기된다고 가정한다; 수직 MVD의 최대값과 최소값은 각각 MVDmaxY 및 MVDminY로 표기된다. 주어진 후보 세트 내의 허용되는 수평 MVD 후보의 수는 (1+MVDmaxX - MVDminX)보다 작아야 하고/하거나 주어진 후보 세트 내의 허용되는 수직 MVD 후보의 수는 (1+MVDmaxY - MVDminY)보다 작아야 한다.
b. 한 예에서, 주어진 후보 세트는 vx 및/또는 vy가 Km의 형태인 후보들만을 가질 수 있고, 여기서 m은 정수이다. 예를 들어, K = 2이다.
i. 대안으로서, 또한, 주어진 후보 세트는 또한, vx 및/또는 vy가 0과 동일한 후보를 포함할 수 있다.
ii. 대안으로서, 또는/및 에 대한 주어진 후보 세트는 또는/및 가 0이거나 Km 형태의 후보들만을 가질 수 있고, 여기서 m은 정수이다. 예를 들어, K = 2이다.
c. 한 예에서, 주어진 후보 세트는 vx 및/또는 vy 또는/및 또는/및 의 절대값들이 0이거나 Km의 형태인 후보들만을 가질 수 있고, 여기서 m은 정수이다. 예를 들어, K = 2이다.
d. 한 예에서, 주어진 후보 세트는 vx 또는/및 vy 또는/및 및/또는 의 절대값들이 0이거나 Km 또는 -Km의 형태인 후보들만을 가질 수 있고, 여기서 m은 정수이다. 예를 들어, K = 2이다.
e. 한 예에서, MVD는 먼저 선행 기술(예를 들어, BDOF에서 8.5.7.4 방정식 8-867 및 8-868에서 도출된 vx 및 vy)을 이용하여 도출된 다음, 파생될 수 있으며 주어진 후보 세트 내의 허용된 후보들 중 하나이도록 수정될 수 있다.
i. 한 예에서 X는 abs(vx) 또는 abs(vy)와 동일하게 설정되고, X'는 X로부터 도출되고 vx 또는 vy는 sign(vx) * X' 또는 sign(vy) * X'로 수정된다.
1. 예를 들어, X'는 K ^ ceil(logK(X))와 동일하게 설정될 수 있다.
2. 예를 들어, X'는 K ^ floor(logK(X))와 동일하게 설정될 수 있다.
3. 예를 들어, X가 임계값 T보다 작다면 X'는 0과 동일하게 설정될 수 있다.
4. 예를 들어, X'는, ceil(logK(X)) - X <= X - floor(logK(X))라면, K ^ ceil(logK(X))와 동일하게 설정될 수 있다.
a. 대안으로서, 또한, 그외의 경우, X'는 K ^ floor(logK(X))와 동일하게 설정될 수 있고, 그렇지 않으면
5. 예를 들어, X'는 이면 와 동일하게 설정될 수 있다.
a. 대안으로서, 또한, 이면, X'는 와 동일하게 설정될 수 있다.
6. 예를 들어, X'는 이면 와 동일하게 설정될 수 있다.
a. 대안으로서, 또한, 이면, X'는 와 동일하게 설정될 수 있다.
7. 한 예에서, K는 2로 설정된다.
8. 한 예에서, X'는 와 동일하게 설정될 수 있고, 여기서 오프셋은 정수이다. 예를 들어 오프셋은 X-1 또는 X>>1과 동일할 수 있다.
a. 한 예에서, 오프셋은 X에 의존할 수 있다. 예를 들어, 오프셋은 Kceil(logK(X))/2 +P와 동일할 수 있고, 여기서, P는, 0, 1, -1 등의 정수이다.
9. 한 예에서, X'는 와 동일하게 설정될 수 있고, 여기서 오프셋은 정수이다. 예를 들어 오프셋은 X-1 또는 X>>1과 동일할 수 있다.
a. 한 예에서, 오프셋은 X에 의존할 수 있다. 예를 들어, 오프셋은 Kfloor(logK(X))/2 +P와 동일할 수 있고, 여기서, P는, 0, 1, -1 등의 정수이다.
10. 한 예에서, X로부터 X'로의 변환은 미리정의된 조회 테이블에 의해 구현될 수 있다.
a. 한 예에서, 조회 테이블은 상기 방법들로부터 도출될 수 있다.
b. 한 예에서, 조회 테이블은 상기 방법들로부터 도출되지 않을 수 있다.
c. 한 예에서, X로부터 X'로 변환할 때, X는 조회 테이블에 접근하기 위한 인덱스로서 이용될 수 있다.
d. 한 예에서, X로부터 X'로 변환할 때, X의 처음 N개(예를 들어, N = 3)의 최상위 비트는 조회 테이블에 액세스하기 위한 인덱스로서 이용될 수 있다.
e. 한 예에서, X로부터 X'로 변환할 때, X의 처음 N개(예를 들어, N = 3)의 최하위 비트는 조회 테이블에 액세스하기 위한 인덱스로서 이용될 수 있다.
f. 한 예에서, X로부터 X'로 변환할 때, X의 소정의 N개(예를 들어, N = 3) 연속 비트가 조회 테이블에 액세스하기 위한 인덱스로서 이용될 수 있다.
11. 상기의 방법은 또한, vx로 대체함으로써 에 적용될 수 있다.
12. 상기의 방법은 또한, vy로 대체함으로써 에 적용될 수 있다.
ii. 한 예에서, K의 거듭제곱인 후보 값들의 세트는 비용(예를 들어, 글순서 기호 9에 정의된 비용)을 계산하기 위해 vx 또는 vy에 따라 선택될 수 있다. 최소 비용을 달성하는 값이 최종 vx 또는 vy로서 선택된다. lgKZ = floor(logK(abs(vZ)))를 나타내고, 여기서 Z = x 또는 y이다.
1. 예를 들어, 값들의 세트는 sign(vZ) * {K ^ lgKZ, K ^(lgKZ + 1)}일 수 있다.
2. 예를 들어, 값들의 세트는 sign(vZ) * {K ^ lgKZ, K ^(lgKZ + 1), 0}일 수 있다.
3. 예를 들어, 값들의 세트는 sign(vZ) * {K ^ lgKZ, 0}일 수 있다.
4. 예를 들어, 값들의 세트는 sign(vZ) * {K ^(lgKZ - 1), K ^ lgKZ, K ^(lgKZ + 1)}일 수 있다.
5. 예를 들어, 값들의 세트는 sign(vZ) * {K ^(lgKZ - 1), K ^ lgKZ, K ^(lgKZ + 1), 0}일 수 있다.
6. 예를 들어, 값들의 세트는 sign(vZ) * {K ^ (lgKZ - 2), K ^ (lgKZ - 1), K ^ lgKZ, K ^ (lgKZ + 1), K ^ (lgKZ + 2), 0}일 수 있다.
7. 예를 들어, 값들의 세트는 sign(vZ) * {K ^ (lgKZ - 2), K ^ (lgKZ - 1), K ^ lgKZ, K ^ (lgKZ + 1), K ^ (lgKZ + 2)}일 수 있다.
iii. 한 예에서, vx 및 vy는 순서대로 수정될 수 있다.
1. 한 예에서, vx는 vy가 0과 동일하다고 가정하여 먼저 수정될 수 있다.
a. 대안으로서, 또한, vy는 수정된 vx에 기초하여 도출된다.
2. 한 예에서, vy는 vx가 0과 동일하다고 가정하여 먼저 수정될 수 있다.
a. 대안으로서, 또한, vx는 수정된 vy에 기초하여 도출된다.
f. 대안으로서, 주어진 후보 세트 내의 허용된 후보들만이 MVD를 도출하기 위해 체크될 수 있다.
i. 한 예에서, BDOF에서, 방정식 7 및 8로부터 명시적으로 MVD(예를 들어, 8.5.7.4 방정식 8-867 및 8-868에서 도출된 vx 및 vy)를 도출하는 것 대신에, 후보 MVD 값들의 세트로부터 직접 vx 및 vy가 선택될 수 있다.
ii. 한 예에서, vx 및 vy는 순서대로 결정될 수 있다.
1. 한 예에서, vx는 vy가 0과 동일하다고 가정하여 먼저 결정될 수 있다.
a. 대안으로서, 또한, vy는 결정된 vx에 기초하여 도출된다.
2. 한 예에서, vy는 vx가 0과 동일하다고 가정하여 먼저 결정될 수 있다.
a. 대안으로서, 또한, vx는 결정된 vy에 기초하여 도출된다.
iii. 한 예에서, vx 및 vy는 공동으로 결정될 수 있다.
iv. 한 예에서, 후보 MVD 값 세트는 K^N 또는 -K^N 또는 0 형태의 값들만을 포함할 수 있고, N은 정수이고, K > 0, 예를 들어, K = 2이다.
1. 한 예에서, 후보 MVD 값 세트는 M/(K^N) 형태의 값들을 포함할 수 있고, M은 정수이고, N >= 0, K > 0, 예를 들어, K = 2이다.
2. 한 예에서, 후보 값 세트는 M/(K^N) 형태의 값들을 포함할 수 있고, M 및 N은 정수들이고, K > 0, 예를 들어, K = 2이다.
3. 한 예에서, 후보 값 세트는 값 0 또는 (K^M)/(K^N) 형태의 값들을 포함할 수 있고, M 및 N은 정수들이고, K > 0, 예를 들어, K = 2이다.
g. 대안으로서, 허용된 MVD 값들만이 vx 및 vy에 대해 도출될 수 있다.
i. 한 예에서, vx는 다음과 같이 도출되고, 여기서 함수 F1() 및 F2()는 floor() 또는 ceil()일 수 있다.
ii. 한 예에서, vx는 sign(-sGxdI) * esp2(M)으로서 도출되고, 여기서 M은 최소 비용(sGxdI << 3, sGx2)을 달성하는 정수이고, 함수 cost()는 다음과 같이 정의된다.
cost(x, y) = Abs(abs(x) * 2M y)
1. 대안으로서, cost(x, y, M) = Abs(abs(x) * 2M - abs(y))이다.
2. 대안으로서, cost(x, y, M) = Abs(abs(x) * 2M -y)이다.
iii. 한 예에서, vy는 다음과 같이 도출되고, 여기서, 함수 F1() 및 F2()는 floor() 또는 ceil()일 수 있다.
iv. 한 예에서, vy는 sign(tmp) * esp2(M)으로서 도출되고, 여기서 M은 최소 비용(tmp, sGy2)을 달성하는 정수이고, tmp는 다음과 같이 정의되고 함수 cost()는 위에서 정의된다.
tmp = ( sGydI << 3 ) - ( ( vx * sGxGym ) << 12 + vx * sGxGys ) >> 1
v. vx를 도출하는데 이용되는 분자와 분모가 각각 numX 및 denoX라고 가정한다(예를 들어, vx는 대략 numX/denoX일 것으로 예상됨). vx는 다음과 같이 도출될 수 있다 :
1. 한 예에서, vx는 sign(numX*denoX) * esp2(M)로서 도출될 수 있고, 여기서 M은 cost(numX, denoX, M)의 최소값을 달성하는 정수이다.
2. 한 예에서, vx는 0 또는 와 동일하게 설정될 수 있고, 여기서 offset1 및 offset2는 정수이다.
a. 예를 들어, vx는 abs(numX) < abs(denoX) * T1 + T2라면 0과 동일하게 설정될 수 있다. 예를 들어, T1 = ½, T2 = 0이다.
b. 예를 들어, vx는 abs(numX) <= abs(denoX) * T1 + T2라면 0과 동일하게 설정될 수 있다. 예를 들어, T1 = ½, T2 = 0이다.
c. 예를 들어, vx는 abs(numX) < abs(denoX) >> T1 ) + T2라면 0과 동일하게 설정될 수 있다. 예를 들어, T1 = 1, T2 = 0이다.
d. 예를 들어, vx는 abs(numX) <= abs(denoX) >> T1 )+ T2라면 0과 동일하게 설정될 수 있다. 예를 들어, T1 = 1, T2 = 0이다.
e. 예를 들어, vx는 denoX가 0과 동일하다면 0과 동일하게 설정될 수 있다.
f. 예를 들어, vx는 numX가 0과 동일하다면 0과 동일하게 설정될 수 있다.
g. 예를 들어, vx는 numX가 0과 동일하거나 denoX가 0과 동일하다면 0과 동일하게 설정될 수 있다.
h. 예를 들어, vx는 denoX가 T1보다 작다면 0과 동일하게 설정될 수 있다.
i. 예를 들어, vx는 numX가 T1보다 작다면 0과 동일하게 설정될 수 있다.
j. 예를 들어, vx는 numX가 T1보다 작거나 denoX가 T2보다 작다면 0과 동일하게 설정될 수 있다.
k. 예를 들어, offset1은 numX - 1 또는 X >> 1 또는 0과 동일하게 설정될 수 있다.
l. 예를 들어, offset2는 denoX -1 또는 denoX >> 1 또는 0과 동일하게 설정될 수 있다.
m. 예를 들어, 예를 들어 offset1은 numX에 의존할 수 있다. 예를 들어, offset1은Kceil(logK(numX))/2 +P와 동일할 수 있고, 여기서 P는 0, 1, -1 등의 정수이다.
n. 예를 들어 offset1은 numX에 의존할 수 있다. 예를 들어, offset1은 Kceil(logK(abs(numX)))/2 +P와 같을 수 있고, 여기서 P는 0, 1, -1 등의 정수이다.
o. 예를 들어, offset1은 Kfloor(logK(numX))/2 +P와 동일할 수 있고, 여기서 P는 0, 1, -1 등의 정수이다.
p. 예를 들어, offset1은 Kfloor(logK(abs(numX)))/2 +P와 같을 수 있고, 여기서 P는 0, 1, -1 등의 정수이다.
q. 예를 들어, offset2는 denoX에 의존할 수 있다. 예를 들어, offset2는 Kceil(logK(denoX))/2 +P와 동일할 수 있고, 여기서 P는 0, 1, -1 등의 정수이다.
r. 예를 들어, offset2는 denoX에 의존할 수 있다. 예를 들어, offset2는 Kceil(logK(abs(denoX)))/2 +P와 같을 수 있고, 여기서 P는 0, 1, -1 등의 정수이다.
s. 예를 들어, offset2는 Kfloor(logK(denoX))/2 +P와 동일할 수 있고, 여기서 P는 0, 1, -1 등의 정수이다.
t. t) 예를 들어, offset2는 Kfloor(logK(abs(denoX)))/2 +P와 같을 수 있고, 여기서 P는 0, 1, -1 등의 정수이다.
u. 예를 들어, F1() 및 F2()는 함수 floor() 또는 ceil()일 수 있다.
3. 한 예에서 delta = floor(log2(abs(numX))) - floor(log2(abs(denoX))), vx는 다음과 같이 도출될 수 있다.
a. 예를 들어, vx = abs(numX) <(T1 * abs(denoX) + T2) ? T3 : sign(numX * denoX) * (1 << delta).
i. 한 예에서 T1 = 1, T2 = 0, T3 = 0이다.
ii. 한 예에서, T1 = ½, T2 = 0, T3 = 0이다.
iii. 한 예에서 T3 = numX이다.
b. 예를 들어, vx = abs(numX) <= (T1 * abs(denoX) + T2) ? T3 : sign(numX * denoX) * (1 << delta).
i. 한 예에서 T1 = 1, T2 = 0, T3 = 0이다.
ii. 한 예에서, T1 = ½, T2 = 0, T3 = 0이다.
iii. 한 예에서 T3 = numX이다.
c. 예를 들어, vx = ((denoX = = 0 ) || (abs(numX) < (T1 * abs(denoX) + T2))) ? T3 : sign(numX * denoX) * (1 << delta).
d. 예를 들어, vx = ((denoX = = 0 ) || (abs(numX) <= (T1 * abs(denoX) + T2))) ? T3 : sign(numX * denoX) * (1 << delta).
e. 예를 들어, vx = ((numX = = 0 ) || (abs(numX) < (T1 * abs(denoX) + T2))) ? T3 : sign(numX * denoX) * (1 << delta).
f. 예를 들어, vx = ((numX = = 0 ) || (abs(numX) <= (T1 * abs(denoX) + T2))) ? T3 : sign(numX * denoX) * (1 << delta).
g. 예를 들어, vx = ((numX = = 0 ) || (denoX = = 0 ) || (abs(numX) < (T1 * abs(denoX) + T2))) ? T3 : sign(numX * denoX) * (1 << delta).
h. 예를 들어, vx = ((numX = = 0 ) || (denoX = = 0 ) || (abs(numX) <= (T1 * abs(denoX) + T2))) ? T3 : sign(numX * denoX) * (1 << delta).
i. 예를 들어, vx = (delta < T1) ? T3 : sign(numX * denoX) * (1 << delta).
i. 한 예에서, T1 = 0, T3 = 0이다.
j. 예를 들어, vx = (delta <= T1) ? T3 : sign(numX * denoX) * (1 << delta).
i. 한 예에서, T1 = 0, T3 = 0이다.
k. 예를 들어, vx = ((delta < T1) | | (denoX = = 0)) ? T3 : sign(numX * denoX) * (1 << delta).
l. 예를 들어, vx = ((delta <= T1) | | (denoX = = 0)) ? T3 : sign(numX * denoX) * (1 << delta).
m. 예를 들어, vx = ((delta < T1) | | (numX = = 0)) ? T3 : sign(numX * denoX) * (1 << delta).
n. 예를 들어, vx = ((delta <= T1) | | (numX = = 0)) ? T3 : sign(numX * denoX) * (1 << delta).
o. 예를 들어, vx = ((delta <= T1) | | (numX = = 0) | | (denoX = = 0)) ? T3 : sign(numX * denoX) * (1 << delta).
p. 예를 들어, vx = ((delta < T1) | | (numX = = 0) | | (denoX = = 0)) ? T3 : sign(numX * denoX) * (1 << delta).
q. 한 예에서, 델타는 다음과 같이 더 수정될 수 있다.
i. 예를 들어 floor(log2(abs(numX)))가 0보다 크고 abs(numX) &(1 <<(floor(log2(abs(numX))) - 1))이 0과 같이 않다면, 델타는 1만큼 증가될 수 있다.
ii. 예를 들어 floor(log2(abs(denoX)))가 0보다 크고 abs(denoX) &(1 <<(floor(log2(abs(denoX)))) - 1))이 0과 같지 않다면, 델타는 1만큼 감소될 수 있다.
r. 대안으로서, 또한, 델타가 0보다 작을 때, vx는 0으로 설정된다.
4. 이러한 방법은 numX 및 denoX를 각각 numY 및 denoY로 대체(예를 들어, 상기의 방법들에서는 vx를 vy로 대체)함으로써 vy에 적용될 수 있고, 여기서 numY 및 denoY는 vy를 도출하는데 이용되는 분자 및 분모이다.
5. 상기의 예에서, vx는 BDOF에서 bdofOffset을 도출하는데 이용되는 "vx", 또는 PROF(예를 들어, PROF-방정식2)에서 ΔI를 도출하는데 이용되는 ""를 지칭할 수 있다.
a. 예를 들어, numX 및/또는 denoX는 vx가 BDOF에서 bdofOffset을 도출하는데 이용되는 "vx"를 지칭하는지 또는 PROF에서 ΔI를 도출하는데 이용되는 ""를 지칭하는지에 따라 설정될 수 있다.
b. 예를 들어, ""가 PROF에서 ΔI를 도출하는데 이용된다면, numX는 PROF(예를 들어, PROF-방정식 1)에서의 어파인 파라미터들로부터 도출된 와 동일하게 설정될 수 있다.
c. 예를 들어, ""가 PROF에서 ΔI를 도출하는데 이용된다면, denoX는 1 등의 고정된 숫자와 동일하게 설정될 수 있다.
6. 상기의 예에서, vy는 BDOF에서 bdofOffset을 도출하는데 이용되는 "vy", 또는 PROF(예를 들어, PROF-방정식2)에서 ΔI를 도출하는데 이용되는 ""를 지칭할 수 있다.
a. 예를 들어, numY 및/또는 denoY는 vy가 BDOF에서 bdofOffset을 도출하는데 이용되는 "vy"를 지칭하는지 또는 PROF에서 ΔI를 도출하는데 이용되는 ""를 지칭하는지에 따라 설정될 수 있다.
b. 예를 들어, ""가 PROF에서 ΔI를 도출하는데 이용된다면, numY는 PROF(예를 들어, PROF-방정식 1)에서의 어파인 파라미터들로부터 도출된 와 동일하게 설정될 수 있다.
c. 예를 들어, ""가 PROF에서 ΔI를 도출하는데 이용된다면, denoY는 1 등의 고정된 숫자와 동일하게 설정될 수 있다.
h. 한 예에서, 상이한 툴들(예를 들어, BDOF 및 PROF)에서 이용되는 MVD의 수평 및/수직 성분은 먼저 선행 기술을 이용하여 도출될 수 있고, 툴과 연관된 주어진 후보 세트에 속하도록 추가로 수정될 수 있다. 수정 프로세스는 단일화될 수 있다.
i. 대안으로서, 상이한 툴들에서 이용되는 MVD들의 도출 프로세스는 직접 단일화될 수 있다.
ii. 한 예에서, BDOF 및 PROF에서 이용되는 MVD의 수평 및/수직 성분은 먼저 선행 기술을 이용하여 도출될 수 있고, 툴과 연관된 주어진 후보 세트에 속하도록 추가로 수정될 수 있다.
1. 대안으로서, 또한, 단일화된 수정 프로세스를 기동시키기 위해 상이한 입력들이 이용될 수 있다.
2. 예를 들어, 이들 값들은 글순서 기호 12.g.v에 설명된 바와 같이 도출될 수 있다. 입력은 분자와 분모이고, 출력은 0이거나 Km 또는 -Km 형태의 값인 도출된 MVD 값이다(K와 m은 정수이다, 예를 들어, K = 2).
3. 한 예에서, PROF에서 모션 벡터 차이를 도출할 때, 분자들은 각각 수정되기 전의 원래의 또는 (예를 들어, 2.6절에서 도출된 값들)이고 분모는 1이다.
4. 한 예에서, BDOF에서 모션 벡터 차이를 수정할 때, 분자들은 각각 수정되기 전의 원래의 vx 또는 vy(예를 들어, BDOF에서 8.5.7.4 방정식 8-867 및 8-868에서 도출된 값들)이고 분모는 1이다.
5. 하나의 예에서, 원래의 또는 는, 분자들로서 이용되기 전에 숫자 N만큼 좌측으로 시프트될 수 있고, 분모는 1 << N이다. 이 경우, 출력 MVD는 이용되기 전에 N만큼 우측으로 시프트되어야 한다.
6. 한 예에서, 원래의 vx 또는 vy(예를 들어, BDOF에서 8.5.7.4 방정식 8-867 및 8-868에서 도출된 값들)은 분자들로서 이용되기 전에 숫자 N만큼 좌측 시프트될 수 있고, 분모는 1 << N이다. 이 경우, 출력 MVD는 이용되기 전에 N만큼 우측 시프트되어야 한다.
i. 한 예에서, 글순서 기호 11.b 또는/및 11.c에서 vx 또는 vy를 결정할 때, 각각의 후보 값에 대해 비용이 계산되고, 최소 비용을 달성하는 값이 vx 또는 vy로서 선택된다.
i. 예를 들어, 비용 이 이용될 수 있고, 여기서, 는 방정식 (5)에서 정의되고, 은 샘플들이 서브블록에 속한다는 것을 나타낸다.
j. 주어진 후보 세트는 미리정의될 수 있다.
i. 한 예에서, vx 및/또는 vy는 -2^x/2^X로부터만 나올 수 있고, 여기서, x는 범위 [-(X-1), (X-1)]에 있다.
1. 대안으로서, 또한, 주어진 후보 세트는 또한, vx 및/또는 vy가 0과 동일한 후보를 포함할 수 있다.
2. 대안으로서, 또한, 주어진 후보 세트는 2^x/2^X 형태의 값들을 포함할 수 있다.
ii. 한 예에서, 주어진 MVD 후보 세트(예를 들어, BDOF에서 이용되는 vx 및/또는 vy, PROF에서의 또는 의 값들) 내의 후보의 수평 및/또는 수직 성분은 의 형태만일 수 있고, 여기서 S는 1 또는 -1이다.
1. 한 예에서, N = 6이다. 다른 예들에서, N은 0, 2, 또는 4일 수 있다.
2. 한 예에서, m은, a = 0 및 b = N; 또는 a = 0 및 b = N-1 등의, 범위 [a, b] 내에 있다.
3. 대안으로서, 또한, 주어진 MVD 후보 세트는 또한, 에 추가하여 0도 포함할 수 있다.
4. 대안으로서, 또한, 주어진 후보 세트는 에 추가하여 의 형태의 값들 및/또는 0값을 포함할 수 있다.
a. 한 예에서 Q = 6이다.
b. 한 예에서, n은, a = 0이고 b= Q; 또는 a =0이고 b = Q-1 등의, 범위 [a, b] 내에 있다.
5. 한 예에서, 주어진 MVD 후보 세트(예를 들어, BDOF에서 이용되는 vx 및/또는 vy, PROF에서의 또는 의 값들) 내의 후보의 수평 및/또는 수직 성분은 으로부터만 나올 수 있다.
iii. 한 예에서, vx 및 vy는 {-32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32}/64로부터만 나올 수 있다.
iv. 한 예에서, vx 또는/및 vy 또는/및 또는/및 는 {-32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32}로부터만 나올 수 있다.
v. 한 예에서, vx 또는/및 vy 또는/및 또는/및 는 {-32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32}/32로부터만 나올 수 있다.
vi. 한 예에서, 또는/및 는 {-64, -32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32, 64}로부터만 나올 수 있다.
vii. 한 예에서, vx 또는/및 vy 또는/및 또는/및 는 {-64, -32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32, 64}/64로부터만 나올 수 있다.
viii. 한 예에서, vx 또는/및 vy 또는/및 또는/및 는 {-128, -64, -32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32, 64, 128}/128로부터만 나올 수 있다.
ix. 한 예에서, vx 또는/및 vy 또는/및 또는/및 는 {-128, -64, -32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32, 64, 128}로부터만 나올 수 있다.
k. 주어진 후보 세트는 코딩된 정보(예를 들어, 블록 치수, 모드)에 의존할 수 있다.
i. 이것은, 블록이 BDOF 또는 PROF 인에이블되어 코딩되었는지에 따라 달라질 수 있다.
l. 주어진 후보 세트는 시퀀스/픽처/슬라이스/브릭/기타의 비디오 유닛-레벨에서 시그널링될 수 있다.
m. 한 예에서, BDOF 또는 PROF에서 샘플에 관한 개선 프로세스는 곱셈 동작들을 제외한다.
i. 예를 들어, S'는 S'= S+((Gx+OffsetX)<<Bx) +((Gy+OffsetY)<<By)+OffsetS로서 도출되고, 여기서 S 및 S'는 개선 이전 및 이후의 샘플 값들이다. OffsetX, OffsetY 및 OffsetS는 0 등의 정수들이다.
1. 한 예에서, S'는 클리핑될 수 있다.
2. 한 예에서, S'는 우측으로 시프트될 수 있다.
13. BDOF에서의 vx 또는/및 vy 또는/및 PROF에서의 또는/및 은 먼저 미리정의된 범위로 클리핑될 수 있고(상이한 범위들이 vx 또는/및 vy 또는/및 또는/및 에 대해 이용될 수 있다), 그 다음, 제안된 방법에 의해 0 또는 Km 또는 -Km 형태의 값으로 변환될 수 있다.
a. 대안으로서, BDOF에서의 vx 또는/및 vy 또는/및 PROF에서의 또는/및 은 제안된 방법에 의해 먼저 0 또는 Km 또는 -Km 형태의 값으로 변환된 다음, 미리정의된 범위로 클리핑될 수 있다(상이한 범위들이 vx 또는/및 vy 또는/및 또는/및 에 대해 이용될 수 있다).
i. 대안으로서, 또한, 범위는, [-Km1, Kn] 또는 [Km2, Kn]의 형태이어야 한다.
b. 한 예에서, 상기 방법에서 분자 또는/및 분모는 이용되기 전에 미리정의된 범위로 클리핑될 수 있다.
14. BDOF에서의 클리핑 파라미터들(예를 들어, 방정식 7 및 8에서의 thBIO)은 상이한 시퀀스/픽처/슬라이스/타일 그룹/타일/CTU/CU에 대해 상이할 수 있다.
a. 한 예에서, 수평 MVD와 수직 MVD를 클리핑할 때 상이한 thBIO가 이용될 수 있다.
b. 한 예에서, thBIO는 픽처 치수들에 의존할 수 있다. 예를 들어, 더 큰 치수들을 갖는 픽처에 대해서는 더 큰 thBIO가 이용될 수 있다.
c. 한 예에서, thBIO는 블록의 디코딩된 모션 정보에 의존할 수 있다.
i. 예를 들어, 더 큰 절대 MV, 예를 들어 MV[0]의 "절대 MV" 또는 MV[1] 또는 sumAbsHorMv 또는 sumAbsVerMv 또는 sumAbsHorMv + sumAbsVerMv의 "절대 MV"를 갖는 블록에 대해 더 큰 thBIO가 이용될 수 있다.
ii. 예를 들어, 더 큰 절대 수평 MV, 예를 들어 MV[0]의 "절대 수평 MV" 또는 MV[1] 또는 sumAbsHorMv 또는 maxHorVerMv의 "절대 수평 MV"를 갖는 블록에 대한 수평 MVD를 클리핑하기 위해 더 큰 thBIO가 이용될 수 있다.
iii. 예를 들어, 더 큰 절대 수직 MV, 예를 들어 MV[0]의 "절대 수직 MV" 또는 MV[1] 또는 sumAbsVerMv 또는 maxAbsVerMv의 "절대 수직 MV"를 갖는 블록에 대한 수직 MVD를 클리핑하기 위해 더 큰 thBIO가 이용될 수 있다.
d. 클리핑 파라미터들은 인코더에서 결정되고, 시퀀스 파라미터 세트(SPS), 또는/및 비디오 파라미터 세트(VPS), 또는/및 적응 파라미터 세트(APS), 또는/및 픽처 파라미터 세트(PPS), 또는/및 슬라이스 헤더, 또는/및 타일 그룹 헤더에서 디코더에 시그널링될 수 있다.
15. BDOF에서의 클리핑 파라미터들은 코딩 툴 X의 인에이블 여부에 의존할 수 있다.
a. 한 예에서, X는 DMVR이다.
b. 한 예에서, X는 어파인 인터 모드이다.
c. 한 예에서, 더 큰 클리핑 파라미터들, 예를 들어 방정식 7 및 8의 임계값 thBIO는, 시퀀스/비디오/픽처/슬라이스/타일 그룹/타일/브릭/코딩 유닛/CTB/CU/블록에 대해 X가 디스에이블될 때 이용될 수 있다.
i. 대안으로서, 또한, 시퀀스/비디오/픽처/슬라이스/타일 그룹/타일/브릭/코딩 유닛/CTB/CU/블록에 대해 X가 인에이블될 때 더 작은 클리핑 파라미터들이 이용될 수 있다.
16. BDOF 및 PROF에서 도출된 (PROF의 경우 2.6절의 (dMvH, dMvV) 또는/및 BDOF의 경우 2.3절의 (vx, vy) 등의) MVD는 동일한 범위 [-N, M]으로 클리핑될 수 있고, 여기서 N 및 M은 정수들이다.
d. 한 예에서, N = M = 31이다.
e. 한 예에서, N = M = 63이다.
f. 한 예에서, N = M = 15이다.
g. 한 예에서, N = M = 7이다.
h. 한 예에서, N = M = 3이다.
i. 한 예에서, N = M = 127이다.
j. 한 예에서, N = M = 255이다.
k. 한 예에서, M = N이고 2 * M은 2K의 값과 동일하지 않다(K는 정수임).
l. 한 예에서, M은 N과 동일하지 않고, (M + N)은 2K의 값과 동일하지 않다(K는 정수임).
m. 대안으로서, BDOF 및 PROF에서 도출된 MVD는 상이한 범위들로 클리핑될 수 있다.
i. 예를 들어, BDOF에서 도출된 MVD는 [-31, 31]로 클리핑될 수 있다.
ii. 예를 들어, BDOF에서 도출된 MVD는 [-15, 15]로 클리핑될 수 있다.
iii. 예를 들어, BDOF에서 도출된 MVD는 [-63, 63]로 클리핑될 수 있다.
iv. 예를 들어, BDOF에서 도출된 MVD는 [-127, 127]로 클리핑될 수 있다.
v. 예를 들어, PROF에서 도출된 MVD는 [-63, 63]로 클리핑될 수 있다.
vi. 예를 들어, PROF에서 도출된 MVD는 [-31, 31]로 클리핑될 수 있다.
vii. 예를 들어, BDOF에서 도출된 MVD는 [-15, 15]로 클리핑될 수 있다.
viii. 예를 들어, BDOF에서 도출된 MVD는 [-127, 127]로 클리핑될 수 있다.
17. 하나의 샘플과 연관된 (2.6절의 (dMvH, dMvV) 등의) MVD는 광학적 흐름 기반의 방법들(예를 들어, PROF)에서 또 다른 샘플의 MVD를 도출하는데 이용될 수 있다.
n. 한 예에서, RPOF에서의 MVD는 소정의 위치들에 대한 어파인 모델을 이용하여(예를 들어, 2.6절의 PROF-방정식 1에 따라) 오직 도출될 수 있고, 이러한 MVD는 다른 위치들의 MVD를 도출하는데 이용될 수 있다. MVD가 PROF에서 W * H 크기에서 도출된다고 가정하자.
o. 한 예에서, 상위 W*H/2 부분에 대해서는 어파인 모델만을 이용하여 MVD가 도출될 수 있고, 상위 W*H/2 부분의 MVD로부터 하위 W*H/2 부분의 MVD가 도출될 수 있다. 한 예가 도 11에 도시되어 있다.
p. 한 예에서, 하위 W*H/2 부분에 대해서는 어파인 모델만을 이용하여 MVD가 도출될 수 있고, 하위 W*H/2 부분의 MVD로부터 상위 W*H/2 부분의 MVD가 도출될 수 있다.
q. 한 예에서, 좌측 W/2 * H 부분에 대해서는 어파인 모델만을 이용하여 MVD가 도출될 수 있고, 좌측 W/2 * H 부분의 MVD로부터 우측 W/2 * H 부분의 MVD가 도출될 수 있다.
r. 한 예에서, 우측 W/2 * H 부분에 대해서는 어파인 모델만을 이용하여 MVD가 도출될 수 있고, 우측 W/2 * H 부분의 MVD로부터 좌측 W/2 * H 부분의 MVD가 도출될 수 있다.
s. 한 예에서, 또한, 어파인 모델을 이용하여 도출된 MVD는, 다른 위치들의 MVD를 도출하는데 이용되기 전에 미리정의된 정밀도로 반올림되거나, 또는/및 미리정의된 범위로 클리핑될 수 있다.
i. 예를 들어, 상위 W * H/2 부분의 MVD가 어파인 모델을 이용하여 도출될 때, 이러한 MVD는, 하위 W * H/2 부분의 MVD를 도출하는데 이용되기 전에, 미리정의된 정밀도로 반올림되거나, 또는/및 미리정의된 범위로 클리핑될 수 있다.
t. 한 예에서 x = 0, …, W - 1, y = H/2, …, H - 1에 대해, 위치 (x, y)의 MVD는 다음과 같이 도출되고, 여기서 MVDh 및 MVDv는 각각 수평 및 수직 MVD이다.
i. MVDh(x, y) = -MVDh(W - 1 - x, H - 1 - y)
ii. MVDv(x, y) = -MVDv(W - 1 - x, H - 1 - y)
18. BDOF에서 도출된 샘플 예측 개선(예를 들어, 예측 샘플에 추가될 오프셋)은 미리정의된 범위 [-M, N](M 및 N은 정수들임)로 클리핑될 수 있다.
a. 한 예에서 N은 M - 1과 동일할 수 있다.
i. 한 예에서, M은 2K와 동일하다. 예를 들어, K는, 11, 12, 13, 14 또는 15와 동일할 수 있다.
ii. 대안으로서, N은 M과 동일할 수 있다.
b. 한 예에서, 미리정의된 범위는 현재 색상 성분의 비트 깊이에 의존할 수 있다.
i. 한 예에서, M은 2K와 동일하고, K = Max(K1, BitDepth + K2)이고, 여기서 BitDepth는 현재 색상 성분(예를 들어, 루마, Cb 또는 Cr, 또는 R, G 또는 B)의 비트 깊이이다. Max(X, Y)는 X와 Y 중 더 큰 값을 반환한다.
ii. 한 예에서, M은 2K와 동일하고, K = Min(K1, BitDepth + K2)이고, 여기서 BitDepth는 현재 색상 성분(예를 들어, 루마, Cb 또는 Cr, 또는 R, G 또는 B)의 비트 깊이이다. Min(X, Y)는 X와 Y 중 더 작은 값을 반환한다.
iii. 예를 들어, K1은 11, 12, 13, 14 또는 15와 동일할 수 있다.
iv. 예를 들어, K2는 -2, -1, 0, 1, 2 또는 3과 동일할 수 있다.
v. 한 예에서 3개의 색상 성분은 동일한 비트깊이를 공유하므로, 범위는 순수하게 블록 내의 샘플들의 내부 비트 깊이 또는 입력 비트 깊이에 의존한다.
c. 한 예에서, 미리정의된 범위는 PROF에서 이용된 것과 동일하다.
d. 대안으로서, 또한, BDOF에서의 개선된 샘플(예를 들어, 오프셋 + 개선 전의 샘플)은 더 이상 클리핑되지 않을 수 있다.
19. 상이한 잔차 코딩 모드들(예를 들어, 변환 스킵(TS) 모드 및 일반 잔차 코딩 모드(비-TS 모드))에서 코딩 그룹(CG) 크기들을 정렬하는 것이 제안된다.
a. 한 예에서, 변환 스킵 코딩된 블록(변환이 바이패스되거나 식별 변환이 적용됨)의 경우, CG 크기는 블록이 (2*M)(예를 들어, M=8)보다 많은 샘플을 포함하는지 및/또는 잔차 블록 크기에 의존할 수 있다.
i. 한 예에서, 블록 크기가 A*N(N>=M)이면, CG 크기는 A*M으로 설정된다.
ii. 한 예에서, 블록 크기가 N*A(N>=M)이면, CG 크기는 M*A로 설정된다.
iii. 한 예에서, 블록 크기가 A*N(N<M)이면 CG 크기는 A*A로 설정된다.
iv. 한 예에서, 블록 크기가 N*A(N<M)이면, CG 크기는 A*A로 설정된다.
v. 한 예에서, A = 2이다.
b. 한 예에서, 비-TS 코딩된 블록의 경우, CG 크기는 블록이 K와 동일한 폭 또는 높이를 갖는지에 의존할 수 있다.
i. 한 예에서, 폭 또는 높이가 K와 같으면, CG 크기는 K*K로 설정된다(예를 들어, K=2).
ii. 한 예에서, 폭과 높이의 최소값이 K와 같으면, CG 크기는 K*K로 설정된다(예를 들어, K=2).
c. 한 예에서, 2*2 CG 크기는 변환 스킵 모드 및 일반 잔차 코딩 모드 양쪽 모두에서 2*N 또는/및 N*2 잔차 블록들에 대해 이용될 수 있다.
d. 한 예에서, 2*8 CG 크기는 변환 스킵 모드 및 일반 잔차 코딩 모드 양쪽 모두에서 2*N(N >= 8) 잔차 블록들에 대해 이용될 수 있다.
i. 대안으로서, 2*4 CG 크기는 변환 스킵 모드 및 일반 잔차 코딩 모드 양쪽 모두에서 2*N(N >= 8) 잔차 블록들에 대해 이용될 수 있다.
ii. 대안으로서, 2*4 CG 크기는 변환 스킵 모드 및 일반 잔차 코딩 모드 양쪽 모두에서 2*N(N >= 4) 잔차 블록들에 대해 이용될 수 있다.
e. 한 예에서, 8*2 CG 크기는 변환 스킵 모드 및 일반 잔차 코딩 모드 양쪽 모두에서 N*2(N >= 8) 잔차 블록들에 대해 이용될 수 있다.
i. 4*2 CG 크기는 변환 스킵 모드 및 일반 잔차 코딩 모드 양쪽 모두에서 N*2(N >= 8) 잔차 블록들에 대해 이용될 수 있다.
ii. 4*2 CG 크기는 변환 스킵 모드 및 일반 잔차 코딩 모드 양쪽 모두에서 N*2(N >= 4) 잔차 블록들에 대해 이용될 수 있다.
20. 어파인 코딩된 블록들에 대해 PROF를 인에이블/디스에이블할지는 현재 어파인 코딩된 블록과 연관된 디코딩된 정보에 의존할 수 있다.
a. 한 예에서, 하나의 기준 픽처가 현재 픽처와는 상이한 해상도(폭 또는 높이)와 연관될 때 PROF가 디스에이블될 수 있다.
b. 한 예에서, 현재 블록이 일방 예측 코딩이라면, 기준 픽처가 현재 픽처와는 상이한 해상도(폭 또는 높이)와 연관될 때 PROF는 디스에이블될 수 있다.
c. 한 예에서, 현재 블록이 쌍방 예측 코딩이라면, 기준 픽처 중 적어도 하나가 현재 픽처와는 상이한 해상도(폭 또는 높이)와 연관될 때 PROF는 디스에이블될 수 있다.
d. 한 예에서, 현재 블록이 쌍방 예측 코딩이라면, 모든 기준 픽처가 현재 픽처와는 상이한 해상도(폭 또는 높이)와 연관될 때 PROF는 디스에이블될 수 있다.
e. 한 예에서, 현재 블록이 쌍방 예측 코딩이라면, 모든 기준 픽처가 현재 픽처와는 상이하더라도 동일한 해상도(폭 또는 높이)와 연관될 때 PROF는 인에이블될 수 있다.
f. 상기의 방법들을 인에이블할지는, 현재 블록의 CPMV들; 기준 픽처와 현재 픽처 사이의 해상도 비율들 등의 현재 블록의 코딩된 정보에 의존할 수 있다.
21. PROF는, 다음과 같은 것들 등의, 소정의 조건들이 참일 때 디스에이블될 수 있다.
a. 일반화된 쌍방 예측(BCW라고도 알려진, GBi)이 인에이블됨
b. 가중된 예측이 인에이블됨
c. 대안적인 절반의 픽셀 보간 필터가 적용됨.
22. DMVR/BIO에 적용되는 상기의 방법들은, 어파인 모드에 대한 광학적 흐름에 기초한 예측 개선 등의, 다른 디코더측 모션 벡터 도출(DMVD; Decoder-side Motion Vector derivation) 방법에도 적용될 수 있다.
23. 상기의 방법들을 이용할지의 여부 및/또는 어떤 방법을 이용할지는, 시퀀스/픽처/슬라이스/타일/브릭/비디오 유닛-레벨에서 시그널링될 수 있다.
24. 정사각형이 아닌 MVD 영역(예를 들어, 다이아몬드 영역, 8각형 기반의 MVD 영역)은 DMVR 및/또는 기타의 디코더 도출된 모션 방법들에서 검색될 수 있다.
a. 예를 들어, 다음과 같은 5*5 다이아몬드 MVD 영역이 검색될 수 있다, 예를 들어 아래에 나열된 MVD 값들은 정수 픽셀 단위이다.
(0,-2),
(-1,-1), (0,-1), (1,-1),
(-2, 0), (-1, 0), (0, 0), (1, 0), (2, 0),
(-1, 1), (0, 1), (1, 1),
(0, 2),
b. 예를 들어, 다음과 같은 5*5 8각형 MVD 영역이 검색될 수 있다, 예를 들어 아래에 나열된 MVD 값들은 정수 픽셀 단위이다.
(-1,-2), (0,-2), (1,-2),
(-2,-1), (-1,-1), (0,-1), (1,-1), (2,-1),
(-2, 0), (-1, 0), (0, 0), (1, 0), (2, 0),
(-2, 1), (-1, 1), (0, 1), (1, 1), (2, 1),
(-1, 2), (0, 2), (1, 2),
c. 예를 들어, 다음과 같은 3*3 다이아몬드 MVD 영역이 검색될 수 있다, 예를 들어 아래에 나열된 MVD 값들은 정수 픽셀 단위이다.
(0,-1),
(-1, 0), (0, 0), (1, 0),
(0, 1),
d. 한 예에서, (MVD_Hor_TH1+ MVD_Hor_TH2+1)이 (MVD_Ver_TH1+ MVD_Ver_TH2+1)과 동일하지 않은 것 등의, 수평 및 수직 방향들에서의 동일하지 않은 검색 범위들이 적용될 수 있다.
25. DMVR 및/또는 기타의 디코더 도출 모션 방법들에서 검색될 MVD 영역은 블록 치수들 및/또는 블록 형상에 의존할 수 있다. 현재 블록 치수들이 W×H라고 가정하자.
a. 한 예에서, W >= H + TH(TH >= 0)이라면, 수평 MVD 검색 범위(예를 들어, MVD_Hor_TH1+ MVD_Hor_TH2+1)는 수직 MVD 검색 범위(예를 들어, MVD_Ver_TH1+ MVD_Ver_TH2+1)보다 크거나 작지 않을 수 있다.
i. 대안으로서, W + TH <= H이라면, 수평 MVD 검색 범위는 수직 MVD 검색 범위보다 클 수 있다.
ii. 예를 들어, MVD_Hor_TH1 및 MVD_Hor_TH2는 2로 설정되고, MVD_Ver_TH1 및 MVD_Ver_TH1은 1로 설정된다.
iii. 예를 들어, 다음과 같은 5*3 MVD 영역이 검색될 수 있고, 여기서 MVD 값들은 정수 픽셀 단위이다.
(-1,-1), (0,-1), (1,-1),
(-2, 0), (-1, 0), (0, 0), (1, 0), (2, 0),
(-1, 1), (0, 1), (1, 1),
b. 한 예에서, W + TH <= H라면, 수평 MVD 검색 범위는 수직 MVD 검색 범위보다 작거나 크지 않을 수 있다.
i. 대안으로서, W >= H + TH(TH >= 0)이라면, 수평 MVD 검색 범위는 수직 MVD 범위보다 작을 수 있다.
ii. 예를 들어, MVD_Hor_TH2 및 MVD_Hor_TH1는 2로 설정되고, MVD_Ver_TH1 및 MVD_Ver_TH1은 1로 설정된다.
iii. 예를 들어, 다음과 같은 3*5 MVD 영역이 검색될 수 있고, 여기서 MVD 값들은 정수 픽셀 단위이다.
(0,-2),
(-1,-1), (0,-1), (1,-1),
(-1, 0), (0, 0), (1, 0),
(-1, 1), (0, 1), (1, 1),
(0, 2),
c. 한 예에서, W <= H + TH이고 H <= W + TH라면, 다이아몬드 MVD 영역이 검색될 수 있다.
i. 예를 들어, 다음과 같은 5*5 다이아몬드 MVD 공간이 검색될 수 있고, 여기서 MVD 값들은 정수 픽셀 단위이다.
(0,-2),
(-1,-1), (0,-1), (1,-1),
(-2, 0), (-1, 0), (0, 0), (1, 0), (2, 0),
(-1, 1), (0, 1), (1, 1),
(0, 2),
26. DMVR 및/또는 기타의 디코더 도출된 모션 방법들에서 검색될 MVD 공간은 개선되기 전의 블록의 모션 정보에 의존할 수 있다.
a. 한 예에서, sumAbsHorMv >= sumAbsVerMv + TH(TH >= 0)이라면, 수평 MVD 검색 범위는 수직 검색 MVD 범위보다 클 수 있다.
i. 대안으로서, sumAbsHorMv + TH <= sumAbsVerMv이라면, 수평 MVD 검색 범위는 수직 MVD 범위보다 클 수 있다.
ii. 예를 들어, MVD_Hor_TH1 및 MVD_Hor_TH2는 2로 설정되고, MVD_Ver_TH1 및 MVD_Ver_TH1은 1로 설정된다.
iii. 예를 들어, 다음과 같은 5*3 MVD 공간이 검색될 수 있고, 여기서 MVD 값들은 정수 픽셀 단위이다.
(-1,-1), (0,-1), (1,-1),
(-2, 0), (-1, 0), (0, 0), (1, 0), (2, 0),
(-1, 1), (0, 1), (1, 1),
b. 한 예에서, sumAbsHorMv + TH <= sumAbsVerMv라면, 수평 MVD 검색 범위는 수직 MVD 검색 범위보다 작을 수 있다.
i. 대안으로서, sumAbsVerMv + TH <= sumAbsHorMv라면, 수평 MVD 검색 범위는 수직 MVD 검색 범위보다 작을 수 있다.
ii. 예를 들어, MVD_Hor_TH2 및 MVD_Hor_TH1는 2로 설정되고, MVD_Ver_TH1 및 MVD_Ver_TH1은 1로 설정된다.
iii. 예를 들어, 다음과 같은 3*5 MVD 영역이 검색될 수 있고, 여기서 MVD 값들은 정수 픽셀 단위이다.
(0,-2),
(-1,-1), (0,-1), (1,-1),
(-1, 0), (0, 0), (1, 0),
(-1, 1), (0, 1), (1, 1),
(0, 2),
c. 한 예에서, sumAbsHorMv <= sumAbsVerMv + TH이고 sumAbsVerMv <= sumAbsHorMv + TH라면, 다이아몬드 MVD 영역이 검색될 수 있다.
i. 예를 들어, 다음과 같은 5*5 다이아몬드 MVD 공간이 검색될 수 있고, 여기서 MVD 값들은 정수 픽셀 단위이다.
(0,-2),
(-1,-1), (0,-1), (1,-1),
(-2, 0), (-1, 0), (0, 0), (1, 0), (2, 0),
(-1, 1), (0, 1), (1, 1),
(0, 2),
d. 한 예에서, 수평 및/또는 수직 검색 범위는 기준 픽처들에 의존할 수 있다.
i. 한 예에서, 기준 픽처들이 현재 픽처로부터 멀리 떨어져 있다면, 더 큰 검색 범위들이 이용될 수 있다.
ii. 한 예에서, 제1 기준 픽처가 제2 기준 픽처보다 낮은 QP를 갖는다면, 제1 기준 픽처에 대해 더 큰 검색 범위들이 이용될 수 있다.
e. 한 예에서, 수평 및/또는 수직 검색 범위는 모션 벡터들에 의존할 수 있다.
i. 한 예에서, 모션 벡터들의 절대값들이 크다면, 더 큰 검색 범위들이 이용될 수 있다.
27. 최상의 정수 위치가 정수 검색 영역의 경계에 있더라도 DMVR에서 서브펠 MVD가 도출될 수 있다.
a. 한 예에서, 최상의 정수 위치의 좌측 및 우측 위치들 양쪽 모두가 검색 영역에 포함된다면, 수평 서브펠 MVD는, 예를 들어 파라메트릭 오차 표면 핏팅 방법을 이용하여 도출될 수 있다. 한 예가 도 9에 도시되어 있다.
b. 한 예에서, 최상의 정수 위치의 위쪽 및 아래쪽 위치들 양쪽 모두가 검색 영역에 포함된다면, 수직 서브펠 MVD는, 예를 들어 파라메트릭 오차 표면 핏팅 방법을 이용하여 도출될 수 있다. 한 예가 도 9에 도시되어 있다.
c. 한 예에서, 서브펠 MVD는 임의의 위치에 대해 도출될 수 있다.
i. 예를 들어, 최상의 정수 위치와 그 N개의(예를 들어, N = 4) 가장 가까운 이웃 위치들의 비용은 수평 및 수직 서브펠 MVD를 도출하는데 이용될 수 있다.
ii. 예를 들어, 최상의 정수 위치와 그 N개의 가장 가까운 이웃 위치들의 비용은 수평 서브펠 MVD를 도출하는데 이용될 수 있다.
iii. 예를 들어, 최상의 정수 위치와 그 N개의 가장 가까운 이웃 위치들는 비용은 수직 서브펠 MVD를 도출하는데 이용될 수 있다.
iv. 서브펠 MVD를 도출하기 위해 파라메트릭 오차 표면 핏팅이 이용될 수 있다.
d. 대안으로서, 또한, 서브펠 MVD가 소정의 방향(예를 들어, 수평 또는/및 수직 방향)에서 도출되지 않는다면, 이것은 0과 동일하게 설정된다.
28. 픽처/슬라이스/타일 그룹/타일/CTU/CU에 대해 BDOF가 허용될 때 DMVR에서 서브펠 MVD 도출이 불허될 수 있다.
a. 대안으로서, 픽처/슬라이스/타일 그룹/타일/CTU/CU에 대해 BDOF가 불허될 때에만 서브펠 MVD 도출이 허용될 수 있다.
29. 적용될 글순서 기호는, BDOF 또는 PROF가 하나의 블록에 적용되는지 등의, 코딩된 정보에 의존할 수 있다.
실시예
삭제된 텍스트들은 이중 괄호로 마킹되고(예를 들어, [[a]]는 문자 "a" 의 삭제를 나타냄), 새로 추가된 부분들은 굵게 및 기울임꼴로 강조된다.
BDOF가 허용될 때 DMVR에서 서브펠 MVD 도출을 디스에이블하는 한 예.
8.5.3.1 일반
이 프로세스에 대한 입력들은 다음과 같다 :
- 현재 픽처의 좌측-상단 루마 샘플에 관해 현재 코딩 서브블록의 좌측-상단 샘플을 명시하는 루마 위치(xSb, ySb),
- 루마 샘플들에서 현재 코딩 서브블록의 폭을 명시하는 변수 sbWidth,
- 루마 샘플들에서 현재 코딩 서브블록의 높이를 명시하는 변수 sbHeight,
- 1/16 분수 샘플 정확도 mvL0 및 mvL1에서의 루마 모션 벡터들,
- 선택된 루마 기준 픽처 샘플 어레이들 refPicL0L 및 refPicL1L.
이 프로세스의 출력들은 다음과 같다 :
- 델타 루마 모션 벡터들 dMvL0 및 dMvL1.
변수 서브PelFlag는 0과 동일하게 설정되고 변수 srRange는 2와 동일하게 설정되며 정수 샘플 오프셋( intOffX, intOffY )은 ( 0, 0 )과 동일하게 설정된다.
델타 루마 모션 벡터들 dMvL0 및 dMvL1의 양쪽 성분들 모두는 0과 동일하게 설정되고 다음과 같이 수정된다 :
- 각각의 X가 0 또는 1이라면, 루마 위치(xSb, ySb), (sbWidth + 2 * srRange)와 동일하게 설정된 예측 블록 폭, (sbHeight + 2 * srRange)와 동일하게 설정된 예측 블록 높이, 기준 픽처 샘플 어레이 refPicLXL, 모션 벡터 mvLX 및 개선 검색 범위 srRange를 입력들로서 취하여, 8.5.3.2.1에 명시된 분수 샘플 쌍선형 보간 프로세스를 기동시킴으로써, 예측 루마 샘플 값들의 (sbWidth + 2 * srRange ) x ( sbHeight + 2 * srRange ) 어레이 predSamplesLXL이 도출된다.
- sbWidth 및 sbHeight와 동일하게 설정된 현재 코딩 서브블록의 폭 sbW 및 높이 sbH, predSamplesL0L 및 predSamplesL1L과 동일하게 설정된 예측 샘플 어레이들 pL0 및 pL1, 및 (0, 0)과 동일하게 설정된 오프셋 (dX, dY)을 입력들로서 취하고, minSad를 출력으로서 취하여, 8.5.3.3절에 명시된 절대 차이 계산 프로세스의 합을 기동시킴으로써 변수 minSad가 도출된다.
- minSad가 sbHeight * sbWidth보다 크거나 같을 때, 다음이 적용된다 :
- sbWidth 및 sbHeight와 동일하게 설정된 현재 코딩 서브블록의 폭 sbW 및 높이 sbH, predSamplesL0L 및 predSamplesL1L과 동일하게 설정된 예측 샘플 어레이들 pL0 및 pL1, 및 오프셋 (dX, dY)을 입력들로서 취하고, sadArray[ dX + 2 ][ d Y + 2 ]를 출력으로서 취하여, 8.5.3.3절에 명시된 절대 차이 계산 프로세스의 합을 기동시킴으로써 dX = -2..2이고 dY = -2..2인 2D 어레이 sadArray[ dX + 2 ][ dY + 2 ]가 도출된다.
- 정수 샘플 오프셋( intOffX, intOffY )은, dX = -2..2이고 dY = -2..2인 2차원 어레이 sadArray[ dX + 2 ][ dY + 2 ], 최상의 정수 샘플 오프셋( intOffX, intOffY ), minSad를 입력으로서 취하고 수정된 최상의 정수 샘플 오프셋( intOffX, intOffY )을 출력으로서 취하여, 8.5.3.4절에 명시된 어레이 엔트리 선택 프로세스를 기동함으로써 수정된다.
- intOffX가 -2 또는 2와 동일하지 않고 intOffY가 -2 또는 2와 동일하지 않을 때, subPelFlag는 1로 설정된다.
- 델타 루마 모션 벡터 dMvL0은 다음과 같이 수정된다 :
- subPelFlag가 1이고 bdofFlag가 0과 동일하게 설정 되면, dX = intOffX  1, intOffX, intOffX + 1이고
dY = intOffY  1, intOffY, intOffY + 1인 3x3 2D 어레이 sadArray[ dX + 2 ][ dY + 2 ] 및 델타 모션 벡터 dMvL0을 입력으로서 취하고 수정된 dMvL0을 출력으로서 취하여 8.5.3.5절에 명시된 파라메트릭 모션 벡터 개선 프로세스가 기동된다.
- 델타 모션 벡터 dMvL1은 다음과 같이 도출된다 :
DMVR에서 8각형 검색 영역의 한 예
8.5.3.1 일반
이 프로세스에 대한 입력들은 다음과 같다 :
- 현재 픽처의 좌측-상단 루마 샘플에 관해 현재 코딩 서브블록의 좌측-상단 샘플을 명시하는 루마 위치(xSb, ySb),
- 루마 샘플들에서 현재 코딩 서브블록의 폭을 명시하는 변수 sbWidth,
- 루마 샘플들에서 현재 코딩 서브블록의 높이를 명시하는 변수 sbHeight,
- 1/16 분수 샘플 정확도 mvL0 및 mvL1에서의 루마 모션 벡터들,
- 선택된 루마 기준 픽처 샘플 어레이들 refPicL0L 및 refPicL1L.
이 프로세스의 출력들은 다음과 같다 :
- 델타 루마 모션 벡터들 dMvL0 및 dMvL1.
변수 서브PelFlag는 0과 동일하게 설정되고 변수 srRange는 2와 동일하게 설정되며 정수 샘플 오프셋( intOffX, intOffY )은 ( 0, 0 )과 동일하게 설정된다.
델타 루마 모션 벡터들 dMvL0 및 dMvL1의 양쪽 성분들 모두는 0과 동일하게 설정되고 다음과 같이 수정된다 :
- 각각의 X가 0 또는 1이라면, 루마 위치(xSb, ySb), (sbWidth+2*srRange)와 동일하게 설정된 예측 블록 폭, (sbHeight+2*srRange)와 동일하게 설정된 예측 블록 높이, 기준 픽처 샘플 어레이 refPicLXL, 모션 벡터 mvLX 및 개선 검색 범위 srRange를 입력들로서 취하여, 8.5.3.2.1에 명시된 분수 샘플 쌍선형 보간 프로세스를 기동시킴으로써, 예측 루마 샘플 값들의 (sbWidth + 2 * srRange ) x ( sbHeight + 2 * srRange ) 어레이 predSamplesLXL이 도출된다.
- sbWidth 및 sbHeight와 동일하게 설정된 현재 코딩 서브블록의 폭 sbW 및 높이 sbH, predSamplesL0L 및 predSamplesL1L과 동일하게 설정된 예측 샘플 어레이들 pL0 및 pL1, 및 (0, 0)과 동일하게 설정된 오프셋 (dX, dY)을 입력들로서 취하고, minSad를 출력으로서 취하여, 8.5.3.3절에 명시된 절대 차이 계산 프로세스의 합을 기동시킴으로써 변수 minSad가 도출된다.
- minSad가 sbHeight * sbWidth보다 크거나 같을 때, 다음이 적용된다 :
- sbWidth 및 sbHeight와 동일하게 설정된 현재 코딩 서브블록의 폭 sbW 및 높이 sbH, predSamplesL0L 및 predSamplesL1L과 동일하게 설정된 예측 샘플 어레이들 pL0 및 pL1, 및 오프셋 (dX, dY)을 입력들로서 취하고, sadArray[ dX + 2 ][ d Y + 2 ]를 출력으로서 취하여, 8.5.3.3절에 명시된 절대 차이 계산 프로세스의 합을 기동시킴으로써 dX = -2..2 및 [[dY = -2..2]] dY = -1..1 또는 dX = -1..1 및 dY = -2, 2 인 2D 어레이 sadArray[ dX + 2 ][ dY + 2 ]가 도출된다.
- 정수 샘플 오프셋( intOffX, intOffY )은, dX = -2..2 및 [[dY = -2..2]] dY = -1..1 또는 dX = -1..1 및 dY = -2, 2 인 2차원 어레이 sadArray[ dX + 2 ][ dY + 2 ], 최상의 정수 샘플 오프셋( intOffX, intOffY ), minSad를 입력으로서 취하고 수정된 최상의 정수 샘플 오프셋( intOffX, intOffY )을 출력으로서 취하여, 8.5.3.4절에 명시된 어레이 엔트리 선택 프로세스를 기동함으로써 수정된다.
- intOffX가 -2 또는 2와 동일하지 않고 intOffY가 -2 또는 2와 동일하지 않을 때, subPelFlag는 1로 설정된다.
- 델타 루마 모션 벡터 dMvL0은 다음과 같이 수정된다 :
- subPelFlag가 1과 동일하면, dX = intOffX - 1, intOffX, intOffX + 1이고 dY = intOffY - 1, intOffY, intOffY + 1인 3x3 2D 어레이 sadArray[ dX + 2 ][ dY + 2 ] 및 델타 모션 벡터 dMvL0을 입력으로서 취하고 수정된 dMvL0을 출력으로서 취하여 8.5.3.5절에 명시된 파라메트릭 모션 벡터 개선 프로세스가 기동된다.
- 델타 모션 벡터 dMvL1은 다음과 같이 도출된다 :
BDOF 및 PROF에서 모션 벡터 개선을 0으로 제한하거나 Km 또는 -Km 의 형태로 제한하는 예.
JVET-O0070-CE4.2.1a-WD-r1.docx 상단에서의 제안된 변경들은 굵게 및 기울임꼴로 강조되고 삭제된 부분들은 이중 괄호로 마킹된다(예를 들어, [[a]]는 문자 "a"의 삭제를 나타냄).
8.5.1 어파인 제어 포인트 모션 벡터들로부터 모션 벡터 어레이들에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다 :
- 현재 픽처의 좌측-상단 루마 샘플에 관한 현재 루마 코딩 블록의 좌측-상단 샘플의 루마 위치(xCb, yCb),
- 루마 코딩 블록의 폭과 높이를 명시하는 2개의 변수 cbWidth 및 cbHeight,
- 제어 포인트 모션 벡터들의 수 numCpMv,
- cpIdx = 0..numCpMv - 1 및 X는 0 또는 1인, 제어 포인트 모션 벡터들 cpMvLX[ cpIdx ],
- 기준 인덱스 refIdxLX 및 X가 0 또는 1,
- 수평 방향 numSbX 및 수직 방향 numSbY의 루마 코딩 서브블록들의 수.
이 프로세스의 출력들은 다음과 같다 :
- xSbIdx = 0..numSbX - 1, ySbIdx = 0 .. numSbY - 1이고 X가 0 또는 1인 루마 서브블록 모션 벡터 어레이 mvLX[ xSbIdx ][ ySbIdx ],
- xSbIdx = 0..numSbX - 1, ySbIdx = 0 .. numSbY - 1이고 X가 0 또는 1인 크로마 서브블록 모션 벡터 어레이 mvCLX[ xSbIdx ][ ySbIdx ],
- 모션 벡터 차이 어레이 diffMv.
x = xCb..xCb + cbWidth - 1 및 y = yCb..yCb + cbHeight - 1에 대해 다음과 같은 할당이 이루어진다 :
변수들 log2CbW 및 log2CbH는 다음과 같이 도출된다 :
변수들 mvScaleHor, mvScaleVer, dHorX 및 dVerX는 다음과 같이 도출된다 :
변수들 dHorY 및 dVerY는 다음과 같이 도출된다 :
- numCpMv가 3과 같다면, 다음이 적용된다 :
- 그렇지 않으면(numCpMv가 2와 같음) 다음이 적용된다 :
변수들 sbWidth 및 sbHeight는 다음과 같이 도출된다 :
변수 fallbackModeTriggered는 1로 설정되고 다음과 같이 수정된다 :
- 변수들 bxWX4, bxHX4, bxWXh, bxHXh, bxWXv 및 bxHXv는 다음과 같이 도출된다:
- inter_pred_idc[ xCb ][ yCb ]가 PRED_BI와 같고 bxWX4 * bxHX4가 225보다 작거나 같다면, fallbackModeTriggered는 0으로 설정된다.
- 그렇지 않고, bxWXh * bxHXh 양쪽 모두가 165보다 작거나 같고 bxWXv * bxHXv가 165보다 작거나 같다면, fallbackModeTriggered는 0과 동일하게 설정된다.
xSbIdx = 0..numSbX 1 및 ySbIdx = 0..numSbY 1의 경우, 다음이 적용된다 :
- 변수들 xPosCb 및 yPosCb는 다음과 같이 도출된다
- fallbackModeTriggered가 1과 동일하다면, 다음이 적용된다 :
- 그렇지 않으면(fallbackModeTriggered가 0과 동일함), 다음이 적용된다 :
- 루마 모션 벡터 mvLX[ xSbIdx ][ ySbIdx ]는 다음과 같이 도출된다 :
- mvLX[xSbIdx][ySbIdx]와 동일하게 설정된 mvX, 7과 동일하게 설정된 rightShift, 0과 동일하게 설정된 leftShift를 입력들로서 취하고 반올림된 mvLX[ xSbIdx ][ ySbIdx ]를 출력으로서 취하여, 8.5.2.14절에 명시된 모션 벡터들에 대한 반올림 프로세스가 기동된다.
- 모션 벡터들 mvLX[ xSbIdx ][ ySbIdx ]는 다음과 같이 클리핑된다 :
xSbIdx = 0..numSbX 1 및 ySbIdx = 0..numSbY 1의 경우, 다음이 적용된다 :
- 평균 루마 모션 벡터 mvAvgLX는 다음과 같이 도출된다 :
- mvAvgLX 및 refIdxLX를 입력들로서 취하고 크로마 모션 벡터 mvCLX[ xSbIdx ][ ySbIdx ]를 출력으로서 취하여 8.5.2.13절의 크로마 모션 벡터들에 대한 도출 프로세스가 기동된다.
[Ed. (BB): 이러한 방식으로 4개의 2x2 크로마 서브블록(4x4 크로마 블록)은 2개의 4x4 루마 서브블록 모션 벡터의 평균으로부터 도출된 동일한 모션 벡터를 공유한다. 디코딩 프로세스에서 모션 보상은 여전히 2x2 크로마 블록에 관해 수행되지만 4x4 크로마 블록 내의 모든 크로마 MV가 동일하기 때문에 크로마 4x4 블록에 관한 모션 보상이다. 어파인 크로마 MC가 4x4 크로마 블록에서 수행된다는 점을 좀 더 명확히 하는 편집 상의 변경을 원한다]
모션 벡터 차이 어레이 diffMv는 다음과 같이 도출된다 :
- fallbackModeTriggered가 0과 동일하다면, 다음이 적용된다 :
- 변수 shift1은 Max(6, bitDepth-6)와 동일하게 설정된다.
- 변수 dmvLimit는 1 << shift1과 동일하게 설정된다.
- 변수 posOffsetX 및 posOffsetY는 다음과 같이 도출된다 :
posOffsetX = 6 * dHorX + 6 * dVerX
posOffsetY = 6 * dHorY + 6 * dVerY
- x = 0..sbWidth - 1 및 y = 0..sbHeight - 1의 경우, 다음이 적용된다 :
- 다음이 적용된다:
diffMv[ x ][ y ][ 0 ] = x * ( dHorX << 2 ) + y * ( dVerX << 2 ) - posOffsetX
diffMv[ x ][ y ][ 1 ] = x * ( dHorY << 2 ) + y * ( dVerY << 2 ) - posOffsetY
- i = 0..1의 경우, 다음이 적용된다 :
- diffMv[ x ][ y ][ i ]와 동일하게 설정된 mvX, 7과 동일하게 설정된 rightShift, 0과 동일하게 설정된 leftShift를 입력들로서 취하고 반올림된 diffMv를 출력으로서 취하여, 8.5.2.14절에 명시된 모션 벡터들에 대한 반올림 프로세스가 기동된다.
- diffMv[ x ][ y ][ i ]는 다음과 같이 클리핑된다:
- diffMv[ x ][ y ][ i ]는, 각각 diffMv[ x ][ y ][ i ]와 동일하게 설정된 분자 및 1과 동일하게 설정된 분모를 이용하여 8.5.6.5절에 명시된 모션 벡터 개선 도출 프로세스를 기동시킴으로써 도출된다.
- 그렇지 않으면(fallbackModeTriggered가 1과 동일함), x = 0..sbWidth - 1 및 y = 0..sbHeight - 1에 대해, 다음이 적용된다 :
diffMv[ x ][ y ][ 0 ] = 0
diffMv[ x ][ y ][ 1 ] = 0
8.5.6 인터 블록들에 대한 디코딩 프로세스
8.5.6.4 양방향 광학적 흐름 예측 프로세스
이 프로세스에 대한 입력들은 다음과 같다 :
- 현재 코딩 블록의 폭과 높이를 명시하는 2개의 변수 nCbW 및 nCbH,
-2개의 (nCbW + 2)x(nCbH + 2) 루마 예측 샘플 어레이들 predSamplesL0 및 predSamplesL1,
- 예측 목록 이용 플래그들 predFlagL0 및 predFlagL1,
- 기준 인덱스들 refIdxL0 및 refIdxL1,
- 양방향 광학적 흐름 이용 플래그들 bdofUtilizationFlag[ xIdx ][ yIdx ], 여기서 xIdx = 0..(nCbW >> 2 ) - 1, yIdx = 0..( nCbH >> 2 ) - 1.
이 프로세스의 출력은 루마 예측 샘플 값들의 (nCbW)x(nCbH) 어레이 pbSamples이다.
변수들 bitDepth, shift1, shift2, shift3, shift4, offset4 및 mvRefineThres는 다음과 같이 도출된다:
- 변수 bitDepth는 BitDepthY와 동일하게 설정된다.
- 변수 shift1은 Max( 6, bitDepth - 6 )와 동일하게 설정된다.
- 변수 shift2는 Max( 4, bitDepth - 8 )와 동일하게 설정된다.
- 변수 shift3은 Max( 1, bitDepth - 11 )와 동일하게 설정된다.
- 변수 shift4는 Max( 3, 15 - bitDepth )와 동일하게 설정되고 변수 offset4는 1 << ( shift4 - 1 )과 동일하게 설정된다.
- 변수 mvRefineThres는 1 << Max( 5, bitDepth - 7 )와 동일하게 설정된다.
xIdx = 0..( nCbW >> 2 ) - 1 및 yIdx = 0..( nCbH >> 2 ) - 1에 대해, 다음이 적용된다 :
- 변수 xSb는 ( xIdx << 2) + 1과 동일하게 설정되고 ySb는 ( yIdx << 2 ) + 1과 동일하게 설정된다.
-bdofUtilizationFlag[ xIdx ][ yIdx ]가 FALSE와 같다면, x = xSb-1..xSb + 2, y = ySb - 1.. ySb + 2에 대해, 현재 서브블록의 예측 샘플 값들은 다음과 같이 도출된다 :
- 그렇지 않다면(bdofUtilizationFlag[ xIdx ][ yIdx ]가 TRUE와 같음), 현재 서브블록의 예측 샘플 값들은 다음과 같이 도출된다 :
- x =xSb - 1..xSb + 4, y = ySb - 1..ySb + 4에 대해, 다음과 같은 순서화된 단계들이 적용된다 :
1. 예측 샘플 어레이들 내부의 대응하는 샘플 위치 (x, y) 각각에 대한 위치들(hx, vy)은 다음과 같이 도출된다 :
2. 변수들 gradientHL0[ x ][ y ], gradientVL0[ x ][ y ], gradientHL1[ x ][ y ] 및 gradientVL1[ x ][ y ]는 다음과 같이 도출된다 :
3. 변수들 diff[ x ][ y ], tempH[ x ][ y ] 및 tempV[ x ][ y ]는 다음과 같이 도출된다 :
- 변수들 sGx2, sGy2, sGxGy, sGxdI 및 sGydI는 다음과 같이 도출된다 :
- 현재 서브블록의 수평 및 수직 모션 오프셋은 다음과 같이 도출된다 :
1. sGx2가 0보다 크다면, v x 는, 각각 -(sGxdI << 3)와 동일하게 설정된 분자 및 sGx2와 동일하게 설정된 분모를 이용하여 8.5.6.5절에 명시된 모션 벡터 개선 도출 프로세스를 기동함으로써 도출된다. 그 다음, v x 는 다음과 같이 클리핑된다.
2. 그렇지 않으면(sGx2는 0과 동일), v x 는 0으로 설정된다.
3. sGy2가 0보다 크다면, v y 는, ((sGydI << 3) -((vx * sGxGym) << 12 + vx * sGxGys ) >> 1)와 동일하게 설정된 분자 및 sGy2와 동일하게 설정된 분모를 이용하여 8.5.6.5절에 명시된 모션 벡터 개선 도출 프로세스를 기동함으로써 도출된다. 그 다음, v y 는 다음과 같이 클리핑된다.
4. 그렇지 않다면, v y 는 0과 동일하게 설정된다.
- x =xSb - 1..xSb + 2, y = ySb - 1..ySb + 2에 대해, 현재 서브블록의 예측 샘플 값들은 다음과 같이 도출된다 :
[Ed. (JC): float 입력에 대해 Round() 동작이 정의된다. 입력이 정수 값이기 때문에 Round() 동작은 여기에서 중복적인 것처럼 보인다. 제안자에 의해 확인 예정]
8.5.6.5 모션 벡터 개선 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다 :
- 분자를 명시하는 변수 numer
- 분모를 명시하는 변수 denom.
이 프로세스의 출력은 도출된 모션 벡터 개선 dMvf이다.
shiftNum이 뷴자와 동일하게 설정 = = 0 ? 0 : floor(log2(Abs(numer))).
shiftDenom이 분모와 동일화게 설정 = = 0 ? 0 : floor(log2(Abs(denom))).
-If Abs(numer)가 Abs(denom)보다 작다면, dMvf 0과 동일하게 설정된다.
-그렇지 않다면, dMvf 는 Sign(numer) * (1 << (ShiftNum - shiftDenom))과 동일하게 설정된다.
BDOF 및 PROF에서 MVD를 [-31, 31]로 클리핑하는 한 예가 설명된다.
JVET-O2001-vE.docx 상단의 제안된 변경들은 굵게 및 기울임꼴로 강조되고 삭제된 텍스트들은 이중 괄호로 마킹된다(예를 들어, [[a]]는 문자 "a"의 삭제를 나타냄).
8.5.5.9 어파인 제어 포인트 모션 벡터들로부터 모션 벡터 어레이들에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다 :
- 현재 픽처의 좌측-상단 루마 샘플에 관한 현재 루마 코딩 블록의 좌측-상단 샘플의 루마 위치(xCb, yCb),
- 루마 코딩 블록의 폭과 높이를 명시하는 2개의 변수 cbWidth 및 cbHeight,
- 제어 포인트 모션 벡터들의 수 numCpMv,
- cpIdx = 0..numCpMv - 1 및 X는 0 또는 1인, 제어 포인트 모션 벡터들 cpMvLX[ cpIdx ],
- 기준 인덱스 refIdxLX 및 X가 0 또는 1,
- 수평 방향 numSbX 및 수직 방향 numSbY의 루마 코딩 서브블록들의 수.
이 프로세스의 출력들은 다음과 같다 :
- xSbIdx = 0..numSbX - 1, ySbIdx = 0 .. numSbY - 1이고 X가 0 또는 1인 루마 서브블록 모션 벡터 어레이 mvLX[ xSbIdx ][ ySbIdx ],
- xSbIdx = 0..numSbX - 1, ySbIdx = 0 .. numSbY - 1이고 X가 0 또는 1인 크로마 서브블록 모션 벡터 어레이 mvCLX[ xSbIdx ][ ySbIdx ],
- 예측 개선 이용 플래그 cbProfFlagLX 및 X는 0 또는 1,
- xIdx = 0..cbWidth/numSbX - 1, yIdx = 0..cbHeight/numSbY - 1이고 X는 0 또는 1인, 모션 벡터 차이 어레이 diffMvLX[ xIdx ][ yIdx ].
변수 cbProfFlagLX는 다음과 같이 도출된다 :
- 다음과 같은 조건들 중 하나 이상이 참이면, cbProfFlagLX는 FALSE와 동일하게 설정된다.
- sps_어파인_prof_enabled_flag는 0과 동일하다.
- fallbackModeTriggered는 1과 동일하다.
- numCpMv는 2와 동일하고 cpMvLX[ 1 ][ 0 ]는 cpMvLX[ 0 ][ 0 ]과 동일하고 cpMvLX[ 1 ][ 1 ] 는 cpMvLX[ 0 ][ 1 ]과 동일하다.
- numCpMv는 3과 동일하고 cpMvLX[ 1 ][ 0 ] 는 cpMvLX[ 0 ][ 0 ]과 동일하고 cpMvLX[ 1 ][ 1 ] 는 cpMvLX[ 0 ][ 1 ]과 동일하고, cpMvLX[ 2 ][ 0 ]는 cpMvLX[ 0 ][ 0 ]과 동일하고, cpMvLX[ 2 ][ 1 ]는 cpMvLX[ 0 ][ 1 ]과 동일하다.
- 그렇지 않으면, cbProfFlagLX가 TRUE와 동일하게 설정된다.
cbProfFlagLX가 1일 때, 모션 벡터 차이 어레이 diffMv는 다음과 같이 도출된다 :
- 변수들 sbWidth 및 sbHeight, dmvLimit, posOffsetX 및 posOffsetY는 다음과 같이 도출된다 :
- x = 0..sbWidth - 1 및 y = 0..sbHeight - 1에 대해, 다음이 적용된다 :
- i= 0..1에 대해, 다음이 적용된다 :
- diffMv[ x ][ y ][ i ]와 동일하게 설정된 mvX, 7과 동일하게 설정된 rightShift, 0과 동일하게 설정된 leftShift를 입력들로서 취하고 반올림된 diffMv[ x ][ y ][ i ]를 출력으로서 취하여, 8.5.2.14절에 명시된 모션 벡터들에 대한 반올림 프로세스가 기동된다.
- diffMv[ x ][ y ][ i ]의 값은 다음과 같이 클리핑된다:
8.5.6.5 양방향 광학적 흐름 예측 프로세스
이 프로세스에 대한 입력들은 다음과 같다 :
- 현재 코딩 블록의 폭과 높이를 명시하는 2개의 변수 nCbW 및 nCbH,
-2개의 (nCbW + 2)x(nCbH + 2) 루마 예측 샘플 어레이들 predSamplesL0 및 predSamplesL1,
- 예측 목록 이용 플래그들 predFlagL0 및 predFlagL1,
- 기준 인덱스들 refIdxL0 및 refIdxL1,
- xIdx = 0..(nCbW >> 2 ) - 1, yIdx = 0..( nCbH >> 2 ) - 1인, 양방향 광학적 흐름 이용 플래그들 bdofUtilizationFlag[ xIdx ][ yIdx ].
이 프로세스의 출력은 루마 예측 샘플 값들의 (nCbW)x(nCbH) 어레이 pbSamples이다.
변수들 bitDepth, shift1, shift2, shift3, shift4, offset4 및 mvRefineThres는 다음과 같이 도출된다:
- 변수 bitDepth는 BitDepthY와 동일하게 설정된다.
- 변수 shift1은 Max( 6, bitDepth - 6 )와 동일하게 설정된다.
- 변수 shift2는 Max( 4, bitDepth - 8 )와 동일하게 설정된다.
- 변수 shift3은 Max( 1, bitDepth - 11 )와 동일하게 설정된다.
- 변수 shift4는 Max( 3, 15 - bitDepth )와 동일하게 설정되고 변수 offset4는 1 << ( shift4 - 1 )과 동일하게 설정된다.
- 변수 mvRefineThres는 [[ 1 << Max( 5, bitDepth - 7 )]] ( 1 << Max( 5, bitDepth - 7 ) ) - 1 과 동일하게 설정된다.
xIdx = 0..( nCbW >> 2 ) - 1 및 yIdx = 0..( nCbH >> 2 ) - 1에 대해, 다음이 적용된다 :
- 변수 xSb는 ( xIdx << 2) + 1과 동일하게 설정되고 ySb는 ( yIdx << 2 ) + 1과 동일하게 설정된다.
-bdofUtilizationFlag[ xIdx ][ yIdx ]가 FALSE와 같다면, x = xSb - 1..xSb + 2, y = ySb - 1.. ySb + 2에 대해, 현재 서브블록의 예측 샘플 값들은 다음과 같이 도출된다 :
- 그렇지 않다면(bdofUtilizationFlag[ xIdx ][ yIdx ]가 TRUE와 같음), 현재 서브블록의 예측 샘플 값들은 다음과 같이 도출된다 :
- x = xSb - 1..xSb + 4, y = ySb - 1..ySb + 4에 대해, 다음과 같은 순서화된 단계들이 적용된다 :
1. 예측 샘플 어레이들 내부의 대응하는 샘플 위치 (x, y) 각각에 대한 위치들(hx, vy)은 다음과 같이 도출된다 :
2. 변수들 gradientHL0[ x ][ y ], gradientVL0[ x ][ y ], gradientHL1[ x ][ y ] 및 gradientVL1[ x ][ y ]는 다음과 같이 도출된다 :
3. 변수들 diff[ x ][ y ], tempH[ x ][ y ] 및 tempV[ x ][ y ]는 다음과 같이 도출된다 :
- 변수들 sGx2, sGy2, sGxGy, sGxdI 및 sGydI는 다음과 같이 도출된다 :
- 현재 서브블록의 수평 및 수직 모션 오프셋은 다음과 같이 도출된다 :
- x =xSb - 1..xSb + 2, y = ySb - 1..ySb + 2에 대해, 현재 서브블록의 예측 샘플 값들은 다음과 같이 도출된다 :
PROF에서 상위 W * H/2 부분의 MVD로부터 하위 W * H/2 부분의 MVD를 도출하는 한 예.
JVET-O2001-vE.docx 상단의 제안된 변경들은 굵게 및 기울임꼴로 강조되고 삭제된 부분들은 이중 괄호로 마킹된다(예를 들어, [[a]]는 문자 "a"의 삭제를 나타냄).
8.5.5.9 어파인 제어 포인트 모션 벡터들로부터 모션 벡터 어레이들에 대한 도출 프로세스
이 프로세스에 대한 입력들은 다음과 같다 :
- 현재 픽처의 좌측-상단 루마 샘플에 관한 현재 루마 코딩 블록의 좌측-상단 샘플의 루마 위치(xCb, yCb),
- 루마 코딩 블록의 폭과 높이를 명시하는 2개의 변수 cbWidth 및 cbHeight,
- 제어 포인트 모션 벡터들의 수 numCpMv,
- cpIdx = 0..numCpMv-1 및 X는 0 또는 1인, 제어 포인트 모션 벡터들 cpMvLX[ cpIdx ],
- 기준 인덱스 refIdxLX 및 X가 0 또는 1,
- 수평 방향 numSbX 및 수직 방향 numSbY의 루마 코딩 서브블록들의 수.
이 프로세스의 출력들은 다음과 같다 :
- xSbIdx = 0..numSbX - 1, ySbIdx = 0 .. numSbY - 1이고 X가 0 또는 1인 루마 서브블록 모션 벡터 어레이 mvLX[ xSbIdx ][ ySbIdx ],
- xSbIdx = 0..numSbX - 1, ySbIdx = 0 .. numSbY - 1이고 X가 0 또는 1인 크로마 서브블록 모션 벡터 어레이 mvCLX[ xSbIdx ][ ySbIdx ],
- 예측 개선 이용 플래그 cbProfFlagLX 및 X는 0 또는 1,
- xIdx = 0..cbWidth/numSbX - 1, yIdx = 0..cbHeight/numSbY - 1이고 X는 0 또는 1인, 모션 벡터 차이 어레이 diffMvLX[ xIdx ][ yIdx ].
변수 cbProfFlagLX는 다음과 같이 도출된다 :
- 다음과 같은 조건들 중 하나 이상이 참이면, cbProfFlagLX는 FALSE와 동일하게 설정된다.
- sps_어파인_prof_enabled_flag는 0과 동일하다.
- fallbackModeTriggered는 1과 동일하다.
- numCpMv는 2와 동일하고 cpMvLX[ 1 ][ 0 ]는 cpMvLX[ 0 ][ 0 ]과 동일하고 cpMvLX[ 1 ][ 1 ] 는 cpMvLX[ 0 ][ 1 ]과 동일하다.
- numCpMv는 3과 동일하고 cpMvLX[ 1 ][ 0 ] 는 cpMvLX[ 0 ][ 0 ]과 동일하고 cpMvLX[ 1 ][ 1 ] 는 cpMvLX[ 0 ][ 1 ]과 동일하고, cpMvLX[ 2 ][ 0 ]는 cpMvLX[ 0 ][ 0 ]과 동일하고, cpMvLX[ 2 ][ 1 ]는 cpMvLX[ 0 ][ 1 ]과 동일하다.
- 그렇지 않으면, cbProfFlagLX가 TRUE와 동일하게 설정된다.
cbProfFlagLX가 1일 때, 모션 벡터 차이 어레이 diffMv는 다음과 같이 도출된다 :
- 변수들 sbWidth 및 sbHeight, dmvLimit, posOffsetX 및 posOffsetY는 다음과 같이 도출된다 :
[[ x = 0..sbWidth-1 및 y = 0..sbHeight- 1에 대해, 다음이 적용된다 :]]
- x = 0..sbWidth- 1 및 y = 0..sbHeight/2 - 1에 대해, 다음이 적용된다:
- i= 0..1에 대해, 다음이 적용된다 :
- diffMv[ x ][ y ][ i ]와 동일하게 설정된 mvX, 7과 동일하게 설정된 rightShift, 0과 동일하게 설정된 leftShift를 입력들로서 취하고 반올림된 diffMv[ x ][ y ][ i ]를 출력으로서 취하여, 8.5.2.14절에 명시된 모션 벡터들에 대한 반올림 프로세스가 기동된다.
- diffMv[ x ][ y ][ i ]의 값은 다음과 같이 클리핑된다:
- x = 0..sbWidth - 1 및 y = sbHeight/2..sbHeight - 1 에 대해, 다음이 적용된다 :
- i = 0..1에 대해, 다음이 적용된다 :
도 12a는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 12a를 참조하면, 방법(1210)은, 단계 1212에서, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 현재 비디오 블록의 모션 정보가, 현재 비디오 블록 내의 한 영역에 대해 적어도 하나의 모션 벡터 오프셋이 도출되는 광학적 흐름 기반의 방법을 이용하여 개선된다고 결정하는 단계를 포함한다. 방법(1210)은, 단계 1214에서, 적어도 하나의 모션 벡터 오프셋을 범위 [-N, M]으로 클리핑하는 단계를 더 포함하고, 여기서 N 및 M은 규칙에 기초한 정수들이다. 방법(1210)은, 단계 1216에서, 적어도 하나의 클리핑된 모션 벡터 오프셋에 기초하여 변환을 수행하는 단계를 더 포함한다.
도 12b는 비디오 처리를 위한 예시적인 방법의 플로차트를 도시한다. 도 12b를 참조하면, 방법(1220)은, 단계 1222에서, 모션 정보를 개선하는데 이용되는 디코더측 모션 벡터 개선(DMVR) 동작 동안, 개선된 모션 벡터로서, 비디오의 현재 비디오 블록과 연관된 하나 이상의 모션 벡터 차이를 이용하여 유사성 정합 함수를 적용한 결과와 동일한 모션 정보를 선택하는 단계를 포함한다. 방법(1220)은, 단계 1224에서, 개선된 모션 벡터를 이용하여 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 더 포함한다.
도 12c는 비디오 처리를 위한 예시적인 방법의 플로차트를 도시한다. 도 12c를 참조하면, 방법(1230)은, 단계 1232에서, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 현재 비디오 블록과 연관된 모션 정보를 도출하는 단계를 포함한다. 방법(1230)은, 단계 1234에서, 규칙에 따라 제1 서브영역 및 제2 서브영역을 포함하는 현재 비디오 블록에 개선 동작을 적용하되, 규칙이 제1 서브영역 및 제2 서브영역이 개선 동작으로 인해 서로 상이한 모션 정보를 갖는 것을 허용하도록 개선 동작을 적용하는 단계를 더 포함한다. 방법(1230)은, 단계 1236에서, 현재 비디오 블록의 개선된 모션 정보를 이용하여 변환을 수행하는 단계를 더 포함한다.
도 12d는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 12d를 참조하면, 방법(1240)은, 단계 1242에서, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 현재 비디오 블록과 연관된 모션 정보를 도출하는 단계를 포함한다. 방법(1240)은, 단계 1244에서, 현재 비디오 블록의 서브영역에 대해, 모션 정보를 개선하는데 이용되는 디코더측 모션 벡터 개선(DMVR)의 출력에 기초하여 양방향 광학적 흐름(BIO)을 이용하는 개선 동작의 적용가능성을 결정하는 단계를 더 포함한다. 방법(1240)은, 단계 1246에서, 결정에 기초하여 변환을 수행하는 단계를 더 포함한다.
도 12e는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 12e를 참조하면, 방법(1250)은, 단계 1252에서, 2개의 모션 후보자 사이의 거리를 명시하는 거리 테이블을 포함하는 모션 벡터 표현을 포함하는 모션 벡터 차이(MMVD)를 이용한 병합 모드로 코딩된 현재 비디오 블록과 연관된 모션 정보를 도출하는 단계를 포함한다. 방법(1250)은, 단계 1254에서, MMVD에 대해 이용된 거리를 개선하는 방법을 명시하는 규칙에 따라 모션 정보를 개선하기 위해 현재 비디오 블록에 디코더측 모션 벡터 개선(DMVR)을 적용하는 단계를 더 포함한다. 방법(1250)은, 단계 1256에서, 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 더 포함한다.
도 12f는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 12f를 참조하면, 방법(1260)은, 단계 1262에서, 현재 비디오 블록의 샘플 또는 서브블록에 대해, 도출된 모션 정보에 기초하여 규칙에 따라, 공간적 및/또는 시간적 구배를 이용하여 도출된 모션 정보가 개선되는 양방향 광학적 흐름(BDOF)의 적용가능성을 결정하는 단계를 포함한다. 방법(1260)은, 단계 1264에서, 결정에 기초하여 변환을 수행하는 단계를 더 포함한다.
도 13a는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 13a를 참조하면, 방법(1310)은, 단계 1311에서, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 모션 벡터 차이(MVD)를 도출하는 단계를 포함한다. 방법(1310)은, 단계 1312에서, 클리핑된 모션 벡터 차이를 생성하기 위해 도출된 모션 벡터 차이에 클리핑 동작을 적용하는 단계를 더 포함한다. 방법(1310)은, 단계 1313에서, 비용 함수를 이용하여 클리핑된 모션 벡터 차이의 비용을 계산하는 단계를 더 포함한다. 방법(1310)은, 단계 1314에서, 도출된 모션 벡터 차이, 클리핑된 모션 벡터 차이, 또는 비용 중 적어도 하나에 기초하여 규칙에 따라, 공간적 및/또는 시간적 구배를 이용하여 도출 모션 벡터 차이가 개선되는 양방향 광학적 흐름(BDOF) 동작을 불허하기로 결정하는 단계를 더 포함한다. 방법(1310)은, 단계 1315에서, 결정에 기초하여 변환을 수행하는 단계를 더 포함한다.
도 13b는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 13b를 참조하면, 방법(1320)은, 단계 1322에서, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해 모션 벡터 차이를 도출하는 단계를 포함한다. 방법(1320)은, 단계 1324에서, 하나 이상의 모션 벡터 개선 툴 및 후보 모션 벡터 차이(MVD)들에 기초하여 도출된 모션 벡터 차이를 개선하는 단계를 더 포함한다. 방법(1320)은, 단계 1326에서, 개선된 모션 벡터 차이를 이용하여 변환을 수행하는 단계를 더 포함한다.
도 13c는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 13c를 참조하면, 방법(1330)은, 단계 1332에서, 현재 비디오 블록과 연관된 도출된 모션 벡터 차이를 후보 세트로 제한하는 단계를 포함하고, 도출된 모션 벡터 차이는 현재 비디오 블록과 연관된 모션 정보를 개선하는 개선 동작에 이용된다. 방법(1330)은, 단계 1334에서, 제한의 결과로서 도출된 모션 벡터 차이를 이용하여 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 더 포함한다.
도 13d는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 13d를 참조하면, 이 방법(1340)은, 단계 1342에서, 비디오의 비디오 유닛의 현재 비디오 블록과 연관된 모션 정보를 개선하는데 이용되는 양방향 광학적 흐름(BDOF) 동작 동안, 비디오 유닛 및/또는 비디오 유닛에서의 코딩 툴의 이용에 기초하여 규칙에 따라 결정되는 클리핑 파라미터 세트를 이용하여 클리핑 동작을 적용하는 단계를 포함한다. 방법(1340)은, 단계 1344에서, 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 더 포함한다.
도 13e는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 13e를 참조하면, 방법(1350)은, 단계 1352에서, 비디오의 현재 비디오 블록과 연관된 모션 정보를 개선하는데 이용되는 개선 동작 동안, 모션 벡터 차이 (vx, vy)의 x 성분 및/또는 y 성분을 클리핑하기 위해 규칙에 따라 클리핑 동작을 적용하는 단계를 포함한다. 방법(1350)은, 단계 1354에서, 모션 벡터 차이를 이용하여 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 더 포함한다. 일부 구현에서, 규칙은 클리핑 동작 전 또는 후에 모션 벡터 차이를 0 또는 K-m 형태의 값으로 변환할 것을 명시하며, 여기서 m은 정수이다.
도 13f는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 13f를 참조하면, 방법(1360)은, 단계 1362에서, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 따라 디코더측 모션 도출 동작 또는 디코더측 모션 개선 동작 동안 모션 정보를 도출하거나 개선하는데 이용되는 검색 영역을 선택하는 단계를 포함한다. 방법(1360)은, 단계 1364에서, 도출되거나 개선된 모션 정보에 기초하여 변환을 수행하는 단계를 더 포함한다.
도 14a는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 14a를 참조하면, 방법(1410)은, 단계 1412에서, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 최상 정합 정수 위치를 포함하는 개선에 이용된 검색 영역을 이용함으로써 현재 비디오 블록과 연관된 모션 벡터 차이를 개선하는 디코더측 모션 벡터 차이(DMVR) 동작을 적용하는 단계를 포함한다. 방법(1410)은, 단계 1414에서 개선된 모션 벡터 차이를 이용하여 변환을 수행하는 단계를 더 포함하고, 여기서 DMVR 동작의 적용은 규칙에 따라 서브펠 모션 벡터 차이(MVD)를 도출하는 단계를 포함한다.
도 14b는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 14b를 참조하면, 방법(1420)은, 단계 1422에서, 비디오의 비디오 유닛의 현재 비디오 블록에 대해, 현재 비디오 블록과 연관된 모션 벡터 차이를 개선하는 디코더측 모션 벡터 차이(DMVR) 동작을 적용하는 단계를 포함한다. 방법(1420)은, 단계 1424에서, 개선된 모션 벡터 차이를 이용하여 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 더 포함한다. 일부 구현에서, DMVR 동작의 적용은, 비디오 유닛에 대한 양방향 광학적 흐름(BDOF)의 이용에 따라 서브펠 모션 벡터 차이(MVD) 도출을 허용하거나 불허기로 결정하는 단계를 포함한다.
도 14c는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 14c를 참조하면, 방법(1430)은, 단계 1432에서, 광학적 흐름을 이용한 개선 동작 동안, 비디오의 현재 비디오 블록의 제1 샘플의 모션 벡터 차이를 도출하는 단계를 포함한다. 방법(1430)은, 단계 1434에서, 제1 샘플의 도출된 모션 벡터 차이에 기초하여 제2 샘플의 모션 벡터 차이를 결정하는 단계를 더 포함한다. 방법(1430)은, 단계 1436에서, 결정에 기초하여 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 더 포함한다.
도 14d는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 14d를 참조하면, 방법(1440)은, 단계 1442에서, 양방향 광학적 흐름(BDOF) 동작을 이용한 개선 동작을 비디오의 현재 비디오 블록에 적용함으로써 예측 개선 샘플을 도출하는 단계를 포함한다. 방법(1440)은, 단계 144에서, 규칙에 따라, 도출된 예측 개선 샘플을 미리결정된 범위 [-M, N]로 클리핑하는 클리핑 동작의 적용가능성을 결정하는 단계를 더 포함하고, 여기서 M 및 N은 정수들이다. 방법(1440)은, 단계 1446에서, 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 더 포함한다.
도 14e는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 14e를 참조하면, 방법(1450)은, 단계 1452에서, 상이한 잔차 코딩 모드들을 이용하여 코딩되는 제1 코딩 그룹의 크기 및 제2 코딩 그룹을 포함하는 현재 비디오 블록에 대한 코딩 그룹 크기들을 결정하되, 제1 코딩 그룹 및 제2 코딩 그룹의 크기들이 규칙에 따라 정렬되도록 코딩 그룹 크기들을 결정하는 단계를 포함한다. 방법(1450)은, 단계 1454에서, 결정에 기초하여 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 더 포함한다.
도 14f는 비디오 처리를 위한 한 예시적인 방법의 플로차트를 도시한다. 도 14f를 참조하면, 방법(1460)은, 단계 1462에서, 비디오의 현재 비디오 블록과 비디오의 코딩된 표현 사이의 변환을 위해, 현재 비디오 블록과 연관된 코딩된 정보 및/또는 디코딩된 정보에 기초하여, 광학적 흐름을 이용하여 모션 정보가 개선되는 예측 개선 광학적 흐름(PROF) 툴의 적용가능성을 결정하는 단계를 포함한다. 방법(1460)은, 단계 1464에서, 결정에 기초하여 변환을 수행하는 단계를 더 포함한다.
도 15는 비디오 처리 장치(1500)의 블록도이다. 장치(1500)는 여기서 설명된 방법들 중 하나 이상을 구현하는데 이용될 수 있다. 장치(1500)는, 스마트폰, 태블릿, 컴퓨터, 사물 인터넷(IoT) 수신기 등으로 구현될 수 있다. 장치(1500)는, 하나 이상의 프로세서(1502), 하나 이상의 메모리(1504) 및 비디오 처리 하드웨어(1506)를 포함할 수 있다. 프로세서(들)(1502)은, (도 12a 내지 도 14f에 도시된 방법들을 포함한 그러나 이것으로 제한되지 않는) 본 문서에 설명된 하나 이상의 방법을 구현하도록 구성될 수 있다. 메모리(메모리들)(1504)는 여기서 설명된 방법들 및 기술들을 구현하는데 이용되는 데이터 및 코드를 저장하는데 이용될 수 있다. 비디오 처리 하드웨어(1506)는 본 문서에 설명된 일부 기술을 하드웨어 회로로 구현하는데 이용될 수 있다.
도 16은 개시된 기술들이 구현될 수 있는 비디오 처리 시스템의 블록도의 또 다른 예이다. 도 16은 여기서 개시된 다양한 기술들이 구현될 수 있는 한 예시적인 비디오 처리 시스템(1610)을 보여주는 블록도이다. 다양한 구현은 시스템(1610)의 컴포넌트들 중 일부 또는 전부를 포함할 수 있다. 시스템(1610)은 비디오 콘텐츠를 수신하기 위한 입력(1612)을 포함할 수 있다. 비디오 콘텐츠는, 원시 또는 압축되지 않은 포멧, 예를 들어 8 또는 10비트 다중 컴포넌트 픽셀 값들로 수신될 수 있거나, 압축되거나 인코딩된 포멧일 수 있다. 입력(1612)은, 네트워크 인터페이스, 주변 버스 인터페이스, 또는 저장 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예는, Ethernet, 수동 광 네트워크(PON; passive optical network) 등의 유선 인터페이스들, 및 Wi-Fi 또는 셀룰러 인터페이스들 등의 무선 인터페이스들을 포함한다.
시스템(1610)은, 본 문서에서 설명된 다양한 코딩 또는 인코딩 방법들을 구현할 수 있는 코딩 컴포넌트(1614)를 포함할 수 있다. 코딩 컴포넌트(1614)는, 비디오의 코딩된 표현을 생성하기 위해 입력(1612)으로부터 코딩 컴포넌트(1614)의 출력으로 비디오의 평균 비트레이트를 감소시킬 수 있다. 따라서 코딩 기술들은, 때때로, 비디오 압축 또는 비디오 트랜스코딩 기술들이라고도 한다. 코딩 컴포넌트(1614)의 출력은, 컴포넌트(1616)에 의해 표현되는 바와 같이, 접속된 통신을 통해 저장되거나 전송될 수 있다. 입력(1612)에서 수신된 비디오의 저장되거나 전달된 비트스트림(또는 코딩된) 표현은, 디스플레이 인터페이스(1620)로 전송되는 픽셀 값들 또는 디스플레이가능한 비디오를 생성하기 위해 컴포넌트(1618)에 의해 이용될 수 있다. 비트스트림 표현으로부터 사용자가 볼 수 있는 비디오를 생성하는 프로세스는 때때로 비디오 압축해제라고도 불린다. 더욱이, 소정의 비디오 처리 동작들은 "코딩" 동작들 또는 툴들이라고 지칭되지만, 코딩 툴들 또는 동작들은 인코더에서 이용되고, 코딩의 결과들을 역전시키는 대응하는 디코딩 툴들 또는 동작들은 디코더에 의해 수행될 것이라는 것을 이해할 것이다.
주변기기 버스 인터페이스 또는 디스플레이 인터페이스의 예들은, USB(Universal Serial Bus) 또는 HDMI(High Definition Multimedia Interface) 또는 Displayport 등을 포함할 수 있다. 저장 인터페이스들의 예들은, SATA(Serial Advanced Technology Attachment), PCI, IDE 인터페이스 등을 포함한다. 본 문서에서 설명된 기술들은, 디지털 데이터 처리 및/또는 비디오 디스플레이를 수행할 수 있는 모바일 전화들, 랩탑들, 스마트폰들, 또는 기타의 디바이스들 등의 다양한 전자 디바이스에 구현될 수 있다.
개시된 기술의 일부 실시예는, 비디오 처리 툴 또는 모드를 가능케하기 위한 결정 또는 판정을 내리는 것을 포함한다. 한 예에서, 비디오 처리 툴 또는 모드가 인에이블되면, 인코더는 비디오 블록의 처리에서 툴 또는 모드를 이용하거나 구현하지만, 툴 또는 모드의 이용에 기초하여 결과 비트스트림을 반드시 수정할 필요는 없다. 즉, 비디오 블록으로부터 비디오의 비트스트림 표현으로의 변환은, 결정 또는 판정에 기초하여 인에이블될 때 비디오 처리 툴 또는 모드를 이용할 것이다. 또 다른 예에서, 비디오 처리 툴 또는 모드가 인에이블될 때, 디코더는 비디오 처리 툴 또는 모드에 기초하여 비트스트림이 수정되었다는 것을 알고 비트스트림을 처리할 것이다. 즉, 비디오의 비트스트림 표현으로부터 비디오 블록으로의 변환은, 결정 또는 판정에 기초하여 인에이블된 비디오 처리 툴 또는 모드를 이용하여 수행될 것이다.
개시된 기술의 일부 실시예는, 비디오 처리 툴 또는 모드를 디스에이블하기 위한 결정 또는 판정을 내리는 것을 포함한다. 한 예에서, 비디오 처리 툴 또는 모드가 디스에이블되면, 인코더는 비디오 블록을 비디오의 비트스트림 표현으로 변환하는데 있어서 툴 또는 모드를 이용하지 않을 것이다. 또 다른 예에서, 비디오 처리 툴 또는 모드가 디스에이블될 때, 디코더는 결정 또는 판정에 기초하여 디스에이블된 비디오 처리 툴 또는 모드를 이용하여 비트스트림이 수정되지 않았다는 것을 알고 비트스트림을 처리할 것이다.
본 문서에서, "비디오 처리"라는 용어는, 비디오 인코딩, 비디오 디코딩, 비디오 압축 또는 비디오 압축해제를 지칭할 수 있다. 예를 들어, 비디오 압축 알고리즘들은, 비디오의 픽셀 표현으로부터 대응하는 비트스트림 표현으로 또는 그 반대로 변환하는 동안 적용될 수 있다. 현재 비디오 블록의 비트스트림 표현은, 예를 들어, 신택스에 의해 정의된 바와 같이, 비트스트림 내의 상이한 위치들에 함께 배치되거나 분산되어 있는 비트들에 대응할 수 있다. 예를 들어, 비디오 블록은, 변환되고 코딩된 오차 잔차 값들의 측면에서 및 비트스트림의 헤더들 및 기타의 필드들 내의 비트들을 이용하여 인코딩될 수 있다. 여기서, 비디오 블록은, 동작에 대응하는 픽셀들의 그룹, 예를 들어, 코딩 유닛 또는 변환 유닛 또는 예측 유닛 등이다.
다양한 기술들 및 실시예들은 다음과 같은 조항-기반의 포멧을 이용하여 기술될 수 있다.
제1 세트의 조항들은 이전 절에서 개시된 기술들의 소정의 피처들 및 양태들을 기술한다.
조항 1. 비디오 처리를 위한 방법으로서, 비디오 처리 유닛과 상기 비디오 처리 유닛의 비트스트림 표현 사이의 변환 동안 상기 비디오 처리 유닛과 연관된 모션 정보를 도출하는 단계; 개선 동작이 적용되는 상기 비디오 처리 유닛의 서브영역에 대해, 모션 정보를 개선할지를 결정하는 단계; 및 상기 결정에 기초하여, 상기 모션 정보를 개선하기 위해 상기 비디오 처리 유닛에 상기 개선 동작을 적용하는 단계를 포함하는, 방법.
조항 2. 제1조항에 있어서, 상기 개선 동작은, 디코더측 모션 벡터 도출 동작, 디코더측 모션 벡터 개선(DMVR) 동작, 샘플 개선 동작, 또는 광학적 흐름에 기초한 예측 개선 동작을 포함하는, 방법.
조항 3. 제1조항에 있어서, 상기 결정은 상기 비디오 처리 유닛과 연관된 코딩 정보에 기초하는, 방법.
조항 4. 제3조항에 있어서, 상기 비디오 처리 유닛과 연관된 코딩 정보는, 모션 벡터들, 기준 픽처들의 픽처 순서 카운트(POC) 값들, 병합 인덱스, 모션 벡터 예측기(MVP) 인덱스, 또는 비디오 처리 유닛에 의해 SBT 모드가 이용되는지의 여부 중에서 적어도 하나를 포함하는, 방법.
조항 5. 제1조항에 있어서, 상기 결정하는 단계는 제1 기준 목록을 참조하는 제1 모션 벡터와 제2 기준 목록을 참조하는 제2 모션 벡터 사이의 관계에 기초하고, 상기 제1 모션 벡터 및 상기 제2 모션 벡터는 상기 개선 동작의 적용 이전에 획득되는, 방법.
조항 6. 제1조항에 있어서, 상기 개선 동작의 적용은 복수의 단계로 수행되고, 개선된 영역들은 상기 복수의 단계의 단계수에 기초하여 결정된 크기를 갖는, 방법.
조항 7. 제1조항에 있어서, 상기 개선 동작을 적용하는 단계는, 상기 개선 동작을 제1 서브영역에 적용하는 단계; 및 상기 개선 동작을 상기 제1 서브영역과는 상이한 제2 서브영역에 적용하는 단계를 포함하고, 상기 비디오 처리 유닛 내의 개선된 모션 정보는 상기 제1 및 제2 서브영역에서 서로 상이한, 방법.
조항 8. 제1조항에 있어서, 상기 개선 동작의 결과에 기초하여 양방향 광학적 흐름(BIO)을 적용할지를 결정하는 단계를 더 포함하는 방법.
조항 9. 제1조항에 있어서, 상기 개선 동작을 적용하는 단계는, N 쌍의 MVD들(모션 벡터 차이들)을 선택하여 최종 예측 샘플을 생성하는 단계를 포함하고, 상기 N은 1보다 큰 자연수이고 각각의 쌍은 상이한 목록들에 대해 2개의 모션 벡터 차이를 포함하는, 방법.
조항 10. 제1조항에 있어서, 상기 개선 동작은 MMVD(merge with MVD; MVD와 병합)와 함께 이용되며 MMVD 거리는 개선 동작 동안 소정의 값들로서 유지되는, 방법.
조항 11. 제1조항에 있어서, 도출된 MVD, 공간적 구배들, 또는 시간적 구배들 중 적어도 하나에 기초하여, 비디오 처리 유닛의 샘플 또는 서브블록에 대한 BDOF를 디스에이블하는 단계를 더 포함하는 방법.
조항 12. 제1조항에 있어서, BDOF에서 도출된 MVD가 클리핑 동작 후에 변경될 때 클리핑된 MVD에 대한 비용을 계산하는 단계를 더 포함하는 방법.
조항 13. 제1조항에 있어서, 상기 변환은 현재 비디오 처리 유닛으로부터 상기 비트스트림 표현을 생성하는 것 또는 상기 비트스트림 표현으로부터 현재 비디오 처리 유닛을 생성하는 것을 포함하는, 방법.
조항 14. 비디오 처리를 위한 방법으로서, 비디오 처리 유닛과 연관된 모션 정보를 획득하는 단계; 비디오 처리 유닛의 서브영역에 대해, 상기 비디오 처리 유닛의 모션 정보를 개선할지를 결정하는 단계, ―상기 비디오 처리 유닛은 개선 동작을 적용하기 위한 유닛임―; 및 상기 결정에 기초하여, 상기 처리 블록에 관한 상기 개선 동작을 적용하지 않고 상기 모션 정보를 이용하는 단계를 포함하는, 방법.
조항 15. 제14조항에 있어서, 상기 개선 동작은, 디코더측 모션 벡터 도출 동작, 디코더측 모션 벡터 개선(DMVR) 동작, 샘플 개선 동작, 또는 광학적 흐름에 기초한 예측 개선 동작을 포함하는, 방법.
조항 16. 제14조항에 있어서, 상기 결정하는 단계는, 상기 비디오 처리 유닛과 연관된 코딩 정보에 기초하고, 상기 코딩 정보는, 모션 벡터들, 기준 픽처들의 픽처 순서 카운트(POC) 값들, 병합 인덱스, 모션 벡터 예측기(MVP) 인덱스, 또는 비디오 처리 유닛에 의해 SBT 모드가 이용되는지의 여부 중에서 적어도 하나를 포함하는, 방법.
조항 17. 제14조항에 있어서, 상기 비디오 처리 유닛이 고급 모션 벡터 예측(AMVP; Advanced Motion Vector Prediction) 모드로 코딩될 때 양방향 광학적 흐름(BIO)을 포함하는 상기 개선 동작이 생략되는, 방법.
조항 18. 제14조항에 있어서, 2개의 모션 벡터의 합 또는 MV 성분들의 절대값들에 기초하여 상기 개선 동작이 생략되는, 방법.
조항 19. 제14조항에 있어서, 상기 개선 동작은 SBT 모드가 상시 비디오 처리 유닛에 의해 이용될 때 생략되는, 방법.
조항 20. 제14조항에 있어서, 상기 결정하는 단계는 제1 기준 목록을 참조하는 제1 모션 벡터와 제2 기준 목록을 참조하는 제2 모션 벡터 사이의 관계에 기초하고, 상기 제1 모션 벡터 및 상기 제2 모션 벡터는 상기 개선 동작의 적용 이전에 획득되는, 방법.
조항 21. 제14조항에 있어서, 도출된 MVD, 공간적 구배들, 또는 시간적 구배들 중 적어도 하나에 기초하여, 비디오 처리 유닛의 샘플 또는 서브블록에 대한 BDOF를 디스에이블하는 단계를 더 포함하는 방법.
조항 22. 제14조항에 있어서, BDOF에서 도출된 MVD가 클리핑 동작 후에 변경될 때 클리핑된 MVD에 대한 비용을 계산하는 단계를 더 포함하는 방법.
조항 23. 비디오 처리 방법으로서, 현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환 동안, 하나 이상의 모션 벡터 개선 툴 및 후보 모션 벡터 차이(MVD)들에 기초하여 도출된 모션 벡터 차이를 개선하는 단계; 및 상기 도출된 모션 벡터 차이 및 상기 비트스트림 표현에서 시그널링되는 모션 벡터를 이용하여 상기 변환을 수행하는 단계를 포함하는 방법.
조항 24. 제23조항에 있어서, 상기 개선하는 단계는, 수정된 y 성분 및 수정되지 않은 x 성분 MVD가 이용되는 제1 단계, 및 수정된 x 성분 및 수정되지 않은 y 성분 MVD가 이용되는 제2 단계를 포함하는 2단계 프로세스를 포함하는, 방법.
조항 25. 제23조항에 있어서, 상기 후보 MVD들은 (vx + offsetX, vy)를 포함하고, offsetX는 범위 [-ThX1, ThX2]에 있고, ThX1 및 ThX2는 음이 아닌 정수 값들이고, 상기 도출된 MVD는 (vx, vy)인, 방법.
조항 26. 제23조항에 있어서, 상기 후보 MVD들은 (vx, vy + offsetY)를 포함하고, offsetY는 범위 [-ThY1, ThY2]에 있고, ThY1 및 ThY2는 음이 아닌 정수 값들이고, 상기 도출된 MVD는 (vx, vy)인, 방법.
조항 27. 제23조항 내지 제26조항 중 어느 하나에 있어서, 상기 변환은 양방향 광학적 흐름 코딩 툴을 이용하는, 방법.
조항 28. 비디오 처리 방법으로서, 현재 비디오 블록과 상기 현재 비디오 블록의 비트스트림 표현 사이의 변환 동안, 도출된 모션 벡터 차이(DMVD; derived motion vector difference)를 후보 세트로 제한하는 단계; 및 상기 DMVD를 후보 세트로 제한한 결과를 이용하여 상기 변환을 수행하는 단계를 포함하는, 방법.
조항 29. 제28조항에 있어서, 상기 후보는, Km의 형태인 vx 및/또는 vy를 갖는 후보 (vx, vy)를 포함하고, 여기서 m은 정수인, 방법.
조항 30. 비디오 처리 방법으로서, 비디오의 현재 비디오 블록의 비트스트림 표현과 상기 현재 비디오 블록 사이의 변환을 위해, 모션 벡터 차이 값이 범위 [-N, M]으로 클리핑된다고 결정하는 단계를 포함하고, N 및 M은 정수들이며, 여기서 더 설명되는 바와 같이, 규칙에 기초하여 클리핑의 결정이 수행되고, 상기 방법은, 상기 결정에 기초하여 상기 변환을 수행하는 단계를 더 포함하고, 상기 규칙은 예측 개선 광학적 흐름(PROF) 및 양방향 광학적 흐름 툴을 이용한 변환에 대해 동일한 범위를 이용할 것을 명시하는, 방법.
조항 31. 제30조항에 있어서, N=M=31인, 방법.
조항 32. 제30조항에 있어서, N=M=255인, 방법.
조항 33. 비디오 처리 방법으로서, 비디오의 현재 비디오 블록의 비트스트림 표현과 상기 현재 비디오 블록 사이의 변환을 위해, 상기 현재 비디오 블록의 제2 샘플의 모션 벡터 차이에 기초하여 제1 샘플의 모션 벡터 차이를 결정하는 단계; 및 상기 결정에 기초하여 상기 변환을 수행하는 단계를 포함하고; 상기 변환은 광학적 흐름 코딩 또는 디코딩 툴에 기초하는, 방법.
조항 34. 제33조항에 있어서, 상기 제1 샘플 및 상기 제2 샘플은 상이한 광학적 흐름 코딩 툴들을 이용하는, 방법.
조항 35. 비디오 처리 방법으로서, 현재 비디오 블록의 비트스트림 표현과 상기 현재 비디오 블록 사이의 변환을 위해 예측 개선 광학적 흐름(PROF) 툴의 이용을 인에이블할지를 결정하는 단계, ―상기 변환은 광학적 흐름 코딩 툴을 이용함―; 및 상기 결정에 기초하여 변환을 수행하는 단계를 포함하는 방법.
조항 36. 제35조항에 있어서, 상기 결정하는 단계는 상기 현재 비디오 블록을 포함하는 현재 픽처의 치수와는 상이한 치수를 갖는 변환에 이용된 기준 픽처로 인해 상기 PROF 툴의 이용을 디스에이블하는, 방법.
조항 37. 제35조항 및 제36조항에 있어서, 상기 결정하는 단계는 동일한 치수들을 갖는 양쪽 기준 픽처들 및 쌍방 예측을 이용한 변환으로 인해 상기 PROF 툴을 인에이블하는, 방법.
조항 38. 제1조항 내지 제37조항 중 어느 하나에 있어서, 상기 변환은 상기 현재 비디오 블록을 인코딩함으로써 상기 비트스트림 표현을 생성하는 것을 포함하는, 방법.
조항 39. 제1조항 내지 제37조항 중 어느 하나에 있어서, 상기 변환은 상기 비트스트림 표현을 디코딩함으로써 상기 현재 비디오 블록을 생성하는 것을 포함하는, 방법.
조항 40. 프로세서 및 명령어들이 저장된 비일시적 메모리를 포함하는 비디오 시스템의 장치로서, 상기 명령어들은 상기 프로세서에 의한 실행시 상기 프로세서로 하여금 제1조항 내지 제39조항 중 어느 하나의 방법을 구현하게 하는, 장치.
조항 41. 비일시적 컴퓨터 판독가능한 매체에 저장된 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품은 제1조항 내지 제39조항 중 어느 하나의 방법을 실행하기 위한 프로그램 코드를 포함하는, 컴퓨터 프로그램 제품.
제2 세트의 조항들은 이전 절에서 개시된 기술들의 소정의 피처들 및 양태들을 기술한다.
조항 1. 비디오 처리 방법으로서, 비디오의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 위해, 상기 현재 비디오 블록 내의 한 영역에 대해 적어도 하나의 모션 벡터 오프셋이 도출되는 광학적 흐름 기반의 방법을 이용하여 상기 현재 비디오 블록의 모션 정보가 개선된다고 결정하는 단계; 상기 적어도 하나의 모션 벡터 오프셋을 범위 [-N, M]으로 클리핑하는 단계, ―여기서 N 및 M은 규칙에 기초한 정수들임―; 및 적어도 하나의 클리핑된 모션 벡터 오프셋에 기초하여 상기 변환을 수행하는 단계를 포함하는, 방법.
조항 2. 제1조항에 있어서, 상기 모션 벡터 오프셋은 상기 현재 비디오 블록 내의 상기 영역에 대한 기준 샘플들을 개선하는데 이용되는, 방법.
조항 3. 제1조항에 있어서, 상기 광학적 흐름 기반의 방법은, 어파인 모션 모델을 갖는 블록들에 적용되는 예측 개선 광학적 흐름(PROF; Prediction Refinement Optical Flow) 방법 또는 양방향 광학적 흐름(BDOF; bi-directional optical flow) 방법 중 적어도 하나를 포함하는, 방법.
조항 4. 제1조항에 있어서, 상기 현재 비디오 블록 내의 상기 영역은 전체의 현재 비디오 블록 또는 상기 현재 비디오 블록 내의 서브블록인, 방법.
조항 5. 제1조항에 있어서, 상기 규칙은, 광학적 흐름 계산을 이용하여 상기 적어도 하나의 모션 벡터 오프셋이 도출되는 PROF 방법 및 공간적 구배 및/또는 시간적 구배를 이용하여 상기 적어도 하나의 모션 벡터 오프셋이 도출되는 BDOF 방법을 이용하여 상기 변환에 대해 동일한 범위 또는 상이한 범위들을 이용할 것을 명시하는, 방법.
조항 6. 제1조항에 있어서, 상기 모션 벡터 오프셋은 수평 성분 및 수직 성분을 포함하고, 상기 적어도 하나의 모션 벡터 오프셋을 클리핑하는 단계는 수평 성분 및/또는 수직 성분을 상기 범위로 클리핑하는 단계를 포함하는, 방법.
조항 7. 제1조항에 있어서, N 및 M은 2K와 같지 않은 동일한 값을 가지며, K는 정수인, 방법.
조항 8. 제7조항에 있어서, 상기 동일한 값은 (2K - 1)과 같고, K는 정수인, 방법.
조항 9. 제7조항에 있어서, 상기 동일한 값은, 31, 63, 15, 7, 3, 127 또는 255 중 하나인, 방법.
조항 10. 제7조항에 있어서, M은 N과 동일하고 2*M은 2K의 값과 동일하지 않으며, K는 정수인, 방법.
조항 11. 제1조항 내지 제10조항 중 어느 하나에 있어서, 상기 규칙은, 상기 BDOF를 이용한 변환에 대해 상기 모션 벡터 오프셋이 [-31, 31], [-15, 15], [-63, 63], 또는 [-127, 127] 중 하나로 클리핑됨을 명시하는, 방법.
조항 12. 제1조항 내지 제10조항 중 어느 하나에 있어서, 상기 규칙은, 상기 PROF를 이용한 변환에 대해 상기 모션 벡터 오프셋이 [-63, 63] 또는 [-31, 31] 중 하나로 클리핑됨을 명시하는, 방법.
조항 13. 제1조항에 있어서, M은 N과 동일하지 않고 M과 N의 합은 2K의 값과 동일하지 않으며, K는 정수인, 방법.
조항 14. 비디오 처리 방법으로서, 모션 정보를 개선하는데 이용되는 디코더측 모션 벡터 개선(DMVR) 동작 동안 개선된 모션 벡터로서, 비디오의 현재 비디오 블록과 연관된 하나 이상의 모션 벡터 차이를 이용하여 유사성 정합 함수를 적용한 결과와 동일한 모션 정보를 선택하는 단계; 및 상기 개선된 모션 벡터를 이용하여 상기 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하는 방법.
조항 15. 제14조항에 있어서, 상기 유사성 정합 함수는, 절대 차이들의 평균 제거된 합(MRSAD; mean Removed sum of Absolute Differences), 절대 차이들의 합(SAD; Sum of Absolute Differences), 또는 절대 변환된 차이들의 합(SATD; Sum of Absolute Transformed Differences)을 포함하는, 방법.
조항 16. 제14조항에 있어서, 상기 모션 정보는 스케일링 인자를 이용하여 곱셈, 나눗셈, 덧셈 또는 뺄셈 중 하나를 수행함으로써 수정되는, 방법.
조항 17. 제16조항에 있어서, 상기 스케일링 인자는 규칙에 따라 및 범위 [-M, N] 내에서 허용되는 모션 벡터 차이(MVD) 세트들에 의존하고, M 및 N은 0보다 큰 정수들인, 방법.
조항 18. 비디오 처리 방법으로서, 현재 비디오 블록의 특성에 기초하여 모션 정보를 개선하는 개선 동작의 적용에 관해 결정하는 단계; 및 상기 결정에 기초하여 변환을 수행하는 단계를 포함하는 방법.
조항 19. 제18조항에 있어서, 상기 개선 동작은, 디코더측 모션 벡터 도출 동작, 디코더측 모션 벡터 개선(DMVR) 동작, 샘플 개선 동작, 또는 광학적 흐름에 기초한 예측 개선 동작 중 적어도 하나를 포함하는, 방법.
조항 20. 제18조항에 있어서, 상기 현재 비디오 블록의 특성은 현재 비디오 블록의 코딩 정보에 대응하는, 방법.
조항 21. 제20조항에 있어서, 상기 현재 비디오 블록의 코딩 정보는, 모션 벡터들, 기준 픽처들의 픽처 순서 카운트(POC) 값들, 병합 인덱스, 모션 벡터 예측기(MVP) 인덱스, 또는 상기 현재 비디오 블록에 의해 서브블록 변환(SBT) 모드가 이용되는지의 여부 중 적어도 하나를 포함하는, 방법.
조항 22. 제20조항에 있어서, 상기 현재 비디오 블록의 코딩 정보는, 상기 현재 비디오 블록이 고급 모션 벡터 예측(AMVP; Advanced Motion Vector Prediction) 모드 또는 병합 모드로 코딩되는지를 포함하는, 방법.
조항 23. 제20조항에 있어서, 상기 개선 동작은 디코더측 모션 벡터 개선(DMVR) 동작 및/또는 양방향 광학적 흐름(BDOF) 동작에 대응하고, 상기 개선 동작은 2개의 모션 벡터의 합 또는 모션 벡터들의 절대값들에 따라 인에이블되는, 방법.
조항 24. 제20조항에 있어서, 상기 개선 동작은 디코더측 모션 벡터 개선(DMVR) 동작 및/또는 양방향 광학적 흐름(BDOF) 동작에 대응하고, 상기 개선 동작은 병합 인덱스 또는 모션 벡터 예측기(MVP; motion vector predictor) 인덱스를 명시하는 규칙에 따라 허용되는, 방법.
조항 25. 제20조항에 있어서, 상기 개선 동작은 디코더측 모션 벡터 개선(DMVR) 동작 및/또는 양방향 광학적 흐름(BDOF) 동작에 대응하고, 상기 개선 동작은 현재 비디오 블록에 의해 SBT 모드가 이용되는 경우에 불허되는, 방법.
조항 26. 제20조항에 있어서, 상기 개선 동작은 디코더측 모션 벡터 개선(DMVR) 동작 및/또는 양방향 광학적 흐름(BDOF) 동작에 대응하고, 상기 개선 동작은 서브블록 변환 모드에서 0이 아닌 잔차를 갖는 서브-파티션들에 대해 허용되거나 불허되는, 방법.
조항 27. 제18조항에 있어서, 상기 현재 비디오 블록의 특성은 제1 기준 목록을 참조하는 제1 모션 벡터와 제2 기준 목록을 참조하는 제2 모션 벡터 사이의 관계에 대응하고, 상기 제1 모션 벡터 및 상기 제2 모션 벡터는 상기 개선 동작의 적용 이전에 획득되는, 방법.
조항 28. 제27조항에 있어서, 상기 개선 동작은, 상기 제1 모션 벡터와 제2 모션 벡터 사이의 대칭 정도에 따라 규칙에 따라 디스에이블되는, 방법.
조항 29. 제28조항에 있어서, 상기 대칭 정도는 i) MV0 및 MV1의 합이 0 성분만을 갖는 대칭, ii) abs(MV0+MV1)<Th1인 준대칭, 또는 iii) abs(MV0+MV1) > Th2인 비대칭으로서 결정되고, MV0 및 MV1은 각각 상기 제1 모션 벡터와 상기 제2 모션 벡터에 대응하고, Th1과 Th2는 정수들인, 방법.
조항 30. 제28조항에 있어서, 상기 대칭의 정도는 상기 현재 비디오 블록의 기준 픽처들의 픽처 순서 카운트(POC) 값들에 기초하여 결정되는, 방법.
조항 31. 제18조항에 있어서, 상기 결정하는 단계는, N 값의 증가에 따라 N번째 개선 단계에 대한 개선된 영역의 크기가 감소되도록, 상기 개선 동작을 복수의 단계로 적용하는 것을 결정하고, N은 0보다 큰 정수인, 방법.
조항 32. 제18조항에 있어서, 상기 결정은 최종 예측 샘플을 생성하기 위해 N개 쌍의 모션 벡터 차이들을 선택함으로써 상기 개선 동작을 적용하는 것을 포함하고, N은 1보다 큰 정수이고 모션 벡터 차이들의 각각의 쌍은 상이한 목록들에 대해 2개의 모션 벡터 차이를 포함하는, 방법.
조항 33. 제32조항에 있어서, N은 2인, 방법.
조항 34. 제32조항에 있어서, 상기 쌍들의 모션 벡터 차이들은 상기 현재 비디오 블록의 각각의 서브영역에 대해 선택되는, 방법.
조항 35. 비디오 처리 방법으로서, 비디오의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 위해 상기 현재 비디오 블록과 연관된 모션 정보를 도출하는 단계; 규칙에 따라 제1 서브영역 및 제2 서브영역을 포함하는 상기 현재 비디오 블록에 개선 동작을 적용하되, 상기 제1 서브영역 및 상기 제2 서브영역이 상기 개선 동작으로 인해 서로 상이한 모션 정보를 갖는 것을 상기 규칙이 허용하도록, 상기 개선 동작을 적용하는 단계; 및 상기 현재 비디오 블록의 개선된 모션 정보를 이용하여 상기 변환을 수행하는 단계를 포함하는 방법.
조항 36. 제35조항에 있어서, 상기 제1 서브영역은 디코딩된 모션 정보를 갖고 상기 제2 서브영역은 상기 제2 서브영역을 커버하는 비디오 영역에 적용된 상기 개선 동작 동안 도출된 개선된 모션 정보를 갖는, 방법.
조항 37. 비디오 처리 방법으로서, 비디오의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 위해, 상기 현재 비디오 블록과 연관된 모션 정보를 도출하는 단계; 상기 현재 비디오 블록의 서브영역에 대해, 상기 모션 정보를 개선하는데 이용되는 디코더측 모션 벡터 개선(DMVR)의 출력에 기초하여 양방향 광학적 흐름(BIO)을 이용한 개선 동작의 적용가능성을 결정하는 단계; 및 상기 결정에 기초하여 상기 변환을 수행하는, 방법.
조항 38. 제37조항에 있어서, 상기 결정하는 단계는 상기 DMVR에 의해 개선된 상기 모션 정보가 상기 서브영역에 대해 변경되지 않은 상태로 유지되는 경우 상기 BIO를 이용한 상기 개선 동작을 디스에이블할 것을 결정하는, 방법.
조항 39. 비디오 처리 방법으로서, 2개의 모션 후보들 사이의 거리를 명시하는 거리 테이블을 포함하는 모션 벡터 표현을 포함하는 모션 벡터 차이를 갖는 병합 모드(MMVD; merge mode with motion vector difference)로 코딩된 현재 비디오 블록과 연관된 모션 정보를 도출하는 단계; 상기 MMVD에 이용되는 거리를 개선하는 방법을 명시하는 규칙에 따라 상기 모션 정보를 개선하기 위해 상기 현재 비디오 블록에 디코더측 모션 벡터 개선(DMVR)을 적용하는 단계; 및 상기 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하는 방법.
조항 40. 제39조항에 있어서, 상기 규칙은 상기 DMVR에 의한 개선된 거리가 상기 거리 테이블에 포함되지 않음을 명시하는, 방법.
조항 41. 제39조항에 있어서, 상기 규칙은 상기 DMVR에 의한 개선된 거리 또는 대략적인 개선된 거리가 상기 거리 테이블에 포함되는 경우 상기 DMVR을 불허할 것을 명시하고, 상기 대략적인 개선된 거리는 최상의 정수 모션 벡터 차이를 상기 거리에 더함으로써 생성되는, 방법.
조항 42. 제39조항에 있어서, 상기 규칙은 소정의 조건들 하에서 모든 거리에 대해 상기 DMVR을 허용할 것을 명시하는, 방법.
조항 43. 비디오 처리 방법으로서, 현재 비디오 블록의 샘플 또는 서브블록에 대해, 도출된 모션 정보에 기초하여 규칙에 따라, 도출된 모션 정보가 공간적 및/또는 시간적 구배를 이용하여 개선되는 양방향 광학적 흐름(BDOF)의 적용가능성을 결정하는 단계; 및 상기 결정에 기초하여 상기 변환을 수행하는 단계를 포함하는 방법.
조항 44. 제43조항에 있어서, 상기 도출된 모션 정보는, 모션 벡터 차이, 공간적 구배, 또는 시간적 구배 중 적어도 하나를 포함하는, 방법.
조항 45. 제43조항에 있어서, 상기 규칙은 제1 기준 목록 내의 예측 샘플과 제2 기준 목록 내의 예측 샘플 사이의 차이를 증가시키는 상기 도출된 모션 정보로 인해 상기 샘플에 대해 상기 BDOF를 불허할 것을 명시하는, 방법.
조항 46. 제43조항에 있어서, 상기 규칙은 제1 기준 목록 내의 예측 서브블록과 제2 기준 목록 내의 예측 서브블록 사이의 차이를 증가시키는 상기 도출된 모션 정보로 인해 상기 샘플 또는 상기 서브블록에 대해 상기 BDOF를 불허할 것을 명시하는, 방법.
조항 47. 제43조항에 있어서, 상기 도출된 모션 정보는 도출된 오프셋에 대응하고, 상기 도출된 오프셋은 인자에 의해 스케일링되어 상기 결정에 이용되는, 방법.
조항 48. 비디오 처리 방법으로서, 비디오의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 위해, 모션 벡터 차이(MVD)를 도출하는 단계; 클리핑된 모션 벡터 차이를 생성하기 위해 도출된 모션 벡터 차이에 클리핑 동작을 적용하는 단계; 비용 함수를 이용하여 상기 클리핑된 모션 벡터 차이의 비용을 계산하는 단계; 상기 도출된 모션 벡터 차이, 상기 클리핑된 모션 벡터 차이, 또는 상기 비용 중 적어도 하나에 기초하여 규칙에 따라, 공간적 및/또는 시간적 구배를 이용하여 상기 도출된 모션 벡터 차이가 개선되는 양방향 광학적 흐름(BDOF) 동작을 불허하기로 결정하는 단계; 및 상기 결정에 기초하여 상기 변환을 수행하는 단계를 포함하는 방법.
조항 49. 제48조항에 있어서, 상기 계산은, 상기 도출된 모션 벡터 차이 (vx, vy)가 상기 클리핑 동작 후에 (clipVx, clipVy)로 변경되는 경우에 수행되고, (clipVx, clipVy)는 (vx, vy)와는 상이한, 방법.
조항 50. 제48조항에 있어서, 상기 규칙은, 1) costClipMvd > Th * costZeroMvd, BDOF 또는 2) costClipMvd > Th * costDerivedMvd인 경우에 상기 BDOF를 불허할 것을 명시하고, costDerivedMvd 및 ostClipMvd는 각각 상기 도출된 모션 벡터 차이 및 상기 클리핑된 모션 벡터 차이의 비용들에 대응하는, 방법.
조항 51. 제48조항에 있어서, 상기 규칙은, vx 및 vy 중 적어도 하나가 상기 클리핑 동작 후에 변경되는 경우에 상기 BDOF를 불허할 것을 명시하고, (vx, vy)는 상기 도출된 모션 벡터 차이인, 방법.
조항 52. 제48조항에 있어서, 상기 규칙은 상기 도출된 모션 벡터 차이 (vx, vy)와 상기 클리핑된 모션 벡터 차이 (clipVx, clipVy)의 x 성분 및 y 성분 중 적어도 하나의 절대 차이에 기초하여 상기 BDOF를 불허할 것을 명시하는, 방법.
조항 53. 제48조항에 있어서, 상기 비용을 계산하는 단계는 소정의 모션 벡터 차이들에 대해 수행되고, 최종 모션 벡터 차이는 최소 비용 값을 갖는 것으로서 결정되는, 방법.
조항 54. 제48조항에 있어서, 상기 모션 벡터 차이가 상기 클리핑 동작 후에 변경되는 경우에 수평 모션 벡터 차이 및 수직 모션 벡터 차이가 결정되는, 방법.
조항 55. 제48조항에 있어서, 비용 함수들에서 공통 부분을 갖는 복수의 모션 벡터 차이에 대해, 상기 공통 부분을 반복하지 않도록 상기 계산이 수행되는, 방법.
조항 56. 제48조항에 있어서, 비용 함수들에서 공통 부분을 갖는 복수의 모션 벡터 차이에 대해, 상기 계산 전에 상기 비용 함수들로부터 상기 공통 부분이 제거되는, 방법.
조항 57. 비디오 처리 방법으로서, 비디오의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 위해, 모션 벡터 차이를 도출하는 단계; 하나 이상의 모션 벡터 개선 툴 및 후보 모션 벡터 차이(MVD)들에 기초하여 도출된 모션 벡터 차이를 개선하는 단계; 및 상기 개선된 모션 벡터 차이를 이용하여 상기 변환을 수행하는 단계를 포함하는 방법.
조항 58. 제57조항에 있어서, 상기 개선은, 수정된 y 성분 및 수정되지 않은 x 성분 MVD가 이용되는 제1 단계, 및 수정된 x 성분 및 수정되지 않은 y 성분 MVD가 이용되는 제2 단계를 포함하도록 수행되는, 방법.
조항 59. 제57조항에 있어서, 상기 후보 MVD들은 (vx + offsetX, vy)를 포함하고, offsetX는 범위 [-ThX1, ThX2]에 있고, ThX1 및 ThX2는 음이 아닌 정수 값들이고, 상기 도출된 MVD는 (vx, vy)인, 방법.
조항 60. 제57조항에 있어서, 상기 후보 MVD들은 (vx, vy + offsetY)를 포함하고, offsetY는 범위 [-ThY1, ThY2]에 있고, ThY1 및 ThY2는 음이 아닌 정수 값들이고, 상기 도출된 MVD는 (vx, vy)인, 방법.
조항 61. 제57조항에 있어서, 상기 도출된 MVD는 (vx, vy)이고, vx 또는 vy 중 어느 하나가 먼저 개선되는, 방법.
조항 62. 제57조항에 있어서, 상기 도출된 MVD는 (vx, vy)이고, vx 및 vy는 함께 개선되는, 방법.
조항 63. 제57조항에 있어서, 상기 도출된 MVD는 (vx, vy)이고, 동일한 수의 후보 MVD들이 vx 및 vy로부터 도출되는, 방법.
조항 64. 제57조항에 있어서, 개선된 모션 벡터 차이는 비용 함수를 이용하여 획득된 최소 비용 값을 제공하는, 방법.
조항 65. 비디오 처리 방법으로서, 현재 비디오 블록과 연관된 도출된 모션 벡터 차이를 후보 세트로 제한하는 단계, ―상기 도출된 모션 벡터 차이는 상기 현재 비디오 블록과 연관된 모션 정보를 개선하는 개선 동작에 이용됨―; 및 상기 제한의 결과로서 상기 도출된 모션 벡터 차이를 이용하여 비디오의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하는 방법.
조항 66. 제65조항에 있어서, 상기 후보 세트는 (1+MVDmaxX - MVDminX)의 값보다 작은 다수의 허용된 수평 MVD 후보들 및/또는 (1+MVDmaxY - MVDminY)의 값보다 작은 다수의 허용된 수직 MVD 후보들을 포함하고, 수평 MVD의 최대 및 최소 값들은 각각 MVDmaxX 및 MVDminX로 표기되고, 수직 MVD의 최대 및 최소값들은 각각 MVDmaxY 및 MVDminY로 표기되는, 방법.
조항 67. 제65조항의 방법으로서, 상기 후보 세트는 상기 개선 동작 동안 방정식을 이용하여 획득된 후보 (vx, vy)를 포함하고, 상기 후보는, 1) vx 및 vy 중 적어도 하나가 Km의 형태이고, m은 정수이거나, 2) vx 및 vy 중 적어도 하나는 0임을 만족하는, 방법.
조항 68. 제65조항에 있어서, 상기 후보 세트는 상기 개선 동작 동안 방정식을 이용하여 획득된 후보 (Δvx (x,y), Δvy (x,y))를 포함하고, 상기 후보는, 1) Δvx (x,y) 및 Δvy (x,y) 중 적어도 하나는 Km의 형태이고, m은 정수이거나, 또는 2) Δvx (x,y) 및 Δvy (x,y) 중 적어도 하나는 0임을 만족하는, 방법.
조항 69. 제65조항에 있어서, 상기 후보 세트는 상기 개선 동작 동안 방정식을 이용하여 획득된 후보 (vx, vy) 또는 (Δvx (x,y), Δvy (x,y))를 포함하고, 상기 후보는, 1) vx, vy, Δvx (x,y) 및 Δvy (x,y) 중 적어도 하나의 절대값이 0이거나, 2) vx, vy, Δvx (x,y) 및 Δvy (x,y) 중 적어도 하나가 Km의 형태이고, m은 정수임을 만족하는, 방법.
조항 70. 제65조항에 있어서, 상기 후보 세트는 상기 개선 동작 동안 방정식을 이용하여 획득된 후보 (vx, vy) 또는 (Δvx (x,y), Δvy (x,y))를 포함하고, 상기 후보는, 1) vx, vy, Δvx (x,y) 및 Δvy (x,y) 중 적어도 하나가 0이거나, 2) vx, vy, Δvx (x,y) 및 Δvy (x,y) 중 적어도 하나는 Km 또는 -Km의 형태이며, m은 정수임을 만족하는, 방법.
조항 71. 제65조항에 있어서, 상기 도출된 모션 벡터 차이는 상기 후보 세트로 제한되지 않고 초기에 도출된 모션 벡터로서 먼저 도출된 다음, 상기 후보 세트로 제한되도록 수정되는, 방법.
조항 72. 제71조항에 있어서, 상기 초기 도출된 모션 벡터 차이 및 상기 수정된 모션 벡터 차이는 X 및 X'로 표기되고, X는 abs(vx) 또는 abs(vy)와 동일하게 설정되고, X'는 sign(vx) 또는 sign(vy)를 이용하여 X로부터 획득되며, abs(t)는 t의 절대값을 반환하는 절대 함수에 대응하고 sign(t)는 t의 부호에 의존하는 값을 반환하는 부호 함수에 대응하는, 방법.
조항 73. 제71조항에 있어서, 상기 후보 세트는, K의 거듭제곱이고 vx 및 vy 중 적어도 하나에 의존하는 값들을 가지며, 상기 도출된 모션 벡터 차이는 (vx, vy)인, 방법.
조항 74. 제71조항에 있어서, 상기 도출된 모션 벡터 차이는 (vx, vy)이고 vx 및 vy 중 적어도 하나는 먼저 수정되는, 방법.
조항 75. 제71조항에 있어서, 상기 초기에 도출된 모션 벡터는 logK(x) 함수 및 ceil(y) 함수를 이용하여 수정되고, logK(x)는 밑수 K인 x의 로그를 반환하고 ceil(y)는 y보다 크거나 같은 가장 작은 정수를 반환하는, 방법.
조항 76. 제71조항에 있어서, 상기 초기에 도출된 모션 벡터는 floor(y) 함수를 이용하여 수정되고, floor(y)는 y보다 작거나 같은 가장 큰 정수를 반환하는, 방법.
조항 77. 제71조항에 있어서, 상기 초기에 도출된 모션 벡터는 미리정의된 조회 테이블을 이용하여 수정되는, 방법.
조항 78. 제65조항에 있어서, 상기 후보 세트 내의 후보들만이 모션 벡터 차이들을 도출하기 위해 체크되는, 방법.
조항 79. 제78조항에 있어서, 상기 후보 세트는, KN, -KN 또는 0의 형태인 후보 MVD(motion vector difference; 모션 벡터 차이) 값들을 포함하고, K는 0보다 큰 정수이고 N은 정수인, 방법.
조항 80. 제79조항에 있어서, 상기 후보 세트는 M/KN의 형태인 후보 MVD(motion vector difference; 모션 벡터 차이) 값들을 포함하고, M은 정수인, 방법.
조항 81. 제79조항에 있어서, 상기 후보 세트는 0이거나 KM/KN의 형태인 후보 MVD(motion vector difference; 모션 벡터 차이) 값들을 포함하고, M 및 N은 정수들인, 방법.
조항 82. 제65조항에 있어서, 상기 도출된 모션 벡터 차이는 그 값들이 규칙에 따라 허용되는 x 성분 및/또는 y 성분을 갖도록 도출되는, 방법.
조항 83. 제82조항에 있어서, 상기 규칙은, 상기 도출된 모션 벡터 차이 (vx, vy)가 floor 함수, ceiling 함수, 또는 sign 함수를 이용하여 획득된 값을 가짐을 명시하고, floor 함수 floor(t)는 t보다 작거나 같은 가장 큰 정수를 반환하고, ceiling 함수 ceil(t)는 t보다 크거나 같은 가장 작은 정수를 반환하고, sign 함수 sign(t)는 t의 부호에 의존하는 값을 반환하는, 방법.
조항 84. 제82조항에 있어서, 상기 규칙은, i) vx가 분자(numX) 및 분모(denoX) 중 적어도 하나를 이용하여 도출되고/되거나 ii) vy가 분자(numY)와 분모(denoY) 중 적어도 하나를 이용하여 도출되도록, 상기 도출된 모션 벡터 차이 (vx, vy)를 획득할 것을 명시하는, 방법.
조항 85. 제84조항에 있어서, 상기 규칙은, 상기 분자 및/또는 분모를, floor 함수, ceiling 함수, 또는 sign 함수에서 이용되는 변수로서 이용할 것을 명시하고, floor 함수 floor(t)는 t보다 작거나 같은 가장 큰 정수를 반환하고, ceiling 함수 ceil(t)는 t보다 크거나 같은 가장 작은 정수를 반환하고, sign 함수 sign(t)는 t의 부호에 의존하는 값을 반환하는, 방법.
조항 86. 제84조항에 있어서, 상기 규칙은, vx가 sign(numX*denoX) * esp2(M)로서 도출됨을 명시하고, M은 cost(numX, denoX, M)의 최소값을 달성하는 정수이고 sign(t)는 t의 부호에 의존하는 값을 반환하는, 방법.
조항 87. 제84조항에 있어서, 상기 규칙은 vx가 0과 같거나 방정식: sign(numX*denoX) * 를 이용하여 획득됨을 명시하고, offset1 및 offset 2는 정수들이며 sign(t)는 t의 부호에 의존하는 값을 반환하는, 방법.
조항 88. 제87조항에 있어서, 상기 규칙은 i) denoX가 0과 동일하거나, ii) numX가 0과 동일하거나, iii) numX가 0과 동일하거나 denoX가 0과 동일하거나, iv) denoX가 T1보다 작거나, v) numX가 T1보다 작거나, vi) numX가 T1보다 작거나 denoX가 T2보다 작은 ―T1 및 T2는 정수들임― 경우에 vx가 0과 동일함을 명시하는, 방법.
조항 89. 제87조항에 있어서, 상기 offset1은 numX에 의존하는, 방법.
조항 90. 제87조항에 있어서, 상기 offset1은 와 동일하고, P는 정수이며, floor(t)는 t보다 작거나 같은 가장 큰 정수를 반환하고, logK(x)는 밑수 K인 x의 로그를 반환하고, abs(t)는 t의 절대값을 반환하는, 방법.
조항 91. 제87조항에 있어서, 상기 offset2는 denoX에 의존하는, 방법.
조항 92. 제87조항에 있어서, 상기 offset1은 와 동일하고, P는 정수이며, floor(t)는 t보다 작거나 같은 가장 큰 정수를 반환하고, logK(x)는 밑수 K인 x의 로그를 반환하고, abs(t)는 t의 절대값을 반환하는, 방법.
조항 93. 제84조항에 있어서, 상기 규칙은, vx가 방정식, delta = floor(log2(abs(numX))) - floor(log2(abs(denoX)))로서 획득되는 델타의 값에 의존함을 명시하고, floor(t)는 t보다 작거나 같은 가장 큰 정수를 반환하고, logK(x)는 밑수 K인 x의 로그를 반환하고, abs(t)는 t의 절대값을 반환하는, 방법.
조항 94. 제93조항에 있어서, 상기 델타는, 1) floor(log2(abs(numX)))가 0보다 크고 abs(numX) & (1 << (floor(log2(abs(numX))) - 1))가 0과 동일하지 않거나 2) floor(log2(abs(denoX)))가 0보다 크고 abs(denoX) &(1 << (floor(log2(abs(denoX))) - 1))가 0과 동일하지 않은 경우에 수정되는, 방법.
조항 95. 제93조항에 있어서, 델타가 0보다 작은 경우에 vx는 0으로 설정되는, 방법.
조항 96. 제83조항 내지 제95조항 중 어느 하나에 있어서, vx 및 vy 중 적어도 하나는 BDOF에서 이용되는 예측 샘플 값들을 나타내는 파라미터 또는 PROF에서 이용되는 루마 예측 개선을 나타내는 파라미터를 도출하는데 이용되는, 방법.
조항 97. 제96조항에 있어서, 상기 BDOF에서 이용되는 예측 샘플 값들을 나타내는 파라미터는, 방정식 bdofOffset = Round( ( vx * ( gradientHL1[ x + 1 ][ y + 1 ] - gradientHL0[ x + 1 ][ y + 1 ] ) ) >> 1 ) + Round( ( vy * (gradientVL1[ x + 1 ][ y + 1 ] - gradientVL0[ x + 1 ][ y + 1 ] ) ) >> 1 )을 이용하여 도출되는 bdofOffset인, 방법.
조항 98. 제96조항에 있어서, PROF에서 이용되는 루마 예측 개선을 나타내는 파라미터는, 방정식 ΔI(posX, posY)= dMvH[posX][posY] × gradientH[posX][posY] + dMvV[posX][posY] × gradientV[posX][posY]을 이용하여 도출되는 ΔI이고, dMvH[posX][posY] 및 dMvV[posX][posY]는 vx 및 vy에 대응하는, 방법.
조항 99. 제65조항에 있어서, 상기 도출된 모션 벡터 차이의 수평 성분 및 수직 성분 중 적어도 하나는 상기 개선 동작에 이용되는 툴에 따라 도출되고, 상기 툴과 연관된 후보 세트 내에 있도록 수정되는, 방법.
조항 100. 제99조항에 있어서, 상기 도출된 모션 벡터 차이의 수평 성분 및 수직 성분 중 적어도 하나는 상기 툴에도 불구하고 단일화되는 수정 프로세스에 의해 수정되는, 방법.
조항 101. 제65조항에 있어서, 각각의 후보 값에 대한 비용 함수를 이용하여 비용이 계산되고, 최소 비용 값에 대응하는 후보 값이 최종 모션 벡터 차이 (vx, vy)로서 선택되는, 방법.
조항 102. 제65조항에 있어서, 상기 후보 세트는 미리정의되는, 방법.
조항 103. 제102조항에 있어서, 상기 후보 세트는, vx 및 vy 중 적어도 하나가 -2x/2X의 형태이도록 하는 후보 (vx, vy)를 포함하고, x는 범위 [-(X-1), (X-1)] 내에 있는, 방법.
조항 104. 제102조항에 있어서, 상기 후보 세트는, i) {-32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32}/64, ii) {-32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32}, iii) {-32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32}/32, iv) {-64, -32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32, 64}, v) {-64, -32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32, 64}/64, vi) {-128, -64, -32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32, 64, 128}/128, 또는 vii) {-128, -64, -32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8, 16, 32, 64, 128}를 포함하는 세트들 중 하나로부터만 vx 및 vy가 유래되도록 하는 후보 (vx, vy)를 포함하는, 방법.
조항 105. 제102조항에 있어서, 상기 후보 세트는, 상기 후보의 수평 및/또는 수직 성분이 의 형태이도록 하는 후보 (vx, vy)를 포함하고, S는 1 또는 -1이고, m 및 n은 정수들인, 방법.
조항 106. 제65조항에 있어서, 상기 후보 세트는 상기 현재 비디오 블록의 코딩된 정보에 의존하는, 방법.
조항 107. 제65조항에 있어서, 상기 후보 세트는, 시퀀스, 픽처, 슬라이스, 타일, 브릭, 또는 다른 비디오 영역을 포함하는 비디오 유닛 레벨에서 시그널링되는, 방법.
조항 108. 제65조항에 있어서, 양방향 광학적 흐름(BDOF) 또는 예측 개선 광학적 흐름(PROF) 동안 샘플에 관한 개선 동작은 곱셈 동작들을 배제하는, 방법.
조항 109. 비디오 처리 방법으로서, 비디오의 비디오 유닛의 현재 비디오 블록과 연관된 모션 정보를 개선하는데 이용되는 양방향 광학적 흐름(BDOF) 동작 동안, 비디오 유닛 및/또는 비디오 유닛에서의 코딩 툴의 이용에 기초하여 규칙에 따라 결정되는 클리핑 파라미터 세트를 이용하여 클리핑 동작을 적용하는 단계; 및 상기 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하는 방법.
조항 110. 제109조항에 있어서, 상기 규칙은 상기 비디오의 상이한 비디오 유닛들에 대해 상이한 세트들의 클리핑 파라미터들을 이용할 것을 명시하는, 방법.
조항 111. 제109조항 또는 제110조항에 있어서, 상기 비디오 유닛은, 시퀀스, 픽처, 슬라이스, 타일 그룹, 타일, 코딩 트리 유닛, 또는 코딩 유닛에 대응하는, 방법.
조항 112. 제109조항에 있어서, 수평 모션 벡터 차이 및 수직 모션 벡터 차이는 서로 상이한 임계값들로 클리핑되는, 방법.
조항 113. 제109조항에 있어서, 상기 클리핑 동작에서 이용되는 임계값은 상기 현재 비디오 블록 및/또는 상기 현재 비디오 블록의 디코딩된 모션 정보를 포함하는 픽처의 치수에 의존하는, 방법.
조항 114. 제109조항에 있어서, 상기 클리핑 동작에서 이용되는 임계값은, 시퀀스 파라미터 세트(SPS), 비디오 파라미터 세트(VPS), 적응 파라미터 세트(APS), 픽처 파라미터 세트(PPS), 슬라이스 헤더, 및/또는 타일 그룹 헤더에서 시그널링되는, 방법.
조항 115. 제109조항에 있어서, 상기 규칙은 디코더측 모션 벡터 차이(DMVR) 또는 어파인 인터 모드의 이용에 기초하여 상기 클리핑 파라미터 세트를 결정할 것을 명시하는, 방법.
조항 116. 제109조항에 있어서, 상기 클리핑 파라미터들의 값들은 상기 코딩 툴이 상기 비디오 유닛에 대해 디스에이블되는지의 여부에 따라 증가하거나 감소하는, 방법.
조항 117. 비디오 처리 방법으로서, 비디오의 현재 비디오 블록과 연관된 모션 정보를 개선하는데 이용되는 개선 동작 동안, 모션 벡터 차이 (vx, vy)의 x 성분 및/또는 y 성분을 클리핑하기 위해 규칙에 따라 클리핑 동작을 적용하는 단계; 및 상기 모션 벡터 차이를 이용하여 상기 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 규칙은 상기 클리핑 동작 전 또는 후에 상기 모션 벡터 차이를 0 또는 K-m 형태의 값으로 변환할 것을 명시하고, m은 정수인, 방법.
조항 118. 제117조항에 있어서, 상기 모션 벡터 차이 (vx, vy)는, 방정식 bdofOffset = Round( ( vx * ( gradientHL1[ x + 1 ][ y + 1 ] - gradientHL0[ x + 1 ][ y + 1 ] ) ) >> 1 ) + Round( ( vy * (gradientVL1[ x + 1 ][ y + 1 ] - gradientVL0[ x + 1 ][ y + 1 ] ) ) >> 1 )에 따라 bdofOffset을 도출하기 위해 BDOF에서 이용되는 vx 및 vy에 대응하는 값들을 갖는, 방법.
조항 119. 제117조항에 있어서, 상기 모션 벡터 차이 (vx, vy)는, 방정식 ΔI(posX, posY)= dMvH[posX][posY] × gradientH[posX][posY] + dMvV[posX][posY] × gradientV[posX][posY]에 따라 ΔI를 도출하기 위해 PROF에서 이용되는 dMvH[posX][posY] 및 dMvV[posX][posY]에 대응하는 값들을 갖는, 방법.
조항 120. 제117조항에 있어서, 상기 규칙은 상기 개선 동작의 유형에 따라 상기 x 성분 및 상기 y 성분에 대해 상이한 범위들을 이용하는, 방법.
조항 121. 비디오 처리 방법으로서, 비디오의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 위해, 규칙에 따라 디코더측 모션 도출 동작 또는 디코더측 모션 개선 동작 동안에 모션 정보를 도출하거나 개선하는데 이용되는 검색 영역을 선택하는 단계; 및 도출되거나 개선된 모션 정보에 기초하여 상기 변환을 수행하는 단계를 포함하는 방법.
조항 122. 제121조항에 있어서, 상기 규칙은 비정사각형 MVD(motion vector difference; 모션 벡터 차이) 영역을 선택할 것을 명시하는, 방법.
조항 123. 제122조항에 있어서, 상기 비정사각형 MVD 영역이, 5*5 다이아몬드 영역, 5*5 8각형 영역, 또는 3*3 다이아몬드 영역에 대응하는, 방법.
조항 124. 제121조항에 있어서, 상기 검색 영역은 수평 방향 및 수직 방향에서 상이한 검색 범위들을 갖는, 방법.
조항 125. 제121조항에 있어서, 상기 규칙은, 상기 현재 비디오 블록의 치수 및/또는 형상에 기초하여 상기 검색 영역을 선택할 것을 명시하고, 상기 치수는 상기 현재 비디오 블록의 높이(H) 및 폭(W) 중 적어도 하나에 대응하는, 방법.
조항 126. 제125조항에 있어서, 상기 규칙은, 상기 현재 비디오 블록의 치수에 따라, 수평 MVD 검색 범위를 수직 MVD 검색 범위보다 작게 명시하거나 다이아몬드 MVD 공간을 검색할 것을 명시하는, 방법.
조항 127. 제121조항에 있어서, 상기 규칙은 개선되기 전의 상기 현재 비디오 블록의 모션 정보에 기초하여 상기 검색 영역을 선택할 것을 명시하는, 방법.
조항 128. 제127조항에 있어서, 상기 규칙은, sumAbsHorMv 및/또는 sumAbsHorMv를 포함하는 모션 정보에 따라, 수평 MVD 검색 범위를 수직 MVD 검색 범위보다 작게 명시하거나 다이아몬드 MVD 공간을 검색할 것을 명시하고, sumAbsHorMv = abs( MV0[0]) + abs(MV1[0])이고, sumAbsVerMv = abs(MV0[1]) + abs(MV1[1])이고, abs(MVx)는 Mvx의 절대값을 지칭하는, 방법.
조항 129. 제121조항에 있어서, 상기 규칙은 기준 픽처들에 기초하여 수평 검색 범위 및/또는 수직 검색 범위를 선택할 것을 명시하는, 방법.
조항 130. 제121조항에 있어서, 상기 규칙은 모션 벡터들의 크기들에 기초하여 수평 검색 범위 및/또는 수직 검색 범위를 선택할 것을 명시하는, 방법.
조항 131. 비디오 처리 방법으로서, 비디오의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 위해, 최상으로 정합하는 정수 위치를 포함한 개선에 이용되는 검색 영역을 이용함으로써 상기 현재 비디오 블록과 연관된 모션 벡터 차이를 개선하기 위해 디코더측 모션 벡터 차이(DMVR; decoder-side motion vector difference) 동작을 적용하는 단계; 및 개선된 모션 벡터 차이를 이용하여 상기 변환을 수행하는 단계를 포함하고, 상기 DMVR 동작을 적용하는 단계는 규칙에 따라 서브펠 모션 벡터 차이(MVD)를 도출하는 단계를 포함하는, 방법.
조항 132. 제131조항에 있어서, 상기 규칙은, 최상으로 정합하는 정수 위치의 좌측 및 우측 위치들 양쪽 모두가 상기 검색 영역에 포함되는 경우 수평 서브펠 MVD를 도출할 것을 명시하는, 방법.
조항 133. 제131조항에 있어서, 상기 규칙은, 최상으로 정합하는 정수 위치의 위쪽 및 아래쪽 위치들 양쪽 모두가 상기 검색 영역에 포함되는 경우 수직 서브펠 MVD를 도출할 것을 명시하는, 방법.
조항 134. 제131조항에 있어서, 상기 규칙은 소정의 위치들에 대한 상기 서브펠 MVD를 도출할 것을 명시하는, 방법.
조항 135. 비디오 처리 방법으로서, 비디오의 비디오 유닛의 현재 비디오 블록에 대해, 상기 현재 비디오 블록과 연관된 모션 벡터 차이를 개선하기 위해 디코더측 모션 벡터 차이(DMVR) 동작을 적용하는 단계; 및 개선된 모션 벡터 차이를 이용하여 상기 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하고, 상기 DMVR 동작을 적용하는 단계는 상기 비디오 유닛에 대한 양방향 광학적 흐름(BDOF)의 이용에 따라 서브펠 모션 벡터 차이(MVD) 도출을 허용하거나 불허하기로 결정하는 단계를 포함하는, 방법.
조항 136. 제135조항에 있어서, 상기 비디오 유닛은, 픽처, 슬라이스, 타일 그룹, 타일, 코딩 트리 유닛, 또는 코딩 유닛에 대응하는, 방법.
조항 137. 제135조항에 있어서, 상기 서브펠 MVD 도출은 상기 비디오 유닛에 대한 상기 BDOF의 이용으로 인해 불허되는, 방법.
조항 138. 제135조항에 있어서, 상기 서브펠 MVE 도출은 상기 비디오 유닛에 대한 상기 BDOF의 비이용으로 인해 허용되는, 방법.
조항 139. 비디오 처리 방법으로서, 광학적 흐름을 이용한 개선 동작 동안, 비디오의 현재 비디오 블록의 제1 샘플의 모션 벡터 차이를 도출하는 단계; 상기 제1 샘플의 도출된 모션 벡터 차이에 기초하여 제2 샘플의 모션 벡터 차이를 결정하는 단계; 및 상기 결정에 기초하여 상기 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하는, 방법.
조항 140. 제139조항에 있어서, 상기 개선 동작은 광학적 흐름을 이용한 예측 개선(PROF)를 이용하여 수행되고, 상기 제1 샘플의 모션 벡터 차이는 상기 현재 비디오 블록 내의 위치에 대해 어파인 모델을 이용하여 도출되고 상이한 위치에 대해 상기 제2 샘플의 모션 벡터 차이를 결정하는데 이용되는, 방법.
조항 141. 제139조항에 있어서, 상위 부분에 위치한 상기 제1 샘플의 모션 벡터 차이는 어파인 모델(affine model)을 이용하여 도출되고, 하위 부분에 위치한 상기 제2 샘플의 모션 벡터 차이를 결정하는데 이용되며, 상기 현재 비디오 블록은 폭(W)과 높이(H)를 가지며, 상기 상위 부분 및 상기 하위 부분은 W * H/2의 크기를 갖는, 방법.
조항 142. 제139조항에 있어서, 하위 부분에 위치한 상기 제1 샘플의 모션 벡터 차이는 어파인 모델을 이용하여 도출되고, 상위 부분에 위치한 상기 제2 샘플의 모션 벡터 차이를 결정하는데 이용되며, 상기 현재 비디오 블록은 폭(W)과 높이(H)를 가지며, 상기 상위 부분 및 상기 하위 부분은 W * H/2의 크기를 갖는, 방법.
조항 143. 제139조항에 있어서, 좌측 부분에 위치한 상기 제1 샘플의 모션 벡터 차이는 어파인 모델을 이용하여 도출되고, 우측 부분에 위치한 상기 제2 샘플의 모션 벡터 차이를 결정하는데 이용되며, 상기 현재 비디오 블록은 폭(W)과 높이(H)를 가지며, 상기 좌측 부분 및 상기 우측 부분은 W/2 * H의 크기를 갖는, 방법.
조항 144. 제139조항에 있어서, 우측 부분에 위치한 상기 제1 샘플의 모션 벡터 차이는 어파인 모델을 이용하여 도출되고 좌측 부분에 위치한 상기 제2 샘플의 모션 벡터 차이를 결정하는데 이용되며, 상기 현재 비디오 블록은 폭(W)과 높이(H)를 가지며, 상기 좌측 부분 및 상기 우측 부분은 W/2 * H의 크기를 갖는, 방법.
조항 145. 제139조항에 있어서, 상기 제1 샘플의 모션 벡터 차이는 어파인 모델을 이용하여 도출되거나/되고 상기 제2 샘플의 모션 벡터 차이를 결정하는데 이용되기 전에 미리정의된 정밀도로 반올림되거나 미리정의된 범위로 클리핑되는, 방법.
조항 146. 제139조항에 있어서, 위치 (x, y)의 상기 제1 샘플 또는 상기 제2 샘플에 대해, MVDh 및 MVDv는 각각 수평 및 수직 모션 벡터 차이이며, 다음과 같은 방정식들: MVDh(x, y) = -MVDh(W - 1 - x, H - 1 - y) 및 MVDv(x, y) = -MVDv(W - 1 - x, H - 1 - y)을 이용함으로써 획득되고, W 및 H는 상기 현재 비디오 블록의 폭과 높이인, 방법.
조항 147. 비디오 처리 방법으로서, 비디오의 현재 비디오 블록에 양방향 광학적 흐름(BDOF) 동작을 이용한 개선 동작을 적용함으로써 예측 개선 샘플을 도출하는 단계; 규칙에 따라, 도출된 예측 개선 샘플을 미리결정된 범위 [-M, N]로 클리핑하는 클리핑 동작의 적용가능성을 결정하는 단계, ―M 및 N은 정수들임―; 및 상기 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하는 방법.
조항 148. 제147조항에 있어서, 상기 규칙은 상기 클리핑 동작을 적용하기로 결정하는, 방법.
조항 149. 제147조항에 있어서, N은 M-1의 값과 동일한, 방법.
조항 150. 제147조항에 있어서, 상기 미리정의된 범위는 상기 현재 비디오 블록의 색상 성분의 비트 깊이에 의존하는, 방법.
조항 151. 제150조항에 있어서, M은 2K와 동일하고, K = Max(K1, BitDepth + K2)이며, BitDepth는 상기 현재 비디오 블록의 색상 성분의 비트 깊이이고, K1 및 K2는 정수들인, 방법.
조항 152. 제150조항에 있어서, M은 2K와 동일하고, K = Min(K1, BitDepth + K2)이며, BitDepth는 상기 현재 비디오 블록의 색상 성분의 비트 깊이이고, K1 및 K2는 정수들인, 방법.
조항 153. 제147조항에 있어서, 상기 미리정의된 범위는 예측 개선 광학적 흐름(PROF)을 이용하여 또 다른 비디오 블록에 적용되는, 방법.
조항 154. 제147조항에 있어서, 상기 규칙은 상기 클리핑 동작을 적용하지 않기로 결정하는, 방법.
조항 155. 비디오 처리 방법으로서, 상이한 잔차 코딩 모드들을 이용하여 코딩되는 제1 코딩 그룹 및 제2 코딩 그룹을 포함하는 현재 비디오 블록에 대한 코딩 그룹 크기들을 결정하되, 상기 제1 코딩 그룹 및 상기 제2 코딩 그룹의 크기들이 규칙에 따라 정렬되도록, 코딩 그룹 크기들을 결정하는 단계; 및 상기 결정에 기초하여 상기 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 수행하는 단계를 포함하는 방법.
조항 156. 제155조항에 있어서, 상기 제1 코딩 그룹은 변환이 바이패스되거나 식별 변환이 적용되는 변환 스킵 모드를 이용하여 코딩되고, 상기 규칙은, 상기 현재 비디오 블록이 2*M개보다 많은 샘플 및/또는 잔차 블록 크기를 포함하는지에 기초하여 상기 제1 코딩 그룹의 크기가 결정됨을 명시하는, 방법.
조항 157. 제155조항에 있어서, 상기 제1 코딩 그룹은 변환이 바이패스되거나 식별 변환이 적용되는 변환 스킵 모드를 이용하지 않고 코딩되고, 상기 규칙은, 상기 현재 비디오 블록의 폭(W) 또는 높이(H)가 K와 동일한지에 기초하여 상기 제1 코딩 그룹의 크기가 결정됨을 명시하고, K는 정수인, 방법.
조항 158. 제155조항에 있어서, 상기 제1 코딩 그룹 및 상기 제2 코딩 그룹은 각각 변환 스킵 모드 및 일반 잔차 코딩 모드를 이용하여 코딩되고, 상기 규칙은, 상기 제1 코딩 그룹 및 상기 제2 코딩 그룹이 2*2, 2*8, 2*8, 2*4, 8*2 또는 4*2의 크기를 가짐을 명시하는, 방법.
조항 159. 제158조항에 있어서, 상기 크기는 N*2 또는 N*2 잔차 블록들에 대해 이용되고, N은 정수인, 방법.
조항 160. 비디오 처리 방법으로서, 비디오의 현재 비디오 블록과 상기 비디오의 코딩된 표현 사이의 변환을 위해, 광학적 흐름을 이용하여 모션 정보가 개선되는 예측 개선 광학적 흐름(PROF; prediction refinement optical flow) 툴의 적용가능성을, 상기 현재 비디오 블록과 연관된 코딩된 정보 및/또는 디코딩된 정보에 기초하여 결정하는 단계; 및 상기 결정에 기초하여 변환을 수행하는 단계를 포함하는 방법.
조항 161. 제160조항에 있어서, 상기 현재 비디오 블록은 어파인 모드를 이용하여 코딩되는, 방법.
조항 162. 제161조항에 있어서, 상기 결정하는 단계는, 상기 현재 비디오 블록을 포함하는 현재 픽처의 치수와는 상이한 치수를 갖는 상기 변환에 이용된 기준 픽처로 인해 상기 PROF 툴을 적용하지 않기로 결정하는, 방법.
조항 163. 제161조항에 있어서, 상기 결정하는 단계는 동일한 치수들을 갖는 양쪽 기준 픽처들 및 쌍방 예측을 이용한 변환으로 인해 상기 PROF 툴을 적용하기로 결정하는, 방법.
조항 164. 제161조항에 있어서, 상기 PROF 툴의 적용가능성은 기준 픽처와 상기 현재 비디오 블록을 포함하는 현재 픽처 사이의 해상도 비율에 따라 결정되는, 방법.
조항 165. 제160조항에 있어서, 상기 결정하는 단계는 소정의 조건을 명시하는 규칙에 따라 상기 PROF 툴을 적용하지 않기로 결정하는, 방법.
조항 166. 제165조항에 있어서, 상기 소정의 조건은, i) 일반화된 쌍방 예측이 인에이블되거나, ii) 가중 예측이 인에이블되거나, iii) 절반 픽셀 보간 필터가 적용되는 것을 포함하는, 방법.
조항 167. 제1조항 내지 제166조항 중 어느 하나에 있어서, 상기 개선 동작에 관련된 정보는, 시퀀스, 픽처, 슬라이스, 타일, 브릭, 또는 다른 비디오 영역을 포함하는 비디오 유닛 레벨에서 시그널링되는, 방법.
조항 168. 제1조항 내지 제166조항 중 어느 하나에 있어서, 상기 개선 동작은, 양방향 광학적 흐름(BDOF) 또는 예측 개선 광학적 흐름(PROF)이 현재 비디오 블록에 적용되는지에 따라 상기 현재 비디오 블록의 코딩된 정보에 기초하여 규칙에 따라 수행되는, 방법.
조항 169. 제1조항 내지 제168조항 중 어느 하나에 있어서, 상기 변환은 상기 비디오로부터 코딩된 표현을 생성하는 것 또는 상기 코딩된 표현으로부터 상기 비디오를 생성하는 것을 포함하는, 방법.
조항 170. 프로세서 및 명령어들이 저장된 비일시적 메모리를 포함하는 비디오 시스템의 장치로서, 상기 명령어들은 상기 프로세서에 의한 실행시 상기 프로세서로 하여금 제1조항 내지 제169조항 중 어느 하나의 방법을 구현하게 하는, 장치.
조항 171. 비일시적 컴퓨터 판독가능한 매체에 저장된 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품은 제1조항 내지 제169조항 중 어느 하나의 방법을 실행하기 위한 프로그램 코드를 포함하는, 컴퓨터 프로그램 제품.
전술한 내용으로부터, 본 개시된 기술의 특정한 실시예들이 예시의 목적으로 여기서 설명되었지만, 개시된 기술의 범위를 벗어나지 않고 다양한 수정이 이루어질 수 있다는 것이 이해될 것이다. 따라서, 본 개시된 기술은 첨부된 청구항들에 의한 경우를 제외하고는 제한되지 않는다.
본 특허 문서에서 설명된 주제와 기능적 동작들의 구현은, 본 명세서에서 개시된 구조들 및 그들의 구조적 균등물들을 포함한, 다양한 시스템들, 디지털 전자 회로, 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어로, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에서 설명된 주제의 구현은, 하나 이상의 컴퓨터 프로그램 제품, 즉, 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 동작을 제어하기 위한 유형의 및 비일시적 컴퓨터 판독가능한 매체에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독가능한 매체는, 머신 판독가능한 저장 디바이스, 머신 판독가능한 저장 기판, 메모리 디바이스, 머신 판독가능한 전파된 신호에 영향을 미치는 물질의 조성, 또는 이들 중 하나 이상의 조합일 수 있다. 용어 "데이터 처리 유닛 또는"데이터 처리 장치"는, 예로서 프로그램가능한 프로세서, 컴퓨터, 또는 복수의 프로세서나 컴퓨터를 포함한, 데이터를 처리하기 위한 모든 장치, 디바이스, 및 머신을 포괄한다. 장치는, 하드웨어 외에도, 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합으로 구성된 코드를 포함할 수 있다.
(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트, 또는 코드라고도 알려진) 컴퓨터 프로그램은, 컴파일형 또는 인터프리터형 언어를 포함한 임의의 형태의 프로그래밍 언어로 작성될 수 있고-, 단독형 프로그램이나, 모듈, 컴포넌트, 서브루틴, 또는 컴퓨팅 환경에서 이용하기에 적합한 기타의 유닛을 포함한, 임의 형태로 배치될 수 있다. 컴퓨터 프로그램은 반드시 파일 시스템 내의 파일에 대응할 필요는 없다. 프로그램은 다른 프로그램이나 데이터를 보유하고 있는 파일(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트)의 일부로서, 해당 프로그램에 전용된 단일 파일에, 또는 복수의 조율된 파일들(예를 들어, 하나 이상의 모듈, 서브 프로그램, 또는 코드의 부분들을 저장하고 있는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은, 하나의 컴퓨터에서, 또는 적어도 하나의 사이트에 위치하거나 복수의 사이트에 걸쳐 분산되고 통신 네트워크를 통해 상호접속된 복수의 컴퓨터에서 실행되도록 배치될 수 있다.
본 명세서에서 설명된 프로세스들 및 로직 흐름들은, 입력 데이터에 관해 동작하고 출력을 생성함으로써 하나 이상의 컴퓨터 프로그램을 실행하여 기능을 수행하는 하나 이상의 프로그램가능한 프로세서에 의해 수행될 수 있다. 프로세스들과 로직 흐름들은 또한, 특별 목적 로직 회로, 예를 들어, FPGA(필드 프로그래머블 게이트 어레이) 또는 ASIC(application specific integrated circuit; 주문형 집적 회로)에 의해 수행될 수 있고, 또한 장치가 이들로서 구현될 수 있다.
컴퓨터 프로그램을 실행하기에 적합한 프로세서로는, 예로서, 범용 마이크로프로세서 및 특별 목적 마이크로프로세서 양쪽 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서가 포함된다. 일반적으로, 프로세서는 판독 전용 메모리나 랜덤 액세스 메모리 또는 양쪽 모두로부터 명령어와 데이터를 수신할 것이다. 컴퓨터의 본질적 요소들은, 명령어를 수행하기 위한 프로세서와, 명령어 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어, 자기, 광자기 디스크, 또는 광 디스크를 포함하거나, 이들로부터 데이터를 수신, 이들에게 데이터를 전송, 또는 양쪽 모두를 위해 동작적으로 결합될 수 있다. 그러나, 컴퓨터는 이러한 디바이스를 가질 필요는 없다. 컴퓨터 프로그램 명령어 및 데이터를 저장하기에 적합한 컴퓨터 판독가능한 매체는, 예로서 반도체 메모리 디바이스들, 예를 들어 EPROM, EEPROM 및 플래시 메모리 디바이스를 포함한, 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스를 포함한다. 프로세서와 메모리는 특별 목적 로직 회로에 의해 보충되거나, 이에 병합될 수 있다.
도면들과 함께, 본 명세서는, 단지 예시인 것으로 간주되어야 하며, 여기서, 예시란 예를 의미한다. 여기서 사용될 때, 단수 형태, "한(a)", "하나의(an)", "그 하나(the)"는, 문맥상 명확하게 달리 표시하지 않는 한, 복수 형태도 역시 포함하는 것을 의도한다. 추가로, "또는"의 사용은, 문맥상 명시적으로 달리 나타내지 않는 한, "및/또는"을 포함하는 것을 의도한다.
본 특허 문서가 많은 특정한 사항들을 포함하지만, 이들은 임의의 발명의 범위의 또는 청구될 수 있는 것의 범위에 관한 제한으로서 해석되어서는 안 되고, 특정한 발명의 특정한 실시예들 고유의 피처들의 설명으로서 해석되어야 한다. 별개의 실시예들의 정황에서 본 특허 문서에서 설명된 소정 피처들은 또한, 단일의 실시예에서 조합하여 구현될 수 있다. 역으로, 단일 실시예의 정황에서 설명된 다양한 피처들은 또한, 복수의 실시예에서 별개로 구현되거나 임의의 적절한 서브조합(subcombination)으로 구현될 수 있다. 게다가, 피처들이 상기에서 소정 조합으로 작용하는 것으로 설명되거나 심지어 그와 같이 처음 청구되더라도, 청구된 조합으로부터의 하나 이상의 피처들은 일부 경우에는 그 조합으로부터 삭제될 수도 있고, 청구된 조합은 서브조합이나 서브조합의 변형에 관한 것일 수도 있다.
유사하게, 동작들이 도면에서 특정 순서로 도시되더라도, 이것은, 바람직한 결과를 달성하기 위해 이러한 동작들이 도시된 특정 순서로 또는 순차적 순서로 수행될 것을 요구하거나, 도시된 모든 동작들이 수행될 것을 요구하는 것으로 이해되어서는 안 된다. 또한, 본 특허 문헌에서 설명된 실시예들에서의 다양한 시스템 컴포넌트들의 분리는 모든 실시예에서 이러한 분리를 요구하는 것으로 이해되어서는 안 된다.
단지 몇 개의 구현 및 예들만이 설명되었지만, 본 특허 문서에서 설명되고 예시된 내용에 기초하여 다른 구현, 개선 및 변형이 이루어질 수 있다.

Claims (171)

  1. 비디오 데이터를 처리하는 방법으로서,
    비디오의 제1 쌍방 예측된 비디오 블록과 상기 비디오의 비트스트림 사이의 제1 변환에 대해, 상기 제1 쌍방 예측된 비디오 블록 내의 한 영역의 예측 샘플들을 개선하기 위해 적어도 하나의 제1 모션 벡터 개선이 도출되는 제1 광학적 흐름 기반의 방법을 이용하여 상기 제1 쌍방 예측된 비디오 블록의 모션 정보가 개선된다고 결정하는 단계;
    상기 적어도 하나의 제1 모션 벡터 개선을 제1 범위로 클리핑하는 단계;
    적어도 하나의 클리핑된 제1 모션 벡터 개선에 기초하여 상기 제1 변환을 수행하는 단계;
    상기 비디오의 제2 어파인 비디오 블록(affine video block)과 상기 비트스트림 사이의 제2 변환에 대해, 상기 제2 어파인 비디오 블록 내의 한 영역의 예측 샘플들을 개선하기 위해 적어도 하나의 제2 모션 벡터 개선이 도출되는 제2 광학적 흐름 기반의 방법을 이용하여 상기 제2 어파인 비디오 블록의 모션 정보가 개선된다고 결정하는 단계;
    상기 적어도 하나의 제2 모션 벡터 개선을 제2 범위로 클리핑하는 단계; 및
    적어도 하나의 클리핑된 제2 모션 벡터 개선에 기초하여 상기 제2 변환을 수행하는 단계
    를 포함하고,
    상기 제1 범위는 제2 범위와는 상이하고,
    상기 제1 광학적 흐름 기반의 방법은 쌍방 예측된 비디오 블록들에 대한 쌍방 광학적 흐름 툴이고, 상기 제2 광학적 흐름 기반의 방법은 어파인 비디오 블록들에 대한 예측 개선 광학적 흐름 툴이고,
    상기 제1 범위는 [-N0, M0]이고, 상기 제2 범위는 [-N1, M1]이며, 상기 N0, M0, N1 및 M1은 정수들이고,
    N0 및 M0은 2K0-1과 같은 동일한 값을 갖고, N1 및 M1은 2K1-1과 같은 동일한 값을 가지며, K0 및 K1은 정수들이고,
    [-N0, M0]은 [-15, 15]이고,
    [-N1, M1]은 [-31, 31]인, 방법.
  2. 제1항에 있어서, 상기 제1 쌍방 예측된 비디오 블록 내의 상기 영역은 전체의 제1 쌍방 예측된 비디오 블록 또는 상기 제1 쌍방 예측된 비디오 블록 내의 한 서브블록이고, 상기 제2 어파인 비디오 블록 내의 상기 영역은 전체의 제2 어파인 비디오 블록 또는 상기 제2 어파인 비디오 블록 내의 한 서브블록인, 방법.
  3. 제1항에 있어서, 상기 제1 모션 벡터 개선은 수평 성분 및 수직 성분을 포함하고, 상기 클리핑하는 단계는 수평 성분 및/또는 수직 성분을 상기 제1 범위로 클리핑하는 단계를 포함하고/하거나;
    상기 제2 모션 벡터 개선은 수평 성분 및 수직 성분을 포함하고, 상기 클리핑하는 단계는 수평 성분 및/또는 수직 성분을 상기 제2 범위로 클리핑하는 단계를 포함하는, 방법.
  4. 제1항에 있어서, 상기 제1 변환은 상기 제1 쌍방 예측된 비디오 블록을 상기 비트스트림 내로 인코딩하는 것을 포함하고, 상기 제2 변환은 상기 제2 어파인 비디오 블록을 상기 비트스트림 내로 인코딩하는 것을 포함하는, 방법.
  5. 제1항에 있어서, 상기 제1 변환은 상기 비트스트림으로부터 상기 제1 쌍방 예측된 비디오 블록을 디코딩하는 것을 포함하고, 상기 제2 변환은 상기 비트스트림으로부터 상기 제2 어파인 비디오 블록을 디코딩하는 것을 포함하는, 방법.
  6. 프로세서 및 명령어들을 갖는 비일시적 메모리를 포함하는 비디오 데이터를 처리하기 위한 장치로서, 상기 명령어들은, 상기 프로세서에 의한 실행시, 상기 프로세서로 하여금:
    비디오의 제1 쌍방 예측된 비디오 블록과 상기 비디오의 비트스트림 사이의 제1 변환에 대해, 상기 제1 쌍방 예측된 비디오 블록 내의 한 영역의 예측 샘플들을 개선하기 위해 적어도 하나의 제1 모션 벡터 개선이 도출되는 제1 광학적 흐름 기반의 방법을 이용하여 상기 제1 쌍방 예측된 비디오 블록의 모션 정보가 개선된다고 결정하고;
    상기 적어도 하나의 제1 모션 벡터 개선을 제1 범위로 클리핑하고;
    적어도 하나의 클리핑된 제1 모션 벡터 개선에 기초하여 상기 제1 변환을 수행하고;
    상기 비디오의 제2 어파인 비디오 블록과 상기 비트스트림 사이의 제2 변환에 대해, 상기 제2 어파인 비디오 블록 내의 한 영역의 예측 샘플들을 개선하기 위해 적어도 하나의 제2 모션 벡터 개선이 도출되는 제2 광학적 흐름 기반의 방법을 이용하여 상기 제2 어파인 비디오 블록의 모션 정보가 개선된다고 결정하고;
    상기 적어도 하나의 제2 모션 벡터 개선을 제2 범위로 클리핑하고;
    적어도 하나의 클리핑된 제2 모션 벡터 개선에 기초하여 상기 제2 변환을 수행하게 하며,
    상기 제1 범위는 제2 범위와는 상이하고,
    상기 제1 광학적 흐름 기반의 방법은 쌍방 예측된 비디오 블록들에 대한 쌍방 광학적 흐름 툴이고, 상기 제2 광학적 흐름 기반의 방법은 어파인 비디오 블록들에 대한 예측 개선 광학적 흐름 툴이고,
    상기 제1 범위는 [-N0, M0]이고, 상기 제2 범위는 [-N1, M1]이며, 상기 N0, M0, N1 및 M1은 정수들이고,
    N0 및 M0은 2K0-1과 같은 동일한 값을 갖고, N1 및 M1은 2K1-1과 같은 동일한 값을 가지며, K0 및 K1은 정수들이고,
    [-N0, M0]은 [-15, 15]이고,
    [-N1, M1]은 [-31, 31]인, 장치.
  7. 명령어들을 저장한 비일시적 컴퓨터-판독가능한 저장 매체로서, 상기 명령어들은 프로세서로 하여금 :
    비디오의 제1 쌍방 예측된 비디오 블록과 상기 비디오의 비트스트림 사이의 제1 변환에 대해, 상기 제1 쌍방 예측된 비디오 블록 내의 한 영역의 예측 샘플들을 개선하기 위해 적어도 하나의 제1 모션 벡터 개선이 도출되는 제1 광학적 흐름 기반의 방법을 이용하여 상기 제1 쌍방 예측된 비디오 블록의 모션 정보가 개선된다고 결정하고;
    상기 적어도 하나의 제1 모션 벡터 개선을 제1 범위로 클리핑하고;
    적어도 하나의 클리핑된 제1 모션 벡터 개선에 기초하여 상기 제1 변환을 수행하고;
    상기 비디오의 제2 어파인 비디오 블록(affine video block)과 상기 비트스트림 사이의 제2 변환에 대해, 상기 제2 어파인 비디오 블록 내의 한 영역의 예측 샘플들을 개선하기 위해 적어도 하나의 제2 모션 벡터 개선이 도출되는 제2 광학적 흐름 기반의 방법을 이용하여 상기 제2 어파인 비디오 블록의 모션 정보가 개선된다고 결정하고;
    상기 적어도 하나의 제2 모션 벡터 개선을 제2 범위로 클리핑하고;
    적어도 하나의 클리핑된 제2 모션 벡터 개선에 기초하여 상기 제2 변환을 수행하게 하며,
    상기 제1 범위는 제2 범위와는 상이하고,
    상기 제1 광학적 흐름 기반의 방법은 쌍방 예측된 비디오 블록들에 대한 쌍방 광학적 흐름 툴이고, 상기 제2 광학적 흐름 기반의 방법은 어파인 비디오 블록들에 대한 예측 개선 광학적 흐름 툴이고,
    상기 제1 범위는 [-N0, M0]이고, 상기 제2 범위는 [-N1, M1]이며, 상기 N0, M0, N1 및 M1은 정수들이고,
    N0 및 M0은 2K0-1과 같은 동일한 값을 갖고, N1 및 M1은 2K1-1과 같은 동일한 값을 가지며, K0 및 K1은 정수들이고,
    [-N0, M0]은 [-15, 15]이고,
    [-N1, M1]은 [-31, 31]인, 비일시적 컴퓨터-판독가능한 저장 매체.
  8. 비디오 처리 장치에 의해 수행되는 방법에 의해 생성된 비디오의 비트스트림을 저장한 비일시적 컴퓨터-판독가능한 기록 매체로서, 상기 방법은,
    상기 비디오의 제1 쌍방 예측된 비디오 블록에 대해, 상기 제1 쌍방 예측된 비디오 블록 내의 한 영역의 예측 샘플들을 개선하기 위해 적어도 하나의 제1 모션 벡터 개선이 도출되는 제1 광학적 흐름 기반의 방법을 이용하여 상기 제1 쌍방 예측된 비디오 블록의 모션 정보가 개선된다고 결정하는 단계;
    상기 적어도 하나의 제1 모션 벡터 개선을 제1 범위로 클리핑하는 단계;
    적어도 하나의 클리핑된 제1 모션 벡터 개선에 기초하여 상기 비트스트림을 생성하는 단계;
    상기 비디오의 제2 어파인 비디오 블록에 대해, 상기 제2 어파인 비디오 블록 내의 한 영역의 예측 샘플들을 개선하기 위해 적어도 하나의 제2 모션 벡터 개선이 도출되는 제2 광학적 흐름 기반의 방법을 이용하여 상기 제2 어파인 비디오 블록의 모션 정보가 개선된다고 결정하는 단계;
    상기 적어도 하나의 제2 모션 벡터 개선을 제2 범위로 클리핑하는 단계; 및
    적어도 하나의 클리핑된 제2 모션 벡터 개선에 기초하여 상기 비트스트림을 생성하는 단계
    를 포함하고,
    상기 제1 범위는 제2 범위와는 상이하고,
    상기 제1 광학적 흐름 기반의 방법은 쌍방 예측된 비디오 블록들에 대한 쌍방 광학적 흐름 툴이고, 상기 제2 광학적 흐름 기반의 방법은 어파인 비디오 블록들에 대한 예측 개선 광학적 흐름 툴이고,
    상기 제1 범위는 [-N0, M0]이고, 상기 제2 범위는 [-N1, M1]이며, 상기 N0, M0, N1 및 M1은 정수들이고,
    N0 및 M0은 2K0-1과 같은 동일한 값을 갖고, N1 및 M1은 2K1-1과 같은 동일한 값을 가지며, K0 및 K1은 정수들이고,
    [-N0, M0]은 [-15, 15]이고,
    [-N1, M1]은 [-31, 31]인, 비일시적 컴퓨터-판독가능한 기록 매체.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
  62. 삭제
  63. 삭제
  64. 삭제
  65. 삭제
  66. 삭제
  67. 삭제
  68. 삭제
  69. 삭제
  70. 삭제
  71. 삭제
  72. 삭제
  73. 삭제
  74. 삭제
  75. 삭제
  76. 삭제
  77. 삭제
  78. 삭제
  79. 삭제
  80. 삭제
  81. 삭제
  82. 삭제
  83. 삭제
  84. 삭제
  85. 삭제
  86. 삭제
  87. 삭제
  88. 삭제
  89. 삭제
  90. 삭제
  91. 삭제
  92. 삭제
  93. 삭제
  94. 삭제
  95. 삭제
  96. 삭제
  97. 삭제
  98. 삭제
  99. 삭제
  100. 삭제
  101. 삭제
  102. 삭제
  103. 삭제
  104. 삭제
  105. 삭제
  106. 삭제
  107. 삭제
  108. 삭제
  109. 삭제
  110. 삭제
  111. 삭제
  112. 삭제
  113. 삭제
  114. 삭제
  115. 삭제
  116. 삭제
  117. 삭제
  118. 삭제
  119. 삭제
  120. 삭제
  121. 삭제
  122. 삭제
  123. 삭제
  124. 삭제
  125. 삭제
  126. 삭제
  127. 삭제
  128. 삭제
  129. 삭제
  130. 삭제
  131. 삭제
  132. 삭제
  133. 삭제
  134. 삭제
  135. 삭제
  136. 삭제
  137. 삭제
  138. 삭제
  139. 삭제
  140. 삭제
  141. 삭제
  142. 삭제
  143. 삭제
  144. 삭제
  145. 삭제
  146. 삭제
  147. 삭제
  148. 삭제
  149. 삭제
  150. 삭제
  151. 삭제
  152. 삭제
  153. 삭제
  154. 삭제
  155. 삭제
  156. 삭제
  157. 삭제
  158. 삭제
  159. 삭제
  160. 삭제
  161. 삭제
  162. 삭제
  163. 삭제
  164. 삭제
  165. 삭제
  166. 삭제
  167. 삭제
  168. 삭제
  169. 삭제
  170. 삭제
  171. 삭제
KR1020217036613A 2019-05-16 2020-05-18 모션 정보 개선의 서브영역 기반 결정 KR102647582B1 (ko)

Applications Claiming Priority (17)

Application Number Priority Date Filing Date Title
CN2019087193 2019-05-16
CNPCT/CN2019/087193 2019-05-16
CNPCT/CN2019/090037 2019-06-04
CN2019090037 2019-06-04
CN2019090903 2019-06-12
CNPCT/CN2019/090903 2019-06-12
CN2019093616 2019-06-28
CNPCT/CN2019/093616 2019-06-28
CN2019093973 2019-06-29
CNPCT/CN2019/093973 2019-06-29
CN2019094282 2019-07-01
CNPCT/CN2019/094282 2019-07-01
CN2019104489 2019-09-05
CNPCT/CN2019/104489 2019-09-05
CN2019116757 2019-11-08
CNPCT/CN2019/116757 2019-11-08
PCT/CN2020/090802 WO2020228836A1 (en) 2019-05-16 2020-05-18 Sub-region based determination of motion information refinement

Publications (2)

Publication Number Publication Date
KR20220009947A KR20220009947A (ko) 2022-01-25
KR102647582B1 true KR102647582B1 (ko) 2024-03-15

Family

ID=73289816

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217036613A KR102647582B1 (ko) 2019-05-16 2020-05-18 모션 정보 개선의 서브영역 기반 결정

Country Status (8)

Country Link
US (2) US11736698B2 (ko)
EP (1) EP3949415A4 (ko)
JP (2) JP7431253B2 (ko)
KR (1) KR102647582B1 (ko)
CN (2) CN113728644B (ko)
BR (1) BR112021021669A2 (ko)
SG (1) SG11202111843XA (ko)
WO (1) WO2020228836A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113661711A (zh) * 2019-03-16 2021-11-16 Vid拓展公司 利用光流补偿进行的帧间预测存储器访问带宽减少方法
US11330287B2 (en) * 2019-06-28 2022-05-10 Tencent America LLC Method and apparatus for video coding
US20220264146A1 (en) * 2019-07-01 2022-08-18 Interdigital Vc Holdings France, Sas Bi-prediction refinement in affine with optical flow
WO2022257954A1 (en) * 2021-06-10 2022-12-15 Beijing Bytedance Network Technology Co., Ltd. Method, device, and medium for video processing
WO2023072287A1 (en) * 2021-10-29 2023-05-04 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
US11616970B1 (en) 2022-01-25 2023-03-28 Mediatek Inc. Motion vector refinement apparatus having motion vector predictor derivation circuit that is allowed to start new task without waiting for motion vector difference computation and associated motion vector refinement method
EP4258666A1 (en) * 2022-04-07 2023-10-11 Beijing Xiaomi Mobile Software Co., Ltd. Encoding/decoding video picture data
US20230336773A1 (en) * 2022-04-18 2023-10-19 Tencent America LLC On motion compensated picture boundary padding

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7627037B2 (en) 2004-02-27 2009-12-01 Microsoft Corporation Barbell lifting for multi-layer wavelet coding
CN104584553A (zh) 2012-09-28 2015-04-29 英特尔公司 层间残差预测
KR20150038249A (ko) 2012-09-28 2015-04-08 인텔 코포레이션 계층간 화소 샘플 예측
US9294777B2 (en) 2012-12-30 2016-03-22 Qualcomm Incorporated Progressive refinement with temporal scalability support in video coding
US9521425B2 (en) 2013-03-19 2016-12-13 Qualcomm Incorporated Disparity vector derivation in 3D video coding for skip and direct modes
WO2014166063A1 (en) 2013-04-09 2014-10-16 Mediatek Inc. Default vector for disparity vector derivation for 3d video coding
US9762927B2 (en) 2013-09-26 2017-09-12 Qualcomm Incorporated Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC
US9667996B2 (en) 2013-09-26 2017-05-30 Qualcomm Incorporated Sub-prediction unit (PU) based temporal motion vector prediction in HEVC and sub-PU design in 3D-HEVC
EP3364655A4 (en) * 2015-11-11 2018-10-10 Samsung Electronics Co., Ltd. Method and apparatus for decoding video, and method and apparatus for encoding video
WO2017118409A1 (en) * 2016-01-07 2017-07-13 Mediatek Inc. Method and apparatus for affine merge mode prediction for video coding system
US20180199057A1 (en) * 2017-01-12 2018-07-12 Mediatek Inc. Method and Apparatus of Candidate Skipping for Predictor Refinement in Video Coding
US10701366B2 (en) 2017-02-21 2020-06-30 Qualcomm Incorporated Deriving motion vector information at a video decoder
US10523964B2 (en) 2017-03-13 2019-12-31 Qualcomm Incorporated Inter prediction refinement based on bi-directional optical flow (BIO)
US10595035B2 (en) 2017-03-22 2020-03-17 Qualcomm Incorporated Constraining motion vector information derived by decoder-side motion vector derivation
US10805630B2 (en) 2017-04-28 2020-10-13 Qualcomm Incorporated Gradient based matching for motion search and derivation
US10904565B2 (en) 2017-06-23 2021-01-26 Qualcomm Incorporated Memory-bandwidth-efficient design for bi-directional optical flow (BIO)
US10785494B2 (en) 2017-10-11 2020-09-22 Qualcomm Incorporated Low-complexity design for FRUC
US10986360B2 (en) * 2017-10-16 2021-04-20 Qualcomm Incorproated Various improvements to FRUC template matching
US20190306502A1 (en) 2018-04-02 2019-10-03 Qualcomm Incorporated System and method for improved adaptive loop filtering
US10779002B2 (en) 2018-04-17 2020-09-15 Qualcomm Incorporated Limitation of the MVP derivation based on decoder-side motion vector derivation
TWI719519B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 對於dmvr的塊尺寸限制
WO2020084465A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Simplified coding of generalized bi-directional index
CN112956197A (zh) 2018-10-22 2021-06-11 北京字节跳动网络技术有限公司 基于编解码信息的解码器侧运动矢量推导的限制
CN112970259A (zh) 2018-11-05 2021-06-15 北京字节跳动网络技术有限公司 视频处理中具有细化的帧间预测
US11962796B2 (en) 2019-04-01 2024-04-16 Qualcomm Incorporated Gradient-based prediction refinement for video coding
WO2020207475A1 (en) * 2019-04-12 2020-10-15 Mediatek Inc. Method and apparatus of simplified affine subblock process for video coding system
KR20230011479A (ko) * 2019-08-23 2023-01-20 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 광학 흐름을 사용한 예측 미세조정을 위한 방법 및 장치

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Chen-Yen Lai et al., "CE4-related: Alignment of displacement bitdepths for BDOF and PROF", JVET of ITU-T and ISO/IEC, JVET-O0281-v1(2019.06.25.)
Xiang Li et al., "Non-CE2: Combination of affine MV clip and prediction refinement with optical flow", JVET of ITU-T and ISO/IEC, JVET-N0737-v2(2019.03.21.)
Xiaoyu Xiu et al., "CE9-related: Improvements on bi-directional optical flow (BDOF)", JVET of ITU-T and ISO/IEC, JVET-N0325-v3(2019.03.26.)

Also Published As

Publication number Publication date
BR112021021669A2 (pt) 2021-12-21
CN113728644A (zh) 2021-11-30
SG11202111843XA (en) 2021-11-29
US20220103827A1 (en) 2022-03-31
JP2024032872A (ja) 2024-03-12
JP2022530516A (ja) 2022-06-29
KR20220009947A (ko) 2022-01-25
US20230403398A1 (en) 2023-12-14
CN113728644B (zh) 2024-01-26
JP7431253B2 (ja) 2024-02-14
US11736698B2 (en) 2023-08-22
WO2020228836A1 (en) 2020-11-19
CN117395419A (zh) 2024-01-12
EP3949415A4 (en) 2022-08-03
EP3949415A1 (en) 2022-02-09

Similar Documents

Publication Publication Date Title
KR102647582B1 (ko) 모션 정보 개선의 서브영역 기반 결정
CN112913249B (zh) 广义双向预测索引的简化编解码
US11470341B2 (en) Interaction between different DMVD models
US11889108B2 (en) Gradient computation in bi-directional optical flow
US20240098295A1 (en) Efficient affine merge motion vector derivation
US11778170B2 (en) Temporal gradient calculations in bio
JP7241870B2 (ja) 部分的な位置に基づく差分計算
WO2020200269A1 (en) Decoder side motion vector derivation
WO2020103872A1 (en) Prediction refinement for combined inter intra prediction mode
CN112956197A (zh) 基于编解码信息的解码器侧运动矢量推导的限制
CN110933420A (zh) 仿射模式中自适应运动矢量分辨率的快速算法
WO2020147745A1 (en) Motion candidate lists that use local illumination compensation
JP2023145563A (ja) 異なる動きベクトル微調整における勾配計算
WO2019229683A1 (en) Concept of interweaved prediction
WO2020084508A1 (en) Harmonization between local illumination compensation and inter prediction coding
WO2020211755A1 (en) Motion vector and prediction sample refinement
JP7322277B2 (ja) 参照ピクチャタイプに従ったツールの使用制限
CN110662076A (zh) 子块的边界增强
CN111010570B (zh) 基于仿射运动信息的尺寸限制
WO2020049447A1 (en) Fast encoding methods for interweaved prediction
WO2020224613A1 (en) Unified calculation method for inter prediction with refinement

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant