KR102527169B1 - 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우 - Google Patents

모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우 Download PDF

Info

Publication number
KR102527169B1
KR102527169B1 KR1020227022266A KR20227022266A KR102527169B1 KR 102527169 B1 KR102527169 B1 KR 102527169B1 KR 1020227022266 A KR1020227022266 A KR 1020227022266A KR 20227022266 A KR20227022266 A KR 20227022266A KR 102527169 B1 KR102527169 B1 KR 102527169B1
Authority
KR
South Korea
Prior art keywords
motion vector
block
window
search space
search
Prior art date
Application number
KR1020227022266A
Other languages
English (en)
Other versions
KR20220098284A (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 KR1020237014063A priority Critical patent/KR102642784B1/ko
Publication of KR20220098284A publication Critical patent/KR20220098284A/ko
Application granted granted Critical
Publication of KR102527169B1 publication Critical patent/KR102527169B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/521Processing of motion vectors for estimating the reliability of the determined motion vectors or motion vector field, e.g. for smoothing the motion vector field or for correcting motion vectors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/207Analysis of motion for motion estimation over a hierarchy of resolutions
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/533Motion estimation using multistep search, e.g. 2D-log search or one-at-a-time search [OTS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/57Motion estimation characterised by a search window with variable size or shape
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Computing Systems (AREA)
  • Image Analysis (AREA)

Abstract

본 개시내용은 모션 벡터 리파인먼트에 관한 것이다. 제1 단계로서, 초기 모션 벡터가 획득된다. 그 후, 초기 모션 벡터의 리파인먼트는 탐색 공간에서의 쌍방 매칭에 의해 결정된다. 탐색 공간은 초기 모션 벡터에 의해 주어지는 위치에 위치되고 그리고 하나 이상의 분수 샘플 위치를 포함하며, 여기서 탐색 공간에 속하는 분수 샘플 위치들 각각은 윈도우 내에서만의 정수 샘플들을 평가하는 미리 정의된 탭 크기의 필터에 의한 보간 필터링에 의해 획득되고, 상기 윈도우는 상기 탐색 공간에서의 쌍방 매칭을 위해 액세스가능한 정수 샘플들에 의해 형성된다.

Description

모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우{LIMITED MEMORY ACCESS WINDOW FOR MOTION VECTOR REFINEMENT}
본 발명은 비디오들의 인코딩 및 디코딩 동안 이용될 수 있는 모션 벡터 결정 및 리파인먼트(refinement)에 관한 것이다.
현재의 하이브리드 비디오 코덱들은 예측 코딩(predictive coding)을 이용한다. 비디오 시퀀스의 픽처는 픽셀들의 블록들로 세분화되고 이후 이들 블록들은 코딩된다. 픽셀 단위로 블록을 코딩하는 대신에, 전체 블록이 블록의 공간적 또는 시간적 근접도로 이미 인코딩된 픽셀들을 사용하여 예측된다. 인코더는 블록과 그의 예측 간의 차이들만을 추가로 처리한다. 추가 처리는 전형적으로 블록 픽셀들의 변환 도메인에서의 계수들로의 변환을 포함한다. 이후, 계수들은 양자화에 의해 더 압축되고 엔트로피 코딩에 의해 더 콤팩트화되어 비트스트림을 형성할 수 있다. 비트스트림은 디코더가 인코딩된 비디오를 디코딩할 수 있게 하는 임의의 시그널링 정보를 추가로 포함한다. 예를 들어, 시그널링은 입력 픽처의 크기, 프레임 레이트, 양자화 단계 표시, 픽처들의 블록들에 적용되는 예측, 또는 그와 유사한 것과 같은 인코더 설정들에 관한 설정들을 포함할 수 있다.
시간적 예측은 비디오의, 프레임들로도 지칭되는 픽처들 간의 시간적 상관을 활용한다. 시간 예측은 인터-예측(inter-prediction)이라고도 하는데, 그 이유는 그것이 (인터) 상이한 비디오 프레임들 간의 종속성들을 사용하는 예측이기 때문이다. 따라서, 현재 블록이라고도 지칭되는, 인코딩되는 블록이 참조 픽처(들)로서 지칭되는 하나 이상의 이전에 인코딩된 픽처(들)로부터 예측된다. 참조 픽처는 반드시, 현재 블록이 비디오 시퀀스의 디스플레이하는 순서에서 위치되는 현재 픽처에 선행하는 픽처일 필요는 없다. 인코더는 디스플레이하는 순서와 상이한 코딩 순서로 픽처들을 인코딩할 수 있다. 현재 블록의 예측으로서, 참조 픽처에서의 공동 위치된 블록이 결정될 수 있다. 공동 위치된 블록은 현재 픽처에서의 현재 블록과 동일한 위치에 있는 참조 픽처에 위치되는 블록이다. 이러한 예측은 움직임 없는 픽처 영역들, 즉 하나의 픽처로부터 또 다른 픽처로의 움직임이 없는 픽처 영역들에 대해 정확하다.
움직임을 고려하는 예측자(predictor), 즉 모션 보상된 예측자를 획득하기 위해, 현재 블록의 예측을 결정할 때 모션 추정이 통상적으로 이용된다. 따라서, 현재 블록은 공동 위치된 블록의 위치로부터 모션 벡터에 의해 주어진 거리에 위치되는, 참조 픽처에서의 블록에 의해 예측된다. 디코더가 현재 블록의 동일한 예측을 결정할 수 있게 하기 위해, 모션 벡터가 비트스트림에서 시그널링될 수 있다. 블록들 각각에 대한 모션 벡터를 시그널링함으로써 야기되는 시그널링 오버헤드를 추가로 감소시키기 위해, 모션 벡터 자체가 추정될 수 있다. 모션 벡터 추정은 공간 및/또는 시간 도메인에서 이웃 블록들의 모션 벡터들에 기초하여 수행될 수 있다.
현재 블록의 예측은 하나의 참조 픽처를 사용하여 또는 2개 이상의 참조 픽처로부터 획득된 예측들을 가중화함으로써 계산될 수 있다. 참조 픽처는 인접 픽처, 즉 디스플레이 순서에서 현재 픽처에 바로 선행하는 픽처 및/또는 현재 픽처 바로 뒤의 픽처일 수 있는데, 그 이유는 인접 픽처들이 현재 픽처와 유사할 가능성이 가장 높기 때문이다. 그러나, 일반적으로, 참조 픽처는 또한 디스플레이 순서에서 현재 픽처에 선행하거나 뒤따르고 그리고 (디코딩 순서에서) 비트스트림에서 현재 픽처에 선행하는 임의의 다른 픽처일 수 있다. 이는, 예를 들어, 비디오 콘텐츠에서의 폐색(occlusion)들 및/또는 비선형 움직임의 경우에 이점을 제공할 수 있다. 따라서, 참조 픽처 식별은 또한 비트스트림에서 시그널링될 수 있다.
인터 예측의 특수 모드는 2개의 참조 픽처가 현재 블록의 예측을 생성하는 데 있어서 사용되는 소위 양방향 예측이다. 특히, 제각기 2개의 참조 픽처에서 결정된 2개의 예측은 현재 블록의 예측 신호가 되도록 조합된다. 양방향 예측은 단방향 예측(uni-prediction), 즉 단일 참조 픽처만을 사용하는 예측보다 현재 블록의 더 정확한 예측을 낳을 수 있다. 더 정확한 예측은 현재 블록의 픽셀들과 예측 사이의 더 작은 차이들(또한 "잔차들(residuals)"로 지칭됨)을 이끌어내며, 이것은 더 효율적으로 인코딩될 수 있고, 즉 더 짧은 비트스트림으로 압축될 수 있다. 일반적으로, 현재 블록을 예측하기 위해 제각기 2개보다 많은 참조 블록을 찾아내기 위해 2개보다 많은 참조 픽처가 이용될 수 있는데, 즉 다중 참조 인터 예측이 적용될 수 있다. 따라서, 다중 참조 예측이라는 용어는 양방향 예측뿐만 아니라 2개보다 많은 참조 픽처를 사용하는 예측을 포함한다.
더 정확한 모션 추정을 제공하기 위해, 참조 픽처의 해상도는 픽셀들 사이에 샘플들을 보간함으로써 향상될 수 있다. 분수 픽셀 보간(fractional pixel interpolation)은 가장 가까운 픽셀들의 가중 평균에 의해 수행될 수 있다. 하프 픽셀 해상도의 경우에, 예를 들어, 쌍선형 보간(bilinear interpolation)이 통상적으로 사용된다. 다른 분수 픽셀들은 예측되는 픽셀에 대한 제각기 가장 가까운 픽셀들 사이의 거리의 역에 의해 가중되는 가장 가까운 픽셀들의 평균으로서 계산된다.
모션 벡터 추정은, 현재 블록과 참조 픽처에서의 후보 모션 벡터들에 의해 가리켜지는 대응하는 예측 블록들 사이에서 유사성이 계산되는 계산적으로 복잡한 작업이다. 통상적으로, 탐색 영역은 이미지의 M x M 샘플들을 포함하고, M x M 후보 위치들의 샘플 위치 각각이 테스트된다. 테스트는 탐색 영역의 테스트된 후보 위치에 위치된, N x N 참조 블록 C와 블록 R 사이의 유사성 측도의 계산을 포함한다. 그 단순성을 위해, 절대 차이들의 합(SAD)이 이 목적을 위해 빈번히 사용되는 측도이고, 다음과 같이 주어진다:
Figure 112022067906400-pat00001
상기 수학식에서, x 및 y는 탐색 영역 내의 후보 위치를 정의하는 한편, 인덱스들 i 및 j는 참조 블록 C 및 후보 블록 R 내의 샘플들을 표시한다. 후보 위치는 종종 블록 변위 또는 오프셋으로서 지칭되며, 이것은 블록 매칭의 표현을 탐색 영역 내의 참조 블록의 시프팅으로서 반영하고 참조 블록 C와 탐색 영역의 중첩된 부분 사이의 유사성을 계산한다. 복잡성을 감소시키기 위해, 후보 모션 벡터들의 수는 보통 후보 모션 벡터들을 특정 탐색 공간으로 제한함으로써 감소된다. 탐색 공간은, 예를 들어, 현재 이미지에서의 현재 블록의 위치에 대응하는 참조 픽처에서의 위치를 둘러싸는 픽셀들의 수 및/또는 위치들에 의해 정의될 수 있다. 모든 M x M 후보 위치들 x 및 y에 대해 SAD를 계산한 후에, 최상의 매칭 블록 R은 참조 블록 C와의 가장 큰 유사성에 대응하는 최저 SAD를 낳는 위치상에서의 블록이다. 한편, 후보 모션 벡터들은 이웃 블록들의 모션 벡터들에 의해 형성된 후보 모션 벡터들의 리스트에 의해 정의될 수 있다.
모션 벡터들은 보통은 적어도 부분적으로 인코더 측에서 결정되고 코딩된 비트스트림 내에서 디코더에 시그널링된다. 그러나, 모션 벡터는 또한 디코더에서 도출될 수 있다. 이러한 경우에, 현재 블록은 디코더에서 이용가능하지 않고, 후보 모션 벡터들이 참조 픽처에서 가리키는 블록들에 대한 유사성을 계산하기 위해 사용될 수 없다. 따라서, 현재 블록 대신에, 이미 디코딩된 블록들의 픽셀들로부터 구성되는 템플릿이 사용된다. 예를 들어, 현재 블록에 인접한 이미 디코딩된 픽셀들이 사용될 수 있다. 이러한 모션 추정은 시그널링을 감소시키는 이점을 제공한다: 모션 벡터는 인코더 및 디코더 양쪽 모두에서 동일한 방식으로 도출되고, 따라서 어떤 시그널링도 필요하지 않다. 반면, 그러한 모션 추정의 정확도는 더 낮을 수 있다.
정확도와 시그널링 오버헤드 사이의 절충을 제공하기 위해, 모션 벡터 추정은 2개의 단계: 모션 벡터 도출 및 모션 벡터 리파인먼트로 분할될 수 있다. 예를 들어, 모션 벡터 도출은 후보들의 리스트로부터의 모션 벡터의 선택을 포함할 수 있다. 그러한 선택된 모션 벡터는, 예를 들어, 탐색 공간 내에서의 탐색에 의해 더 리파이닝될 수 있다. 탐색 공간에서의 탐색은 각각의 후보 모션 벡터에 대한, 즉 후보 모션 벡터가 가리키는 블록의 각각의 후보 위치에 대한 비용 함수를 계산하는 것에 기초한다.
문서 JVET-D0029: Decoder-Side Motion Vector Refinement Based on Bilateral Template Matching, X. Chen, J. An, J.Zheng(이 문서는 http://phenix.it-sudparis.eu/jvet/ site에서 찾을 수 있음)은 정수 픽셀 해상도에서 제1 모션 벡터가 발견되고, 제1 모션 벡터 주위의 탐색 공간에서 하프 픽셀 해상도를 갖는 탐색에 의해 추가로 리파이닝되는 모션 벡터 리파인먼트를 보여준다.
모션 벡터 리파인먼트를 수행하기 위해, 리파인먼트를 수행하기 위해 현재 블록에 대해 필요한 적어도 그런 샘플들, 즉 탐색 공간에 대응하는 샘플들 및 탐색 공간에서 템플릿 매칭이 수행될 때 액세스될 수 있는 샘플들을 메모리에 저장하는 것이 필요하다.
외부 메모리 액세스는 현재 하드웨어 아키텍처들 및/또는 소프트웨어 구현들에 있어서 중요한 설계 파라미터이다. 이는 외부 메모리 액세스가 내부 메모리 활용과 비교하여 처리를 느리게 한다는 사실에 의해 야기된다. 한편, 칩 상의 내부 메모리는, 예를 들어, 칩 크기 구현으로 인해 제한된다.
본 개시내용은 분수 보간과 조합하여 구현될 때 모션 벡터 리파인먼트가 온 칩 메모리 크기의 추가의 증가 또는 심지어 외부 메모리 액세스를 요구할 수 있다는 관찰에 기초한다. 두 옵션은 바람직하지 않을 수 있다.
상기 언급된 문제점을 고려하여, 본 개시내용은 외부 메모리에 대한 액세스들의 횟수 및 코딩 블록을 위한 모션 벡터의 모션 벡터 리파인먼트를 위해 액세스 가능해지는 데에 필요한 샘플들의 수를 고려하는 것을 이루어주는 모션 벡터 예측을 제공한다.
이는 정수 샘플 템플릿 매칭을 위해 필요한 것들에 샘플들의 수를 제한하고 및 추가적 정수 샘플들을 요구하지 않고서 미리 결정된 보간 필터로 획득가능한 그러한 분수 위치들만을 가능하게 함으로써 달성된다.
본 발명의 양태에 따르면, 처리 회로를 포함하는 예측 블록에 대한 모션 벡터를 결정하기 위한 장치가 제공되고, 이 처리 회로는: 초기 모션 벡터 및 예측 블록을 위한 템플릿을 획득하고; 및 탐색 공간에서의 상기 템플릿과의 템플릿 매칭에 의해 초기 모션 벡터의 리파인먼트를 결정하도록 구성된다. 상기 탐색 공간은 초기 모션 벡터에 의해 주어진 위치에 위치되고 그리고 하나 이상의 분수 샘플 위치를 포함하며, 여기서 탐색 공간에 속하는 분수 샘플 위치들 각각은 단지 윈도우 내의 정수 샘플들을 평가하는 미리 정의된 탭 크기의 필터에 의한 보간 필터링에 의해 획득되고, 상기 윈도우는 상기 탐색 공간에서의 템플릿 매칭을 위해 액세스가능한 정수 샘플들에 의해 형성된다.
이러한 모션 벡터 결정의 이점들 중 하나는, 예측 블록에 대한 모션 벡터 리파인먼트를 수행하기 위해 액세스 가능할 필요가 있는 샘플들의 수를 제한하면서 동시에 외부 메모리에 대한 또는 일반적으로 전체 참조 픽처들을 저장하는 메모리/스토리지/캐시에 대한 액세스 횟수를 제한하는 것이다.
일 예에서, 윈도우는 예측 블록 초기 모션 벡터에 대한 N개의 정수 샘플 열 및 M개의 정수 샘플 행으로서 정의되고, N 및 M은 0이 아닌 정수 값들이다. 이러한 정의는 모션 벡터 결정 및/또는 리파인먼트의 목적을 위해 어느 샘플들이 검색될 것인지를 지정하기 위한 간단한 수단을 제공할 수 있다. 이는 또한, 예를 들어, 비트스트림 또는 표준 내에서 용이하게 구성가능할 수 있다.
일 실시예에서, 처리 회로는 가장 최근의 반복에서 탐색 공간의 더 최상의 매칭 위치들 중 하나에 의해 주어진 방향으로 반복적으로 확장되는 탐색 공간에서의 상기 템플릿과의 템플릿 매칭에 의해 초기 모션 벡터의 리파인먼트를 결정하도록 구성되고, 윈도우는 반복들의 미리 정의된 최대 수에 의해 정의된다.
탐색 공간은, 서브 윈도우에서의 각각의 분수 샘플의 보간 필터링을 위해 액세스되는 모든 정수 샘플들이 미리 정의된 탭 크기를 갖는 보간 필터에 대해 상기 윈도우 내에 위치하도록 윈도우의 직사각형 서브 윈도우를 포함할 수 있다.
탐색 공간은 윈도우의 직사각형 탐색 서브 윈도우를 포함할 수 있고, 여기서 초기 모션 벡터의 리파인먼트는, 탐색 서브 윈도우에서의 각각의 분수 샘플의 보간 필터링을 위해 액세스되는 정수 샘플들이 미리 정의된 탭 크기를 갖는 보간 필터에 대해 상기 윈도우 내에 위치되도록, 직사각형 탐색 서브 윈도우에서의 상기 템플릿과의 템플릿 매칭에 의해 결정된다.
일 구현에서, 처리 회로는 가장 최근의 반복에서 탐색 공간의 더 최상의 매칭되는 위치들 중 하나에 의해 주어진 방향으로 반복적으로 확장되는 탐색 공간에서의 상기 템플릿과의 템플릿 매칭에 의해 초기 모션 벡터의 리파인먼트를 결정하도록 구성될 수 있고, 여기서 반복은 가장 최근의 반복의 탐색 공간 내의 적어도 하나의 샘플이 탐색 서브 윈도우 바깥에 있을 때 종료된다.
특히, 특정 예로서, 보간 필터는 분수 위치가 정수 샘플들의 제각기 수평 또는 수직 라인 상에 위치될 때 K개의 수평 또는 수직 정수 샘플 중 어느 하나를 평가하는 1차원 필터이다.
더욱이, 예를 들어, 탐색 공간은 다음 중 어느 하나에서 서브 윈도우 외부에 위치된 분수 위치들을 더 포함한다:
- 서브 윈도우의 상단 상에 또는 하단 상에 인접하여 그리고 정수 샘플들의 수평 라인 상에 위치되거나 또는
- 서브 윈도우의 왼손 측 상에 또는 오른손 측 상에 인접하고 그리고 정수 샘플들의 수직 라인 상에 위치됨.
본 발명의 또 다른 양태에 따르면, 예측 블록들로 분할된 비디오 이미지들을 비트스트림으로 인코딩하기 위한 인코딩 장치가 제공되고, 인코딩 장치는 전술한 바와 같은 예측 블록에 대한 모션 벡터의 결정을 위한 장치; 및 예측 블록과 결정된 모션 벡터에 기초한 위치에서의 예측 블록에 의해 주어지는 예측자 사이의 차이를 인코딩하고, 인코딩된 차이 및 초기 모션 벡터를 포함하는 비트스트림을 생성하기 위한 인코딩 회로를 포함한다.
본 발명의 또 다른 양태에 따르면, 예측 블록들로 분할되는 비트스트림 비디오 이미지들로부터 디코딩을 위한 디코딩 장치가 제공되고, 디코딩 장치는: 비트스트림으로부터 초기 모션 벡터 및 리파이닝된 모션 벡터에 의해 지정된 위치에서 예측 블록에 의해 주어진 예측자 사이의 인코딩된 차이를 파싱하기 위한 파싱 유닛; 상기 설명된 바와 같은 예측 블록에 대한 리파이닝된 모션 벡터의 결정을 위한 장치뿐만 아니라; 파싱된 차이 및 리파이닝된 모션 벡터에 의해 지정된 위치에서 예측 블록에 의해 주어진 예측자의 함수로서 예측 블록을 재구성하기 위한 디코딩 회로를 포함한다. 함수는 합이거나 합을 포함할 수 있다. 이 함수는 클리핑(clipping), 라운딩(rounding), 스케일링 또는 추가 동작들을 추가로 포함할 수 있다.
본 발명의 또 다른 양태에 따르면, 예측 블록에 대한 모션 벡터를 결정하는 방법이 제공되고, 이 방법은: 초기 모션 벡터 및 예측 블록에 대한 템플릿을 획득하는 단계; 탐색 공간에서 상기 템플릿과의 템플릿 매칭에 의해 초기 모션 벡터의 리파인먼트를 결정하는 단계 - 상기 탐색 공간은 초기 모션 벡터에 의해 주어진 위치에 위치되고 하나 이상의 분수 샘플 위치를 포함하고, 탐색 공간에 속하는 분수 샘플 위치들 각각은 단지 윈도우 내의 정수 샘플들을 평가하는 미리 정의된 탭 크기의 필터에 의한 보간 필터링에 의해 획득되고, 상기 윈도우는 상기 탐색 공간에서의 템플릿 매칭을 위해 액세스가능한 정수 샘플들에 의해 형성됨 - 를 포함한다.
예를 들어, 윈도우는 예측 블록 초기 모션 벡터에 대해 N개의 정수 샘플 열 및 M개의 정수 샘플 행으로서 정의되고, N 및 M은 0이 아닌 정수 값들이다.
실시예에서, 초기 모션 벡터의 리파인먼트는 가장 최근의 반복에서 탐색 공간의 더 최상의 매칭 위치들 중 하나에 의해 주어진 방향으로 반복적으로 확장되는 탐색 공간에서의 상기 템플릿과의 템플릿 매칭에 의해 결정되고, 윈도우는 반복들의 미리 정의된 최대 수에 의해 정의된다.
예시적인 구현에서, 탐색 공간은, 서브 윈도우에서의 각각의 분수 샘플의 보간 필터링을 위해 액세스되는 모든 정수 샘플들이 미리 정의된 탭 크기를 갖는 보간 필터에 대해 상기 윈도우 내에 위치되도록, 윈도우의 직사각형 서브 윈도우를 포함한다.
탐색 공간은 윈도우의 직사각형 탐색 서브 윈도우를 포함할 수 있고, 여기서 초기 모션 벡터의 리파인먼트는, 탐색 서브 윈도우에서의 각각의 분수 샘플의 보간 필터링을 위해 액세스되는 정수 샘플들이 미리 정의된 탭 크기를 갖는 보간 필터에 대해 상기 윈도우 내에 위치되도록, 직사각형 탐색 서브 윈도우에서의 상기 템플릿과의 템플릿 매칭에 의해 결정된다.
일 구현에서, 초기 모션 벡터의 리파인먼트는 가장 최근의 반복에서 탐색 공간의 더 최상의 매칭 위치들 중 하나에 의해 주어진 방향으로 반복적으로 확장되는 탐색 공간에서의 상기 템플릿과의 템플릿 매칭에 의해 결정될 수 있고, 여기서 반복은 가장 최근의 반복의 탐색 공간 내의 적어도 하나의 샘플이 탐색 서브 윈도우 외부에 있을 때 종료된다.
더욱이, 예를 들어, 보간 필터는 분수 위치가 정수 샘플들의 제각기 수평 또는 수직 라인 상에 위치될 때 K개의 수평 또는 수직 정수 샘플 중 어느 하나를 평가하는 1차원 필터이다.
유리하게는, 탐색 공간은, 서브 윈도우의 상단 상에 또는 하단 상에 인접하고 정수 샘플들의 수평 라인 상에 위치되거나 또는 서브 윈도우의 왼손 측 상에 또는 오른손 측 상에 인접하고 정수 샘플들의 수직 라인 상에 위치되어 서브 윈도우 바깥에 위치된 분수 위치들을 추가로 포함한다.
본 발명의 또 다른 양태에 따르면, 예측 블록들로 분할되는 비디오 이미지들을 비트스트림으로 인코딩하는 인코딩 방법이 제공되고, 인코딩 방법은 전술한 방법들 중 임의의 방법에 따라 예측 블록에 대한 모션 벡터를 결정하는 단계뿐만 아니라; 예측 블록과 결정된 모션 벡터에 기초한 위치에서의 예측 블록에 의해 주어진 예측자 사이의 차이를 인코딩하고 또한 인코딩된 차이 및 초기 모션 벡터를 포함하는 비트스트림을 생성하는 단계를 포함한다.
본 발명의 또 다른 양태에 따르면, 예측 블록들로 분할된 비트스트림 비디오 이미지들로부터 디코딩하기 위한 디코딩 방법이 제공되고, 디코딩 방법은: 비트스트림으로부터 초기 모션 벡터 및 예측 블록과 리파이닝된 모션 벡터에 의해 지정된 위치에서 예측 블록에 의해 주어진 예측자 사이의 인코딩된 차이를 파싱하는 단계; 상기 언급된 방법들 중 임의의 방법에 따라 예측 블록에 대한 리파이닝된 모션 벡터를 결정하는 단계; 및 예측 블록을, 파싱된 차이와 리파이닝된 모션 벡터에 의해 지정된 위치에서 예측 블록에 의해 주어진 예측자의 합으로서 재구성하는 단계를 포함한다.
본 발명의 양태에 따르면, 프로세서/처리 회로에 의해 실행될 때 상기 양태들 또는 실시예들 또는 그 조합들 중 임의의 것에 따른 단계들을 수행하는 명령어들을 저장한 비일시적 컴퓨터 판독가능 저장 매체가 제공된다.
이하에서, 예시적인 실시예들이 첨부 도면들 및 그림들을 참조하여 더 상세히 설명된다.
도 1은 모션 벡터 도출 및 리파인먼트가 이용될 수 있는 인코더의 예시적인 구조를 도시하는 블록도이다.
도 2는 모션 벡터 도출 및 리파인먼트가 이용될 수 있는 디코더의 예시적인 구조를 도시하는 블록도이다.
도 3은 양방향 예측에 적합한 예시적인 템플릿 매칭을 나타내는 개략도이다.
도 4는 단방향 및 양방향 예측에 적합한 예시적 템플릿 매칭을 나타내는 개략도이다.
도 5는 비트스트림에서 리파이닝될 초기 모션 벡터들을 제공하지 않고 동작하는 모션 벡터 도출의 스테이지들을 나타내는 블록도이다.
도 6은 본 발명의 실시예를 구현하기 위한 예시적인 하드웨어를 나타내는 블록도이다.
도 7은 코딩 블록에 대해, 액세스되는 데에 이용가능해야 할 샘플들을 갖는 예시적인 윈도우를 나타내는 개략도이다.
도 8은 반복 탐색 공간을 나타내는 개략도이다.
도 9는 보간 필터링으로 인해 수평 방향으로의 메모리 액세스 윈도우의 확장을 나타내는 개략도이다.
도 10은 분수 샘플 위치들에 대한 서브 윈도우의 정의를 나타내는 개략도이다.
도 11은 메모리 액세스 윈도우의 예시적인 정의를 나타내는 개략도이다.
도 12는 모션 벡터 리파인먼트에 대한 탐색 공간 위치들을 형성하도록 허용되는 분수 위치들을 포함하는 예시적인 위치들을 나타내는 개략도이다.
도 13은 모션 벡터 리파인먼트에 대한 탐색 공간 위치들을 형성하도록 허용되지 않는 예시적인 분수 위치들을 나타내는 개략도이다.
도 14는 탐색 공간의 어느 위치가 모션 벡터 리파인먼트에 대한 템플릿 매칭에 의해 테스트되도록 허용되는지를 결정하기 위한 방법을 나타내는 흐름도이다.
도 15는 모션 벡터 리파인먼트에 대한 탐색 공간 위치들을 형성하도록 허용되는 분수 위치들을 포함하는 예시적인 위치들을 나타내는 개략도이다.
도 16은 메모리 액세스 윈도우에서 반복 리파인먼트 프로세스를 나타내는 흐름도이다.
도 17은 탐색 서브 윈도우에서의 반복 리파인먼트 프로세스를 나타내는 흐름도이다.
본 개시내용은 참조 픽처에서 분수 위치들을 획득하기 위해 모션 벡터 리파인먼트 및 보간을 수행하도록 액세스될 샘플들의 수의 조절에 관한 것이다.
전술한 바와 같이, 외부 메모리 액세스는 오늘날의 하드웨어 및 소프트웨어 아키텍처에서 가장 중요한 설계 고려사항들 중 하나이다. 모션 벡터 추정은 특히, 예를 들어, 모션 벡터 리파인먼트의 경우에 템플릿 매칭을 포함할 때, 탐색 공간의 분수 위치들을 획득하기 위해 보간 필터링과 함께 또한 사용될 수 있다. 보간 필터링의 사용은 메모리로부터 액세스될 필요가 있는 샘플들의 수의 증가를 요구할 수 있다. 그러나, 이는 고가의 온 칩 메모리의 증가 또는 다른 한편으로는 구현을 느리게 하는 증가된 횟수의 외부 메모리 액세스들을 초래할 수 있다. 특히 디코더 측에서, 이러한 문제들은 바람직하지 않은 더 비싸거나 더 느린 애플리케이션들을 초래할 수 있다.
이러한 상황을 방지하기 위해, 본 개시내용은 외부 메모리 액세스들에 대한 제한을 제공한다. 본 발명의 실시예에 따르면, 모션 벡터 리파인먼트를 위해 액세스가능하게 될 샘플들의 윈도우는, 리파이닝되지 않은 모션 벡터에 의해, 즉 초기 모션 벡터에 의해 가리켜지는 위치 주위에 정의된다. 윈도우는 모션 벡터 리파인먼트를 수행하기 위해 메모리로부터 액세스될 필요가 있는 샘플들의 최대 수를 정의한다. 일반적으로, 액세스가능하게 될 샘플들은 템플릿 매칭이 수행될 탐색 공간의 위치들 상의 샘플들 및 탐색 공간에서의 모든 위치들에 대해 템플릿과 매칭될 샘플들을 포함한다. 후자는 통상적으로 탐색 공간을 초과한다. 단순화를 위해, 메모리 액세스의 윈도우는 코딩 블록(모션 벡터가 그에 대해 발견될 현재 블록) 주위의 확장으로서 정의될 수 있다. 예를 들어, 현재 블록의 좌측 및 우측으로부터의 R개의 샘플 및 상단 및 하단 경계로부터의 R개의 샘플은 윈도우를 정의할 수 있다. 다시 말해서, 현재 블록이 N x N 샘플의 크기를 가질 때, 액세스 윈도우는 (R+N+R) x (R+N+R), 즉 (N+2R) x (N+2R) 샘플들의 크기를 가질 수 있다. 예를 들어, R은 4와 동일할 수 있다. 그러나, 현재 블록은 수평 크기 N과 상이한 수직 크기 N을 가질 수 있고, 상단, 하단, 좌측 및 우측 방향에서의 확장 샘플들의 수는 또한 상이할 수 있다.
본 개시내용에 따르면, 메모리 액세스 윈도우를 제한하기 위해, 보간에 필요한 샘플들이 정수 샘플들에 대해 정의된 바와 같이 모션 벡터 리파인먼트에 대해 메모리 액세스의 윈도우 내부에 있는 경우에만 분수 픽셀 좌표들이 모션 벡터 리파인먼트에 의해 액세스된다.
도 1은 비디오 스트림의 프레임들 또는 픽처들의 입력 이미지 샘플들을 수신하기 위한 입력, 및 인코딩된 비디오 비트스트림을 생성하기 위한 출력을 포함하는 인코더(100)를 도시한다. 본 개시내용에서 "프레임"이라는 용어는 픽처에 대한 유의어로서 사용된다. 그러나, 본 개시내용은 인터레이싱이 적용되는 경우에 필드들에도 적용가능하다는 점에 유의한다. 일반적으로, 픽처는 m x n개의 픽셀을 포함한다. 이것은 이미지 샘플들에 대응하고 하나 이상의 컬러 컴포넌트를 포함할 수 있다. 간략함을 위해, 이하의 설명은 휘도의 샘플들을 의미하는 픽셀들을 지칭한다. 그러나, 본 발명의 모션 벡터 탐색은 RGB 등과 같은 탐색 공간의 색차(chrominance) 또는 컴포넌트들을 포함하는 임의의 컬러 컴포넌트에 적용될 수 있다는 점에 유의한다. 한편, 하나의 컴포넌트에 대한 모션 벡터 추정만을 수행하고 결정된 모션 벡터를 더 많은 (또는 모든) 컴포넌트들에 적용하는 것이 유익할 수 있다.
코딩될 입력 블록들은 반드시 동일한 크기를 갖는 것은 아니다. 하나의 픽처는 상이한 크기들의 블록들을 포함할 수 있고 상이한 픽처들의 블록 래스터는 또한 상이할 수 있다.
해설적 실현에서, 인코더(100)는 예측, 변환, 양자화, 및 엔트로피 코딩을 비디오 스트림에 적용하도록 구성된다. 변환, 양자화, 및 엔트로피 코딩은 변환 유닛(106), 양자화 유닛(108), 및 엔트로피 인코딩 유닛(170)에 의해 제각기 수행되어, 인코딩된 비디오 비트스트림을 출력으로서 생성한다.
비디오 스트림은 복수의 프레임을 포함하고, 여기서 각각의 프레임은 인트라 또는 인터 코딩되는 특정 크기의 블록들로 분할된다. 예를 들어, 비디오 스트림의 제1 프레임의 블록들이 인트라 예측 유닛(154)에 의해 인트라 코딩된다. 인트라 프레임은 동일한 프레임 내의 정보만을 사용하여 코딩되어, 이것이 독립적으로 디코딩될 수 있고 또한 이것이 랜덤 액세스를 위해 비트 스트림에서 엔트리 포인트를 제공할 수 있도록 한다. 비디오 스트림의 다른 프레임들의 블록들은 인터 예측 유닛(144)에 의해 인터 코딩될 수 있다: 이전에 코딩된 프레임들(참조 프레임들)로부터의 정보는 시간 중복성을 감소시키기 위해 사용되어, 인터 코딩된 프레임의 각각의 블록이 참조 프레임에서의 블록으로부터 예측되도록 한다. 모드 선택 유닛(160)은 프레임의 블록이 인트라 예측 유닛(154) 또는 인터 예측 유닛(144)에 의해 처리될 것인지를 선택하도록 구성된다. 이 모드 선택 유닛(160)은 또한 인트라 또는 인터 예측의 파라미터들을 제어한다. 이미지 정보의 리프레싱을 가능하게 하기 위해, 인트라 코딩된 블록들이 인터 코딩된 프레임들 내에 제공될 수 있다. 더욱이, 인트라 코딩된 블록들만을 포함하는 인트라 프레임들은 디코딩을 위한 엔트리 포인트들, 즉 디코더가 이전에 코딩된 프레임들로부터의 정보를 갖지 않고 디코딩을 시작할 수 있는 포인트들을 제공하기 위해서 비디오 시퀀스 내에 규칙적으로 삽입될 수 있다.
인트라 추정 유닛(152) 및 인트라 예측 유닛(154)은 인트라 예측을 수행하는 유닛들이다. 특히, 인트라 추정 유닛(152)은, 인트라 예측 유닛(154)이 차이 코딩에 대해, 예측자, 즉 선택된 예측 모드를 이용하여 예측되는 샘플들을 제공하는 동안, 원래 이미지의 지식에도 기초하여 예측 모드를 도출할 수 있다. 공간 또는 시간 예측을 수행하기 위해, 코딩된 블록들은 역양자화 유닛(110) 및 역변환 유닛(112)에 의해 더 처리될 수 있다. 블록의 재구성 후에, 디코딩된 이미지의 품질을 더 개선하기 위해 루프 필터링 유닛(120)이 적용된다. 이후, 필터링된 블록들은 디코딩된 픽처 버퍼(130)에 이후 저장된 참조 프레임들을 형성한다. 인코더 측에서의 이러한 디코딩 루프(디코더)는 디코더 측에서 재구성된 참조 픽처와 동일한 참조 프레임들을 생성하는 이점을 제공한다. 따라서, 인코더 및 디코더 측은 대응하는 방식으로 동작한다. 여기서 "재구성"이라는 용어는 디코딩된 잔차 블록에 예측 블록을 추가함으로써 재구성된 블록을 획득하는 것을 지칭한다.
인터 추정 유닛(142)은 인터 코딩될 현재 프레임 또는 픽처의 블록 및 디코딩된 픽처 버퍼(130)로부터의 하나 또는 몇 개의 참조 프레임을 입력으로서 수신한다. 모션 추정은 인터 추정 유닛(142)에 의해 수행되는 한편, 인터 예측 유닛(144)에 의해 모션 보상이 적용된다. 모션 추정은, 예를 들어, 코딩될 원래 이미지를 또한 사용하여, 특정 비용 함수에 기초하여 모션 벡터 및 참조 프레임을 획득하기 위해 사용된다. 예를 들어, 모션 추정 유닛(142)은 초기 모션 벡터 추정을 제공할 수 있다. 이후, 초기 모션 벡터는 비트스트림 내에서 직접적으로 벡터의 형태로 또는 인코더 및 디코더에서 동일한 방식으로 미리 결정된 규칙에 기초하여 구성된 후보들의 리스트 내의 모션 벡터 후보를 참조하는 인덱스로서 시그널링될 수 있다. 이후, 움직임 보상은 현재 블록의 예측자를, 참조 프레임에서의 현재 블록과 공동 위치된 블록의 참조 프레임에서의 참조 블록으로의 병진 이동으로서, 즉 모션 벡터에 의해 도출한다. 인터 예측 유닛(144)은 현재 블록에 대한 예측 블록을 출력하고, 여기서 상기 예측 블록은 비용 함수를 최소화한다. 예를 들어, 비용 함수는 코딩될 현재 블록과 그것의 예측 블록 사이의 차이일 수 있고, 즉 비용 함수는 잔차 블록을 최소화한다. 잔차 블록의 최소화는 예를 들어 현재 블록의 모든 픽셀들(샘플들)과 후보 참조 픽처에서의 후보 블록 사이의 절대 차이들의 합(SAD)을 계산하는 것에 기초한다. 그러나, 일반적으로, 평균 제곱 오차(MSE) 또는 구조 유사성 메트릭(SSIM)과 같은 임의의 다른 유사성 메트릭이 이용될 수 있다.
그러나, 비용 함수는 또한 그러한 인터 블록을 코딩하는 데 필요한 비트들의 수 및/또는 이러한 코딩으로부터 기인하는 왜곡일 수 있다. 따라서, 레이트 왜곡 최적화 절차가 모션 벡터 선택 및/또는 일반적으로 블록에 대한 인터 또는 인트라 예측을 사용할지 및 어느 설정들로 할지와 같이 인코딩 파라미터들에 대해 결정하기 위해 사용될 수 있다.
인트라 추정 유닛(152) 및 인트라 예측 유닛(154)은 입력으로서 현재 프레임 또는 인트라 코딩될 픽처의 블록 및 현재 프레임의 이미 재구성된 영역으로부터의 하나 또는 몇 개의 참조 샘플을 수신한다. 이후, 인트라 예측이 현재 프레임의 참조 샘플들의 함수의 관점에서 현재 프레임의 현재 블록의 픽셀들을 설명한다. 인트라 예측 유닛(154)은 현재 블록에 대한 예측 블록을 출력하고, 여기서 상기 예측 블록은 유리하게는 코딩될 현재 블록과 그것의 예측 블록 사이의 차이를 최소화하고, 즉 그것은 잔차 블록을 최소화한다. 잔차 블록의 최소화는 예를 들어 레이트 왜곡 최적화 절차에 기초할 수 있다. 특히, 예측 블록은 참조 샘플들의 방향성 보간으로서 획득된다. 이 방향은 레이트 왜곡 최적화에 의해 및/또는 인터 예측과 관련하여 전술한 바와 같은 유사성 측도를 계산함으로써 결정될 수 있다.
인터 추정 유닛(142)은 현재 프레임 또는 인터 코딩될 픽처의 블록 또는 보다 범용으로 형성된 이미지 샘플 및 2개 이상의 이미 디코딩된 픽처(231)를 입력으로서 수신한다. 이후 인터 예측은 참조 픽처들의 참조 이미지 샘플들에 대한 모션 벡터들의 관점에서 현재 프레임의 현재 이미지 샘플을 설명한다. 인터 예측 유닛(142)은 현재 이미지 샘플에 대한 하나 이상의 모션 벡터들을 출력하고, 여기서 모션 벡터들에 의해 가리켜진 상기 참조 이미지 샘플들은 코딩될 현재 이미지 샘플과 그것의 참조 이미지 샘플들 사이의 차이를 유리하게 최소화하고, 즉 그것은 잔차 이미지 샘플을 최소화한다. 이후, 현재 블록에 대한 예측자는 차이 코딩을 위해 인터 예측 유닛(144)에 의해 제공된다.
현재 블록과 그 예측, 즉, 잔차 블록(105) 사이의 차이는 변환 유닛(106)에 의해 변환된다. 변환 계수들(107)은 양자화 유닛(108)에 의해 양자화되고 엔트로피 인코딩 유닛(170)에 의해 엔트로피 코딩된다. 이렇게 생성된 인코딩된 픽처 데이터(171), 즉 인코딩된 비디오 비트스트림은 인트라 코딩된 블록들 및 인터 코딩된 블록들 및 대응하는 시그널링(모드 표시, 모션 벡터의 표시, 및/또는 인트라 예측 방향과 같은 것)을 포함한다. 변환 유닛(106)은 푸리에 또는 이산 코사인 변환(DFT/FFT 또는 DCT)과 같은 선형 변환을 적용할 수 있다. 공간 주파수 도메인으로의 이러한 변환은 결과적인 계수들(107)이 전형적으로 더 낮은 주파수들에서 더 높은 값들을 갖는다는 이점을 제공한다. 따라서, (지그재그와 같은) 유효 계수 스캐닝 및 양자화 후에, 결과적인 값들의 시퀀스는 처음에 전형적으로 얼마간 큰 값들을 가지며 0들의 런(run)으로 끝난다. 이는 추가적인 효율적인 코딩을 가능하게 한다. 양자화 유닛(108)은 계수 값들의 해상도를 감소시킴으로써 실제의 손실 압축을 수행한다. 이후, 엔트로피 코딩 유닛(170)은 계수 값들에 이진 코드워드들을 할당하여 비트스트림을 생성한다. 엔트로피 코딩 유닛(170)은 또한 시그널링 정보(도 1에 도시되지 않음)를 코딩한다.
도 2는 비디오 디코더(200)를 도시한다. 비디오 디코더(200)는 특히, 디코딩된 픽처 버퍼(230), 인터 예측 유닛(244), 및 블록 예측 유닛인 인트라 예측 유닛(254)을 포함한다. 디코딩된 픽처 버퍼(230)는 인코딩된 비디오 비트스트림으로부터 재구성된 적어도 하나(단방향 예측을 위한 것) 또는 적어도 2개(양방향 예측을 위한 것) 참조 프레임들을 저장하도록 구성되고, 상기 참조 프레임들은 인코딩된 비디오 비트스트림의 현재 프레임(현재 디코딩된 프레임)과 상이하다. 인트라 예측 유닛(254)은 디코딩될 블록의 추정인 예측 블록을 생성하도록 구성된다. 인트라 예측 유닛(254)은 재구성된 블록(215) 또는 버퍼(216)로부터 획득되는 참조 샘플들에 기초하여 이 예측을 생성하도록 구성된다.
디코더(200)는 비디오 인코더(100)에 의해 생성된 인코딩된 비디오 비트스트림을 디코딩하도록 구성되고, 바람직하게는 디코더(200) 및 인코더(100) 양쪽 모두는 인코딩될/디코딩될 제각기 블록에 대한 동일한 예측들을 생성한다. 디코딩된 픽처 버퍼(230), 재구성된 블록(215), 버퍼(216) 및 인트라 예측 유닛(254)의 특징들은 도 1의 디코딩된 픽처 버퍼(130), 재구성된 블록(115), 버퍼(116) 및 인트라 예측 유닛(154)의 특징들과 유사하다.
비디오 디코더(200)는, 예를 들어, 제각기 비디오 코더(100)의 역 양자화 유닛(110), 역변환 유닛(112), 및 루프 필터링 유닛(120)에 대응하는, 역 양자화 유닛(210), 역변환 유닛(212), 및 루프 필터링 유닛(220)과 같이, 비디오 인코더(100)에 또한 존재하는 추가 유닛들을 포함한다.
엔트로피 디코딩 유닛(204)은 수신된 인코딩된 비디오 비트스트림을 디코딩하고, 양자화된 잔차 변환 계수들(209) 및 시그널링 정보를 대응하여 획득하도록 구성된다. 양자화된 잔차 변환 계수들(209)은 역양자화 유닛(210) 및 역변환 유닛(212)에 공급되어 잔차 블록을 생성한다. 잔차 블록이 예측 블록(265)에 추가되고, 이러한 추가는 루프 필터링 유닛(220)에 공급되어 디코딩된 비디오를 획득한다. 디코딩된 비디오의 프레임들은 디코딩된 픽처 버퍼(230)에 저장될 수 있고 인터 예측을 위해 디코딩된 픽처(231)로서 역할을 할 수 있다.
일반적으로, 도 1 및 도 2의 인트라 예측 유닛들(154 및 254)은 인코딩될 필요가 있거나 디코딩될 필요가 있는 블록들에 대한 예측 신호들을 생성하기 위해 이미 인코딩된 영역으로부터의 참조 샘플들을 사용할 수 있다.
엔트로피 디코딩 유닛(204)은 그 입력으로서 인코딩된 비트스트림(171)을 수신한다. 일반적으로, 비트스트림은 먼저 파싱되는데, 즉 시그널링 파라미터들 및 잔차(residual)들이 비트스트림으로부터 추출된다. 통상적으로, 비트스트림의 신택스 및 시맨틱은 인코더들 및 디코더들이 상호 운용가능한 방식으로 작업할 수 있도록 표준에 의해 정의된다. 상기 배경기술 섹션에서 설명된 바와 같이, 인코딩된 비트스트림은 예측 잔차들을 포함할 뿐만이 아니다. 모션 보상된 예측의 경우, 모션 벡터 표시가 또한 비트스트림에서 코딩되고 디코더에서 그로부터 파싱된다. 모션 벡터 표시는 모션 벡터가 제공되는 참조 픽처에 의해 그리고 모션 벡터 좌표들에 의해 주어질 수 있다. 지금까지, 완전한 모션 벡터들을 코딩하는 것이 고려되었다. 그러나, 또한 비트스트림에서의 현재 모션 벡터와 이전 모션 벡터 간의 차이만이 인코딩될 수 있다. 이 접근법은 이웃 블록들의 모션 벡터들 간의 중복성을 활용하는 것을 허용한다.
참조 픽처를 효율적으로 코딩하기 위해, H.265 코덱(ITU-T, H265, Series H: Audiovisual and multimedia systems: High Efficient Video Coding)이 참조 픽처들의 리스트를 제공하여 리스트 인덱스들에 제각기 참조 프레임들을 할당한다. 이후 참조 프레임은 그 안에 대응하는 할당된 리스트 인덱스를 포함함으로써 비트스트림에서 시그널링된다. 이러한 리스트는 표준에서 정의될 수 있거나 또는 비디오의 시작에서 또는 다수의 프레임의 세트에서 시그널링될 수 있다. H.265에서, L0 및 L1이라고 불리는 정의된 참조 픽처들의 2개의 리스트가 있다는 점을 유의한다. 이후, 참조 픽처는 리스트(L0 또는 L1)를 표시하고 원하는 참조 픽처와 연관된 해당 리스트에서의 인덱스를 표시함으로써 비트스트림에서 시그널링된다. 2개 이상의 리스트를 제공하는 것은 더 나은 압축을 위한 장점들을 가질 수 있다. 예를 들어, L0은 단방향 인터 예측 슬라이스들 및 양방향 인터 예측 슬라이스들 양쪽 모두에 대해 사용될 수 있는 반면, L1은 양방향 인터 예측 슬라이스들에 대해서만 사용될 수 있다. 그러나, 일반적으로 본 개시내용은 L0 및 L1 리스트들의 임의의 내용에 제한되지 않는다.
리스트 L0 및 L1은 표준에서 정의되고 고정될 수 있다. 그러나, 코딩/디코딩에서 더 많은 유연성이 비디오 시퀀스의 시작에서 그들을 시그널링함으로써 달성될 수 있다. 따라서, 인코더는 인덱스에 따라 정렬된 특정 참조 픽처들로 리스트들 L0 및 L1을 구성할 수 있다. L0 및 L1 리스트들은 동일한 고정 크기를 가질 수 있다. 일반적으로 2개보다 많은 리스트가 있을 수 있다. 모션 벡터는 참조 픽처에서의 좌표들에 의해 직접 시그널링될 수 있다. 대안적으로, H.265에서 또한 지정된 바와 같이, 후보 모션 벡터들의 리스트가 구축될 수 있고, 특정 모션 벡터를 갖는 리스트에 연관된 인덱스가 송신될 수 있다.
현재 블록의 모션 벡터들은 보통은 현재 픽처에서의 또는 더 초기의 코딩된 픽처들에서의 이웃 블록들의 모션 벡터들과 상관된다. 이는 이웃 블록들이 유사한 움직임을 갖는 동일한 움직이는 객체에 대응할 가능성이 있고 또한 객체의 모션은 시간 경과에 따라 갑자기 변할 가능성이 적기 때문이다. 결과적으로, 이웃 블록들에서의 모션 벡터들을 예측자들로서 사용하는 것은 시그널링된 모션 벡터 차이의 크기를 감소시킨다. MVP(Motion Vector Predictor)들은 보통은, 공간 이웃 블록들로부터 또는 참조 픽처에서의 시간적으로 이웃하는 또는 공동 위치된 블록들로부터, 이미 인코딩된/디코딩된 모션 벡터들로부터 도출된다. H.264/AVC에서, 이는 3개의 공간적으로 이웃하는 모션 벡터들의 성분별(component wise) 중앙값을 행함으로써 행해진다. 이러한 접근법을 사용하여, 예측자의 어떤 시그널링도 요구되지 않는다. 참조 픽처에서의 공동 위치된 블록으로부터의 시간적 MVP들은 H.264/AVC의 소위 시간적 직접 모드에서에서만 고려된다. H.264/AVC 직접 모드들은 또한 모션 벡터 이외의 다른 모션 데이터를 도출하기 위해 사용된다. 따라서, 이들은 HEVC에서의 블록 병합 개념에 더 관련된다. HEVC에서, MVP를 암시적으로 도출하는 접근법은 MVP들의 리스트로부터 어느 MVP가 모션 벡터 도출을 위해 사용되는지를 명시적으로 시그널링하는 모션 벡터 경쟁으로 알려진 기술로 대체되었다. HEVC에서의 가변 코딩 쿼드 트리 블록 구조는 모션 벡터들을 갖는 몇 개의 이웃 블록들을 잠재적 MVP 후보들로서 갖는 하나의 블록을 낳을 수 있다. 좌측 이웃을 예로 취하면, 최악의 경우에 64x64 루마 예측 블록은, 64x64 루마 코딩 트리 블록이 더 분할되지 않고 그리고 좌측의 것이 최대 깊이로 분할될 때 좌측으로 16개의 4x4 루마 예측 블록을 가질 수 있다.
AMVP(Advanced Motion Vector Prediction)는 모션 벡터 경쟁을 수정하여 이러한 유연한 블록 구조를 설명하기 위해 도입되었다. HEVC의 개발 동안, 초기 AMVP 설계는 코딩 효율과 구현 친화적 설계 사이의 양호한 절충을 제공하기 위해 상당한 정도로 단순화되었다. AMVP의 초기 설계는 예측자들의 3개의 상이한 부류: 공간적 이웃들로부터의 3개의 모션 벡터, 3개의 공간적 예측자들의 중앙값, 및 공동 위치된 시간적으로 이웃하는 블록으로부터의 스케일링된 모션 벡터로부터의 5개의 MVP를 포함했다. 더욱이, 예측자들의 리스트는 가장 확률이 높은 모션 예측자를 제1 위치에 배치하도록 재정렬함으로써 그리고 최소의 시그널링 오버헤드를 보장하기 위해 중복 후보들을 제거함으로써 수정되었다. AMVP 후보 리스트 구성의 최종 설계는 다음과 같은 2개의 MVP 후보를 포함한다: a) 5개의 공간적 이웃 블록으로부터 도출되는 2개까지의 공간적 후보 MVP들; b) 둘 모두의 공간적 후보 MVP가 이용가능하지 않거나 이들이 동일하지 않을 때 2개의 시간적, 공동 위치된 블록으로부터 도출된 하나의 시간적 후보 MVP들; 및 c) 공간적, 시간적 또는 둘 모두의 후보들이 이용가능하지 않을 때의 제로 모션 벡터들. 모션 벡터 결정에 관한 상세 사항은 본 명세서에 참조에 의해 포함된 V. Sze et al (Ed.), High Efficiency Video Coding (HEVC): Algorithms and Architectures, Springer, 2014인 책에서, 특히 5장에서 발견될 수 있다.
시그널링 오버헤드에서의 추가적인 증가 없이 모션 벡터 추정을 더 개선하기 위해, 인코더 측에서 도출되고 비트스트림에서 제공되는 모션 벡터들을 더 리파이닝하는 것이 유익할 수 있다. 모션 벡터 리파인먼트는 인코더로부터의 도움 없이 디코더에서 수행될 수 있다. 그 디코더 루프에서의 인코더는 대응하는 모션 벡터들을 획득하기 위해 동일한 리파인먼트를 이용할 수 있다. 모션 벡터 리파인먼트는 참조 픽처의 정수 픽셀 위치들 및 분수 픽셀 위치들을 포함하는 탐색 공간에서 수행된다. 예를 들어, 분수 픽셀 위치들은 하프 픽셀 위치들 또는 1/4 픽셀 또는 추가의 분수 위치들일 수 있다. 분수 픽셀 위치들은 쌍선형 보간과 같은 보간에 의해 정수(전체 픽셀) 위치들로부터 획득될 수 있다.
현재 블록의 쌍방향 예측에서, 리스트 L0의 제각기 제1 모션 벡터 및 리스트 L1의 제2 모션 벡터를 사용하여 획득된 2개의 예측 블록은 단일 예측 신호에 조합되고, 이것은 단방향 예측보다 원래의 신호에 더 양호한 적응을 제공할 수 있고, 결과적으로 더 작은 잔차 정보 및 가능하게는 더 효율적인 압축을 낳을 수 있다.
디코더에서, 현재 블록이 디코딩되고 있어서 이용가능하지 않기 때문에, 모션 벡터 리파인먼트의 목적을 위해, 템플릿이 사용되고, 이것은 현재 블록의 추정이고 또한 이것은 이미 처리된(즉, 인코더 측에서 코딩되고 디코더 측에서 디코딩된) 이미지 부분들에 기초하여 구성된다.
먼저, 제1 모션 벡터 MV0의 추정 및 제2 모션 벡터 MV1의 추정이 디코더(200)에서 입력으로서 수신된다. 인코더 측(100)에서, 모션 벡터 추정들 MV0 및 MV1은 블록 매칭에 의해 및/또는 (동일한 픽처에서 또는 인접한 픽처들에서) 현재 블록에 이웃하는 블록들의 모션 벡터들에 의해 형성된 (병합 리스트와 같은) 후보들의 리스트에서의 탐색에 의해 획득될 수 있다. 이후 MV0 및 MV1은 유리하게는 비트스트림 내의 디코더 측에 시그널링된다. 그러나, 일반적으로, 인코더에서의 제1 결정 스테이지도 시그널링 오버헤드를 감소시키는 이점을 제공하는 템플릿 매칭에 의해 수행될 수 있다는 점에 유의한다.
디코더 측(200)에서, 모션 벡터들 MV0 및 MV1은 비트스트림에서의 정보에 기초하여 유리하게는 획득된다. MV0 및 MV1은 직접 시그널링되거나 또는 차등 시그널링되거나, 및/또는 모션 벡터의 리스트(병합 리스트)에서의 인덱스가 시그널링된다. 그러나, 본 개시내용은 비트스트림에서 모션 벡터들을 시그널링하는 것에 제한되지 않는다. 오히려, 모션 벡터는, 인코더의 동작에 대응하여, 제1 스테이지에서 이미 템플릿 매칭에 의해 결정될 수 있다. 제1 스테이지(모션 벡터 도출)의 템플릿 매칭은 제2의 리파인먼트 스테이지의 탐색 공간과 상이한 탐색 공간에 기초하여 수행될 수 있다. 특히, 리파인먼트는 더 높은 해상도(즉, 탐색 위치들 사이의 더 짧은 거리)를 갖는 탐색 공간 상에서 수행될 수 있다.
제각기 MV0 및 MV1가 가리키는 2개의 참조 픽처 RefPic0 및 RefPic1의 표시가 또한 디코더에 제공된다. 참조 픽처들은 이전 처리, 즉 제각기 인코딩 및 디코딩의 결과로서 인코더 및 디코더 측에서 디코딩된 픽처 버퍼에 저장된다. 이들 참조 픽처들 중 하나는 탐색에 의한 모션 벡터 리파인먼트를 위해 선택된다. 모션 벡터들의 결정을 위한 장치의 참조 픽처 선택 유닛은 MV0이 가리키는 제1 참조 픽처 및 MV1이 가리키는 제2 참조 픽처를 선택하도록 구성된다. 선택에 이어서, 참조 픽처 선택 유닛은 제1 참조 픽처 또는 제2 참조 픽처가 모션 벡터 리파인먼트를 수행하기 위해 사용되는지를 결정한다. 모션 벡터 리파인먼트를 수행하기 위해, 제1 참조 픽처에서의 탐색 영역은 모션 벡터 MV0가 가리키는 후보 위치 주위에 정의된다. 탐색 영역 내의 후보 탐색 공간 위치들은, 탐색 공간 내의 템플릿 매칭을 수행하고 및 절대 차이들의 합(SAD)과 같은 유사성 메트릭을 결정함으로써 템플릿 블록과 가장 유사한 블록을 찾도록 분석된다. 탐색 공간의 위치들은 템플릿의 상단 좌측 코너가 매칭되는 위치들을 나타낸다. 전술한 바와 같이, 상단 좌측 코너는 단순한 관례이고, 중심 포인트와 같은 탐색 공간의 임의의 포인트가 일반적으로 매칭 위치를 나타내기 위해 사용될 수 있다.
전술한 문서 JVET-D0029에 따르면, 디코더측 모션 벡터 리파인먼트(DMVR)는 2개의 제각기 참조 픽처 RefPict0 및 RefPict1을 가리키는 초기 모션 벡터들 MV0 및 MV1을 입력으로서 갖는다. 이들 초기 모션 벡터들은 RefPict0 및 RefPict1에서의 제각기 탐색 공간들을 결정하기 위해 사용된다. 더욱이, 모션 벡터들 MV0 및 MV1을 이용하여, 템플릿은 다음과 같이 MV0 및 MV1에 의해 다음과 같이 가리켜지는 (샘플들의) 제각기 블록들 A 및 B에 기초하여 구성된다:
Template = function ((Block A, Block B)).
함수는 샘플별(sample-wise) 가중 합산과 조합되는 샘플 클리핑 동작일 수 있다. 그후 템플릿은 제각기 참조 픽처들 0 및 1에서 MV0 및 MV1에 기초하여 결정된 탐색 공간들에서 템플릿 매칭을 수행하기 위해 사용된다. 제각기 탐색 공간들에서 최상의 템플릿 매칭을 결정하기 위한 비용 함수는 SAD(Template, Block candA')이고, 여기서 블록 candA'는 MV0에 의해 주어진 위치 상에서 스패닝(span)되는 탐색 공간에서 후보 MV에 의해 가리켜지는 후보 코딩 블록이다. 도 3은 가장 잘 매칭된 블록 A'의 결정 및 결과적인 리파이닝된 모션 벡터 MV0'을 예시한다. 대응하여, 도 3에 도시된 바와 같이, 가장 잘 매칭된 블록 B' 및 블록 B'을 가리키는 대응하는 모션 벡터 MV1'을 찾기 위해 동일한 템플릿이 이용된다. 다시 말해서, 초기 모션 벡터들 MV0 및 MV1에 의해 가리켜진 블록 A 및 B에 기초하여 템플릿이 구성된 후에, 리파이닝된 모션 벡터들 MV0' 및 MV1'은 템플릿에 의한 RefPic0 및 RefPic1에 대한 탐색을 통해 발견된다.
모션 벡터 도출 기법들은 때때로 프레임 레이트 상향 변환(frame rate up-conversion, FRUC)이라고도 지칭된다. 초기 모션 벡터들 MV0 및 MV1은 일반적으로 인코더 및 디코더가 모션 벡터 리파인먼트를 위해 동일한 초기 포인트를 사용할 수 있도록 보장하기 위해 비트스트림에 표시될 수 있다. 대안적으로, 초기 모션 벡터들은 하나 이상의 초기 후보를 포함하는 초기 후보들의 리스트를 제공함으로써 획득될 수 있다. 이들 각각에 대해, 리파이닝된 모션 벡터가 결정되고, 끝에서, 비용 함수를 최소화하는 리파이닝된 모션 벡터가 선택된다.
본 발명은 도 3을 참조하여 전술한 템플릿 매칭에 제한되지 않는다는 것에 추가로 유의한다. 도 4는 단방향 예측에도 적용가능한 대안의 템플릿 매칭을 예시한다. 상세 사항은 문서 JVET-A1001에서, 특히 Jianle Chen 등에 의해 "Algorithm Description of Joint Exploration Test Model 1"이라는 제목을 갖고 또한 http://phenix.it-sudparis.eu/jvet/에서 액세스가능한 문서 JVET-A1001의 섹션 2.4.6. Pattern matched motion vector derivation에서 찾을 수 있다. 이 템플릿 매칭 접근법에서의 템플릿은 현재 프레임에서의 현재 블록에 인접한 샘플들로서 결정된다. 도 1에 도시된 바와 같이, 현재 블록의 상단 및 좌측 경계에 인접한 이미 재구성된 샘플들이 취해질 수 있고, "L자형 템플릿"이라고 지칭된다.
도 5는 또한 사용될 수 있는 또 다른 유형의 모션 벡터 도출을 예시한다. 모션 벡터 도출 프로세스에 대한 입력은 모션 벡터 도출이 적용되는지 여부를 나타내는 플래그이다. 암시적으로, 도출 프로세스에 대한 또 다른 입력은 이웃하는 (시간적으로 또는 공간적으로) 이전에 코딩된/재구성된 블록의 모션 벡터이다. 복수의 이웃 블록의 모션 벡터들은 모션 벡터 도출의 초기 탐색 단계에 대한 후보들로서 사용된다. 프로세스의 출력은 제각기 MV0'(가능하게는 양방향 예측이 사용되는 경우, 또한 MV1') 및 대응하는 참조 픽처 인덱스들 refPict0 및 가능하게는 refPict1이다. 이후, 모션 벡터 리파인먼트 스테이지는 전술한 바와 같은 템플릿 매칭을 포함한다. 리파이닝된 하나(단방향 예측) 또는 더 많은(양방향 예측/다중 프레임 예측) 모션 벡터들을 찾은 후에, 현재 블록의 예측자가 구성된다(가중 샘플 예측에 의해 단방향/다중 예측에 대해, 그렇지 않은 경우 MV 리파이닝에 의해 가리켜지는 샘플들을 참조함으로써).
본 발명은 전술한 2개의 템플릿 매칭 방법에 제한되지 않는다. 예로서, 쌍방 매칭(bilateral matching)(또한 문서 JVET-A1001에 설명됨)이라고 불리는 제3 템플릿 매칭 방법이 또한 모션 벡터 리파인먼트를 위해 사용될 수 있고, 본 발명은 유사하게 적용된다. 쌍방 매칭에 따르면, 2개의 상이한 참조 픽처에서 현재 블록의 모션 궤적을 따른 2개의 블록 사이의 최상의 매칭이 탐색된다. 연속 모션 궤적의 가정 하에서, 2개의 참조 블록을 가리키는 모션 벡터들 MV0 및 MV1은 현재 픽처와 2개의 참조 픽처 사이의 시간 거리들, 즉 TD0 및 TD1에 비례할 것이다. 쌍방 매칭에서, SAD(Block cand0', Block cand1')와 같은 비용 함수가 사용될 수 있으며, 여기서 Block cand0'은 MV0에 의해 가리켜지고 Block cand1'은 MV1에 의해 가리켜진다.
본 발명의 실시예에 따르면, 예측 블록에 대한 모션 벡터를 결정하기 위한 장치가 제공되고, 장치는 처리 회로를 포함한다. 처리 회로는 초기 모션 벡터 및 예측 블록에 대한 템플릿을 획득하고 및 탐색 공간에서의 상기 템플릿과의 템플릿 매칭에 의해 초기 모션 벡터의 리파인먼트를 결정하도록 구성된다. 상기 탐색 공간은 초기 모션 벡터에 의해 주어진 위치에 위치되고 그리고 하나 이상의 분수 샘플 위치를 포함하며, 여기서 탐색 공간에 속하는 분수 샘플 위치들 각각은 단지 윈도우 내의 정수 샘플들을 평가하는 미리 정의된 탭 크기의 필터에 의한 보간 필터링에 의해 획득되고, 상기 윈도우는 상기 탐색 공간에서의 템플릿 매칭을 위해 액세스가능한 정수 샘플들에 의해 형성된다.
처리 회로(600)는 도 6에 예시되어 있다. 처리 회로는 임의의 하드웨어를 포함할 수 있고, 구성은 양쪽 모두의 조합의 임의의 종류의 프로그래밍 또는 하드웨어 설계에 의해 구현될 수 있다. 예를 들어, 처리 회로는 상기 단계들을 구현하는 대응하는 소프트웨어를 갖는 범용 프로세서와 같은 단일 프로세서에 의해 형성될 수 있다. 한편, 처리 회로는 DSP(Digital Signal Processor)의 ASIC(Application-Specific Integrated Circuit) 또는 FPGA(Field-Programmable Gate Array)와 같은 특수 하드웨어에 의해 구현될 수 있다.
처리 회로는 상기 모션 벡터 도출을 수행하기 위해 상호접속된 전술한 하드웨어 컴포넌트들 중 하나 이상을 포함할 수 있다. 처리 회로(600)는 2개의 기능을 구현하는 계산 로직을 포함한다: 초기 모션 벡터(또는 양방향/다중 방향 예측이 사용되는 경우 복수의 초기 모션 벡터) 및 템플릿(610)을 획득하는 것 및 모션 벡터 리파인먼트(620). 이러한 2개의 기능은 동일한 하드웨어 피스 상에 구현될 수 있거나, 또는 초기 모션 벡터 및 템플릿 결정 유닛(610) 및 모션 벡터 리파인먼트 유닛(620)과 같은 별개의 하드웨어 유닛들에 의해 수행될 수 있다. 처리 회로(600)는 재구성된 참조 픽처 샘플들이 저장되는 외부 메모리(650)에 통신가능하게 접속될 수 있다. 더욱이, 처리 회로(600)는 외부 메모리로부터 전송되고 현재 처리된 블록에 대한 모션 벡터 결정을 위해 사용되는 윈도우에서 샘플들을 버퍼링하는 내부 메모리(640)를 추가로 포함할 수 있다. 처리 회로는 단일 칩 상에 집적 회로로서 구현될 수 있다.
처리 회로는 도 1 및 도 2를 참조하여 설명된 인코더 및/또는 디코더의 추가 기능들을 구현할 수 있다는 점에 유의한다. 내부 메모리는 캐시 또는 라인 메모리와 같은 온 칩 메모리일 수 있다. 칩 메모리는 계산을 가속화하기 위해 인코더/디코더 칩 상에 유리하게는 구현된다. 칩의 크기가 제한되므로, 온 칩 메모리는 보통 작다. 반면, 외부 메모리는 크기가 매우 클 수 있지만, 외부 메모리에 대한 액세스는 더 많은 에너지를 소비하고 액세스는 훨씬 더 느리다. 보통은 모든 필요한 정보는 계산들이 수행되기 전에 외부 메모리로부터 온 칩 메모리로 검색된다. 최악의 경우의 외부 메모리 액세스(또는 메모리 버스를 설계할 때 프로비저닝될 필요가 있는 대역폭)는, 프레임 또는 코딩 유닛을 디코딩하면서, 외부 메모리와 칩 사이의 메모리 전송의 가능한 최대량을 나타낸다. 메모리(특히 외부 메모리)는 보통 미리 정의된 블록 유닛들에서만 액세스될 수 있다. 다시 말해서, 일반적으로 단일 픽셀에 액세스하는 것이 가능하지 않고, 대신에 최소 유닛(예를 들어, 8x8)이 액세스되어야 한다. 온 칩 메모리 크기는 또한 더 큰 온 칩 메모리가 비용을 증가시킴에 따라 중요한 설계 고려사항이다.
다시 말해서, 전술한 장치는 집적 회로 내에 내장된 내부 메모리 및 상기 윈도우 내에 위치된 정수 샘플들을 외부 메모리로부터 내부 메모리로 페치하기 위한 메모리 액세스 유닛(인터페이스)을 추가로 포함하는 집적 회로일 수 있다.
위에서 이용된 용어 "예측 블록(prediction block)"은 예측될 현재 블록을 지칭한다. 이것은 이미지를 동등하게 크기가 정해지거나 상이한 크기의(예를 들어, 코딩 트리 유닛, CTU를 더 작은 유닛들로 계층적 분할함으로써) 블록들로 세분화함으로써 획득될 수 있는 이미지 내의 블록이다. 블록은 정사각형 또는 보다 일반적으로 직사각형일 수 있는데, 그 이유는 이들이 현재의 인코더/디코더에서도 이용되는 전형적인 형상이기 때문이다. 그러나, 본 개시내용은 블록의 임의의 크기/형상에 의해 제한되지 않는다.
처리 회로를 포함하는 장치는 인코더 또는 디코더 또는 심지어 그러한 인코더 또는 디코더를 포함하는 장치, 예를 들어, 기록 디바이스 및/또는 재생 디바이스일 수 있다.
분수 샘플 위치들은 도 1에 도시된 바와 같이 코딩된 참조 픽처를 재구성함으로써 획득된 실제 픽처 샘플 위치들 사이의 위치들이다. 따라서, 분수 위치들은 가장 가까운 정수 위치들에 기초한 보간에 의해 획득되어야 한다. H.265에 의해 사용되는 예시적인 보간 필터링의 상세 사항은 Section "5.3 Fractional Sample Interpolation" of High Efficiency Video Coding (HEVC) book by V.Sze et.al., Springer, 2014에서 발견될 수 있다.
보간 필터링은 상이한 분수 펠(pel)(샘플) 위치들을 생성하기 위해 상이한 필터들을 보통 적용한다. 일 예로서, 이하의 1D 분리 가능 필터들이 H.265 비디오 압축 표준에서 1/4 펠 및 하프 펠 위치들을 생성하기 위해 적용된다:
Figure 112022067906400-pat00002
상기 표로부터 알 수 있는 바와 같이, 보간 필터링은 필터 탭들(표에서의 계수들의 수)에 대응하는 분수 펠 위치 주위의 몇 개의 샘플들을 필요로 한다. 상기 예시적인 필터들을 사용하여 하프 펠 위치를 생성하기 위해 좌측/상단 및 우측/하단으로부터의 4개의 정수 샘플이 요구된다. 보간 필터의 길이는 하프 펠 샘플 위치들(이것은 8 탭임)보다 1/4 펠 샘플 위치들(이것은 7 탭임)에 대해 상이하다는 점에 유의해야 한다.
본 발명의 일부 실시예에서, 미리 정의된 탭 크기의 보간 필터는 상기 탐색 공간에서 템플릿 매칭을 위해 액세스가능한 정수 샘플들에 의해 주어진 윈도우 내에서만 정수 샘플들을 평가한다. 윈도우는 특정 예측 블록의 계산들에서 실제로 사용되는 것들보다 훨씬 더 많은 샘플들을 포함할 수 있다. 이는 리파인먼트 탐색 동작이 (무차별 탐색 방법과는 대조적으로) 고속 탐색 방법을 이용하여 보통 구현되고, 그에 따라 샘플들 중 일부가 탐색 동작의 점진적 진행에 의존하여 평가되지 않는다는 사실에 기인한다. 결과적으로, 리파인먼트 탐색 동작을 위한 계산들에 사용되는 샘플들뿐만 아니라 템플릿 매칭 반복들의 횟수는 각각의 예측 블록에 대해 변경될 수 있다.
본 개시내용은, 보간 필터링이 분수 샘플 위치들에 적용될 필요가 있다는 것을 고려하여, 리파인먼트 탐색 동작 동안 사용될 수 있는 정수 샘플들에 대한 상한들(영토 경계)을 설정한다. 이는 "템플릿 매칭에 대해 액세스가능한 정수 샘플"이라는 용어에 대응한다. 어느 샘플들이 실제로 액세스되는지는 이하에서 예시될 탐색 공간을 형성하는 방식에 의존한다.
도 7은 코딩 블록(예측 블록) 및 윈도우의 대응하는 샘플들을 도시한다. 도 7에 도시된 샘플들은 참조 픽처 샘플들이고, 여기서의 코딩 블록은 실제로는 모션 벡터가 참조 픽처에서 도출될 현재 프레임에서의 현재 블록에 크기 및 위치에 있어서 대응하는 블록이라는 점에 유의한다. 따라서, 사실상, 도 7의 코딩 블록은 사실상 예측자가 탐색되는 블록에 공동 위치된 블록이다. 그러나, 간략화 이유로, 이 블록은 이하에서 "코딩 블록"으로 지칭된다.
이 예에서, 리파이닝되지 않은 모션 벡터 MV0은 정수 샘플 위치를 가리킨다(초기 모션 벡터는 분수 샘플 위치를 가리킬 수 있고, 정수 샘플 위치는 단지 묘사의 편의를 위해 선택된다). 모션 벡터 리파인먼트 탐색 그래뉼래리티는 1 정수 샘플이고, 이는 시작 포인트가 정수 샘플이기 때문에 정수 샘플 포인트들만이 탐색된다는 것을 의미한다. 이 예에서, 탐색은 점차적으로 개발되는 탐색 공간에서 수행된다. 이는 탐색 공간이 이전에 테스트된 위치들에 대한 비용 함수의 관점에서 최상의 방향에 의존하여 새로운 탐색 위치들을 추가함으로써 진보된 각각의 반복에 있다는 것을 의미한다.
이러한 접근법은 도 8에서 간략화된 방식으로 예시된다. 도 8에서, 초기 모션 벡터가 중심 포인트(810)을 가리킨다. 탐색 공간은 초기 모션 벡터 위치 주위에서 점진적으로 구성된다. 제1 단계에서, 초기 모션 벡터에 의해 가리켜진 위치(810)에서 상단, 하단, 좌측 및 우측에 바로 인접한 4개의 위치뿐만 아니라 초기 모션 벡터에 가리켜진 위치(810)가 테스트된다. 테스트된 5개의 포인트 중에서 최저 비용 함수를 낳는 방향에 기초하여, 테스트될 추가적인 위치들이 탐색 공간에 추가된다. 이 예에서, 최저 비용 함수는 우측 포인트에서 보여질 수 있고, 따라서 탐색 공간은 제2 단계에서 수평 우측 방향으로의 3개의 추가 포인트에 의해 확장되었다. 제2 단계에서, 최저 비용 함수는 (제1 단계의 최저 비용 포인트에 대해) 우측 포인트에서 보여질 수 있어, 수평 우측 방향으로의 3개 포인트에 의해 탐색 공간의 추가 확장을 낳는다. 제3 단계에서, 최저 비용 함수가 단계 2의 최저 비용 포인트에 대해 우측 포인트에서 다시 관찰되고, 수평 우측 방향으로의 3개의 더 많은 포인트에 의해 탐색 공간의 확장을 낳는다. 도 8의 예에 따르면, 상단, 상단 및 우측 방향들에서 그 순서로 3개의 더 많은 단계가 수행된다. 이 예에서, (5개의 탐색 포인트로 이루어진) 다이아몬드형 패턴이 각각의 반복에 대해 사용되고, 각각의 단계에서 누락된 탐색 포인트들을 완료하기 위해 탐색 공간이 확장된다.
탐색 공간 결정의 각각의 반복에서, 탐색 공간은 하나 이상의 정수 샘플 위치에 의해 성장할 수 있다. 이제, 도 7로 돌아가면, 탐색 반복들의 최대 횟수가 4인 예가 있다. 최대 4개의 반복 횟수가 가능하기 때문에, 탐색 공간의 점진적인 개발이 좌측으로 진행하는 경우, 탐색 동작을 수행하기 위해 좌측에 묘사된 모든 샘플들이 메모리로부터 검색될 필요가 있다. 유사하게, 상단에 대한 4개의 샘플 확장이 필요하다. 따라서, 리파이닝된 MV가 어느 방향으로든 이동할 수 있고 하드웨어 구현들이 요구될 수 있는 샘플들 모두가 리파인먼트 탐색의 적용 전에 외부 메모리로부터 페치되는 것을 요구할 수 있기 때문에 탐색 공간은 양쪽 방향(좌-우 및 상단-하단)으로 확장된다. 탐색 공간이 하단 또는 우측 방향으로 개발되는 경우, 코딩 블록(예측 블록)의 크기에 대응하는 템플릿과의 템플릿 매칭이 그 샘플들 중 일부에 액세스할 필요가 있기 때문에 4개의 추가적인 샘플에 의한 확장이 필요하다. 더욱이, 하드웨어 구현들은 통상적으로 불규칙한 형상들을 페치할 수 없기 때문에(직사각형 액세스가 더 실현가능함) 코너 샘플들(예를 들어, 상단-우측)이 또한 메모리로부터 페치되어야 한다.
전술한 반복적인 탐색 공간 개발은 단지 예시적인 것이고, 각각의 반복에서 탐색 공간을 확장하기 위한 포인트들의 규칙들 및 수는 상이할 수 있는데, 즉 상이한 방식으로 지정될 수 있다는 점에 유의한다.
도 8은 또한 전술한 외부 메모리 액세스 규칙들로 인해 발생할 수 있는 시나리오를 도시한다. 외부 메모리로부터 페치되는 샘플들의 수는 계산 단계에서 실제로 사용되는 샘플들보다 훨씬 더 많다. 여기서의 템플릿이 단지 하나의 큰 샘플인 것으로 가정하면(간략화 이유로), 백색 원들은 외부 메모리로부터 검색되는 샘플들을 나타내고 음영 샘플들은 실제로 사용되는 것을 나타낸다. 그러나, 현재 블록이 처리되기 시작할 때, 실제로 필요한 샘플들이 아직 알려져 있지 않기 때문에 외부 메모리에의 액세스 횟수가 낮게 유지되는 경우에 이러한 중복성이 필요하다.
탐색 공간은 또한 상이한 방식으로, 예를 들어, 초기 모션 벡터에 의해 가리켜지는 위치에 위치되는 안정 형상으로서 정의될 수 있다는 점에 유의한다. 형상은 정사각형, 직사각형, 다이아몬드 등과 같은 임의의 형상일 수 있다.
도 9는 탐색 공간이 또한 분수 샘플들을 포함할 수 있는 예를 예시한다. 도 7 및 도 8에서, 모션 벡터 탐색은 정수 샘플들에 대해 수행되어, 액세스 윈도우에 포함된 실선의 더 큰 도트들에 의해 표시되는 위치들을 낳는다. 이제, 하프 펠(half-pel) 해상도(더 작은 실선 도트)를 갖는 샘플에 대해 탐색이 수행되는 경우, 오른속 측에 묘사된 분수 샘플을 생성하기 위해, 보간 필터가 대칭이고 8개의 탭들을 갖는다고 가정하면, 3개 이상의 샘플들의 열들이 마찬가지로 메모리로부터 검색될 필요가 있다. 더욱이, 동일한 것이, 분수 픽셀이 윈도우의 좌측에 위치될 수 있도록 탐색 동작이 대칭적(좌로 및 우로 반복적으로 이동할 수 있음)이라는 사실로 인해 좌측에 적용되어야 한다(3열의 픽셀들에 의한 확장).
그 결과 보간 필터링으로 인해, 메모리로부터 검색되는 데 필요한 샘플들의 수가 더 증가되고, 분수 보간으로 인해 추가된 위치들을 나타내는 점선 원들이 이제 또한 포함되는 파선으로 표시된 바와 같다. 유사하게, 수직 방향에서의 위치들 당 1/2이 또한 탐색되는 것을 허용하는 경우, 메모리로부터 액세스될 샘플들의 윈도우는 수직 방향에서도(도 9의 예에 도시되지 않음), 상단 및 하단 측들에서 연장될 필요가 있다.
메모리 액세스의 윈도우는 예측 블록(코딩 블록)에 대한 모션 벡터 탐색을 수행하기 위해 메모리로부터 검색될 필요가 있는 샘플들 모두를 둘러싸는 직사각형으로서 정의된다. 메모리 액세스의 윈도우는 요구되는 실제 샘플들뿐만 아니라 모션 벡터 탐색 동작 동안 액세스될 가능성을 갖는 나머지 샘플들 모두를 포함한다. 도 9의 예에서, 모션 벡터 탐색은 우측으로 움직였다. 그러나, 그것은 사전에 알려지지 않은 좌측 방향으로 또한 이동되었을 수도 있다. 따라서, 외부 메모리에 여러 번 액세스하지 않기 위해, 메모리 액세스의 윈도우(또는 액세스 윈도우)는 제각기 처리에 의해 액세스가능한 모든 샘플들을 포함한다.
도 10은 모션 벡터 리파인먼트를 위한 메모리 액세스의 윈도우를 도시한다. 중심 포인트(1010)는 리파이닝되지 않은 입력 모션 벡터(비트스트림으로부터 또는 전술한 바와 같은 후보들의 이전에 수행된 템플릿 매칭 또는 테스팅에 의해 획득된 초기 모션 벡터)에 의해 가리켜진 위치이다. 분수 위치들을 탐색 공간에 추가하는 것으로 인해 윈도우 크기의 추가의 증가를 회피하기 위해, 모션 벡터 리파인먼트가 다음의 규칙들에 따라 수행된다:
A) 리파인먼트를 위한 메모리 액세스의 윈도우는 리파이닝되지 않은 초기 모션 벡터 좌표(즉, 초기 모션 벡터에 의해 가리켜지는 위치) 주위에 정의된다. 윈도우는 탐색 공간에서의 템플릿 매칭에 의해 모션 벡터 리파인먼트를 수행하기 위해 메모리로부터 액세스될 필요가 있는 픽셀 샘플들의 최대 수를 식별한다.
1. 이 예에서, 간략화를 위해, 현재 블록의 크기(코딩 블록 크기)는 1x1 샘플이지만, 이것은 더 클 수 있고 통상적으로 더 클 것이다.
2. 메모리 액세스의 윈도우는 도면에 도시된 좌/우로부터의 4개의 샘플 및 상단/하단으로부터의 4개 샘플과 같은 코딩 블록 주위의 확장으로서 정의된다.
B) 보간에 필요한 샘플들이 메모리 액세스의 윈도우 내부에 있는 경우에만, 분수 픽셀 좌표들이 MV 리파인먼트를 위해 액세스된다.
요건 B는 정수 샘플들에 대한 모션 벡터 리파인먼트에 필요한 샘플들에 의해 정의된 액세스 윈도우가 더 확장되지 않도록 보장한다. 이 규칙에 따라 액세스가능한 실제의 분수 샘플들은 보간 필터의 크기 및 형상에 의해 주어진다. 따라서, 도 10에서, 6개의 탭을 갖는 보간 필터를 가정하면, 점선은 분수 샘플들이 위치될 수 있는 영역을 나타낸다. 그러나, 도 12를 참조하여 도시될 것인 바와 같이 추가의 분수 픽셀 위치들이 허용될 수 있다는 것에 유의한다. 특히, 액세스 윈도우를 넘어서 확장을 요구하지 않는 단지 수직 또는 단지 수평 필터링을 요구하는 분수 위치들이 여전히 사용될 수 있다. 따라서, 분수 위치들을 도 10에 도시된 분수 샘플 윈도우로 제한하는 것은 일부 응용에 대해 너무 제한적일 수 있다.
다시 말해서, 실시예에 따르면, 메모리 액세스 윈도우는 정수 샘플들에 대해 수행되는 모션 벡터 리파인먼트에 의해 액세스가능한 모든 샘플들을 포함하고, 정수 샘플들에 대해 수행되는 모션 벡터 리파인먼트에 의해 액세스가능하지 않은 샘플들을 포함하지 않는다. 따라서, 분수 샘플들이 모션 벡터 리파인먼트에 대해 사용되는 경우, 이들은 추가적인 샘플들을 요구하지 않는 방식으로 획득된다.
도 10의 예에서, 이는 미리 정의된 보간 필터 형상 및 크기에 대해, 액세스 윈도우 바깥의 샘플들을 요구하지 않는 분수 샘플들만을 허용함으로써 달성된다. 점선으로 된 분수 샘플 윈도우는 액세스 윈도우 내에서 연장된다. T가 보간 필터 탭들의 수인 경우, 분수 샘플 윈도우 경계는 액세스 윈도우 경계 샘플들로부터의 floor(T/2)-1의 거리(1020)에서 정수 샘플들에 의해 정의된다. 특히, 이 예에서 T=6, T/2=3 이고, 액세스 윈도우 경계 샘플로부터 분수 윈도우 샘플까지의 거리는 T/2-1=2개의 정수 샘플이다.
그러나, 분수 윈도우의 이러한 결정은 단지 예라는 점에 유의한다. 일반적으로, 윈도우는 상이한 형태 및 크기를 가질 수 있다. 수직 및 수평 보간은 상이한 크기들을 갖는 필터들에 의해 행해질 수 있다. 더욱이, 일부 분수 위치들은 일반적으로 분리가능하거나 분리가능하지 않을 수 있는 수직 및 수평 방향 둘 다에서의 필터를 요구할 수 있다.
대안적으로, 보간 필터는 도 10의 점선 윈도우 바깥의 분수 위치들에 대해 변경될 수 있다(예를 들어, 적어도 하나의 방향에서의 탭들의 수가 감소됨). 그러나, 구현 목적을 위해 그리고 보간 품질 이유로 인해, 이러한 솔루션은 덜 매력적일 수 있다.
메모리 액세스를 위한 윈도우는 다양한 방식들로 정의될 수 있다. 도 11은 메모리 액세스 윈도우가 (초기 모션 벡터에 의해 주어지는 코딩 블록의 위치에 대응하는) 코딩 블록의 좌/우 또는 위/아래에서 확장들(EXT)로서 정의되는 예를 예시한다. 확장 양들은 코딩 또는 예측 블록의 크기 및 형상에 의존할 수 있다. 도 11에서, 확장은 각각의 방향(상단, 하단, 좌측, 우측)에서 길이가 4 샘플이다. 그러나, EXT는 또한 (수직 및 수평 방향으로 상이한 크기를 가질 수 있는) 블록 크기 및/또는 탐색 공간 형태 및 크기에 의존하여, 상이한 방향들에 대해 상이한 값들을 취할 수 있다는 점에 유의한다.
예를 들어, 일 예에 따르면, 윈도우는 예측 블록 초기 모션 벡터에 대한 N개의 정수 샘플 열 및 M개의 정수 샘플 행으로서 정의되고, N 및 M 중 적어도 하나는 영이 아닌 정수 값이다(둘 다 정수이지만, 이들 중 하나는 0일 수 있다). 도 11에서, N 및 M이 표시되지만 동일한 크기를 갖는다. 전술한 바와 같이, N과 M은 상이한 크기를 가질 수 있다. N 및 M은 정수들이고, 이들 중 적어도 하나는 0이 아니다. 파라미터들 N과 M 및 템플릿 형태 및 크기를 취하면, 액세스 윈도우의 크기가 결정될 수 있다. 특히, 템플릿이 T1개의 행 및 T2개의 열을 갖는 경우, 메모리 액세스 윈도우의 크기는 (N+T2+N)개의 행 및 (M+T1+M)개의 열로서 계산될 수 있다. 이는 탐색이 좌측 또는 우측으로 N개의 샘플을 갈 수 있어 수평으로 2N개의 샘플이라는 결과를 낳고 그리고 위 또는 아래로 M개의 샘플을 갈 수 있어 수직으로 2M개의 샘플이라는 결과를 낳기 때문이다.
한편, 도 7 및 8을 참조하여 설명된 것과 같은 탐색 공간 구성들의 특정 접근법들에 대해, 메모리 액세스 윈도우는 최대 개수의 리파인먼트 반복들(탐색 공간 구성 반복들) 및 반복 단계 크기(각각의 반복에서 달성가능한 최대 샘플 거리의 관점에서)의 관점에서 정의될 수 있고, 이것은 나중에 좌측, 우측, 위 및 아래에서의 변위의 최대량으로 변환될 수 있다. 따라서, 메모리 액세스 윈도우는 각각의 방향에서의 최대 변위로서 정의된다. 예를 들어, 각각의 반복이 최대 하나의 정수 샘플 위치에서 탐색 공간을 전진시킬 수 있는 4회의 반복은 EXT=4인 결과를 낳는다.
다시 말해서, 이 예에 따르면, 처리 회로는 가장 최근의 반복에서 탐색 공간의 더 최상의 매칭 위치들 중 하나(또는 그 이상)에 의해 주어진 방향으로 반복적으로 확장되는 탐색 공간에서 상기 템플릿과의 템플릿 매칭에 의해 초기 모션 벡터의 리파인먼트를 결정하도록 구성되고, 윈도우는 반복들의 미리 정의된 최대 수에 의해 정의된다.
일반적으로, 본 개시내용은 탐색 공간의 결정의 임의의 특정 형상 또는 형태 또는 종류로 제한되지 않는다는 점에 유의한다. 또 다른 예에서, 탐색 공간은 윈도우의 직사각형 서브 크기를 가져서 서브 윈도우에서의 각각의 분수 샘플의 보간 필터링을 위해 액세스되는 모든 정수 샘플들이 미리 정의된 탭 크기를 갖는 보간 필터에 대해 상기 윈도우 내에 위치되도록 한다. 유사한 예가 도 10을 참조하여 앞에서 이미 논의되었다. 도 10에서, 탐색 공간은 9 x 9 정수 샘플들 및 그들의 중심에서 초기 모션 벡터 위치를 갖는 5 x 5 정수 샘플들에 의해 형성된 영역 내에 위치된 분수 샘플들에 의해 주어진다.
메모리 액세스 윈도우의 정의는 가능하게는 대응하는 시그널링 파라미터를 비트스트림(예를 들어, 파라미터 EXT 또는 파라미터들 N 및 M)에 포함시키기 위해 관련될 수 있다. 그러나, 메모리 액세스 윈도우 크기는 또한 표준에서 정의되거나 또는 (템플릿 크기, 예측 블록 크기, 이미지 해상도 등과 같은) 다른 코딩 파라미터들에 기초하여 도출될 수 있다.
도 12는 상이한 분수 픽셀 위치들을 갖는 예를 예시한다. 이 예에 대해, 템플릿의 크기는 1 x 1 샘플(간략함을 위해)이고 6 탭 보간 필터가 각각의 하프 펠 위치에 대해 사용된다고 가정한다. 이 예에서는, 탐색되는 탐색 좌표들은, 그들이 검사되는 순서, 즉 템플릿 매칭 탐색이 수행되는 순서를 나타내는 숫자 1-6에 의해 표시된다. 위치들 1 및 2는 하프 펠 위치에 있다(이들이 2개의 정수 샘플 위치들 사이의 중간에 위치되는 것을 의미하고, 펠(pel)은 픽셀에 대한 약어이고, 용어 픽셀은 본 출원에서 용어 샘플과 상호교환가능하게 사용된다). 위치들 1 및 2는 보간 필터링에 대한 필요한 확장이 메모리 액세스의 윈도우 내부에 놓여 있기 때문에 검사된다(위치 1로부터의 대각선 좌측상단 상의 3개의 정수 샘플 및 우측하단 상의 3개의 정수 샘플; 위치 2로부터의 우측으로의 3개의 정수 샘플 및 좌측으로의 3개의 정수 샘플). 분수 샘플 포인트(1)는 수평 및 수직 방향 둘 다에서의 확장을 필요로 하며, 이들 둘 다 윈도우 내부에 놓여 있다는 점에 유의한다. 위치 2는 우측으로의 및 좌측으로의 확장만을 요구한다.
위치들 3, 4 및 5는 정수 샘플(정수 펠) 위치들이다. 보간 필터링에 대한 확장이 필요하지 않기 때문에 이들이 탐색될 수 있다. 분수(하프 펠) 샘플(6)은 또한 액세스될 수 있는데, 그 이유는 윈도우 내부에 여전히 있는 수직 방향으로의 확장(제각기, 위 또는 아래로 3개의 정수 위치만큼)만이 필요하기 때문이다. 수평 방향으로의 확장은 필요하지 않다. 여전히, 상기 구현 분수 샘플에서 포인트들은 필요한 보간 확장이 메모리 액세스 윈도우 내에 있는 경우에만 액세스된다.
다시 말해서, 예에 따르면, 보간 필터는 분수 위치가 정수 샘플들의 제각기 수평 또는 수직 라인 상에 위치될 때 K개의 수평 또는 수직 정수 샘플들 중 어느 하나로 평가하는 1차원 필터이다.
2개의 수평으로 또는 2개의 수직으로 인접한 정수 위치들 사이의 라인 상에 위치되는 이러한 1차원 분수 위치들(예를 들어, 도 12의 위치들 2 및 6)은 수평 방향에서만 또는 수직 방향에서만 보간을 위한 확장을 요구하는데, 즉 이는 제각기 수평 또는 수직 보간 필터에 의해서만 필터링될 것이다. 가능한 한 많은 분수 위치들을 사용할 수 있도록 하기 위해서, 도 10의 예에서 허용되는 분수 위치들에 더하여, 도 12에 도시된 위치 6과 같은 추가의 1차원 위치들을 더하는 것이 유리할 수 있다.
다시 말해서, 탐색 공간은 분수 서브 윈도우(도 10의 점선 윈도우 참조) 바깥에 위치된 분수 위치들을 더 포함한다:
- 서브 윈도우의 상단 상에 또는 하단 상에 인접하여 그리고 정수 샘플들의 수평 라인 상에 위치되거나 또는
- 서브 윈도우의 왼손 측 상에 또는 오른손 측 상에 인접하고 그리고 정수 샘플들의 수직 라인 상에 위치됨.
일부 분수 샘플들은 수형 또는 수직인 주어진 방향에서 더 많은 정수 샘플들을 요구할 수 있다는 것을 유의한다. 미리 정의된 필터 크기가 상이하여 제각기 방향들에서의 해당 위치를 발생한다면 이는 그런 경우일 수 있다.
도 13은 액세스될 수 없는 분수 하프 펠 위치들 1 및 2의 예를 예시한다. 이들은 도 10에 도시된 서브 윈도우 바깥에 위치된다. 이 예에 대해, 6 탭 보간 필터가 하프 펠 위치들에 대해 사용된다고 가정한다. 수평 또는 수직 보간 필터링이 윈도우 바깥에 놓인 샘플을 필요로 하기 때문에, 하프 펠 탐색 포인트들 1 및 2는 탐색되도록 허용되지 않는다. 필터 위치 1에 대한 수평 필터 및 필터 위치 2에 대한 수직 필터에 의해 필요한 정수 샘플 위치들은 도 13에서 파선으로 표시된다. 알 수 있는 바와 같이, 파선 원들은 메모리 액세스 윈도우 내에 있지 않은 정수 위치들에 대응한다.
상기 예들에서, 메모리 액세스 윈도우는 모션 벡터 리파인먼트 프로세스 동안 윈도우 외부의 어떠한 샘플도 (심지어 보간 필터링에 대해서도) 액세스되지 않도록 정의된다. 다시 말해서, 메모리 액세스 윈도우는 모션 벡터 리파인먼트 및 보간을 위해 액세스될 필요가 있을 수 있는 샘플들을 둘러싸는 가장 작은 윈도우이다. 또한, 메모리 액세스 윈도우는 정수 샘플 위치들에 기초하여 모션 벡터 리파인먼트에 대해 필요한 샘플들에 따라 설계되었다. 그 후, 추가적인 정수 위치들에 의해 이러한 액세스 윈도우의 추가 확장을 요구하지 않는 분수 위치들만이 허용된다.
상기 예들이 하프 펠 보간을 위해 제공되었다는 것에 유의한다. 그러나, 본 개시내용은 그것으로만 제한되지 않는다. 일반적으로, 1/4, 1/8 등과 같은 임의의 분수 위치가 사용될 수 있는데, 즉 이는 대응하는 보간 필터를 이용하여 보간될 수 있다.
도 6을 참조하여 설명된 처리 회로는 도 1 및 도 2에 도시된 바와 같은 인코더 및/또는 디코더에서 이용될 수 있다.
특히, 인코딩 장치는 비디오 이미지들을 예측 블록들로 분할되는 비디오 이미지들을 비트스트림으로 인코딩하기 위해 제공될 수 있고, 인코딩 장치는: 처리 회로를 포함하는 전술한 예측 블록에 대한 모션 벡터의 결정을 위한 장치; 및 예측 블록과 결정된 모션 벡터에 의해 지정된 위치에서의 예측 블록에 의해 주어지는 예측자 사이의 차이를 인코딩하고, 인코딩된 차이 및 초기 모션 벡터를 포함하는 비트스트림을 생성하기 위한 인코딩 회로를 포함한다.
도 1을 참조하여 전술한 인코더의 추가 유닛들 및 기능들도 처리 회로에서 제공 또는 구현될 수 있다.
대응하여, 예측 블록들로 분할되는 비트스트림 비디오 이미지들로부터 디코딩하기 위한 디코딩 장치가 제공될 수 있고, 디코딩 장치는: 비트스트림으로부터 초기 모션 벡터 및 예측 블록과 리파이닝된 모션 벡터에 의해 지정된 위치에서 예측 블록에 의해 주어진 예측자 사이의 인코딩된 차이를 파싱하기 위한 파싱 유닛; 처리 회로를 포함하는 전술한 예측 블록에 대한 리파이닝된 모션 벡터의 결정을 위한 장치; 및 파싱된 차이와 리파이닝된 모션 벡터에 기초하여 위치에서의 예측 블록에 의해 주어진 예측자의 합으로서 예측 블록을 재구성하기 위한 디코딩 회로를 포함한다. 예를 들어, 예측자는 리파이닝된 모션 벡터의 위치에 의해 직접 주어질 수 있다. 그러나, (필터링, 클리핑, 추가 리파인먼트 등과 같은) 모션 벡터를 추가로 변경할 수 있는 현재 예측 블록의 모션 벡터를 획득하는 추가적인 처리 단계들이 있을 수 있다.
도 2를 참조하여 전술한 디코더의 추가 유닛들 및 기능들도 처리 회로에서 제공 또는 구현될 수 있다.
더욱이, 본 발명의 실시예들은 모션 벡터 리파인먼트를 수행하기 위한 처리 회로를 갖는 장치의 관점에서 설명되었다. 그러나, 본 개시내용은 그것으로만 제한되지 않고, 또한 위에 설명된 처리 회로가 구성되는 수행에 대한 것들에 대응하는 처리 단계들을 포함하는 대응하는 방법들을 제공한다.
특히, 예측 블록에 대한 모션 벡터를 결정하는 방법이 제공되고, 이 방법은: 초기 모션 벡터 및 예측 블록에 대한 템플릿을 획득하는 단계; 탐색 공간에서 상기 템플릿과의 템플릿 매칭에 의해 초기 모션 벡터의 리파인먼트를 결정하는 단계 - 상기 탐색 공간은 초기 모션 벡터에 의해 주어진 위치에 위치되고 하나 이상의 분수 샘플 위치를 포함하고, 탐색 공간에 속하는 분수 샘플 위치들 각각은 단지 윈도우 내의 정수 샘플들을 평가하는 미리 정의된 탭 크기의 필터에 의한 보간 필터링에 의해 획득되고, 상기 윈도우는 상기 탐색 공간에서의 템플릿 매칭을 위해 액세스가능한 정수 샘플들에 의해 형성됨 - 를 포함한다.
탭은 필터 계수들에 대응한다. 탭 크기는 필터 순서에 대응한다. 여기서, 필터는 선형 필터인 것으로 가정된다. 일부 예들에서, 필터는 대칭적일 수 있고, 즉 대칭적 계수들을 가질 수 있다. 그러나, 본 개시내용은 대칭 필터들 또는 선형 필터들 또는 임의의 종류의 필터들로만 제한되지 않는다. 일반적으로, 분수 위치들은 인접한 샘플들에 기초하여 임의의 방식으로 획득될 수 있다.
더욱이, 예측 블록들로 분할된 비디오 이미지들을 비트스트림으로 인코딩하는 방법이 제공되고, 인코딩 방법은 전술된 방법들 중 임의의 방법에 따라 예측 블록에 대한 모션 벡터를 결정하는 단계뿐만 아니라; 예측 블록과 결정된 모션 벡터에 기초한 위치에서의 예측 블록에 의해 주어진 예측자 사이의 차이를 인코딩하고 또한 인코딩된 차이 및 초기 모션 벡터를 포함하는 비트스트림을 생성하는 단계를 포함한다.
인코딩 방법은 도 1의 블록들의 기능들을 참조하여 설명된 단계들을 추가로 포함할 수 있다.
또한, 예측 블록들로 분할된 비트스트림 비디오 이미지들로부터 디코딩하는 방법이 제공되며, 디코딩 방법은: 비트스트림으로부터 초기 모션 벡터 및 예측 블록과 리파이닝된 모션 벡터에 의해 지정된 위치에서 예측 블록에 의해 주어진 예측자 사이의 인코딩된 차이를 파싱하는 단계; 상기 언급된 방법들 중 임의의 방법에 따라 예측 블록에 대한 리파이닝된 모션 벡터를 결정하는 단계; 및 예측 블록을, 파싱된 차이와 리파이닝된 모션 벡터에 의해 지정된 위치에서 예측 블록에 의해 주어진 예측자의 합으로서 재구성하는 단계를 포함한다.
디코딩 방법은 도 2의 블록들의 기능들을 참조하여 설명된 단계들을 추가로 포함할 수 있다.
그러나, 도 1 및 도 2가 본 개시내용을 제한하지 않는다는 것을 유의해야 한다. 이들은 단지 기존의 인코더 및/또는 디코더 내에서의 본 발명의 구현의 비제한적인 예를 제공할 뿐이다.
도 14는 실시예에 따른 방법의 예시적인 구현을 도시한다. 함수 InterpolationFilterLength(C)는 보간 필터링을 적용하기 위해서 수평 방향 및 수직 방향에서 필요한 추가 샘플들의 수를 반환한다. 필요한 샘플들의 수는 다음에 의존하여 변한다:
- 탐색 좌표가 정수 펠, 하프 펠, 또는 1/4 펠 위치인지 여부.
- 보간 필터들의 수평, 수직 또는 둘 모두가 탐색 좌표 샘플을 생성하기 위해 적용될 필요가 있는지 여부.
방법은 단계(1430)에서 시작한다. 특히, 초기 모션 벡터 위치는 테스트될 제1 탐색 공간 위치 C(x, y)이다. 함수 InterpolationFilterLength(C)는 보간 필터링을 적용하기 위해 이 위치에 대해 수평 방향 및 수직 방향에서의 샘플들의 수를 반환한다. C(x, y) 및 InterpolationFilterLength(C(x,y))의 합이 MAX(max_x, max_y)에 의해 정의된 액세스 윈도우 크기를 초과하면, 위치는 탐색 공간의 일부로서 사용되지 않는다. 대신에, 다음 탐색 좌표 C(x, y)가 테스트될 단계(1440)에서 선택된다(예를 들어, x 또는 y 또는 둘 모두는 탐색이 수행되는 순서에 의존하여 증분된다). 단계 (1430)에서 테스트된 위치가 액세스 윈도우를 초과하는 것을 요구하지 않는 경우, 단계(1410)에서, 해당 위치 C(x, y)에 대해 모션 벡터 리파인먼트의 일부로서 템플릿 매칭이 수행된다. 그리고 단계(1420)에서 템플릿 매칭을 위해 남겨진 탐색 공간 위치들이 여전히 있는지 여부가 테스트된다. 그렇지 않다면, 리파인먼트는 종결된다. 그렇다면, 다음 좌표는 단계(1440)에서 선택되고, 단계(1430)의 조건은 해당 새로운 위치에 대해 평가된다. 이들 단계들은 반복된다.
전술한 바와 같이, 허용된 분수 위치들을 정의하기 위해 대안적인 가능성들(도 12에 도시된 바와 같은 추가의 분수 샘플들에 의해 가능하게는 확장되는 도 10의 윈도우와 같은 것)이 존재한다. 그에 기초하여, 단계(1430)에서, 더 간단한 조건이 공식화될 수 있어서 위치 C(x, y)가 허용된 윈도우에 속하는지 여부를 단지 평가한다. 예를 들어, 탐색은, 도 10에 예시된 것과 같이 메모리 액세스 윈도우에 캡슐화된 분수 탐색 윈도우 내의 분수 포인트들 및 정수 탐색 포인트들로 제한된다.
탐색 공간은 윈도우의 직사각형 탐색 서브 윈도우를 포함할 수 있고, 초기 모션 벡터의 리파인먼트는, 탐색 서브 윈도우에서의 각각의 분수 샘플의 보간 필터링을 위해 액세스되는 정수 샘플들이 미리 정의된 탭 크기를 갖는 보간 필터에 대해 상기 윈도우 내에 위치되도록 직사각형 탐색 서브 윈도우에서 상기 템플릿과의 템플릿 매칭에 의해 결정될 수 있다.
보다 정확하게는, 허용된 정수 및 분수 위치들은 초기의 리파이닝되지 않은 모션 벡터에 연관된 포인트로부터의 탐색 포인트의 거리에 기초하여 결정될 수 있다. 구체적으로, 탐색 위치가 허용되는데, 이것은 초기의 리파이닝되지 않은 모션 벡터로부터 x 방향으로 거리 P에 있고 초기의 리파이닝되지 않은 모션 벡터로부터 y 방향으로 거리 R에 있다. 구체적으로, 메모리 액세스 윈도우는 초기의 리파이닝되지 않은 모션 벡터에 의해 가리켜지는 참조 픽처에서의 포인트에 대하여 정의된다. 이는 도 15에 예시되어 있으며, 여기서 메모리 액세스 윈도우의 중심 포인트는 수평 축을 따라 2개의 정수 포인트 사이의 하프 펠 포인트이다. 도면에서, 메모리 액세스 윈도우는 x 방향으로의(N) 그리고 y 방향으로의(M) 확장들로서 정의되며, 여기서 N 및 M은 그 중 적어도 하나가 0이 아닌 정수들이다. 특정 구현에 따르면, 서브 윈도우, 즉 탐색 포인트들에 대한 서브 윈도우(또는 탐색 윈도우)가, 메모리 액세스 윈도우 내에서, 템플릿 매칭에 의해 탐색되도록 허용되는 모든 정수 펠 및 분수 펠 탐색 포인트들을 포함하는, x 방향(P)으로의 및 y 방향(R)으로의 확장들로서 정의된다. 도 15에서, 숫자들 P 및 R은 예시 목적을 위해 1과 동일하다. 따라서, 중심점으로의 탐색 포인트의 거리가 제각기 x 및 y 방향으로 P 또는 R보다 큰 경우, 탐색 포인트는 메모리 액세스 윈도우에 포함되지 않는다. 이 특정 예에서, 분수 탐색 포인트들이 추가적인 샘플들에 대한 액세스를 요구하기 때문에, N 및 M에 의해 정의되는 메모리 액세스 윈도우는 2차 윈도우를 캡슐화하거나 이를 포함한다. P 및 R은 수평 및 수직 방향에서 2개의 정수 샘플 포인트 사이의 거리 단위로 거리를 기술하는 실수들일 수 있다. 예로서 P 및 R이 P=1.5 및 R=1.5로 정의된다면, 초기 중심점에 x 방향으로 거리 1.5에 있는 탐색 포인트(정수 또는 분수)는 모션 벡터 리파인먼트 프로세스에 의해 탐색되는 것이 허용된다. 더욱이, 도 15에서, 좌 우 방향들 및 상단 하단 방향들에서의 확장들은, 제각기, P 및 R과 동일하도록 정의되는데, 이것은 일반적으로는 동일하지 않을 수 있다. 일반적으로 좌측, 상단, 우측 및 하단에 대한 4개의 확장 모두가 독립적으로 정의될 수 있다.
도 16은 메모리 액세스 윈도우에서의 반복 리파인먼트 프로세스의 가능한 구현을 설명한다. 도 16에 따르면, 리파인먼트 탐색은 반복적인 방식으로 적용되는데, 이는 각각의 반복에서 K개까지의 탐색 포인트만이 탐색된다는 것을 의미한다. 먼저, K개의 탐색 포인트가 초기 시작 포인트 주변에서 또는 이전의 반복의 결과로서 선택되는 최상의 탐색 포인트 주변에서 결정된다(1610). 둘째로, K개의 탐색 포인트 모두가 메모리 액세스 윈도우 내부에 있다면(1620), 리파인먼트 탐색 동작은 K개의 탐색 포인트에 적용된다. 그러나, K개의 포인트 중 임의의 하나가 메모리 액세스 윈도우의 바깥에 있다면, 탐색 반복들은 종결된다. 셋째로, 최대 탐색 반복 횟수의 조건이 검사되고(1630), 현재 반복이 최대 허용된 탐색 반복 횟수를 초과하면 반복이 종결된다. 마지막으로, K개의 탐색 포인트에 대해 리파인먼트 탐색이 적용되고(1640), 매칭 비용 함수에 따라 K개의 탐색 포인트 중에서 최상의 포인트가 선택된다(1650). (1640) 및 (1650)의 적용은 반복 횟수를 1만큼 증가시킨다. (1650) 이후에 (1610)에의 입력으로서의 (1650)의 출력인 최상의 포인트를 사용하여 프로세스가 반복된다. 도 16에 따르면, 하나의 반복 동안 탐색되는 탐색 포인트들의 수를 결정하는 수 K는 각각의 반복에 대한 탐색 포인트들의 최대 수를 정의한다. 수 K 및 각각의 반복에 대해 탐색되는 포인트들의 패턴은 사용되는 탐색 전략에 의존하여 상이할 수 있다. 예를 들어, 예시적인 탐색 전략에 따르면, K=5 탐색 포인트(중앙, 좌측, 우측, 아래 및 위)가 제1 반복에서 탐색될 수 있는 반면, K=3 포인트(중앙, 아래-우측, 아래-좌측)가 제2 반복에서 탐색될 수 있다. 수 K는 메모리 액세스 윈도우 내에서의 탐색 포인트들의 총 수보다 작은 수이다.
도 16에 의해 설명된 특정한 구현에 따르면, 반복의 K개의 탐색 포인트 중 단일의 탐색 포인트가 메모리 액세스 윈도우의 바깥에 있다면, 탐색 반복들이 종결된다. 메모리 액세스 윈도우 내부에 있는 K개의 탐색 포인트에서 다른 포인트들이 있을 수 있지만, 반복들이 종결되기 때문에, 메모리 액세스 윈도우 내부의 포인트들은 또한 탐색되지 않는다. 특정 구현의 목적은 탐색 반복들의 횟수를 감소시키고, 동시에 메모리 액세스 윈도우 바깥에 있는 탐색 포인트들이 탐색되지 않는 것을 보장하는 것이다.
(1620)에 따르면, 탐색 포인트가 메모리 액세스 윈도우 내부에 있는지를 검사하는 것은 탐색 포인트의 초기 시작 포인트까지의 거리를 검사함으로써 수행될 수 있다. 따라서, 거리의 x 성분이 N보다 크거나 또는 거리의 y 성분이 M보다 큰 경우, 탐색 포인트는 메모리 액세스 윈도우 바깥에 있는 것으로 결정된다. 일반적으로 N 및 M은 정수이고, 그 중 적어도 하나는 0보다 크다.
초기 모션 벡터의 리파인먼트는 가장 최근의 반복에서 탐색 공간의 더 최상의 매칭되는 위치들 중 하나에 의해 주어진 방향으로 반복적으로 확장되는 탐색 공간에서의 상기 템플릿과의 템플릿 매칭에 의해 결정될 수 있고, 여기서 반복은 가장 최근의 반복의 탐색 공간 내에서의 적어도 하나의 샘플이 탐색 서브 윈도우 바깥에 있을 때 종료된다.
도 17은 도 15에 설명된 바와 같은 탐색 서브 윈도우에 적용가능한 가능한 반복 스킴을 설명하는 흐름도이다. 도 17의 흐름도는 단계(1720)를 제외하고는 도 16에서 설명된 흐름도와 동일하다. 도 17의 단계(1720)에 따르면, K개의 탐색 포인트에 대해 리파인먼트 탐색을 수행하기 위한 결정은 K개의 포인트 모두가 탐색 포인트들에 대한 서브 윈도우 내부에 있는지를 검사함으로써 결정된다. 다시 말해서, 도 15에서 설명된 바와 같이, 초기의 리파이닝되지 않은 모션 벡터에 의해 가리켜지는 중심점에 대한 K개의 탐색 포인트 중 임의의 하나의 것의 거리가 P 또는 R보다 크다면, (1720)에서 설명된 조건은 거짓으로 판명되고 반복들이 종결된다.
전술한 바와 같은 메모리 윈도우 제한을 갖는 모션 벡터 결정은 비디오 신호(모션 픽처)의 인코딩 및/또는 디코딩의 일부로서 구현될 수 있다. 그러나, 모션 벡터 결정은 인코딩/디코딩을 위해 이용되는 것에 제한되는 것이 아니라 움직임 검출, 움직임 분석 등과 같은 이미지 처리에서의 다른 목적을 위해 또한 사용될 수 있다.
모션 벡터 결정은 장치로서 구현될 수 있다. 이러한 장치는 소프트웨어와 하드웨어의 조합일 수 있다. 예를 들어, 모션 벡터 결정은 범용 프로세서, 또는 디지털 신호 프로세서(DSP), 또는 필드 프로그래머블 게이트 어레이(FPGA) 등과 같은 칩에 의해 수행될 수 있다. 그러나, 본 발명은 프로그램가능 하드웨어상에서의 구현에만 제한되지는 않는다. 이는 주문형 집적 회로(ASIC)상에서 또는 상술한 하드웨어 컴포넌트들의 조합에 의해 구현될 수 있다.
모션 벡터 결정은 또한 컴퓨터 판독가능 매체상에 저장된 프로그램 명령어들에 의해 구현될 수 있다. 프로그램은, 실행될 때, 컴퓨터로 하여금 전술한 방법들의 단계들을 수행하도록 야기한다. 컴퓨터 판독가능 매체는 DVD, CD, USB(플래시) 드라이브, 하드 디스크, 네트워크를 통해 이용가능한 서버 저장소 등과 같이 프로그램이 저장되는 임의의 매체일 수 있다.
인코더 및/또는 디코더는 TV 세트, 셋톱 박스, PC, 태블릿, 스마트폰, 또는 그와 유사한 것, 즉, 임의의 레코딩, 코딩, 트랜스코딩, 디코딩 또는 재생 디바이스를 포함하는 다양한 디바이스들에서 구현될 수 있다. 이것은 방법 단계들을 구현하는 소프트웨어 또는 앱일 수 있고, 상술한 것들과 같은 전자 디바이스에 포함된 프로세서상에서 저장/실행될 수 있다.
요약하면, 본 개시내용은 모션 벡터 리파인먼트에 관한 것이다. 제1 단계로서, 초기 모션 벡터 및 예측 블록에 대한 템플릿이 획득된다. 그 후, 초기 모션 벡터의 리파인먼트는 탐색 공간에서의 상기 템플릿과의 템플릿 매칭에 의해 결정된다. 탐색 공간은 초기 모션 벡터에 의해 주어지는 위치에 위치되고 하나 이상의 분수 샘플 위치를 포함하며, 여기서 탐색 공간에 속하는 분수 샘플 위치들 각각은 윈도우 내에서만의 정수 샘플들을 평가하는 미리 정의된 탭 크기의 필터에 의한 보간 필터링에 의해 획득되고, 상기 윈도우는 상기 탐색 공간에서의 템플릿 매칭을 위해 액세스가능한 정수 샘플들에 의해 형성된다.

Claims (23)

  1. 블록에 대한 모션 벡터의 결정을 위한 장치로서, 상기 장치는 처리 회로를 포함하고, 상기 처리 회로는:
    초기 모션 벡터를 획득하고;
    탐색 공간에서 쌍방 매칭(bilateral matching)에 의해 상기 초기 모션 벡터의 리파인먼트를 결정하도록 구성되고,
    상기 탐색 공간은 상기 초기 모션 벡터에 의해 주어진 위치에 위치되고 하나 이상의 분수 샘플 위치를 포함하며, 상기 탐색 공간에 속하는 상기 분수 샘플 위치들 각각은 단지 윈도우 내의 정수 샘플들을 평가하는 미리 정의된 탭 크기의 필터에 의한 보간 필터링에 의해 획득되고, 상기 윈도우는 상기 탐색 공간에서 상기 쌍방 매칭을 위해 액세스가능한 정수 샘플들에 의해 형성되고,
    상기 윈도우는 상기 블록의 좌측 및 우측; 및 상단 및 하단 중 적어도 하나 상에서의 확장으로서 정의되는 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 윈도우는 상기 초기 모션 벡터에 의해 가리켜지는 위치 주변에 정의되고 상기 초기 모션 벡터의 리파인먼트를 수행하기 위해 액세스될 샘플들의 수를 식별하는 장치.
  4. 제1항에 있어서,
    상기 윈도우는 상기 블록 초기 모션 벡터에 대해 N개의 정수 샘플 열 및 M개의 정수 샘플 행으로서 정의되고, N 및 M 중 적어도 하나는 0이 아닌 정수 값들인 장치.
  5. 제1항에 있어서,
    상기 처리 회로는 가장 최근의 반복에서 탐색 공간의 더 최상의 일치하는 위치들 중 하나에 의해 주어진 방향으로 반복적으로 확장되는 상기 탐색 공간에서 쌍방 매칭에 의해 상기 초기 모션 벡터의 리파인먼트를 결정하도록 구성되고,
    상기 윈도우는 상기 반복들의 미리 정의된 최대 횟수에 의해 정의되는 장치.
  6. 제1항에 있어서,
    상기 탐색 공간은 상기 윈도우의 직사각형 서브 윈도우를 포함하여, 상기 서브 윈도우에서의 각각의 분수 샘플의 보간 필터링을 위해 액세스되는 모든 정수 샘플들이 상기 미리 정의된 탭 크기를 갖는 보간 필터에 대해 상기 윈도우 내에 위치되도록 하는 장치.
  7. 제1항에 있어서,
    상기 탐색 공간은 상기 윈도우의 직사각형 탐색 서브 윈도우를 포함하고, 상기 초기 모션 벡터의 리파인먼트는, 상기 탐색 서브 윈도우에서의 각각의 분수 샘플의 보간 필터링을 위해 액세스되는 상기 정수 샘플들이 상기 미리 정의된 탭 크기를 갖는 보간 필터에 대해 상기 윈도우 내에 위치되도록, 상기 직사각형 탐색 서브 윈도우에서의 쌍방 매칭에 의해 결정되는 장치.
  8. 제7항에 있어서,
    상기 처리 회로는, 가장 최근의 반복에서 상기 탐색 공간의 더 최상의 매칭 위치들 중 하나에 의해 주어진 방향으로 반복적으로 확장되는 탐색 공간에서의 쌍방 매칭에 의해 상기 초기 모션 벡터의 리파인먼트를 결정하도록 구성되고, 상기 반복은 상기 가장 최근의 반복의 탐색 공간 내의 적어도 하나의 샘플이 상기 탐색 서브 윈도우 바깥에 있을 때 종료되는 장치.
  9. 제6항에 있어서,
    상기 보간 필터는 상기 분수 위치가 정수 샘플들의 제각기 수평 또는 수직 라인 상에 위치될 때 K개의 수평 또는 수직 정수 샘플 중 어느 하나를 평가하는 1차원 필터인 장치.
  10. 제7항에 있어서,
    상기 탐색 공간은:
    - 상기 서브 윈도우의 상단 상에 또는 하단 상에 인접하여 그리고 상기 정수 샘플들의 수평 라인 상에 위치되거나 또는
    - 상기 서브 윈도우의 왼손 측 상에 또는 오른손 측 상에 인접하고 그리고 상기 정수 샘플들의 수직 라인 상에 위치됨 중 어느 하나에서 상기 서브 윈도우 외부에 위치된 분수 위치들을 추가로 포함하는 장치.
  11. 블록들로 분할된 비디오 이미지들을 비트스트림으로 인코딩하기 위한 인코딩 장치로서:
    제1항에 따른 블록에 대한 모션 벡터의 결정을 위한 장치; 및
    상기 블록과 상기 결정된 모션 벡터에 기초한 위치에서의 블록에 의해 주어지는 예측자 사이의 차이를 인코딩하고 및 상기 인코딩된 차이 및 상기 초기 모션 벡터를 포함하는 비트스트림을 생성하기 위한 인코딩 회로를 포함하는 인코딩 장치.
  12. 블록들로 분할된 비트스트림 비디오 이미지들로부터 디코딩하기 위한 디코딩 장치로서:
    상기 비트스트림으로부터, 초기 모션 벡터 및 리파이닝된 모션 벡터에 의해 지정된 위치에서 블록에 의해 주어진 예측자와 블록 사이의 인코딩된 차이를 파싱하기 위한 파싱 유닛;
    제1항에 따른 상기 블록에 대한 리파이닝된 모션 벡터의 결정을 위한 장치; 및
    상기 파싱된 차이와 상기 리파이닝된 모션 벡터에 의해 지정된 위치에서의 블록에 의해 주어진 예측자의 합으로서 상기 블록을 재구성하기 위한 디코딩 회로를 포함하는 디코딩 장치.
  13. 블록에 대한 모션 벡터의 결정을 위한 방법으로서:
    초기 모션 벡터를 획득하는 단계; 및
    탐색 공간에서 쌍방 매칭에 의해 상기 초기 모션 벡터의 리파인먼트를 결정하는 단계를 포함하고,
    상기 탐색 공간은 상기 초기 모션 벡터에 의해 주어진 위치에 위치되고 하나 이상의 분수 샘플 위치를 포함하며, 상기 탐색 공간에 속하는 상기 분수 샘플 위치들 각각은 단지 윈도우 내의 정수 샘플들을 평가하는 미리 정의된 탭 크기의 필터에 의한 보간 필터링에 의해 획득되고, 상기 윈도우는 상기 탐색 공간에서의 쌍방 매칭을 위해 액세스가능한 정수 샘플들에 의해 형성되고,
    상기 윈도우는 상기 블록의 좌측 및 우측; 및 상단 및 하단 중 적어도 하나 상에서의 확장으로서 정의되는 방법.
  14. 제13항에 있어서,
    상기 윈도우는 상기 블록 초기 모션 벡터에 대해 N개의 정수 샘플 열 및 M개의 정수 샘플 행으로서 정의되고, N 및 M은 0이 아닌 정수 값들인 방법.
  15. 제13항 또는 제14항에 있어서,
    상기 초기 모션 벡터의 리파인먼트는 가장 최근의 반복에서 상기 탐색 공간의 더 최상의 매칭 위치들 중 하나에 의해 주어진 방향으로 반복적으로 확장되는 탐색 공간에서 쌍방 매칭에 의해 결정되고,
    상기 윈도우는 상기 반복들의 미리 정의된 최대 횟수에 의해 정의되는 방법.
  16. 제13항 또는 제14항에 있어서,
    상기 탐색 공간은 상기 윈도우의 직사각형 서브 윈도우를 포함하여 상기 서브 윈도우에서의 각각의 분수 샘플의 보간 필터링을 위해 액세스되는 모든 정수 샘플들이 미리 정의된 탭 크기를 갖는 보간 필터에 대해 상기 윈도우 내에 위치되도록 하는 방법.
  17. 제13항에 있어서,
    상기 탐색 공간은 상기 윈도우의 직사각형 탐색 서브 윈도우를 포함하고, 상기 초기 모션 벡터의 리파인먼트는, 상기 탐색 서브 윈도우에서의 각각의 분수 샘플의 보간 필터링을 위해 액세스되는 상기 정수 샘플들이 미리 정의된 탭 크기를 갖는 보간 필터에 대해 상기 윈도우 내에 위치되도록, 상기 직사각형 탐색 서브 윈도우에서의 쌍방 매칭에 의해 결정되는 방법.
  18. 제17항에 있어서,
    상기 초기 모션 벡터의 리파인먼트는 가장 최근의 반복에서 상기 탐색 공간의 더 최상의 매칭 위치들 중 하나에 의해 주어진 방향으로 반복적으로 확장되는 탐색 공간에서의 쌍방 매칭에 의해 결정되고, 상기 반복은 가장 최근의 반복의 탐색 공간 내에서의 적어도 하나의 샘플이 상기 탐색 서브 윈도우 바깥에 있을 때 종료되는 방법.
  19. 제16항에 있어서,
    상기 보간 필터는 상기 분수 위치가 정수 샘플들의 제각기 수평 또는 수직 라인 상에 위치될 때 K개의 수평 또는 수직 정수 샘플 중 어느 하나를 평가하는 1차원 필터인 방법.
  20. 제19항에 있어서,
    상기 탐색 공간은:
    - 상기 서브 윈도우의 상단 상에 또는 하단 상에 인접하여 그리고 상기 정수 샘플들의 수평 라인 상에 위치되거나 또는
    - 상기 서브 윈도우의 왼손 측 상에 또는 오른손 측 상에 인접하고 그리고 상기 정수 샘플들의 수직 라인 상에 위치됨 중 어느 하나에서 상기 서브 윈도우 외부에 위치된 분수 위치들을 추가로 포함하는 방법.
  21. 블록들로 분할된 비디오 이미지들을 비트스트림으로 인코딩하기 위한 인코딩 방법으로서:
    제13항, 제14항, 제17항 및 제18항 중 어느 한 항에 따른 블록에 대한 모션 벡터를 결정하는 단계; 및
    상기 블록과 상기 결정된 모션 벡터에 기초한 위치에서의 블록에 의해 주어진 예측자 사이의 차이를 인코딩하고 및 상기 인코딩된 차이 및 상기 초기 모션 벡터를 포함하는 비트스트림을 생성하는 단계를 포함하는 인코딩 방법.
  22. 블록들로 분할된 비트스트림 비디오 이미지들로부터 디코딩하기 위한 디코딩 방법으로서:
    상기 비트스트림으로부터 초기 모션 벡터 및 리파이닝된 모션 벡터에 의해 지정된 위치에서 블록에 의해 주어진 예측자와 블록 사이의 인코딩된 차이를 파싱하는 단계;
    제13항, 제14항, 제17항 및 제18항 중 어느 한 항에 따른 상기 블록에 대한 상기 리파이닝된 모션 벡터를 결정하는 단계; 및
    상기 파싱된 차이와 상기 리파이닝된 모션 벡터에 의해 지정된 위치에서 상기 블록에 의해 주어진 예측자의 합으로서 상기 블록을 재구성하는 단계를 포함하는 디코딩 방법.
  23. 프로세서상에서 실행될 때, 상기 프로세서로 하여금 제13항, 제14항, 제17항 및 제18항 중 어느 한 항에 따른 방법을 수행하게 야기하는 명령어들을 저장하는 컴퓨터 판독가능 매체.
KR1020227022266A 2017-10-09 2018-05-30 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우 KR102527169B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237014063A KR102642784B1 (ko) 2017-10-09 2018-05-30 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
EPPCT/EP2017/075710 2017-10-09
PCT/EP2017/075710 WO2019072368A1 (en) 2017-10-09 2017-10-09 LIMITED MEMORY ACCESS WINDOW FOR MOTION VECTOR REFINEMENT
PCT/EP2018/064247 WO2019072425A1 (en) 2017-10-09 2018-05-30 MEMORY ACCESS WINDOW FOR MOTION VECTOR REFINEMENT
KR1020207013232A KR102416348B1 (ko) 2017-10-09 2018-05-30 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207013232A Division KR102416348B1 (ko) 2017-10-09 2018-05-30 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237014063A Division KR102642784B1 (ko) 2017-10-09 2018-05-30 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우

Publications (2)

Publication Number Publication Date
KR20220098284A KR20220098284A (ko) 2022-07-11
KR102527169B1 true KR102527169B1 (ko) 2023-05-02

Family

ID=60080793

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020227022266A KR102527169B1 (ko) 2017-10-09 2018-05-30 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우
KR1020237014063A KR102642784B1 (ko) 2017-10-09 2018-05-30 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우
KR1020247006741A KR20240033137A (ko) 2017-10-09 2018-05-30 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우
KR1020207013232A KR102416348B1 (ko) 2017-10-09 2018-05-30 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020237014063A KR102642784B1 (ko) 2017-10-09 2018-05-30 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우
KR1020247006741A KR20240033137A (ko) 2017-10-09 2018-05-30 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우
KR1020207013232A KR102416348B1 (ko) 2017-10-09 2018-05-30 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우

Country Status (11)

Country Link
US (4) US11405632B2 (ko)
EP (1) EP3688991A1 (ko)
JP (3) JP6980911B2 (ko)
KR (4) KR102527169B1 (ko)
CN (6) CN115174932B (ko)
BR (1) BR112020006969A2 (ko)
CA (1) CA3078816C (ko)
MX (1) MX2020003725A (ko)
RU (1) RU2761511C2 (ko)
SG (1) SG11202003255VA (ko)
WO (2) WO2019072368A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180199057A1 (en) * 2017-01-12 2018-07-12 Mediatek Inc. Method and Apparatus of Candidate Skipping for Predictor Refinement in Video Coding
US10785494B2 (en) 2017-10-11 2020-09-22 Qualcomm Incorporated Low-complexity design for FRUC
US10863190B2 (en) * 2018-06-14 2020-12-08 Tencent America LLC Techniques for memory bandwidth optimization in bi-predicted motion vector refinement
CN110113608B (zh) * 2019-04-30 2022-12-16 上海电力学院 一种基于率失真优化的gpu中视频编码快速搜索方法
CN117319645A (zh) 2019-08-23 2023-12-29 北京字节跳动网络技术有限公司 用于处理视频数据的方法、装置以及计算机可读存储介质
KR20220082839A (ko) 2019-10-23 2022-06-17 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 다중 코딩 도구에 대한 계산
KR20220080107A (ko) 2019-10-23 2022-06-14 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 참조 픽처 리샘플링을 위한 시그널링
WO2021163862A1 (zh) * 2020-02-18 2021-08-26 深圳市大疆创新科技有限公司 视频编码的方法与装置
MX2023013556A (es) * 2021-05-17 2023-11-29 Beijing Dajia Internet Information Tech Co Ltd Modo de particion geometrica con refinamiento del vector de movimiento.
US20230007238A1 (en) * 2021-06-30 2023-01-05 Qualcomm Incorporated Using unrefined motion vectors for performing decoder-side motion vector derivation
US20230093043A1 (en) * 2021-09-22 2023-03-23 Tencent America LLC Method and apparatus for adaptive reordering for reference frames

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160286230A1 (en) * 2015-03-27 2016-09-29 Qualcomm Incorporated Motion information derivation mode determination in video coding

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4322343C2 (de) * 1992-07-06 1996-10-02 Mitsubishi Electric Corp Mittel zum Erfassen eines Bewegungsvektors und Verfahren zum Bestimmen eines Bewegungsvektors
US20110176611A1 (en) * 2010-01-15 2011-07-21 Yu-Wen Huang Methods for decoder-side motion vector derivation
CN102263947B (zh) * 2010-05-27 2016-07-06 香港科技大学 图像运动估计的方法及系统
WO2012083487A1 (en) * 2010-12-21 2012-06-28 Intel Corporation System and method for enhanced dmvd processing
WO2012125178A1 (en) * 2011-03-15 2012-09-20 Intel Corporation Low memory access motion vector derivation
ES2869948T3 (es) * 2011-06-24 2021-10-26 Ntt Docomo Inc Método y aparato para predicción con compensación de movimiento
US10511835B2 (en) * 2015-09-02 2019-12-17 Mediatek Inc. Method and apparatus of decoder side motion derivation for video coding
CN105939475A (zh) * 2016-06-06 2016-09-14 中国矿业大学 一种高质量边信息生成方法
CN117528106A (zh) * 2016-11-28 2024-02-06 英迪股份有限公司 图像编码方法、图像解码方法及用于传送比特流的方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160286230A1 (en) * 2015-03-27 2016-09-29 Qualcomm Incorporated Motion information derivation mode determination in video coding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Jianle Chen, et. al., "Algorithm Description of Joint Exploration Test Model 7(JEM 7)", JVET 7th meeting, 13-21, July, 2017, JVET_G1001.*

Also Published As

Publication number Publication date
JP2023104952A (ja) 2023-07-28
KR20230065353A (ko) 2023-05-11
EP3688991A1 (en) 2020-08-05
US20230239489A1 (en) 2023-07-27
RU2761511C2 (ru) 2021-12-09
CN110651477A (zh) 2020-01-03
RU2020115378A (ru) 2021-11-15
CN115174933A (zh) 2022-10-11
JP2020537424A (ja) 2020-12-17
KR102416348B1 (ko) 2022-07-05
CN115174933B (zh) 2023-12-15
KR102642784B1 (ko) 2024-03-05
US20200236387A1 (en) 2020-07-23
MX2020003725A (es) 2020-10-07
JP6980911B2 (ja) 2021-12-15
KR20200058560A (ko) 2020-05-27
KR20220098284A (ko) 2022-07-11
JP7279140B2 (ja) 2023-05-22
KR20240033137A (ko) 2024-03-12
CA3078816A1 (en) 2019-04-18
US11805270B2 (en) 2023-10-31
BR112020006969A2 (pt) 2020-10-06
US20240098294A1 (en) 2024-03-21
CN115243051B (zh) 2023-12-15
CN115243051A (zh) 2022-10-25
CN110651477B (zh) 2022-06-10
US11582477B2 (en) 2023-02-14
CN115174932B (zh) 2024-01-02
SG11202003255VA (en) 2020-05-28
CN115174932A (zh) 2022-10-11
CN115174934A (zh) 2022-10-11
RU2020115378A3 (ko) 2021-11-15
CN115243050A (zh) 2022-10-25
US11405632B2 (en) 2022-08-02
US20220400282A1 (en) 2022-12-15
CN115243050B (zh) 2023-12-15
JP2022027770A (ja) 2022-02-14
CA3078816C (en) 2023-09-19
WO2019072425A1 (en) 2019-04-18
WO2019072368A1 (en) 2019-04-18

Similar Documents

Publication Publication Date Title
KR102527169B1 (ko) 모션 벡터 리파인먼트를 위한 제한된 메모리 액세스 윈도우
KR102606778B1 (ko) 모션 벡터 리파인먼트 및 모션 보상을 위한 메모리 액세스 윈도우 및 패딩
US11153595B2 (en) Memory access window and padding for motion vector refinement
US11159820B2 (en) Motion vector refinement of a motion vector pointing to a fractional sample position
US11245916B2 (en) Memory access window for sub prediction block motion vector derivation

Legal Events

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