KR102610709B1 - 디코더 측 움직임 벡터 유도 - Google Patents

디코더 측 움직임 벡터 유도 Download PDF

Info

Publication number
KR102610709B1
KR102610709B1 KR1020217030715A KR20217030715A KR102610709B1 KR 102610709 B1 KR102610709 B1 KR 102610709B1 KR 1020217030715 A KR1020217030715 A KR 1020217030715A KR 20217030715 A KR20217030715 A KR 20217030715A KR 102610709 B1 KR102610709 B1 KR 102610709B1
Authority
KR
South Korea
Prior art keywords
block
prediction
video
difference
current block
Prior art date
Application number
KR1020217030715A
Other languages
English (en)
Other versions
KR20210145747A (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 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드
Priority to KR1020237041403A priority Critical patent/KR20230169434A/ko
Publication of KR20210145747A publication Critical patent/KR20210145747A/ko
Application granted granted Critical
Publication of KR102610709B1 publication Critical patent/KR102610709B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/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/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • 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/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search

Abstract

비디오 프로세싱 방법은 시각 매체 데이터의 현재 블록 및 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 현재 블록의 변환은 현재 블록에 대한 BIO(bi-directional optical flow) 기술 혹은 DMVR(decoder-side motion vector refinement) 기술 중 하나 혹은 둘 모두의 사용이 활성화되거나 혹은 비활성화되는지 여부를 결정하는 과정을 포함하고, BIO 기술 혹은 DMVR 기술의 사용을 결정하는 과정은 현재 블록과 연관된 비용 기준에 기초한다.

Description

디코더 측 움직임 벡터 유도
관련 출원들과의 상호 참조
본 출원은 2019년 4월 2일에 제출된 국제 특허 출원 번호 PCT/CN2019/081155 및 2019년 5월 7일에 제출된 국제 특허 출원 번호 PCT/CN2019/085796에 대한 우선권과 혜택을 청구하는 2020년 4월 2일에 제출된 국제 특허 출원 번호 PCT/CN2020/082937의 국내 단계이다. 상술한 출원의 전체 개시물은 본 출원의 개시의 일부로서 참고로 통합된다.
본 문서는 비디오 및 이미지 코딩 및 디코딩 기술에 관한 것이다.
디지털 비디오는 인터넷 및 다른 디지털 통신 네트워크 상에서 가장 큰 대역폭 사용을 차지한다. 비디오를 수신하고 디스플레이할 수 있는 연결된 사용자 장치의 수가 증가함에 따라, 디지털 비디오 사용에 대한 대역폭 요구가 계속 증가할 것으로 기대된다.
하나의 예시적인 형태에 있어서, 비디오 프로세싱 방법이 개시된다. 방법은 시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 현재 블록의 변환은 현재 블록에 대한 BIO(bi-directional optical flow) 기술 혹은 DMVR(decoder-side motion vector refinement) 기술 중 하나 혹은 둘 모두의 사용이 활성화되는지 혹은 비활성화되는지 여부를 결정하는 과정을 포함하고, BIO 기술 혹은 DMVR 기술의 사용을 결정하는 과정은 현재 블록에 연관된 비용 기준에 기초한다.
또 다른 예시적인 형태에 있어서, 비디오 프로세싱 방법이 개시된다. 방법은 시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 현재 블록의 변환은 현재 블록에 대한 BIO(bi-directional optical flow) 기술 혹은 DMVR(decoder-side motion vector refinement) 기술 중 하나 혹은 둘 모두의 사용이 활성화되는지 혹은 비활성화되는지 여부를 결정하는 과정을 포함하고, DMVR 기술은 현재 블록의 움직임 정보를 MRSAD(a mean removed sum of absolute differences) 비용 기준 외의 비용 기준에 기초하여 개선하는 과정을 포함한다.
또 다른 예시적인 형태에 있어서, 비디오 프로세싱 방법이 개시된다. 방법은 시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 현재 블록의 변환은 현재 블록에 대한 BIO(bi-directional optical flow) 기술 혹은 DMVR(decoder-side motion vector refinement) 기술 중 하나 혹은 둘 모두의 사용이 활성화되는지 혹은 비활성화되는지 여부를 결정하는 과정을 포함하고, BIO 기술 혹은 DMVR 기술의 사용을 결정하는 과정은 현재 블록과 관련된 한 쌍의 참조 블록들의 평균 값 차이가 임계 값을 초과하는 것으로 계산하는 것에 기초한다.
또다른 예시적인 형태에 있어서, 비디오 프로세싱 방법이 개시된다. 방법은 제1 변경된 참조 블록을 생성하기 위해 제1 참조 블록을 변경하고, 제2 변경된 참조 블록을 생성하기 위해 제2 참조 블록을 변경하는 단계를 포함하되, 제1 참조 블록 및 제2 참조 블록 모두는 시각 매체 데이터의 현재 블록과 연관되고, 제1 변경된 참조 블록과 제2 변경된 참조 블록 간의 차이를 결정하는 단계를 포함하되, 차이는 SATD(sum of absolute transformed differences), MRSATD(a mean removed sum of absolute transformed differences), SSE(a sum of squares error), MRSSE(a mean removed sum of squares error), 평균값 차이(a mean value differences, 혹은 그라디언트 값 중 하나 이상을 포함하며, 시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 변환은 제1 참조 블록과 제2 참조 블록을 각각 변경하여 생성된 제1 변경된 참조 블록과 제2 변경된 참조 블록 간의 차이의 사용을 포함한다.
또다른 예시적인 형태에 있어서, 비디오 프로세싱 방법이 개시된다. 방법은 시각 매체 데이터의 현재 블록과 연관된 참조 픽처들을 이용하여 시간적 그라디언트 혹은 변경된 시간적 그라디언트를 결정하는 단계를 포함하되, 시간적 그라디언트 혹은 변경된 시간적 그라디언트는 참조 픽처들의 차이를 지시하고, 시각 매체 데이터의 현재 블록 및 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 변환은 시간적 그라디언트 혹은 변경된 시간적 그라디언트에 부분적으로 기초하는 BIO(bi-directional optical flow) 기술의 사용을 포함한다.
또다른 예시적인 형태에 있어서, 비디오 프로세싱 방법이 개시된다. 방법은 제1 비디오 블록 혹은 그의 서브 블록과 연관된 참조 픽처들을 이용하여 제1 시간적 그라디언트를 결정하는 단계, 제2 비디오 블록 혹은 그의 서브 블록과 연관된 참조 픽처들을 이용하여 제2 시간적 그라디언트를 결정하는 단계, 변경된 제1 시간적 그라디언트와 변경된 제2 시간적 그라디언트를 생성하기 위해 제1 시간적 그라디언트의 변경과 제2 시간적 그라디언트의 변경을 수행하는 단계를 포함하고, 여기서 제1 비디오 블록과 연관된 제1 시간적 그라디언트의 변경은 제2 비디오 블록과 연관된 제2 시간적 그라디언트의 변경과 상이하고, 제1 비디오 블록과 제2 비디오 블록을 대응 코딩 표현으로의 변환을 수행하는 단계를 포함한다.
또다른 예시적인 형태에 있어서, 비디오 프로세싱 방법이 개시된다. 방법은 현재 블록과 연관된 제1 인터 참조 블록 및 제2 인터 참조 블록 중 하나 혹은 둘 모두를 변경하는 단계, 변경된 제1 인터 참조 블록 및/혹은 변경된 제2 인터 참조 블록 중 하나 혹은 둘 모두의 이용에 기초하여 BIO(bi-directional optical flow) 기술을 적용함으로서 현재 블록과 연관된 공간적 그라디언트를 결정하는 단계, 및 현재 블록과 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 변환은 현재 블록과 연관된 공간적 그라디언트의 사용을 포함한다.
또다른 예시적인 형태에 있어서, 비디오 프로세싱 방법이 개시된다. 방법은 프로세서에 의해 블록 레벨에서 시그널링되는 플래그가, 적어도 부분적으로 DMVR(decoder-side motion vector refinement) 기술 혹은 BIO(bidirectional optical flow) 기술 중 하나 혹은 둘 모두가 현재 블록에 대해 활성화되어야함을 지시 한다는 결정을 수행하는 단계, 현재 블록과 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 코딩된 표현은 DMVR 기술 및/혹은 BIO 기술 중 하나 혹은 둘 모두가 활성화되는지 여부를 지시하는 플래그를 포함한다.
또다른 예시적인 형태에 있어서, 비디오 프로세싱 방법이 개시된다. 방법은 프로세서에 의해 DMVR(decoder-side motion vector refinement) 기술이 현재 블록에 대해 활성화되어야 한다는 결정을 수행하는 단계를 포함하되, 결정은 현재 블록의 높이에만 배타적으로 기초하고, 현재 블록과 대응 코딩 표현 간의 변환을 수행하는 단계를 포함한다.
또다른 예시적인 형태에 있어서, 비디오 프로세싱 방법이 개시된다. 방법은 시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 변환은 DMVR(decoder-side motion vector refinement) 기술 혹은 BIO(bi-directional optical flow) 기술 중 하나 혹은 둘 모두와 연관된 규칙들의 현재 블록에 대한 사용을 포함하고, DMVR 기술과 연관된 규칙들은 BIO 기술에 대해 적용되는 것과 동일하며, 현재 블록에 대한 BIO 기술 혹은 DMVR 기술 중 하나 혹은 둘 모두의 이용이 활성화 혹은 비활성화 되는지 여부의 결정은 규칙들의 적용에 기초한다.
또다른 예시적인 형태에 있어서, 상술한 방법은 프로세서를 포함하는 비디오 디코더 장치에 의해 구현될 수 있다.
또다른 예시적인 형태에 있어서, 상술한 방법은 프로세서를 포함하는 비디오 인코더 장치에 의해 구현될 수 있다.
다른 예시적인 양상에 있어서, 이들 방법은 프로세서 실행가능 명령의 형태로 구현되고 컴퓨터 판독가능 프로그램 매체에 저장될 수 있다.
이 양상 및 다른 양상이 본 문서에 더 기술될 수 있다.
도 1은 양방향 매칭의 일 예를 도시한다.
도 2는 탬플릿 매칭의 일 예를 도시한다.
도 3은 FRUC(Frame-Rate Up Conversion)에서 단방향 움직임 추정(motion estimation, ME)의 일 예를 도시한다.
도 4는 광학 흐름 궤적의 일 예를 도시한다.
도 5a및 5b는 블록 확장 없는 BIO(bi-directional optical flow)의 예들을 도시한다.
도 6은 6개의 점 탐색에 의한 양방향 매칭의 일 예를 도시한다.
도 7은 적응적 정수 탐색 패턴 및 하프(half) 샘플 탐색 패턴의 예들을 도시한다.
도 8은 비디오 프로세싱 장치의 일 예를 나타내는 블록도를 도시한다.
도 9는 비디오 인코더의 예시적인 구현의 블록도를 도시한다.
도 10은 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 11은 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 12는 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 13은 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 14는 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 15는 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 16은 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 17은 개시된 기술들이 구현될 수 있는 예시적인 비디오 프로세싱 시스템의 블록도를 도시한다.
도 18은 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 19는 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 20은 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 21은 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 22는 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 23은 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 24는 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 25는 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 26은 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
도 27은 비디오 프로세싱 방법의 일 예에 대한 흐름도를 도시한다.
비디오의 압축률을 향상시키기 위해 연구자들은 비디오를 인코딩하는 새로운 기술을 지속적으로 찾고 있다. 본 문서는 압축 해제 또는 디코딩된 디지털 비디오의 품질을 개선하기 위해 비디오 비트스트림의 디코더에 의해 사용될 수 있는 다양한 기술을 제공한다. 또한, 비디오 인코더는 추가 인코딩에 사용되는 디코딩된 프레임을 재구성하기 위해 인코딩 프로세스 동안 이러한 기술을 구현할 수도 있다.
섹션 제목은 가독성을 향상시키기 위해 본 문서에서 사용되며 각 섹션에서 설명된 기술 및 실시예의 범위를 해당 섹션으로만 제한하는 것은 아니다. 또한, 기존의 다양한 비디오 코덱 표준의 특정 용어가 사용되나, 개시된 기술은 이러한 비디오 표준 또는 그 후속 표준에 국한되지 않고 다른 비디오 코덱 표준에도 적용 가능하다. 또한, 일부 경우에, 대응하는 코딩 단계를 사용하여 기술이 개시되고, 디코더에서 대응하는 디코딩 단계가 역순으로 수행될 것임을 이해될 것이다. 또한, 코딩은 비디오가 하나의 코딩된 표현(예를 들어, 1 비트율)에서 다른 코딩된 표현(예를 들어, 다른 비트율)으로 표현되는 트랜스코딩을 수행하는 데 사용될 수도 있다.
1. 요약
본 문서는 비디오 코딩 기술에 관한 것이다. 구체적으로, 비디오 코딩에서의 움직임 보상에 관한 것이다. 이것은 고효율 비디오 코딩(HEVC)과 같은 기존의 비디오 코딩 표준 또는 완결될 표준(Versatile Video coding)에 적용될 수 있다. 이는 또한 미래의 비디오 코딩 표준 또는 비디오 코덱에 적용될 수 있다.
2. 배경 기술
비디오 코딩 표준은 주로 잘 알려진 ITU-T 및 ISO/IEC 표준의 개발을 통해 발전해왔다. ITU-T는 H.261 및 H.263을 제작하였고, ISO/IEC는 MPEG-1 및 MPEG-4 Visual을 제작하였고, 이들 두 조직은 공동으로 H.262/MPEG-2 Video 및 H.264/MPEG-4 Advanced Video Coding (AVC) 및 H.265/HEVC 표준을 제작하였다. H.262 이후, 비디오 코딩 표준은 시간 예측 및 변환 코딩이 이용되는 하이브리드 비디오 코딩 구조에 기초한다. HEVC 이후의 미래의 비디오 코딩 기술을 탐구하기 위하여, 2015년에 VCEG 및 MPEG가 공동으로 JVET(Joint Video Exploration Team)를 설립하였다. 그 후, 많은 새로운 방법이 JVET에 의해 채택되어 왔고, JEM(Joint Exploration Model)이라는 참조 소프트웨어에 적용되었다. 2018년 4월, VCEG (Q6/16) 및 ISO/IEC JTC1 SC29/WG11 (MPEG) 간의 JVET(Joint Video Expert Team)가 HEVC에 비해 50% 비트율 감소를 목표로 하는 VVC 표준에 작업하도록 조직되었다.
VVC 드래프트의 최신 버전, 예를 들어 VVC (드래프트 2)는 하기의 주소에서 확인된다:
http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/11_Ljubljana/wg11/JVET-K1001-v7.zip . VTM으로 불리는 VVC의 최신 참조 소프트웨어는 하기의 주소에서 확인된다:
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/tags/VTM-2.1.
도 9는 비디오 인코더의 예시적인 구현의 블록도이다. 도 9는 인코더 구현예가 내장 피드백 경로를 갖는 것을 보여주며, 비디오 인코더는 또한 (다음의 비디오 데이터의 인코딩에 사용될 비디오 데이터의 압축된 표현을 재구성하는) 비디오 디코딩 기능을 수행한다.
2.1 패턴 매치 움직임 벡터 유도
PMMVD(pattern matched motion vector derivation) 모드는 프레임율 상승 변환(Frame-Rate Up Conversion: FRUC) 기법에 기반한 특별한 머지 모드이다. 이 모드에서는 블록의 움직임 정보가 시그널링되지 않고 디코더 측에서 유도된다.
FRUC 플래그는 그것의 머지 플래그가 참일 때에 CU에 대해 시그널링될 수 있다. FRUC 플래그가 거짓이면, 머지 인덱스가 시그널링되고, 정규(regular) 머지 모드가 사용된다. FRUC 플래그가 참이면, 추가 FRUC 모드 플래그가 시그널링되어 블록의 움직임 신호를 유도하기 위해 어떤 방법(예를 들어, 양방향 매칭 또는 템플릿 매칭)이 사용되어야 하는지 지시할 수 있다.
인코더 측에서, CU에 대해 FRUC 머지 모드를 사용할지 여부에 대한 결정은 일반(normal) 머지 후보에 대해서와 같이 RD 비용 선택에 기반한다. 예를 들어, 복수의 매칭 모드들(예를 들어, 양방향 매칭 및 템플릿 매칭)이 RD 비용 선택을 사용하여 CU에 대해 확인된다. 최소 비용으로 이어지는 것은 다른 CU 모드들과 더 비교된다. 만약 FRUC 매칭 모드가 가장 효율적인 경우, FRUC 플래그는 해당 CU에 대해 참으로 설정되고, 관련 매칭 모드가 사용된다.
FRUC 머지 모드에서의 움직임 유도 프로세스는 2 단계를 가진다. CU 레벨 움직임 탐색이 먼저 수행되고, 그 다음으로 서브 CU 레벨 움직임 개선이 수행된다. CU 레벨에서, 초기 움직임 벡터는 양방향 매칭 또는 템플릿 매칭에 기반하여 CU 전체에 대해 유도된다. 먼저, MV 후보들의 리스트가 생성되고, 최소 매칭 코스트로 이어지는 후보가 추가 CU 레벨 개선을 위한 출발점으로 선택된다. 그 다음으로, 상기 출발점을 중심으로 양방향 매칭 또는 템플릿 매칭을 기반으로 한 로컬 탐색이 수행된다. 최소 매칭 코스트로 귀결되는 MV가 CU 전체에 대한 MV로 간주된다. 그 후, 유도된 CU 움직임 벡터들을 출발점으로 하여, 움직임 정보는 서브 CU 레벨에서 추가로 개선된다.
예를 들어, CU 움직임 정보 유도를 위해 다음과 같은 유도 과정이 수행된다. 첫 번째 단계에서, 전체 CU에 대한 MV가 유도된다. 두 번째 단계에서, 상기 CU는 서브 CU들로 더 분할된다. M의 값은(16) 에서와 같이 계산되며, D는 미리 정의된 분할 깊이로 JEM에서 기본적으로 3으로 설정된다. 다음으로, 각 서브 CU에 대한 MV가 유도된다.
도 1에 도시된 바와 같이, 양방향 매칭은 두 상이한 참조 픽처들에서 현재 CU의 움직임 궤적을 따라 두 블록들 간의 가장 가까운 매칭을 찾음으로써 현재 CU의 움직임 정보를 유도하는 데에 사용된다. 연속적인 움직임 궤적의 가정하에, 두 참조 블록을 가리키는 움직임 벡터 MV0및 MV1는 현재 픽처와 두 참조 픽처 사이의 시간적 거리들, 즉 TD0및 TD1에 비례한다. 일부 실시예들에서, 현재 픽처가 두 참조 픽처들 사이에 시간적으로 존재하고 현재 픽처에서 두 참조 픽처까지의 시간적 거리가 같을 때, 양방향 매칭은 미러 기반 양방향 MV가 된다.
도 2에 도시된 바와 같이, 템플릿 매칭은 현재 픽처에서의 템플릿(예를 들어, 현재 CU의 상단 및/또는 좌측 인접 블록들)과 참조 픽처에서의 블록(예를 들어, 템플릿과 동일한 크기) 사이에서 가장 가까운 매칭을 찾아 현재 CU의 움직임 정보를 도출하는 데 사용될 수 있다. 앞서 언급한 FRUC 머지 모드를 제외하고 템플릿 매칭은 AMVP 모드에도 적용될 수 있다. JEM 및 HEVC 모두에서, AMVP는 두 후보를 가진다. 템플릿 매칭 방법으로 새로운 후보가 유도될 수 있다. 만약 템플릿 매칭에 의해 새로 유도된 상기 후보가 기존 제1 AMVP 후보와 다른 경우, AMVP 후보 리스트의 맨 처음에 삽입되고 해당 리스트 크기는 2로 설정된다(예를 들어, 기존 제2 AMVP 후보를 제거). AMVP 모드에 적용시, 오직 CU 레벨 탐색만 적용된다.
CU 레벨 MV 후보 세트
CU 레벨에서 MV 후보 세트는 하기를 포함할 수 있다:
· 현재 CU가 AMVP 모드이면, 원본(original) AMVP 후보들,
· 모든 머지 후보들,
· 섹션 2.1.1.3에 소개된 보간된 MV 필드에서의 다양한 MV들 및
· 상단 및 좌측 인접 움직임 벡터들
양방향 매칭을 사용하는 경우, 머지 후보의 유효한 각각의 MV는 양방향 매칭을 가정하여 MV 쌍을 생성하기 위한 입력으로 사용될 수 있다. 예를 들어, 머지 후보의 유효한 하나의 MV는 참조 리스트 A에서 (MVa, refa)이다. 다음으로, 그것의 쌍을 이룬 양방향 MV의 참조 픽쳐 refb가 다른 쪽 참조 리스트 B에서 발견되어 refa 및 refb가 시간적으로 현재 픽처의 다른 사이드에 있게 된다. 이러한 refb가 참조 리스트 B에서 사용 가능하지 않은 경우, refb는 refa와 다른 레퍼런스로 결정되고, 그것의 현재 픽처까지의 시간적 거리는 리스트 B에서 최소가 된다. refb가 결정된 후, MVb는 현재 픽처와 refa, refb 사이의 시간적 거리를 기반으로 MVa를 스케일링하여 유도된다.
보간된 MV 필드로부터 4개의 MV 또한 CU 레벨 후보 리스트에 추가될 수 있다. 보다 구체적으로, 현재 CU의 위치 (0, 0), (W/2, 0), (0, H/2) 및 (W/2, H/2)의 보간된 MV들이 추가된다.
FRUC가 AMVP 모드에서 적용되면, 원본 AMVP 후보들도 CU 레벨 MV 후보 세트에 추가된다.
CU 레벨에서, AMVP CU들에 대한 15개의 MV 및 머지 CU에 대한 13개의 MV가 후보 리스트에 추가될 수 있다.
서브-CU 레벨 MV 후보 세트
서브 CU 레벨에서 설정된 MV 후보는 하기를 포함할 수 있다:
· CU 레벨 탐색에서 결정된 MV,
· 상단, 좌측, 좌측 상단 및 우측 상단 주변 MV들,
· 참조 픽처들에서 동일 위치(collocated) MV들의 스케일링된 버전들,
· 최대 4개의 ATMVP 후보들, 및
· 최대 4개의 STMVP 후보들
참조 픽처로부터 스케일링된 MV는 다음과 같이 유도된다. 두 리스트의 참조 픽처들이 횡단된다. 참조 픽처에서 서브 CU의 동일 위치에 있는(collocated) MV들은 시작 CU 레벨 MV의 레퍼런스로 스케일링된다.
ATMVP 및 STMVP 후보들은 첫 번째 4개로 제한된다.
서브 CU 레벨에서 최대 17개의 MV가 후보 리스트에 추가된다.
보간된 MV 필드의 생성
프레임을 코딩하기 전에, 단방향 ME를 기반으로 픽처 전체에 대해 보간된 움직임 필드가 생성된다. 다음으로 상기 움직임 필드는 후에 CU 레벨 또는 서브 CU 레벨 MV 후보들로 사용될 수 있다.
먼저, 두 참조 리스트에 있는 각 참조 픽처의 움직임 필드는 4x4 블록 레벨에서 횡단된다. 각 4x4 블록에 대해, 만약 현재 픽처에서 4x4 블록을 통과하는 블록과 관련된 움직임이 있고 상기 블록에 보간된 움직임이 할당되지 않은 경우 (도 3에 도시된 바와 같이), 참조 블록의 움직임은 시간적 거리 TD0 및 TD1에 따라 상기 현재 픽처로 스케일링되고 (HEVC에서 TMVP의 MV 스케일링과 동일한 방식), 상기 스케일링된 움직임은 현재 프레임의 블록에 할당된다. 스케일링된 MV가 4x4 블록에 할당되지 않은 경우, 블록의 움직임은 보간된 움직임 필드에서 사용할 수 없는 것으로 표시된다.
보간 및 매칭 비용
움직임 벡터가 분수 샘플 위치를 가리키는 경우, 움직임 보상된 보간이 필요하다. 복잡성을 줄이기 위해, 양방향 매칭과 템플릿 매칭 모두에 대해 정규(regular) 8 탭 HEVC 보간 대신 양방향 선형(bi-linear) 보간이 사용될 수 있다.
매칭 비용 계산은 단계마다 조금씩 다르다. CU 레벨에서 설정된 후보 세트에서 후보를 선택하는 경우, 매칭 비용은 양방향 매칭 또는 템플릿 매칭의 절대 차 합(Sum of Absolute Difference: SAD)일 수 있다. 시작 MV가 결정된 후 서브 CU 레벨 탐색에서 양방향 매칭의 매칭 비용 C는 다음과 같이 계산된다.
여기서, w는 가중치이다. 일부 실시예들에서, w는 경험적으로 4로 설정될 수 있다. MV 및 MVS는 각각 현재 MV와 시작 MV를 나타낸다. SAD는 서브 CU 레벨의 템플릿 매칭의 매칭 비용으로 여전히 사용될 수 있다.
FRUC 모드에서 MV는 루마 샘플들만을 사용하여 유도된다. 유도된 움직임은 MC 인터 예측을 위한 루마와 크로마 모두에 사용된다. MV가 결정되면 루마에 대해서는 8 탭 보간 필터를, 크로마에 대해서는 4 탭 보간 필터를 사용하여 최종 MC를 수행한다.
MV 개선
MV 개선은 양방향 매칭 비용 또는 템플릿 매칭 비용을 기준으로 하는 패턴 기반 MV 탐색이다. JEM에서는 2개의 탐색 패턴, 즉 무제약 중심 바이어스 다이아몬드 탐색(Unrestricted Center-biased Diamond Search: UCBDS) 및 적응적 교차 탐색이 각각 CU 레벨 및 서브 CU 레벨의 MV 개선을 위해 지원된다. CU 레벨 및 서브 CU 레벨 모두의 MV 개선에서, MV는 1/4 루마 샘플 MV 정확도에서 직접적으로 탐색되고, 1/8 루마 샘플 MV 개선이 뒤따른다. CU 및 서브 CU 단계에 대한 MV 개선의 탐색 범위는 8개의 루마 샘플들과 같게 설정된다.
탬플릿 매칭 FRUC 머지 모드에서 예측 방향의 선택
양방향(bilateral) 매칭 머지 모드에서는 항상 양예측이 적용된다. 왜냐하면 CU의 움직임 정보가 두 상이한 참조 픽처들에서 현재 CU의 움직임 궤적을 따라 두 블록들 간의 가장 가까운 매칭을 기반으로 유도되기 때문이다. 템플릿 매칭 머지 모드에서, 인코더는 CU에 대해 list0으로부터의 단-예측(uni-prediction), list1로부터의 단-예측, 또는 양-예측 가운데 선택할 수 있다. 선택은 아래와 같이 템플릿 매칭 비용을 기반으로 할 수 있다.
If costBi <= factor * min (cost0, cost1)
bi-prediction이 사용된다;
Otherwise, if cost0 <= cost1
list0로의 단일 예측이 사용된다;
Otherwise,
list1로의 단일 예측이 사용된다;
여기서, cost0은 list0 템플릿 매칭의 SAD, cost1은 list1 템플릿 매칭의 SAD, 그리고 costBi는 양 예측 템플릿 매칭의 SAD이다. 예를 들어, factor 의 값이 1.25와 같으면, 이는 선택 프로세스가 양 예측에 편향되어 있음을 의미한다.
인터 예측 방향 선택은 오직 CU 레벨 템플릿 매칭 프로세스에만 적용될 수 있다.
하이브리드 인트라 및 인터 예측
JVET-L0100에서 다중 가설 예측이 제안되는데, 하이브리드 인트라 및 인터 예측이 다중 가설을 생성하기 위한 방법 중 하나이다.
다중 가설 예측이 인트라 모드를 개선시키기 위해 적용될 때, 다중 가설 예측은 하나의 인트라 예측 및 하나의 머지 인덱스된 예측을 결합한다. 머지 CU에서, 한 플래그는 인트라 후보 리스트로부터 인트라 모드를 선택하기 위해 플래그가 참일 때 머지 모드에 대해 시그널링된다. 루마 컴포넌트에 있어서, 인트라 후보 리스트는 DC, 플래너(planar), 수평(horizontal), 및 수직(vertical) 모드들을 포함하는 4개의 인트라 예측 모드들로부터 유도되고, 인트라 후보 리스트의 크기는 블록 형태에 기반하여 3 혹은 4일 수 있다. CU의 너비가 CU의 높이의 두 배보다 큰 경우, 수평 모드는 인트라 모드 리스트에서 배제되고 CU 높이가 CU의 너비의 두 배보다 큰 경우, 수직 모드는 인트라 모드 리스트에서 제거된다. 인트라 모드 인덱스에 의해 선택된 하나의 인트라 예측 모드 및 머지 인덱스에 의해 선택된 하나의 머지 인덱스된 예측은 가중된 평균을 이용하여 결합된다. 크로마 컴포넌트에있어서, DM은 추가 시그널링 없이 항상 적용된다. 결합 예측을 위한 가중치는 하기와 같이 설명된다. DC 혹은 플래너(planar) 모드가 선택되는 경우 혹은 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)는 참조 샘플들에서 가장 먼 영역이다. 그런 다음, 결합된 예측은 두 개의 가중된 예측들을 합산하고 3비트를 오른쪽-시프팅 함으로서 계산될 수 있다. 또한, 예측자들의 인트라 가설에 대한 인트라 예측 모드는 하기 인접 CU들의 참조를 위해 저장될 수 있다.
양 방향 광학 흐름
BIO에서, 움직임 보상이 현재 블록의 첫 번째 예측들(각 예측 방향에서)을 생성하기 위해 먼저 수행된다. 첫 번째 예측들은 공간적 그라디언트, 시간적 그라디언트 및 블록 내 각 서브 블록/픽셀의 광학 흐름을 유도하는 데 사용되며, 이는 두 번째 예측, 즉 서브 블록/픽셀의 최종 예측을 생성하기 위해 사용된다. 자세한 내용은 하기에서 설명된다.
양 방향 광학 흐름(bi-directional optical flow: BIO)은 양 예측을 위해 블록 별 움직임 보상 위에 수행되는 샘플 별 움직임 개선이다. 샘플 레벨 움직임 개선은 시그널링을 사용하지 않는다.
I(k)을 블록 움직임 보상 후 레퍼런스 k (k=0, 1)로부터의 루마 값이라 하고, 을 I(k) 그라디언트(gradient)의 각각 수평 및 수직 컴포넌트들이라 하자. 광학 흐름이 유효하다고 가정하면, 움직임 벡터 필드는 아래 식에 의해 주어진다.
각 샘플의 운동 궤적에 대해 이러한 광학 흐름 방정식과 헤르미트(Hermite) 보간법을 결합하면, 끝에서 도함수들 및 함수 값들 I(k) 모두를 매칭시키는 고유한 3차 다항식이 획득된다. t=0에서 이 다항식의 값은 BIO 예측이다.
도 4에 나타난 바와 같이, 은 참조 프레임까지의 거리들을 나타낸다. 거리 는 Ref0 및 Ref1에 기반하여 계산된다. 즉, t0=POC(현재) POC(Ref0), t1= POC(Ref1) POC(현재). 만약 두 예측 모두 같은 방향에서(예를 들어, 둘 다 과거로부터 또는 미래로부터) 획득된다면, 부호들은 다르다(예를 들어, e.g., ). 이때, 예측이 동일한 순간으로부터 오는 것이 아니라면(예를 들어, e.g., ), BIO가 적용된다. 참조된 양 영역 모두 논-제로 움직임을 가지며(예를 들어, ), 블록 움직임 벡터들은 시간 거리에 비례한다(예를 들어, ).
움직임 벡터 필드는 는 점 A 및 점 B에서의 값들 사이의 차이 를 최소화함으로써 결정된다(도 9에서 움직임 궤적과 참조 프레임 평면들의 교차점). 모델은 에 대해 로컬 테일러 전개식의 제1 선형항만을 사용한다.
식 5에서의 모든 값들은 로 표시된 샘플 위치에 의존한다. 움직임이 로컬 환경에서 일관적이라고 가정하면, 현재 예측된 점 에 중심이 맞춰진 (2M+1)x(2M+1) 정사각형 윈도우 Ω 내의 는 최소화될 수도 있다. 여기서 M은 2와 같다.
이러한 최적화 문제에 대해, JEM은 먼저 수직 방향에서 최소화한 다음 수평 방향에서 최소화를 행하는 단순화된 접근법을 사용한다. 그 결과는 아래와 같다.
제로 혹은 매우 작은 값에 의한 나눗셈을 피하기 위해, 정규화(regularization) 파라미터들 r 및 m이 식 7 및 8에 도입될 수 있다. 여기서,
는 비디오 샘플들의 비트 깊이이다.
BIO에 대한 메모리 액세스를 정규 양 예측 움직임 보상에 대한 것과 같게 하기 위해, 모든 예측 및 그라디언트 값들인 은 현재 블록 내부의 위치들에 대해 계산된다. (도 5(a)에 도시된 것과 같이), 식 9에서, 예측된 블록의 경계 상의 현재 예측된 점에 중심이 맞춰진 (2M+1)x(2M+1) 정사각형 윈도우 Ω는 상기 블록 외부의 위치들에 접근할 필요가 있다. JEM에서 상기 블록 외부의 의 값들은 상기 블록 내부의 가장 가까운 가용 값과 같도록 설정된다. 예를 들어, 도 5(b)에 도시된 바와 같이, 이것은 패딩 영역으로 구현될 수 있다.
BIO를 사용하면, 움직임 필드가 각 샘플에 대해 개선될 수 있다. 계산 복잡도를 줄이기 위해, BIO의 블록 기반 디자인이 JEM에서 사용된다. 움직임 개선은 4x4 블록에 기반하여 계산될 수 있다. 블록 기반 BIO에서, 4x4 블록 상의 모든 샘플들의 식 9에 따른 sn의 값들이 합산될 수 있으며, 그 다음 합산된 sn의 값들은 상기 4x4 블록에 대한 BIO 움직임 벡터 오프셋을 유도하는 데에 사용된다. 구체적으로, 아래 식이 블록 기반 BIO 유도를 위해 사용될 수 있다.
여기서, 는 예측된 블록의 k번째 4x4 블록에 속한 샘플들의 세트를 표시한다. 관련된 움직임 벡터 오프셋들을 유도하기 위해, 식 7 및 식 8에서 로 교체된다.
일부 시나리오에서, BIO의 MV 레지먼트 (regiment)는 노이즈 또는 불규칙한 움직임으로 인해 신뢰할 수 없을 수도 있다. 그러므로, BIO에서, MV 레지먼트의 크기는 특정 임계값 thBIO로 클립된다. 임계값은 현재 픽처의 모든 레퍼런스 픽처들이 모두 한 방향에서 오는지의 여부에 기초하여 결정된다. 예를 들어, 현재 픽처의 모든 참조 픽처들이 한 방향으로부터 오는 경우, 상기 임계값은 로 설정되고, 그렇지 않을 경우, 로 설정된다.
BIO에 대한 그라디언트들(gradients)은 HEVC 움직임 보상 절차(예를 들어, 2D 분리가능한 유한 임펄스 응답(Finite Impulse Response: FIR)과 부합하는 동작들을 사용하는 움직임 보상 보간과 동시에 계산될 수 있다. 일부 실시예들에서, 2D 분리가능한 FIR에 대한 입력은 움직임 보상 절차에 대한 것과 같은 참조 프레임 샘플 및 블록 움직임 벡터의 분수 부분에 따른 분수 위치 (fracX, fracY) 이다. 수평 그라디언트 에 대해, 신호는 먼저 역스케일링 시프트 을 갖는 분수 위치 fracY에 해당하는 BIOfilterS를 사용하여 수직으로 보간된다. 그 다음에, 보간 필터 BIOfilterG18-d 만큼의 역스케일링 시프트를 갖는 분수 위치 fracX에 해당하는 수평 방향으로 적용된다. 수직 그라디언트 에 대해, 그라디언트 필터는 역스케일링 시프트 을 갖는 분수 위치 fracY에 해당하는 BIOfilterG를 사용하여 수직으로 적용된다. 그 다음으로, 신호 변위는 역스케일링 쉬프트 18d을 갖는 분수 위치 fracX에 해당하는 수평 방향으로 BIOfilterS를 사용하여 실행된다. 그라디언트 계산을 위한 보간 필터 BIOfilterG 및 신호 변위를 위한 BIOfilterF의 길이는 적절한 복잡도를 유지하기 위해 더 짧을 수 있다(예를 들어, 6-탭). 표 1은 BIO에서 블록 움직임 벡터의 상이한 분수 위치들의 그라디언트 계산을 위해 사용될 수 있는 필터들의 예를 보여준다. 표 2는 BIO에서 예측 신호 생성을 위해 사용될 수 있는 보간 필터들을 보여준다.
표 1: BIO에서 그라디언트 계산을 위한 필터들의 예
표 2: BIO에서 예측 신호 생성을 위한 보간 필터들의 예
JEM에서, BIO는 2 개의 예측들이 상이한 참조 픽처들로부터 올 경우, 모든 양 예측된 블록들에 적용될 수 있다. LIC (local illumination compensation) 이 CU에 대해 활성화되는(enabled) 경우, BIO는 비활성화 될 수 있다(disabled).
JEM에서, OBMC는 정상 MC 절차 후에 블록에 대해 적용된다. 계산 복잡성을 줄이기 위해, BIO는 OBMC 절차 동안에는 적용되지 않을 수 있다. 이는 BIO는 블록에 대한 MC 절차에서 그것 자체의 MV를 사용하는 경우 적용되며, 주변 블록의 MC가 OBMC 절차 동안 사용되는 경우 MC 절차에서 적용되지 않음을 의미한다.
두 단계의 조기 종료 방법은 두 예측 신호들 간의 유사성에 기반하여 BIO 동작을 조건적으로 비활성화하는 데 사용된다. 조기 종료는 CU레벨에서 먼저 적용되고 그 다음 서브 CU 레벨에서 적용된다. 보다 구체적으로, 제안된 방법은 CU 레벨에서 L0 및 L1 예측 신호들 간에 SAD를 먼저 계산한다. BIO가 루마에만 적용된다는 점을 감안하면 루마 샘플들만이 SAD에 계산에 고려될 수 있다. CU 레벨 SAD이 기 정의된 임계값보다 크지 않으면, BIO 절차는 전체 CU에 대해 완전히 비활성화된다. CU 레벨 임계값은 샘플 별로 로 설정된다. BIO 절차가 CU 레벨에서 비활성화되지 않고 현재 CU가 다중 서브 CU들을 포함하면, CU 내 각 서브 CU의 SAD가 계산될 수 있다. 그런 다음, BIO 절차가 활성화 혹은 비활성화 되는지 여부에 대한 결정은 샘플 당 로 설정된 기 정의된 서브 CU 레벨 SAD 임계값에 기초하여 서브 CU 레벨에서 결정된다.
2.4 VVC에서 BDOF 사양
JVET-N1001-v2에서 BDOF 사양은 하기와 같다.
8.5.7.4 양 방향 광학 흐름 예측 절차
현 절차의 입력은 다음과 같다.
현재 코딩 블록의 너비 및 높이를 특정하는 두 변수 nCbW 및 nCbH,
두 개의 (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에 대해, 현재 서브블록의 예측 샘플 값들은 하기와 같이 유도된다:
pbSamples[ x ][ y ] = Clip3( 0, ( 2bitDepth ) - 1, ( predSamplesL0[ x + 1 ][ y + 1 ] + offset2 + (8-852)
predSamplesL1[ x + 1 ][ y + 1 ] )  >>  shift2 )
반면 (bdofUtilizationFlag[ xSbIdx ][ yIdx ]이 TRUE이면), 현재 서브 블록의 예측 샘플 값들은 하기와 같이 유도된다:
x =xSb - 1..xSb + 4, y = ySb-1..ySb + 4에 대해, 다음 순서의 단계가 적용된다:
1. 예측 샘플 배열들 내의 대응 샘플 위치 (x, y) 각각에 대한 위치 ( hx, vy ) 는 하기와 같이 유도된다:
hx = Clip3( 1, nCbW, x ) (8-853)
vy = Clip3( 1, nCbH, y ) (8-854)
2. 변수들 gradientHL0[ x ][ y ], gradientVL0[ x ][ y ], gradientHL1[ x ][ y ] 및 gradientVL1[ x ][ y ]은 하기와 같이 유도된다:
gradientHL0[ x ][ y ]  =  (predSamplesL0[ hx + 1 ][vy] - predSampleL0[ hx - 1 ][ vy ] ) >> shift1 (8-855)
gradientVL0[ x ][ y ]  =   (predSampleL0[ hx ][ vy + 1 ] - predSampleL0[ hx ][vy - 1 ] ) >> shift1 (8-856)
gradientHL1[ x ][ y ]  =  (predSamplesL1[ hx + 1 ][vy] - predSampleL1[ hx - 1 ][ vy ] ) >> shift1 (8-857)
gradientVL1[ x ][ y ]  =   (predSampleL1[ hx ][ vy + 1 ] - predSampleL1[ hx ][vy - 1 ] ) >> shift1 (8-858)
3. 변수들 temp[ x ][ y ], tempH[ x ][ y ] 및tempV[ x ][ y ]은 하기와 같이 유도된다:
diff[ x ][ y ] = (predSamplesL0[ hx ][ vy ] >> shift2 ) - ( predSamplesL1[ hx ][ vy ] >> shift2 ) (8-859)
tempH[ x ][ y ] = (gradientHL0[ x ][ y ] + gradientHL1[ x ][ y ] ) >> shift3 (8-860)
tempV[ x ][ y ] = (gradientVL0[ x ][ y ] + gradientVL1[ x ][ y ] ) >> shift3 (8-861)
변수들 sGx2, sGy2, sGxGy, sGxdI 및 sGydI은 하기와 같이 유도된다:
sGx2 =  ( tempH[ xSb + i ][ ySb + j ] * tempH[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-862)
sGy2 = (tempV[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-863)
sGxGy = (tempH[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-864)
sGxdI = ( - tempH[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-865)
sGydI = ( - tempV[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-866)
현재 서브블록의 수평 및 수직 움직임 오프셋은 하기와 같이 유도된다:
vx = sGx2 > 0  ?  Clip3( -mvRefineThres, mvRefineThres, (8-867)
-( sGxdI << 3 ) >> Floor( Log2( sGx2 ) ) )  :  0
vy = sGy2 > 0  ?  Clip3( -mvRefineThres, mvRefineThres, ( ( sGydI << 3 ) - (8-868)
( ( vx * sGxGym ) << 12 + vx * sGxGys ) >> 1 ) >> Floor( Log2( sGx2 ) ) )  :  0
x =xSb - 1..xSb + 2, y = ySb-1..ySb + 2에 대해, 현재 서브 블록의 예측 샘플 값들은 하기와 같이 유도된다:
bdofOffset = Round( ( vx * ( gradientHL1[ x + 1 ][ y + 1 ] - gradientHL0[ x + 1 ][ y + 1 ] ) ) >> 1 ) (8-869)
+ Round( ( vy * (gradientVL1[ x + 1 ][ y + 1 ] - gradientVL0[ x + 1 ][ y + 1 ] ) ) >> 1 )
[Ed. (JC): Round() 연산은 float 입력에 대해 정의된다. 여기서는 입력이 정수 값이기 때문에 Round() 연산이 반복되는 것처럼 보여진다. 제안자에 의해 확인되어야 한다]
pbSamples[ x ][ y ] = Clip3( 0, ( 2bitDepth ) - 1, ( predSamplesL0[ x + 1 ][ y + 1 ]  + offset4 + (8-870)
predSamplesL1[ x + 1 ][ y + 1 ] + bdofOffset )  >>  shift4 )
공간적 그라디언트는 하기와 같이 계산된다:
gradientHL0[ x ][ y ]  =  (predSamplesL0[ hx + 1 ][vy] - predSampleL0[ hx - 1 ][ vy ] ) >> shift1 (8-855)
반면에, 시간적 그라디언트는 하기와 같이 계산된다:
diff[ x ][ y ] = (predSamplesL0[ hx ][ vy ] >> shift2 ) - ( predSamplesL1[ hx ][ vy ] >> shift2 ) (8-859)
즉, 공간적 그라디언트 및 시간적 그라디언트의 계산은 조화되지 않는다.
2.5 디코더 측 움직임 벡터 개선(Decoder-side motion vector refinement)
양 예측 연산에서, 한 블록 영역의 예측을 위해 list0의 움직임 벡터(motion vector: MV) 및 list1의 MV를 이용하여 각각 형성된 두 개의 예측 블록들은 단일 예측 신호를 형성하기 위해 결합된다. JVET-K0217에서, 디코더 측 움직임 벡터 개선(decoder-side motion vector refinement: DMVR) 방법에서 양 방향 매칭 프로세스에 의해 양 예측의 두 움직임 벡터들이 추가로 개선된다.
제안된 방법에서 DMVR은 하기 조건들이 참이면 머지 및 스킵 모드들에서만 적용된다:
POC는 현재 인코딩될 픽처의 픽처 순서 카운트(picture order count)이고, POC0 및 POC1은 현재 픽처에 대한 참조들의 픽처 순서 카운트들이다.
시그널링된 머지 후보 쌍은 DMVR 프로세스의 입력으로 사용되며, 초기 움직임 벡터들 (MV0, MV1)로 표시된다. DMVR에 의해 탐색되는 탐색 점들은 움직임 벡터 차이 미러링 조건에 따른다. 즉, 후보 움직임 벡터 쌍 (MV0', MV1') 로 표시되는, DMVR에 의해 체크되는 모든 점은 하기의 두 식을 따른다:
여기서 MVdiff 는 참조 픽처들 중 하나에서의 탐색 공간의 점들을 표현한다.
탐색 공간의 구성 이후 단 방향 예측이 정규(regular) 8-탭 DCTIF 보간 필터를 이용하여 구성된다. 양 방향 매칭 비용 함수는 두 예측들간의 MRSAD(mean removed sum of absolute differences)를 이용하여 계산(도 6)되며, 최소 비용을 야기하는 탐색 점이 개선된 MV 쌍으로서 선택된다. MRSAD 계산을 위해, 샘플들의 16비트 정밀도가 사용되며(보간 필터링의 출력임), 클리핑 및 라운딩 연산은 MRSAD 계산 전에 적용되지 않는다. 라운딩 및 클리핑을 적용하지 않는 이유는 내부 버퍼 요구사항을 감소시키기 위함이다.
도 6은 6 개의 점 탐색에 의한 양방향 매칭의 일 예를 도시한다.
제안된 방법에서 정수 정밀도 탐색 점들은 적응적 패턴 방법에 의해 선택된다. 중앙 점들(초기 움직임 벡터들이 가리키는)에 대응되는 비용이 먼저 계산된다. 다른 4 개의 비용들(사인 형상에서)이 중앙 점에 의해 서로 반대 쪽에 위치한 두 개의 예측들에 의해 계산된다. 각도에서 마지막 여섯 번 째 점은 이전에 계산된 비용들의 그라디언트에 의해 선택된다(도 7).
도 7은 적응적 정수 탐색 패턴 및 하프(half) 샘플 탐색 패턴의 예들을 도시한다.
DMVR 프로세스의 출력은 최소 비용에 대응되는 개선된 움직임 벡터 쌍이다.
1회 반복 후 탐색 공간의 중앙 점에서 최소 비용이 달성되면, 즉, 움직임 벡터가 변경되지 않으면, 개선 프로세스가 종료된다. 그렇지 않은 경우, 최소 비용은 중앙 점에 대응되지 않고 탐색 범위를 초과하지 않는 동안, 최상의 비용이 중앙으로 간주되어 프로세스가 계속된다.
하프 샘플 정밀도 탐색은 하프-픽셀 탐색의 적용이 탐색 범위를 초과하지 않는 경우에만 적용된다. 이 경우, 정수 정밀도 탐색 동안 최상으로 선택되는 중앙 점 주변의 플러스 형태의 점들에 대응되는 오직 4 개의 MRSAD 계산만이 수행된다. 마지막으로, 최소 비용 점에 해당하는 개선된 움직임 벡터 쌍이 출력된다.
JVET-L0163에서 일부 단순화 및 개선 사항이 추가적으로 제안된다.
참조 샘플링 패딩
참조 샘플 패딩은 초기 움직임 벡터가 가리키는 참조 샘플 블록을 확장하기 위해 적용된다. 코딩 블록의 크기가 w 및 h로 주어지면, 크기 w+7 및 h+7인 블록이 참조 픽처 버퍼로부터 검색된다고 가정한다. 그런 다음 검색된 버퍼는 가장 가까운 샘플을 이용하여 반복적인 샘플 패딩을 통해 각 방향으로 2개의 샘플만큼 확장된다. 그 후 확장된 참조 샘플 블록은 개선된 움직임 벡터가 획득되면 최종 예측을 생성하는 데 사용된다(초기 움직임 벡터로부터 각 방향으로 2개의 샘플에서 벗어날 수 있음).
이러한 변경은 코딩 손실 없이 DMVR의 외부 메모리 접근 요구사항을 완전히 제거한다.
8-탭 DCTIF 대신 양선형 보간(bilinear interpolation)
제안에 따르면 양선형 보간은 DMVR 탐색 프로세스 동안 적용되며, 이는 MRSAD 계산에 사용되는 예측이 양선형 보간을 사용하여 생성됨을 의미한다. 최종 개선된 움직임 벡터들이 획득되면 정규 8-탭 DCTIF 보간 필터는 최종 예측들을 생성하기 위해 적용된다.
작은 블록들에 대한 DMVR의 비활성화
DMVR은 4x4, 4x8, 및 8x4 블록에 대해 비활성화된다.
머지 후보들 간의 MV 차이에 기초한 조기 종료
MV 개선 프로세스를 제한하기 위해 DMVR에 추가적인 조건이 부과된다. 이에 의해, DMVR은 하기 조건이 만족될 때 조건부로 비활성화된다.
동일 머지 후보 리스트에서 선택된 머지 후보와 이전 머지 후보들 중 어느 하나 간의 MV 차이는 기 정의된 임계값(즉, 64픽셀 미만, 256 픽셀 미만, 및 256 픽셀 이상의 CU에 대한 1/4-, 1/2- 및 1-픽셀-너비 간격)보다 작다.
중앙 탐색 좌표에서 SAD 비용에 기초한 조기 종료
현재 CU의 초기 움직임 벡터들을 이용하여 두 예측 신호들(L0 및 L1 예측) 간의 SAD(sum of absolute difference)가 계산된다. SAD가 기 정의된 임계값, 즉 샘플 당 보다 크지 않은 경우, DMVR은 생략된다. 그렇지 않은 경우, DMVR은 현재 블록의 두 움직임 벡터들을 개선하기 위해 여전히 적용된다.
DMVR 적용 조건
DMVR 적용 조건은 BMS2.1에서 구현되기 때문에 (POC - POC1)x(POC-POC2)<0이며 새로운 조건 (POC - POC1)==(POC2 - POC)으로 대체된다. 즉, 참조 픽처들이 시간적 방향에서 반대이고 현재 픽처와 거리가 같은 경우에만 DMVR이 적용된다.
두 번째 행마다 MRSAD 계산
MRSAD 비용은 블록의 홀수 행들에 대해서만 계산되며, 짝수 샘플 행들은 고려되지 않는다. 이에 따라, MRSAD 계산에 대한 연산 횟수는 절반으로 줄어든다.
2.6 관련 방법
2018년 8월 4일에 출원된 "motion refinement for visual media coding"이라는 명칭의 출원 번호 PCT/CN2018/098691(본 명세서에 참조로 포함됨)에 의해 식별된 특허 출원에서, MV 업데이트 방법 및 두 단계 인터 예측 방법이 제안된다. BIO에서 참조 블록 0 및 참조 블록 1 간의 유도된 MV는 스케일링되고 리스트0(list0) 및 리스트1(list1)의 원본 움직임 벡터에 추가된다. 한편, 업데이트된 MV는 움직임 보상을 수행하기 위해 사용되고 두 번째(제2) 인터 예측이 최종 예측으로서 생성된다. 시간적 그라디언트는 참조 블록 0 및 참조 블록 1 간의 평균 차이를 제거하여 변경된다.
2.7 VVC 드래프트 4에서 DMVR
JVET-M1001_v7 (VVC 워킹 드래프트 4, 버전 7)에서 DMVR의 사용은 하기와 같이 정의된다:
하기 모든 조건들이 참이면, dmvrFlag는 1과 동일하게 설정된다:
sps_dmvr_enabled_flag은1과 동일하다
현재 블록이 삼각(triangular) 예측 모드, 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이상이다
3. 구현 예들에 의해 해결되는 문제점들의 예들
BIO에서, 두 참조 블록들 혹은 서브 블록들 간의 차이는 조기 종료 단계에서 계산되는데, 한편, 시간적 그라디언트 또한 계산된다. 시간적 그라디언트는 사실상 두 참조 픽셀들 간의 차이(혹은 오른쪽 시프팅된 차이)이므로, 차이 및 시간적 그라디언트를 모두 계산하는 것은 의미가 없다.
DMVR에서, MRSAD 계산은 한 블록의 개선 움직임 벡터를 결정하는 데 사용된다.
BIO에서, SAD 계산은 계산 복잡도를 증가시키는 한 블록/한 서브 블록의 모든 샘플들을 이용하여 BIO가 한 블록 혹은 하나의 서브 블록에 대해 활성화/비활성화되어야 하는지 여부를 결정하기 위해 사용된다.
계산 방법은 공간적 그라디언트 및 시간적 그라디언트에 대해 상이하다.
4. 구현 예들
절대 변환 차이의 합(sum of absolute transformed differences)을 SATD로 , 절대 변환 차이의 평균 제거 합(mean removed sum of absolute transformed differences)을 MRSATD로, 오차 제곱의 합(sum of squares error)을 SSE로, 오차 제곱의 평균 제거 합(mean removed sum of squares error)을 MRSSE로 나타낸다.
하기의 세부 기술들은 일반적인 개념을 설명하기 위한 예로서 고려되어야 한다. 이러한 기술들은 좁은 의미로 해석되어서는 안 된다. 또한, 이 발명들은 어떠한 방식으로든 조합될 수 있다.
다음 논의에서, SatShift(x, n)는 하기와 같이 정의된다.
Shift(x, n)는 Shift(x, n) = (x+ offset0)>>n로 정의된다.
일 예로서, offset0 및/혹은 offset1은 (1<<n)>>1 혹은 (1<<(n-1))로 설정된다. 다른 예에서, offset0 및/혹은 offset1은 0으로 설정된다.
다른 예에서, offset0=offset1= ((1<<n)>>1)-1 혹은 ((1<<(n-1)))-1이다.
BDOF의 그라디언트 계산에서, 두 개의 이웃(공간적 이웃 또는 시간적 이웃) 혹은/및 인접하지 않은 샘플들 간의 차이가 계산될 수 있고, 오른쪽 시프트는 그라디언트 계산 동안 수행될 수 있다. 두 개의 인접 샘플들을 neig0 및 neig1라 하고, 오른쪽 시프트 값은 shift1라 하고, 계산할 그라디언트는 grad라 한다. Shift1은 공간적 그라디언트 및 시간적 그라디언트에 대해 상이하다.
1. 공간적 그라디언트와 시간적 그라디언트 계산에 사용된 방법을 조화시키는 것이 제안된다.
a. 일 예로서, 그라디언트는 시프트된 샘플 차이들에 따라 계산된다.
i. 또는, 변경된 샘플(예를 들어, 시프팅을 통해) 차이에 따라 그라디언트가 계산된다.
b. 일 예로서, 그라디언트 계산에서, 오른쪽 시프트 이전에 감산이 수행된다. 예를 들어, grad = (neig0 - neig1) >> shift1이다.
c. 일 예로서, 그라디언트 계산에서, 오른쪽 시프트 이후에 감산이 수행된다. 예를 들어, grad = (neig0 >> shift1) - (neig1 >> shift1)이다.
d. 일 예로서, 그라디언트 계산에서, 오른쪽 시프트 전에 감산이 수행될 수 있고, 오프셋이 오른쪽 시프트 전에 추가될 수 있다. 예를 들어, grad = (neig0 - neig1 + offset) >> shift1이다. 오프셋은 1 << (shift1 - 1) 혹은 1<<shift1>>1와 동일할 수 있다.
e. 일 예로서, 그라디언트 계산에서, 오른쪽 시프트 이후 감산이 수행될 수 있고, 오프셋은 오른쪽 시프트 이전에 추가될 수 있다. 예를 들어, grad = ((neig0 + offset) >> shift1) - ((neig1 + offset) >> shift1)이다. 오프셋은 1 << (shift1 - 1) 혹은1<<shift1>>1와 동일할 수 있다.
f. 일 예로서, 그라디언트는 SatShift(neig0 - neig1, shift1)로서 계산될 수 있다.
i. 또는, 그라디언트는 SatShift(neig0, shift1) -SatShift(neig1, shift1)로 계산될 수 있다.
2. SATD 혹은 MRSATD 혹은 SSE 혹은 MRSSE 혹은 평균 값 차이 혹은 그라디언트 값들 같은 조기 종료 단계에서 BIO 혹은/및 DMVR의 활성화/비활성화를 결정하기 위한 다른 기준을 사용하는 것이 제안된다.
a. 일 예로서, 블록 레벨 및 서브-블록 레벨 활성화/비활성화 결정들은 서로 다른 규칙을 선택할 수 있다. 예를 들어, 하나는 SAD이고 하나는 SATD일 수 있다.
b. 일 예로서, 블록/서브블록에 대해, 그라디언트 값들(수평 및/혹은 수직) 혹은 평균 그라디언트 값들 혹은 그라디언트 값들의 범위가 조건을 만족하면, (예를 들어, 임계값 보다 크거나 주어진 범위 외) BIO 및/혹은 DMVR이 비활성화 될 수 있다.
c. BIO/DMVR의 활성화/비활성화하는 데 사용되는 기준이 인코더에서 디코더로 VPS/SPS/PPS/슬라이스 헤더/타일 그룹 헤더로 시그널링될 수 있다고 제안된다.
3. MRSAD를 대체하기 위해 SATD 혹은 MRSATD 혹은 SSE 혹은 MRSSE와 같은 DMVR 프로세스에서 한 블록의 개선된 움직임 벡터를 결정하기 위해 다른 기준을 사용하는 것이 제안된다.
a. 일 예에서, MRSAD를 대체하기 위해 SATD 혹은 MRSATD 혹은 SSE 혹은 MRSSE와 같은 DMVR 프로세스에서 한 서브 블록의 개선된 움직임 벡터.
b. 일 예로서, SATD(혹은 MRSATD)가 적용되면, 전체 블록이 MxN 서브 블록들로 분할되며 SATD(혹은 MRSATD)가 각 서브 블록에 대해 계산된다. 모든 혹은 일부 서브 블록들에 대한 SATD들(혹은 MRSATD들)이 전체 블록에 대한 SATD(혹은 MRSATD) 값을 획득하기 위해 합산된다.
4. 한 블록의 두 참조 블록들의 평균 값 차이가 임계값(T1)보다 큰 경우, BIO 혹은/및 DMVR은 비활성화될 수 있다.
a. 한 서브 블록의 두 참조 서브 블록들의 평균 값 차이가 임계값(T2)보다 큰 경우 BIO는 비활성화될 수 있다.
b. 임계값 T1및/혹은 T2는 기 정의될 수 있다.
c. 임계 값 T1 및/혹은 T2는 블록 크기에 따를 수 있다.
5. BIO의 조기 종료 단계에서, 두 참조 블록들/서브 블록들 간의 차이(예를 들어, SAD/SATD/SSE 등)를 계산하기에 앞서, 참조 블록들 혹은/및 서브 블록들이 먼저 변경될 수 있다고 제안된다.
a. 일 예로서, 참조 블록 혹은/및 서브 블록의 평균이 계산될 수 있고 참조 블록 혹은/및 그 이후 서브 블록에 의해 감산될 수 있다.
b. 일 예로서, 2018년 7월 20일에 출원된 명칭이 "motion prediction based on updated motion vectors"인 특허 번호 PCT/CN2018/096384에 개시된 방법들은 참조 블록 혹은/및 서브 블록의 평균 값을 계산하는데 사용될 수 있다. 즉, 평균 값은 일부 대표 위치들에 대해 계산된다.
6. BIO 혹은/및 DMVR의 조기 종료 단계에서 두 참조 블록들 혹은/및 서브 블록들 간의 차이(예를 들어, SAD/SATD/SSE/MRSAD/MRSATD/MRSSE 등)는 오직 일부 대표 위치들에 대하여만 계산될 수 있다고 제안된다.
a. 일 예로서, 짝수 행들의 차이 만이 블록 혹은/및 서브 블록에 대해 계산된다.
b. 일 예로서, 한 블록/서브 블록의 네 개의 코너 샘플들의 차이만이 블록 혹은/및 서브 블록에 대해 계산된다.
c. 일 예로서, 2018년 7월 2일에 출원된 "Decoder Side Motion Vector Derivation in Video Coding"라는 명칭의 미국 가출원 번호 62/693,412(여기에 참조로 포함됨)에 개시된 방법들은 대표적인 위치들을 선택하는 데 사용될 수 있다.
d. 일 예로서, 두 참조 블록들 간의 차이(예를 들어, SAD/SATD/SSE/MRSAD/MRSATD/MRSSE 등)은 일부 대표 서브 블록들에 대해서만 계산될 수 있다.
e. 일 예에서, 대표적인 위치들 혹은 서브 블록들에 대해 계산된 차이(예를 들어, SAD/SATD/SSE/MRSAD/MRSATD/MRSSE 등)은 전체 블록/서브 블록에 대한 차이를 획득하기 위해 합산된다.
7. 시간적 그라디언트(위치(x,y)에서의 시간적 그라디언트는 G(x,y)=P0(x,y)-P1(x,y)로 정의되고, 여기서 P0(x,y) 및 P1(x,y)는 두 개의 다른 참조 픽처들에서의 (x,y)에서 예측을 나타냄) 혹은 변경된 시간적 그라디언트는 BIO의 조기 종료 단계에서 차이(SAD 대신)로서 사용되고, 조기 종료에서 사용된 임계값은 이에 따라 조정될 수 있다.
a. 일 예에서, 시간적 그라디언트들의 절대 합이 계산되고 두 참조 블록들 혹은/및 서브 블록들의 차이로서 사용된다.
b. 일 예에서, 시간적 그라디언트들의 절대 합은 블록 혹은/및 서브 블록에 대한 일부 대표 위치들에 대해서만 계산된다.
c. 일 예에서, 2018년 7월 2일에 출원된 "Decoder Side Motion Vector Derivation in Video Coding"라는 명칭을 갖는 US 가출원 번호 62/693,412(여기에 참조로 통합됨)는 대표적인 위치들을 선택하는 데 사용될 수 있다.
8. 시간적 그라디언트 변경 프로세스는 서로 다른 블록들/서브블록들에 적응적으로 수행될 수 있다고 제안된다.
a. 일 예에서, 시간적 그라디언트는 두 참조 블록들 간의 절대 평균 차이(혹은 SAD/SATD/SSE 등)가 임계값 T보다 클 때만 변경된다. 일 예로서, T=4이다.
b. 일 예에서, 시간적 그라디언트는 두 참조 블록들 간의 절대 평균 차이(혹은 SAD/SATD/SSE 등)가 임계값 T보다 클 때만 변경된다. 일 예로서, T=20이다.
c. 일 예에서, 시간적 그라디언트는 두 참조 블록들 간의 절대 평균 차이(혹은 SAD/SATD/SSE 등)가 [T1, T2] 범위 내일 때만 변경된다. 일 예로서, T1=4이고, T2=20이다.
d. 일 예에서, 두 참조 블록들 간의 절대 평균 차이(혹은 SAD/SATD/SSE 등)가 임계값 T보다 큰 경우(예를 들어, T=40), BIO는 비활성화된다.
e. 일 예로서, 이 임계 값들은 암시적으로 기정의될 수 있다.
f. 일 예로서, 이 임계 값들은 SPS/PPS/픽처/슬라이스/타일 레벨에서 시그널링될 수 있다.
g. 일 예로서, 이 임계값들은 서로 다른 CU, LCU, 슬라이스, 타일 혹은 픽처에 따라 다를 수 있다.
i. 일 예로서, 이 임계값들은 디코딩된/인코딩된 픽셀 값들에 기초하여 설계될 수 있다.
ii. 일 예로서, 이 임계값들은 참조 픽처들에 따라 상이하게 설계될 수 있다.
h. 일 예로서, 시간적 그라디언트는 두 개의(혹은 두 개중 어느 하나) 참조 블록들의 (절대) 평균이 임계값 T보다 큰 경우에만 변경된다. 일 예로서, T=40이다.
i. 일 예로서, 시간적 그라디언트는 두 개의(혹은 두 개중 어느 하나) 참조 블록들의 (절대) 평균이 임계값 T보다 작은 경우에만 변경된다. 일 예로서, T=100이다.
j. 일 예로서, 시간적 그라디언트는 두 개의(혹은 두 개중 어느 하나) 참조 블록들의 (절대) 평균이 [T1, T2] 범위 내인 경우에만 변경된다. 일 예로서, T1=40, T2=100이다.
k. 일 예로서, 시간적 그라디언트는 두 개의(혹은 두 개중 어느 하나) 참조 블록들의 (절대) 평균이 절대 평균 차이(혹은 SAD/SATD 등)에 T를 곱한 것보다 크거나 작은 경우에만 변경된다. 일 예로서, T=4.5이다.
l. 일 예로서, 시간적 그라디언트는 두 개의(혹은 두 개중 어느 하나) 참조 블록들의 (절대) 평균이 절대 평균 차이(혹은 SAD/SATD 등)에 [T1, T2]를 곱한 범위 내인 경우에만 변경된다. 일 예로서, T1=4.5, T2=7이다.
9. 하이브리드 인트라 및 인터 예측 모드에서, 두 인터 참조 블록들은 BIO에서 공간적 그라디언트들을 계산할 때 변경되거나 전체 BIO 절차를 수행하기에 앞서 변경될 수 있다고 제안된다.
a. 일 예로서, 각 예측 방향의 인트라 예측 블록 및 인터 예측 블록은 wAvgBlkL0 및 wAvgBlkL1로 표현되는 BIO에서 공간적 그라디언트들을 유도하기 위해 사용되는 두 개의 새로운 예측 블록들을 생성하기 위해 가중 평균 된다(하이브리드 인터 및 인터 예측에서 사용되는 동일한 가중 방법을 이용).
b. 일 예로서, wAvgBlkL0 및 wAvgBlkL1는 predBlk로 표현되는 현재 블록의 예측 블록을 생성하는 데 사용된다. 그 다음, wAvgBlkL0, wAvgBlkL1 및 predBlk는 BIO 과정을 위해 더 사용되고, BIO에서 생성된 개선된 예측 블록은 최종 예측 블록으로서 사용된다.
10. DMVR 혹은/및 BIO 플래그는 블록 레벨에서 DMVR 혹은/및 BO가 블록에 대해 활성화되는지 여부를 지시하기 위해 시그널링 될 수 있다고 제안된다.
a. 일 예로서, 이러한 플래그는 AMVP 모드에 대해서만 시그널링 될 수 있으며, 머지 모드에서, 이러한 플래그는 공간적 혹은/및 시간적 인접 블록들로부터 상속될 수 있다.
b. 일 예로서, BIO 혹은/및 DMVR이 활성화되는지 아닌지 여부는 시그널링된 플래그와 즉석(on-the-fly) 결정(예를 들어, 조기 종료 단계에서 SAD에 기초한 결정)에 의해 공동으로 결정될 수 있다. 시그널링된 플래그는 즉석 결정이 올바른지 여부를 나타낼 수 있다.
c. 이러한 플래그는 단일 예측된 블록들에 대해서는 시그널링되지 않는다.
d. 이러한 플래그는 두 참조 픽처들이 디스플레이 순서 상 모두 선행 픽처들이거나 후행 픽처들인 양 예측된 블록들에 대해서는 시그널링되지 않을 수 있다.
e. 이러한 플래그는 POC_diff(curPic, ref0) 이 POC_diff(ref1, curPic)와 동일하지 않은 경우 양 예측된 블록들에 대해서는 시그널링되지 않을 수 있는데, POC_diff ()는 두 픽처들 간의 POC 차이를 계산하고, ref0 및 ref1은 현재 픽처의 참조 픽처들이다.
f. 이러한 플래그는 인트라 코딩된 블록들에 대해서는 시그널링되지 않는다. 또는, 이러한 플래그는 하이브리드 인트라 및 인터 예측 모드로 코딩된 블록들에 대해서는 시그널링되지 않는다.
또는, 이러한 플래그는 현재 픽처 참조 블록에 대해 시그널링되지 않는다. 즉, 참조 픽처는 현재 픽처이다.
g. 플래그를 시그널링할 지 여부는 블록 크기에 기초할 수 있다. 예를 들어, 블록 크기가 임계 값보다 작은 경우, 이러한 플래그는 시그널링되지 않는다. 또는, 블록 너비 및/혹은 높이가 임계 값 이상인 경우, 이러한 플래그는 시그널링되지 않는다.
h. 플래그를 시그널링할 지 여부는 움직임 벡터 정밀도에 기초할 수 있다. 예를 들어, 움직임 벡터가 정수 정밀도인 경우, 이러한 플래그는 시그널링되지 않는다.
i. 이러한 플래그가 시그널링되지 않는 경우, 이는 암시적으로 참(true) 혹은 거짓(false)로 유도될 수 있다.
j. 플래그는 이러한 방법이 활성화되는지 혹은 아닌지 여부를 지시하기 위해 슬라이스 헤더/타일 헤더/PPSSPSVPS에서 시그널링될 수 있다.
k. 이러한 시그널링 방법은 픽처의 시간적 레이어에 기초할 수 있다. 예를 들어, 높은 시간적 레이어의 픽처에 대해서는 비활성화될 수 있다.
l. 이러한 시그널링 방법은 픽처의 QP에 기초할 수 있다. 예를 들어, 높은 QP 의 픽처에 대해서는 비활성화될 수 있다.
11. 블록 높이 및 블록 크기를 모두 체크하는 대신, 오직 블록 높이에 따라 DMVR를 활성화할지 혹은 비활성화할지 여부를 결정하는 것이 제안된다.
a. 일 예로서, DMVR은 블록 높이가 T1(예를 들어, T1=4)보다 큰 경우 활성화 될 수 있다.
b. 일 예로서, DMVR은 블록 높이가 T1 이상인 경우(예를 들어, T1=8) 활성화될 수 있다.
12. DMVR/BIO에 적용되는 상기 방법들은 어파인 모드에 대한 광학 흐름(optical flow)에 기초한 예측 개선과 같은 다른 DMVD(decoder-side motion vector derivation) 방법들에만 적용될 수 있다.
a. 일 예로서, 블록 높이가 동일한 임계값을 충족하는지 여부와 같이 DMVR 및 BIO의 사용 결정에 대한 조건 체크가 정렬될 수 있다.
i. 일 예로서, DMVR 및 BIO는 블록 높이가 T1 이상인 경우(예를 들어, T1=8) 활성화될 수 있다.
ii. 일 예로서, DMVR 및 BIO는 블록 높이가 T1 보다 큰 경우(예를 들어, T1=4) 활성화될 수 있다.
5. 실시예
5.1 실시예 #1
JVET-M1001_v7 (VVC 워킹 드래프트 4, 버전7)에서 DMVR의 사용은 하기와 같이 변경된다:
하기 조건들이 모두 참이면, dmvrFlag는 1과 동일하게 설정된다:
sps_dmvr_enabled_flag는 1이다
현재 블록이 삼각(triangular) 예측 모드, 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이상임"이 삭제됨을 의미한다.
5.2 실시예 #2
새롭게 추가된 부분들은 굵은 이탤릭체 로 강조 표시하고, 삭제된 부분은 취소선으로 강조 표시되었다.
i. 일 예
8.5.7.4 양방향 광학 흐름 예측 프로세스
이 프로세스의 입력은 다음과 같다:
현재 코딩 블록의 너비 및 높이를 특정하는 두 변수 nCbW 및 nCbH,
두 개의 (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( 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에 대해, 현재 서브블록의 예측 샘플 값들은 하기와 같이 유도된다:
pbSamples[ x ][ y ] = Clip3( 0, ( 2bitDepth ) - 1, ( predSamplesL0[ x + 1 ][ y + 1 ] + offset2 + (8-852)
predSamplesL1[ x + 1 ][ y + 1 ] )  >>  shift2 )
그렇지 않은 경우 (bdofUtilizationFlag[ xSbIdx ][ yIdx ]이 TRUE), 현재 서브블록의 예측 샘플 값들은 하기와 같이 유도된다:
x =xSb - 1..xSb + 4, y = ySb -1..ySb + 4에 대해, 하기 순서의 단계들이 적용된다:
4. 예측 샘플 배열들 내의 대응 샘플 위치 (x, y)의 각각에 대한 위치 ( hx, vy )는 하기와 같이 유도된다:
hx = Clip3( 1, nCbW, x ) (8-853)
vy = Clip3( 1, nCbH, y ) (8-854)
5. 변수들 gradientHL0[ x ][ y ], gradientVL0[ x ][ y ], gradientHL1[ x ][ y ] 및 gradientVL1[ x ][ y ] 는 하기와 같이 유도된다:
gradientHL0[ x ][ y ]  =  (predSamplesL0[ hx + 1 ][vy] - predSampleL0[ hx - 1 ][ vy ] ) >> shift1 (8-855)
gradientVL0[ x ][ y ]  =   (predSampleL0[ hx ][ vy + 1 ] - predSampleL0[ hx ][vy - 1 ] ) >> shift1 (8-856)
gradientHL1[ x ][ y ]  =  (predSamplesL1[ hx + 1 ][vy] - predSampleL1[ hx - 1 ][ vy ] ) >> shift1 (8-857)
gradientVL1[ x ][ y ]  =   (predSampleL1[ hx ][ vy + 1 ] - predSampleL1[ hx ][vy - 1 ] ) >> shift1 (8-858)
6. 변수들 temp[ x ][ y ], tempH[ x ][ y ] 및 tempV[ x ][ y ]은 하기와 같이 유도된다:
tempH[ x ][ y ] = (gradientHL0[ x ][ y ] + gradientHL1[ x ][ y ] ) >> shift3 (8-860)
tempV[ x ][ y ] = (gradientVL0[ x ][ y ] + gradientVL1[ x ][ y ] ) >> shift3 (8-861)
변수들 sGx2, sGy2, sGxGy, sGxdI 및 sGydI은 하기와 같이 유도된다:
sGx2 = SiSj ( tempH[ xSb + i ][ ySb + j ] * tempH[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-862)
sGy2 = SiSj(tempV[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-863)
sGxGy = SiSj(tempH[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) 여기서 i, j  -1..4 (8-864)
sGxdI = SiSj( - tempH[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-865)
sGydI = SiSj( - tempV[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-866)
현재 서브 블록의 수평 및 수직 움직임 오프셋은 하기와 같이 유도된다:
vx = sGx2 > 0  ?  Clip3( -mvRefineThres, mvRefineThres, (8-867)
-( sGxdI << 3 ) >> Floor( Log2( sGx2 ) ) )  :  0
vy = sGy2 > 0  ?  Clip3( -mvRefineThres, mvRefineThres, ( ( sGydI << 3 ) - (8-868)
( ( vx * sGxGym ) << 12 + vx * sGxGys ) >> 1 ) >> Floor( Log2( sGx2 ) ) )  :  0
x =xSb - 1..xSb + 2, y = ySb -1..ySb + 2에 대해, 현재 서브블록의 예측 샘플 값들은 하기와 같이 유도된다:
bdofOffset = Round( ( vx * ( gradientHL1[ x + 1 ][ y + 1 ] - gradientHL0[ x + 1 ][ y + 1 ] ) ) >> 1 ) (8-869)
+ Round( ( vy * (gradientVL1[ x + 1 ][ y + 1 ] - gradientVL0[ x + 1 ][ y + 1 ] ) ) >> 1 )
[Ed. (JC): Round() 연산은 float 입력에 대해 정의된다. 여기서는 입력이 정수 값이기 때문에 Round() 연산이 반복되는 것처럼 보여진다. 제안자에 의해 확인되어야 한다]
pbSamples[ x ][ y ] = Clip3( 0, ( 2bitDepth ) - 1, ( predSamplesL0[ x + 1 ][ y + 1 ]  + offset4 + (8-870)
predSamplesL1[ x + 1 ][ y + 1 ] + bdofOffset )  >>  shift4 )
ii. 일 예
8.5.7.4 양 방향 광학 흐름 예측 프로세스
이 프로세스의 입력은 다음과 같다:
현재 코딩 블록의 너비 및 높이를 특정하는 두 변수 nCbW 및 nCbH,
두 개의 (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( 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에 대해, 현재 서브 블록의 예측 샘플 값들은 하기와 같이 유도된다:
pbSamples[ x ][ y ] = Clip3( 0, ( 2bitDepth ) - 1, ( predSamplesL0[ x + 1 ][ y + 1 ] + offset2 + (8-852)
predSamplesL1[ x + 1 ][ y + 1 ] )  >>  shift2 )
반대의 경우 (bdofUtilizationFlag[ xSbIdx ][ yIdx ]이 TRUE이면), 현재 서브 블록의 예측 샘플 값들은 하기와 같이 유도된다:
x =xSb - 1..xSb + 4, y = ySb -1..ySb + 4에 대해, 하기 순서의 단계들이 적용된다:
7. 예측 샘플 배열들 내의 대응 샘플 위치들의 각각에 대한 위치 ( hx, vy )는 하기와 같이 유도된다:
hx = Clip3( 1, nCbW, x ) (8-853)
vy = Clip3( 1, nCbH, y ) (8-854)
8. 변수들 gradientHL0[ x ][ y ], gradientVL0[ x ][ y ], gradientHL1[ x ][ y ] 및 gradientVL1[ x ][ y ]은 하기와 같이 유도된다:
9. 변수들 temp[ x ][ y ], tempH[ x ][ y ] 및 tempV[ x ][ y ]은 하기와 같이 유도된다:
diff[ x ][ y ] = (predSamplesL0[ hx ][ vy ] >> shift2 ) - ( predSamplesL1[ hx ][ vy ] >> shift2 ) (8-859)
tempH[ x ][ y ] = (gradientHL0[ x ][ y ] + gradientHL1[ x ][ y ] ) >> shift3 (8-860)
tempV[ x ][ y ] = (gradientVL0[ x ][ y ] + gradientVL1[ x ][ y ] ) >> shift3 (8-861)
변수들 sGx2, sGy2, sGxGy, sGxdI 및 sGydI은 하기와 같이 유도된다:
sGx2 =   ( tempH[ xSb + i ][ ySb + j ] * tempH[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-862)
sGy2 = (tempV[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) 여기서i, j = -1..4 (8-863)
sGxGy = (tempH[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) 여기서i, j  -1..4 (8-864)
sGxdI = ( - tempH[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-865)
sGydI = ( - tempV[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-866)
현재 서브블록의 수평 및 수직 움직임 오프셋은 하기와 같이 유도된다:
vx = sGx2 > 0  ?  Clip3( -mvRefineThres, mvRefineThres, (8-867)
-( sGxdI << 3 ) >> Floor( Log2( sGx2 ) ) )  :  0
vy = sGy2 > 0  ?  Clip3( -mvRefineThres, mvRefineThres, ( ( sGydI << 3 ) - (8-868)
( ( vx * sGxGym ) << 12 + vx * sGxGys ) >> 1 ) >> Floor( Log2( sGx2 ) ) )  :  0
x =xSb - 1..xSb + 2, y = ySb-1..ySb + 2에 대해, 현재 서브 블록의 예측 샘플 값들은 하기와 같이 유도된다:
bdofOffset = Round( ( vx * ( gradientHL1[ x + 1 ][ y + 1 ] - gradientHL0[ x + 1 ][ y + 1 ] ) ) >> 1 ) (8-869)
+ Round( ( vy * (gradientVL1[ x + 1 ][ y + 1 ] - gradientVL0[ x + 1 ][ y + 1 ] ) ) >> 1 )
[Ed. (JC): Round() 연산은 float 입력에 대해 정의된다. 여기서는 입력이 정수 값이기 때문에 Round() 연산이 반복되는 것처럼 보여진다. 제안자에 의해 확인되어야 한다]
pbSamples[ x ][ y ] = Clip3( 0, ( 2bitDepth ) - 1, ( predSamplesL0[ x + 1 ][ y + 1 ]  + offset4 + (8-870)
predSamplesL1[ x + 1 ][ y + 1 ] + bdofOffset )  >>  shift4 )
iii. 일 예
8.5.7.4 양방향 광학 흐름 예측 프로세스
이 프로세스의 입력은 다음과 같다:
현재 코딩 블록의 너비 및 높이를 특정하는 두 변수 nCbW 및 nCbH,
두 개의 (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, offset5, offset6, 및 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 ) )와 동일하게 설정된다.
변수 offset5는 (1 << (shift1 - 1))와 동일하게 설정된다.
변수 offset6는 (1 << (shift2 - 1))와 동일하게 설정된다.
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에 대해, 현재 서브블록의 예측 샘플 값들은 하기와 같이 유도된다:
pbSamples[ x ][ y ] = Clip3( 0, ( 2bitDepth ) - 1, ( predSamplesL0[ x + 1 ][ y + 1 ] + offset2 + (8-852)
predSamplesL1[ x + 1 ][ y + 1 ] )  >>  shift2 )
그렇지 않은 경우 (bdofUtilizationFlag[ xSbIdx ][ yIdx ]이 TRUE이면), 현재 서브블록의 예측 샘플 값들은 하기와 같이 유도된다:
x =xSb - 1..xSb + 4, y = ySb -1..ySb + 4에 대해, 하기 순서의 단계들이 적용된다:
10. 예측 샘플 배열들 내에 대응 샘플 위치들 (x, y)의 각각에 대한 위치 ( hx, vy ) 는 하기와 같이 유도된다:
hx = Clip3( 1, nCbW, x ) (8-853)
vy = Clip3( 1, nCbH, y ) (8-854)
11. 변수 gradientHL0[ x ][ y ], gradientVL0[ x ][ y ], gradientHL1[ x ][ y ] 및 gradientVL1[ x ][ y ] 는 하기와 같이 유도된다:
gradientHL0[ x ][ y ]  =  (predSamplesL0[ hx + 1 ][vy] - predSampleL0[ hx - 1 ][ vy ]  + offset5  ) >> shift1 (8-855)
gradientVL0[ x ][ y ]  =   (predSampleL0[ hx ][ vy + 1 ] - predSampleL0[ hx ][vy - 1 ]  + offset5 ) >> shift1 (8-856)
gradientHL1[ x ][ y ]  =  (predSamplesL1[ hx + 1 ][vy] - predSampleL1[ hx - 1 ][ vy ]  + offset5 ) >> shift1 (8-857)
gradientVL1[ x ][ y ]  =   (predSampleL1[ hx ][ vy + 1 ] - predSampleL1[ hx ][vy - 1 ]  + offset5 ) >> shift1 (8-858)
12. 변수 temp[ x ][ y ], tempH[ x ][ y ] 및 tempV[ x ][ y ]는 하기와 같이 유도된다:
tempH[ x ][ y ] = (gradientHL0[ x ][ y ] + gradientHL1[ x ][ y ] ) >> shift3 (8-860)
tempV[ x ][ y ] = (gradientVL0[ x ][ y ] + gradientVL1[ x ][ y ] ) >> shift3 (8-861)
변수들 sGx2, sGy2, sGxGy, sGxdI 및 sGydI은 하기와 같이 유도된다:
sGx2 = SiSj ( tempH[ xSb + i ][ ySb + j ] * tempH[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-862)
sGy2 = SiSj(tempV[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-863)
sGxGy = SiSj(tempH[ xSb + i ][ ySb + j ] * tempV[ xSb + i ][ ySb + j ] ) 여기서 i, j  -1..4 (8-864)
sGxdI = SiSj( - tempH[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-865)
sGydI = SiSj( - tempV[ xSb + i ][ ySb + j ] * diff[ xSb + i ][ ySb + j ] ) 여기서 i, j = -1..4 (8-866)
현재 서브블록의 수평 및 수직 움직임 오프셋은 하기와 같이 유도된다:
vx = sGx2 > 0  ?  Clip3( -mvRefineThres, mvRefineThres, (8-867)
-( sGxdI << 3 ) >> Floor( Log2( sGx2 ) ) )  :  0
vy = sGy2 > 0  ?  Clip3( -mvRefineThres, mvRefineThres, ( ( sGydI << 3 ) - (8-868)
( ( vx * sGxGym ) << 12 + vx * sGxGys ) >> 1 ) >> Floor( Log2( sGx2 ) ) )  :  0
x =xSb - 1..xSb + 2, y = ySb -1..ySb + 2에 대해, 현재 서브블록의 예측 샘플 값들은 하기와 같이 유도된다:
bdofOffset = Round( ( vx * ( gradientHL1[ x + 1 ][ y + 1 ] - gradientHL0[ x + 1 ][ y + 1 ] ) ) >> 1 ) (8-869)
+ Round( ( vy * (gradientVL1[ x + 1 ][ y + 1 ] - gradientVL0[ x + 1 ][ y + 1 ] ) ) >> 1 )
[Ed. (JC): Round() 연산은 float 입력에 대해 정의된다. 여기서는 입력이 정수 값이기 때문에 Round() 연산이 반복되는 것처럼 보여진다. 제안자에 의해 확인되어야 한다]
pbSamples[ x ][ y ] = Clip3( 0, ( 2bitDepth ) - 1, ( predSamplesL0[ x + 1 ][ y + 1 ]  + offset4 + (8-870)
predSamplesL1[ x + 1 ][ y + 1 ] + bdofOffset )  >>  shift4 )
도 8은 비디오 처리 장치(800)의 블록도이다. 장치(800)는 여기에 설명된 방법들 중 하나 이상을 구현하는데 사용될 수 있다. 장치(800)는 스마트폰, 태블릿, 컴퓨터, 사물 인터넷(IoT) 수신기 등으로 구현될 수 있다. 장치(800)는 하나 이상의 프로세서(802), 하나 이상의 메모리(804) 및 비디오 프로세싱 하드웨어(806)를 포함할 수 있다. 프로세서(들)(802)는 본 문서에 설명된 하나 이상의 방법을 구현하도록 구성될 수 있다. 메모리(804)는 여기에 설명된 방법 및 기술을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있다. 비디오 프로세싱(처리) 하드웨어(806)는 하드웨어 회로에서 본 문서에 설명된 일부 기술을 구현하는 데 사용될 수 있다. 비디오 프로세싱 하드웨어(806)는 전용 하드웨어 또는 그래픽 프로세서 유닛(GPU) 또는 특수 신호 처리 블록의 형태로 프로세서(들)(802) 내에 부분적으로 또는 완전히 포함될 수 있다.
도 10은 비디오 프로세싱 방법 1000의 흐름도를 도시한다. 방법 1000은 제1 비디오 블록의 특성의 결정을 수행(1005)하는 단계를 포함하되, 특성은 제1 비디오 블록과 연관된 참조 블록들 간의 차이를 포함하고, 차이는 SATD(sum of absolute transformed differences), MRSATD(a mean removed sum of absolute transformed differences), SSE(a sum of squares error), MRSSE(a mean removed sum of squares error), 평균값 차이(a mean value differences, 혹은 그라디언트 값 중 하나 이상을 포함하며, 제1 비디오 블록의 특성에 기초하여 BIO(bi-directional optical flow) 기술 혹은 DMVR(decoder-side motion vector refinement) 기술 중 하나 혹은 둘 모두의 동작 상태를 활성화 혹은 비활성화 중 하나로 결정(1010)하는 단계, BIO 기술 혹은 DMVR 기술 중 하나 또는 둘 모두의 동작 상태와 일치하는 제1 비디오 블록의 추가 처리를 수행(1015)하는 단계를 포함한다.
도 11은 비디오 프로세싱 방법(1100)의 흐름도를 도시한다. 방법은 제1 변경된 참조 블록을 생성하기 위해 제1 참조 블록을 변경하고, 제2 변경된 참조 블록을 생성하기 위해 제2 참조 블록을 변경(1105)하는 단계를 포함하되, 여기서 제1 참조 블록 및 제2 참조 블록은 제1 비디오 블록과 연관되고, 제1 변경된 참조 블록과 제2 변경된 참조 블록 간의 차이를 결정(1110)하는 단계를 포함하되, 차이는 SATD(sum of absolute transformed differences), MRSATD(a mean removed sum of absolute transformed differences), SSE(a sum of squares error), MRSSE(a mean removed sum of squares error), 평균값 차이(a mean value differences, 혹은 그라디언트 값 중 하나 이상을 포함하며, 제1 변경된 참조 블록과 제2 변경된 참조 블록 간의 차이에 기초하여 제1 비디오 블록의 추가 처리를 수행(1115)하는 단계를 포함한다.
도 12는 비디오 프로세싱 방법(1200)의 흐름도를 도시한다. 방법 1200은 제1 비디오 블록에 연관되는 제1 참조 블록의 부분과 제2 참조 블록의 부분 간의 차이를 결정(1205)하는 단계를 포함하되, 차이는 SATD(sum of absolute transformed differences), MRSATD(a mean removed sum of absolute transformed differences), SSE(a sum of squares error), MRSSE(a mean removed sum of squares error), 평균값 차이(a mean value differences, 혹은 그라디언트 값 중 하나 이상을 포함하며, 차이에 기초하여 제1 비디오 블록의 추가 처리를 수행(1210)하는 단계를 포함한다.
도 13은 비디오 프로세싱 방법(1300)의 흐름도를 도시한다. 방법 1300은 시간적 그라디언트 혹은 변경된 시간적 그라디언트를 제1 비디오 블록과 연관된 참조 픽처들을 이용하여 결정(1305)하는 단계를 포함하되, 시간적 그라디언트 혹은 변경된 시간적 그라디언트는 참조 픽처들 간의 차이를 지시하고, 차이에 따라 BIO(bi-directional opcial flow) 코딩 도구를 이용하여 제1 비디오 블록의 추가 처리를 수행(1310)하는 단계를 포함한다.
도 14는 비디오 프로세싱 방법(1400)의 흐름도를 도시한다. 방법 1400은 제1 비디오 블록과 연관된 참조 픽처들을 이용하여 시간적 그라디언트를 결정(1405)하는 단계, 변경된 시간적 그라디언트를 생성하기 위해 시간적 그라디언트를 변경(1410)하는 단계 및 변경된 시간적 그라디언트를 이용하여 제1 비디오 블록의 추가 처리를 수행(1415)하는 단계를 포함한다.
도 15는 비디오 프로세싱 방법(1500)의 흐름도를 도시한다. 방법 1500은 제1 비디오 블록과 연관된 제1 인터 참조 블록 및 제2 인터 참조 블록 중 하나 혹은 둘 모두를 변경(1505)하는 단계, 제1 변경된 인터 참조 블록 혹은 제2 변경된 인터 참조 블록 중 하나 혹은 둘 모두를 이용하여 BIO(bi-directional optical flow) 코딩 도구에 따라 공간적 그라디언트를 결정(1510)하는 단계 및 공간적 그라디언트에 기초하여 제1 비디오 블록의 추가 처리를 수행(1515)하는 단계를 포함한다.
도 16은 비디오 프로세싱 방법(1600)의 흐름도를 도시한다. 방법 1600은 블록 레벨에서 시그널링되는 플래그가 제1 비디오 블록에 대해 DMVR(decoder-side motion vector refinement) 혹은 BIO(bi-directional optical flow) 중 하나 혹은 둘 모두가 활성화될 것을 지시한다는 결정을 수행(1605)하는 단계, 제1 비디오에 대한 추가 처리를 수행(1610)하는 단계를 포함하되, 처리는 플래그와 일치하는 DMVR 혹은 BIO 중 하나 혹은 둘 모두를 적용하는 것을 포함한다.
방법 1000, 1100, 1200, 1300, 1400, 1500, 및 1600을 참조하여, 양방향 광학 흐름(BIO) 또는 디코더 측 움직임 벡터 개선(DMVR)의 사용을 결정하는 일부 예가 섹션 4에 설명되어 있다. 예를 들어, 섹션 4에서 설명한 대로 참조 블록 간의 차이를 결정할 수 있으며 차이점을 사용하여 BIO 또는 DMVR을 활성화 또는 비활성화할 수 있다.
방법 1000, 1100, 1200, 1300, 1400, 1500 및 1600을 참조하면, 비디오 블록은 움직임 정보 예측과 관련된 비트스트림 생성 규칙을 이용하여 비트 효율이 달성될 수 있는 비디오 비트스트림으로 인코딩될 수 있다.
방법들은 BIO 기술 또는 DMVR 기술의 동작 상태가 블록 레벨과 서브 블록 레벨에 대해 상이한 것을 포함할 수 있다.
방법들은 하나 이상의 그라디언트 값들, 그라디언트 값들의 평균, 그라디언트 값들의 범위가 임계 범위 내에 있음을 결정하는 단계를 포함할 수 있으며, 동작 상태를 결정하는 단계는 그라디언트 값들, 그라디언트 값들의 평균, 혹은 그라디언트 값들의 범위가 임계 범위 내에 있다는 결정을 기반으로 한다.
방법들은 동작 상태를 결정하는 단계는 인코더에서 디코더로 비디오 파라미터 세트(VPS), 시퀀스 파라미터 세트(SPS), 픽처 파라미터 세트(PPS), 타일 그룹 헤더 혹은 슬라이스 헤더에서 시그널링되는 정보에 더 기초함을 포함할 수 있다.
방법들은 SATD, MRSATD, SSE 혹은 MRSSE에 기초하는 제1 비디오 블록의 개선된 움직임 벡터를 결정하는 단계를 포함할 수 있고, 추가 처리를 수행하는 단계는 개선된 움직임 벡터에 기초한다.
방법들은 개선된 움직임 벡터를 결정하는 단계는 SATD 혹은 MRSATD에 기초함을 포함할 수 있고, 방법은 제1 비디오 블록의 각 서브 블록에 대해 SATD 혹은 MRSATD를 결정하는 단계; 각 서브 블록에 대해 SATD 혹은 MRSATD의 합산에 기초하여 제1 비디오 블록의 SATD 혹은 MRSATD를 생성하는 단계를 포함하되, 제1 비디오 블록의 추가 처리는 생성된 SATD 혹은 MRSATD에 기초한다.
방법들은 제1 비디오 블록의 두 개의 참조 블록들의 평균 값 차이는 임계 값보다 크다고 결정하는 단계를 포함할 수 있고, BIO 혹은 DMVR 중 하나 혹은 둘 모두는 두 개의 참조 블록들의 평균 값 차이에 기초하여 비활성화된 동작 상태에 있다.
방법들은 제1 비디오 블록의 서브 블록의 두 개의 참조 서브 블록들의 평균 값 차이는 임계 값보다 크다고 결정하는 단계를 포함할 수 있고, 여기서 BIO 혹은 DMVR 중 하나 혹은 둘 모두는 두 개의 참조 서브 블록들의 평균 값 차이에 기초하여 비활성화된 동작 상태에 있다.
방법들은 임계 값이 기 정의되는 것을 포함할 수 있다.
방법들은 제1 비디오 블록의 크기들을 결정하는 단계를 포함할 수 있고, 임계 값은 제1 비디오 블록의 크기에 기초할 수 있다.
방법들은 제1 참조 블록과 제2 참조 블록을 변경하는 단계는 제1 참조 블록에서 제1 참조 블록의 평균을 감산하는 단계를 포함하는 것을 포함할 수 있다.
방법들은 제1 참조 블록 및 제2 참조 블록의 부분이 짝수 행들을 포함하는 것을 포함할 수 있다.
방법들은 제1 참조 블록 및 제2 참조 블록의 부분이 모서리 샘플들을 포함하는 것을 포함할 수 있다.
방법들은 제1 참조 블록 및 제2 참조 블록의 부분이 대표적인 서브블록들을 포함하는 것을 포함할 수 있다.
방법들은 제1 참조 블록 혹은 제2 참조 블록에 대한 차이를 생성하기 위해 대표적인 서브블록들 간의 차이를 합산함을 포함할 수 있다.
방법들은 차이가 시간적 그라디언트의 절대 합에 연관됨을 포함할 수 있다.
방법들은 시간적 그라디언트를 변경하는 단계는 임계 값보다 큰 참조 블록들 간의 절대 평균 차이에 기초함을 포함할 수 있다.
방법들은 임계 값이 4임을 포함할 수 있다.
방법들은 시간적 그라디언트를 변경하는 단계가 임계 값보다 작은 참조 블록들 간의 절대 평균 차이에 기초함을 포함할 수 있다.
방법들은 임계 값이 20임을 포함할 수 있다.
방법들은 시간적 그라디언트를 변경하는 단계가 임계 범위 내인 참조 블록들 간의 절대 평균 차이에 기초함을 포함할 수 있다.
방법들은 BIO가 임계 값보다 큰 절대 평균 차이에 기초하는 비활성화된 동작 상태임을 포함할 수 있다.
방법들은 임계 값 혹은 임계 범위가 VPS, SPS, PPS, 픽처, 슬라이스, 혹은 타일 레벨에서 지시됨을 포함할 수 있다.
방법들은 임계 값 혹은 임계 범위가 서로 다른 코딩 유닛(CUs), 최대 코딩 유닛(LCUs), 슬라이스, 타일, 혹은 픽처 마다 다름을 포함할 수 있다.
방법들은 임계 값 혹은 임계 범위가 디코딩된 혹은 인코딩된 픽셀 값에 기초함을 포함할 수 있다.
방법들은 임계 값 혹은 임계 범위가 참조 픽처에 기초함을 포함할 수 있다.
방법들은 시간적 그라디언트를 결정하는 단계가 각 예측 방향에서 인트라 예측 블록 및 인터 예측 블록의 가중 평균을 결정하는 단계를 포함하는 것을 포함할 수 있다.
방법들은 플래그가 AMVP(advanced motion vector prediction) 모드에서 제공되되, 머지 모드에서, 플래그는 공간적 인접 블록들 혹은 시간적 인접 블록들 중 하나 혹은 둘 모두로부터 상속됨을 포함할 수 있다.
방법들은 플래그가 단일 예측된 블록에 대해 시그널링되지 않음을 포함할 수 있다.
방법들은 플래그가 디스플레이 순서에서 픽처에 대해 선행 혹은 후행 픽처들인 참조 픽처들을 갖는 양예측 블록들에 대해 시그널링되지 않는 것을 포함할 수 있다.
방법들은 플래그가 양 예측 블록들에 대해 시그널링되지 않는 것을 포함할 수 있다.
방법들은 플래그가 인트라 코딩된 블록들에 대해 시그널링되지 않는 것을 포함할 수 있다.
방법들은 플래그가 하이브리드 인트라 및 인터 예측 모드에 의해 코딩된 블록들에 대해서는 시그널링되지 않는 것을 포함할 수 있다.
방법들은 플래그가 제1 비디오 블록의 크기에 기초하여 시그널링 되는 것을 포함할 수 있다.
방법들은 플래그가 VPS, SPS 혹은 PPS에서 시그널링 되는 것을 포함할 수 있다.
방법들은 플래그가 제1 비디오 블록과 연관된 시간적 레이어에 기초하는 것을 포함할 수 있다.
방법들은 제1 비디오 블록과 연관된 픽처의 양자화 파라미터(quantization parameter, QP)에 기초하는 것을 포함할 수 있다.
도 17은 여기에 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 프로세싱 시스템 1700을 나타내는 블록도를 도시한다. 다양한 실시예들은 시스템 1700의 일부 혹은 모든 컴포넌트들을 포함할 수 있다. 시스템 1700은 비디오 컨텐츠를 수신하기 위해 입력 1702을 포함할 수 있다. 비디오 콘텐츠는 예를 들어, 8 또는 10 비트 다중 컴포넌트 픽셀 값들과 같은 raw 혹은 압축되지 않은 포맷으로 수신될 수 있고, 압축되거나 인코딩된 포맷일 수도 있다. 입력 1702는 네트워크 인터페이스, 주변 버스 인터페이스, 혹은 스토리지 인터페이스를 나타낼 수 있다. 네트워크 인터페이스 예시들은 이더넷(ethernet), PON(passive optical network) 등과 같은 유선 인터페이스들을 포함하고, Wi-Fi 혹은 셀룰러 인터페이스들과 같은 무선 인터페이스들도 포함한다.
시스템 1700은 본 문서에 개시된 다양한 코딩 혹은 인코딩 방법들을 구현할 수 있는 코딩 컴포넌트 1704를 포함할 수 있다. 코딩 컴포넌트 1704는 비디오의 코딩된 표현을 생성하기 위해 입력 1702로부터 코딩 컴포넌트 1704의 출력으로의 비디오의 평균 비트율(bitrate)을 감소시킬 수 있다. 따라서 코딩 기술들은 종종 비디오 압축 혹은 비디오 트랜스코딩 기술들로 불리기도 한다. 코딩 컴포넌트 1704의 출력은 컴포넌트 1706에 의해 표현되는 바와 같이 저장되거나 연결된 통신을 통해 전송될 수 있다. 입력 1702에서 수신된 비디오의 저장된 혹은 통신된 비트스트림(혹은 코딩된) 표현은 컴포넌트 1708에 의해 디스플레이 인터페이스 1710로 송신되는 픽셀 값들 혹은 디스플레이 가능한 비디오를 생성하는 데 사용될 수 있다. 비트스트림 표현으로부터 사용자가 시청 가능한 비디오를 생성하는 프로세스는 비디오 종종 압축 해제로 불린다. 또한, 특정 비디오 프로세싱 동작들이 "코딩" 동작들 혹은 도구들로 불리지만, 코딩 도구 혹은 동작은 인코더에서 사용되고, 코딩 결과를 역전시키는 해당 디코딩 도구 혹은 동작은 디코더에 의해 수행될 것이다.
주변 버스 인터페이스 또는 디스플레이 인터페이스의 예는 범용 직렬 버스(universal serial bus; USB), 고화질 멀티미디어 인터페이스(high definition multimedia interface; HDMI), 또는 Displayport 등을 포함할 수 있다. 저장 인터페이스의 예는 SATA(serial advanced technology attachment; 직렬 고급 결합 기술; 직렬 ATA), PCI, IDE 인터페이스 등을 포함할 수 있다. 이 명세서에 기재된 기법들은 모바일폰, 랩탑, 스마트폰 또는 디지털 데이터 처리 및/또는 비디오 디스플레이가 가능한 다른 기기들 등의 여러 전자 기기들에 구현될 수 있다.
압축되는 코딩 유닛들이 전통적인 정사각형 블록 혹은 반 정사각형(half-square) 블록과 상당히 다른 형상을 가질 때, 압축 효율을 개선하기 위해 개시된 기술들이 비디오 인코더 혹은 디코더에서 구현될 수 있다는 것이 이해될 것이다. 예를 들어, 4x32 혹은 32x4 크기의 유닛들과 같은 가로가 길거나 세로가 긴 코딩 유닛들을 사용하는 새로운 코딩 도구들은 개시된 기술들로부터 장점을 취할 수 있다.
일부 실시예들에서, 비디오 프로세싱 방법은 하기와 같이 수행될 수 있다.
비디오 블록과 비디오 블록의 비트스트림 표현 간의 변환 동안 공간적 그라디언트 및 시간적 그라디언트를 계산하기 위한 필터링 방법을 사용하는 단계, 및
필터링을 이용하여 변환을 수행하는 단계로 수행될 수 있다.
여기서, 변환은 비디오 블록의 픽셀 값으로부터 비트스트림 표현을 생성하거나 비트스트림 표현으로부터 픽셀 값을 생성하는 과정을 포함한다.
일부 실시예들에서, 공간적 및 시간적 그라디언트들은 시프팅된 샘플 차이를 이용하여 계산된다.
일부 실시예들에서, 공간적 및 시간적 그라디언트들은 변경된 샘플들을 이용하여 계산된다.
이 방법의 추가적인 세부 사항들은 섹션 4에서 논의된 아이템 1에서 소개되었다.
도 18은 비디오 프로세싱 방법의 순서도의 예를 도시한다. 이 방법의 단계들은 본 문서의 섹션 4의 예시 2에서 논의되었다. 이 방법은 (단계 1805에서) 시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함한다. 여기서, 현재 블록의 변환은 현재 블록에 대해 BIO(bi-directional optical flow) 기술 혹은 DMVR(decoder-side motion vector refinement) 기술 중 하나 혹은 둘 모두의 사용이 활성화되었는지 혹은 비활성화되었는지 여부를 결정하는 과정을 포함하고, BIO 기술 혹은 DMVR 기술의 사용의 결정은 현재 블록과 연관된 비용 기준에 기초한다.
도 19는 비디오 프로세싱 방법의 흐름도의 예를 도시한다. 이 방법의 단계들은 본 문서의 섹션 4의 예시 3에서 논의되었다. 방법은 (단계 1950에서) 시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 현재 블록의 변환은 DMVR(decoder-side motion vector refinement) 기술 사용이 현재 블록에 대해 활성화 혹은 비활성화 되었는지 여부를 결정하는 것을 포함하고, DMVR 기술은 현재 블록의 움직임 정보를 MRSAD(a mean removed sum of absolute differences) 비용 기준 이외의 비용 기준에 기초하여 개선하는 것을 포함한다.
도 20은 비디오 프로세싱 방법의 흐름도의 예를 도시한다. 이 방법의 단계들은 본 문서의 섹션 4의 예시 4에서 논의되었다. 이 방법은 (단계 2005에서) 시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 현재 블록의 변환은 BIO(bi-directional optical flow) 기술 혹은 DMVR(decoder-side motion vector refinement) 기술 중 하나 혹은 둘 모두의 사용이 활성화 혹은 비활성화 되었는지 여부를 결정하는 것을 포함하고, BIO 기술 혹은 DVMR 기술의 사용을 결정하는 것은 현재 블록과 연관된 참조 블록의 한 쌍의 평균 값의 차이가 임계 값을 초과한다는 계산에 기초한다.
도 21은 비디오 프로세싱 방법의 흐름도의 예를 도시한다. 이 방법에서 단계들은 본 문서의 섹션 4의 예시 6에서 논의되었다. 방법은 (단계 2105에서) 제1 변경된 참조 블록을 생성하기 위해 제1 참조 블록을 변경하고, 제2 변경된 참조 블록을 생성하기 위해 제2 참조 블록을 변경하는 단계를 포함하되, 제1 참조 블록 및 제2 참조 블록 모두 시각 매체 데이터의 현재 블록에 연관된다. 이 방법은 (단계 2110에서) 제1 변경된 참조 블록과 제2 변경된 참조 블록 간의 차이를 결정하는 단계를 포함하되, 차이는 SATD(sum of absolute transformed differences), MRSATD(a mean removed sum of absolute transformed differences), SSE(a sum of squares error), MRSSE(a mean removed sum of squares error), 평균값 차이(a mean value differences), 혹은 그라디언트 값 중 하나 이상을 포함한다. 이 방법은 (단계 2115에서) 시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 변환은 제1 참조 블록과 제2 참조 블록을 각각 변환하여 생성된 제1 변경된 참조 블록과 제2 변경된 참조 블록 간의 차이의 사용을 포함한다.
도 22는 비디오 프로세싱 방법의 흐름도의 예를 도시한다. 이 방법에서 단계들은 본 문서의 섹션 4의 예시 7에서 논의되었다. 이 방법은 (단계 2205에서) 시각 매체 데이터의 현재 블록과 연관된 참조 픽처들을 이용하여 시간적 그라디언트 혹은 변경된 시간적 그라디언트를 결정하는 단계를 포함하되, 시간적 그라디언트 혹은 변경된 시간적 그라디언트는 참조 픽처들의 차이를 지시한다. 이 방법은 (단계 2210에서) 시각 매체 데이터의 현재 블록 및 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 변환은 시간적 그라디언트 혹은 변경된 시간적 그라디언트에 부분적으로 기초하는 BIO(bi-directional optical flow) 기술의 사용을 포함한다.
도 23은 비디오 프로세싱 방법의 흐름도의 예를 도시한다. 이 방법에서 단계들은 본 문서의 섹션 4의 예시 8에서 논의되었다. 이 방법은 (단계 2305에서) 제1 비디오 블록 혹은 그의 서브 블록과 연관된 참조 픽처들을 이용하여 제1 시간적 그라디언트를 결정하는 단계를 포함한다. 이 방법은 (단계 2310에서) 제2 비디오 블록 혹은 그의 서브 블록과 연관된 참조 픽처들을 이용하여 제2 시간적 그라디언트를 결정하는 단계를 포함한다. 이 방법은 (단계 2315에서) 변경된 제1 시간적 그라디언트와 변경된 제2 시간적 그라디언트를 생성하기 위해 제1 시간적 그라디언트의 변경과 제2 시간적 그라디언트의 변경을 수행하는 단계를 포함하되, 제1 비디오 블록과 연관된 제1 시간적 그라디언트의 변경은 제2 비디오 블록과 연관된 제2 시간적 그라디언트의 변경과 상이하다. 이 방법은 (단계 2320에서) 제1 비디오 블록과 제2 비디오 블록을 대응 코딩 표현으로의 변환을 수행하는 단계를 포함한다.
도 24는 비디오 프로세싱 방법의 흐름도의 예를 도시한다. 이 방법에서 단계들은 본 문서의 섹션 4의 예시 9에서 논의되었다. 이 방법은 (단계 2405에서) 현재 블록과 연관된 제1 인터 참조 블록 및 제2 인터 참조 블록 중 하나 혹은 둘 모두를 변경하는 단계를 포함한다. 이 방법은 (단계 2410에서) 변경된 제1 인터 참조 블록 및/혹은 변경된 제2 인터 참조 블록 중 하나 혹은 둘 모두의 이용에 기초하여 BIO(bi-directional optical flow) 기술을 적용함에 따른 현재 블록과 연관된 공간적 그라디언트를 결정하는 단계를 포함한다. 이 방법은 (단계 2415에서) 현재 블록과 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 변환은 현재 블록과 연관된 공간적 그라디언트의 사용을 포함한다.
도 25는 비디오 프로세싱 방법의 흐름도의 예를 도시한다. 이 방법에서 단계들은 본 문서의 섹션 4의 예시 10에서 논의되었다. 이 방법은 (단계 2505에서) 프로세서에 의해 블록 레벨에서 시그널링되는 플래그가, 적어도 부분적으로DMVR(decoder-side motion vector refinement) 기술 혹은 BIO(bidirectional optical flow) 기술 중 하나 혹은 둘 모두가 현재 블록에 대해 활성화 되어야함을 지시한다는 결정을 수행하는 단계를 포함한다. 이 방법은 (단계 2510에서) 현재 블록과 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 코딩 표현은 DMVR 기술 및/혹은 BIO 기술 중 하나 혹은 둘 모두가 활성화되는지 여부를 지시하는 플래그를 포함한다.
도 26은 비디오 프로세싱 방법의 흐름도의 예를 도시한다. 이 방법에서 단계들은 본 문서의 섹션 4의 예시 11에서 논의되었다. 이 방법은 (단계 2605에서) 프로세서에 의해 DMVR(decoder-side motion vector refinement) 기술이 현재 블록에 대해 활성화된다는 결정을 수행하는 단계를 포함하되, 결정은 현재 블록의 높이에만 배타적으로 기초한다. 이 방법은 (단계 2610에서) 현재 블록과 대응 코딩 표현 간의 변환을 수행하는 단계를 포함한다.
도 27은 비디오 프로세싱 방법의 흐름도의 예를 도시한다. 이 방법에서 단계들은 본 문서의 섹션 4의 예시 12에서 논의되었다. 이 방법은 (단계 2705에서) 시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되, 변환은 DMVR(decoder-side motion vector refinement) 기술 혹은 BIO(bi-directional optical flow) 기술 중 하나 혹은 둘 모두와 연관된 규칙들의 현재 블록에 대한 사용을 포함하고, DMVR 기술과 연관된 규칙들은 BIO 기술에 대해 적용되는 것과 동일하고, 현재 블록에 대한 BIO 기술 혹은 DMVR 기술 중 하나 혹은 둘 모두의 이용이 활성화 혹은 비활성화 되는지 여부의 결정은 규칙들의 적용에 기초한다.
본 기술의 일부 실시예는 절 기반(clause-based) 형식으로 논의된다.
1. 시각 매체 프로세싱 방법에 있어서,
시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되,
현재 블록의 변환은 현재 블록에 대해 BIO(bi-directional optical flow) 기술 혹은 DMVR(decoder-side motion vector refinement) 기술 중 하나 혹은 둘 모두의 사용이 활성화되는지 혹은 비활성화되는지 여부를 결정하는 과정을 포함하고,
BIO 기술 혹은 DMVR 기술의 사용 결정은 현재 블록과 연관된 비용 기준에 기초한다.
2. 1절의 방법에 있어서, 비용 기준은 SATD(a sum of absolute transformed differences), MRSATD(a mean removed sum of absolute transformed differences), SSE(a sum of squares error), MRSSE(a mean removed sum of squares error), 평균 값 차이(mean value difference), 혹은 그라디언트 값들 중 하나 이상에 기초한다.
3. 1-2절 중 하나 이상의 방법에 있어서, 비용 기준은 현재 블록의 서브 블록과 연관된다.
4. 3절의 방법에 있어서, 서브 블록 레벨 비용 기준은 블록 레벨 비용 기준과 상이하다.
5. 1-4절 중 하나 이상의 방법에 있어서,
하나 이상의 그라디언트 값들, 그라디언트 값들의 평균, 혹은 그라디언트 값들의 범위가 임계 범위 외라는 결정 하에, BIO 기술 및/혹은 DMVR 기술의 적용을 비활성화하는 단계를 더 포함한다.
6. 1절의 방법에 있어서, 현재 블록과 연관되는 비용 기준은 코딩된 표현에서 시그널링된다.
7. 6절의 방법에 있어서, 비용 기준은 비디오 파라미터 세트(video parameter set: VPS), 시퀀스 파라미터 세트(sequence parameter set: SPS), 픽처 파라미터 세트(picture parameter set: PPS), 타일 그룹 헤더 혹은 슬라이스 헤더에서 시그널링된다.
8. 시각 매체 프로세싱 방법에 있어서,
시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되,
현재 블록의 변환은 현재 블록에 대한 DMVR(decoder-side motion vector refinement) 기술의 사용이 활성화되는지 혹은 비활성화되는지 여부를 결정하는 과정을 포함하고,
DMVR 기술은 MRSAD(a mean removed sum of absolute differences) 비용 기준 외의 비용 기준에 기초하여 현재 블록의 움직임 정보를 개선하는 과정을 포함한다.
9. 8절의 방법에 있어서, 현재 블록에 연관된 비용 기준은 SATD(sum of absolute transformed differences), MRSATD(mean removed sum of absolute transformed differences), SSE(sum of squares error), 혹은 MRSSE(mean removed sum of squares error) 중 하나 이상에 기초한다.
10. 8-9절 중 하나 이상의 방법에 있어서, 비용 기준은 현재 블록의 서브 블록에 연관된다.
11. 10절의 방법에 있어서,
현재 블록을 크기 MxN의 다중 서브 블록들로 분할하는 단계, 여기서 비용 기준은 다중 서브 블록들의 각각에 연관되는 움직임 정보에 기초하고,
다중 서브 블록들의 각각에 대응되는 비용을 생성하는 단계를 더 포함한다.
12. 11절의 방법에 있어서,
현재 블록과 연관된 결과 비용을 생성하기 위해 적어도 다중 서브 블록들의 각각에 대응되는 비용의 서브세트(subset)를 합산하는 단계를 더 포함한다.
13. 시각 매체 프로세싱 방법에 있어서,
시각 매체 데이터의 현재 블록 및 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계를 포함하되,
현재 블록의 변환은 현재 블록에 대해 BIO(bi-directional optical flow) 기술 혹은 DMVR(decoder-side motion vector refinement) 기술 중 하나 혹은 둘 모두의 사용이 활성화되는지 혹은 비활성화되는지 여부를 결정하는 과정을 포함하고,
BIO 기술 혹은 DMVR 기술의 사용의 결정은 현재 블록과 연관된 한 쌍의 참조 블록들의 평균 값 차이가 임계 값을 초과한다는 계산에 기초한다.
14. 13절의 방법에 있어서, 임계 값은 제1 임계 값이고,
현재 블록의 서브블록과 연관된 한 쌍의 참조 서브블록의 평균값 차이가 제2 임계값을 초과한다는 결정 하에, BIO 기술 및/또는 DMVR 기술의 적용을 비활성화하는 단계를 더 포함한다.
15. 14절의 방법에 있어서, 제1 임계 값 및/혹은 제2 임계 값은 기 정의된 숫자이다.
16. 14절의 방법에 있어서, 제1 임계 값 및/혹은 제2 임계 값은 현재 블록의 크기에 기초한다.
17. 시각 매체 프로세싱 방법에 있어서,
제1 변경된 참조 블록을 생성하기 위해 제1 참조 블록을 변경하고 제2 변경된 참조 블록을 생성하기 위해 제2 참조 블록을 변경하는 단계, 여기서 제1 참조 블록 및 제2 참조 블록 모두 시각 매체 데이터의 현재 블록에 연관되고,
제1 변경된 참조 블록과 제2 변경된 참조 블록 간의 차이를 결정하는 단계, 여기서 차이는 SATD(sum of absolute transformed differences), MRSATD(a mean removed sum of absolute transformed differences), SSE(a sum of squares error), MRSSE(a mean removed sum of squares error), 평균값 차이(a mean value differences), 혹은 그라디언트 값 중 하나 이상을 포함하고,
시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계, 여기서 변환은 제1 참조 블록과 제2 참조 블록을 각각 변경함으로서 생성된 제1 변경된 참조 블록 및 제2 변경된 참조 블록 간의 차이의 사용을 포함한다.
18. 17절의 방법에 있어서, 제1 참조 블록 및 제2 참조 블록을 변경하는 단계는,
제1 참조 블록에 포함된 샘플 값들에 기초한 제1 산술 평균 및 제2 참조 블록에 포함된 샘플 값들에 기초한 제2 산술 평균을 계산하는 단계;
제1 참조 블록에 포함된 샘플들로부터 제1 산술 평균을 감산하고, 제2 참조 블록에 포함된 샘플들로부터 제2 산술 평균을 감산하는 단계;를 포함한다.
19. 18절의 방법에 있어서, 제1 산술 평균 및 제2 산술 평균은 제1 참조 블록 및 제2 참조 블록에 각각 포함된 샘플들의 서브 세트(subset)에 기초한다.
20. 17-19절 중 하나 이상의 방법에 있어서, 제1 참조 블록 및/혹은 제2 참조 블록은 현재 블록과 연관된 서브 블록들이다.
21. 시각 매체 프로세싱 방법에 있어서,
시각 매체 데이터의 현재 블록과 연관된 참조 픽처들을 이용하여 시간적 그라디언트 혹은 변경된 시간적 그라디언트를 결정하는 단계, 여기서 시간적 그라디언트 혹은 변경된 시간적 그라디언트는 참조 픽처들 간의 차이들을 지시하고,
시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계, 여기서 변환은 시간적 그라디언트 혹은 변경된 시간적 그라디언트에 적어도 부분적으로 기초하여 BIO(bi-directional optical flow) 기술의 사용을 포함한다.
22. 21절의 방법에 있어서,
시간적 그라디언트 혹은 변경된 시간적 그라디언트가 임계값 이하라고 결정되면 BIO 기술을 조기에 종료하는 단계를 더 포함한다.
23. 22절의 방법에 있어서,
시간적 그라디언트 혹은 변경된 그라디언트의 절대 합을 계산하는 데 사용된 샘플들의 수에 기초하여 임계값을 조정하는 단계를 더 포함한다.
24. 21-23절 중 하나 이상의 방법에 있어서, 차이는 시간적 그라디언트의 절대 합에 연관된다.
25. 21-24절 중 하나 이상의 방법에 있어서, 참조 픽처들 간의 차이는 제1 참조 픽처의 제1 부분 및 제2 참조 픽처의 제2 부분 간의 차이에 대응된다.
26. 21-25 절 중 하나 이상의 방법에 있어서, 참조 픽처들은 현재 블록의 서브 블록에 연관된다.
27. 시각 매체 프로세싱 방법에 있어서,
제1 비디오 블록 혹은 그의 서브 블록과 연관된 참조 픽처들을 이용하여 제1 시간적 그라디언트를 결정하는 단계,
제2 비디오 블록 혹은 그의 서브 블록과 연관된 참조 픽처들을 이용하여 제2 시간적 그라디언트를 결정하는 단계,
변경된 제1 시간적 그라디언트와 변경된 제2 시간적 그라디언트를 생성하기 위해 제1 시간적 그라디언트의 변경과 제2 시간적 그라디언트의 변경을 수행하는 단계, 여기서 제1 비디오 블록과 연관된 제1 시간적 그라디언트의 변경은 제2 비디오 블록과 연관된 제2 시간적 그라디언트의 변경과 상이하고,
제1 비디오 블록과 제2 비디오 블록을 대응 코딩 표현으로의 변환을 수행하는 단계를 포함한다.
28. 27절의 방법에 있어서, 제1 시간적 그라디언트의 변경 및/혹은 제2 시간적 그라디언트의 변경은 임계 값보다 큰 제1 비디오 블록 및/혹은 제2 비디오 블록과 연관된 참조 픽처들 간의 절대 평균 차이에 조건부로 기초한다.
29. 28절의 방법에 있어서, 임계 값은 4이다.
30. 27절의 방법에 있어서, 제1 시간적 그라디언트의 변경 및/혹은 제2 시간적 그라디언트의 변경은 임계 값보다 작은 제1 비디오 블록 및/혹은 제2 비디오 블록과 연관된 참조 픽처들 간의 절대 평균 차이에 조건부로 기초한다.
31. 30절의 방법에 있어서, 임계 값은 20이다.
32. 27절의 방법에 있어서, 제1 시간적 그라디언트의 변경 및/혹은 제2 시간적 그라디언트의 변경은 임계 범위 내인 제1 비디오 블록 및/혹은 제2 비디오 블록과 연관된 참조 픽처들 간의 절대 평균 차이에 조건부로 기초한다.
33. 27-32절 중 어느 한 방법에 있어서,
임계 값보다 큰 제1 비디오 블록 및/혹은 제2 비디오 블록과 연관된 참조 픽처들 간의 절대 평균 차이에 기초하여 제1 비디오 블록 및/혹은 제2 블록에 대한 BIO(bi-directional optical flow) 기술의 사용을 비활성화하는 단계를 포함한다.
34. 27-33절 중 하나 이상의 방법에 있어서, 임계 값 혹은 임계 범위는 제1 비디오 블록 및/혹은 제2 비디오 블록과 연관된 VPS, SPS, PPS, 픽처, 슬라이스, 혹은 타일 레벨에서 지시된다.
35. 27-33절 중 하나 이상의 방법에 있어서, 임계 값 혹은 임계 범위는 암시적으로 기 정의된 파라미터들이다.
36. 27-33절 중 하나 이상의 방법에 있어서, 임계 값 혹은 임계 범위는 제1 비디오 블록 및/혹은 제2 비디오 블록에 연관된 서로 다른 코딩 유닛(CUs), 최대 코딩 유닛(LCUs), 슬라이스, 타일, 혹은 픽처들 마다 상이하다.
37. 27-33절 중 하나 이상의 방법에 있어서, 임계 값 혹은 임계 범위는 제1 비디오 블록 및/혹은 제2 비디오 블록에 연관된 디코딩된 혹은 인코딩된 픽셀 값에 기초한다.
38. 27-33절 중 하나 이상의 방법에 있어서, 참조 픽처들의 제1 세트에 대한 임계 값 혹은 임계 범위는 참조 픽처들의 제2 세트에 대한 임계 값 혹은 임계 범위와 상이하다.
39. 27절의 방법에 있어서, 제1 시간적 그라디언트의 변경 및/혹은 제2 시간적 그라디언트의 변경은 임계 값보다 큰 제1 비디오 블록 및/혹은 제2 비디오 블록과 연관된 참조 픽처들 간의 절대 평균에 조건부로 기초한다.
40. 39절의 방법에 있어서, 임계 값은 40이다.
41. 27절의 방법에 있어서, 제1 시간적 그라디언트의 변경 및/혹은 제2 시간적 그라디언트의 변경은 임계값보다 작은 제1 비디오 블록 및/혹은 제2 비디오 블록과 연관된 참조 픽처들의 절대 평균에 조건적으로 기초한다.
42. 41절의 방법에 있어서, 임계 값은 100이다.
43. 27절의 방법에 있어서, 제1 시간적 그라디언트의 변경 및/혹은 제2 시간적 그라디언트의 변경은 임계 범위 내인 제1 비디오 블록 및/혹은 제2 비디오 블록과 연관된 참조 픽처들의 절대 평균에 조건적으로 기초한다.
44. 27절의 방법에 있어서, 제1 시간적 그라디언트의 변경 및/혹은 제2 시간적 그라디언트의 변경은 제1 비디오 블록 및/혹은 제2 비디오 블록과 연관된 참조 픽처들의 절대 평균 차이에 곱셈 인자를 곱한 값보다 큰 제1 비디오 블록 및/혹은 제2 비디오 블록과 연관된 참조 픽처들의 절대 평균에 조건적으로 기초한다.
45. 27절의 방법에 있어서, 제1 시간적 그라디언트의 변경 및/혹은 제2 시간적 그라디언트의 변경은 제1 비디오 블록 및/혹은 제2 비디오 블록과 연관된 참조 픽처들의 절대 평균 차이에 곱셈 인자를 곱한 값보다 작은 제1 비디오 블록 및/혹은 제2 비디오 블록과 연관된 참조 픽처들의 절대 평균에 조건적으로 기초한다.
46. 44-45 절 중 하나 이상의 방법에 있어서, 곱셈 인자는 4.5이다.
47. 시각 매체 처리 방법에 있어서,
현재 블록과 연관된 제1 인터 참조 블록 및 제2 인터 참조 블록 중 하나 혹은 둘 모두를 변경하는 단계;
변경된 제1 인터 참조 블록 및/혹은 변경된 제2 인터 참조 블록 중 하나 혹은 둘 모두를 사용하는 것에 기초하여, BIO(bi-directional optical) 흐름 기술을 적용함에 따라 현재 블록과 연관된 공간적 그라디언트를 결정하는 단계; 및
현재 블록과 대응 코딩 표현 간의 변환을 수행하는 단계;를 포함하되 여기서 변환은 현재 블록과 연관된 공간적 그라디언트의 사용을 포함한다.
48. 47절의 방법에 있어서, 공간적 그라디언트를 결정하는 단계는,
현재 블록과 연관된 인트라 예측 블록 및 인터 예측 블록의 가중 평균에 기초하여 두 개의 예측 블록들을 생성하는 단계; 및
현재 블록과 연관된 공간적 그라디언트의 결정을 위해 두 개의 예측 블록들을 사용하는 단계;를 포함한다.
49. 48절의 방법에 있어서,
BIO 기술을 이용하여 두 개의 예측 블록들로부터 개선된 예측 블록을 생성하는 단계;
현재 블록의 서브 블록들 및/혹은 샘플들을 예측하기 위해 개선된 예측 블록을 사용하는 단계;를 포함한다.
50. 시각 매체 프로세싱 방법에 있어서,
프로세서에 의해 블록 레벨에서 시그널링되는 플래그가 적어도 부분적으로 DMVR(decoder-side motion vector refinement) 기술 혹은 BIO(bi-directional optical flow) 기술 중 하나 혹은 둘 모두가 현재 블록에 대해 활성화되어야함을 지시한다는 결정을 수행하는 단계; 및
현재 블록과 대응 코딩 표현 간의 변환을 수행하는 단계;를 포함하되, 여기서 코딩 표현은 DMVR 기술 및/혹은 BIO 기술 중 하나 혹은 둘 모두가 활성화되는지 여부를 지시하는 플래그를 포함한다.
51. 50절의 방법에 있어서, 현재 블록에 대해 AMVP(advanced motion vector prediction) 기술이 활성화됨이 검출되면 플래그가 코딩 표현에서 시그널링된다.
52. 50절의 방법에 있어서, 현재 블록에 대해 머지 모드(merge mode)가 활성화됨이 검출되면 플래그는 현재 블록과 연관된 공간적 인접 블록 혹은 시간적 인접 블록 중 하나 혹은 둘 모두로부터 유도된다.
53. 52절의 방법에 있어서, 선택된 머지 후보가 공간적 머지 후보이면 플래그는 선택된 머지 후보로부터 상속된다.
54. 52절의 방법에 있어서, 선택된 머지 후보가 시간적 머지 후보이면 플래그는 선택된 머지 후보로부터 상속된다.
55. 50절의 방법에 있어서, 현재 블록과 연관된 비용 기준은 DMVR 기술 및/혹은 BIO 기술이 활성화되는지 여부를 결정하는 데 사용되고, 코딩 표현에서 시그널링된 플래그는 이러한 결정이 올바른지 아닌지 여부를 지시하는 데 사용된다.
56. 55절의 방법에 있어서, 현재 블록과 연관된 비용 기준은 현재 블록의 두 개의 참조 블록들 간의 절대 차 합(sum of absolute differences: SAD)이고, DMVR 기술 및/혹은 BIO 기술 중 하나 혹은 둘 모두가 활성화되었다는 결정은 비용 기준이 임계값보다 클 때 적용된다.
57. 50절의 방법에 있어서,
현재 블록이 단일 예측된 블록이라는 결정 하에, 코딩 표현에서 플래그의 시그널링을 생략하는 단계;를 포함한다.
58. 50절의 방법에 있어서,
현재 블록이 디스플레이 순서에서 한 쌍의 선행 혹은 후행 참조 픽처들과 연관된 양 예측 블록이라는 결정 하에, 코딩 표현에서 플래그의 시그널링을 생략하는 단계;를 포함한다.
59. 50절의 방법에 있어서,
현재 블록이 현재 블록과 연관된 현재 픽처로부터 상이한 POC(picture order count) 거리를 갖는 한 쌍의 참조 픽처들과 연관된 양 예측 블록이라는 결정 하에, 코딩 표현에서 플래그의 시그널링을 생략하는 단계;를 포함한다.
60. 50절의 방법에 있어서,
현재 블록이 인트라 코딩된 블록이라는 결정 하에, 코딩 표현에서 플래그의 시그널링을 생략하는 단계;를 포함한다.
61. 50절의 방법에 있어서,
현재 블록이 하이브리드 인트라 및 인터 예측된 블록이라는 결정 하에, 코딩 표현에서 플래그의 시그널링을 생략하는 단계;를 포함한다.
62. 50절의 방법에 있어서,
현재 블록이 참조 블록과 동일한 픽처의 적어도 하나의 블록과 연관되어 있다는 결정 하에, 코딩 표현에서 플래그의 시그널링을 생략하는 단계;를 포함한다.
63. 50절의 방법에 있어서,
현재 블록의 크기가 임계 값보다 작다는 결정 하에 코딩 표현에서 플래그의 시그널링을 생략하는 단계;를 포함한다.
64. 50절의 방법에 있어서,
현재 블록의 크기가 임계 값 이상이라는 결정 하에, 코딩 표현에서 플래그의 시그널링을 생략하는 단계;를 포함한다.
65. 50절의 방법에 있어서,
현재 블록과 연관된 움직임 정보의 정밀도가 정수 정밀도라는 결정 하에, 코딩 표현에서 플래그의 시그널링을 생략하는 단계;를 포함한다.
66. 50절의 방법에 있어서,
현재 블록을 포함하는 픽처와 연관된 시간적 레이어가 임계 값을 초과한다는 결정 하에, 코딩 표현에서 플래그의 시그널링을 생략하는 단계;를 포함한다.
67. 50절의 방법에 있어서,
현재 블록과 연관된 양자화 파라미터(quantization parameter)가 임계값을 초과한다는 결정 하에, 코딩 표현에서 플래그의 시그널링을 생략하는 단계;를 포함한다.
68. 50절 내지 67절 중 하나 이상의 방법에 있어서,
코딩 표현에서 플래그의 시그널링이 생략되는 것으로 결정되면, 플래그의 값을 불리언 참(Boolean true) 혹은 거짓(false)로 유도한느 단계;를 포함한다.
69. 50-67절 중 하나 이상의 방법에 있어서,
플래그가 불리언 참(Boolean true)라는 결정 하에, DMVR 기술 혹은 BIO 기술 중 하나 혹은 둘 모두를 활성화하는 단계를 포함한다.
70. 50-67절 중 하나 이상의 방법에 있어서,
플래그가 불리언 거짓(Boolean false)라는 결정 하에, DMVR 기술 혹은 BIO 기술 중 하나 혹은 둘 모두를 비활성화하는 단계;를 포함한다.
71. 50-67절 중 하나 이상의 방법에 있어서,
플래그가 불리언 참(Boolean true)라는 결정 하에, 적어도 하나의 비용 기준에 기초하여 DMVR 기술 혹은 BIO 기술 중 하나 혹은 둘 모두를 활성화하는 비활성화 하는 결정이 올바르다고 결정된다.
72. 50-67절 중 하나 이상의 방법에 있어서,
플래그가 불리언 거짓(Boolean false)라는 결정 하에, 적어도 하나의 비용 기준에 기초하여 DMVR 기술 혹은 BIO 기술 중 하나 혹은 둘 모두를 활성화 혹은 비활성화하는 결정이 부정확한것으로 결정된다.
73. 50-67절 중 하나 이상의 방법에 있어서, 플래그는 슬라이스 헤더, 타일 헤더, VPS(video parameter set), SPS(sequence parameter set), 혹은 PPS(picture parameter set)에서 시그널링된다.
74. 50절의 방법에 있어서, 제1 플래그는 DMVR 기술이 비활성화되는지 혹은 아닌지 여부를 지시하기 위해 시그널링되고, 제2 플래그는 BIO 기술이 비활성화되는지 혹은 아닌지 여부를 지시하기위해 시그널링된다.
75. 64-74 절 중 하나 이상의 방법에 있어서,
DMVR 기술을 위한 플래그가 불리언 참(Boolean true)라는 결정 하에, DMVR 기술을 슬라이스, 타일, 비디오, 시퀀스 혹은 픽처에 대해 비활성화하는 단계를 더 포함한다.
76. 64- 74절 중 하나 이상의 방법에 있어서,
DMVR 기술에 대한 플래그가 불리언 거짓(Boolean false)이라는 결정 하에, 슬라이스, 타일, 비디오, 시퀀스 혹은 픽처에 대한 DMVR 기술이 활성화되는 단계를 포함한다.
77. 64절 내지 74절 중 하나 이상의 방법에 있어서,
BIO 기술을 위한 플래그가 불리언 참(Boolean true)이라는 결정 하에, 슬라이스, 타일, 비디오, 시퀀스 혹은 픽처에 대한 BIO 기술을 비활성화하는 단계를 포함한다.
78. 64절 내지 74절 중 하나 이상의 방법에 있어서,
BIO 기술을 위한 플래그가 불리언 거짓(Boolean false)이라는 결정 하에, 슬라이스, 타일, 비디오, 시퀀스 혹은 픽처에 대한 BIO 기술을 활성화하는 단계를 포함한다.
79. 시각 매체 프로세싱 방법에 있어서,
프로세서에 의해 DMVR(decoder-side motion vector refinement) 기술이 현재 블록에 대해 활성화되어야 한다는 결정을 수행하는 단계, 여기서 결정은 현재 블록의 높이에만 전적으로 기초하고;
현재 블록과 대응 코딩 표현 간의 변환을 수행하는 단계를 포함한다.
80. 79절의 방법에 있어서,
상기 DMVR 기술이 활성화되었다고 결정되면, 상기 현재 블록의 상기 높이가 임계 파라미터보다 큰지 검증하는 단계를 더 포함한다.
81. 80 절의 방법에 있어서, 상기 임계 파라미터는 4와 동일하다.
82. 80 절의 방법에 있어서, 상기 임계 파라미터는 8과 동일하다.
83. 시각 매체 프로세싱 방법에 있어서,
시각 매체 데이터의 현재 블록과 시각 매체 데이터의 대응 코딩 표현 간의 변환을 수행하는 단계, 여기서 상기 변환은 상기 현재 블록에 DMVR(decoder-side motion vector refinement) 기술 혹은 BIO(bi-directional optical flow) 기술 중 하나 혹은 둘 모두와 관련된 규칙들의 사용을 포함하되, 상기 DMVR 기술과 관련된 상기 규칙들은 상기 BIO 기술에 적용되는 것과 동일하고;
상기 BIO 기술 및/혹은 상기 DMVR 기술 중 하나 혹은 모두의 사용이 상기 현재 블록에 대해 활성화되는지 혹은 비활성화되는지 여부를 결정하는 단계는 상기 규칙들의 적용에 기초한다.
84. 83절의 방법에 있어서, 상기 DMVR 기술이 활성화 되는지 여부를 결정하는 규칙은 상기 BIO 기술이 활성화 되는지 여부를 결정하는 규칙과 동일하다.
85. 84절의 방법에 있어서, 상기 BIO 기술 및/혹은 DMVR 기술이 활성화되는지 여부를 결정하는 상기 규칙은 상기 현재 블록의 높이가 임계 값 이상임을 확인하는 것을 특정한다.
86. 84절의 방법에 있어서, 상기 BIO 기술 및/혹은 DMVR 기술이 활성화 되는지 여부를 결정하는 상기 규칙은 상기 현재 블록의 너비 및 높이 모두가 임계 값 이상임을 확인하는 것을 특정한다.
87. 85절 혹은 86절 중 하나 이상의 방법에 있어서, 임계 값은 4혹은 8이다.
88. 84절의 방법에 있어서, 상기 BIO 기술 및/혹은 상기 DMVR 기술이 활성화되는지 여부를 결정하는 상기 규칙은 상기 현재 블록의 크기가 임계값 이상임을 확인하는 것을 특정한다.
89. 86절의 방법에 있어서, 상기 임계값은 64 혹은 128이다.
90. 84절의 방법에 있어서, 상기 BIO 기술 및/혹은 DMVR 기술이 활성화 되는지 여부를 결정하는 상기 규칙은 상기 현재 블록이 BCW(Bi-prediction with CU-level Weight)모드 에서 코딩되지 않음을 확인하는 것을 특정하고, 상이한 가중치들은 두 개의 참조 리스트들로부터 두 개의 참조 블록들에 대해 사용된다.
91. 84절의 방법에 있어서, 상기 BIO 기술 및/혹은 DMVR 기술이 활성화 되는지 여부를 결정하는 상기 규칙은 상기 현재 블록이 상기 현재 블록과 연관된 현재 픽처로부터 동일한 픽처 순서 카운트(picture order count: POC)를 갖는 한 쌍의 참조 픽처들과 연관된 양 예측된 블록임을 확인하는 것을 특정한다.
92. 91절의 방법에 있어서, 상기 한 쌍의 참조 픽처들은 디스플레이 순서에서 현재 블록에 연관된 현재 픽처의 선행 픽처 및 후행 픽처를 포함한다.
93. 1절 내지 92절 중 하나 이상에 인용된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 디코딩 장치.
94. 1절 내지 92절 중 하나 이상에 인용된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 인코딩 장치.
95. 컴퓨터 코드가 저장된 컴퓨터 프로그램 제품으로서, 코드는 프로세서에 의해 실행될 때 프로세서로 하여금 1항 내지 92항 중 어느 하나에 열거된 방법을 구현하게 하는 컴퓨터 코드가 저장된 컴퓨터 프로그램 제품.
96. 본 문서에 개시된 방법, 장치 혹은 시스템.
본 명세서에서 설명되는, 개시된 솔루션, 예, 실시형태, 모듈 및 기능적 동작 및 그 이외의 솔루션, 예, 실시형태, 모듈 및 기능적 동작은, 디지털 전자 회로로, 또는 본 명세서에서 개시되는 구조체 및 그들의 구조적 균등물을 포함하는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어로, 또는 이들 중 하나의 이상의 조합으로 구현될 수 있다. 개시된 실시형태 및 그 외의 실시형태들은, 하나 이상의 컴퓨터 프로그램 제품으로서, 예를 들어 데이터 처리 장치에 의해 실행되거나 그 동작을 제어하기 위한, 컴퓨터-판독가능 매체 상에 인코딩된 컴퓨터 프로그램 명령의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터-판독가능 매체는 머신-판독가능 저장 디바이스, 머신-판독가능 저장 기재, 메모리 디바이스, 머신-판독가능한 전파된 신호에 영향을 주는 물질의 조합, 또는 이들 중 하나 이상의 조합일 수 있다. 용어 "데이터 처리(프로세싱) 장치"는, 예를 들어 프로그래밍가능한 프로세서, 컴퓨터, 또는 다수의 프로세서 또는 컴퓨터를 포함하는, 데이터를 처리하기 위한 모든 장치, 디바이스, 및 머신을 망라한다. 이러한 장치는 하드웨어에 추가하여, 관심 대상인 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파된 신호는 인위적으로 생성된 신호, 예를 들어, 적절한 수신기 장치로 송신되기 위한 정보를 인코딩하기 위하여 생성되는, 머신에 의해 생성된 전기적, 광학적, 또는 전자기적 신호이다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트, 또는 코드라고도 알려져 있음)은 컴파일되거나 해석된 언어를 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 이것은 독립형 프로그램과 같은 또는 컴퓨팅 환경에서 사용되기에 적합한 모듈, 성분, 서브루틴, 또는 다른 유닛과 같은 임의의 형태로 전개될 수 있다. 컴퓨터 프로그램은 반드시 파일 시스템 내의 파일에 대응하는 것은 아니다. 프로그램은 다른 프로그램 또는 데이터를 보유하는 파일(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트) 내에, 문제가 되는 프로그램 전용의 단일 파일 내에, 또는 여러 개의 조율된 파일들)예를 들어, 하나 이상의 모듈, 서브-프로그램, 또는 코드의 일부를 저장하는 파일) 내에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 또는 하나의 사이트에 위치되거나 여러 사이트들에 걸쳐서 분산되고 통신 네트워크에 의하여 상호연결되는 여러 컴퓨터들 상에서 실행되도록 구현될 수 있다.
본 명세서에서 설명되는 프로세스 및 로직 흐름은 입력 데이터 상에 작용하여 출력을 생성함으로써 기능을 수행하기 위한 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍가능한 프로세서에 의하여 수행될 수 있다. 또한 프로세스 및 로직 흐름은 특수 목적 로직 회로부, 예를 들어 FPGA(field programmable gate array), 또는 ASIC(application-specific integrated circuit)에 의하여 수행될 수 있으며, 장치는 또한 이러한 것으로서 구현될 수 있다.
컴퓨터 프로그램을 실행하기에 적합한 프로세서는, 예를 들어 범용 및 주문형 마이크로프로세서 양자 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독-전용 메모리 또는 랜덤 액세스 메모리 또는 이들 모두로부터 명령 및 데이터를 수신할 것이다. 컴퓨터의 본질적인 요소는 명령을 수행하기 위한 프로세서 및 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어 자기적, 자기-광학적 디스크, 또는 광학적 디스크를 더욱 포함하거나, 이것으로부터 데이터를 수신하거나 이것으로 데이터를 전송하거나, 또는 이들 모두를 하기 위하여 이것에 동작가능하도록 커플링될 것이다. 그러나, 컴퓨터는 이러한 디바이스를 가져야 하는 것은 아니다. 컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 컴퓨터 판독가능 매체는, 예를 들자면 반도체 메모리 디바이스, 예를 들어 EPROM, EEPROM, 및 플래시 메모리 디바이스; 자기적 디스크, 예를 들어 내부 하드 디스크 또는 착탈식 디스크; 자기-광학적 디스크; 및 CD-ROM 및 DVD-ROM 디스크를 포함하는 비-휘발성 메모리, 미디어 및 메모리 디바이스의 모든 형태를 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로부에 의하여 보충되거나 그 내부에 통합될 수 있다.
본 특허 명세서가 많은 특징을 포함하고 있지만, 이들은 임의의 기술 요지 또는 청구될 내용의 범위를 한정하는 것으로 해석되어서는 안 되고, 오히려 특정 기법의 특정 실시형태들에 특유할 수 있는 특징들의 설명으로서 해석되어야 한다. 본 특허 명세서에서 별개의 실시형태들의 콘텍스트에서 설명되는 일부 특징들은, 단일 실시형태 내에 조합되어 구현될 수도 있다. 반대로, 단일 실시예의 콘텍스트에서 설명되는 다양한 특징들은 또한 따로따로 다수의 실시예들에서 또는 임의의 적합한 서브컴비네이션에서 구현될 수 있다. 더구나, 비록 특징들이 특정한 조합들로 작용하는 것으로 위에서 설명될 수도 있고 그와 같이 처음에 청구된 경우에도, 청구된 조합들로부터의 하나 이상의 특징들은 일부 경우들에서 조합으로부터 삭제될 수 있고, 청구된 조합은 서브컴비네이션 또는 서브컴비네이션의 변형예를 위한 것일 수도 있다.
이와 유사하게, 동작들이 도면들에서 특정한 순서로 묘사되어 있으나, 원하는 결과들을 획득하기 위하여 이러한 동작들이 도시된 특정한 순서로 또는 순차적인 순서로 수행되어야 하거나, 또는 도시된 모든 동작들이 수행되어야 한다고 요구하는 것으로 이해되어서는 안 된다. 더욱이, 본 특허 명세서에서 설명되는 실시형태들 내의 다양한 시스템 성분들을 분리하는 것은, 모든 실시형태에서 이러한 분리를 요구하는 것으로 이해되어서는 안 된다.
몇 가지의 구현형태와 예들만이 설명되고, 다른 구현형태, 개선형태, 및 변형예들이 본 특허 명세서에서 설명되고 예시된 것에 기반하여 이루어질 수 있다.

Claims (15)

  1. 비디오 데이터 프로세싱 방법에 있어서,
    비디오의 현재 비디오 블록에 대해 움직임 보상에 기초하여 초기 예측 샘플을 결정하는 단계;
    광학 흐름 개선 기술(optical flow refinement technology)에 기초하여 최종 예측 샘플을 획득하기 위해 예측 샘플 오프셋(offset)을 이용하여 상기 초기 예측 샘플을 개선하는 단계; 및
    상기 최종 예측 샘플에 기초하여 상기 현재 블록과 상기 비디오의 비트스트림 간의 변환을 수행하는 단계를 포함하되,
    상기 예측 샘플 오프셋은 상기 초기 예측 샘플의 적어도 하나의 공간적 그라디언트(spatial gradient)에 기초하여 결정되고, 상기 공간적 그라디언트는 동일한 참조 픽처 리스트로부터의 두 개의 제1 예측 샘플들 간의 차이에 적어도 기초하여 계산되고,
    상기 두 개의 제1 예측 샘플들 간의 차이를 계산하기 전에, 상기 두 개의 제1 예측 샘플들의 값들은 제1 값으로 오른쪽 시프트 되고,
    상기 예측 샘플 오프셋은 적어도 하나의 시간적 그라디언트(temporal gradient)에 더 기초하여 결정되고, 상기 시간적 그라디언트는 서로 상이한 참조 픽처 리스트들로부터의 두 개의 제2 예측 샘플들 간의 차이에 적어도 기초하여 계산되고,
    상기 두 개의 제2 예측 샘플들 간의 차이의 시프팅 규칙은 상기 두 개의 제1 예측 샘플들 간의 차이의 시프팅 규칙과 동일하되, 상기 시프팅 규칙은 오른쪽 시프트 연산(right-shifting operation)과 뺄셈 연산(subtraction operation)의 순서를 지시하는, 비디오 데이터 프로세싱 방법.
  2. 제1 항에 있어서,
    상기 현재 블록의 샘플 위치(x, y)에서, 상기 두 개의 제1 예측 샘플들은 동일한 참조 픽처 리스트 X에 대응하는 위치 (hx+1, vy) 및 (hx-1, vy) 혹은 동일한 참조 픽처 리스트 X에 대응하는 위치 (hx, vy+1) 및 (hx, vy-1)를 갖고,
    여기서, X=0 혹은 1이고, hx = Clip3( 1, nCbW, x ) 및 vy = Clip3( 1, nCbH, y )이며, nCbW 및 nCbH는 상기 현재 블록의 너비 및 높이이고, Clip3 은

    로 정의되는 클리핑 함수인, 비디오 데이터 프로세싱 방법.
  3. 제1 항에 있어서,
    상기 두 개의 제2 예측 샘플들 간의 차이를 계산하기 전에, 상기 두 개의 제2 예측 샘플들의 값들은 제2 값으로 오른쪽 시프트되는, 비디오 데이터 프로세싱 방법.
  4. 제3 항에 있어서,
    상기 현재 블록의 샘플 위치(x, y)에서, 상기 두 개의 제2 예측 샘플들은 참조 픽처 리스트 0 및 참조 픽처 리스트 1에 대응하는 위치 (hx, vy) 를 갖고,
    여기서, hx = Clip3( 1, nCbW, x ) 및 vy = Clip3( 1, nCbH, y )이며, nCbW 및 nCbH는 상기 현재 블록의 너비 및 높이이고, Clip3 은

    로 정의되는 클리핑 함수인, 비디오 데이터 프로세싱 방법.
  5. 제3 항에 있어서, 상기 제1 값은 상기 제2 값과 상이한, 비디오 데이터 프로세싱 방법.
  6. 삭제
  7. 제1 항에 있어서,
    상기 광학 흐름 개선 기술이 활성화 되는지 여부는 상기 현재 블록의 크기와 연관된 조건에 기초하는, 비디오 데이터 프로세싱 방법.
  8. 제7 항에 있어서,
    상기 현재 블록에 대해 디코더 측 움직임 벡터 개선 기술(decoder-side motion vector refinement technique)이 활성화 되는지 여부는 상기 동일한 조건에 기초하되, 상기 디코더 측 움직임 벡터 개선 기술은 참조 픽처 리스트 0의 적어도 하나의 참조 샘플에 기초하여 획득된 적어도 하나의 예측 샘플과 참조 픽처 리스트 1의 적어도 하나의 참조 샘플에 기초하여 획득된 적어도 하나의 예측 샘플 간의 코스트(cost)에 기초하여 상기 현재 블록의 개선된 움직임 정보를 유도하는 데 사용되는, 비디오 데이터 프로세싱 방법.
  9. 제8 항에 있어서,
    상기 광학 흐름 개선 기술과 상기 디코더 측 움직임 벡터 개선 기술은 적어도 상기 현재 블록의 높이가 T1 보다 크거나 같은 것에 기초하여 활성화되는, 비디오 데이터 프로세싱 방법.
  10. 제9 항에 있어서, T1=8인, 비디오 데이터 프로세싱 방법.
  11. 제1 항에 있어서,
    상기 변환을 수행하는 단계는 상기 비트스트림으로부터 상기 현재 블록을 디코딩 하는 것을 포함하는, 비디오 데이터 프로세싱 방법.
  12. 제1 항에 있어서,
    상기 변환을 수행하는 단계는 상기 현재 블록을 상기 비트스트림으로 인코딩하는 것을 포함하는, 비디오 데이터 프로세싱 방법.
  13. 명령을 저장하는 비 일시적 메모리와 프로세서가 포함된 비디오 데이터 프로세싱 장치에 있어서, 상기 명령은 상기 프로세서에 의해 실행될 때 상기 프로세서가,
    비디오의 현재 비디오 블록에 대해 움직임 보상에 기초하여 초기 예측 샘플을 결정하게 하고;
    광학 흐름 개선 기술(optical flow refinement technology)에 기초하여 최종 예측 샘플을 획득하기 위해 예측 샘플 오프셋(offset)을 이용하여 상기 초기 예측 샘플을 개선하게 하고; 및
    상기 최종 예측 샘플에 기초하여 상기 현재 블록과 상기 비디오의 비트스트림 간의 변환을 수행하게 하되,
    상기 예측 샘플 오프셋은 상기 초기 예측 샘플의 적어도 하나의 공간적 그라디언트(spatial gradient)에 기초하여 결정되고, 상기 공간적 그라디언트는 동일한 참조 픽처 리스트로부터의 두 개의 제1 예측 샘플들 간의 차이에 적어도 기초하여 계산되고,
    상기 두 개의 제1 예측 샘플들 간의 차이를 계산하기 전에, 상기 두 개의 제1 예측 샘플들의 값들은 제1 값으로 오른쪽 시프트 되고,
    상기 예측 샘플 오프셋은 적어도 하나의 시간적 그라디언트(temporal gradient)에 더 기초하여 결정되고, 상기 시간적 그라디언트는 서로 상이한 참조 픽처 리스트들로부터의 두 개의 제2 예측 샘플들 간의 차이에 적어도 기초하여 계산되고,
    상기 두 개의 제2 예측 샘플들 간의 차이의 시프팅 규칙은 상기 두 개의 제1 예측 샘플들 간의 차이의 시프팅 규칙과 동일하되, 상기 시프팅 규칙은 오른쪽 시프트 연산(right-shifting operation)과 뺄셈 연산(subtraction operation)의 순서를 지시하는, 비디오 데이터 프로세싱 장치.
  14. 명령이 저장된 비 일시적 컴퓨터 판독 가능한 저장 매체에 있어서, 상기 명령은 프로세서가,
    비디오의 현재 비디오 블록에 대해 움직임 보상에 기초하여 초기 예측 샘플을 결정하게 하고;
    광학 흐름 개선 기술(optical flow refinement technology)에 기초하여 최종 예측 샘플을 획득하기 위해 예측 샘플 오프셋(offset)을 이용하여 상기 초기 예측 샘플을 개선하게 하고; 및
    상기 최종 예측 샘플에 기초하여 상기 현재 블록과 상기 비디오의 비트스트림 간의 변환을 수행하게 하되,
    상기 예측 샘플 오프셋은 상기 초기 예측 샘플의 적어도 하나의 공간적 그라디언트(spatial gradient)에 기초하여 결정되고, 상기 공간적 그라디언트는 동일한 참조 픽처 리스트로부터의 두 개의 제1 예측 샘플들 간의 차이에 적어도 기초하여 계산되고,
    상기 두 개의 제1 예측 샘플들 간의 차이를 계산하기 전에, 상기 두 개의 제1 예측 샘플들의 값들은 제1 값으로 오른쪽 시프트 되며,
    상기 예측 샘플 오프셋은 적어도 하나의 시간적 그라디언트(temporal gradient)에 더 기초하여 결정되고, 상기 시간적 그라디언트는 서로 상이한 참조 픽처 리스트들로부터의 두 개의 제2 예측 샘플들 간의 차이에 적어도 기초하여 계산되고,
    상기 두 개의 제2 예측 샘플들 간의 차이의 시프팅 규칙은 상기 두 개의 제1 예측 샘플들 간의 차이의 시프팅 규칙과 동일하되, 상기 시프팅 규칙은 오른쪽 시프트 연산(right-shifting operation)과 뺄셈 연산(subtraction operation)의 순서를 지시하는. 비 일시적 컴퓨터 판독 가능한 저장 매체.
  15. 비디오 프로세싱 장치에 의해 수행되는 방법에 의해 생성된 비디오의 비트스트림을 저장하는 비 일시적 컴퓨터 판독 가능한 기록 매체에 있어서, 상기 방법은,
    비디오의 현재 비디오 블록에 대해 움직임 보상에 기초하여 초기 예측 샘플을 결정하는 단계;
    광학 흐름 개선 기술(optical flow refinement technology)에 기초하여 최종 예측 샘플을 획득하기 위해 예측 샘플 오프셋(offset)을 이용하여 상기 초기 예측 샘플을 개선하는 단계; 및
    상기 최종 예측 샘플에 기초하여 상기 비트스트림을 생성하는 단계를 포함하되,
    상기 예측 샘플 오프셋은 상기 초기 예측 샘플의 적어도 하나의 공간적 그라디언트(spatial gradient)에 기초하여 결정되고, 상기 공간적 그라디언트는 동일한 참조 픽처 리스트로부터의 두 개의 제1 예측 샘플들 간의 차이에 적어도 기초하여 계산되고,
    상기 두 개의 제1 예측 샘플들 간의 차이를 계산하기 전에, 상기 두 개의 제1 예측 샘플들의 값들은 제1 값으로 오른쪽 시프트 되고,
    상기 예측 샘플 오프셋은 적어도 하나의 시간적 그라디언트(temporal gradient)에 더 기초하여 결정되고, 상기 시간적 그라디언트는 서로 상이한 참조 픽처 리스트들로부터의 두 개의 제2 예측 샘플들 간의 차이에 적어도 기초하여 계산되고,
    상기 두 개의 제2 예측 샘플들 간의 차이의 시프팅 규칙은 상기 두 개의 제1 예측 샘플들 간의 차이의 시프팅 규칙과 동일하되, 상기 시프팅 규칙은 오른쪽 시프트 연산(right-shifting operation)과 뺄셈 연산(subtraction operation)의 순서를 지시하는, 비 일시적 컴퓨터 판독 가능한 기록 매체.
KR1020217030715A 2019-04-02 2020-04-02 디코더 측 움직임 벡터 유도 KR102610709B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237041403A KR20230169434A (ko) 2019-04-02 2020-04-02 디코더 측 움직임 벡터 유도

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
CNPCT/CN2019/081155 2019-04-02
CN2019081155 2019-04-02
CNPCT/CN2019/085796 2019-05-07
CN2019085796 2019-05-07
PCT/CN2020/082937 WO2020200269A1 (en) 2019-04-02 2020-04-02 Decoder side motion vector derivation

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237041403A Division KR20230169434A (ko) 2019-04-02 2020-04-02 디코더 측 움직임 벡터 유도

Publications (2)

Publication Number Publication Date
KR20210145747A KR20210145747A (ko) 2021-12-02
KR102610709B1 true KR102610709B1 (ko) 2023-12-05

Family

ID=72664978

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217030715A KR102610709B1 (ko) 2019-04-02 2020-04-02 디코더 측 움직임 벡터 유도
KR1020237041403A KR20230169434A (ko) 2019-04-02 2020-04-02 디코더 측 움직임 벡터 유도

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237041403A KR20230169434A (ko) 2019-04-02 2020-04-02 디코더 측 움직임 벡터 유도

Country Status (6)

Country Link
US (1) US11553201B2 (ko)
EP (1) EP3922014A4 (ko)
JP (2) JP7307192B2 (ko)
KR (2) KR102610709B1 (ko)
CN (2) CN113647099B (ko)
WO (1) WO2020200269A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111083491A (zh) 2018-10-22 2020-04-28 北京字节跳动网络技术有限公司 细化运动矢量的利用
WO2020084476A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Sub-block based prediction
WO2020098643A1 (en) 2018-11-12 2020-05-22 Beijing Bytedance Network Technology Co., Ltd. Simplification of combined inter-intra prediction
CN113170171B (zh) 2018-11-20 2024-04-12 北京字节跳动网络技术有限公司 组合帧间帧内预测模式的预测细化
EP3861742A4 (en) 2018-11-20 2022-04-13 Beijing Bytedance Network Technology Co., Ltd. DIFFERENCE CALCULATION BASED ON SPATIAL POSITION
WO2020177756A1 (en) 2019-03-06 2020-09-10 Beijing Bytedance Network Technology Co., Ltd. Size dependent inter coding
KR20220009952A (ko) 2019-05-21 2022-01-25 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 서브블록 머지 모드에서의 신택스 시그널링
AU2020294736A1 (en) * 2019-06-21 2022-01-27 Huawei Technologies Co., Ltd. An encoder, a decoder and corresponding methods
WO2020262365A1 (ja) * 2019-06-28 2020-12-30 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法、および復号方法
US20220264146A1 (en) * 2019-07-01 2022-08-18 Interdigital Vc Holdings France, Sas Bi-prediction refinement in affine with optical flow
JP6960969B2 (ja) * 2019-09-20 2021-11-05 Kddi株式会社 画像復号装置、画像復号方法及びプログラム
EP4035373A1 (en) * 2019-09-23 2022-08-03 VID SCALE, Inc. Switching logic for bi-directional optical flow
JP7391203B2 (ja) 2019-10-12 2023-12-04 北京字節跳動網絡技術有限公司 ビデオコーディングツールを洗練する使用およびシグナリング
KR20220078600A (ko) 2019-10-18 2022-06-10 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 서브픽처들의 파라미터 세트 시그널링에서의 신택스 제약들
GB2617839A (en) * 2022-04-19 2023-10-25 Canon Kk Video coding and decoding
WO2023219279A1 (ko) * 2022-05-10 2023-11-16 현대자동차주식회사 기하학적 분할에 기초하는 인터/인트라 예측을 이용하는 비디오 코딩을 위한방법 및 장치

Family Cites Families (129)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480615B1 (en) 1999-06-15 2002-11-12 University Of Washington Motion estimation within a sequence of data frames using optical flow with adaptive gradients
US7627037B2 (en) 2004-02-27 2009-12-01 Microsoft Corporation Barbell lifting for multi-layer wavelet coding
US8023041B2 (en) 2006-01-30 2011-09-20 Lsi Corporation Detection of moving interlaced text for film mode decision
US8462852B2 (en) 2009-10-20 2013-06-11 Intel Corporation Methods and apparatus for adaptively choosing a search range for motion estimation
US9654792B2 (en) 2009-07-03 2017-05-16 Intel Corporation Methods and systems for motion vector derivation at a video decoder
US20110176611A1 (en) 2010-01-15 2011-07-21 Yu-Wen Huang Methods for decoder-side motion vector derivation
KR101484281B1 (ko) 2010-07-09 2015-01-21 삼성전자주식회사 블록 병합을 이용한 비디오 부호화 방법 및 그 장치, 블록 병합을 이용한 비디오 복호화 방법 및 그 장치
US9215470B2 (en) 2010-07-09 2015-12-15 Qualcomm Incorporated Signaling selected directional transform for video coding
JP5721851B2 (ja) 2010-12-21 2015-05-20 インテル・コーポレーション Dmvd処理のシステムおよび方法の改善
JP2012142702A (ja) 2010-12-28 2012-07-26 Sony Corp 画像処理装置および方法、並びにプログラム
JP6134651B2 (ja) 2011-12-28 2017-05-24 シャープ株式会社 算術復号装置、算術符号化装置および算術復号方法
US9451277B2 (en) 2012-02-08 2016-09-20 Qualcomm Incorporated Restriction of prediction units in B slices to uni-directional inter prediction
EP2642755B1 (en) 2012-03-20 2018-01-03 Dolby Laboratories Licensing Corporation Complexity scalable multilayer video coding
JP6039793B2 (ja) 2012-05-10 2016-12-07 エルジー エレクトロニクス インコーポレイティド ビデオ信号処理方法及び装置
KR101624059B1 (ko) 2012-06-27 2016-05-24 가부시끼가이샤 도시바 암호화 장치 및 암호화 방법
MX341900B (es) 2012-08-29 2016-09-07 Vid Scale Inc Metodo y aparato de prediccion de vector de movimiento para codificacion de video escalable.
KR20150038249A (ko) 2012-09-28 2015-04-08 인텔 코포레이션 계층간 화소 샘플 예측
CN104584553A (zh) 2012-09-28 2015-04-29 英特尔公司 层间残差预测
US20140177706A1 (en) * 2012-12-21 2014-06-26 Samsung Electronics Co., Ltd Method and system for providing super-resolution of quantized images and video
US9294777B2 (en) 2012-12-30 2016-03-22 Qualcomm Incorporated Progressive refinement with temporal scalability support in video coding
WO2014120368A1 (en) 2013-01-30 2014-08-07 Intel Corporation Content adaptive entropy coding for next generation video
US9596448B2 (en) 2013-03-18 2017-03-14 Qualcomm Incorporated Simplifications on disparity vector derivation and motion vector prediction in 3D 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
WO2015003383A1 (en) 2013-07-12 2015-01-15 Mediatek Singapore Pte. Ltd. Methods for inter-view motion prediction
US9628795B2 (en) 2013-07-17 2017-04-18 Qualcomm Incorporated Block identification using disparity vector in video coding
US10244253B2 (en) 2013-09-13 2019-03-26 Qualcomm Incorporated Video coding techniques using asymmetric motion partitioning
JP6302071B2 (ja) 2013-09-13 2018-03-28 サムスン エレクトロニクス カンパニー リミテッド 無損失符号化方法及び無損失復号化方法
US9554150B2 (en) 2013-09-20 2017-01-24 Qualcomm Incorporated Combined bi-predictive merging candidates for 3D video coding
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
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
US9906813B2 (en) 2013-10-08 2018-02-27 Hfi Innovation Inc. Method of view synthesis prediction in 3D video coding
WO2015085575A1 (en) 2013-12-13 2015-06-18 Mediatek Singapore Pte. Ltd. Methods for background residual prediction
WO2015109598A1 (en) 2014-01-27 2015-07-30 Mediatek Singapore Pte. Ltd. Methods for motion parameter hole filling
US9906790B2 (en) 2014-03-14 2018-02-27 Qualcomm Incorporated Deblock filtering using pixel distance
CN106105196A (zh) 2014-04-28 2016-11-09 松下电器(美国)知识产权公司 编码方法、解码方法、编码装置以及解码装置
GB2531003A (en) 2014-10-06 2016-04-13 Canon Kk Method and apparatus for vector encoding in video coding and decoding
US10687069B2 (en) 2014-10-08 2020-06-16 Microsoft Technology Licensing, Llc Adjustments to encoding and decoding when switching color spaces
CN104301724B (zh) 2014-10-17 2017-12-01 华为技术有限公司 视频处理方法、编码设备和解码设备
WO2016072750A1 (ko) 2014-11-04 2016-05-12 삼성전자 주식회사 에지 타입의 오프셋을 적용하는 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치
US10382795B2 (en) 2014-12-10 2019-08-13 Mediatek Singapore Pte. Ltd. Method of video coding using binary tree block partitioning
US10230980B2 (en) 2015-01-26 2019-03-12 Qualcomm Incorporated Overlapped motion compensation for video coding
US10200711B2 (en) 2015-03-27 2019-02-05 Qualcomm Incorporated Motion vector derivation in video coding
US10887597B2 (en) 2015-06-09 2021-01-05 Qualcomm Incorporated Systems and methods of determining illumination compensation parameters for video coding
WO2017008263A1 (en) 2015-07-15 2017-01-19 Mediatek Singapore Pte. Ltd. Conditional binary tree block partitioning structure
WO2017036399A1 (en) * 2015-09-02 2017-03-09 Mediatek Inc. Method and apparatus of motion compensation for video coding based on bi prediction optical flow techniques
US10375413B2 (en) 2015-09-28 2019-08-06 Qualcomm Incorporated Bi-directional optical flow for video coding
WO2017088093A1 (en) 2015-11-23 2017-06-01 Mediatek Singapore Pte. Ltd. On the smallest allowed block size in video coding
US10268901B2 (en) 2015-12-04 2019-04-23 Texas Instruments Incorporated Quasi-parametric optical flow estimation
US9955186B2 (en) 2016-01-11 2018-04-24 Qualcomm Incorporated Block size decision for video coding
CN108541375B (zh) 2016-02-03 2022-04-12 夏普株式会社 运动图像解码装置、运动图像编码装置、以及预测图像生成装置
EP4138392A1 (en) 2016-02-05 2023-02-22 HFI Innovation Inc. Method and apparatus of motion compensation based on bi-directional optical flow techniques for video coding
US11064195B2 (en) 2016-02-15 2021-07-13 Qualcomm Incorporated Merging filters for multiple classes of blocks for video coding
WO2017143467A1 (en) 2016-02-22 2017-08-31 Mediatek Singapore Pte. Ltd. Localized luma mode prediction inheritance for chroma coding
US20170339405A1 (en) * 2016-05-20 2017-11-23 Arris Enterprises Llc System and method for intra coding
US11638027B2 (en) 2016-08-08 2023-04-25 Hfi Innovation, Inc. Pattern-based motion vector derivation for video coding
US10609423B2 (en) 2016-09-07 2020-03-31 Qualcomm Incorporated Tree-type coding for video coding
US10609367B2 (en) 2016-12-21 2020-03-31 Qualcomm Incorporated Low-complexity sign prediction for video coding
US10674165B2 (en) * 2016-12-21 2020-06-02 Arris Enterprises Llc Constrained position dependent intra prediction combination (PDPC)
WO2018113658A1 (en) 2016-12-22 2018-06-28 Mediatek Inc. Method and apparatus of motion refinement for video coding
CN110140355B (zh) 2016-12-27 2022-03-08 联发科技股份有限公司 用于视频编解码的双向模板运动向量微调的方法及装置
US20190387234A1 (en) 2016-12-29 2019-12-19 Peking University Shenzhen Graduate School Encoding method, decoding method, encoder, and decoder
US11051033B2 (en) 2017-01-04 2021-06-29 Samsung Electronics Co., Ltd. Video decoding method and apparatus and video encoding method and apparatus
US10931969B2 (en) 2017-01-04 2021-02-23 Qualcomm Incorporated Motion vector reconstructions for bi-directional optical flow (BIO)
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)
US11109062B2 (en) 2017-03-16 2021-08-31 Mediatek Inc. Method and apparatus of motion refinement based on bi-directional optical flow for video coding
US11277635B2 (en) 2017-03-17 2022-03-15 Vid Scale, Inc. Predictive coding for 360-degree video based on geometry padding
US10595035B2 (en) 2017-03-22 2020-03-17 Qualcomm Incorporated Constraining motion vector information derived by decoder-side motion vector derivation
US10491917B2 (en) 2017-03-22 2019-11-26 Qualcomm Incorporated Decoder-side motion vector derivation
TW201902223A (zh) 2017-03-24 2019-01-01 聯發科技股份有限公司 視頻編碼中重疊分塊運動補償的雙向光流的方法和裝置
US10805650B2 (en) 2017-03-27 2020-10-13 Qualcomm Incorporated Signaling important video information in network video streaming using mime type parameters
US10805630B2 (en) 2017-04-28 2020-10-13 Qualcomm Incorporated Gradient based matching for motion search and derivation
US10701393B2 (en) 2017-05-10 2020-06-30 Mediatek Inc. Method and apparatus of reordering motion vector prediction candidate set for video coding
CN117294839A (zh) 2017-05-17 2023-12-26 株式会社Kt 用于解码视频的方法和用于传输压缩的视频数据的设备
US10904565B2 (en) 2017-06-23 2021-01-26 Qualcomm Incorporated Memory-bandwidth-efficient design for bi-directional optical flow (BIO)
US10477237B2 (en) 2017-06-28 2019-11-12 Futurewei Technologies, Inc. Decoder side motion vector refinement in video coding
WO2019001741A1 (en) 2017-06-30 2019-01-03 Huawei Technologies Co., Ltd. MOTION VECTOR REFINEMENT FOR MULTI-REFERENCE PREDICTION
CN110832858B (zh) 2017-07-03 2023-10-13 Vid拓展公司 用于视频编解码的设备、方法
WO2019059676A1 (ko) 2017-09-20 2019-03-28 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
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
US11057640B2 (en) 2017-11-30 2021-07-06 Lg Electronics Inc. Image decoding method and apparatus based on inter-prediction in image coding system
WO2019131807A1 (en) 2017-12-29 2019-07-04 Sharp Kabushiki Kaisha Systems and methods for partitioning video blocks for video coding
US11172229B2 (en) 2018-01-12 2021-11-09 Qualcomm Incorporated Affine motion compensation with low bandwidth
US11368676B2 (en) 2018-01-16 2022-06-21 Vid Scale, Inc. Motion compensated bi-prediction based on local illumination compensation
US11265551B2 (en) 2018-01-18 2022-03-01 Qualcomm Incorporated Decoder-side motion vector derivation
US11310526B2 (en) 2018-01-26 2022-04-19 Mediatek Inc. Hardware friendly constrained motion vector refinement
WO2019151257A1 (en) 2018-01-30 2019-08-08 Sharp Kabushiki Kaisha Systems and methods for deriving quantization parameters for video blocks in video coding
KR20230104771A (ko) 2018-02-28 2023-07-10 삼성전자주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
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
WO2019229683A1 (en) 2018-05-31 2019-12-05 Beijing Bytedance Network Technology Co., Ltd. Concept of interweaved prediction
WO2019234613A1 (en) 2018-06-05 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Partition tree with partition into 3 sub-blocks by horizontal and vertical splits
WO2019234673A1 (en) 2018-06-07 2019-12-12 Beijing Bytedance Network Technology Co., Ltd. Chroma dmvr
WO2019244118A1 (en) 2018-06-21 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Component-dependent sub-block dividing
WO2019244117A1 (en) 2018-06-21 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Unified constrains for the merge affine mode and the non-merge affine mode
WO2019244116A1 (en) 2018-06-21 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Border partition in video coding
JP7414742B2 (ja) 2018-06-27 2024-01-16 ヴィド スケール インコーポレイテッド デコーダ側動きリファインメントのコーディング待ち時間を低減させる方法および装置
KR20210024487A (ko) 2018-07-01 2021-03-05 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 효율적인 아핀 병합 모션 벡터 유도
TWI719519B (zh) 2018-07-02 2021-02-21 大陸商北京字節跳動網絡技術有限公司 對於dmvr的塊尺寸限制
US10911768B2 (en) 2018-07-11 2021-02-02 Tencent America LLC Constraint for template matching in decoder side motion derivation and refinement
CN117294852A (zh) 2018-07-15 2023-12-26 北京字节跳动网络技术有限公司 跨分量编解码顺序导出
WO2020017840A1 (ko) 2018-07-16 2020-01-23 엘지전자 주식회사 Dmvr에 기반하여 인터 예측을 수행하는 방법 및 장치
US10911751B2 (en) 2018-09-14 2021-02-02 Tencent America LLC Method and apparatus for video coding
WO2020065518A1 (en) 2018-09-24 2020-04-02 Beijing Bytedance Network Technology Co., Ltd. Bi-prediction with weights in video coding and decoding
CN111010569B (zh) 2018-10-06 2023-02-28 北京字节跳动网络技术有限公司 Bio中的时间梯度计算的改善
WO2020084476A1 (en) 2018-10-22 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Sub-block based prediction
CN111083491A (zh) 2018-10-22 2020-04-28 北京字节跳动网络技术有限公司 细化运动矢量的利用
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 北京字节跳动网络技术有限公司 基于编解码信息的解码器侧运动矢量推导的限制
CN109191514B (zh) 2018-10-23 2020-11-24 北京字节跳动网络技术有限公司 用于生成深度检测模型的方法和装置
CN112970259A (zh) 2018-11-05 2021-06-15 北京字节跳动网络技术有限公司 视频处理中具有细化的帧间预测
CN112997489B (zh) 2018-11-06 2024-02-06 北京字节跳动网络技术有限公司 具有几何分割的帧间预测的边信息信令
US20210377553A1 (en) 2018-11-12 2021-12-02 Interdigital Vc Holdings, Inc. Virtual pipeline for video encoding and decoding
CN113170171B (zh) 2018-11-20 2024-04-12 北京字节跳动网络技术有限公司 组合帧间帧内预测模式的预测细化
EP3861742A4 (en) 2018-11-20 2022-04-13 Beijing Bytedance Network Technology Co., Ltd. DIFFERENCE CALCULATION BASED ON SPATIAL POSITION
EP3657794A1 (en) 2018-11-21 2020-05-27 InterDigital VC Holdings, Inc. Method and device for picture encoding and decoding
WO2020140874A1 (en) * 2019-01-02 2020-07-09 Huawei Technologies Co., Ltd. A hardware and software friendly system and method for decoder-side motion vector refinement with decoder-side bi-predictive optical flow based per-pixel correction to bi-predictive motion compensation
CN113613019B (zh) * 2019-01-06 2022-06-07 北京达佳互联信息技术有限公司 视频解码方法、计算设备和介质
WO2020149648A1 (ko) 2019-01-15 2020-07-23 엘지전자 주식회사 변환 스킵 플래그를 이용한 영상 코딩 방법 및 장치
JP7092951B2 (ja) 2019-03-12 2022-06-28 ベイジン、ターチア、インターネット、インフォメーション、テクノロジー、カンパニー、リミテッド ビデオ符号化方法、コンピューティングデバイス、非一時的コンピュータ可読記憶媒体、及びプログラム
KR20220112864A (ko) 2019-03-15 2022-08-11 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 양방향 광 흐름을 위한 비트-폭 제어를 위한 방법 및 디바이스
CN114128293A (zh) * 2019-06-21 2022-03-01 松下电器(美国)知识产权公司 编码装置、解码装置、编码方法和解码方法
US11330287B2 (en) * 2019-06-28 2022-05-10 Tencent America LLC Method and apparatus for video coding
US11272203B2 (en) * 2019-07-23 2022-03-08 Tencent America LLC Method and apparatus for video coding
CN110267045B (zh) 2019-08-07 2021-09-24 杭州微帧信息科技有限公司 一种视频处理及编码的方法、装置及可读存储介质
US11405628B2 (en) * 2020-04-06 2022-08-02 Tencent America LLC Method and apparatus for video coding

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Benjamin Bross et al., "Versatile Video Coding (Draft 4)", JVET of ITU-T and ISO/IEC, JVET-M1001-v7(2019.03.17.)*
Naeri Park et al., "Non-CE9 : Mismatch between text specification and reference software on BDOF and DMVR", JVET of ITU-T and ISO/IEC, JVET-N0444-v3(2019.03.23.)*
Sriram Sethuraman, "Non-CE9: Methods for BDOF complexity reduction", JVET of ITU-T and ISO/IEC, JVET of ITU-T and ISO/IEC, JVET-M0517-v3(2019.01.12.)*

Also Published As

Publication number Publication date
EP3922014A4 (en) 2022-04-06
WO2020200269A1 (en) 2020-10-08
KR20210145747A (ko) 2021-12-02
KR20230169434A (ko) 2023-12-15
CN113647099B (zh) 2022-10-04
CN113647099A (zh) 2021-11-12
JP2022527751A (ja) 2022-06-06
CN115190317A (zh) 2022-10-14
US11553201B2 (en) 2023-01-10
US20210385481A1 (en) 2021-12-09
EP3922014A1 (en) 2021-12-15
JP7307192B2 (ja) 2023-07-11
JP2023134521A (ja) 2023-09-27

Similar Documents

Publication Publication Date Title
KR102610709B1 (ko) 디코더 측 움직임 벡터 유도
CN113170093B (zh) 视频处理中的细化帧间预测
KR102628361B1 (ko) 인터-예측을 위한 대역폭 제어 방법
CN113424525B (zh) 解码器侧细化工具的尺寸选择性应用
KR20210089155A (ko) 페어와이즈 평균 후보 계산에서 라운딩
JP7431253B2 (ja) 動き情報精緻化のサブ領域に基づいた決定
KR102635518B1 (ko) 변환된 단예측 후보의 사용
JP7318099B2 (ja) ビデオコーディングにおける変換ブロック・サイズ制約
JP7322277B2 (ja) 参照ピクチャタイプに従ったツールの使用制限
WO2020224613A1 (en) Unified calculation method for inter prediction with refinement
US20240137554A1 (en) Coding and decoding of video coding modes

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant