KR20240005123A - 인코딩 및 디코딩 방법 및 장치, 인코딩단 기기 및 디코딩단 기기 - Google Patents

인코딩 및 디코딩 방법 및 장치, 인코딩단 기기 및 디코딩단 기기 Download PDF

Info

Publication number
KR20240005123A
KR20240005123A KR1020237043887A KR20237043887A KR20240005123A KR 20240005123 A KR20240005123 A KR 20240005123A KR 1020237043887 A KR1020237043887 A KR 1020237043887A KR 20237043887 A KR20237043887 A KR 20237043887A KR 20240005123 A KR20240005123 A KR 20240005123A
Authority
KR
South Korea
Prior art keywords
motion vector
block
sub
value
current block
Prior art date
Application number
KR1020237043887A
Other languages
English (en)
Other versions
KR102664248B1 (ko
Inventor
팡둥 천
Original Assignee
항조우 힉비젼 디지털 테크놀로지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 항조우 힉비젼 디지털 테크놀로지 컴퍼니 리미티드 filed Critical 항조우 힉비젼 디지털 테크놀로지 컴퍼니 리미티드
Publication of KR20240005123A publication Critical patent/KR20240005123A/ko
Application granted granted Critical
Publication of KR102664248B1 publication Critical patent/KR102664248B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/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/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
    • 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/182Methods 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 a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • 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/557Motion estimation characterised by stopping computation or iteration based on certain criteria, e.g. error magnitude being too large or early exit
    • 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/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)

Abstract

본 발명은 인코딩 및 디코딩 방법 및 장치, 인코딩단 기기 및 디코딩단 기기를 제공한다. 상기 방법은, 현재 블록의 특징 정보가 특정 조건을 만족하면, 상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제2 참조 블록을 결정하는 단계; 상기 제1 참조 블록의 제1 픽셀값 및 상기 제2 참조 블록의 제2 픽셀값에 따라, 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 현재 블록에 대해 인코딩 또는 디코딩을 수행하는 단계를 포함한다.

Description

인코딩 및 디코딩 방법 및 장치, 인코딩단 기기 및 디코딩단 기기{ENCODING AND DECODING METHOD AND DEVICE, ENCODER SIDE APPARATUS AND DECODER SIDE APPARATUS}
본 발명은 인코딩 및 디코딩 기술에 관한 것으로, 특히 인코딩 및 디코딩 방법 및 장치, 인코딩단 기기 및 디코딩단 기기에 관한 것이다.
공간을 절약하는 목적에 도달하기 위해, 비디오 이미지는 모두 인코딩을 거친 후 송신되고, 완전한 비디오 인코딩 방법은 예측, 변환, 양자화, 엔트로피 인코딩, 필터링 등 과정을 포함할 수 있다. 여기서, 예측 인코딩은 인트라 인코딩 및 인터 인코딩을 포함할 수 있고, 인터 인코딩은 비디오 시간 영역의 상관성을 이용하여, 이미 인코딩된 이미지에 가까운 픽셀을 사용하여 현재 이미지의 픽셀을 예측하여, 비디오 시간 영역 중복을 효과적으로 제거하는 목적을 달성시킨다.
인터 인코딩에 있어서, 움직임 벡터(Motion Vector, MV)를 사용하여 현재 프레임 비디오 이미지의 현재 블록과 참조 프레임 비디오 이미지의 참조 블록 사이의 상대 변위를 가리킬 수 있다. 예를 들면, 현재 프레임의 비디오 이미지 A와 참조 프레임의 비디오 이미지 B에 매우 강한 시간 영역 상관성이 존재하고, 비디오 이미지 A의 이미지 블록 A1(현재 블록)을 송신해야 할 경우, 비디오 이미지 B에서 움직임 검색하여, 이미지 블록 A1과 가장 매칭되는 이미지 블록 B1(즉 참조 블록)을 찾을 수 있으며, 이미지 블록 A1과 이미지 블록 B1 사이의 상대 변위를 결정하고, 상기 상대 변위는 즉 이미지 블록 A1의 움직임 벡터이다.
인코딩단은 이미지 블록 A1을 디코딩단에 송신하는 것이 아니라, 움직임 벡터를 디코딩단에 송신할 수 있다. 디코딩단은 움직임 벡터 및 이미지 블록 B1에 따라 이미지 블록 A1을 얻을 수 있다. 분명한 것은, 움직임 벡터가 차지하는 비트 수가 이미지 블록 A1이 차지하는 비트 수에 비해 작으므로, 상기 방식은 대량의 비트를 절약할 수 있다.
기존의 방식에서, 현재 블록이 단방향 블록일 경우, 현재 블록의 움직임 벡터(후속에서 원본 움직임 벡터로 지칭됨)를 획득한 후, 원본 움직임 벡터를 조정하고, 조정된 움직임 벡터를 기반으로 인코딩/디코딩을 수행함으로써, 인코딩 성능을 향상시킬 수 있다. 그러나, 현재 블록이 양방향 블록일 경우, 현재 블록의 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터를 획득한 후, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터에 대한 조정 방법에 대해서는 아직까지 합리적인 해결 수단이 없다. 다시 말해서, 양방향 블록의 장면의 경우, 예측 품질이 높지 않고, 예측 오류가 발생하는 등 문재가 존재할 수 있어, 인코딩 성능의 저하를 초래한다.
본 발명은 인코딩 성능을 향상시킬 수 있는 인코딩 및 디코딩 방법, 장치 및 이의 기기를 제공한다.
본 발명은 인코딩 및 디코딩 방법을 제공하는 바, 상기 방법은, 현재 블록의 특징 정보가 특정 조건을 만족하면, 상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제2 참조 블록을 결정하는 단계; 상기 제1 참조 블록의 제1 픽셀값 및 상기 제2 참조 블록의 제2 픽셀값에 따라, 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 현재 블록에 대해 인코딩 또는 디코딩을 수행하는 단계를 포함한다.
본 발명은 인코딩 및 디코딩 장치를 제공하는 바, 상기 장치는, 현재 블록의 특징 정보가 특정 조건을 만족하면, 상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제2 참조 블록을 결정하는 결정 모듈; 상기 제1 참조 블록의 제1 픽셀값 및 상기 제2 참조 블록의 제2 픽셀값에 따라, 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 처리 모듈; 및 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 현재 블록에 대해 인코딩 또는 디코딩을 수행하는 인코딩 및 디코딩 모듈을 포함한다.
본 발명은 인코딩단 기기를 제공하는 바, 상기 인코딩단 기기는 프로세서 및 기계 판독 가능 저장 매체를 포함하되, 여기서 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령이 저장되고; 상기 프로세서는 기계 실행 가능 명령을 실행하여, 현재 블록의 특징 정보가 특정 조건을 만족하면, 상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제2 참조 블록을 결정하는 단계; 상기 제1 참조 블록의 제1 픽셀값 및 상기 제2 참조 블록의 제2 픽셀값에 따라, 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 현재 블록에 대해 인코딩을 수행하는 단계를 수행한다.
본 발명은 디코딩단 기기를 제공하는 바, 상기 디코딩단 기기는 프로세서 및 기계 판독 가능 저장 매체를 포함하되, 여기서 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령이 저장되고; 상기 프로세서는 기계 실행 가능 명령을 실행하여, 현재 블록의 특징 정보가 특정 조건을 만족하면, 상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제2 참조 블록을 결정하는 단계; 상기 제1 참조 블록의 제1 픽셀값 및 상기 제2 참조 블록의 제2 픽셀값에 따라, 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 현재 블록에 대해 디코딩을 수행하는 단계를 수행한다.
개시되는 일 실시예에 따른 디코딩 방법는,
현재 블록에서 움직임 벡터 조정 모드를 활성화할 경우, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 결정하고, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 기반으로, 상기 현재 블록의 예측값을 결정하되, 현재 블록에 포함된 각각의 서브 블록에 대해, 상기 서브 블록의 예측값을 결정하는 단계는,
제1 원본 움직임 벡터 및 제1 참조 프레임, 제2 원본 움직임 벡터 및 제2 참조 프레임을 포함하는 상기 현재 블록의 움직임 정보를 획득하는 단계;
상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제2 참조 블록을 결정하며; 제1 참조 블록의 픽셀값 및 제2 참조 블록의 픽셀값에 따라, 최적 움직임 벡터를 획득하는 단계 - 상기 최적 움직임 벡터를 획득하는 단계는, 초기 움직임 벡터를 중심으로, 상기 초기 움직임 벡터를 포함하는 상기 초기 움직임 벡터 주변의 움직임 벡터로부터 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 결정하는 단계를 포함하되, 상기 초기 움직임 벡터는 상기 제1 원본 움직임 벡터 또는 상기 제2 원본 움직임 벡터이고; 상기 제1 참조 블록의 픽셀값 및 상기 제2 참조 블록의 픽셀값에 따라, 상기 초기 움직임 벡터에 대응되는 비용 값, 각각의 후보 움직임 벡터에 대응되는 비용 값을 획득하며; 상기 초기 움직임 벡터에 대응되는 비용 값 및 상기 각각의 후보 움직임 벡터에 대응되는 비용 값에 따라, 상기 초기 움직임 벡터 및 각각의 후보 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용함 -;
상기 최적 움직임 벡터에 따라 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및
상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 단계 - 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 상기 단계는, 상기 제1 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제3 참조 블록을 결정하고, 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제4 참조 블록을 결정하며; 상기 제3 참조 블록의 픽셀값 및 상기 제4 참조 블록의 픽셀값에 따라 가중치를 부여하여, 상기 서브 블록의 예측값을 획득하는 단계를 포함함 - 를 포함한다.
초기 움직임 벡터를 중심으로, 상기 초기 움직임 벡터를 포함하는 상기 초기 움직임 벡터 주변의 움직임 벡터로부터 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 결정하는 단계는, 초기 움직임 벡터를 중심으로, 검색 범위를 2로 하여, 상기 초기 움직임 벡터를 포함하는 25개의 움직임 벡터를 검색하며, 상기 25개의 움직임 벡터를 후보 움직임 벡터로 결정하는 단계를 포함하되; 상기 25개의 움직임 벡터의 검색 순서는 순차적으로, {Mv(-2,-2),Mv(-1,-2),Mv(0,-2),Mv(1,-2),Mv(2,-2),Mv(-2,-1),Mv(-1,-1),Mv(0,-1),Mv(1,-1),Mv(2,-1),Mv(-2, 0),Mv(-1, 0),Mv(0, 0),Mv(1, 0),Mv(2, 0),Mv(-2, 1),Mv(-1, 1),Mv(0, 1),Mv(1, 1),Mv(2, 1),Mv(-2, 2),Mv(-1, 2),Mv(0, 2),Mv(1, 2),Mv(2, 2)} 일 수 있다 .
상기 제1 참조 블록의 픽셀값 및 상기 제2 참조 블록의 픽셀값에 따라, 초기 움직임 벡터 및 후보 움직임 벡터에 대응되는 비용 값을 획득하는 단계에서,
후보 움직임 벡터에 대응되는 비용 값을 획득하는 단계는, 상기 제1 참조 블록을 기반으로, 상기 후보 움직임 벡터에 대응되는 제1 서브 참조 블록을 결정하고, 상기 제2 참조 블록을 기반으로, 상기 후보 움직임 벡터에 대응되는 제2 서브 참조 블록을 결정하며; 수직 2배 다운 샘플링 방법으로 상기 제1 서브 참조 블록과 상기 제2 서브 참조 블록 중 각 픽셀점 샘플링 값의 절대치 오차 합을 계산하고; 얻은 상기 절대치 오차 합에 따라, 상기 후보 움직임 벡터에 대응되는 비용 값을 결정하는 단계를 포함하고;
초기 움직임 벡터에 대응되는 비용 값을 획득하는 단계는, 상기 제1 참조 블록을 기반으로, 상기 초기 움직임 벡터에 대응되는 제1 서브 참조 블록을 결정하며, 상기 제2 참조 블록을 기반으로, 상기 초기 움직임 벡터에 대응되는 제2 서브 참조 블록을 결정하고, 수직 2배 다운 샘플링 방법으로 상기 제1 서브 참조 블록과 상기 서브 참조 블록 중 각 픽셀점 샘플링 값의 절대치 오차 합을 계산하며, 얻은 상기 절대치 오차 합에 따라, 상기 후보 움직임 벡터에 대응되는 비용 값을 결정하는 단계를 포함할 수 있다.
상기 최적 움직임 벡터에 따라 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계는,
상기 최적 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값을 결정하고; 상기 제1 정수 픽셀 움직임 벡터 조정값에 따라, 상기 제1 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터를 획득하며; 상기 제2 정수 픽셀 움직임 벡터 조정값에 따라, 상기 제2 원본 움직임 벡터를 조정하여, 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계를 포함할 수 있다.
상기 최적 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값을 결정하는 단계는,
상기 최적 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값을 결정하는 단계 - 상기 제1 정수 픽셀 움직임 벡터 조정값은 상기 최적 움직임 벡터와 상기 초기 움직임 벡터의 차와 같음 - ; 및
상기 제1 정수 픽셀 움직임 벡터 조정값에 따라, 제2 정수 픽셀 움직임 벡터 조정값을 결저하는 단계 - 상기 제2 정수 픽셀 움직임 벡터 조정값과 상기 제1 정수 픽셀 움직임 벡터 조정값은 서로 반수임 - 를 포함할 수 있다.
상기 제1 정수 픽셀 움직임 벡터 조정값에 따라, 상기 제1 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터를 획득하고; 상기 제2 정수 픽셀 움직임 벡터 조정값에 따라, 상기 제2 원본 움직임 벡터를 조정하여, 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계는,
상기 제1 타깃 움직임 벡터가 상기 제1 원본 움직임 벡터와 상기 제1 정수 픽셀 움직임 벡터 조정값의 합과 같고; 상기 제2 타깃 움직임 벡터가 상기 제2 원본 움직임 벡터와 상기 제2 정수 픽셀 움직임 벡터 조정값의 합과 같은 단계를 포함할 수 있다.
상기 최적 움직임 벡터에 따라 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계는,
상기 최적 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값, 제1 분수 픽셀 움직임 벡터 조정값, 제2 정수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값을 결정하고; 제1 정수 픽셀 움직임 벡터 조정값 및 제1 분수 픽셀 움직임 벡터 조정값에 따라, 제1 원본 움직임 벡터를 조정하여, 서브 블록의 제1 타깃 움직임 벡터를 획득하며; 제2 정수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값에 따라, 제2 원본 움직임 벡터를 조정하여, 서브 블록의 제2 타깃 움직임 벡터를 획득하는 단계를 포함할 수 있다.
상기 최적 움직임 벡터에 따라 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계는,
상기 최적 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값 및 제1 분수 픽셀 움직임 벡터 조정값을 결정하고; 상기 제1 정수 픽셀 움직임 벡터 조정값 및 상기 제1 분수 픽셀 움직임 벡터 조정값에 따라 최적 오프셋 움직임 벡터를 획득하는 단계; 및
상기 최적 오프셋 움직임 벡터를 기반으로 상기 제1 원본 움직임 벡터를 조정하여, 상기 제1 타깃 움직임 벡터를 획득하고; 상기 최적 오프셋 움직임 벡터의 반수를 기반으로 상기 제2 원본 움직임 벡터를 조정하여, 상기 제2 타깃 움직임 벡터를 획득하는 단계를 포함할 수 있다.
상기 최적 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값 및 제1 분수 픽셀 움직임 벡터 조정값을 결정하는 단계는,
상기 최적 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값을 결정하되, 상기 제1 정수 픽셀 움직임 벡터 조정값은 상기 최적 움직임 벡터와 상기 초기 움직임 벡터의 차와 같은 단계; 및
상기 최적 움직임 벡터에 대응되는 비용 값, 상기 최적 움직임 벡터에 대응되는 에지 움직임 벡터에 대응되는 비용 값에 따라, 제1 분수 픽셀 움직임 벡터 조정값을 결정하는 단계를 포함할 수 있다.
상기 최적 움직임 벡터에 대응되는 비용 값, 상기 최적 움직임 벡터에 대응되는 에지 움직임 벡터에 대응되는 비용 값에 따라, 제1 분수 픽셀 움직임 벡터 조정값을 결정하는 상기 단계는,
상기 최적 움직임 벡터를 중심으로 하는 5개의 정수 픽셀 움직임 벡터의 비용 값을 순차적으로 결정하는 단계를 포함하되; 상기 5개의 정수 픽셀 움직임 벡터는 상기 최적 움직임 벡터를 중심으로 각각 수평 좌측으로, 수평 우측으로, 수직 위로, 수직 아래로 오프셋하여 얻은 5개의 에지 움직임 벡터이고; 상기 5개의 정수 픽셀 움직임 벡터의 비용 값에 따라, 상기 제1 분수 픽셀 움직임 벡터 조정값을 결정할 수 있다.
제1 타깃 움직임 벡터는 제1 원본 움직임 벡터, 제1 정수 픽셀 움직임 벡터 조정값 및 제1 분수 픽셀 움직임 벡터 조정값의 합과 같고; 제2 타깃 움직임 벡터는 제2 원본 움직임 벡터, 제2 정수 픽셀 움직임 벡터 조정값과 제2 분수 픽셀 움직임 벡터 조정값의 합과 같으며; 상기 제2 정수 픽셀 움직임 벡터 조정값과 상기 제1 정수 픽셀 움직임 벡터 조정값은 서로 반수이고; 상기 제2 분수 픽셀 움직임 벡터 조정값과 상기 제1 분수 픽셀 움직임 벡터 조정값은 서로 반수일 수 있다.
상기 최적 움직임 벡터는 상기 초기 움직임 벡터 및 각각의 후보 움직임 벡터로부터 선택된 비용 값이 가장 작은 하나의 움직임 벡터일 수 있다.
제1 정수 픽셀 움직임 벡터 조정값의 수직 및/또는 수평 방향의 절대치가 기설정 값과 같을 경우, 상기 제1 정수 픽셀 움직임 벡터 조정값에 따라, 상기 제1 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터를 획득할 수 있다.
제1 정수 픽셀 움직임 벡터 조정값의 수직 및/또는 수평 방향의 절대치가 기설정 값과 같지 않을 경우, 상기 제1 정수 픽셀 움직임 벡터 조정값 및 상기 제1 분수 픽셀 움직임 벡터 조정값에 따라, 상기 제1 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터를 획득할 수 있다.
초기 움직임 벡터에 대응되는 비용 값이 기설정 임계값보다 크거나 같을 경우, 상기 초기 움직임 벡터에 대응되는 비용 값 및 상기 각각의 후보 움직임 벡터에 대응되는 비용 값에 따라, 상기 초기 움직임 벡터 및 각각의 후보 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용하는 상기 단계를 수행하고, 그렇지 않으면 수행하지 않으며, 상기 기설정 임계값은 상기 서브 블록의 폭 및 높이에 따라 결정된 것일 수 있다.
상기 현재 블록이 하나의 서브 블록을 포함할 경우, 상기 서브 블록은 현재 블록 자체일 수 있다.
상기 제1 참조 블록 및 상기 제2 참조 블록은 밝기 성분을 기반으로 결정된 밝기 예측 블록일 수 있다.
상기 제1 참조 블록의 픽셀값 및 상기 제2 참조 블록의 픽셀값은 모두 이중선형 보간법으로 계산하여 획득된 것일 수 있다.
현재 블록의 제1 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제1 참조 블록을 결정하고, 현재 블록의 제2 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제2 참조 블록을 결정하는 단계는,
상기 제1 원본 움직임 벡터 및 상기 현재 블록의 제1 참조 프레임에 따라, 이중선형 보간 방식으로 상기 제1 참조 블록을 결정하는 단계; 및
상기 제2 원본 움직임 벡터 및 현재 블록의 제2 참조 프레임에 따라, 이중선형 보간 방식으로 상기 제2 참조 블록을 결정하는 단계를 포함하되;
상기 제1 참조 블록의 크기는 상기 제2 참조 블록의 크기와 동일하고, 상기 제1 참조 블록의 폭 값은 상기 서브 블록의 폭 값과 검색 범위를 기반으로 결정되며, 상기 제1 참조 블록의 높이값은 상기 서브 블록의 높이값과 검색 범위를 기반으로 결정된다.
현재 블록의 제1 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제1 참조 블록을 결정하고, 현재 블록의 제2 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제2 참조 블록을 결정하는 단계는,
상기 제1 원본 움직임 벡터에 따라, 상기 현재 블록의 제1 참조 프레임으로부터 제1 정수 픽셀 블록을 획득하고, 상기 제1 정수 픽셀 블록에 대해 이중선형 보간을 수행하여 상기 제1 참조 블록을 획득하는 단계; 및
상기 제2 원본 움직임 벡터에 따라, 상기 현재 블록의 제2 참조 프레임으로부터 제2 정수 픽셀 블록을 획득하고, 상기 제2 정수 픽셀 블록에 대해 이중선형 보간을 수행하여 상기 제2 참조 블록을 획득하는 단계를 포함하되;
W가 상기 서브 블록의 폭이고, H가 상기 서브 블록의 높이이며, SR이 검색 범위이면, 상기 제1 참조 블록 및 상기 제2 참조 블록의 폭 값은 모두 W+2*SR이고, 상기 제1 참조 블록 및 상기 제2 참조 블록의 높이값은 모두 H+2*SR이며, SR의 값은 2일 수 있다.
상기 제3 참조 블록의 픽셀값 및 상기 제4 참조 블록의 픽셀값에 대해 가중치를 부여할 때의 가중치는 동일할 수 있다.
상기 제3 참조 블록의 픽셀값 및 상기 제4 참조 블록의 픽셀값은 8 탭 보간 필터를 기반으로 보간하여 획득된 것일 수 있다.
상기 제1 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제3 참조 블록을 결정하고, 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제4 참조 블록을 결정하는 단계는,
상기 제1 타깃 움직임 벡터를 기반으로, 상기 현재 블록의 제1 참조 프레임으로부터 상기 서브 블록에 대응되는 제5 참조 블록을 결정하고, 8 탭 보간 필터를 기반으로 상기 제5 참조 블록 중의 픽셀값을 보간하여 상기 제3 참조 블록을 획득하며; 상기 제2 타깃 움직임 벡터를 기반으로, 상기 제2 참조 프레임으로부터 상기 서브 블록에 대응되는 제6 참조 블록을 결정하고, 8 탭 보간 필터를 기반으로 상기 제6 참조 블록 중의 픽셀값을 보간하여 상기 제4 참조 블록을 획득하는 단계를 포함하되; 상기 제5 참조 블록의 크기는 상기 서브 블록의 크기보다 크고, 상기 제6 참조 블록의 크기는 상기 서브 블록의 크기보다 크며, 상기 크기는 폭 및 높이를 포함할 수 있다.
상기 서브 블록은 밝기 성분을 포함하고, 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대해 가중 움직임 보상을 수행하여, 상기 서브 블록의 가중 예측값을 획득하는 단계는,
상기 서브 블록의 밝기 성분에 대해, 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대해 가중 움직임 보상을 수행하여, 상기 서브 블록의 밝기 가중 예측값을 획득하는 단계를 포함할 수 있다.
상기 서브 블록은 크로미넌스 성분을 포함하고, 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대해 가중 움직임 보상을 수행하여, 상기 서브 블록의 가중 예측값을 획득하는 단계는,
상기 서브 블록의 크로미넌스 성분에 대해, 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대해 가중 움직임 보상을 수행하여, 상기 서브 블록의 크로미넌스 가중 예측값을 획득하는 단계를 포함할 수 있다.
현재 블록이 움직임 벡터 조정 모드를 활성화할 경우, 상기 현재 블록의 특징 정보는 특정 조건을 만족하되, 상기 특징 정보는 현재 블록에 대응되는 움직임 정보 예측 모드, 현재 블록에 대응되는 움직임 정보 속성 및 현재 블록의 크기 정보를 포함하고; 상기 현재 블록이 움직임 벡터 조정 모드를 활성화할 경우, 상기 현재 블록이 만족하는 조건은, 현재 블록이 움직임 정보 차이값을 인코딩하는 융합 모드 MMVD 모드를 사용하지 않고, 현재 블록이 merge 모드를 사용하며, 현재 블록의 크기는 한정된 범위 내에 있고, 현재 블록의 움직임 정보는 2개의 상이한 방향의 움직임 정보를 포함하며 2개의 상이한 방향의 움직임 정보에 대응되는 2개의 참조 프레임과 현재 프레임의 거리는 동일한 조건을 적어도 포함할 수 있다.
상기 방법은,
현재 블록이 하기 조건 중 어느 하나의 조건에 부합되지 않으면, 현재 블록은 움직임 벡터 조정 모드를 활성화하지 않는 단계를 더 포함하되, 상기 조건은, 현재 블록이 움직임 정보 차이값을 인코딩하는 융합 모드 MMVD 모드를 사용하지 않고, 현재 블록이 merge 모드를 사용하며, 현재 블록의 크기는 한정된 범위 내에 있고, 현재 블록의 움직임 정보는 2개의 상이한 방향의 움직임 정보를 포함하며 2개의 상이한 방향의 움직임 정보에 대응되는 2개의 참조 프레임과 현재 프레임의 거리는 동일한 조건일 수 있다.
상기 현재 블록이 위치한 현재 프레임과 상기 제1 참조 프레임 사이의 거리 및 상기 현재 블록이 위치한 현재 프레임과 상기 제2 참조 프레임 사이의 거리는 동일할 수 있다.
상기 현재 블록이 하나의 서브 블록을 포함할 경우, 상기 서브 블록은 현재 블록 자체이고, 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터는 상기 현재 블록의 2개의 상이한 방향의 원본 움직임 벡터일 수 있다.
상기 현재 블록이 복수의 서브 블록을 포함할 경우, 상기 복수의 서브 블록 중의 각각의 서브 블록, 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터는 현재 블록의 2개의 상이한 방향의 원본 움직임 벡터를 공용할 수 있다.
개시되는 다른 실시예에 따른 인코딩 방법는현재 블록에서 움직임 벡터 조정 모드를 활성화할 경우, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 결정하고, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 기반으로, 상기 현재 블록의 예측값을 결정하되, 현재 블록에 포함된 각각의 서브 블록에 대해, 상기 서브 블록의 예측값을 결정하는 단계는,
제1 원본 움직임 벡터 및 제1 참조 프레임, 제2 원본 움직임 벡터 및 제2 참조 프레임을 포함하는 상기 현재 블록의 움직임 정보를 획득하는 단계;
상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제2 참조 블록을 결정하며; 제1 참조 블록의 픽셀값 및 제2 참조 블록의 픽셀값에 따라, 최적 움직임 벡터를 획득하는 단계 - 상기 최적 움직임 벡터를 획득하는 단계는, 초기 움직임 벡터를 중심으로, 상기 초기 움직임 벡터를 포함하는 상기 초기 움직임 벡터 주변의 움직임 벡터로부터 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 결정하는 단계를 포함하되, 상기 초기 움직임 벡터는 상기 제1 원본 움직임 벡터 또는 상기 제2 원본 움직임 벡터이고; 상기 제1 참조 블록의 픽셀값 및 상기 제2 참조 블록의 픽셀값에 따라, 상기 초기 움직임 벡터에 대응되는 비용 값, 각각의 후보 움직임 벡터에 대응되는 비용 값을 획득하며; 상기 초기 움직임 벡터에 대응되는 비용 값 및 상기 각각의 후보 움직임 벡터에 대응되는 비용 값에 따라, 상기 초기 움직임 벡터 및 각각의 후보 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용함 -;
상기 최적 움직임 벡터에 따라 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및
상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 단계 - 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 상기 단계는, 상기 제1 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제3 참조 블록을 결정하고, 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제4 참조 블록을 결정하며; 상기 제3 참조 블록의 픽셀값 및 상기 제4 참조 블록의 픽셀값에 따라 가중치를 부여하여, 상기 서브 블록의 예측값을 획득하는 단계를 포함함 - 를 포함하는 것을 특징으로한다.
개시되는 다른 실시예에 따른 디코딩 장치는, 프로세서 및 기계 판독 가능 저장 매체를 포함하고, 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령이 저장되며; 상기 프로세서는 기계 실행 가능 명령을 실행하여, 개시되는 일 실시예에 따른 디코딩 방법을 구현한다.
개시되는 다른 실시예에 따른 인코딩 장치는, 프로세서 및 기계 판독 가능 저장 매체를 포함하고, 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령이 저장되며; 상기 프로세서는 기계 실행 가능 명령을 실행하여,
현재 블록에서 움직임 벡터 조정 모드를 활성화할 경우, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 결정하고, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 기반으로, 상기 현재 블록의 예측값을 결정하되, 현재 블록에 포함된 각각의 서브 블록에 대해, 상기 서브 블록의 예측값을 결정하는 단계는,
제1 원본 움직임 벡터 및 제1 참조 프레임, 제2 원본 움직임 벡터 및 제2 참조 프레임을 포함하는 상기 현재 블록의 움직임 정보를 획득하는 단계;
상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제2 참조 블록을 결정하며; 제1 참조 블록의 픽셀값 및 제2 참조 블록의 픽셀값에 따라, 최적 움직임 벡터를 획득하는 단계 - 상기 최적 움직임 벡터를 획득하는 단계는, 초기 움직임 벡터를 중심으로, 상기 초기 움직임 벡터를 포함하는 상기 초기 움직임 벡터 주변의 움직임 벡터로부터 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 결정하는 단계를 포함하되, 상기 초기 움직임 벡터는 상기 제1 원본 움직임 벡터 또는 상기 제2 원본 움직임 벡터이고; 상기 제1 참조 블록의 픽셀값 및 상기 제2 참조 블록의 픽셀값에 따라, 상기 초기 움직임 벡터에 대응되는 비용 값, 각각의 후보 움직임 벡터에 대응되는 비용 값을 획득하며; 상기 초기 움직임 벡터에 대응되는 비용 값 및 상기 각각의 후보 움직임 벡터에 대응되는 비용 값에 따라, 상기 초기 움직임 벡터 및 각각의 후보 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용함 -;
상기 최적 움직임 벡터에 따라 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및
상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 단계 - 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 상기 단계는, 상기 제1 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제3 참조 블록을 결정하고, 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제4 참조 블록을 결정하며; 상기 제3 참조 블록의 픽셀값 및 상기 제4 참조 블록의 픽셀값에 따라 가중치를 부여하여, 상기 서브 블록의 예측값을 획득하는 단계를 포함함 - 를 포함하는 인코딩 방법을 구현한다.
개시되는 다른 실시예에 따른 디코더는, 상기 개시되는 일 실시예에 따른 디코딩 방법을 구현하도록 구성된다.
개시되는 다른 실시예에 따른 인코더는,
현재 블록에서 움직임 벡터 조정 모드를 활성화할 경우, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 결정하고, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 기반으로, 상기 현재 블록의 예측값을 결정하되, 현재 블록에 포함된 각각의 서브 블록에 대해, 상기 서브 블록의 예측값을 결정하는 단계는,
제1 원본 움직임 벡터 및 제1 참조 프레임, 제2 원본 움직임 벡터 및 제2 참조 프레임을 포함하는 상기 현재 블록의 움직임 정보를 획득하는 단계;
상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제2 참조 블록을 결정하며; 제1 참조 블록의 픽셀값 및 제2 참조 블록의 픽셀값에 따라, 최적 움직임 벡터를 획득하는 단계 - 상기 최적 움직임 벡터를 획득하는 단계는, 초기 움직임 벡터를 중심으로, 상기 초기 움직임 벡터를 포함하는 상기 초기 움직임 벡터 주변의 움직임 벡터로부터 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 결정하는 단계를 포함하되, 상기 초기 움직임 벡터는 상기 제1 원본 움직임 벡터 또는 상기 제2 원본 움직임 벡터이고; 상기 제1 참조 블록의 픽셀값 및 상기 제2 참조 블록의 픽셀값에 따라, 상기 초기 움직임 벡터에 대응되는 비용 값, 각각의 후보 움직임 벡터에 대응되는 비용 값을 획득하며; 상기 초기 움직임 벡터에 대응되는 비용 값 및 상기 각각의 후보 움직임 벡터에 대응되는 비용 값에 따라, 상기 초기 움직임 벡터 및 각각의 후보 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용함 -;
상기 최적 움직임 벡터에 따라 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및
상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 단계 - 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 상기 단계는, 상기 제1 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제3 참조 블록을 결정하고, 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제4 참조 블록을 결정하며; 상기 제3 참조 블록의 픽셀값 및 상기 제4 참조 블록의 픽셀값에 따라 가중치를 부여하여, 상기 서브 블록의 예측값을 획득하는 단계를 포함함 - 를포함하는인코딩 방법을 구현하도록 구성된다.
개시되는 다른 실시예에 따른 비휘발성 기계 판독 가능 저장 매체는, 상기 비휘발성 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령이 저장되며; 상기 프로세서는 기계 실행 가능 명령을 실행하여, 개시되는 일 실시예에 따른 디코딩 방법을 구현한다.
이상 기술적 해결수단으로부터 보다시피, 본 발명의 실시예에서, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터에 따라 현재 블록에 대해 인코딩 또는 디코딩을 직접 수행하는 것이 아니라, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터에 따라 현재 블록의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 결정하고, 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터에 따라 현재 블록에 대해 인코딩 또는 디코딩을 수행할 수 있음으로써, 예측 품질이 높지 않고, 예측 오류가 발생하는 등 문제를 해결하며, 인코딩 성능 및 인코딩 효율을 향상시킨다.
본 발명의 실시예 또는 종래의 기술의 기술적 해결수단을 보다 명확하게 설명하기 위해, 이하 본 발명의 실시예 또는 종래의 기술에 사용되어야 하는 첨부 도면에 대해 간단히 소개하며, 명백한 것은, 아래에서 설명되는 도면은 본 발명에 기재된 일부 실시예일 뿐, 본 기술분야의 통상의 기술자는 또한 본 발명의 실시예의 이러한 도면에 따라 다른 도면을 얻을 수 있을 것이다.
도 1a는 본 발명의 일 실시형태에서 보간의 모식도이다.
도 1b는 본 발명의 일 실시형태에서 비디오 인코딩 프레임 워크의 모식도이다.
도 2는 본 발명의 일 실시형태에서 인코딩 및 디코딩 방법의 흐름도이다.
도 3은 본 발명의 일 실시형태에서 인코딩 및 디코딩 방법의 흐름도이다.
도 4는 본 발명의 일 실시형태에서 인코딩 및 디코딩 방법의 흐름도이다.
도 5는 본 발명의 일 실시형태에서 참조 픽셀의 모식도이다.
도 6은 본 발명의 일 실시형태에서 움직임 벡터 반복의 모식도이다.
도 7a 내지 도 7e는 본 발명의 일 실시형태에서 후보 포인트의 순서의 모식도이다.
도 8은 본 발명의 일 실시형태에서 현재 블록의 공간 도메인 참조의 모식도이다.
도 9는 본 발명의 일 실시형태에서 인코딩 및 디코딩 장치의 구조도이다.
도 10은 본 발명의 일 실시형태에서 디코딩단 기기의 하드웨어 구조도이다.
도 11은 본 발명의 일 실시형태에서 인코딩단 기기의 하드웨어 구조도이다.
본 발명의 실시예에서 사용되는 용어는 단지 특정 실시예를 설명하기 위한 목적일 뿐, 본 발명을 한정하려는 것이 아니다. 본 발명 및 청구보호범위에서 사용되는 단수 형태의 “일”, “상기” 및 “해당”은 문맥 상에서 다른 의미를 명확하게 나타내지 않는 한, 복수의 형태를 포함하도록 의도된다. 더 이해해야 할 것은, 본문에 사용되는 용어 “및/또는”은 하나 또는 다수의 관련된 열거 항목을 포함하는 임의의 또는 모든 가능한 조합을 의미한다.
이해해야 할 것은, 본 발명의 실시예는 용어 제1, 제2, 제3 등을 사용하여 다양한 정보를 설명할 수 있지만, 이러한 정보는 이러한 용어에 한정되는 것이 아니다. 이러한 용어는 단지 동일한 유형의 정보를 서로 구분하기 위한 것이다. 예를 들어, 본 발명의 범위를 벗어나지 않는 경우, 제1 정보는 제2 정보로도 지칭될 수 있고, 유사하게, 제2 정보도 제1 정보로 지칭될 수 있다. 언어 환경에 따르면, 사용되는 단어 “만약”은 “...일 때” 또는 “...일 경우” 또는 “에 응답하여 결정한다”로 해석될 수 있다.
본 발명의 실시예에서는 인코딩 및 디코딩 방법을 제공하며, 하기와 같은 개념을 포함할 수 있다.
인트라 예측과 인터 예측(intra prediction and inter prediction) 기술: 인트라 예측은, 비디오 공간 도메인의 상관 관계를 이용하는 것이며, 현재 이미지의 코딩된 블록의 픽셀을 사용하여 현재 픽셀을 예측하여 비디오 공간 도메인 중복을 제거하는 목적에 달성한다. 인트라 예측에는 다양한 예측 모드가 규정되고, 각각의 예측 모드는 모두 하나의 텍스처 방향(DC 모드 제외)에 대응되며, 현재 블록 예측 픽셀은 이의 예측 방향에서 인접한 블록의 경계의 픽셀값을 재구성하여 생성된다. 예를 들어, 이미지의 텍스처가 수평 형태의 배열을 나타내면, 수평 예측 모드를 선택하여 이미지 정보를 더 잘 예측할 수 있다. 인터 예측은, 비디오 시간 도메인의 상관 관계를 이용하는 것이며, 비디오 시퀀스에는 일반적으로 비교적 강한 시간 도메인 상관 관계가 포함되므로, 인접한 코딩된 이미지 픽셀을 사용하여 현재 이미지의 픽셀을 예측하여, 비디오 시간 도메인 중복을 효과적으로 제거하는 목적에 달성할 수 있다. 주요한 비디오 인코딩 표준 인터 예측 부분은 모두 블록 기반의 움직임 보상 기술을 사용하였으며, 주요 원리는 현재 이미지의 각각의 픽셀 블록이 이전의 코딩된 이미지에서 하나의 최적 매칭 블록을 찾는 것이며, 상기 과정은 움직임 추정(Motion Estimation, ME)으로 지칭된다.
움직임 벡터(Motion Vector, MV): 인터 인코딩에서, 움직임 벡터를 사용하여 현재 인코딩 블록과 이의 참조 이미지 중 최적 매칭 블록 사이의 상대적 변위를 표시한다. 각각의 분할된 블록은 모두 디코딩단으로 전송되는 상응한 움직임 벡터를 가지며, 각각의 블록의 움직임 벡터에 대해 독립적인 인코딩 및 전송을 수행할 경우, 특히 작은 사이즈의 블록으로 분할할 경우, 상당히 많은 비트가 소모되어야 한다. 움직임 벡터의 인코딩에 사용되는 비트 수를 감소시키기 위해, 인접한 이미지 블록 사이의 공간 상관 관계를 이용하여, 인접한 인코딩된 블록의 움직임 벡터에 따라 현재 인코딩할 블록의 움직임 벡터를 예측한 다음, 예측 차이에 대해 인코딩을 수행한다. 이와 같이, 움직임 벡터를 표시하는 비트 수를 효과적으로 감소시킬 수 있다. 현재 블록의 움직임 벡터에 대한 인코딩 과정에서, 우선 인접한 인코딩된 블록의 움직임 벡터를 사용하여 현재 블록의 움직임 벡터를 예측한 다음, 움직임 벡터의 예측값(MVP, Motion Vector Prediction)과 움직임 벡터의 실제 추정값 사이의 차이값(MVD, MotionVector Difference)에 대해 인코딩을 수행함으로써, MV의 인코딩 비트 수를 효과적으로 감소시킨다.
움직임 정보(Motion Information): 움직임 벡터는 현재 이미지 블록과 특정된 참조 이미지 블록의 위치 오프셋을 표시하므로, 이미지 블록을 지향하는 정보를 정확하게 획득하기 위해, 움직임 벡터를 제외한 외, 참조 프레임 이미지의 인덱스 정보로 어느 참조 프레임 이미지를 사용할 것인지 표시해야 한다. 비디오 인코딩 기술에서, 현재 프레임 이미지의 경우, 일반적으로 하나의 참조 프레임 이미지 리스트를 구축할 수 있으며, 참조 프레임 이미지 인덱스 정보는 현재 이미지 블록이 참조 프레임 이미지 리스트 중 몇 번째 참조 프레임 이미지를 사용하였는지 표시한다. 이밖에, 많은 인코딩 기술은 또한 복수의 참조 이미지 리스트를 지원하므로, 하나의 인덱스값을 사용하여 어느 참조 이미지 리스트를 사용하였는지 표시할 수 있으며, 이 인덱스값은 참조 방향으로 지칭될 수 있다. 비디오 인코딩 기술에서, 움직임 벡터, 참조 프레임 인덱스, 참조 방향과 같은 움직임과 관련된 정보를 움직임 정보로 통칭할 수 있다.
예측 픽셀(Prediction Signal): 예측 픽셀은 인코딩 및 디코딩된 픽셀로부터 도출된 픽셀값을 의미하며, 원본 픽셀과 예측 픽셀 차이를 통해 잔차를 획득하여, 잔차 변환 양자화 및 계수 인코딩을 수행한다. 특히, 인터의 예측 픽셀은 현재 블록이 참조 프레임(재구성 픽셀 프레임)으로부터 도출해낸 픽셀값을 의미하고, 픽셀 위치의 이산으로 인해, 보간 연산법을 통해 최종 예측 픽셀을 획득해야 한다. 예측 픽셀과 원본 픽셀이 가까울수록, 양자를 서로 감하여 얻은 잔차 에너지가 더 작고, 인코딩 압축 성능이 더 높다.
보간(Interpolation): 현재 MV가 정수가 아닌 픽셀 정밀도이면, 대응 참조 프레임으로부터 기존의 픽셀값을 직접 복제할 수 없으며, 필요한 픽셀값은 보간을 통해서만 획득된다. 도 1a에 도시된 바와 같이, 1/2 픽셀의 오프셋인 픽셀값Y1/2를 얻으려면, 주변에 기존의 픽셀값X를 보간하여 획득해야 한다. N개의 탭을 가진 보간 필터를 사용하려면, 주변에 N개의 전체 픽셀을 보간하여 획득해야 한다.
움직임 보상: 움직임 보상은 보간 또는 복제를 통해 현재 블록의 모든 픽셀값의 과정을 획득하는 것이다.
비디오 인코딩 프레임 워크: 도 1b에 도시된 바와 같이, 비디오 인코딩 프레임 워크를 사용하여 본 발명의 실시예의 인코딩단 처리 프로세스를 구현할 수 있으며, 이밖에, 비디오 디코딩 프레임 워크의 모식도는 도 1b와 유사하며, 여기서 더이상 서술하지 않고, 또한 비디오 디코딩 프레임 워크를 사용하여 본 발명의 실시예의 디코딩단 처리 프로세스를 구현할 수 있다. 구체적으로, 비디오 인코딩 프레임 워크 및 비디오 디코딩 프레임 워크에는, 인트라 예측, 움직임 추정/움직임 보상, 참조 이미지 버퍼, 루프 내 필터링, 재구성, 변환, 양자화, 역변환, 역 양자화, 엔트로피 인코더 등 모듈이 포함된다. 인코딩단에서, 이러한 모듈 사이의 배합을 통해, 인코딩단 처리 프로세스를 구현할 수 있고, 디코딩단에서, 이러한 모듈 사이의 배합을 통해, 디코딩단 처리 프로세스를 구현할 수 있다.
기존의 방식에서, 현재 블록이 양방향 블록일 경우, 현재 블록의 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터를 획득한 후, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터에 대한 조정 방법에 대해서는 합리적인 해결 수단이 없다. 본 발명의 실시예에서, 현재 블록이 양방향 블록일 경우, 먼저 현재 블록의 특징 정보가 특정 조건을 만족하는지 여부를 판단하고, 그렇다면 제1 원본 움직임 벡터에 따라 현재 블록에 대응되는 제1 참조 블록을 결정하며, 현재 블록의 제2 원본 움직임 벡터에 따라 제2 참조 블록을 결정하고, 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터를 조정하여, 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 획득한다.
이와 같이, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터를 조정하여, 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 획득함으로써, 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터에 따라 현재 블록에 대해 인코딩 또는 디코딩을 수행할 수 있어, 인코딩 성능 및 인코딩 효율을 향상시킬 수 있다.
아래에 다수의 구체적인 실시예를 결부하여, 본 발명의 인코딩 및 디코딩 방법에 대해 상세하게 설명한다.
실시예 1: 도 2에 도시된 바와 같이, 본 발명의 실시예에서 제공된 인코딩 및 디코딩 방법의 흐름 모식도이고, 상기 방법은 디코딩단 또는 인코딩단에 적용될 수 있으며, 상기 방법은 하기와 같은 단계를 포함할 수 있다.
단계 201에서, 현재 블록의 특징 정보가 특정 조건을 만족하면, 현재 블록의 제1 원본 움직임 벡터에 따라 현재 블록에 대응되는 제1 참조 블록을 결정하고, 현재 블록의 제2 원본 움직임 벡터에 따라 현재 블록에 대응되는 제2 참조 블록을 결정한다. 상기 특징 정보는 현재 블록에 대응되는 움직임 정보 예측 모드; 현재 블록에 대응되는 움직임 정보 속성; 및 현재 블록의 사이즈 정보 중 하나 또는 다수를 포함하지만 이에 한정되지 않는다.
일 예에서, 상기 특징 정보가 현재 블록에 대응되는 움직임 정보 예측 모드이면, 현재 블록의 특징 정보가 특정 조건을 만족하는 경우는, 현재 블록에 대응되는 움직임 정보 예측 모드가 일반 병합 모드이면, 현재 블록에 대응되는 움직임 정보 예측 모드가 특정 조건을 만족하는 것으로 결정하는 경우; 또는, 현재 블록에 대응되는 움직임 정보 예측 모드가 인터 예측값과 인트라 예측값을 연합하여 새로운 예측값을 생성하기 위한 병합 모드이면, 현재 블록에 대응되는 움직임 정보 예측 모드가 특정 조건을 만족하는 것으로 결정하는 경우를 포함할 수 있지만 이에 한정되지 않는다.
일 예에서, 특징 정보가 현재 블록에 대응되는 움직임 정보 속성이면, 현재 블록의 특징 정보가 특정 조건을 만족하는 경우는, 현재 블록에 대응되는 움직임 정보 속성이 현재 블록의 움직임 정보가 2개의 상이한 방향의 움직임 정보를 포함하면, 현재 블록에 대응되는 움직임 정보 속성이 특정 조건을 만족하는 것으로 결정하는 경우; 또는, 현재 블록에 대응되는 움직임 정보 속성이 현재 블록의 움직임 정보가 2개의 상이한 방향의 움직임 정보를 포함하고, 2개의 상이한 방향의 움직임 정보에 대응되는 2개의 참조 프레임과 현재 프레임의 거리가 동일한 것이면, 현재 블록에 대응되는 움직임 정보 속성이 특정 조건을 만족하는 것으로 결정하는 경우; 또는, 현재 블록에 대응되는 움직임 정보 속성이 현재 블록이 주변 블록의 움직임 정보를 재사용하는 것이면, 현재 블록에 대응되는 움직임 정보 속성이 특정 조건을 만족하는 것으로 결정하는 경우; 또는, 현재 블록에 대응되는 움직임 정보 속성이 현재 블록의 각각의 서브 블록의 움직임 정보가 동일한 것이면, 현재 블록에 대응되는 움직임 정보 속성이 특정 조건을 만족하는 것으로 결정하는 경우를 포함하지만 이에 한정되지 않는다.
예시적으로, 현재 블록의 움직임 정보가 2개의 상이한 방향의 움직임 정보를 포함하는 것은, 현재 블록의 2개의 상이한 방향의 움직임 정보가 각각 제1 참조 프레임 및 제2 참조 프레임에 대응되고, 제1 참조 프레임이 현재 블록이 위치한 현재 프레임의 앞에 위치하며, 제2 참조 프레임이 현재 블록이 위치한 현재 프레임의 뒤에 위치한다는 것을 의미한다.
일 예에서, 상기 특징 정보가 현재 블록의 사이즈 정보이고, 현재 블록의 사이즈 정보가 현재 블록의 폭값 및 현재 블록의 높이값을 포함할 수 있는 것이면, 현재 블록의 특징 정보가 특정 조건을 만족하는 경우는, 현재 블록의 폭값이 제1 구간[제1 임계값, 제2 임계값]의 범위 내에 위치하면, 현재 블록의 사이즈 정보가 특정 조건을 만족하는 것으로 결정할 수 있는 경우; 또는, 현재 블록의 높이값이 제2 구간[제3 임계값, 제4 임계값]의 범위 내에 위치하면, 현재 블록의 사이즈 정보가 특정 조건을 만족하는 것으로 결정할 수 있는 경우; 또는, 현재 블록의 폭값과 높이값에 따라 얻은 면적이 제3 구간[제5 임계값, 제6 임계값]의 범위 내에 위치하면, 현재 블록의 사이즈 정보가 특정 조건을 만족하는 것으로 결정할 수 있는 경우; 또는, 상기 폭값이 제1 구간[제1 임계값, 제2 임계값]의 범위 내에 위치하고, 상기 높이값이 제2 구간[제3 임계값, 제4 임계값]의 범위 내에 위치하며, 상기 면적이 제3 구간[제5 임계값, 제6 임계값]의 범위 내에 위치하면, 현재 블록의 사이즈 정보가 특정 조건을 만족하는 것으로 결정할 수 있는 경우를 포함할 수 있지만 이에 한정되지 않는다.
예시적으로, 제1 임계값은 제2 임계값보다 작을 수 있고, 제1 임계값 및 제2 임계값에 대해 한정하지 않으며, 예를 들어, 제1 임계값은 4일 수 있고, 제2 임계값은 128일 수 있다. 제3 임계값은 제4 임계값보다 작을 수 있고, 제3 임계값 및 제4 임계값에 대해 한정하지 않으며, 예를 들어, 제3 임계값은 8일 수 있고, 제4 임계값은 128일 수 있다. 제5 임계값은 제6 임계값보다 작을 수 있고, 제5 임계값 및 제6 임계값에 대해 한정하지 않으며, 예를 들어, 제5 임계값은 64일 수 있고, 제6 임계값은 128*128일 수 있다.
일 예에서, 현재 블록의 제1 원본 움직임 벡터에 따라 현재 블록에 대응되는 제1 참조 블록을 결정하고, 현재 블록의 제2 원본 움직임 벡터에 따라 현재 블록에 대응되는 제2 참조 블록을 결정하는 단계는, 현재 블록의 제1 원본 움직임 벡터에 기반하여, 제1 참조 프레임으로부터 현재 블록에 대응되는 제1 참조 블록을 결정하는 단계; 및 현재 블록의 제2 원본 움직임 벡터에 기반하여, 제2 참조 프레임으로부터 현재 블록에 대응되는 제2 참조 블록을 결정하는 단계를 포함할 수 있지만 이에 한정되지 않는다. 제1 참조 블록 중 각각의 픽셀점의 제1 픽셀값은 제1 참조 블록 중 인접한 픽셀점의 픽셀값을 보간하거나, 제1 참조 블록 중 인접한 픽셀점의 픽셀값을 복제하여 획득한 것이며; 제2 참조 블록 중 각각의 픽셀점의 제2 픽셀값은 제2 참조 블록 중 인접한 픽셀점의 픽셀값을 보간하거나, 제2 참조 블록 중 인접한 픽셀점의 픽셀값을 복제하여 획득한 것이다. 제1 참조 블록의 사이즈와 제2 참조 블록의 사이즈는 동일하고, 제1 참조 블록의 폭값은 현재 블록의 폭값과 검색 범위를 기반으로 결정되고, 제1 참조 블록의 높이값은 현재 블록의 높이값과 검색 범위를 기반으로 결정된다.
단계 202에서, 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터를 조정하여, 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득한다.
일 예에서, 현재 블록이 적어도 하나의 서브 블록을 포함하면, 현재 블록의 각각의 서브 블록에 대해, 제1 픽셀값 및 제2 픽셀값에 따라, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터를 조정하여, 서브 블록의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 획득할 수 있다.
일 예에서, 제1 픽셀값 및 제2 픽셀값에 따라, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터를 조정하여, 서브 블록의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 획득하는 단계는, 제1 픽셀값 및 제2 픽셀값에 따라, 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값을 결정하거나, 및/또는, 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값을 결정하는 단계를 포함할 수 있다. 다음, 제1 정수 픽셀 움직임 벡터 조정값 및/또는 제1 분수 픽셀 움직임 벡터 조정값에 따라, 제1 원본 움직임 벡터를 조정하여, 서브 블록의 제1 타깃 움직임 벡터를 획득할 수 있다. 제2 정수 픽셀 움직임 벡터 조정값 및/또는 제2 분수 픽셀 움직임 벡터 조정값에 따라, 제2 원본 움직임 벡터를 조정하여, 서브 블록의 제2 타깃 움직임 벡터를 획득한다.
일 예에서, 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값, 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값을 결정하는 단계는, 제1 원본 움직임 벡터 또는 제2 원본 움직임 벡터를 중심 움직임 벡터로 결정하는 단계; 중심 움직임 벡터에 대응되는 에지 움직임 벡터를 결정하는 단계; 제1 픽셀값 및 제2 픽셀값에 따라, 중심 움직임 벡터에 대응되는 제1 비용 값, 에지 움직임 벡터에 대응되는 제2 비용 값을 획득하는 단계; 다음, 제1 비용 값 및 제2 비용 값에 따라, 중심 움직임 벡터 및 에지 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용하고, 종료 조건을 만족하는지 여부를 판단하는 단계; 종료 조건을 만족하지 않으면, 최적 움직임 벡터를 중심 움직임 벡터로 결정하고, 되돌아가 중심 움직임 벡터에 대응되는 에지 움직임 벡터를 결정하는 단계를 수행하는 단계; 및 종료 조건을 만족하면, 최적 움직임 벡터에 따라 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값을 결정하고; 최적 움직임 벡터에 따라 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값을 결정하는 단계를 포함할 수 있다.
일 예에서, 중심 움직임 벡터에 대응되는 에지 움직임 벡터를 결정하는 단계는, 중심 움직임 벡터(x, y)를 상이한 방향으로 S만큼 오프셋하여, 순차적으로 상이한 방향의 에지 움직임 벡터(x, y+S), 에지 움직임 벡터(x, y-S), 에지 움직임 벡터(x+S, y), 에지 움직임 벡터(x-S, y), 에지 움직임 벡터(x+right, y+down)를 획득하는 단계; 또는 중심 움직임 벡터(x, y)를 상이한 방향으로 S만큼 오프셋하여, 순차적으로 상이한 방향의 에지 움직임 벡터(x, y-S), 에지 움직임 벡터(x, y+S), 에지 움직임 벡터(x-S, y), 에지 움직임 벡터(x+S, y), 에지 움직임 벡터(x+right, y+down)를 획득하는 단계를 포함한다. 에지 움직임 벡터(x+right, y+down)의 디폴트 값은 (x-S, y-S)이며; 에지 움직임 벡터(x+S, y)의 비용 값이 에지 움직임 벡터(x-S, y)의 비용 값보다 작으면, right는 S이고; 에지 움직임 벡터(x, y+S)의 비용 값이 에지 움직임 벡터(x, y-S)의 비용 값보다 작으면, down이 S이거나; 또는, 에지 움직임 벡터(x+S, y)의 비용 값이 에지 움직임 벡터(x-S, y)의 비용 값보다 작거나 같으면, right는 S이고; 에지 움직임 벡터(x, y+S)의 비용 값이 에지 움직임 벡터(x, y-S)의 비용 값보다 작거나 같으면, down은 S이다.
일 예에서, 제1 픽셀값 및 제2 픽셀값에 따라, 중심 움직임 벡터에 대응되는 제1 비용 값, 에지 움직임 벡터에 대응되는 제2 비용 값을 획득하는 단계는, 다운 샘플링되지 않은 제1 픽셀값 및 다운 샘플링되지 않은 제2 픽셀값, 중심 움직임 벡터에 대응되는 제1 비용 값, 에지 움직임 벡터에 대응되는 제2 비용 값을 획득하는 단계; 또는, 제1 픽셀값에 대해 다운 샘플링 동작을 수행하고, 제2 픽셀값에 대해 다운 샘플링 동작을 수행한 다음, 다운 샘플링된 제1 픽셀값 및 다운 샘플링된 제2 픽셀값에 따라, 중심 움직임 벡터에 대응되는 제1 비용 값, 에지 움직임 벡터에 대응되는 제2 비용 값을 획득하는 단계; 또는, 제1 픽셀값에 대해 시프팅 및 다운 샘플링 동작을 수행하고, 제2 픽셀값에 대해 시프팅 및 다운 샘플링 동작을 수행한 다음, 동작이 수행된 제1 픽셀값 및 동작이 수행된 제2 픽셀값에 따라, 중심 움직임 벡터에 대응되는 제1 비용 값, 에지 움직임 벡터에 대응되는 제2 비용 값을 획득하는 단계를 포함할 수 있지만 이에 한정되지 않는다.
일 예에서, 제1 픽셀값 및 제2 픽셀값에 따라, 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값, 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값을 결정하는 단계는, 제1 원본 움직임 벡터 또는 제2 원본 움직임 벡터를 중심으로, 주변의 움직임 벡터로부터 일부 또는 전체 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 사용하는 단계; 제1 픽셀값 및 제2 픽셀값에 따라, 제1 원본 움직임 벡터 또는 제2 원본 움직임 벡터에 대응되는 제3 비용 값, 후보 움직임 벡터에 대응되는 제4 비용 값을 획득하는 단계; 제3 비용 값 및 제4 비용 값에 따라, 제1 원본 움직임 벡터 또는 제2 원본 움직임 벡터, 후보 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용하는 단계; 및 최적 움직임 벡터에 따라 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값을 결정하고, 최적 움직임 벡터에 따라 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값을 결정하는 단계를 포함할 수 있다.
최적 움직임 벡터에 따라 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값을 결정하는 단계는, 상기 최적 움직임 벡터 및 제1 원본 움직임 벡터에 따라 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값을 결정하고, 제1 정수 픽셀 움직임 벡터 조정값에 따라 서브 블록의 제2 정수 픽셀 움직임 벡터 조정값을 결정하는 단계를 포함할 수 있지만 이에 한정되지 않는다.
최적 움직임 벡터에 따라 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값을 결정하는 단계는, 최적 움직임 벡터에 대응되는 비용 값, 최적 움직임 벡터에 대응되는 에지 움직임 벡터에 대응되는 비용 값에 따라, 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값을 결정하고, 제1 분수 픽셀 움직임 벡터 조정값에 따라 서브 블록의 제2 분수 픽셀 움직임 벡터 조정값을 결정하는 단계를 포함한다.
단계 203에서, 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터에 따라 현재 블록에 대해 인코딩 또는 디코딩을 수행한다. 예를 들어, 인코딩단의 경우, 인코딩단은 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터에 따라 현재 블록에 대해 인코딩 처리를 수행할 수 있고; 디코딩단의 경우, 디코딩단은 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터에 따라 현재 블록에 대해 디코딩 처리를 수행할 수 있다.
일 예에서, 현재 블록의 각각의 서브 블록에 대해, 서브 블록의 제1 타깃 움직임 벡터에 따라 서브 블록에 대응되는 제3 참조 블록을 결정하고, 서브 블록의 제2 타깃 움직임 벡터에 따라 서브 블록에 대응되는 제4 참조 블록을 결정하며; 제3 참조 블록의 제3 픽셀값 및 제4 참조 블록의 제4 픽셀값에 따라 가중치를 부여하여, 서브 블록의 예측값을 획득하고; 각각의 서브 블록의 예측값에 따라 현재 블록의 예측값을 결정한다.
일 예에서, 서브 블록의 제1 타깃 움직임 벡터에 따라 서브 블록에 대응되는 제3 참조 블록을 결정하고, 서브 블록의 제2 타깃 움직임 벡터에 따라 서브 블록에 대응되는 제4 참조 블록을 결정하는 단계는 하기와 같은 방식을 포함할 수 있다.
방식1에서, 서브 블록의 제1 타깃 움직임 벡터에 기반하여, 제1 참조 프레임으로부터 서브 블록에 대응되는 제5 참조 블록을 결정하고, 제5 참조 블록 중 픽셀값을 보간하여, 제3 참조 블록을 획득한다. 또한, 서브 블록의 제2 타깃 움직임 벡터에 기반하여, 제2 참조 프레임으로부터 서브 블록에 대응되는 제6 참조 블록을 결정하고, 제6 참조 블록 중 픽셀값을 보간하여, 제4 참조 블록을 획득한다.
방식2에서, 서브 블록의 제1 타깃 움직임 벡터에 기반하여, 제1 참조 프레임으로부터 서브 블록에 대응되는 제7 참조 블록을 결정하고, 제7 참조 블록 중 픽셀값을 사용하여 제8 참조 블록을 구성하며, 제8 참조 블록 중 픽셀값을 보간하여, 제3 참조 블록을 획득하고; 서브 블록의 제2 타깃 움직임 벡터에 기반하여, 제2 참조 프레임으로부터 서브 블록에 대응되는 제9 참조 블록을 결정하고, 제9 참조 블록 중 픽셀값을 사용하여 제10 참조 블록을 구성하며, 제10 참조 블록 중 픽셀값을 보간하여, 제4 참조 블록을 획득한다.
일 예에서, 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터에 따라 현재 블록에 대해 인코딩 또는 디코딩을 수행한 이후에, 또한 현재 블록에 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 저장할 수 있다. 이와 같이, 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터는 현재 프레임의 루프 필터링에 사용되고, 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터는 후속 프레임의 시간 도메인 참조에 사용되거나, 및/또는 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터는 현재 프레임의 공간 도메인 참조에 사용된다.
이상 기술적 해결수단으로부터 보다시피, 본 발명의 실시예에서, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터에 따라 현재 블록에 대해 인코딩 또는 디코딩을 직접 수행하는 것이 아니라, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터에 따라 현재 블록의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 결정하고, 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터에 따라 현재 블록에 대해 인코딩 또는 디코딩을 수행할 수 있음으로써, 예측 품질이 높지 않고, 예측 오류가 발생하는 등 문제를 해결하며, 인코딩 성능 및 인코딩 효율을 향상시킨다.
실시예 2: 도 3에 도시된 바와 같이, 본 발명의 실시예에서 제공된 인코딩 및 디코딩 방법의 흐름 모식도이고, 상기 인코딩 및 디코딩 방법은 인코딩단에 적용될 수 있으며, 상기 인코딩 및 디코딩 방법은 하기와 같은 단계를 포함할 수 있다.
단계 301에서, 인코딩단은 현재 블록의 특징 정보가 특정 조건을 만족하는지 여부를 판단한다. 그렇다면 단계 302를 수행하고, 그렇지 않으면 본 발명에서 제공된 움직임 벡터 조정 방식을 사용할 필요가 없으며, 이 처리 방식에 대해 한정하지 않는다.
일 예에서, 인코딩단은 인코딩된 정보에 기반하여 현재 블록의 특징 정보가 특정 조건을 만족하는지 여부를 판단할 수 있다. 현재 블록의 특징 정보가 특정 조건을 만족하면, 현재 블록의 움직임 정보가 충분히 정확하지 않음을 설명하므로, 움직임 벡터 조정 모드를 활성화하여 단계 302를 수행한다.
현재 블록의 특징 정보가 특정 조건을 만족하지 않으면, 현재 블록의 움직임 정보가 충분히 정확하다는 것을 설명하므로, 움직임 벡터 조정 모드를 활성화하지 않을 수 있고, 본 발명에서 제공된 움직임 벡터 조정 방식을 사용할 필요가 없다.
일 예에서, 현재 블록의 특징 정보는, 현재 블록에 대응되는 움직임 정보 예측 모드; 현재 블록에 대응되는 움직임 정보 속성; 및 현재 블록의 사이즈 정보 중 하나 또는 다수를 포함하지만 이에 한정되지 않는다.
현재 블록의 특징 정보가 특정 조건을 만족하는지 여부를 판단하는 방식에 대해서는, 후속 실시예를 참조한다.
단계 302에서, 인코딩단은 현재 블록의 제1 원본 움직임 벡터에 기반하여, 제1 참조 프레임으로부터 현재 블록에 대응되는 제1 참조 블록을 결정하고; 현재 블록의 제2 원본 움직임 벡터에 기반하여, 제2 참조 프레임으로부터 현재 블록에 대응되는 제2 참조 블록을 결정한다. 간편하게 구분하기 위해, 제1 참조 블록 중 각각의 픽셀점의 픽셀값을 제1 픽셀값으로 지칭하고, 제2 참조 블록 중 각각의 픽셀점의 픽셀값을 제2 픽셀값으로 지칭한다.
일 예에서, 현재 블록이 양방향으로 예측된 블록이면, 현재 블록에 양방향 움직임 정보가 존재하고, 이 양방향 움직임 정보에는 2개의 참조 프레임 및 2개의 원본 움직임 벡터가 포함된다. 예를 들어, 인코딩단은 기존의 방식을 사용하여 양방향 움직임 정보를 획득할 수 있고, 이 획득 방식에 대해 한정하지 않는다. 상기 양방향 움직임 정보는 제1 참조 프레임 및 제1 원본 움직임 벡터, 제2 참조 프레임 및 제2 원본 움직임 벡터를 포함한다.
제1 원본 움직임 벡터에 기반하여, 인코딩단은 제1 참조 프레임으로부터 현재 블록에 대응되는 제1 참조 블록을 결정할 수 있고, 제1 참조 블록 중 각각의 픽셀점의 픽셀값을 제1 픽셀값으로 지칭할 수 있다.
제2 원본 움직임 벡터에 기반하여, 인코딩단은 제2 참조 프레임으로부터 현재 블록에 대응되는 제2 참조 블록을 결정할 수 있고, 제2 참조 블록 중 각각의 픽셀점의 픽셀값을 제2 픽셀값으로 지칭할 수 있다.
일 예에서, 현재 블록이 위치한 현재 프레임과 제1 참조 프레임 사이의 거리 및 제2 참조 프레임과 현재 블록이 위치한 현재 프레임 사이의 거리는 동일할 수 있다. 예를 들어, 제1 참조 프레임은 제1 프레임이고, 현재 프레임은 제5 프레임이며, 제2 참조 프레임은 제9 프레임이다. 물론, 상술한 바는 단지 하나의 예일 뿐, 양자의 거리는 상이할 수도 있다.
제1 원본 움직임 벡터 및 제2 원본 움직임 벡터는 거울 대칭 관계가 존재할 수 있으며, 예를 들어, 제1 원본 움직임 벡터는 (4, 4)이고, 제2 원본 움직임 벡터는 (-4, -4)이며; 제1 원본 움직임 벡터는 (2.5, 3.5)이고, 제2 원본 움직임 벡터는 (-2.5, -3.5)이다. 물론, 상술한 바는 단지 하나의 예일 뿐, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터는 거울 대칭 관계가 존재하지 않을 수도 있다.
제1 참조 블록 및 제2 참조 블록을 결정하는 방식에 대해서는, 후속 실시예를 참조할 수 있다.
단계 303에서, 현재 블록의 각각의 서브 블록에 대해, 인코딩단은 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제1 원본 움직임 벡터를 조정하여, 상기 서브 블록의 제1 타깃 움직임 벡터를 획득하고; 인코딩단은 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제2 원본 움직임 벡터를 조정하여, 상기 서브 블록의 제2 타깃 움직임 벡터를 획득한다.
일 예에서, 현재 블록에 대해 움직임 벡터 조정 모드를 활성화하면, 인코딩단은 제1 픽셀값 및 제2 픽셀값을 기반으로, 국부적 검색 방법을 통해, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터를 미세 조정하여, 보다 양호한 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 획득할 수 있고, 계속하여 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 사용하여 왜곡이 더 작은 예측값을 생성한다.
일 예에서, 현재 블록은 적어도 하나의 서브 블록을 포함할 수 있고, 하나의 서브 블록만 포함하면, 상기 서브 블록이 현재 블록 자체로 된다. 상기 서브 블록의 경우, 상기 서브 블록은 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터에 대응되고, 조정 후, 상기 서브 블록은 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터에 대응된다.
현재 블록에 서브 블록 A 및 서브 블록 B가 포함되면, 서브 블록 A의 경우, 서브 블록 A는 제1 원본 움직임 벡터 A1 및 제2 원본 움직임 벡터 A2에 대응되고, 조정 후, 서브 블록 A는 제1 타깃 움직임 벡터 A3 및 제2 타깃 움직임 벡터 A4에 대응된다. 서브 블록 B의 경우, 서브 블록 B는 제1 원본 움직임 벡터 B1 및 제2 원본 움직임 벡터 B2에 대응되고, 조정 후, 서브 블록 B는 제1 타깃 움직임 벡터 B3 및 제2 타깃 움직임 벡터 B4에 대응된다.
서브 블록 A에 대응되는 제1 원본 움직임 벡터 A1과 서브 블록 B에 대응되는 제1 원본 움직임 벡터 B1은 동일할 수 있고, 모두 현재 블록의 제1 원본 움직임 벡터이며; 서브 블록 A에 대응되는 제2 원본 움직임 벡터 A2와 서브 블록 B에 대응되는 제2 원본 움직임 벡터 B2는 동일할 수 있고, 모두 현재 블록의 제2 원본 움직임 벡터이다.
각각의 서브 블록의 제1 원본 움직임 벡터를 각각 조정하므로, 따라서 서브 블록 A에 대응되는 제1 타깃 움직임 벡터 A3과 서브 블록 B에 대응되는 제1 타깃 움직임 벡터 B3은 동일하거나 상이할 수 있다. 각각의 서브 블록의 제2 원본 움직임 벡터를 각각 조정하므로, 따라서 서브 블록 A에 대응되는 제2 타깃 움직임 벡터 A4와 서브 블록 B에 대응되는 제2 타깃 움직임 벡터 B4는 동일하거나 상이할 수 있다.
원본 움직임 벡터의 조정 방식에 대해서는, 후속 실시예를 참조할 수 있으며, 여기서 더이상 서술하지 않는다.
단계 304에서, 인코딩단은 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터에 따라 현재 블록의 각각의 서브 블록에 대해 움직임 보상을 수행한다. 예를 들어, 현재 블록에 서브 블록 A 및 서브 블록 B가 포함되면, 서브 블록 A의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 사용하여 서브 블록 A에 대해 움직임 보상을 수행하고, 또한 서브 블록 B의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 사용하여 서브 블록 B에 대해 움직임 보상을 수행할 수 있다.
움직임 보상 방식에 대해서는, 후속 실시예를 참조할 수 있으며, 여기서 더이상 서술하지 않는다.
단계 305에서, 인코딩단은 현재 블록의 각각의 서브 블록의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 보존하되, 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터는 후속 블록의 인코딩 참조에 사용된다.
인코딩 참조의 구현 방식에 대해서는, 후속 실시예를 참조할 수 있으며, 여기서 더이상 서술하지 않는다.
실시예 3: 도 4에 도시된 바와 같이, 본 발명의 실시예에서 제공된 인코딩 및 디코딩 방법의 흐름 모식도이고, 상기 인코딩 및 디코딩 방법은 디코딩단에 적용될 수 있으며, 상기 인코딩 및 디코딩 방법은 하기와 같은 단계를 포함할 수 있다.
단계 401에서, 디코딩단은 현재 블록의 특징 정보가 특정 조건을 만족하는지 여부를 판단한다. 그렇다면 단계 402를 수행하고, 그렇지 않으면 본 발명에서 제공된 움직임 벡터 조정 방식을 사용할 필요가 없으며, 이 처리 방식에 대해 한정하지 않는다.
일 예에서, 디코딩단은 인코딩단에 의해 송신된 인코딩 비트 스트림을 수신하고, 디코딩된 정보에 기반하여 현재 블록의 특징 정보가 특정 조건을 만족하는지 여부를 판단할 수 있다. 현재 블록의 특징 정보가 특정 조건을 만족하면, 현재 블록의 움직임 정보가 충분히 정확하지 않음을 설명하므로, 따라서 움직임 벡터 조정 모드를 활성화하여 단계 402를 수행한다. 현재 블록의 특징 정보가 특정 조건을 만족하지 않으면, 현재 블록의 움직임 정보가 충분히 정확하다는 것을 설명하므로, 따라서 움직임 벡터 조정 모드를 활성화하지 않으며, 본 발명에서 제공된 움직임 벡터 조정 방식을 사용할 필요가 없다.
단계 402에서, 디코딩단은 현재 블록의 제1 원본 움직임 벡터에 기반하여, 제1 참조 프레임으로부터 현재 블록에 대응되는 제1 참조 블록을 결정하고; 현재 블록의 제2 원본 움직임 벡터에 기반하여, 제2 참조 프레임으로부터 현재 블록에 대응되는 제2 참조 블록을 결정한다. 간편하게 구분하기 위해, 제1 참조 블록 중 각각의 픽셀점의 픽셀값을 제1 픽셀값으로 지칭하고, 제2 참조 블록 중 각각의 픽셀점의 픽셀값을 제2 픽셀값으로 지칭한다.
단계 403에서, 현재 블록의 각각의 서브 블록에 대해, 디코딩단은 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제1 원본 움직임 벡터를 조정하여, 상기 서브 블록의 제1 타깃 움직임 벡터를 획득하고; 디코딩단은 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제2 원본 움직임 벡터를 조정하여, 상기 서브 블록의 제2 타깃 움직임 벡터를 획득한다.
단계 404에서, 현재 블록의 각각의 서브 블록에 대해, 디코딩단은 상기 서브 블록의 제1 타깃 움직임 벡터 및 상기 서브 블록의 제2 타깃 움직임 벡터에 따라, 상기 서브 블록에 대해 움직임 보상을 수행한다.
단계 405에서, 디코딩단은 현재 블록의 각각의 서브 블록의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 보존하되, 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터는 후속 블록의 디코딩 참조에 사용된다.
실시예 4: 단계 301 및 단계 401에서, 현재 블록의 특징 정보가 특정 조건을 만족하는지 여부를 판단한다. 본 실시예에서, 특징 정보가 하기와 같은 모든 조건을 만족할 경우, 현재 블록의 특징 정보가 특정 조건을 만족하는 것으로 결정하여, 움직임 벡터 조정 모드를 활성화한다. 그렇지 않으면, 움직임 벡터 조정 모드를 활성화하지 않는다.
현재 블록에 대응되는 움직임 정보 속성은, 현재 블록이 주변 블록의 움직임 정보를 직접 재사용하고, 움직임 정보 차이를 인코딩하지 않는 것을 포함한다. 현재 블록에 대응되는 움직임 정보 속성은, 현재 블록의 각각의 서브 블록의 움직임 정보가 동일하고, 즉 서브 블록 움직임 정보 예측 모드를 사용하지 않는 것을 포함한다. 현재 블록에 대응되는 움직임 정보 속성은, 현재 블록의 움직임 정보가 2개의 상이한 방향의 움직임 정보를 포함하는 것을 포함한다. 현재 블록의 사이즈 정보는, 현재 블록의 사이즈가 한정된 범위 내에 있는 것을 포함하며, 이 사이즈가 한정된 범위 내에 있는 것에 대해서는, 후속 실시예에서 소개할 것이다.
실시예 5: 단계 301 및 단계 401에서, 현재 블록의 특징 정보가 특정 조건을 만족하는지 여부를 판단한다. 본 실시예에서, 특징 정보가 하기와 같은 모든 조건을 만족할 경우, 현재 블록의 특징 정보가 특정 조건을 만족하는 것으로 결정하여, 움직임 벡터 조정 모드를 활성화한다. 그렇지 않으면, 움직임 벡터 조정 모드를 활성화하지 않는다.
현재 블록에 대응되는 움직임 정보 예측 모드는 Normal Merge 모드(즉 일반 병합 모드) 또는 CIIP 모드(즉 인터 예측값과 인트라 예측값을 연합하여 새로운 예측값을 생성하는 병합 모드)를 사용하거나; 현재 블록에 대응되는 움직임 정보 예측 모드는 MMVD 모드(즉 움직임 정보 차이값을 인코딩하는 병합 모드), SB Merge 모드(즉 서브 블록 움직임 정보를 사용하는 병합 모드), 또는 TPM 모드(즉 삼각 예측에 사용되는 병합 모드)를 사용하지 않는다.
현재 블록에 대응되는 움직임 정보 속성은, 현재 블록의 움직임 정보가 2개의 상이한 방향의 움직임 정보를 포함하는 것을 포함하고, 2개의 상이한 방향의 움직임 정보에 대응되는 2개의 참조 프레임과 현재 프레임의 거리는 동일하다. 현재 블록의 사이즈 정보는, 현재 블록의 사이즈가 한정된 범위 내에 있는 것을 포함한다.
설명해야 할 것은, 병합 모드(즉 Merge 모드)는, 일반 병합 모드(Normal Merge 모드로 지칭됨); 삼각 예측에 사용되는 병합 모드(TPM 모드로 지칭됨); 움직임 정보 차이를 인코딩하는 병합 모드(MMVD 모드로 지칭됨); 서브 블록 움직임 정보를 사용하는 병합 모드(SB Merge 모드로 지칭됨); 인터 예측값과 인트라 예측값을 연합하여 새로운 예측값을 생성하는 병합 모드(CIIP 모드로 지칭됨)와 같은 유형의 병합 모드를 포함하지만 이에 한정되지 않는다.
일 예에서, Normal Merge 모드는 잔차를 인코딩하지 않는 일반 병합 모드(즉 skip 모드) 및 잔차를 인코딩하는 일반 병합 모드를 포함한다. MMVD 모드는 잔차를 인코딩하지 않는 MMVD 모드를 포함한다.
실시예 6: 단계 301 및 단계 401에서, 현재 블록의 특징 정보가 특정 조건을 만족하는지 여부를 판단한다. 본 실시예에서, 특징 정보가 하기와 같은 모든 조건을 만족할 경우, 현재 블록의 특징 정보가 특정 조건을 만족하는 것으로 결정하여, 움직임 벡터 조정 모드를 활성화한다. 그렇지 않으면, 움직임 벡터 조정 모드를 활성화하지 않는다.
현재 블록에 대응되는 움직임 정보 예측 모드는 Normal Merge 모드(즉 일반 병합 모드), CIIP 모드(즉 인터 예측값과 인트라 예측값을 연합하여 새로운 예측값을 생성하는 병합 모드), 또는 TPM 모드(즉 삼각 예측에 사용되는 병합 모드)를 사용하거나; 현재 블록에 대응되는 움직임 정보 예측 모드는 MMVD 모드(즉 움직임 정보 차이값을 인코딩하는 병합 모드), 또는 SB Merge 모드(즉 서브 블록 움직임 정보를 사용하는 병합 모드)를 사용하지 않는다.
현재 블록에 대응되는 움직임 정보 속성은, 현재 블록의 움직임 정보가 2개의 상이한 방향의 움직임 정보를 포함하는 것을 포함하고, 2개의 상이한 방향의 움직임 정보에 대응되는 2개의 참조 프레임과 현재 프레임의 거리는 동일하다. 현재 블록의 사이즈 정보는, 현재 블록의 사이즈가 한정된 범위 내에 있는 것을 포함한다.
실시예 7: 단계 301 및 단계 401에서, 현재 블록의 특징 정보가 특정 조건을 만족하는지 여부를 판단한다. 본 실시예에서, 특징 정보가 하기와 같은 모든 조건을 만족할 경우, 현재 블록의 특징 정보가 특정 조건을 만족하는 것으로 결정하여, 움직임 벡터 조정 모드를 활성화한다. 그렇지 않으면, 움직임 벡터 조정 모드를 활성화하지 않는다.
현재 블록에 대응되는 움직임 정보 예측 모드는 Normal Merge 모드(즉 일반 병합 모드), CIIP 모드(즉 인터 예측값과 인트라 예측값을 연합하여 새로운 예측값을 생성하는 병합 모드), TPM 모드(즉 삼각 예측에 사용되는 병합 모드), 또는 MMVD 모드(즉 움직임 정보 차이값을 인코딩하는 병합 모드)를 사용하거나; 현재 블록에 대응되는 움직임 정보 예측 모드는 SB Merge 모드(즉 서브 블록 움직임 정보를 사용하는 병합 모드)를 사용하지 않는다.
현재 블록에 대응되는 움직임 정보 속성은, 현재 블록의 움직임 정보가 2개의 상이한 방향의 움직임 정보를 포함하는 것을 포함하고, 2개의 상이한 방향의 움직임 정보에 대응되는 2개의 참조 프레임과 현재 프레임의 거리는 동일하다. 현재 블록의 사이즈 정보는, 현재 블록의 사이즈가 한정된 범위 내에 있는 것을 포함한다.
실시예 8: 단계 301 및 단계 401에서, 현재 블록의 특징 정보가 특정 조건을 만족하는지 여부를 판단한다. 본 실시예에서, 특징 정보가 하기와 같은 모든 조건을 만족할 경우, 현재 블록의 특징 정보가 특정 조건을 만족하는 것으로 결정하여, 움직임 벡터 조정 모드를 활성화한다. 그렇지 않으면, 움직임 벡터 조정 모드를 활성화하지 않는다.
현재 블록에 대응되는 움직임 정보 예측 모드는 Normal Merge 모드 또는 CIIP 모드를 사용하고; 현재 블록에 대응되는 움직임 정보 예측 모드는 MMVD 모드, SB Merge 모드, 또는 TPM 모드를 사용하지 않거나; 현재 블록에 대응되는 움직임 정보 예측 모드는 Normal Merge 모드, CIIP 모드, 또는 TPM 모드를 사용하고; 현재 블록에 대응되는 움직임 정보 예측 모드는 MMVD 모드, 또는 SB Merge 모드를 사용하지 않거나; 현재 블록에 대응되는 움직임 정보 예측 모드는 Normal Merge 모드, CIIP 모드, TPM 모드, 또는 MMVD 모드를 사용하고; 현재 블록에 대응되는 움직임 정보 예측 모드는 SB Merge 모드를 사용하지 않는다.
현재 블록에 대응되는 움직임 정보 속성은, 현재 블록의 움직임 정보가 2개의 상이한 방향의 움직임 정보를 포함하는 것을 포함하고, 2개의 상이한 방향의 움직임 정보에 대응되는 2개의 참조 프레임과 현재 프레임의 거리가 동일한 것을 제한할 필요가 없으며, 즉 이 제한 조건을 제거한다. 현재 블록의 사이즈 정보는, 현재 블록의 사이즈가 한정된 범위 내에 있는 것을 포함한다.
실시예 9: 상기 실시예 4 내지 실시예 8에서 “현재 블록의 사이즈가 한정된 범위 내에 있”는 것에 대해, 현재 블록의 사이즈가 하기와 같은 조건을 만족하면, 현재 블록의 사이즈가 한정된 범위 내에 있는 것으로 결정한다.
현재 블록의 폭은 [제1 임계값, 제2 임계값] 범위 내에 있고, 제1 임계값은 4일 수 있으며, 제2 임계값은 128일 수 있다. 현재 블록의 높이는 [제3 임계값, 제4 임계값] 범위 내에 있고, 제3 임계값은 8일 수 있으며, 제4 임계값은 128일 수 있다. 예시적으로, 제1 임계값, 제2 임계값, 제3 임계값, 제4 임계값은 모두 2의 n 거듭 제곱일 수 있고, n은 1보다 크거나 같은 정수이다. 현재 블록의 면적은 [제5 임계값, 제6 임계값] 범위 내에 있고, 제5 임계값은 64일 수 있으며, 제6 임계값은 128*128=16384일 수 있다. 예시적으로, 제5 임계값, 제6 임계값은 4의 m 거듭 제곱일 수 있고, m은 1보다 크거나 같은 정수이다. 상기 예에서, 표현식 [a,b]는 a보다 크거나 같고, b보다 작거나 같은 것을 의미할 수 있다.
실시예 10: 단계 302 및 단계 402에서, 제1 원본 움직임 벡터에 기반하여, 제1 참조 프레임으로부터 현재 블록에 대응되는 제1 참조 블록을 결정하고, 제1 참조 블록 중 각각의 픽셀점의 픽셀값을 제1 픽셀값으로 지칭하며; 제2 원본 움직임 벡터에 기반하여, 제2 참조 프레임으로부터 현재 블록에 대응되는 제2 참조 블록을 결정하고, 제2 참조 블록 중 각각의 픽셀점의 픽셀값을 제2 픽셀값으로 지칭하며, 아래에 이에 대해 설명한다.
제1 참조 블록 중 각각의 픽셀점의 제1 픽셀값은 제1 참조 블록 중 인접한 픽셀점의 픽셀값을 보간하여 획득되거나, 제1 참조 블록 중 인접한 픽셀점의 픽셀값을 복제하여 획득되고; 제2 참조 블록 중 각각의 픽셀점의 제2 픽셀값은 제2 참조 블록 중 인접한 픽셀점의 픽셀값을 보간하여 획득되거나, 제2 참조 블록 중 인접한 픽셀점의 픽셀값을 복제하여 획득된다. 제1 참조 블록의 사이즈는 제2 참조 블록의 사이즈와 동일하고, 제1 참조 블록/제2 참조 블록의 폭값은 현재 블록의 폭값과 검색 범위에 기반하여 결정되며, 제1 참조 블록/제2 참조 블록의 높이값은 현재 블록의 높이값과 검색 범위에 기반하여 결정된다.
도 5에 도시된 바와 같이, 현재 블록의 폭이 W이고, 높이가 H라고 가정하고, 제1 원본 움직임 벡터는 MV0으로, 제2 원본 움직임 벡터는 MV1로 표기한다. 제1 참조 프레임에서 제1 원본 움직임 벡터 MV0의 대응 위치로부터 면적이 (W+FS-1)*(H+FS-1)인 정수 픽셀 블록을 얻고, 이 정수 픽셀 블록을 정수 픽셀 블록 A로 표기한다. 제2 참조 프레임에서 제2 원본 움직임 벡터 MV1의 대응 위치로부터 면적이 (W+FS-1)*(H+FS-1)인 정수 픽셀 블록을 얻고, 이 정수 픽셀 블록을 정수 픽셀 블록 B로 표기한다.
일 예에서, 면적이 (W+FS-1)*(H+FS-1)인 정수 픽셀 블록 A를 기반으로, 이중선형 보간법을 통해, 사이즈가 (W+2*SR)*(H+2*SR)인 초기 참조 픽셀 블록을 획득할 수 있고, 이 초기 참조 픽셀 블록을 제1 참조 블록으로 표기한다. 면적이 (W+FS-1)*(H+FS-1)인 정수 픽셀 블록B를 기반으로, 이중선형 보간법을 통해, 사이즈가 (W+2*SR)*(H+2*SR)인 초기 참조 픽셀 블록을 획득할 수 있으며, 이 초기 참조 픽셀 블록을 제2 참조 블록으로 표기한다.
다른 일 예에서, 면적이 (W+FS-1)*(H+FS-1)인 정수 픽셀 블록 A를 기반으로, 직접 복제(보간이 필요없음)하는 방식을 통해, 사이즈가 (W+2*SR)*(H+2*SR)인 초기 참조 픽셀 블록을 획득할 수 있고, 이 초기 참조 픽셀 블록을 제1 참조 블록으로 표기한다. 면적이 (W+FS-1)*(H+FS-1)인 정수 픽셀 블록B를 기반으로, 직접 복제하는 방식을 통해, 사이즈가 (W+2*SR)*(H+2*SR)인 초기 참조 픽셀 블록을 획득할 수 있으며, 이 초기 참조 픽셀 블록을 제2 참조 블록으로 표기한다.
예시적으로, 밝기 성분(후속의 검색 과정에서 복잡도를 감소하기 위해 밝기 성분만 사용하여 비용 값을 계산하기 때문임)에만 초점을 맞출 수 있고, 면적이 (W+FS-1)*(H+FS-1)인 정수 픽셀 블록(예를 들어, 정수 픽셀 블록A 및 정수 픽셀 블록B)을 기반으로, 사이즈가 (W+2*SR)*(H+2*SR)인 초기 참조 픽셀 블록, 즉 제1 참조 블록(예를 들어, Pred_Inter0) 및 제2 참조 블록(예를 들어, Pred_Inter1)을 획득한다.
일 예에서, FS는 보간 필터의 탭 수일 수 있고, 예를 들어 8일 수 있다.
이중선형 보간법을 통해 제1 참조 블록/제2 참조 블록을 획득하는 것은, 제1 참조 블록/제2 참조 블록 중 인접한 픽셀점의 픽셀값을 보간하여 제1 참조 블록/제2 참조 블록 중 각각의 픽셀점의 픽셀값을 획득하는 것을 의미하며, 이에 대해 한정하지 않는다. 복제를 통해 제1 참조 블록/제2 참조 블록을 획득하는 것은, 제1 참조 블록/제2 참조 블록 중 인접한 픽셀점의 픽셀값을 복제하여 제1 참조 블록/제2 참조 블록 중 각각의 픽셀점의 픽셀값을 획득하는 것을 의미하며, 이에 대해 한정하지 않는다.
상기 실시예를 참조하면, 제1 참조 블록의 면적은 (W+2*SR)*(H+2*SR)이고, 제2 참조 블록의 면적은 (W+2*SR)*(H+2*SR)이며, 다시 말해서, 제1 참조 블록/제2 참조 블록의 폭값은 W+2*SR이고, 제1 참조 블록/제2 참조 블록의 높이값은 H+2*SR이다. W는 현재 블록의 폭이고, H는 현재 블록의 높이이며, SR은 검색 범위이고, 즉 후속 실시예의 반복 횟수이며, SR은 즉 타깃 움직임 벡터와 원본 움직임 벡터 최대 수평/수직 성분 보간이고, 예를 들어 SR은 2일 수 있다.
제1 참조 블록 및 제2 참조 블록의 경우, 후속 과정에서 움직임 벡터 조정에 사용된다.
실시예 11: 단계 303 및 단계 403에서, 현재 블록의 각각의 서브 블록에 대해, 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제1 원본 움직임 벡터를 조정하여, 서브 블록의 제1 타깃 움직임 벡터를 획득하고; 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제2 원본 움직임 벡터를 조정하여, 서브 블록의 제2 타깃 움직임 벡터를 획득한다.
하나의 서브 블록(예를 들어, 현재 블록의 각각의 dx*dy 크기의 서브 블록이며, 예를 들어, 16*16 크기의 서브 블록이거나, 더 작은 하나의 정수 블록임)의 처리 과정을 예로, 원본 움직임 벡터의 조정 과정을 소개한다.
단계 a1에서, 제1 원본 움직임 벡터 또는 제2 원본 움직임 벡터를 중심 움직임 벡터로 결정한다.
예를 들어, 제1 원본 움직임 벡터가 (4, 4)이고, 제2 원본 움직임 벡터가 (-4, -4)라고 가정하면, 제1 원본 움직임 벡터(4, 4) 또는 제2 원본 움직임 벡터(-4, -4)를 중심 움직임 벡터로 결정할 수 있다. 설명의 편이상, 제1 원본 움직임 벡터(4, 4)를 중심 움직임 벡터로 결정하는 것을 예로, 제2 원본 움직임 벡터(-4, -4)를 중심 움직임 벡터로 결정하는 프로세스는 유사하다.
단계 a2에서, 중심 움직임 벡터에 대응되는 에지 움직임 벡터를 결정한다.
예를 들어, 중심 움직임 벡터(x, y)를 상이한 방향으로 S만큼 오프셋하여, 상이한 방향의 에지 움직임 벡터(x, y+S), 에지 움직임 벡터(x, y-S), 에지 움직임 벡터(x+S, y), 에지 움직임 벡터(x-S, y), 에지 움직임 벡터(x+right, y+down)를 획득할 수 있다. right는 S 또는 -S일 수 있고, down은 S 또는 -S일 수 있으며, right 및 down의 결정 방식은 후속 실시예를 참조한다.
도 6에 도시된 바를 참조하면, 중심 움직임 벡터(x, y)를 중심으로, 즉 중심 움직임 벡터를 (0, 0)으로 하고, S는 1, right 및 down은 모두 1인 것을 예로, 중심 움직임 벡터(0, 0)에 대응되는 에지 움직임 벡터는 에지 움직임 벡터(0, 1), 에지 움직임 벡터(0, -1), 에지 움직임 벡터(1, 0), 에지 움직임 벡터(-1, 0), 에지 움직임 벡터(1, 1)를 포함한다.
단계 a3에서, 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 중심 움직임 벡터에 대응되는 제1 비용 값, 각각의 에지 움직임 벡터에 대응되는 제2 비용 값을 획득한다.
예를 들어, 제1 참조 블록으로부터 중심 움직임 벡터(0, 0)에 대응되는 서브 참조 블록 A1을 복제하여 획득하고, 서브 참조 블록 A1은 제1 참조 블록 중 중심 움직임 벡터(0, 0)의 서브 참조 블록이다. 서브 참조 블록 A1의 크기는 현재 블록의 크기이고, 서브 참조 블록 A1은 제1 참조 블록 중 가장 중심적인 W*H의 블록이다.
제2 참조 블록으로부터 중심 움직임 벡터(0, 0)에 대응되는 서브 참조 블록 B1을 복제하여 획득하고, 서브 참조 블록 B1은 제2 참조 블록 중 중심 움직임 벡터(0, 0)의 서브 참조 블록이다. 서브 참조 블록 B1의 크기는 현재 블록의 크기이고, 서브 참조 블록 B1은 제2 참조 블록 중 가장 중심적인 W*H의 블록이다.
다음, 서브 참조 블록 A1의 제1 픽셀값 및 서브 참조 블록 B1의 제2 픽셀값을 사용하여, 중심 움직임 벡터(0, 0)에 대응되는 비용 값 1을 획득하고, 비용 값의 결정 방식은 후속 실시예를 참조한다.
제1 참조 블록으로부터 에지 움직임 벡터(0, 1)에 대응되는 서브 참조 블록 A2를 복제하여 획득하고, 서브 참조 블록 A2는 제1 참조 블록 중 에지 움직임 벡터(0, 1)의 서브 참조 블록이다. 서브 참조 블록 A2의 크기는 현재 블록의 크기이고, 서브 참조 블록 A2는 제1 참조 블록 중 W*H의 블록이다.
제2 참조 블록으로부터 에지 움직임 벡터(0, 1)의 대칭 움직임 벡터(0, -1)에 대응되는 서브 참조 블록 B2를 복제하여 획득하고, 서브 참조 블록 B2는 제2 참조 블록 중 움직임 벡터(0, -1)의 서브 참조 블록이다. 서브 참조 블록 B2의 크기는 현재 블록의 크기이고, 제2 참조 블록 중 W*H의 블록이다.
다음, 서브 참조 블록 A2의 제1 픽셀값 및 서브 참조 블록 B2의 제2 픽셀값을 사용하여, 에지 움직임 벡터(0, 1)에 대응되는 비용 값 2를 획득하고, 비용 값의 결정 방식은 후속 실시예를 참조한다.
에지 움직임 벡터(0, 1)에 대응되는 비용 값 2의 결정 방식에 기반하여, 에지 움직임 벡터(0, -1)에 대응되는 비용 값 3, 에지 움직임 벡터(1, 0)에 대응되는 비용 값 4, 에지 움직임 벡터(-1, 0)에 대응되는 비용 값 5, 에지 움직임 벡터(1, 1)에 대응되는 비용 값 6을 결정할 수 있다.
단계 a4에서, 제1 비용 값 및 제2 비용 값에 따라, 중심 움직임 벡터 및 에지 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용한다. 예를 들어, 비용 값이 가장 작은 움직임 벡터를 최적 움직임 벡터로 사용할 수 있다. 예를 들어, 에지 움직임 벡터(0, 1)에 대응되는 비용 값 2가 가장 작은 것으로 가정하면, 비용 값 2에 대응되는 에지 움직임 벡터(0, 1)를 최적 움직임 벡터로 사용할 수 있다.
단계 a5에서, 종료 조건을 만족하는지 여부를 판단한다. 그렇지 않으면, 상기 최적 움직임 벡터를 중심 움직임 벡터로 결정할 수 있고, 단계 a2로 되돌아간다. 그렇다면, 단계 a6을 수행할 수 있다.
일 예에서, 반복 횟수/검색 범위가 임계값에 도달하면, 종료 조건을 만족하고; 반복 횟수/검색 범위가 임계값에 도달하지 않으면, 종료 조건을 만족하지 않는다. 예를 들어, SR을 2로, 즉 임계값이 2라고 가정하면, 2회의 반복 과정을 허용한다. 반복 횟수/검색 범위가 2회에 이미 도달하였으면, 즉 단계 a2 내지 단계 a4가 이미 2회 수행되었으면, 종료 조건을 만족하고; 그렇지 않으면 종료 조건을 만족하지 않는다.
다른 일 예에서, 중심 움직임 벡터 및 에지 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용한 후, 중심 움직임 벡터를 선택하여 최적 움직임 벡터로 사용하면, 종료 조건을 만족한다.
단계 a6에서, 최적 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값(제1 원본 움직임 벡터를 조정하는데 사용됨) 및 제2 정수 픽셀 움직임 벡터 조정값(제2 원본 움직임 벡터를 조정하는데 사용됨)을 결정한다.
일 예에서, 최적 움직임 벡터 및 제1 원본 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값을 결정하고, 제1 정수 픽셀 움직임 벡터 조정값에 따라 제2 정수 픽셀 움직임 벡터 조정값을 결정할 수 있으며, 제2 정수 픽셀 움직임 벡터 조정값과 제1 정수 픽셀 움직임 벡터 조정값은 대칭된다.
예를 들어, 첫 번째 반복 과정에서 최적 움직임 벡터는 에지 움직임 벡터(0, 1)이고, 에지 움직임 벡터(0, 1)를 중심으로 두 번째 반복이 수행되며, 두 번째 반복 과정에서 최적 움직임 벡터는 에지 움직임 벡터(0, 1)이고, 지금까지 반복 과정이 완료되었다고 가정하면, 제1 정수 픽셀 움직임 벡터 조정값은 (0, 2)이며, 즉 에지 움직임 벡터(0, 1)와 에지 움직임 벡터(0, 1)의 합이다.
이에 기반하여, 제1 원본 움직임 벡터가 (4, 4)라고 가정하면, 첫 번째 반복 과정에서 최적 움직임 벡터는 에지 움직임 벡터(0, 1)이고, 즉 최적 움직임 벡터는 최적 움직임 벡터(4, 5)에 대응될 수 있다. 에지 움직임 벡터(0, 1)를 중심으로 두 번째 반복이 수행되며, 두 번째 반복 과정에서 최적 움직임 벡터는 에지 움직임 벡터(0, 1)이고, 즉 최적 움직임 벡터는 최적 움직임 벡터(4, 6)에 대응될 수 있다.
종합해보면, 최적 움직임 벡터(4, 6) 및 제1 원본 움직임 벡터(4, 4)에 따라 제1 정수 픽셀 움직임 벡터 조정값을 결정하고, 제1 정수 픽셀 움직임 벡터 조정값은 최적 움직임 벡터(4, 6)와 제1 원본 움직임 벡터(4, 4)의 차이며, 즉 제1 정수 픽셀 움직임 벡터 조정값은 (0, 2)이다.
다음, 제1 정수 픽셀 움직임 벡터 조정값(0, 2)에 따라 제2 정수 픽셀 움직임 벡터 조정값을 결정하고, 제2 정수 픽셀 움직임 벡터 조정값은 (0, -2)일 수 있고, 즉 (0, -2)의 대칭값이다.
단계 a7에서, 최적 움직임 벡터에 따라 제1 분수 픽셀 움직임 벡터 조정값(제1 원본 움직임 벡터를 조정하는데 사용됨) 및 제2 분수 픽셀 움직임 벡터 조정값(제2 원본 움직임 벡터를 조정하는데 사용됨)을 결정한다.
일 예에서, 최적 움직임 벡터에 대응되는 비용 값, 최적 움직임 벡터에 대응되는 에지 움직임 벡터에 대응되는 비용 값에 따라, 제1 분수 픽셀 움직임 벡터 조정값을 결정한 다음, 상기 제1 분수 픽셀 움직임 벡터 조정값에 따라 제2 분수 픽셀 움직임 벡터 조정값을 결정할 수 있다.
예를 들어, x0 = N*(E(-1,0) - E(1,0)) / (E(-1,0) + E(1,0) - 2* E(0,0)), y0 = N*(E(0,-1) - E(0,1)) / (E(0,-1) + E(0,1) - 2* E(0,0))이고, 1/2, 1/4, 1/8 및 1/16의 움직임 벡터 픽셀 정밀도의 경우, N=1, 2, 4 및 8이다. 다음, (x0, y0)을 deltaMv로 부여하고, SPMV= deltaMv/2N이며, 현재가 1/16의 움직임 벡터 픽셀 정밀도이면, SPMV는 (x0/16, y0/16)이다.
상기 공식에서, SPMV는 제1 분수 픽셀 움직임 벡터 조정값이고, N은 움직임 벡터 픽셀 정밀도와 관계가 있으며, 예를 들어 움직임 벡터 픽셀 정밀도가 1/2이면 N은 1이고, 움직임 벡터 픽셀 정밀도가 1/4이면 N은 2이며, 움직임 벡터 픽셀 정밀도가 1/8이면, N은 4이고, 움직임 벡터 픽셀 정밀도가 1/16이면 N은 8이다.
상기 공식에서, E(0,0)은 최적 움직임 벡터의 비용 값을 나타내고; E(-1,0)은 최적 움직임 벡터를 중심으로 하는, 최적 움직임 벡터(0,0)의 에지 움직임 벡터(-1,0)의 비용 값이며; E(1,0)은 최적 움직임 벡터를 중심으로 하는, 최적 움직임 벡터(0,0)의 에지 움직임 벡터(1,0)의 비용 값이고; E(0,-1)은 최적 움직임 벡터를 중심으로 하는, 최적 움직임 벡터(0,0)의 에지 움직임 벡터(0,-1)의 비용 값이며; E(0,1)은 최적 움직임 벡터를 중심으로 하는, 최적 움직임 벡터(0,0)의 에지 움직임 벡터(0,1)의 비용 값이다. 각 움직임 벡터의 비용 값에 대해, 그 결정 방식은 상기 실시예를 참조할 수 있으며, 여기서 더이상 서술하지 않는다.
상기 방식을 사용하여 제1 분수 픽셀 움직임 벡터 조정값을 결정한 후, 제1 분수 픽셀 움직임 벡터 조정값에 따라 제2 분수 픽셀 움직임 벡터 조정값을 결정할 수 있고, 제2 분수 픽셀 움직임 벡터 조정값은 제1 분수 픽셀 움직임 벡터 조정값의 대칭값이다. 예를 들어, 제1 분수 픽셀 움직임 벡터 조정값이 (1, 0)이면, 제2 분수 픽셀 움직임 벡터 조정값은 (-1, 0), 즉 (1, 0)의 대칭값이다.
단계 a8에서, 제1 정수 픽셀 움직임 벡터 조정값 및/또는 제1 분수 픽셀 움직임 벡터 조정값에 따라, 제1 원본 움직임 벡터를 조정하여, 제1 타깃 움직임 벡터를 획득한다.
예를 들어, 제1 타깃 움직임 벡터=제1 원본 움직임 벡터+제1 정수 픽셀 움직임 벡터 조정값+제1 분수 픽셀 움직임 벡터 조정값이다. 물론, 상술한 바는 단지 예시로서, 이에 대해 한정하지 않는다.
단계 a9에서, 제2 정수 픽셀 움직임 벡터 조정값 및/또는제2 분수 픽셀 움직임 벡터 조정값에 따라, 제2 원본 움직임 벡터를 조정하여, 제2 타깃 움직임 벡터를 획득한다.
예를 들어, 제2 타깃 움직임 벡터=제2 원본 움직임 벡터+제2 정수 픽셀 움직임 벡터 조정값+제2 분수 픽셀 움직임 벡터 조정값이다. 물론, 상술한 바는 단지 예시로서, 이에 대해 한정하지 않는다.
실시예 12: 단계 303 및 단계 403에서, 현재 블록의 각각의 서브 블록에 대해, 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제1 원본 움직임 벡터를 조정하여, 서브 블록의 제1 타깃 움직임 벡터를 획득하고; 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제2 원본 움직임 벡터를 조정하여, 서브 블록의 제2 타깃 움직임 벡터를 획득한다.
하나의 서브 블록(예를 들어, 현재 블록의 각각의 dx*dy 크기의 서브 블록이며, 예를 들어, 16*16 크기의 서브 블록이거나, 더 작은 정수 블록임)의 처리 과정을 예로, 원본 움직임 벡터의 조정 과정을 소개한다. 제1 원본 움직임 벡터를 Org_MV0으로, 제2 원본 움직임 벡터를 Org_MV1로 표기하고, 제1 원본 움직임 벡터 Org_MV0을 조정한 후, 획득한 제1 타깃 움직임 벡터를 Refined_MV0으로 표기하며, 제2 원본 움직임 벡터 Org_MV1을 조정한 후, 획득한 제2 타깃 움직임 벡터를 Refined_MV1로 표기한다.
단계 b1에서, SR회 반복을 수행하여, 최적의 정수 픽셀 MV 포인트의 정수 픽셀 오프셋을 획득하고, 이를 IntegerDeltaMV로 표기하며, IntegerDeltaMV는 상기 실시예에서 제1 정수 픽셀 움직임 벡터 조정값이다. 예를 들어, 먼저 IntegerDeltaMV를 (0, 0)으로 초기화하고, 매회 반복에 대해 하기와 같은 과정이 수행된다.
단계 b11에서, deltaMV를 (0, 0)으로 설정한다. 최초 반복이면, 제1 참조 블록에서 제1 원본 움직임 벡터의 참조 픽셀을 기반으로, 예측값 블록 A1(즉 제1 참조 블록의 가장 중심적인 W*H의 블록)을 복제하여 획득하고; 제2 참조 블록에서 제2 원본 움직임 벡터의 참조 픽셀을 기반으로, 예측값 블록 B1(즉 제2 참조 블록의 가중 중심적인 W*H의 블록)을 복제하여 획득한다. 예측값 블록 A1 및 예측값 블록 B1에 기반하여 초기 비용 값cost(초기 비용 값은 예측값 블록 A1 및 예측값 블록 B1 기반의 SAD(절대치 차의 합(sum of abstract distortion)이고, 결정 방식은 후속 실시예를 참조 바람)를 획득한다. 상기 초기 비용 값cost가 4*dx*dy/2보다 작고, dxdy가 현재 서브 블록의 폭 및 높이이면, 후속 검색 과정으로 직접 스킵하고 단계 b2를 수행하며, notZeroCost를 false로 설정한다.
단계 b12에서, 도 6에 도시된 바와 같이, 상기 초기점을 중심으로, {Mv(0, 1), Mv(0, -1), Mv(1, 0), Mv(-1, 0), Mv(right, down)}의 순서에 따라 5개의 오프셋 MV(이 5개의 오프셋 MV는 MVOffset으로 지칭됨)를 얻고, 이 5개의 오프셋 MV의 비용 값의 계산과 비교 과정을 수행한다.
예를 들어, 특정된 MVOffset(예를 들어, Mv(0, 1) 등)을 기반으로, 제1 참조 블록 및 제2 참조 블록에서, 이 MVOffset을 통해 두 블록의 예측값 블록(예를 들어, 제1 참조 블록에서 중심 위치 오프셋 MVOffset을 수행하는 W*H 블록, 제2 참조 블록에서 중심 위치 오프셋 -MVOffset(MVOffset과 반대)을 수행하는 W*H 블록)을 획득하고, 2개의 예측값 블록의 다운 샘플링 SAD를 계산하여 MVOffset의 비용 값으로 사용한다.
다음, 비용 값이 가장 작은 MVOffset을 보류하고, 비용 값이 가장 작은 MVOffset을 deltaMV의 값으로 업데이트하며, 비용 값이 가장 작은 MVOffset을 다음 번 반복의 새로운 중심 오프셋 포인트로 사용한다.
deltaMV를 기반으로 IntegerDeltaMV의 값을 업데이트하고, 업데이트된 IntegerDeltaMV=업데이트 전의 IntegerDeltaMV+deltaMV이며, 즉 현재 IntegerDeltaMV의 기초상에 deltaMV를 가한다.
단계 b13에서, 반복을 수행한 후, 최적 MV가 여전히 초기 MV(즉 MVOffset이 아님)이거나 최소 비용 값이 0이면, 다음 번 반복 검색 과정을 수행하지 않고 단계 b2를 수행하며, notZeroCost를 false로 설정한다. 그렇지 않으면, 반복 횟수가 SR에 도달하면, 단계 b2를 수행하고, 반복 횟수가 SR에 도달하지 않으면, 최적 MV를 중심으로 하여, 다음 번 반복 검색 과정을 수행하며 즉 단계 b11로 되돌아간다.
반복 검색 과정이 종료된 후, IntegerDeltaMV의 값을 얻고, 즉 IntegerDeltaMV의 최종 값은 제1 정수 픽셀 움직임 벡터 조정값이며, 후속에 IntegerDeltaMV로 표기한다.
단계 b2에서, 단계 b1의 최적 정수 픽셀 MV 포인트를 중심으로 하여, 최적의 분수 픽셀 오프셋 MV를 획득할 수 있으며, SPMV로 표기하고, SPMV는 상기 실시예에서 제1 분수 픽셀 움직임 벡터 조정값이다. 예를 들어, 먼저 SPMV를 (0, 0)으로 초기화한 다음 하기와 같은 과정을 수행할 수 있다.
단계 b21에서, notZeroCost가 false가 아니고, deltaMV가 (0, 0)인 경우에만, 후속 처리(즉 SPMV를 획득해야 함)를 수행하며, 그렇지 않으면, IntegerDeltaMV 및 SPMV를 사용하여 원본 움직임 벡터를 조정하는 것이 아니라, IntegerDeltaMV를 직접 사용하여 원본 움직임 벡터를 조정한다.
단계 b22에서, E(x, y)를 단계 b1에서 얻은 최적 MV 포인트 오프셋(x, y)의 MV 대응 비용 값(단계 b1에서 계산된 비용 값)으로 표시한다. 중심 및 상하 좌우의 5개 포인트의 E(x, y)를 기반으로, E(x, y)의 최소 포인트의 오프셋(x0, y0)을 얻을 수 있으며, x0 = N*(E(-1,0) - E(1,0)) / (E(-1,0) + E(1,0) - 2* E(0,0)), y0 = N*(E(0,-1) - E(0,1)) / (E(0,-1) + E(0,1) - 2* E(0,0))이다.
일 예에서, 1/2, 1/4, 1/8 및 1/16의 움직임 벡터 픽셀 정밀도의 경우, N=1, 2, 4 및 8이다. 다음, (x0, y0)을 deltaMv로 부여하고, SPMV= deltaMv/2N이며, 현재가 1/16의 움직임 벡터 픽셀 정밀도이면, SPMV는 (x0/16, y0/16)일 수 있다.
E(-1,0)=E(0,0)이면, 수평 좌측으로 하프 픽셀 오프셋한다(deltaMv[0] = -N).
E(1,0)= E(0,0)이면, 수평 우측으로 하프 픽셀 오프셋한다(deltaMv[0] = N).
E(0,-1)= E(0,0)이면, 수직 위로 하프 픽셀 오프셋한다(deltaMv[1] = -N).
E(0,1)= E(0,0)이면, 수직 아래로 하프 픽셀 오프셋한다(deltaMv[1] = N).
상기 처리를 기반으로, SPMV의 값, 즉 제1 분수 픽셀 움직임 벡터 조정값을 획득할 수 있다.
단계 b3에서, 단계 b1의 정수 픽셀 오프셋 IntegerDeltaMV 및 단계 b2의 분수 픽셀 오프셋 SPMV에 기반하여, 최적 오프셋 MV를 획득하고, 이 최적 오프셋 MV를 BestMVoffset으로 표기할 수 있다. 또한, BestMVoffset=IntegerDeltaMV+ SPMV이다.
BestMVoffset을 기반으로 두 방향의 타깃 움직임 벡터: Refined_MV0= Org_MV0+BestMVoffset; Refined_MV1=Org_MV1-BestMVoffset을 획득할 수 있다.
분명한 것은, BestMVoffset=IntegerDeltaMV+SPMV, 즉 제1 정수 픽셀 움직임 벡터 조정값과 제1 분수 픽셀 움직임 벡터 조정값의 합이다. 또한, -IntegerDeltaMV는 IntegerDeltaMV의 대칭값, 즉 제2 정수 픽셀 움직임 벡터 조정값이고, -SPMV는 SPMV의 대칭값, 즉 제2 분수 픽셀 움직임 벡터 조정값이며, 따라서 -BestMVoffset=(-IntegerDeltaMV)+(-SPMV)일 경우, 즉 제2 정수 픽셀 움직임 벡터 조정값과 제2 분수 픽셀 움직임 벡터 조정값의 합이다.
실시예 13: 단계 303 및 단계 403에 대해, 제1 원본 움직임 벡터 Org_MV0 및 제2 원본 움직임 벡터 Org_MV1을 제1 타깃 움직임 벡터 Refined_MV0 및 제2 타깃 움직임 벡터 Refined_MV1로 조정하기 위해, 구현 방식은 실시예 12와 유사하며, 상이한 점은 하기와 같다.
단계 b11에서 “상기 초기 비용 값cost가 4*dx*dy/2보다 작으면, 후속 검색 과정으로 직접 스킵하는” 단계를 제거하고, 다시 말해서, 초기 비용 값cost가 4*dx*dy/2보다 작아도, “후속 검색 과정으로 직접 스킵하는” 것이 아니라, 후속 검색 과정을 계속하며, 즉 단계 b12를 수행해야 한다.
실시예 14: 단계 303 및 단계 403에 대해, 제1 원본 움직임 벡터 Org_MV0 및 제2 원본 움직임 벡터 Org_MV1을 제1 타깃 움직임 벡터 Refined_MV0 및 제2 타깃 움직임 벡터 Refined_MV1로 조정하기 위해, 구현 방식은 실시예 12와 유사하며, 상이한 점은 하기와 같다.
단계 b11에서 “상기 초기 비용 값cost가 4*dx*dy/2보다 작으면, 후속 검색 과정으로 직접 스킵하는” 단계를 제거하고, 다시 말해서, 초기 비용 값cost가 4*dx*dy/2보다 작아도, “후속 검색 과정으로 직접 스킵하는” 것이 아니라, 후속 검색 과정을 계속하며, 즉 단계 b12를 수행해야 한다.
단계 b13에서 “최적 MV가 여전히 초기 MV(즉 MVOffset이 아님)이거나 최소 비용 값이 0이면, 다음 번 반복 검색 과정을 수행하지 않는” 단계를 제거하며, 다시 말해서, 최적 MV가 여전히 초기 MV이거나 최소 비용 값이 0이어도, 다음 번 반복 검색 과정을 수행할 수 있다.
실시예 15: 단계 303 및 단계 403에 대해, 제1 원본 움직임 벡터 Org_MV0 및 제2 원본 움직임 벡터 Org_MV1을 제1 타깃 움직임 벡터 Refined_MV0 및 제2 타깃 움직임 벡터 Refined_MV1로 조정하기 위해, 구현 방식은 실시예 12와 유사하며, 상이한 점은 하기와 같다.
*“notZeroCost”의 관련 과정을 제거하고, 다시 말해서, 단계 b11 및 단계 b13에서, notZeroCost의 값을 설정 및 보존하지 않는다. 단계 b21에서, notZeroCost가 false가 아니고, deltaMV가 (0, 0)인 경우에만 분수 픽셀 오프셋 계산 과정을 수행할 수 있는 것이 아니라, deltaMV가 (0, 0)이면, 분수 픽셀 오프셋 계산 과정(즉 단계 b22)을 수행할 수 있다.
실시예 16: 단계 303 및 단계 403에 대해, 제1 원본 움직임 벡터 Org_MV0 및 제2 원본 움직임 벡터 Org_MV1을 제1 타깃 움직임 벡터 Refined_MV0 및 제2 타깃 움직임 벡터 Refined_MV1로 조정하기 위해, 구현 방식은 실시예 12와 유사하며, 상이한 점은 하기와 같다.
단계 b21에서 “notZeroCost가 false가 아니고, deltaMV가 (0, 0)인 경우에만 후속 처리를 수행하고, 그렇지 않으면, IntegerDeltaMV를 직접 사용하여 원본 움직임 벡터를 조정한다”를 “notZeroCost가 false가 아니고, 현재 최적 정수 픽셀의 상하 좌우에서 1개의 정수 픽셀로 이격된 4개의 포인트의 비용 값이 단계 b1에서 이미 계산된 경우에만 후속 처리를 수행하고, 그렇지 않으면, IntegerDeltaMV를 직접 사용하여 원본 움직임 벡터를 조정한다”로 수정한다.
일 예에서, “후속 처리”는 단계 b22의 분수 픽셀 오프셋 계산 과정을 의미한다.
일 예에서, 단계 b22의 분수 픽셀 오프셋 계산 과정은, 최적 정수 픽셀의 상하 좌우에서 1개의 정수 픽셀로 이격된 4개의 포인트의 비용 값을 사용해야 하므로, 단계 b1에서 이미 계산하여 얻은 “최적 정수 픽셀의 상하 좌우에서 1개의 정수 픽셀로 이격된 4개의 포인트의 비용 값”은 필수 조건이다.
실시예 17: 단계 303 및 단계 403에 대해, 제1 원본 움직임 벡터 Org_MV0 및 제2 원본 움직임 벡터 Org_MV1을 제1 타깃 움직임 벡터 Refined_MV0 및 제2 타깃 움직임 벡터 Refined_MV1로 조정하기 위해, 구현 방식은 실시예 12와 유사하며, 상이한 점은 하기와 같다.
단계 b21에서 “notZeroCost가 false가 아니고, deltaMV가 (0, 0)인 경우에만 후속 처리를 수행하고, 그렇지 않으면, IntegerDeltaMV를 직접 사용하여 원본 움직임 벡터를 조정한다”를 “현재 최적 정수 픽셀의 상하 좌우에서 1개의 정수 픽셀로 이격된 4개의 포인트의 비용 값이 단계 b1에서 이미 계산된 경우에만 후속 처리(즉 분수 픽셀 오프셋 계산 과정)를 수행하고, 그렇지 않으면, IntegerDeltaMV를 직접 사용하여 원본 움직임 벡터를 조정한다”로 수정한다.
실시예 18: 단계 303 및 단계 403에 대해, 제1 원본 움직임 벡터 Org_MV0 및 제2 원본 움직임 벡터 Org_MV1을 제1 타깃 움직임 벡터 Refined_MV0 및 제2 타깃 움직임 벡터 Refined_MV1로 조정하기 위해, 구현 방식은 실시예 12와 유사하며, 상이한 점은 하기와 같다.
단계 b21에서 “notZeroCost가 false가 아니고, deltaMV가 (0, 0)인 경우에만 후속 처리를 수행하고, 그렇지 않으면, IntegerDeltaMV를 직접 사용하여 원본 움직임 벡터를 조정한다”를 “현재 최적 정수 픽셀의 상하 좌우에서 1개의 정수 픽셀로 이격된 4개의 포인트의 비용 값이 단계 b1에서 이미 계산된 경우에만 후속 처리(단계 b22의 분수 픽셀 오프셋 계산 과정)를 수행하고, 그렇지 않으면, 단계 b23을 사용하여 처리한다”로 수정한다.
단계 b23에서, 현재 최적 정수 픽셀점 MV_inter_org를 거리가 가장 가깝고, 또한 주변의 상하 좌우에서 1개의 정수 픽셀로 이격된 4개의 포인트의 비용 값이 단계 b1에서 이미 계산된 정수 픽셀점 MV_inter_nearest로 설정한다. 다음, MV_inter_nearest를 중심으로, 단계 b22의 분수 픽셀 오프셋 계산 과정을 수행하며, 다시 말해서, MV_inter_nearest를 중심으로 SPMV를 획득한다.
예를 들어, 현재 최적 정수 픽셀점 MV_inter_org의 상하 좌우에서 1개의 정수 픽셀로 이격된 4개의 포인트의 비용 값이 단계 b1에서 모두 계산되지 않으면, 최적 정수 픽셀점 MV_inter_org의 주변으로부터 하나의 정수 픽셀점 MV_inter_nearest를 선택하며, 정수 픽셀점 MV_inter_org의 상하 좌우에서 1개의 정수 픽셀로 이격된 4개의 포인트의 비용 값은 모두 단계 b1에서 이미 계산되었다.
다음, 정수 픽셀점 MV_inter_nearest는 현재의 최적 정수 픽셀점으로 사용하고, 정수 픽셀점 MV_inter_nearest를 중심으로 SPMV를 획득하며, 구체적인 획득 방식은 단계 b22를 참조한다.
정수 픽셀점 MV_inter_nearest를 중심으로 SPMV를 획득할 경우, 단계 b22를 참조하고, x0 및 y0을 계산할 경우, x0 및 y0은 [-2N, 2N]의 범위 내로 제한할 수 있다. x0/y0이 2N보다 크면, x0/y0을 2N으로 부여할 수 있고; x0/y0이 -2N보다 작으면, x0/y0을 -2N으로 부여할 수 있다. 1/2, 1/4, 1/8 및 1/16의 움직임 벡터 픽셀 정밀도의 경우, N=1, 2, 4 및 8이다.
실시예 19: 상기 실시예에서, 5개의 에지 움직임 벡터와 같은 중심 움직임 벡터에 대응되는 에지 움직임 벡터를 결정해야 한다. 예를 들어, 중심 움직임 벡터(x, y)를 상이한 방향으로 S만큼 오프셋하여, 순차적으로 상이한 방향의 에지 움직임 벡터(x, y+S), 에지 움직임 벡터(x, y-S), 에지 움직임 벡터(x+S, y), 에지 움직임 벡터(x-S, y), 에지 움직임 벡터(x+right, y+down)를 획득할 수 있다. 또는, 중심 움직임 벡터(x, y)를 상이한 방향으로 S만큼 오프셋하여, 순차적으로 상이한 방향의 에지 움직임 벡터(x, y-S), 에지 움직임 벡터(x, y+S), 에지 움직임 벡터(x-S, y), 에지 움직임 벡터(x+S, y), 에지 움직임 벡터(x+right, y+down)를 획득할 수 있다.
예를 들어, (x, y)가 (0, 0)이고, S가 1이라고 가정하면, (0, 1), (0, -1), (1, 0), (-1, 0), (right, down)의 순서에 따라, 5개의 에지 움직임 벡터를 획득할 수 있다. 또는, (0, -1), (0, 1), (-1, 0), (1, 0), (right, down)의 순서에 따라, 5개의 에지 움직임 벡터를 획득할 수 있다.
실시예 20: 상기 실시예에서, 에지 움직임 벡터(x+right, y+down)의 디폴트 값은 (x-S, y-S)이다. 에지 움직임 벡터(x+S, y)의 비용 값이 에지 움직임 벡터(x-S, y)의 비용 값보다 작으면, right는 S(-S로부터 S로 수정됨)이고; 에지 움직임 벡터(x, y+S)의 비용 값이 에지 움직임 벡터(x, y-S)의 비용 값보다 작으면, down은 S(-S로부터 S로 수정됨)이다. 또는, 에지 움직임 벡터(x+S, y)의 비용 값이 에지 움직임 벡터(x-S, y)의 비용 값보다 작거나 같으면, right는 S(-S로부터 S로 수정됨)이고; 에지 움직임 벡터(x, y+S)의 비용 값이 에지 움직임 벡터(x, y-S)의 비용 값보다 작거나 같으면, down은 S(-S로부터 S로 수정됨)이다.
예를 들어, (0, 1), (0, -1), (1, 0), (-1, 0), (right, down)의 순서에 따라, 5개의 에지 움직임 벡터를 획득하고, (right, down)의 디폴트 값은 (-1, -1)이다. 에지 움직임 벡터(1, 0)의 비용 값이 에지 움직임 벡터(-1, 0)의 비용 값보다 작으면, right는1이고; 에지 움직임 벡터(0, 1)의 비용 값이 에지 움직임 벡터(0, -1)의 비용 값보다 작으면, down은 1이다. 또는, 에지 움직임 벡터(1, 0)의 비용 값이 에지 움직임 벡터(-1, 0)의 비용 값보다 작거나 같으면, right는1이고; 에지 움직임 벡터(0, 1)의 비용 값이 에지 움직임 벡터(0, -1)의 비용 값보다 작거나 같으면, down은 1이다.
예를 들어, (0, -1), (0, 1), (-1, 0), (1, 0), (right, down)의 순서에 따라, 5개의 에지 움직임 벡터를 획득하고, (right, down)의 디폴트 값은 (-1, -1)이다. 에지 움직임 벡터(1, 0)의 비용 값이 에지 움직임 벡터(-1, 0)의 비용 값보다 작으면, right는1이고; 에지 움직임 벡터(0, 1)의 비용 값이 에지 움직임 벡터(0, -1)의 비용 값보다 작으면, down은 1이다. 또는, 에지 움직임 벡터(1, 0)의 비용 값이 에지 움직임 벡터(-1, 0)의 비용 값보다 작거나 같으면, right는1이고; 에지 움직임 벡터(0, 1)의 비용 값이 에지 움직임 벡터(0, -1)의 비용 값보다 작거나 같으면, down은 1이다.
실시예 21: 단계 303 및 단계 403에서, 현재 블록의 각각의 서브 블록에 대해, 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제1 원본 움직임 벡터를 조정하여, 서브 블록의 제1 타깃 움직임 벡터를 획득하고; 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제2 원본 움직임 벡터를 조정하여, 서브 블록의 제2 타깃 움직임 벡터를 획득한다.
하나의 서브 블록(예를 들어, 현재 블록의 각각의 dx*dy 크기의 서브 블록이며, 예를 들어, 16*16 크기의 서브 블록이거나, 더 작은 하나의 정수 블록임)의 처리 과정을 예로, 원본 움직임 벡터의 조정 과정을 소개한다.
단계 c1에서, 제1 원본 움직임 벡터 또는 제2 원본 움직임 벡터를 중심으로, 주변의 움직임 벡터로부터 일부 또는 전체 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 사용한다.
예를 들어, 제1 원본 움직임 벡터를 중심으로, 주변의 움직임 벡터로부터 일부 또는 전체 움직임 벡터를 선택하여, 후보 움직임 벡터로 사용할 수 있으며, 이러한 선택 방식에 대해서는 후속 실시예를 참조한다.
설명의 편의상, 후속 실시예에서, 제1 원본 움직임 벡터를 중심으로 하는 것을 예로 한다.
단계 c2에서, 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제1 원본 움직임 벡터에 대응되는 제3 비용 값, 각각의 후보 움직임 벡터에 대응되는 제4 비용 값을 획득한다.
예를 들어, 제1 참조 블록으로부터 제1 원본 움직임 벡터에 대응되는 서브 참조 블록 A1을 복제하여 획득하되, 서브 참조 블록 A1은 제1 참조 블록에서 제1 원본 움직임 벡터의 서브 참조 블록이고, 서브 참조 블록 A1의 크기는 현재 블록의 크기이다. 제2 참조 블록으로부터 제2 원본 움직임 벡터에 대응되는 서브 참조 블록 B1을 복제하여 획득하되, 서브 참조 블록 B1은 제2 참조 블록에서 제2 원본 움직임 벡터의 서브 참조 블록이고, 서브 참조 블록 B1의 크기는 현재 블록의 크기이다. 다음, 서브 참조 블록 A1의 제1 픽셀값 및 서브 참조 블록 B1의 제2 픽셀값을 사용하여, 제1 원본 움직임 벡터에 대응되는 제3 비용 값을 획득한다.
각각의 후보 움직임 벡터에 대해, 제1 참조 블록으로부터 후보 움직임 벡터에 대응되는 서브 참조 블록 A2를 복제하여 획득하되, 서브 참조 블록 A2는 제1 참조 블록에서 후보 움직임 벡터의 서브 참조 블록이고, 서브 참조 블록 A2의 크기는 현재 블록의 크기이다. 제2 참조 블록으로부터 후보 움직임 벡터의 대칭 움직임 벡터에 대응되는 서브 참조 블록 B2를 복제하여 획득하되, 서브 참조 블록 B2는 제2 참조 블록에서 대칭 움직임 벡터의 서브 참조 블록이고, 서브 참조 블록 B2의 크기는 현재 블록의 크기이다. 서브 참조 블록 A2의 제1 픽셀값 및 서브 참조 블록 B2의 제2 픽셀값을 사용하여, 후보 움직임 벡터에 대응되는 제4 비용 값을 획득한다.
단계 c3에서, 제3 비용 값 및 제4 비용 값에 따라, 제1 원본 움직임 벡터 및 후보 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용한다. 예를 들어, 비용 값이 가장 작은 움직임 벡터(예를 들어, 제1 원본 움직임 벡터, 또는 어느 하나의 후보 움직임 벡터)를 최적 움직임 벡터로 사용한다.
단계 c4에서, 최적 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값(제1 원본 움직임 벡터를 조정하는데 사용됨) 및 제2 정수 픽셀 움직임 벡터 조정값(제2 원본 움직임 벡터를 조정하는데 사용됨)을 결정한다. 일 예에서, 최적 움직임 벡터 및 제1 원본 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값을 결정하고, 제1 정수 픽셀 움직임 벡터 조정값에 따라 제2 정수 픽셀 움직임 벡터 조정값을 결정할 수 있으며, 제2 정수 픽셀 움직임 벡터 조정값과 제1 정수 픽셀 움직임 벡터 조정값은 대칭된다.
예를 들어, 최적 움직임 벡터가 (4, 6), 제1 원본 움직임 벡터가 (4, 4)라고 가정하면, 최적 움직임 벡터(4, 6) 및 제1 원본 움직임 벡터(4, 4)에 따라 제1 정수 픽셀 움직임 벡터 조정값을 결정하고, 제1 정수 픽셀 움직임 벡터 조정값은 최적 움직임 벡터(4, 6)와 제1 원본 움직임 벡터(4, 4)의 차이며, 즉 제1 정수 픽셀 움직임 벡터 조정값은 (0, 2)이다.
다음, 제1 정수 픽셀 움직임 벡터 조정값(0, 2)에 따라 제2 정수 픽셀 움직임 벡터 조정값을 결정하고, 제2 정수 픽셀 움직임 벡터 조정값은 (0, -2), 즉 (0, 2)의 대칭값일 수 있다.
단계 c5에서, 최적 움직임 벡터에 따라 제1 분수 픽셀 움직임 벡터 조정값(제1 원본 움직임 벡터를 조정하는데 사용됨) 및 제2 분수 픽셀 움직임 벡터 조정값(제2 원본 움직임 벡터를 조정하는데 사용됨)을 결정한다.
일 예에서, 최적 움직임 벡터에 대응되는 비용 값, 최적 움직임 벡터에 대응되는 에지 움직임 벡터에 대응되는 비용 값에 따라, 제1 분수 픽셀 움직임 벡터 조정값을 결정한 다음, 상기 제1 분수 픽셀 움직임 벡터 조정값에 따라 제2 분수 픽셀 움직임 벡터 조정값을 결정할 수 있다.
예를 들어, x0 = N*(E(-1,0) - E(1,0)) / (E(-1,0) + E(1,0) - 2* E(0,0)), y0 = N*(E(0,-1) - E(0,1)) / (E(0,-1) + E(0,1) - 2* E(0,0)), 1/2, 1/4, 1/8 및 1/16의 움직임 벡터 픽셀 정밀도의 경우, N=1, 2, 4 및 8이다. 다음, (x0, y0)을 deltaMv로 부여하고, SPMV= deltaMv/2N이며, 현재가 1/16의 움직임 벡터 픽셀 정밀도이면, SPMV는 (x0/16, y0/16)이다.
SPMV는 제1 분수 픽셀 움직임 벡터 조정값이다. E(0,0)은 최적 움직임 벡터의 비용 값을 나타내고; E(-1,0)은 최적 움직임 벡터를 중심으로 하는, 최적 움직임 벡터(0,0)의 에지 움직임 벡터(-1,0)의 비용 값이며; E(1,0)은 최적 움직임 벡터를 중심으로 하는, 최적 움직임 벡터(0,0)의 에지 움직임 벡터(1,0)의 비용 값이고; E(0,-1)은 최적 움직임 벡터를 중심으로 하는, 최적 움직임 벡터(0,0)의 에지 움직임 벡터(0,-1)의 비용 값이며; E(0,1)은 최적 움직임 벡터를 중심으로 하는, 최적 움직임 벡터(0,0)의 에지 움직임 벡터(0,1)의 비용 값이다. 각 움직임 벡터의 비용 값에 대해, 결정 방식은 상기 실시예를 참조한다.
상기 방식을 사용하여 제1 분수 픽셀 움직임 벡터 조정값을 결정한 후, 제1 분수 픽셀 움직임 벡터 조정값에 따라 제2 분수 픽셀 움직임 벡터 조정값을 결정할 수 있으며, 제2 분수 픽셀 움직임 벡터 조정값은 제1 분수 픽셀 움직임 벡터 조정값의 대칭값이다. 예를 들어, 제1 분수 픽셀 움직임 벡터 조정값이 (1, 0)이면, 제2 분수 픽셀 움직임 벡터 조정값은 (-1, 0), 즉 (1, 0)의 대칭값이다.
단계 c6에서, 제1 정수 픽셀 움직임 벡터 조정값 및/또는 제1 분수 픽셀 움직임 벡터 조정값에 따라, 제1 원본 움직임 벡터를 조정하여, 제1 타깃 움직임 벡터를 획득한다.
예를 들어, 제1 타깃 움직임 벡터=제1 원본 움직임 벡터+제1 정수 픽셀 움직임 벡터 조정값+제1 분수 픽셀 움직임 벡터 조정값이다. 물론, 상술한 바는 단지 예시로서, 이에 대해 한정하지 않는다.
단계 c7에서, 제2 정수 픽셀 움직임 벡터 조정값 및/또는 제2 분수 픽셀 움직임 벡터 조정값에 따라, 제2 원본 움직임 벡터를 조정하여, 제2 타깃 움직임 벡터를 획득한다.
예를 들어, 제2 타깃 움직임 벡터=제2 원본 움직임 벡터+제2 정수 픽셀 움직임 벡터 조정값+제2 분수 픽셀 움직임 벡터 조정값이다. 물론, 상술한 바는 단지 예시로서, 이에 대해 한정하지 않는다.
실시예 22: 단계 303 및 단계 403에서, 현재 블록의 각각의 서브 블록에 대해, 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제1 원본 움직임 벡터를 조정하여, 서브 블록의 제1 타깃 움직임 벡터를 획득하고; 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제2 원본 움직임 벡터를 조정하여, 서브 블록의 제2 타깃 움직임 벡터를 획득한다.
하나의 서브 블록(예를 들어, 현재 블록의 각각의 dx*dy 크기의 서브 블록이며, 예를 들어, 16*16 크기의 서브 블록이거나, 더 작은 정수 블록임)의 처리 과정을 예로, 원본 움직임 벡터의 조정 과정을 소개한다. 제1 원본 움직임 벡터를 Org_MV0으로, 제2 원본 움직임 벡터를 Org_MV1로, 제1 타깃 움직임 벡터를 Refined_MV0으로, 제2 타깃 움직임 벡터를 Refined_MV1로 표기할 수 있다.
단계 d1에서, 제1 원본 움직임 벡터를 중심으로, 상기 제1 원본 움직임 벡터 주변의 (2*SR+1)*(2*SR+1)개의 포인트로부터, 일부 또는 전체 움직임 벡터를 선택한다. 예를 들어, SR=2이면, 제1 원본 움직임 벡터 주변의 25개 포인트로부터 일부 또는 전체 움직임 벡터를 선택하여, 후보 움직임 벡터로 사용한다. 다음, 제1 원본 움직임 벡터의 비용 값을 결정하고, 각각의 후보 움직임 벡터의 비용 값을 결정한다. 다음, 비용 값이 가장 작은 움직임 벡터를 최적 움직임 벡터로 사용한다.
상기 실시예의 단계 b1에 비해, 단계 d1에서, 반복 과정을 수행할 필요가 없으며, 즉, 모든 처리할 후보 움직임 벡터는 반복 과정을 거치지 않고 한 번에 선택할 수 있으며, 첫 번째 반복에서 움직임 벡터의 일부를 선택하고 두 번째 반복에서 다시 움직임 벡터의 일부를 선택한다. 이에 기반하여, 모든 처리할 후보 움직임 벡터가 한 번에 선택되기 때문에, 이러한 후보 움직임 벡터를 병렬로 처리하여 각각의 후보 움직임 벡터의 비용 값을 획득할 수 있음으로써, 계산 복잡도를 감소시키고 인코딩 성능을 향상시킨다.
단계 d2에서, 최적 움직임 벡터에 따라 IntegerDeltaMV의 값을 결정하고, IntegerDeltaMV의 최종 값은 제1 정수 픽셀 움직임 벡터 조정값이며, 이러한 결정 방식에 대해 더이상 서술하지 않는다.
단계 d3에서, 최적 움직임 벡터를 중심으로, 최적의 분수 픽셀 오프셋 MV를 획득하고, 이를 SPMV로 표기하며, SPMV의 값은 제1 분수 픽셀 움직임 벡터 조정값이다.
단계 d3의 구현 과정은 상기 단계 b2를 참조할 수 있으며, 여기서 더이상 반복하여 서술하지 않는다.
단계 d4에서, IntegerDeltaMV 및 SPMV에 기반하여, BestMVoffset를 획득한다. 예를 들어, BestMVoffset= IntegerDeltaMV+SPMV이다.
BestMVoffset에 기반하여 타깃 움직임 벡터: Refined_MV0= Org_MV0+BestMVoffset; Refined_MV1=Org_MV1-BestMVoffset를 획득한다.
실시예 23: 단계 303 및 단계 403에 대해, 제1 원본 움직임 벡터 Org_MV0 및 제2 원본 움직임 벡터 Org_MV1을 제1 타깃 움직임 벡터 Refined_MV0 및 제2 타깃 움직임 벡터 Refined_MV1로 조정하기 위해, 구현 방식은 실시예 21, 실시예 22와 유사하다.
본 실시예에서, 원본 움직임 벡터를 중심으로, 원본 움직임 벡터 주변의 총 (2*SR+1)*(2*SR+1)개의 포인트로부터, 전체 움직임 벡터를 선택한다. 예를 들어, SR=2이면, 원본 움직임 벡터 주변의 25개의 포인트로부터 전체 움직임 벡터를 선택하고, 이러한 움직임 벡터의 비용 값을 결정하며, 각각의 움직임 벡터의 비용 값을 결정한다. 다음, 비용 값이 가장 작은 움직임 벡터를 최적 움직임 벡터로 사용한다.
실시예 24: 단계 303 및 단계 403에 대해, 제1 원본 움직임 벡터 Org_MV0 및 제2 원본 움직임 벡터 Org_MV1을 제1 타깃 움직임 벡터 Refined_MV0 및 제2 타깃 움직임 벡터 Refined_MV1로 조정하기 위해, 구현 방식은 실시예 21, 실시예 22와 유사하다. 본 실시예에서, 모든 처리할 후보 움직임 벡터가 한 번에 선택되기 때문에, 이러한 후보 움직임 벡터를 병렬로 처리하여 각각의 후보 움직임 벡터의 비용 값을 획득할 수 있음으로써, 계산 복잡도를 감소시키고 인코딩 성능을 향상시킨다.
본 실시예에서, 원본 움직임 벡터를 중심으로, 원본 움직임 벡터 주변의 총 (2*SR+1)*(2*SR+1)개의 포인트로부터, 오프셋이 SR 범위 내에서 초과되지 않는 일부 움직임 벡터를 선택한다. 예를 들어, 원본 움직임 벡터를 포함한 (2*SR+1)*(2*SR+1)개의 포인트로부터, N개(N이 1보다 크거나 같고, (2*SR+1)*(2*SR+1)보다 작거나 같음)의 후보 포인트를 선택한다. 이 N개의 포인트에 대응되는 움직임 벡터의 비용 값을 결정한다. 일정한 순서에 따라 이 N개의 포인트의 비용 값을 스캔하고, 최소 비용 값의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용한다. 비용 값이 같으면 순서가 앞쪽에 있는 후보 포인트를 우선적으로 선택한다.
일 예에서, SR=2라고 가정하면, 후보 포인트는 25개일 수 있고, 이러한 후보 포인트의 순서에 대해, 좌측에서 우측으로, 위에서 아래로의 순서를 사용할 수 있다. 도 7a에 도시된 바를 참조하면, 이러한 후보 포인트의 순서는 {Mv(-2,-2), Mv(-1,-2), Mv(0,-2), Mv(1,-2), Mv(2,-2), Mv(-2,-1), Mv(-1,-1), Mv(0,-1), Mv(1,-1), Mv(2,-1), Mv(-2, 0), Mv(-1, 0), Mv(0, 0), Mv(1, 0), Mv(2, 0), Mv(-2, 1), Mv(-1, 1), Mv(0, 1), Mv(1, 1), Mv(2, 1), Mv(-2, 2), Mv(-1, 2), Mv(0, 2), Mv(1, 2), Mv(2, 2)}일 수 있다.
이 25개의 포인트의 움직임 벡터에 대응되는 비용 값을 결정하고, 상기 순서에 따라 스캔하여, 비용 값이 가장 작은 움직임 벡터를 획득하여 최적 오프셋 MV로 사용하며, 최적 오프셋 MV를 사용하여 정수 픽셀 움직임 벡터 조정값 및 분수 픽셀 움직임 벡터 조정값을 결정할 수 있고, 결정 방식은 상기 실시예를 참조한다.
다른 일 예에서, SR=2라고 가정하면, 후보 포인트는 21개일 수 있고, 이러한 후보 포인트의 순서에 대해, 좌측에서 우측으로, 위에서 아래로의 순서를 사용할 수 있다. 도 7b에 도시된 바를 참조하면, 이러한 후보 포인트의 순서는 {Mv(-1,-2), Mv(0,-2), Mv(1,-2), Mv(-2,-1), Mv(-1,-1), Mv(0,-1), Mv(1,-1), Mv(2,-1), Mv(-2,0), Mv(-1,0), Mv(0,0), Mv(1,0), Mv(2,0), Mv(-2,1), Mv(-1, 1), Mv(0,1), Mv(1, 1), Mv(2, 1), Mv(-1, 2) , Mv(0, 2) , Mv(1, 2)}이다. 이 21개의 포인트의 움직임 벡터에 대응되는 비용 값을 결정하고, 상기 순서에 따라 스캔하여, 비용 값이 가장 작은 움직임 벡터를 획득하여 최적 오프셋 MV로 사용하며, 최적 오프셋 MV를 사용하여 정수 픽셀 움직임 벡터 조정값 및 분수 픽셀 움직임 벡터 조정값을 결정할 수 있고, 결정 방식은 상기 실시예를 참조한다.
다른 일 예에서, SR=2라고 가정하면, 후보 포인트는 25개일 수 있고, 이러한 후보 포인트의 순서에 대해, 움직임 벡터(0,0)를 중심으로, 중심과의 거리가 가까운데로부터 먼데로의 순서를 사용한다. 도 7c에 도시된 바를 참조하면, 이러한 후보 포인트의 순서는 {Mv(0, 0) , Mv(-1, 0) , Mv(0,-1) , Mv(1, 0) , Mv(0, 1) , Mv(-1, 1) , Mv(-1,-1), Mv(1,-1), Mv(1, 1), Mv(0, 2), Mv(-2, 0), Mv(0,-2), Mv(2, 0), Mv(1, 2), Mv(-1, 2), Mv(-2, 1) , Mv(-2,-1) , Mv(-1,-2) , Mv(1,-2) , Mv(2,-1) , Mv(2, 1) , Mv(-2, 2) , Mv(-2,-2) , Mv(2,-2) , Mv(2, 2)}일 수 있다. 이 25개의 포인트의 움직임 벡터에 대응되는 비용 값을 결정하고, 상기 순서에 따라 스캔하여, 비용 값이 가장 작은 움직임 벡터를 획득하여 최적 오프셋 MV로 사용하며, 최적 오프셋 MV를 사용하여 정수 픽셀 움직임 벡터 조정값 및 분수 픽셀 움직임 벡터 조정값을 결정할 수 있고, 결정 방식은 상기 실시예를 참조한다.
다른 일 예에서, SR=2라고 가정하면, 후보 포인트는 21개일 수 있고, 이러한 후보 포인트의 순서에 대해, 움직임 벡터(0,0)를 중심으로, 중심과의 거리가 가까운데로부터 먼데로의 순서를 사용한다. 도 7d에 도시된 바를 참조하면, 이러한 후보 포인트의 순서는 {Mv(0,0), Mv(-1,0), Mv(0,-1), Mv(1,0), Mv(0,1), Mv(-1,1) , Mv(-1,-1), Mv(1,-1), Mv(1,1), Mv(0,2), Mv(-2,0), Mv(0,-2), Mv(2,0), Mv(1, 2), Mv(-1,2), Mv(-2,1), Mv(-2,-1), Mv(-1,-2), Mv(1,-2), Mv(2,-1), Mv(2, 1)}이다.
이 21개의 포인트의 움직임 벡터에 대응되는 비용 값을 결정하고, 상기 순서에 따라 스캔하여, 비용 값이 가장 작은 움직임 벡터를 획득하여 최적 오프셋 MV로 사용하며, 최적 오프셋 MV를 사용하여 정수 픽셀 움직임 벡터 조정값 및 분수 픽셀 움직임 벡터 조정값을 결정할 수 있고, 결정 방식은 상기 실시예를 참조한다.
다른 일 예에서, SR=2라고 가정하면, 후보 포인트는 13개일 수 있고, 이러한 후보 포인트의 순서에 대해, 움직임 벡터(0,0)를 중심으로, 중심과의 거리가 가까운데로부터 먼데로의 순서를 사용한다. 도 7e에 도시된 바를 참조하면, 이러한 후보 포인트의 순서는 {Mv(0,0), Mv(-1,0), Mv(0,-1), Mv(1,0), Mv(0,1), Mv(-1,1), Mv(-1,-1), Mv(1,-1), Mv(1, 1), Mv(0, 2), Mv(-2, 0), Mv(0,-2), Mv(2, 0)}이다. 이 13개의 포인트의 움직임 벡터에 대응되는 비용 값을 결정하고, 상기 순서에 따라 스캔하여, 비용 값이 가장 작은 움직임 벡터를 획득하여 최적 오프셋 MV로 사용하며, 최적 오프셋 MV를 사용하여 정수 픽셀 움직임 벡터 조정값 및 분수 픽셀 움직임 벡터 조정값을 결정할 수 있고, 결정 방식은 상기 실시예를 참조한다.
실시예 25: 단계 303 및 단계 403에 대해, 제1 원본 움직임 벡터 Org_MV0 및 제2 원본 움직임 벡터 Org_MV1을 제1 타깃 움직임 벡터 Refined_MV0 및 제2 타깃 움직임 벡터 Refined_MV1로 조정하기 위해, 구현 방식은 실시예 21, 실시예 22와 유사하다. 본 실시예에서, 모든 처리할 후보 움직임 벡터가 한 번에 선택되기 때문에, 이러한 후보 움직임 벡터를 병렬로 처리하여 각각의 후보 움직임 벡터의 비용 값을 획득할 수 있음으로써, 계산 복잡도를 감소시키고 인코딩 성능을 향상시킨다.
본 실시예에서, 원본 움직임 벡터를 중심으로, 원본 움직임 벡터 주변의 총 (2*SR+1)*(2*SR+1)개의 포인트로부터, 오프셋이 SR 범위 내에서 초과되지 않는 일부 움직임 벡터를 선택한다. 예를 들어, 원본 움직임 벡터를 포함한 (2*SR+1)*(2*SR+1)개의 포인트로부터, N개(N이 1보다 크거나 같고, (2*SR+1)*(2*SR+1)보다 작거나 같음)의 후보 포인트를 선택한다. 이 N개의 포인트에 대응되는 움직임 벡터의 비용 값을 결정한다. 일정한 순서에 따라 이 N개의 포인트의 비용 값을 스캔하고, 최소 비용 값의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용한다. 비용 값이 같으면 순서가 앞쪽에 있는 후보 포인트를 우선적으로 선택한다.
실시예 25와 실시예 24의 상이한 점은, 실시예 24의 후보 포인트의 위치는 모두 고정되고, 즉 원본 움직임 벡터와 관계가 없으며, 실시예 25의 후보 포인트의 위치는 원본 움직임 벡터와 관계가 있는 것으로, 아래에 복수의 구체적인 예를 결부하여 설명한다.
일 예에서, SR=2라고 가정하면, 후보 포인트는 13개일 수 있고, 이러한 후보 포인트의 순서에 대해, 움직임 벡터(0,0)를 중심으로, 중심과의 거리가 가까운데로부터 먼데로의 순서를 사용한다. 중심에서부터 첫 번째 레이어에 있는 후보 포인트의 순서는 원본 움직임 벡터의 크기와 관계가 없고, 중심에서부터 두 번째 레이어에 있는 후보 포인트의 순서는 원본 움직임 벡터의 크기와 관계가 있다. 이러한 후보 포인트의 순서는 {Mv(0,0), Mv(-1,0), Mv(0,-1), Mv(1,0), Mv(0,1), Mv(-1,1), Mv(-1,-1), Mv(1,-1), Mv(1,1), Mv(sign_H*2,0), Mv(sign_H*2,sign_V*1), Mv(sign_H*1, sign_V *2), Mv(sign_H*1, sign_V *2)}이다. 제1 원본 움직임 벡터를 MV0으로, 수평 성분을 MV0_Hor로, 수직 성분을 MV0_Ver로 표기한다. MV0_Hor이 0보다 크거나 같으면, sign_H =1이고; 그렇지 않으면 sign_H = -1이며; MV0_Ver이 0보다 크거나 같으면, sign_V = 1이고; 그렇지 않으면 sign_V = -1이다.
이 13개의 포인트의 움직임 벡터에 대응되는 비용 값을 결정하고, 상기 순서에 따라 스캔하여, 비용 값이 가장 작은 움직임 벡터를 획득하여 최적 오프셋 MV로 사용하며, 최적 오프셋 MV를 사용하여 정수 픽셀 움직임 벡터 조정값 및 분수 픽셀 움직임 벡터 조정값을 결정할 수 있고, 결정 방식은 상기 실시예를 참조한다.
다른 일 예에서, SR=2라고 가정하면, 후보 포인트는 13개일 수 있고, 이러한 후보 포인트의 순서에 대해, 움직임 벡터(0,0)를 중심으로, 중심과의 거리가 가까운데로부터 먼데로의 순서를 사용한다. 중심에서부터 첫 번째 레이어에 있는 후보 포인트의 순서는 원본 움직임 벡터의 크기와 관계가 없고, 중심에서부터 두 번째 레이어에 있는 후보 포인트의 순서는 원본 움직임 벡터의 크기와 관계가 있다 이러한 후보 포인트의 순서는 {Mv(0,0), Mv(-1,0), Mv(0,-1), Mv(1,0), Mv(0,1), Mv(-1,1), Mv(-1,-1), Mv(1,-1), Mv(1,1), Mv(sign_H*2,0), Mv(sign_H*2,sign_V*1), Mv(sign_H*1, sign_V *2), Mv(sign_H*1, sign_V *2)}이다. 제1 원본 움직임 벡터를 MV0으로, 수평 성분을 MV0_Hor로, 수직 성분을 MV0_Ver로 표기한다. MV0_Hor이 0보다 크면, sign_H =1이고; 그렇지 않으면 sign_H = -1이며; MV0_Ver이 0보다 크면, sign_V = 1이고; 그렇지 않으면 sign_V = -1이다.
이 13개의 포인트의 움직임 벡터에 대응되는 비용 값을 결정하고, 상기 순서에 따라 스캔하여, 비용 값이 가장 작은 움직임 벡터를 획득하여 최적 오프셋 MV로 사용하며, 최적 오프셋 MV를 사용하여 정수 픽셀 움직임 벡터 조정값 및 분수 픽셀 움직임 벡터 조정값을 결정할 수 있고, 결정 방식은 상기 실시예를 참조한다.
실시예 26: 상기 실시예에서, 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 중심 움직임 벡터에 대응되는 제1 비용 값, 에지 움직임 벡터에 대응되는 제2 비용 값을 획득한다. 제1 참조 블록의 제1 픽셀값 및 제2 참조 블록의 제2 픽셀값에 따라, 제1 원본 움직임 벡터에 대응되는 제3 비용 값, 후보 움직임 벡터에 대응되는 제4 비용 값을 획득한다.
일 예에서, 다운 샘플링되지 않은 제1 픽셀값 및 다운 샘플링되지 않은 제2 픽셀값에 따라, 중심 움직임 벡터에 대응되는 제1 비용 값, 에지 움직임 벡터에 대응되는 제2 비용 값, 제1 원본 움직임 벡터에 대응되는 제3 비용 값, 후보 움직임 벡터에 대응되는 제4 비용 값을 획득할 수 있다.
다른 일 예에서, 제1 픽셀값에 대해 다운 샘플링 동작을 수행하고, 제2 픽셀값에 대해 다운 샘플링 동작을 수행한 다음, 다운 샘플링된 제1 픽셀값 및 다운 샘플링된 제2 픽셀값에 따라, 중심 움직임 벡터에 대응되는 제1 비용 값, 에지 움직임 벡터에 대응되는 제2 비용 값, 제1 원본 움직임 벡터에 대응되는 제3 비용 값, 후보 움직임 벡터에 대응되는 제4 비용 값을 획득할 수 있다.
다른 일 예에서, 제1 픽셀값에 대해 시프팅 및 다운 샘플링 동작을 수행하고, 제2 픽셀값에 대해 시프팅 및 다운 샘플링 동작을 수행한 다음, 동작이 수행된 제1 픽셀값 및 동작이 수행된 제2 픽셀값에 따라, 중심 움직임 벡터에 대응되는 제1 비용 값, 에지 움직임 벡터에 대응되는 제2 비용 값, 제1 원본 움직임 벡터에 대응되는 제3 비용 값, 후보 움직임 벡터에 대응되는 제4 비용 값을 획득할 수 있다.
상이한 경우에 대해, 비용 값의 결정 방식은 유사하다. 예를 들어, 중심 움직임 벡터에 대응되는 비용 값을 획득하기 위해, 제1 참조 블록으로부터 중심 움직임 벡터에 대응되는 서브 참조 블록 A1을 복제하여 획득하고, 제2 참조 블록으로부터 중심 움직임 벡터의 대칭 움직임 벡터에 대응되는 서브 참조 블록 B1을 복제하여 획득하며, 서브 참조 블록 A1의 제1 픽셀값 및 서브 참조 블록 B1의 제2 픽셀값을 사용하여, 중심 움직임 벡터에 대응되는 비용 값을 획득할 수 있다. 에지 움직임 벡터에 대응되는 비용 값을 획득하기 위해, 제1 참조 블록으로부터 에지 움직임 벡터에 대응되는 서브 참조 블록 A2를 복제하여 획득하고, 제2 참조 블록으로부터 에지 움직임 벡터의 대칭 움직임 벡터에 대응되는 서브 참조 블록 B2를 복제하여 획득하며, 서브 참조 블록 A2의 제1 픽셀값 및 서브 참조 블록 B2의 제2 픽셀값을 사용하여, 에지 움직임 벡터에 대응되는 비용 값을 획득할 수 있으며, 이와 같이 유추한다.
종합해보면, 움직임 벡터에 대응되는 비용 값을 획득하기 위해 제1 참조 블록으로부터 상기 움직임 벡터에 대응되는 서브 참조 블록을 획득하고, 제2 참조 블록으로부터 상기 움직임 벡터의 움직임 벡터에 대응되는 서브 참조 블록을 획득한 다음, 2개의 서브 참조 블록의 픽셀값을 사용하여, 상기 움직임 벡터에 대응되는 비용 값을 획득한다.
실시예 27: 실시예 26의 기초상에서, 다운 샘플링되지 않은 제1 픽셀값(즉 제1 참조 블록 중 서브 참조 블록의 다운 샘플링되지 않은 픽셀값) 및 다운 샘플링되지 않은 제2 픽셀값(즉 제2 참조 블록 중 서브 참조 블록의 다운 샘플링되지 않은 픽셀값)에 따라, 움직임 벡터에 대응되는 비용 값을 획득한다.
일 예에서, 제1 참조 블록 중 서브 참조 블록이 pred 0 이고, 제2 참조 블록 중 서브 참조 블록이 pred 1 이라고 가정하면, 서브 참조 블록 pred 0 및 서브 참조 블록 pred 1 의 모든 픽셀값의 SAD에 따라 비용 값을 결정하므로, 서브 참조 블록 pred 0 및 서브 참조 블록 pred 1 의 픽셀에 대해 수직 다운 샘플링을 수행할 필요가 없다.
서브 참조 블록 pred 0 및 서브 참조 블록 pred 1 의 모든 픽셀값을 기반으로, 비용 값 계산 공식은 다음과 같다.
상기 공식에서, cost는 비용 값을 나타내고, W는 서브 참조 블록의 폭값을 나타내며, H는 서브 참조 블록의 높이값을 나타내고, pred 0 (i, j)는 서브 참조 블록 pred 0 의 제i열 제j행의 픽셀값을 나타내며, pred 1 (i, j)는 서브 참조 블록 pred 1 의 제i열 제j행의 픽셀값을 나타내고, abs(x)는 x의 절대치를 나타낸다.
실시예 28: 실시예 26의 기초상에서, 제1 픽셀값에 대해 다운 샘플링 동작을 수행하고, 제2 픽셀값에 대해 다운 샘플링 동작을 수행할 수 있으며; 다운 샘플링된 제1 픽셀값(즉 제1 참조 블록 중 서브 참조 블록의 다운 샘플링된 픽셀값) 및 다운 샘플링된 제2 픽셀값(즉 제2 참조 블록 중 서브 참조 블록의 다운 샘플링된 픽셀값)에 따라, 움직임 벡터에 대응되는 비용 값을 획득할 수 있다.
일 예에서, 제1 참조 블록 중 서브 참조 블록이 pred 0 이고, 제2 참조 블록 중 서브 참조 블록이 pred 1 이라고 가정하면, 서브 참조 블록 pred 0 및 서브 참조 블록 pred 1 의 모든 픽셀값의 SAD에 따라 비용 값을 결정한다. 모든 픽셀값의 SAD를 사용하여 비용 값을 결정할 경우, 서브 참조 블록 pred 0 및 서브 참조 블록 pred 1 의 픽셀값에 대해 수직 N배(N은 0보다 큰 정수이고, 2일 수 있음)의 다운 샘플링을 수행한다.
서브 참조 블록 pred 0 및 서브 참조 블록 pred 1 의 모든 픽셀값을 기반으로, 비용 값 계산 공식은 다음과 같다.
상기 공식에서, cost는 비용 값을 나타내고, W는 서브 참조 블록의 폭값을 나타내며, H는 서브 참조 블록의 높이값을 나타내고, N은 다운 샘플링의 파라미터를 나타내며, 0보다 큰 정수이고 2일 수 있으며, pred 0 (1+N(i-1), j)는 서브 참조 블록 pred 0 의 제1+N(i-1)열 제j행의 픽셀값을 나타내고, pred 1 (1+N(i-1), j)는 서브 참조 블록 pred 1 의 제1+N(i-1)열 제j행의 픽셀값을 나타내고, abs(x)는 x의 절대치를 나타낸다.
실시예 29: 실시예 26의 기초상에서, 제1 픽셀값에 대해 시프팅 및 다운 샘플링 동작을 수행하고, 제2 픽셀값에 대해 시프팅 및 다운 샘플링 동작을 수행하며; 동작이 수행된 제1 픽셀값(제1 참조 블록 중 서브 참조 블록의 시프팅 및 다운 샘플링된 픽셀값) 및 동작이 수행된 제2 픽셀값(제2 참조 블록 중 서브 참조 블록의 시프팅 및 다운 샘플링된 픽셀값)에 따라, 움직임 벡터에 대응되는 비용 값을 획득한다.
일 예에서, 제1 참조 블록 중 서브 참조 블록이 pred 0 이고, 제2 참조 블록 중 서브 참조 블록이 pred 1 이라고 가정하면, pred 0 pred 1 은 모두 D 비트의 저장 방식을 사용하며, 즉 pred 0 중 각각의 픽셀값은 모두 D 비트를 사용하여 저장하고, pred 1 중 각각의 픽셀값은 모두 D 비트를 사용하여 저장한다.
D가 8보다 작거나 같으면, 서브 참조 블록 pred 0 및 서브 참조 블록 pred 1 의 모든 픽셀값의 SDA에 따라 비용 값을 결정한다. 모든 픽셀값의 SAD를 사용하여 비용 값을 결정할 경우, 서브 참조 블록 pred 0 및 서브 참조 블록 pred 1 의 픽셀값에 대해 수직 N배(N은 0보다 큰 정수이고, 2일 수 있음)의 다운 샘플링을 수행한다. 서브 참조 블록 pred 0 및 서브 참조 블록 pred 1 의 모든 픽셀값을 기반으로, 비용 값 계산 공식은 다음과 같다.
상기 공식에서, cost는 비용 값을 나타내고, W는 서브 참조 블록의 폭값을 나타내며, H는 서브 참조 블록의 높이값을 나타내고, N은 다운 샘플링의 파라미터를 나타내며 0보다 큰 정수이고 2일 수 있으며, pred 0 (1+N(i-1), j)는 서브 참조 블록 pred 0 의 제1+N(i-1)열 제j행의 픽셀값을 나타내고, pred 1 (1+N(i-1), j)는 서브 참조 블록 pred 1 의 제1+N(i-1)열 제j행의 픽셀값을 나타내며, abs(x)는 x의 절대치를 나타내며, 종합해보면, 즉 제1행, 제N+1행, 제2N+1행...의 차의 절대치 합만 계산됨을 알 수 있다.
D가 8보다 크면, 먼저 서브 참조 블록 pred 0 및 서브 참조 블록 pred 1 의 모든 픽셀값을 8 비트로 시프팅하여, 8 비트의 pred 0 및 8 비트의 pred 1 을 획득하며, pred 0 -8bit (i, j) pred 1 -8bit (i, j) 로 표기한다. 그 목적은 SAD 계산의 저장 비용을 절약하기 위한 것이며, 8 비트의 저장은 더 높은 병렬도를 구현할 수 있다.
다음, 8 비트의 pred 0 및 8 비트의 pred 1 의 픽셀값에 대해 수직 N배(N은 0보다 큰 정수이고, 2일 수 있음)의 다운 샘플리을 수행하며, 이와 같이, 비용 값의 계산 공식은 다음과 같다.
상기 공식에서, 각각의 표현식의 의미는 상기 실시예를 참조하며, 여기서 더이상 반복하여 서술하지 않는다.
실시예 30: 단계 304 및 단계 404에서, 현재 블록의 각각의 서브 블록에 대해, 상기 서브 블록의 제1 타깃 움직임 벡터 및 상기 서브 블록의 제2 타깃 움직임 벡터에 따라, 상기 서브 블록에 대해 움직임 보상을 수행한다. 구체적으로, 상기 서브 블록의 제1 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제3 참조 블록을 결정하고, 상기 서브 블록의 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제4 참조 블록을 결정한다. 제3 참조 블록의 제3 픽셀값 및 제4 참조 블록의 제4 픽셀값에 따라 가중치를 부여하여, 상기 서브 블록의 예측값을 획득한다.
예를 들어, 서브 블록의 2개의 타깃 움직임 벡터를 기반으로, 보간(예를 들어, 8 탭 보간)을 통해 두 방향의 참조 블록(즉 제3 참조 블록 및 제4 참조 블록이고, 3개 성분의 예측값을 포함하며, 타깃 움직임 벡터가 분수 픽셀일 수 있으므로, 보간이 필요함)을 획득한다. 제3 참조 블록의 제3 픽셀값 및 제4 참조 블록의 제4 픽셀값에 따라 가중치를 부여하여, 최종 예측값(3개 성분)을 획득한다.
일 예에서, 서브 블록의 제1 타깃 움직임 벡터에 기반하여, 제1 참조 프레임으로부터 상기 서브 블록에 대응되는 제5 참조 블록을 결정하고, 제5 참조 블록 중 픽셀값을 보간하여, 제3 참조 블록을 획득할 수 있다. 서브 블록의 제2 타깃 움직임 벡터에 기반하여, 제2 참조 프레임으로부터 상기 서브 블록에 대응되는 제6 참조 블록을 결정하고, 제6 참조 블록 중 픽셀값을 보간하여, 제4 참조 블록을 획득할 수 있다.
예를 들어, 현재 블록의 크기가 W*H라고 가정하면, 제1 타깃 움직임 벡터에 기반하여 제1 참조 프레임으로부터 크기가 A*B인 제5 참조 블록을 결정할 수 있고, 제5 참조 블록의 크기 A*B는 보간 방식과 관계가 있으며, A는 W보다 크고, B는 H보다 크며, 이에 대해 한정하지 않는다. 제5 참조 블록 중 픽셀값을 보간하여, 크기가 W*H인 제3 참조 블록을 획득할 수 있으며, 이러한 보간 방식에 대해 한정하지 않는다. 제2 타깃 움직임 벡터에 기반하여 제2 참조 프레임으로부터 크기가 A*B인 제6 참조 블록을 결정할 수 있고, 제6 참조 블록의 크기 A*B는 보간 방식과 관계가 있으며, A는 W보다 크고, B는 H보다 크다. 제6 참조 블록 중 픽셀값을 보간하여, 크기가 W*H인 제4 참조 블록을 획득할 수 있으며, 이러한 보간 방식에 대해 한정하지 않는다.
다른 일 예에서, 서브 블록의 제1 타깃 움직임 벡터에 기반하여, 제1 참조 프레임으로부터 상기 서브 블록에 대응되는 제7 참조 블록을 결정하고, 제7 참조 블록 중 픽셀값을 사용하여 제8 참조 블록을 구성하며, 제8 참조 블록 중 픽셀값을 보간하여, 제3 참조 블록을 획득한다. 서브 블록의 제2 타깃 움직임 벡터에 기반하여, 제2 참조 프레임으로부터 상기 서브 블록에 대응되는 제9 참조 블록을 결정하고, 제9 참조 블록 중 픽셀값을 사용하여 제10 참조 블록을 구성하며, 제10 참조 블록 중 픽셀값을 보간하여, 제4 참조 블록을 획득한다.
예를 들어, 현재 블록의 크기가 W*H라고 가정하면, 제1 타깃 움직임 벡터에 기반하여 제1 참조 프레임으로부터 크기가 W*H인 제7 참조 블록을 결정할 수 있다. 제7 참조 블록 중 픽셀값에 기반하여 크기가 A*B인 제8 참조 블록을 구성하고, 이러한 구성 방식에 대해 한정하지 않는다. 제8 참조 블록의 크기 A*B는 보간 방식과 관계가 있으며, A는 W보다 크고, B는 H보다 크며, 이에 대해 한정하지 않는다. 제8 참조 블록 중 픽셀값을 보간하여, 크기가 W*H인 제3 참조 블록을 획득할 수 있으며, 이러한 보간 방식에 대해 한정하지 않는다.
또한 예를 들어, 현재 블록의 크기가 W*H라고 가정하면, 제2 타깃 움직임 벡터에 기반하여 제2 참조 프레임으로부터 크기가 W*H인 제9 참조 블록을 결정할 수 있다. 제9 참조 블록 중 픽셀값에 기반하여 크기가 A*B인 제10 참조 블록을 구성하고, 이러한 구성 방식에 대해 한정하지 않는다. 제10 참조 블록의 크기 A*B는 보간 방식과 관계가 있으며, A는 W보다 크고, B는 H보다 크며, 이에 대해 한정하지 않는다. 제10 참조 블록 중 픽셀값을 보간하여, 크기가 W*H인 제4 참조 블록을 획득할 수 있으며, 이러한 보간 방식에 대해 한정하지 않는다.
실시예 31: 타깃 움직임 벡터를 획득한 이후, 각각의 서브 블록의 타깃 움직임 벡터에 기반하여, 8 탭 보간 필터를 통해 두 방향의 예측값(즉 YUV 3개의 성분, 즉 상기 제3 참조 블록의 예측값 및 제4 참조 블록의 예측값)을 획득하고, 가중치를 부여하여 최종 예측값을 획득한다. 도 5에 도시된 바를 참조하면, 검은색 영역과 흰색 영역은 참조 프레임으로부터 획득한 픽셀값이며, 회색 영역의 픽셀값의 경우, 참조 프레임으로부터 획득할 필요 없이, 인접한 픽셀값을 복제하는 방식으로 획득할 수 있다.
일 예에서, 우선, 흰색 영역의 제1행의 W+FS-1개의 픽셀값을 회색 영역의 이전 SR행의 픽셀값에 복제할 수 있다. 흰색 영역의 마지막 행의 W+FS-1개의 픽셀값을 회색 영역의 마지막 SR행의 픽셀값에 복제한다. 다음, 흰색 영역의 제1열의 H+FS-1개의 픽셀값과 상하 각 SR개의 이미 획득한 회색 영역의 픽셀값을 회색 영역의 이전 SR열의 픽셀값에 복제할 수 있다. 흰색 영역의 마지막 열의 H+FS-1개의 픽셀값과 상하 각 SR개의 이미 획득한 회색 영역의 픽셀값을 회색 영역의 마지막 SR열의 픽셀값에 복제한다.
다른 일 예에서, 우선 흰색 영역의 제1열의 H+FS-1개의 픽셀값을 회색 영역의 이전 SR열의 픽셀값에 복제할 수 있다. 흰색 영역의 마지막 열의 H+FS-1개의 픽셀값을 회색 영역의 마지막 SR열의 픽셀값에 복제한다. 다음, 흰색 영역의 제1행의 W+FS-1개의 픽셀값과 좌우 각 SR개의 이미 획득한 회색 영역의 픽셀값을 회색 영역의 이전 SR행의 픽셀값에 복제한다. 흰색 영역의 마지막 행의 W+FS-1개의 픽셀값과 좌우 각 SR개의 이미 획득한 회색 영역의 픽셀값을 회색 영역의 마지막 SR행의 픽셀값에 복제한다.
실시예 32: 타깃 움직임 벡터를 획득한 이후, 각각의 서브 블록의 타깃 움직임 벡터에 기반하여, 8 탭 보간 필터를 통해 두 방향의 예측값(즉 YUV 3개의 성분, 즉 제3 참조 블록의 예측값 및 제4 참조 블록의 예측값)을 획득하고, 가중치를 부여하여 최종 예측값을 획득한다. 도 5에 도시된 바를 참조하면, 검은색 영역과 흰색 영역은 참조 프레임으로부터 획득한 픽셀값이며, 회색 영역의 픽셀값의 경우, 인접한 픽셀값을 복제하는 방식으로 획득한 것이 아니라, 참조 프레임 대응 영역으로부터 직접 복제하여 획득한 것이다. 이러한 방법은 간단하고, 성능이 더욱 양호하지만, 참조 프레임에 대한 액세스 데이터 양을 증가시킨다.
실시예 33: 타깃 움직임 벡터를 획득한 이후, 각각의 서브 블록의 타깃 움직임 벡터에 기반하여, 이중선형 보간 필터(여기서는 더이상 8 탭 보간 필터가 아님)를 통해 두 방향의 예측값(즉 YUV 3개의 성분, 즉 상기 제3 참조 블록의 예측값 및 제4 참조 블록의 예측값)을 획득하고, 가중치를 부여하여 최종 예측값을 획득한다. 도 5에 도시된 바를 참조하면, 검은색 영역과 흰색 영역은 참조 프레임으로부터 획득한 픽셀값일 수 있다. 탭 수가 비교적 적으므로, 회색 영역의 픽셀값이 필요 없다.
실시예 34: 실시예 30 내지 실시예 33에서, 두 방향의 예측값을 획득한 후, 평균값 가중 평균(즉, 두 방향의 예측값의 가중치가 동일함)을 통해, 최종 예측값을 획득한다. 또는, 두 방향의 예측값을 획득한 후, 가중 평균을 통해 최종 예측값을 획득하고, 2개의 예측ㄱ밧의 가중치는 상이할 수 있다. 예를 들어, 2개의 예측값의 가중치 비율은 1:2, 1:3, 2:1일 수 있다.
인코딩단의 경우, 가중치 표에 1:2, 1:3, 2:1 등 가중치 비율이 포함될 수 있으며, 인코딩단은 각각의 가중치 비율의 비용 값을 결정하고, 비용 값이 가장 작은 가중치 비율을 결정할 수 있으며, 이와 같이, 인코딩단은 비용 값이 가장 작은 가중치 비율을 기반으로, 가중 평균을 통해 최종 예측값을 획득할 수 있다.
인코딩단이 인코딩된 비트 스트림을 디코딩단으로 송신할 경우, 상기 인코딩된 비트 스트림은 가중치 표에서 가중치 비율의 인덱스 값을 보유한다. 이와 같이, 디코딩단은 인코딩된 비트 스트림의 인덱스 값을 해석하여, 가중치 표로부터 상기 인덱스 값에 대응되는 가중치 비율을 획득하고, 가중치 비율을 기반으로 가중 평균을 통해 최종 예측값을 획득한다.
일 예에서, 가중치 표는 {-2, 3, 4, 5, 10}을 포함할 수 있지만 이에 한정되지 않는다. 가중치 “-2”는 최종 예측값=(예측값1*(-2)+예측값2*(8-(-2))), 즉 (-2*예측값1+10*예측값2)/8임을 나타낸다. 가중치 “10”은 가중치 비율이 10:-2이고, 즉 최종 예측값=(예측값1*(10)+예측값2*(-2))이며, 즉 (10*예측값1-2*예측값2)/8임을 나타낸다. 가중치 “3”은 가중치 비율이 3:5임을 나타낸다. 가중치 “5”는 가중치 비율이 5:3임을 나타낸다. 가중치 “4”는 가중치 비율이 4:4임을 나타내며, 즉 가중치 “4”는 가중치가 동일함을 나타낸다.
실시예 35: 단계 305 및 단계 405에서, 현재 블록의 각각의 서브 블록의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 보존해야 하며, 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터는 후속 블록의 인코딩/디코딩 참조에 사용된다. 예를 들어, 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터는 현재 프레임의 루프 필터링에 사용되고; 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터는 후속 프레임의 시간 도메인 참조에 사용되거나; 및/또는, 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터는 현재 프레임의 공간 도메인 참조에 사용된다.
예를 들어, 현재 블록의 각각의 서브 블록의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터는 현재 블록의 움직임 보상에 사용될 수 있고, 후속 프레임의 시간 도메인 참조에 사용될 수도 있다. 또한, 예를 들어, 현재 블록의 각각의 서브 블록의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터는 현재 블록의 움직임 보상에 사용될 수 있고, 현재 블록의 루프 필터링 과정에 사용될 수도 있으며, 후속 프레임의 시간 도메인 참조에 사용될 수도 있다.
또한, 예를 들어, 현재 블록의 각각의 서브 블록의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터는 현재 블록의 움직임 보상에 사용될 수 있고, 현재 블록의 루프 필터링 과정에 사용될 수도 있으며, 후속 프레임의 시간 도메인 참조에 사용될 수도 있고, 현재 프레임의 공간 도메인 참조에 사용될 수도 있으며, 이에 대해 아래에 설명한다.
현재 블록의 각각의 서브 블록의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터는 공간 도메인 중 특정된 최대 코딩 유닛(Largest Coding Unit, LCU) 내의 블록의 공간 도메인 참조에 사용될 수 있다. 인코딩 및 디코딩 순서가 위에서 아래로, 좌측에서 우측으로 이루어지므로, 현재 블록의 움직임 벡터는 현재 LCU 내의 다른 블록에 의해 참조될 수 있으며, 후속의 인접한 LCU 내의 블록에 의해 참조될 수도 있다. 획득한 타깃 움직임 벡터에 비교적 큰 계산량이 필요되므로, 후속 블록이 현재 블록의 타깃 움직임 벡터를 참조하면, 대기 시간이 오래 걸린다. 과도한 대기로 인한 시간 지연을 방지하기 위해, 소량의 공간 도메인 인접한 블록만 현재 블록의 타깃 움직임 벡터를 참조하도록 허용하고, 다른 블록은 현재 블록의 원본 움직임 벡터를 참조한다. 도 8에 도시된 바를 참조하면, 이러한 소량의 블록은 현재 LCU 아래측의 아래측 LCU 및 오른쪽 아래측 LCU 내에 위치한 서브 블록을 포함하고, 우측 LCU 및 왼쪽 아래측 LCU 내에 위치한 서브 블록은 현재 블록의 타깃 움직임 벡터를 참조할 수 없다.
실시예 36: 아래에 하나의 구체적인 예를 결부하여, 움직임 벡터의 조정 과정에 대해 설명한다. 움직임 벡터 조정의 구체적인 단계는 하기와 같을 수 있으며, 아래에서 “복제”는 보간이 필요없이 획득될 수 있는 것을 설명하고, MV는 정수 픽셀 오프셋인 경우, 참조 프레임으로부터 직접 복제할 수 있으며, 그렇지 않으면 보간하여 획득해야 한다.
단계 e1에서, 현재 블록이 merge 또는 skip 모드를 사용하면, 아래 과정을 수행한다.
단계 e2에서, 참조 픽셀값(현재 블록의 폭이 W이고, 높이가 H라고 가정함)을 준비한다.
단계 e3에 사용되는 정수 픽셀 블록을 준비한다. 원본 움직임 벡터(list0의 원본 움직임 벡터를 Org_MV0으로, list1의 원본 움직임 벡터를 Org_MV1로 표기함)에 기반하여, 대응 참조 프레임의 대응 위치에서 두 블록의 면적이 (W+FS-1)*(H+FS-1)인 3개의 성분의 정수 픽셀 블록을 복제한다.
단계 e4에 사용되는 정수 픽셀 블록을 준비한다. 상기 (W+FS-1)*(H+FS-1)의 정수 픽셀 블록의 기초상에서, (W+FS-1)*(H+FS-1)인 3개의 성분의 정수 픽셀 블록을 상하 좌우 각 SR행/열로 확장하고, 확장 후 얻은 면적이 (W+FS-1+2*SR)*(H+FS-1+2*SR)인 3개의 성분의 정수 픽셀 블록을 Pred_Inter0 및 Pred_Inter1로 표기하며, 도 5에 도시된 바를 참조한다.
2개의 상이한 방향의 움직임 정보에 기반하여 첫 번째 움직임 보상을 수행한다. 예를 들어, 밝기 성분(후속의 검색 과정에서 복잡도를 감소하기 위해 밝기 성분만 사용하여 비용 값을 계산하기 때문임)에 대해, 두 블록의 면적이 (W+FS-1)*(H+FS-1)인 정수 픽셀 참조 블록을 기반으로, 이중선형 보간법을 통해 두 블록의 사이즈가 (W+2*SR)*(H+2*SR)인 초기 참조 예측값(Pred_Bilinear0 및 Pred_Bilinear1로 표기됨)을 획득하고, FS는 필터 탭 수이고, 8을 기본값으로 하며, SR은 검색 범위이고, 즉 타깃 움직임 벡터와 원본 움직임 벡터 최대 수평/수직 성분 보간이며, 2를 기본값으로 한다. Pred_Bilinear0/1은 단계 e3의 사용에 사용된다.
단계 e3에서, 현재 블록의 각각의 dx*dy 서브 블록(16*16 또는 더 작은 정수 블록)에 대해, 타깃 움직임 벡터(2개의 타깃 움직임 벡터를 각각 Refined_MV0 및 Refined_MV1로 표기함)를 각각 획득한다.
단계 e31에서, SR회 반복을 수행하여, 최적의 정수 픽셀 MV 포인트의 정수 픽셀 오프셋을 획득하고, 이를 IntegerDeltaMV로 표기하며, IntegerDeltaMV를 (0, 0)으로 초기화하고, 매회 반복에 대해 하기와 같은 과정이 수행된다.
단계 e311에서, deltaMV를 (0, 0)으로 설정한다. 최초 반복이면, 참조 픽셀 Pred_Bilinear0/1에서 원본 움직임 벡터를 기반으로, 두 블록의 예측값 블록(즉 Pred_Bilinear0/1의 가장 중심적인 W*H의 블록)을 복제하여 획득하고, 이 2개의 예측값 블록에 기반하여, 초기 비용 값을 획득하며, 다시 말해서, 두 방향의 예측값 블록의 수직으로 2배 다운 샘플링된 SAD를 획득한다.
상기 초기 비용 값이 4*dx*dy/2보다 작고, dxdy가 현재 서브 블록의 폭 및 높이이면, 후속 검색 과정으로 직접 스킵하고 단계 e32를 수행하며, notZeroCost를 false로 설정한다.
단계 e312에서, 도 6에 도시된 바와 같이, 상기 초기점을 중심으로, {Mv(0, 1), Mv(0, -1), Mv(1, 0), Mv(-1, 0), Mv(right, down)}의 순서에 따라 5개의 오프셋 MV(이 5개의 오프셋 MV는 MVOffset으로 지칭됨)를 얻고, 이 5개의 오프셋 MV의 비용 값의 계산과 비교 과정을 수행한다.
예를 들어, 특정된 MVOffset을 기반으로, 참조 픽셀 Pred_Bilinear0/1에서, MVOffset을 통해 두 블록의 예측값 블록(즉 Pred_Bilinear0에서 중심 위치 오프셋 MVOffset을 수행하는 W*H 블록, 및 Pred_Bilinear1에서 중심 위치 오프셋 -MVOffset(list0과 반대)을 수행하는 W*H 블록)을 획득하고, 이 2개의 블록의 다운 샘플링 SAD를 계산하여 MVOffset의 비용 값으로 사용한다. 비용 값이 가장 작은 MVOffset(deltaMV에 저장함)을 보류하여, 다음 번 반복의 새로운 중심 오프셋 포인트로 사용한다.
Mv(right,down)의 디폴트 값은 (-1, -1)이고, Mv(1,0)의 비용 값이 Mv(-1, 0)의 비용 값보다 작으면, right는1이며; Mv(0, 1)의 비용 값이 Mv(0, -1)의 비용 값보다 작으면, down은 1이다.
deltaMV 값을 기반으로 IntegerDeltaMV를 업데이트하며, 즉 IntegerDeltaMV: = IntegerDeltaMV + deltaMV이다.
단계 e313에서, 반복이 수행된 후, 최적 MV가 여전히 초기 MV이거나 최소 비용 값이 0이면, 다음 번 반복 검색 과정을 수행하지 않고, 단계 e32를 수행하며, notZeroCost를 false로 설정한다. 그렇지 않으면, 반복 횟수가 SR에 도달하면, 단계 e32를 수행하고, 반복 횟수가 SR에 도달하지 않으면, 최적 MV를 중심으로 하여, 다음 번 반복 검색 과정을 수행하며 즉 단계 e311로 되돌아간다.
단계 e32에서, 단계 e31의 최적 정수 픽셀 MV 포인트를 중심으로 하여, 최적의 분수 픽셀 오프셋 MV를 획득할 수 있으며, SPMV로 표기하고, SPMV를 (0, 0)으로 초기화한 다음 하기와 같은 과정을 수행한다.
단계 e321에서, notZeroCost가 false가 아니고, deltaMV가 (0, 0)인 경우에만, 후속 처리를 수행하며, 그렇지 않으면, IntegerDeltaMV를 직접 사용하여 원본 움직임 벡터를 조정한다.
단계 e322에서, E(x, y)를 단계 e31에서 얻은 최적 MV 포인트 오프셋(x, y)의 MV 대응 비용 값(단계 e31에서 계산된 비용 값)으로 표시한다. 중심 및 상하 좌우의 5개 포인트의 E(x, y)를 기반으로, E(x, y)의 최소 포인트의 오프셋(x0, y0)을 얻을 수 있으며, x0 = N*(E(-1,0) - E(1,0)) / (E(-1,0) + E(1,0) - 2* E(0,0)), y0 = N*(E(0,-1) - E(0,1)) / (E(0,-1) + E(0,1) - 2* E(0,0))이다.
일 예에서, 1/2, 1/4, 1/8 및 1/16의 움직임 벡터 픽셀 정밀도의 경우, N=1, 2, 4 및 8이다. 다음, (x0, y0)을 deltaMv로 부여하고, SPMV= deltaMv/2N이며, 현재가 1/16의 움직임 벡터 픽셀 정밀도이면, SPMV는 (x0/16, y0/16)일 수 있다.
E(-1,0)=E(0,0)이면, 수평 좌측으로 하프 픽셀 오프셋한다(deltaMv[0] = -N).
E(1,0)= E(0,0)이면, 수평 우측으로 하프 픽셀 오프셋한다(deltaMv[0] = N).
E(0,-1)= E(0,0)이면, 수직 위로 하프 픽셀 오프셋한다(deltaMv[1] = -N).
E(0,1)= E(0,0)이면, 수직 아래로 하프 픽셀 오프셋한다(deltaMv[1] = N).
단계 e33에서, 단계 e31의 정수 픽셀 오프셋 IntegerDeltaMV 및 단계 e32의 분수 픽셀 오프셋 SPMV에 기반하여, 최적 오프셋 MV를 획득하고, BestMVoffset으로 표기한다. BestMVoffset=IntegerDeltaMV+ SPMV이다. BestMVoffset에 기반하여 두 방향의 타깃 움직임 벡터: Refined_MV0= Org_MV0+BestMVoffset; Refined_MV1=Org_MV1-BestMVoffset을 획득할 수 있다.
단계 e4에서, 각각의 서브 블록의 타깃 움직임 벡터에 기반하여, 8 탭 보간을 수행하여 두 방향의 예측값을 획득하고, 가중치를 부여하여 최종 예측값(3개의 성분)을 획득한다. 예를 들어, 각각의 서브 블록의 타깃 움직임 벡터 Refined_MV0 및 Refined_MV1에 기반하여, 단계 e2에서 준비한 Pred_Inter0/1에서, 보간을 통해 대응 예측 블록(움직임 벡터는 분수 픽셀일 수 있고, 보간해야만 대응 픽셀 블록을 획득할 수 있음)을 획득한다.
단계 e5에서, 타깃 움직임 벡터는 현재 블록의 움직임 보상 및 후속 프레임의 시간 도메인 참조에 사용된다.
실시예 37: 상기 실시예는 별도로 구현될 수 있고, 임의의 조합으로 구현될 수도 있다. 예를 들어, 실시예 13은 별도로 구현될 수 있고, 실시예 15는 별도로 구현될 수 있으며, 실시예 24는 별도로 구현될 수 있고, 실시예 29는 별도로 구현될 수 있다. 실시예 13 및 실시예 15는 조합으로 구현되고, 실시예 13 및 실시예 24는 조합으로 구현되며, 실시예 13 및 실시예 29는 조합으로 구현되고, 실시예 15 및 실시예 24는 조합으로 구현되며, 실시예 15 및 실시예 29는 조합으로 구현되고, 실시예 24 및 실시예 29는 조합으로 구현되며, 실시예 13, 실시예 15 및 실시예 24는 조합으로 구현되고, 실시예 13, 실시예 15 및 실시예 29는 조합으로 구현되며, 실시예 15, 실시예 24 및 실시예 29는 조합으로 구현되고, 실시예 13, 실시예 15, 실시예 24 및 실시예 29는 조합으로 구현되며, 물론, 상술한 바는 단지 복수의 예일 뿐, 이에 대해 한정하지 않으며, 본 발명에 포함된 모든 실시예는 모두 별도로 구현되거나 조합으로 구현될 수 있다.
실시예 38:
상기 방법과 동일한 출원의 구상에 기반하여, 본 발명의 실시예는 인코딩단 또는 디코딩단에 적용되는 인코딩 및 디코딩 장치를 더 제공하는 바, 도 9에 도시된 바와 같이, 상기 장치의 구조도이며, 상기 장치는,
현재 블록의 특징 정보가 특정 조건을 만족하면, 상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제2 참조 블록을 결정하는 결정 모듈(91); 상기 제1 참조 블록의 제1 픽셀값 및 상기 제2 참조 블록의 제2 픽셀값에 따라, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 처리 모듈(92); 및 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 현재 블록에 대해 인코딩 또는 디코딩을 수행하는 인코딩 및 디코딩 모듈(93)을 포함한다.
상기 특징 정보는, 상기 현재 블록에 대응되는 움직임 정보 예측 모드; 상기 현재 블록에 대응되는 움직임 정보 속성; 및 상기 현재 블록의 사이즈 정보 중 하나 또는 다수를 포함한다.
상기 특징 정보가 상기 현재 블록에 대응되는 움직임 정보 예측 모드이면, 상기 결정 모듈(91)은 또한, 상기 현재 블록에 대응되는 움직임 정보 예측 모드이면, 상기 현재 블록에 대응되는 움직임 정보 예측 모드가 특정 조건을 만족하는 것으로 결정하거나; 또는 상기 현재 블록에 대응되는 움직임 정보 예측 모드가 인터 예측값과 인트라 예측값을 연합하여 새로운 예측값을 생성하는 병합 모드이면, 상기 현재 블록에 대응되는 움직임 정보 예측 모드가 특정 조건을 만족하는 것으로 결정한다.
상기 특징 정보가 상기 현재 블록에 대응되는 움직임 정보 속성이면, 상기 결정 모듈(91)은 또한, 상기 현재 블록에 대응되는 움직임 정보 속성이 상기 현재 블록의 움직임 정보가 2개의 상이한 방향의 움직임 정보를 포함하면, 상기 현재 블록에 대응되는 움직임 정보 속성이 특정 조건을 만족하는 것으로 결정하거나; 또는 상기 현재 블록에 대응되는 움직임 정보 속성이 상기 현재 블록의 움직임 정보가 2개의 상이한 방향의 움직임 정보를 포함하고, 상기 2개의 상이한 방향의 움직임 정보에 대응되는 2개의 참조 프레임과 현재 프레임의 거리가 동일한 것이면, 상기 현재 블록에 대응되는 움직임 정보 속성이 특정 조건을 만족하는 것으로 결정하거나; 또는 상기 현재 블록에 대응되는 움직임 정보 속성이 상기 현재 블록이 주변 블록의 움직임 정보를 재사용하는 것이면, 상기 현재 블록에 대응되는 움직임 정보 속성이 특정 조건을 만족하는 것으로 결정하거나; 또는, 상기 현재 블록에 대응되는 움직임 정보 속성이 상기 현재 블록의 각각의 서브 블록의 움직임 정보가 동일한 것이면, 상기 현재 블록에 대응되는 움직임 정보 속성이 특정 조건을 만족하는 것으로 결정한다.
상기 특징 정보가 상기 현재 블록의 사이즈 정보이고, 상기 현재 블록의 사이즈 정보가 상기 현재 블록의 폭값 및 상기 현재 블록의 높이값을 포함하면, 상기 결정 모듈(91)은 또한, 상기 현재 블록의 폭값이 제1 구간[제1 임계값, 제2 임계값]의 범위 내에 위치하면, 상기 현재 블록의 사이즈 정보가 특정 조건을 만족하는 것으로 결정하거나; 또는, 상기 현재 블록의 높이값이 제2 구간[제3 임계값, 제4 임계값]의 범위 내에 위치하면, 상기 현재 블록의 사이즈 정보가 특정 조건을 만족하는 것으로 결정하거나; 또는, 상기 현재 블록의 폭값과 높이값에 따라 얻은 면적이 제3 구간[제5 임계값, 제6 임계값]의 범위 내에 위치하면, 상기 현재 블록의 사이즈 정보가 특정 조건을 만족하는 것으로 결정하거나; 또는, 상기 폭값이 제1 구간[제1 임계값, 제2 임계값]의 범위 내에 위치하고, 상기 높이값이 제2 구간[제3 임계값, 제4 임계값]의 범위 내에 위치하며, 상기 면적이 제3 구간[제5 임계값, 제6 임계값]의 범위 내에 위치하면, 상기 현재 블록의 사이즈 정보가 특정 조건을 만족하는 것으로 결정한다.
상기 결정 모듈(91)은 상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제2 참조 블록을 결정할 경우, 구체적으로, 상기 현재 블록의 제1 원본 움직임 벡터에 기반하여, 제1 참조 프레임으로부터 상기 현재 블록에 대응되는 제1 참조 블록을 결정하고; 상기 현재 블록의 제2 원본 움직임 벡터에 기반하여, 제2 참조 프레임으로부터 상기 현재 블록에 대응되는 제2 참조 블록을 결정하되; 여기서, 상기 제1 참조 블록 중 각각의 픽셀점의 제1 픽셀값은 상기 제1 참조 블록 중 인접한 픽셀점의 픽셀값을 보간하거나, 상기 제1 참조 블록 중 인접한 픽셀점의 픽셀값을 복제하여 획득한 것이며; 상기 제2 참조 블록 중 각각의 픽셀점의 제2 픽셀값은 상기 제2 참조 블록 중 인접한 픽셀점의 픽셀값을 보간하여 획득하거나, 상기 제2 참조 블록 중 인접한 픽셀점의 픽셀값을 복제하여 획득한 것이다.
상기 처리 모듈(92)은 상기 제1 참조 블록의 제1 픽셀값 및 상기 제2 참조 블록의 제2 픽셀값에 따라, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득할 경우, 구체적으로,
상기 현재 블록이 적어도 하나의 서브 블록을 포함하면, 상기 현재 블록의 각각의 서브 블록에 대해, 상기 제1 픽셀값 및 상기 제2 픽셀값에 따라, 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 서브 블록의 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 획득한다.
예를 들어, 상기 제1 픽셀값 및 상기 제2 픽셀값에 따라, 상기 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값을 결정하거나, 및/또는, 상기 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값을 결정할 수 있고; 상기 제1 정수 픽셀 움직임 벡터 조정값 및/또는 제1 분수 픽셀 움직임 벡터 조정값에 따라, 상기 제1 원본 움직임 벡터를 조정하여, 상기 서브 블록의 제1 타깃 움직임 벡터를 획득하고; 상기 제2 정수 픽셀 움직임 벡터 조정값 및/또는 제2 분수 픽셀 움직임 벡터 조정값에 따라, 상기 제2 원본 움직임 벡터를 조정하여, 상기 서브 블록의 제2 타깃 움직임 벡터를 획득한다.
상기 처리 모듈(92)은 상기 제1 픽셀값 및 상기 제2 픽셀값에 따라, 상기 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값, 상기 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값을 결정할 경우, 구체적으로,
상기 제1 원본 움직임 벡터 또는 제2 원본 움직임 벡터를 중심 움직임 벡터로 결정하고;
상기 중심 움직임 벡터에 대응되는 에지 움직임 벡터를 결정하며;
상기 제1 픽셀값 및 상기 제2 픽셀값에 따라, 상기 중심 움직임 벡터에 대응되는 제1 비용 값, 상기 에지 움직임 벡터에 대응되는 제2 비용 값을 획득하고;
상기 제1 비용 값 및 상기 제2 비용 값에 따라, 상기 중심 움직임 벡터 및 상기 에지 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용하며;
종료 조건을 만족하는지 여부를 판단하고; 상기 종료 조건을 만족하지 않으면, 상기 최적 움직임 벡터를 중심 움직임 벡터로 결정하고, 되돌아가 상기 중심 움직임 벡터에 대응되는 에지 움직임 벡터를 결정하는 단계를 수행하고;
상기 종료 조건을 만족하면, 상기 최적 움직임 벡터에 따라 상기 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값을 결정하고; 상기 최적 움직임 벡터에 따라 상기 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값을 결정한다.
상기 처리 모듈(92)은 상기 중심 움직임 벡터에 대응되는 에지 움직임 벡터를 결정할 경우, 구체적으로,
상기 중심 움직임 벡터(x, y)를 상이한 방향으로 S만큼 오프셋하여, 순차적으로 상이한 방향의 에지 움직임 벡터(x, y+S), 에지 움직임 벡터(x, y-S), 에지 움직임 벡터(x+S, y), 에지 움직임 벡터(x-S, y), 에지 움직임 벡터(x+right, y+down)를 획득하거나; 또는,
상기 중심 움직임 벡터(x, y)를 상이한 방향으로 S만큼 오프셋하여, 순차적으로 상이한 방향의 에지 움직임 벡터(x, y-S), 에지 움직임 벡터(x, y+S), 에지 움직임 벡터(x-S, y), 에지 움직임 벡터(x+S, y), 에지 움직임 벡터(x+right, y+down)를 획득하고;
여기서, 에지 움직임 벡터(x+right, y+down)의 디폴트 값은 (x-S, y-S)이며;
에지 움직임 벡터(x+S, y)의 비용 값이 에지 움직임 벡터(x-S, y)의 비용 값보다 작으면, right는 S이고; 에지 움직임 벡터(x, y+S)의 비용 값이 에지 움직임 벡터(x, y-S)의 비용 값보다 작으면, down이 S이거나; 또는, 에지 움직임 벡터(x+S, y)의 비용 값이 에지 움직임 벡터(x-S, y)의 비용 값보다 작거나 같으면, right는 S이고; 에지 움직임 벡터(x, y+S)의 비용 값이 에지 움직임 벡터(x, y-S)의 비용 값보다 작거나 같으면, down은 S이다.
상기 처리 모듈(92)은 상기 제1 픽셀값 및 상기 제2 픽셀값에 따라, 상기 중심 움직임 벡터에 대응되는 제1 비용 값, 상기 에지 움직임 벡터에 대응되는 제2 비용 값을 획득할 경우, 구체적으로,
다운 샘플링되지 않은 제1 픽셀값 및 다운 샘플링되지 않은 제2 픽셀값에 따라, 상기 중심 움직임 벡터에 대응되는 제1 비용 값, 상기 에지 움직임 벡터에 대응되는 2 비용 값을 획득하거나; 또는,
상기 제1 픽셀값에 대해 다운 샘플링 동작을 수행하고, 상기 제2 픽셀값에 대해 다운 샘플링 동작을 수행하며; 다운 샘플링된 제1 픽셀값 및 다운 샘플링된 제2 픽셀값에 따라, 상기 중심 움직임 벡터에 대응되는 제1 비용 값, 상기 에지 움직임 벡터에 대응되는 제2 비용 값을 획득하거나; 또는,
상기 제1 픽셀값에 대해 시프팅 및 다운 샘플링 동작을 수행하고, 상기 제2 픽셀값에 대해 시프팅 및 다운 샘플링 동작을 수행하며; 동작이 수행된 제1 픽셀값 및 동작이 수행된 제2 픽셀값에 따라, 상기 중심 움직임 벡터에 대응되는 제1 비용 값, 상기 에지 움직임 벡터에 대응되는 제2 비용 값을 획득한다.
상기 처리 모듈(92)은 상기 제1 픽셀값 및 상기 제2 픽셀값에 따라, 상기 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값, 상기 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값을 결정할 경우, 구체적으로,
상기 제1 원본 움직임 벡터 또는 제2 원본 움직임 벡터를 중심으로, 주변의 움직임 벡터로부터 일부 또는 전체 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 사용하며;
상기 제1 픽셀값 및 상기 제2 픽셀값에 따라, 상기 제1 원본 움직임 벡터 또는 제2 원본 움직임 벡터에 대응되는 제3 비용 값, 상기 후보 움직임 벡터에 대응되는 제4 비용 값을 획득하고;
상기 제3 비용 값 및 상기 제4 비용 값에 따라, 상기 제1 원본 움직임 벡터 또는 제2 원본 움직임 벡터, 상기 후보 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 사용하며;
상기 최적 움직임 벡터에 따라 상기 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값을 결정하고; 상기 최적 움직임 벡터에 따라 상기 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값을 결정한다.
상기 처리 모듈(92)은 상기 최적 움직임 벡터에 따라 상기 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값을 결정할 경우, 구체적으로, 상기 최적 움직임 벡터 및 상기 제1 원본 움직임 벡터에 따라 상기 서브 블록의 제1 정수 픽셀 움직임 벡터 조정값을 결정하고, 상기 제1 정수 픽셀 움직임 벡터 조정값에 따라 상기 서브 블록의 제2 정수 픽셀 움직임 벡터 조정값을 결정한다.
상기 처리 모듈(92)은 상기 최적 움직임 벡터에 따라 상기 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값 및 제2 분수 픽셀 움직임 벡터 조정값을 결정할 경우, 구체적으로, 상기 최적 움직임 벡터에 대응되는 비용 값, 상기 최적 움직임 벡터에 대응되는 에지 움직임 벡터에 대응되는 비용 값에 따라, 상기 서브 블록의 제1 분수 픽셀 움직임 벡터 조정값을 결정하고, 제1 분수 픽셀 움직임 벡터 조정값에 따라 상기 서브 블록의 제2 분수 픽셀 움직임 벡터 조정값을 결정한다.
상기 인코딩 및 디코딩 모듈(93)은 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 현재 블록에 대해 인코딩 또는 디코딩을 수행할 경우, 구체적으로, 상기 현재 블록이 적어도 하나의 서브 블록을 포함하면, 상기 현재 블록의 각각의 서브 블록에 대해, 상기 서브 블록의 제1 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제3 참조 블록을 결정하고, 상기 서브 블록의 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제4 참조 블록을 결정하며; 상기 제3 참조 블록의 제3 픽셀값 및 상기 제4 참조 블록의 제4 픽셀값에 따라 가중치를 부여하여, 서브 블록의 예측값을 획득하고; 각각의 서브 블록의 예측값에 따라 상기 현재 블록의 예측값을 결정한다.
상기 인코딩 및 디코딩 모듈(93)은 상기 서브 블록의 제1 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제3 참조 블록을 결정하고, 상기 서브 블록의 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제4 참조 블록을 결정할 경우, 구체적으로, 상기 서브 블록의 제1 타깃 움직임 벡터에 기반하여, 제1 참조 프레임으로부터 상기 서브 블록에 대응되는 제5 참조 블록을 결정하고, 상기 제5 참조 블록 중 픽셀값을 보간하여, 상기 제3 참조 블록을 획득하며;
상기 서브 블록의 제2 타깃 움직임 벡터에 기반하여, 제2 참조 프레임으로부터 상기 서브 블록에 대응되는 제6 참조 블록을 결정하고, 상기 제6 참조 블록 중 픽셀값을 보간하여, 상기 제4 참조 블록을 획득한다.
상기 인코딩 및 디코딩 모듈(93)은 상기 서브 블록의 제1 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제3 참조 블록을 결정하고, 상기 서브 블록의 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제4 참조 블록을 결정할 경우, 구체적으로, 상기 서브 블록의 제1 타깃 움직임 벡터에 기반하여, 제1 참조 프레임으로부터 상기 서브 블록에 대응되는 제7 참조 블록을 결정하고, 상기 제7 참조 블록 중 픽셀값을 사용하여 제8 참조 블록을 구성하며, 상기 제8 참조 블록 중 픽셀값을 보간하여, 상기 제3 참조 블록을 획득하고; 상기 서브 블록의 제2 타깃 움직임 벡터에 기반하여, 제2 참조 프레임으로부터 상기 서브 블록에 대응되는 제9 참조 블록을 결정하고, 상기 제9 참조 블록 중 픽셀값을 사용하여 제10 참조 블록을 구성하며, 상기 제10 참조 블록 중 픽셀값을 보간하여, 상기 제4 참조 블록을 획득한다.
상기 장치는, 상기 현재 블록에 상기 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터를 저장하는 저장 모듈을 더 포함하되; 여기서, 상기 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터는 현재 프레임의 루프 필터링에 사용되고, 상기 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터는 후속 프레임의 시간 도메인 참조에 사용되거나, 및/또는 상기 제1 타깃 움직임 벡터 및 제2 타깃 움직임 벡터는 현재 프레임의 공간 도메인 참조에 사용된다.
실시예 39:
본 발명의 실시예에서 제공되는 디코딩단 기기의, 하드웨어 수준에서, 이의 하드웨어 아키텍처 모식도는 구체적으로 도 10에 도시된 바를 참조할 수 있다. 여기에는 프로세서(101) 및 기계 판독 가능 저장 매체(102)가 포함되고, 상기 기계 판독 가능 저장 매체(102)에는 상기 프로세서(101)에 의해 실행 가능한 기계 실행 가능 명령이 저장되고; 상기 프로세서(101)는 기계 실행 가능 명령을 실행하여, 본 발명의 상기 예에서 공개되는 방법을 구현한다. 예를 들어, 프로세서는 기계 실행 가능 명령을 실행하여,
현재 블록의 특징 정보가 특정 조건을 만족하면, 상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제2 참조 블록을 결정하는 단계; 상기 제1 참조 블록의 제1 픽셀값 및 상기 제2 참조 블록의 제2 픽셀값에 따라, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 현재 블록에 대해 디코딩을 수행하는 단계를 수행한다.
본 발명의 실시예에서 제공되는 인코딩단 기기의, 하드웨어 수준에서, 이의 하드웨어 아키텍처 모식도는 구체적으로 도 11에 도시된 바를 참조할 수 있다. 여기에는 프로세서(111) 및 기계 판독 가능 저장 매체(112)가 포함되고, 상기 기계 판독 가능 저장 매체(112)에는 상기 프로세서(111)에 의해 실행 가능한 기계 실행 가능 명령이 저장되고; 상기 프로세서(111)는 기계 실행 가능 명령을 실행하여, 본 발명의 상기 예에서 공개되는 방법을 구현한다. 예를 들어, 프로세서(111)는 기계 실행 가능 명령을 실행하여, 현재 블록의 특징 정보가 특정 조건을 만족하면, 상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 현재 블록에 대응되는 제2 참조 블록을 결정하는 단계; 상기 제1 참조 블록의 제1 픽셀값 및 상기 제2 참조 블록의 제2 픽셀값에 따라, 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 현재 블록에 대해 인코딩을 수행하는 단계를 수행한다.
상기 방법과 동일한 발명 구상에 기반하여, 본 발명의 실시예는 기계 판독 가능 저장 매체를 더 제공하며, 상기 기계 판독 가능 저장 매체에 복수의 컴퓨터 명령이 저장되고, 상기 컴퓨터 명령이 메모리에 의해 실행될 경우, 본 발명의 상기 구현예에서 공개된 인코딩 및 디코딩 방법을 구현할 수 있다. 여기서, 상기 기계 판독 가능 저장 매체는 임의의 전자, 자성, 광학, 또는 다른 물리적 저장 장치일 수 있고, 예를 들어 실행 명령, 데이터 등 정보를 포함하거나 저장할 수 있다. 예를 들면, 기계 판독 가능 저장 매체는 RAM(Radom Access Memory, 랜덤 액세스 메모리), 휘발성 메모리, 비휘발성 메모리, 플래시 메모리, 메모리 드라이버(예컨대 하드 드라이버), 솔리드 스테이트 드라이브, 임의의 유형의 메모리 디스크(예컨대 CD, DVD 등)이거나, 유사한 저장 매체, 또는 이들의 조합일 수 있다.
상기 실시예에서 서술되는 시스템, 장치, 모듈 또는 유닛은 컴퓨터 칩 또는 엔티티로 구현되거나, 어떠한 기능을 구비하는 제품으로 구현될 수 있다. 하나의 대표적인 구현 기기는 컴퓨터이고, 컴퓨터의 구체적인 형식은 개인 컴퓨터, 랩톱 컴퓨터, 셀룰러 폰, 카메라 폰, 스마트 폰, 개인 정보 단말기, 미디어 플레이어, 내비게이션 기기, 이메일 송수신 기기, 게임 콘솔, 태블릿 PC, 웨어러블 기기 또는 이러한 기기 중의 임의의 몇 가지 기기의 조합일 수 있다.
설명의 편의를 위해, 상기 장치를 설명할 경우 기능에 따라 여러 가지 유닛으로 나누어 각각 설명한다. 물론, 본 발명을 실시함에 있어서 각 유닛의 기능을 동일하거나 복수의 소프트웨어 및/또는 하드웨어에서 구현시킬 수 있다.
본 분야의 통상의 기술자는 본 발명의 실시예가 방법, 시스템 또는 컴퓨터 프로그램 제품을 제공한다는 것을 알고 있다. 따라서, 본 발명은 완전한 하드웨어 실시예, 완전한 소프트웨어 실시예, 또는 소프트웨어 및 하드웨어를 결합한 실시예의 형태를 사용할 수 있다. 또한 본 발명의 실시예는 컴퓨터 사용 가능 프로그램 코드가 포함된 하나 또는 복수의 컴퓨터 사용 가능 저장 매체(마그네틱 디스크 장치, CD-ROM, 광학 메모리 등을 포함하지만 이에 한정되지 않음)에서 구현되는 컴퓨터 프로그램 제품의 형태를 사용할 수 있다.
본 발명은 본 발명의 실시예에 따른 방법, 기기(시스템) 및 컴퓨터 프로그램 제품의 흐름도 및/또는 블록도를 참조하여 설명되었다. 컴퓨터 프로그램 명령에 의해 흐름도 및/또는 블록도 중의 각 흐름 및/또는 블록, 및 흐름도 및/또는 블록도 중의 흐름 및/또는 블록의 결합을 구현하는 것으로 이해해야 할 것이다. 이러한 컴퓨터 프로그램 명령은 범용 컴퓨터, 전용 컴퓨터, 내장형 프로세서 또는 다른 프로그램 가능 데이터 처리 기기의 프로세서에 제공되어, 컴퓨터 또는 다른 프로그램 가능 데이터 처리 기기의 프로세서에 의해 실행된 명령이 흐름도의 하나의 흐름 또는 복수의 흐름 및/또는 블록도의 하나의 블록 또는 복수의 블록 중 지정된 기능을 구현하는 장치를 생성하도록 하는 하나의 기계를 생성할 수 있다.
또한, 이러한 컴퓨터 프로그램 명령은 또한 특정 방식으로 작업하기 위해 컴퓨터 또는 다른 프로그램 가능 데이터 처리 기기를 유도하는 컴퓨터 판독 가능 메모리에 저장되어, 상기 컴퓨터 판독 가능 메모리에 저장된 명령이 명령 장치를 포함하는 제조품을 생성하도록 할 수 있으며, 상기 명령 장치는 흐름도의 하나의 흐름 또는 복수의 흐름 및/또는 블록도의 하나의 블록 또는 복수의 블록 중 지정된 기능을 구현한다.
이러한 컴퓨터 프로그램 명령은 또한 컴퓨터 또는 다른 프로그램 가능 데이터 처리 기기에 로딩되어, 컴퓨터 또는 다른 프로그램 가능 기기에서 컴퓨터 구현 처리를 생성하기 위한 일련의 동작 단계를 수행하도록 함으로써, 컴퓨터 또는 다른 프로그램 가능 기기에서 실행하는 명령에 흐름도의 하나의 흐름 또는 복수의 흐름 및/또는 블록도의 하나의 블록 또는 복수의 블록 중 지정된 기능을 구현하기 위한 단계를 제공한다.
상술한 내용은 본 발명의 바람직한 실시예일 뿐 본 발명의 보호범위는 이에 한정되지 않는다. 본 분야의 통상의 기술자에게 있어서 본 발명은 다양한 변경 및 변화가 존재할 수 있다. 본 발명의 사상과 원리 내에 진행된 임의의 보정, 등가 대체, 개선 등은 모두 반드시 본 발명의 청구범위 내에 포함되어야 한다.

Claims (16)

  1. 디코딩 방법으로서,
    현재 블록에서 움직임 벡터 조정 모드를 활성화할 경우, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 결정하고, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 기반으로, 상기 현재 블록의 예측값을 결정하되, 여기서 현재 블록에 포함된 각각의 서브 블록에 대해, 상기 서브 블록의 예측값을 결정하는 단계는,
    제1 원본 움직임 벡터 및 제1 참조 프레임, 제2 원본 움직임 벡터 및 제2 참조 프레임을 포함하는 상기 현재 블록의 움직임 정보를 획득하는 단계;
    상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제2 참조 블록을 결정하며; 제1 참조 블록의 픽셀값 및 제2 참조 블록의 픽셀값에 따라, 최적 움직임 벡터를 획득하는 단계 - 상기 최적 움직임 벡터를 획득하는 단계는, 초기 움직임 벡터를 중심으로, 상기 초기 움직임 벡터를 포함하는 상기 초기 움직임 벡터 주변의 움직임 벡터로부터 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 결정하는 단계를 포함하되, 상기 초기 움직임 벡터는 상기 제1 원본 움직임 벡터 또는 상기 제2 원본 움직임 벡터이고; 상기 제1 참조 블록의 픽셀값 및 상기 제2 참조 블록의 픽셀값에 따라, 상기 초기 움직임 벡터에 대응되는 비용 값, 각각의 후보 움직임 벡터에 대응되는 비용 값을 획득하는 단계를 포함하며; 및 상기 초기 움직임 벡터에 대응되는 비용 값 및 상기 각각의 후보 움직임 벡터에 대응되는 비용 값에 따라, 상기 초기 움직임 벡터 및 각각의 후보 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 하는 단계를 포함함 -;
    상기 최적 움직임 벡터에 따라 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및
    상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 단계 - 여기서, 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 단계는, 상기 제1 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제3 참조 블록을 결정하고, 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제4 참조 블록을 결정하며; 상기 제3 참조 블록의 픽셀값 및 상기 제4 참조 블록의 픽셀값에 따라 가중치를 부여하여, 상기 서브 블록의 예측값을 획득하는 단계를 포함함 - 를 포함하고,
    여기서, 초기 움직임 벡터를 중심으로, 상기 초기 움직임 벡터를 포함하는 상기 초기 움직임 벡터 주변의 움직임 벡터로부터 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 결정하는 단계는, 초기 움직임 벡터를 중심으로, 검색 범위를 2로 하여, 상기 초기 움직임 벡터를 포함하는 25개의 움직임 벡터를 검색하며, 상기 25개의 움직임 벡터를 후보 움직임 벡터로 결정하는 단계를 포함하되; 상기 25개의 움직임 벡터의 검색 순서는 순차적으로, {Mv(-2,-2),Mv(-1,-2),Mv(0,-2),Mv(1,-2),Mv(2,-2),Mv(-2,-1),Mv(-1,-1),Mv(0,-1),Mv(1,-1),Mv(2,-1),Mv(-2, 0),Mv(-1, 0),Mv(0, 0),Mv(1, 0),Mv(2, 0),Mv(-2, 1),Mv(-1, 1),Mv(0, 1),Mv(1, 1),Mv(2, 1),Mv(-2, 2),Mv(-1, 2),Mv(0, 2),Mv(1, 2),Mv(2, 2)} 이고,
    여기서, 현재 이미지 블록이 움직임 벡터 조정 모드를 활성화할 경우, 현재 블록에 대응되는 움직임 정보 예측 모드, 현재 블록에 대응되는 움직임 정보의 속성 및 현재 블록의 사이즈 정보는 특정된 조건을 만족하는 것을 특징으로 하는 디코딩 방법.
  2. 제1항에 있어서,
    상기 현재 블록이 움직임 벡터 조정 모드를 활성화할 경우, 상기 현재 블록이 만족하는 조건은 적어도 현재 블록이 움직임 정보 차이값을 인코딩하는 병합 모드인 MMVD모드를 사용하지 않는 것, 현재 블록이 merge 모드를 사용하는 것, 현재 블록의 사이즈가 한정 범위 내에 있는 것, 현재 블록의 움직임 정보가 2개의 상이한 방향의 움직임 정보를 포함하고, 2개의 상이한 방향의 움직임 정보에 대응되는 2개의 참조 프레임이 현재 프레임과의 거리는 동일한 것을 만족하는 것을 특징으로 하는 디코딩 방법.
  3. 제1항에 있어서,
    상기 현재 블록이 위치하는 현재 프레임이 상기 제1 참조 프레임 및 제2 참조 프레임과의 거리가 각각 동일한 것을 특징으로 하는 디코딩 방법.
  4. 제1항에 있어서,
    상기 현재 블록이 하나의 서브 블록을 포함할 경우, 상기 서브 블록이 현재 블록 자체이고, 상기 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터는 상기 현재 블록의 2개의 상이한 방향의 원본 움직임 벡터이며,
    상기 현재 블록이 복수의 서브 블록을 포함할 경우, 상기 복수의 서브 블록에서 각각의 서브 블록에 있어서, 상기 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터는 상기 현재 블록의 2개의 상이한 방향의 원본 움직임 벡터를 공유하는 것을 특징으로 하는 디코딩 방법.
  5. 제1항에 있어서,
    상기 제1 참조 블록의 픽셀값 및 상기 제2 참조 블록의 픽셀값에 따라, 초기 움직임 벡터 및 후보 움직임 벡터에 대응되는 비용 값을 획득하는 단계에서,
    후보 움직임 벡터에 대응되는 비용 값을 획득하는 단계는, 상기 제1 참조 블록을 기반으로, 상기 후보 움직임 벡터에 대응되는 제1 서브 참조 블록을 결정하고, 상기 제2 참조 블록을 기반으로, 상기 후보 움직임 벡터에 대응되는 제2 서브 참조 블록을 결정하며; 수직 2배 다운 샘플링 방법으로 상기 제1 서브 참조 블록과 상기 제2 서브 참조 블록 중 각 픽셀값의 절대치 오차 합을 계산하고; 얻은 상기 절대치 오차 합에 따라, 상기 후보 움직임 벡터에 대응되는 비용 값을 결정하는 단계를 포함하고;
    초기 움직임 벡터에 대응되는 비용 값을 획득하는 단계는, 상기 제1 참조 블록을 기반으로, 상기 초기 움직임 벡터에 대응되는 제3 서브 참조 블록을 결정하며, 상기 제2 참조 블록을 기반으로, 상기 초기 움직임 벡터에 대응되는 제4 서브 참조 블록을 결정하고, 수직 2배 다운 샘플링 방법으로 상기 제3 서브 참조 블록과 상기 제4 서브 참조 블록 중 각 픽셀값의 절대치 오차 합을 계산하며, 얻은 상기 절대치 오차 합에 따라, 상기 초기 움직임 벡터에 대응되는 비용 값을 결정하는 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  6. 제1항에 있어서,
    상기 최적 움직임 벡터에 따라 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계는,
    상기 최적 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값을 결정하고; 상기 제1 정수 픽셀 움직임 벡터 조정값에 따라, 상기 제1 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터를 획득하며; 상기 제2 정수 픽셀 움직임 벡터 조정값에 따라, 상기 제2 원본 움직임 벡터를 조정하여, 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계를 포함하고; 또는
    상기 최적 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값 및 제2 정수 픽셀 움직임 벡터 조정값을 결정하는 단계는,
    상기 최적 움직임 벡터에 따라 제1 정수 픽셀 움직임 벡터 조정값을 결정하는 단계 - 상기 제1 정수 픽셀 움직임 벡터 조정값은 상기 최적 움직임 벡터와 상기 초기 움직임 벡터의 차와 같음 - ; 및
    상기 제1 정수 픽셀 움직임 벡터 조정값에 따라, 제2 정수 픽셀 움직임 벡터 조정값을 결정하는 단계 - 상기 제2 정수 픽셀 움직임 벡터 조정값과 상기 제1 정수 픽셀 움직임 벡터 조정값은 서로 반수임 - 를 포함하고; 또는
    상기 제1 정수 픽셀 움직임 벡터 조정값에 따라, 상기 제1 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터를 획득하고; 상기 제2 정수 픽셀 움직임 벡터 조정값에 따라, 상기 제2 원본 움직임 벡터를 조정하여, 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계는,
    상기 제1 타깃 움직임 벡터가 상기 제1 원본 움직임 벡터와 상기 제1 정수 픽셀 움직임 벡터 조정값의 합과 같고; 상기 제2 타깃 움직임 벡터가 상기 제2 원본 움직임 벡터와 상기 제2 정수 픽셀 움직임 벡터 조정값의 합과 같은 단계를 포함하는 것을 특징으로 하는 디코딩 방법.
  7. 인코딩 방법으로서,
    현재 블록에서 움직임 벡터 조정 모드를 활성화할 경우, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 결정하고, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 기반으로, 상기 현재 블록의 예측값을 결정하되, 여기서 현재 블록에 포함된 각각의 서브 블록에 대해, 상기 서브 블록의 예측값을 결정하는 단계는,
    제1 원본 움직임 벡터 및 제1 참조 프레임, 제2 원본 움직임 벡터 및 제2 참조 프레임을 포함하는 상기 현재 블록의 움직임 정보를 획득하는 단계;
    상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제2 참조 블록을 결정하며; 제1 참조 블록의 픽셀값 및 제2 참조 블록의 픽셀값에 따라, 최적 움직임 벡터를 획득하는 단계 - 상기 최적 움직임 벡터를 획득하는 단계는, 초기 움직임 벡터를 중심으로, 상기 초기 움직임 벡터를 포함하는 상기 초기 움직임 벡터 주변의 움직임 벡터로부터 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 결정하는 단계를 포함하되, 상기 초기 움직임 벡터는 상기 제1 원본 움직임 벡터 또는 상기 제2 원본 움직임 벡터이고; 상기 제1 참조 블록의 픽셀값 및 상기 제2 참조 블록의 픽셀값에 따라, 상기 초기 움직임 벡터에 대응되는 비용 값, 각각의 후보 움직임 벡터에 대응되는 비용 값을 획득하는 단계를 포함하며; 및 상기 초기 움직임 벡터에 대응되는 비용 값 및 상기 각각의 후보 움직임 벡터에 대응되는 비용 값에 따라, 상기 초기 움직임 벡터 및 각각의 후보 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 하는 단계를 포함함 -;
    상기 최적 움직임 벡터에 따라 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및
    상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 단계 - 여기서, 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 단계는, 상기 제1 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제3 참조 블록을 결정하고, 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제4 참조 블록을 결정하며; 상기 제3 참조 블록의 픽셀값 및 상기 제4 참조 블록의 픽셀값에 따라 가중치를 부여하여, 상기 서브 블록의 예측값을 획득하는 단계를 포함함 - 를 포함하고,
    여기서, 초기 움직임 벡터를 중심으로, 상기 초기 움직임 벡터를 포함하는 상기 초기 움직임 벡터 주변의 움직임 벡터로부터 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 결정하는 단계는, 초기 움직임 벡터를 중심으로, 검색 범위를 2로 하여, 상기 초기 움직임 벡터를 포함하는 25개의 움직임 벡터를 검색하며, 상기 25개의 움직임 벡터를 후보 움직임 벡터로 결정하는 단계를 포함하되; 상기 25개의 움직임 벡터의 검색 순서는 순차적으로, {Mv(-2,-2),Mv(-1,-2),Mv(0,-2),Mv(1,-2),Mv(2,-2),Mv(-2,-1),Mv(-1,-1),Mv(0,-1),Mv(1,-1),Mv(2,-1),Mv(-2, 0),Mv(-1, 0),Mv(0, 0),Mv(1, 0),Mv(2, 0),Mv(-2, 1),Mv(-1, 1),Mv(0, 1),Mv(1, 1),Mv(2, 1),Mv(-2, 2),Mv(-1, 2),Mv(0, 2),Mv(1, 2),Mv(2, 2)} 이고,
    여기서, 현재 이미지 블록이 움직임 벡터 조정 모드를 활성화할 경우, 현재 블록에 대응되는 움직임 정보 예측 모드, 현재 블록에 대응되는 움직임 정보의 속성 및 현재 블록의 사이즈 정보는 특정된 조건을 만족하는 것을 특징으로 하는 인코딩 방법.
  8. 제7항에 있어서,
    상기 현재 블록이 움직임 벡터 조정 모드를 활성화할 경우, 상기 현재 블록이 만족하는 조건은 적어도 현재 블록이 움직임 정보 차이값을 인코딩하는 병합 모드인 MMVD모드를 사용하지 않는 것, 현재 블록이 merge 모드를 사용하는 것, 현재 블록의 사이즈가 한정 범위 내에 있는 것, 현재 블록의 움직임 정보가 2개의 상이한 방향의 움직임 정보를 포함하고, 2개의 상이한 방향의 움직임 정보에 대응되는 2개의 참조 프레임이 현재 프레임과의 거리는 동일한 것을 만족하는 것을 특징으로 하는 인코딩 방법.
  9. 제7항에 있어서,
    상기 현재 블록이 위치하는 현재 프레임이 상기 제1 참조 프레임 및 제2 참조 프레임과의 거리가 각각 동일한 것을 특징으로 하는 인코딩 방법.
  10. 제7항에 있어서,
    상기 현재 블록이 하나의 서브 블록을 포함할 경우, 상기 서브 블록이 현재 블록 자체이고, 상기 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터는 상기 현재 블록의 2개의 상이한 방향의 원본 움직임 벡터이며,
    상기 현재 블록이 복수의 서브 블록을 포함할 경우, 상기 복수의 서브 블록에서 각각의 서브 블록에 있어서, 상기 제1 원본 움직임 벡터 및 제2 원본 움직임 벡터는 상기 현재 블록의 2개의 상이한 방향의 원본 움직임 벡터를 공유하는 것을 특징으로 하는 인코딩 방법.
  11. 디코딩 장치로서,
    프로세서 및 기계 판독 가능 저장 매체를 포함하고, 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령이 저장되며; 상기 프로세서는 기계 실행 가능 명령을 실행하여, 제1항 내지 제6항 중의 어느 한 항에 따른 디코딩 방법을 구현하는 것을 특징으로 하는 디코딩 장치.
  12. 인코딩 장치로서,
    프로세서 및 기계 판독 가능 저장 매체를 포함하고, 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령이 저장되며; 상기 프로세서는 기계 실행 가능 명령을 실행하여,
    현재 블록에서 움직임 벡터 조정 모드를 활성화할 경우, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 결정하고, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 기반으로, 상기 현재 블록의 예측값을 결정하되, 여기서, 현재 블록에 포함된 각각의 서브 블록에 대해, 상기 서브 블록의 예측값을 결정하는 단계는,
    제1 원본 움직임 벡터 및 제1 참조 프레임, 제2 원본 움직임 벡터 및 제2 참조 프레임을 포함하는 상기 현재 블록의 움직임 정보를 획득하는 단계;
    상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제2 참조 블록을 결정하며; 제1 참조 블록의 픽셀값 및 제2 참조 블록의 픽셀값에 따라, 최적 움직임 벡터를 획득하는 단계 - 상기 최적 움직임 벡터를 획득하는 단계는, 초기 움직임 벡터를 중심으로, 상기 초기 움직임 벡터를 포함하는 상기 초기 움직임 벡터 주변의 움직임 벡터로부터 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 결정하는 단계를 포함하되, 상기 초기 움직임 벡터는 상기 제1 원본 움직임 벡터 또는 상기 제2 원본 움직임 벡터이고; 상기 제1 참조 블록의 픽셀값 및 상기 제2 참조 블록의 픽셀값에 따라, 상기 초기 움직임 벡터에 대응되는 비용 값, 각각의 후보 움직임 벡터에 대응되는 비용 값을 획득하는 단계를 포함하며; 및 상기 초기 움직임 벡터에 대응되는 비용 값 및 상기 각각의 후보 움직임 벡터에 대응되는 비용 값에 따라, 상기 초기 움직임 벡터 및 각각의 후보 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 하는 단계를 포함함 -;
    상기 최적 움직임 벡터에 따라 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및
    상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 단계 - 여기서, 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 단계는, 상기 제1 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제3 참조 블록을 결정하고, 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제4 참조 블록을 결정하며; 상기 제3 참조 블록의 픽셀값 및 상기 제4 참조 블록의 픽셀값에 따라 가중치를 부여하여, 상기 서브 블록의 예측값을 획득하는 단계를 포함함 - 를 포함하고,
    여기서, 초기 움직임 벡터를 중심으로, 상기 초기 움직임 벡터를 포함하는 상기 초기 움직임 벡터 주변의 움직임 벡터로부터 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 결정하는 단계는, 초기 움직임 벡터를 중심으로, 검색 범위를 2로 하여, 상기 초기 움직임 벡터를 포함하는 25개의 움직임 벡터를 검색하며, 상기 25개의 움직임 벡터를 후보 움직임 벡터로 결정하는 단계를 포함하되; 상기 25개의 움직임 벡터의 검색 순서는 순차적으로, {Mv(-2,-2),Mv(-1,-2),Mv(0,-2),Mv(1,-2),Mv(2,-2),Mv(-2,-1),Mv(-1,-1),Mv(0,-1),Mv(1,-1),Mv(2,-1),Mv(-2, 0),Mv(-1, 0),Mv(0, 0),Mv(1, 0),Mv(2, 0),Mv(-2, 1),Mv(-1, 1),Mv(0, 1),Mv(1, 1),Mv(2, 1),Mv(-2, 2),Mv(-1, 2),Mv(0, 2),Mv(1, 2),Mv(2, 2)} 이고,
    여기서, 현재 이미지 블록이 움직임 벡터 조정 모드를 활성화할 경우, 현재 블록에 대응되는 움직임 정보 예측 모드, 현재 블록에 대응되는 움직임 정보의 속성 및 현재 블록의 사이즈 정보는 특정된 조건을 만족하는 방법을 구현하는 것을 특징으로 하는 인코딩 장치.
  13. 디코더로서,
    상기 디코더는 제1항 내지 제6항 중의 어느 한 항에 따른 디코딩 방법을 구현하도록 구성되는 것을 특징으로 하는 디코더.
  14. 인코더로서,
    상기 인코더는
    현재 블록에서 움직임 벡터 조정 모드를 활성화할 경우, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 결정하고, 상기 현재 블록에 포함된 각각의 서브 블록의 예측값을 기반으로, 상기 현재 블록의 예측값을 결정하되, 여기서, 현재 블록에 포함된 각각의 서브 블록에 대해, 상기 서브 블록의 예측값을 결정하는 단계는,
    제1 원본 움직임 벡터 및 제1 참조 프레임, 제2 원본 움직임 벡터 및 제2 참조 프레임을 포함하는 상기 현재 블록의 움직임 정보를 획득하는 단계;
    상기 현재 블록의 제1 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제1 참조 블록을 결정하고, 상기 현재 블록의 제2 원본 움직임 벡터에 따라 상기 서브 블록에 대응되는 제2 참조 블록을 결정하며; 제1 참조 블록의 픽셀값 및 제2 참조 블록의 픽셀값에 따라, 최적 움직임 벡터를 획득하는 단계 - 상기 최적 움직임 벡터를 획득하는 단계는, 초기 움직임 벡터를 중심으로, 상기 초기 움직임 벡터를 포함하는 상기 초기 움직임 벡터 주변의 움직임 벡터로부터 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 결정하는 단계를 포함하되, 상기 초기 움직임 벡터는 상기 제1 원본 움직임 벡터 또는 상기 제2 원본 움직임 벡터이고; 상기 제1 참조 블록의 픽셀값 및 상기 제2 참조 블록의 픽셀값에 따라, 상기 초기 움직임 벡터에 대응되는 비용 값, 각각의 후보 움직임 벡터에 대응되는 비용 값을 획득하는 단계를 포함하며; 및 상기 초기 움직임 벡터에 대응되는 비용 값 및 상기 각각의 후보 움직임 벡터에 대응되는 비용 값에 따라, 상기 초기 움직임 벡터 및 각각의 후보 움직임 벡터로부터 하나의 움직임 벡터를 선택하여 최적 움직임 벡터로 하는 단계를 포함함 -;
    상기 최적 움직임 벡터에 따라 상기 제1 원본 움직임 벡터 및 상기 제2 원본 움직임 벡터를 조정하여, 상기 제1 원본 움직임 벡터에 대응되는 제1 타깃 움직임 벡터 및 상기 제2 원본 움직임 벡터에 대응되는 제2 타깃 움직임 벡터를 획득하는 단계; 및
    상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 단계 - 여기서, 상기 제1 타깃 움직임 벡터 및 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록의 예측값을 결정하는 단계는, 상기 제1 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제3 참조 블록을 결정하고, 상기 제2 타깃 움직임 벡터에 따라 상기 서브 블록에 대응되는 제4 참조 블록을 결정하며; 상기 제3 참조 블록의 픽셀값 및 상기 제4 참조 블록의 픽셀값에 따라 가중치를 부여하여, 상기 서브 블록의 예측값을 획득하는 단계를 포함함 - 를 포함하고,
    여기서, 초기 움직임 벡터를 중심으로, 상기 초기 움직임 벡터를 포함하는 상기 초기 움직임 벡터 주변의 움직임 벡터로부터 움직임 벡터를 선택하고, 선택된 움직임 벡터를 후보 움직임 벡터로 결정하는 단계는, 초기 움직임 벡터를 중심으로, 검색 범위를 2로 하여, 상기 초기 움직임 벡터를 포함하는 25개의 움직임 벡터를 검색하며, 상기 25개의 움직임 벡터를 후보 움직임 벡터로 결정하는 단계를 포함하되; 상기 25개의 움직임 벡터의 검색 순서는 순차적으로, {Mv(-2,-2),Mv(-1,-2),Mv(0,-2),Mv(1,-2),Mv(2,-2),Mv(-2,-1),Mv(-1,-1),Mv(0,-1),Mv(1,-1),Mv(2,-1),Mv(-2, 0),Mv(-1, 0),Mv(0, 0),Mv(1, 0),Mv(2, 0),Mv(-2, 1),Mv(-1, 1),Mv(0, 1),Mv(1, 1),Mv(2, 1),Mv(-2, 2),Mv(-1, 2),Mv(0, 2),Mv(1, 2),Mv(2, 2)}이고,
    여기서, 현재 이미지 블록이 움직임 벡터 조정 모드를 활성화할 경우, 현재 블록에 대응되는 움직임 정보 예측 모드, 현재 블록에 대응되는 움직임 정보의 속성 및 현재 블록의 사이즈 정보는 특정된 조건을 만족하는 방법을 구현하도록 구성되는 것을 특징으로 하는 인코더.
  15. 비휘발성 기계 판독 가능 저장 매체로서,
    상기 비휘발성 기계 판독 가능 저장 매체에는 프로세서에 의해 실행 가능한 기계 실행 가능 명령이 저장되며; 상기 프로세서는 기계 실행 가능 명령을 실행하여, 제1항 내지 제6항 중의 어느 한 항에 따른 방법을 구현하는 기계 판독 가능 저장 매체.
  16. 비휘발성 기계 판독 가능 저장 매체로서,
    상기 비휘발성 기계 판독 가능 저장 매체에는 프로세서에 의해 실행 가능한 기계 실행 가능 명령이 저장되며; 상기 프로세서는 기계 실행 가능 명령을 실행하여, 제7항 내지 제10항 중의 어느 한 항에 따른 방법을 구현하는 기계 판독 가능 저장 매체.
KR1020237043887A 2019-03-11 2020-03-11 인코딩 및 디코딩 방법 및 장치, 인코딩단 기기 및 디코딩단 기기 KR102664248B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201910182197.8A CN111698509B (zh) 2019-03-11 2019-03-11 一种编解码方法、装置及其设备
CN201910182197.8 2019-03-11
KR1020217031720A KR102619925B1 (ko) 2019-03-11 2020-03-11 인코딩 및 디코딩 방법 및 장치, 인코딩단 기기 및 디코딩단 기기
PCT/CN2020/078849 WO2020182161A1 (zh) 2019-03-11 2020-03-11 编解码方法与装置、编码端设备和解码端设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217031720A Division KR102619925B1 (ko) 2019-03-11 2020-03-11 인코딩 및 디코딩 방법 및 장치, 인코딩단 기기 및 디코딩단 기기

Publications (2)

Publication Number Publication Date
KR20240005123A true KR20240005123A (ko) 2024-01-11
KR102664248B1 KR102664248B1 (ko) 2024-05-17

Family

ID=

Also Published As

Publication number Publication date
JP7311619B2 (ja) 2023-07-19
CN113709470A (zh) 2021-11-26
CN113709472B (zh) 2022-11-01
CN112468812A (zh) 2021-03-09
CN113709465B (zh) 2022-11-01
CN112866700B (zh) 2022-07-29
CN112468810A (zh) 2021-03-09
CN112672156B (zh) 2022-07-29
CN112969072B (zh) 2022-08-26
CN112954335A (zh) 2021-06-11
CN112954325B (zh) 2022-09-30
CN113709475A (zh) 2021-11-26
WO2020182162A1 (zh) 2020-09-17
CN112866707A (zh) 2021-05-28
CN112468813A (zh) 2021-03-09
CN113709475B (zh) 2022-11-01
CN112866703B (zh) 2022-09-30
CN112468811B (zh) 2022-07-01
CN112954335B (zh) 2022-09-30
CN112954342B (zh) 2022-01-25
CN112969072A (zh) 2021-06-15
CN112954333B (zh) 2022-07-01
CN113709471B (zh) 2022-11-01
CN112511831A (zh) 2021-03-16
CN112866704B (zh) 2022-07-29
CN113709466B (zh) 2022-11-01
CN112969069B (zh) 2022-08-26
CN112468809B (zh) 2022-07-01
CN113709469A (zh) 2021-11-26
CN113709470B (zh) 2022-11-01
CN112954336B (zh) 2022-09-30
CN112866708A (zh) 2021-05-28
CN113709474B (zh) 2022-11-01
CN112866701A (zh) 2021-05-28
CN112511829A (zh) 2021-03-16
CN112954339B (zh) 2022-08-26
CN112954341A (zh) 2021-06-11
CN112468811A (zh) 2021-03-09
CN112468814A (zh) 2021-03-09
CN112866705B (zh) 2022-08-26
CN112954327A (zh) 2021-06-11
CN112866700A (zh) 2021-05-28
CN112954329B (zh) 2022-08-26
CN112468809A (zh) 2021-03-09
CA3131447A1 (en) 2020-09-17
CN112954333A (zh) 2021-06-11
CN112954329A (zh) 2021-06-11
ZA202106161B (en) 2024-01-31
CN113709471A (zh) 2021-11-26
CN112969071A (zh) 2021-06-15
CN112887716B (zh) 2022-05-31
EP3941056A1 (en) 2022-01-19
CN112511827B (zh) 2022-07-01
CN112954331B (zh) 2022-07-29
CN113709472A (zh) 2021-11-26
CN111698509A (zh) 2020-09-22
CN112954332B (zh) 2022-08-26
CN112511825A (zh) 2021-03-16
CN112866705A (zh) 2021-05-28
CN112954327B (zh) 2022-09-30
CN113709468B (zh) 2022-11-01
CN113709473B (zh) 2022-11-25
CN112954340B (zh) 2022-08-26
CN112866709B (zh) 2022-07-29
CN112954336A (zh) 2021-06-11
CN112866699A (zh) 2021-05-28
CN113709468A (zh) 2021-11-26
CN112954326B (zh) 2022-09-30
CN112866702B (zh) 2022-03-01
JP2023126940A (ja) 2023-09-12
CN112511830A (zh) 2021-03-16
CN112954326A (zh) 2021-06-11
CA3228568A1 (en) 2020-09-17
CN112511828B (zh) 2022-07-29
EP3941056A4 (en) 2022-10-05
CN112969070B (zh) 2022-08-26
CN112866708B (zh) 2022-09-30
CN112887715A (zh) 2021-06-01
CN112954330A (zh) 2021-06-11
CN112866698B (zh) 2022-08-26
CN112954338B (zh) 2022-08-26
CN112954334A (zh) 2021-06-11
CN112866706A (zh) 2021-05-28
CN112866699B (zh) 2022-11-01
CN112954340A (zh) 2021-06-11
CN112492308A (zh) 2021-03-12
CN112954331A (zh) 2021-06-11
CN112511829B (zh) 2022-07-01
CN113709473A (zh) 2021-11-26
JP2022522376A (ja) 2022-04-18
CN112954332A (zh) 2021-06-11
AU2020236452A1 (en) 2021-09-23
MX2021010608A (es) 2021-09-28
WO2020182164A1 (zh) 2020-09-17
ZA202209597B (en) 2022-12-21
CN113709465A (zh) 2021-11-26
CN112866706B (zh) 2022-07-29
CN112672156A (zh) 2021-04-16
CN112532983B (zh) 2022-07-01
CN112954342A (zh) 2021-06-11
CN110557644B (zh) 2020-11-06
CN113709467B (zh) 2022-11-01
CN112954338A (zh) 2021-06-11
CN111698509B (zh) 2022-09-30
CN112511827A (zh) 2021-03-16
AU2020236452B2 (en) 2023-03-30
CN112866707B (zh) 2022-01-25
CN112954337B (zh) 2022-07-29
CN112866702A (zh) 2021-05-28
CN112511828A (zh) 2021-03-16
CN112969070A (zh) 2021-06-15
CN112532983A (zh) 2021-03-19
KR102619925B1 (ko) 2023-12-29
BR112021017777A2 (pt) 2021-11-16
US20220167004A1 (en) 2022-05-26
CN112468812B (zh) 2022-07-01
CN112954341B (zh) 2022-08-26
CN112866703A (zh) 2021-05-28
KR20210129206A (ko) 2021-10-27
CN112511826A (zh) 2021-03-16
CN110312132A (zh) 2019-10-08
SG11202109366VA (en) 2021-09-29
US11902563B2 (en) 2024-02-13
CN112954339A (zh) 2021-06-11
CN113709469B (zh) 2022-11-01
CN112866704A (zh) 2021-05-28
CN112969069A (zh) 2021-06-15
CN112954325A (zh) 2021-06-11
CN112866698A (zh) 2021-05-28
CN110557644A (zh) 2019-12-10
CN112954328A (zh) 2021-06-11
CN113709466A (zh) 2021-11-26
CN112954337A (zh) 2021-06-11
CN112969071B (zh) 2022-08-26
CN112954328B (zh) 2022-08-26
CN110312132B (zh) 2020-05-12
CN112887716A (zh) 2021-06-01
CA3131447C (en) 2024-03-19
CN112866709A (zh) 2021-05-28
CN113709474A (zh) 2021-11-26
WO2020182161A1 (zh) 2020-09-17
CN112866701B (zh) 2022-08-26
CN112887715B (zh) 2022-03-25
CN112565759A (zh) 2021-03-26
CN113709467A (zh) 2021-11-26

Similar Documents

Publication Publication Date Title
KR102619925B1 (ko) 인코딩 및 디코딩 방법 및 장치, 인코딩단 기기 및 디코딩단 기기
JP2022550592A (ja) 符号化及び復号方法、装置及びデバイス
KR102664248B1 (ko) 인코딩 및 디코딩 방법 및 장치, 인코딩단 기기 및 디코딩단 기기

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant