KR20220050228A - 인코딩 및 디코딩 방법, 장치 및 이의 기기 - Google Patents

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

Info

Publication number
KR20220050228A
KR20220050228A KR1020227011043A KR20227011043A KR20220050228A KR 20220050228 A KR20220050228 A KR 20220050228A KR 1020227011043 A KR1020227011043 A KR 1020227011043A KR 20227011043 A KR20227011043 A KR 20227011043A KR 20220050228 A KR20220050228 A KR 20220050228A
Authority
KR
South Korea
Prior art keywords
block
current block
value
current
mode
Prior art date
Application number
KR1020227011043A
Other languages
English (en)
Inventor
팡둥 천
Original Assignee
항조우 힉비젼 디지털 테크놀로지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 항조우 힉비젼 디지털 테크놀로지 컴퍼니 리미티드 filed Critical 항조우 힉비젼 디지털 테크놀로지 컴퍼니 리미티드
Publication of KR20220050228A publication Critical patent/KR20220050228A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/186Methods 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 colour or a chrominance component
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 인코딩 및 디코딩 방법, 장치 및 이의 기기를 제공하고, 만약 하기 조건들이 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하는 단계: 제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 현재 블록이 병진 움직임 모델을 사용하는 것; 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것; 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 두 개의 참조 프레임 중 하나의 참조 프레임은 현재 프레임의 앞에 위치하며, 상기 두 개의 참조 프레임 중 다른 참조 프레임은 상기 현재 프레임의 뒤에 위치하고, 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것; 두 개의 참조 프레임의 가중된 가중치가 동일한 것; 두 개의 참조 프레임이 모두 단기 참조 프레임인 것; 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것; 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 및 만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 현재 블록에 대해 움직임 보상을 수행하는 단계를 포함한다. 본 발명을 통해 인코딩 성능이 향상된다.

Description

인코딩 및 디코딩 방법, 장치 및 이의 기기
본 발명은 인코딩 및 디코딩 기술분야에 관한 것으로, 특히 인코딩 및 디코딩 방법, 장치 및 이의 기기에 관한 것이다.
공간 절약의 목적을 달성하기 위해, 비디오 이미지는 모두 인코딩된 후 전송되며, 완전한 비디오 인코딩 방법은 예측, 변환, 양자화, 엔트로피 부호화, 필터링 등 과정을 포함할 수 있다. 여기서, 예측 인코딩은 인트라 프레임 인코딩 및 인터 프레임 인코딩을 포함하는데, 인터 프레임 인코딩은 비디오 시간 영역(time domain)의 관련성을 이용하고, 인코딩된 이미지에 이웃한 픽셀을 사용하여 현재 이미지의 픽셀을 예측함으로써, 쓸데없는(redundant) 비디오 시간 영역을 효과적으로 제거하는 목적을 달성한다. 인터 프레임 인코딩에서, 움직임 벡터(Motion Vector, MV)를 사용하여 현재 프레임의 현재 블록과 참조 프레임의 참조 블록 사이의 상대적 변위를 나타낼 수 있다. 예를 들어, 만약 현재 프레임의 비디오 이미지 A와 참조 프레임의 비디오 이미지 B 사이에 매우 강한 시간 영역 관련성이 존재하면, 비디오 이미지 A의 이미지 블록 A1(현재 블록)을 전송해야 할 경우, 비디오 이미지 B에서 움직임 검색을 수행하여, 이미지 블록 A1에 가장 매칭되는 이미지 블록 B1(즉 참조 블록)을 찾고, 이미지 블록 A1과 이미지 블록 B1 사이의 상대적 변위를 결정할 수 있으며, 당해 상대적 변위가 바로 이미지 블록 A1의 움직임 벡터이다.
전통 방식에서, 현재 블록이 단방향 블록일 경우, 현재 블록의 단방향 움직임정보를 획득한 후, 상기 단방향 움직임 정보에 따라 인코딩/디코딩을 수행함으로써, 인코딩 성능을 향상시킬 수 있다. 그러나 현재 블록이 양방향 블록일 경우, 현재 블록의 양방향 움직임 정보를 획득한 후, 당해 양방향 움직임 정보에 따라 두 개의 상이한 방향에서 비롯되는 예측 이미지를 획득할 수 있고, 두 개의 상이한 방향에서 비롯되는 예측 이미지 사이에는 거울 대칭 관계가 종종 존재하는 바, 현재 인코딩 프레임워크에서는 이러한 특징을 충분히 이용하여 쓸데없는 것을 추가적으로 제거하지 못하였다. 다시 말해서, 양방향 블록의 응용 시나리오의 경우, 현재 인코딩 성능이 비교적 낮은 등 문제가 존재한다.
본 발명은 인코딩 성능을 향상시킬 수 있는 인코딩 및 디코딩 방법, 장치 및 이의 기기를 제공한다.
본 발명은 인코딩 및 디코딩 방법을 제공하고, 상기 방법은,
만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하는 단계:
제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 현재 블록이 병진 움직임 모델을 사용하는 것; 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것; 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것; 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것; 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것; 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것; 현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 및
만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하는 단계를 포함한다.
본 발명은 인코딩 및 디코딩 방법을 제공하고, 상기 방법은,
만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하는 단계:
제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 현재 블록이 병진 움직임 모델을 사용하는 것; 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것; 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것; 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것; 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것; 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것; 현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 및
만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하는 단계를 포함한다.
본 발명은 인코딩 및 디코딩 장치를 제공하고, 상기 장치는,
만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하기 위한 결정 모듈:
제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 현재 블록이 병진 움직임 모델을 사용하는 것; 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것; 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것; 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것; 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것; 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것; 현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 및
만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하기 위한 움직임 보상 모듈을 포함한다.
본 발명은 프로세서 및 기계 판독 가능 저장 매체를 포함하는 디코딩단 기기를 제공하고, 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령어가 저장되어 있으며,
상기 프로세서는 기계 실행 가능 명령어를 실행하여,
만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하는 단계:
제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 현재 블록이 병진 움직임 모델을 사용하는 것; 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것; 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것; 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것; 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것; 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것; 현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 및
만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하는 단계를 구현한다.
본 발명은 프로세서 및 기계 판독 가능 저장 매체를 포함하는 인코딩단 기기를 제공하고, 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령어가 저장되어 있으며,
상기 프로세서는 기계 실행 가능 명령어를 실행하여,
만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하는 단계:
제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 현재 블록이 병진 움직임 모델을 사용하는 것; 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것; 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것; 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것; 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것; 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것; 현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 및
만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하는 단계를 수행한다.
본 발명은 비디오 카메라를 제공하고, 상기 비디오 카메라는 프로세서 및 기계 판독 가능 저장 매체를 포함하되, 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령어가 저장되어 있으며;
상기 프로세서는 기계 실행 가능 명령어를 실행하여,
만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하는 단계:
제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 현재 블록이 병진 움직임 모델을 사용하는 것; 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것; 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것; 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것; 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것; 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것; 현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 및
만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하는 단계를 구현한다.
상기 기술적 해결수단으로부터, 본 발명의 실시예에서는 만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행할 수 있음으로써, 낮은 예측 품질, 예측 오류 등 문제를 해결하고, 하드웨어 구현 친화성을 향상시켜 인코딩 성능의 향상을 구현할 수 있으며, 인코딩 성능 및 인코딩 효율을 향상시킨다.
본 발명의 실시예의 기술적 해결수단을 더욱 명확하게 설명하기 위해, 아래에서는 본 발명의 실시예를 설명하기 위해 사용되는 도면에 대해 간단히 설명하기로 하며, 아래 설명에서의 도면은 본 발명에 기재된 일부 실시예일 뿐, 본 기술분야의 통상의 기술자라면 본 발명의 실시예에 따른 이러한 도면에 따라 다른 도면을 획득할 수도 있음은 자명한 것이다.
도 1a는 본 발명의 일 실시형태의 보간의 모식도이다.
도 1b는 본 발명의 일 실시형태의 비디오 인코딩 프레임워크의 모식도이다.
도 2는 본 발명의 일 실시형태의 인코딩 및 디코딩 방법의 흐름도이다.
도 3은 본 발명의 다른 실시형태의 인코딩 및 디코딩 방법의 흐름도이다.
도 4는 본 발명의 다른 실시형태의 인코딩 및 디코딩 방법의 흐름도이다.
도 5는 본 발명의 다른 실시형태의 인코딩 및 디코딩 방법의 흐름도이다.
도 6a 내지 도 6e는 본 발명의 일 실시형태의 참조 블록을 채우는 모식도이다.
도 7은 본 발명의 일 실시형태의 목표 참조 블록의 모식도이다.
도 8은 본 발명의 일 실시형태의 인코딩 및 디코딩 장치의 구조도이다.
도 9a는 본 발명의 일 실시형태의 디코딩단 기기의 하드웨어 구조도이다.
도 9b는 본 발명의 일 실시형태의 인코딩단 기기의 하드웨어 구조도이다.
본 발명의 실시예에서 사용되는 용어는 특정 실시예의 목적을 설명하기 위한 것일 뿐, 본 발명의 실시예를 제한하기 위함이 아니다. 문맥상 명확하게 다른 의미를 나타내지 않는 한, 본 발명의 실시예 및 특허청구범위에 사용된 홀수 형식의 “하나”, “상기”, 및 “당해”는 복수 형식도 포함한다. 또한, 본 명세서에서 사용된 용어 “및/또는”은 하나 또는 복수의 연관되는 나열된 항목을 포함하는 임의의 또는 모든 가능한 조합을 의미함을 이해해야 한다. 본 발명의 실시예에서 용어 제1, 제2, 제3 등을 사용하여 다양한 정보를 설명할 수도 있는 바, 이러한 정보는 이러한 용어에 제한되어서는 아니됨을 이해해야 한다. 이러한 용어는 동일한 유형의 정보를 서로 구별하기 위해서만 사용된다. 예를 들어, 본 발명의 범위를 벗어나지 않으면서, 제1 정보를 제2 정보라고도 할 수 있으며, 유사하게, 제2 정보를 제1 정보라고 칭할 수도 있다. 문맥에 따라, 여기서 사용된 단어 “만약”은 “... ... 경우”, “... ...때” 또는 “... ...결정에 응답하여”로 해석될 수 있다.
본 발명의 실시예에서는 인코딩 및 디코딩 방법, 장치 및 이의 기기를 제공하며, 하기와 같은 개념들이 언급될 수 있다.
인트라 프레임 예측과 인터 프레임 예측(intra prediction and inter prediction) 기술: 인트라 프레임 예측은 비디오 공간 영역의 관련성을 이용하고, 현재 이미지의 인코딩된 블록의 픽셀을 사용하여 현재 픽셀을 예측하여, 쓸데없는 비디오 공간 영역을 제거하는 목적을 달성하는 것을 의미한다. 인터 프레임 예측은 비디오 시간 영역의 관련성을 이용하고, 비디오 시퀀스에는 일반적으로 강한 시간 영역 관련성이 포함되기 때문에, 인코딩된 이미지에 이웃한 픽셀을 사용하여 현재 이미지의 픽셀을 예측함으로써, 쓸데없는 비디오 시간 영역을 효과적으로 제거하는 목적을 달성할 수 있다. 주요한 비디오 인코딩 표준 인터 프레임 예측 부분은 모두 블록 기반 움직임 보상 기술을 사용하며, 주요한 원리는 현재 이미지의 각각의 픽셀 블록에 대해, 이전의 인코딩된 이미지에서 하나의 최적의 매칭 블록을 찾는 것이며, 상기 과정을 움직임 추정이라고 칭한다.
움직임 벡터(Motion Vector, MV): 인터 프레임 인코딩에서, 움직임 벡터를 사용하여 현재 블록과 그 참조 이미지 중의 최적의 매칭 블록 사이의 상대적 변위를 나타낼 수 있다. 각각의 분할된 블록에는 모두 디코딩단으로 전송되는 상응한 움직임 벡터가 구비되며, 만약 각각의 블록의 움직임 벡터에 대해 독립적인 인코딩 및 전송을 수행하면, 특히 작은 사이즈의 블록으로 분할될 경우, 상당히 많은 비트를 소모해야 한다. 움직임 벡터를 인코딩하기 위한 비트 수를 줄이기 위해, 인접 이미지 블록 사이의 공간 관련성을 이용하고, 인접한 인코딩된 블록의 움직임 벡터에 따라, 현재 블록의 움직임 벡터를 예측한 다음, 예측 차이를 인코딩함으로써, 움직임 벡터를 나타내는 비트 수를 효과적으로 줄인다. 현재 블록의 움직임 벡터를 인코딩할 경우, 인접한 인코딩된 블록의 움직임 벡터를 사용하여 현재 블록의 움직임 벡터를 예측하고, 움직임 벡터의 예측값(MVP, Motion Vector Prediction)과 움직임 벡터의 실제 추정값 사이의 차이값(MVD, MotionVector Difference)을 인코딩하여, 인코딩 비트 수를 효과적으로 줄인다.
움직임 정보 (Motion Information): 움직임 벡터가 현재 블록과 특정 참조 블록 사이의 위치 오프셋을 나타내기 때문에, 이미지 블록을 가리키는 정보를 정확하게 획득하기 위해서는, 움직임 벡터 이외에도, 어느 참조 프레임 이미지를 사용하였는지를 나타내기 위한 참조 프레임 이미지의 인덱스 정보도 필요하다. 현재 프레임 이미지의 경우, 하나의 참조 프레임 이미지 리스트를 셋업할 수 있고, 참조 프레임 이미지 인덱스 정보는 현재 블록이 참조 프레임 이미지 리스트 중의 몇 번째 참조 프레임 이미지를 사용하였는지 나타낸다. 많은 인코딩 기술은 또한 복수의 참조 이미지 리스트를 지원하므로, 하나의 인덱스 값을 사용하여 어느 참조 이미지 리스트를 사용하였는지 나타낼 수 있고, 이 인덱스 값을 참조 방향이라고 칭한다. 움직임 벡터, 참조 프레임 인덱스, 참조 방향 등 움직임에 관련되는 정보를 총칭하여 움직임 정보라고 칭할 수 있다.
보간(Interpolation): 만약 현재 움직임 벡터가 비정수 픽셀 정밀도이면, 현재 블록에 대응하는 참조 프레임으로부터 기존 픽셀값을 직접 복사할 수 없으며, 현재 블록의 필요한 픽셀값은 보간을 통해서만 획득될 수 있다. 도 1a를 참조하면, 만약 오프셋이 1/2 픽셀인 픽셀값 Y1/2를 획득해야 할 경우, 주변의 기존 픽셀값 X를 보간하여 획득할 수 있다. 예시적으로, 만약 탭 수가 N인 보간 필터를 사용하면, 주변의 N개 정수 픽셀 보간을 통해 획득해야 한다.
예를 들어, 만약 탭 수가 8이면,
Figure pct00001
이고,
Figure pct00002
는 필터 계수이며, 필터 계수는 즉 가중 계수이다.
움직임 보상: 움직임 보상은 보간 또는 복사를 통해 현재 블록의 모든 픽셀값을 획득하는 과정이다.
머지 모드(Merge mode): 일반 머지 모드(즉 Normal Merge 모드, regular Merge 모드라고도 함), 서브 블록 모드(서브 블록 움직임 정보를 사용한 머지 모드, Subblock 머지 모드라고 칭할 수 있음), MMVD 모드(움직임 차이를 인코딩한 머지 모드, merge with MVD 모드라고 칭할 수 있음), CIIP 모드(인터 프레임 인트라 프레임 예측이 연합되어 새로운 예측값을 생성하는 머지 모드, combine inter intra prediciton mode라고 칭할 수 있음), TPM 모드(삼각 예측을 위한 머지 모드, triangular prediction mode라고 칭할 수 있음), GEO 모드(임의의 기하학적 분할 형상에 기반한 머지 모드, Geometrical Partitioning라고 칭할 수 있음)를 포함한다.
스킵 모드(skip mode): 스킵 모드는 한 가지 특수한 머지 모드로서, 스킵 모드가 머지 모드와 상이한 점은 스킵 모드는 잔차를 인코딩할 필요가 없다는 점이다. 만약 현재 블록이 스킵 모드이면, CIIP 모드는 기본 값이 오프이며, 일반 머지 모드, 서브 블록 모드, MMVD 모드, TPM 모드, GEO 모드는 여전히 적용될 수 있다.
예시적으로, 일반 머지 모드, 서브 블록 모드, MMVD 모드, CIIP 모드, TPM 모드, GEO 모드 등에 기반하여, 어떻게 예측값을 생성할 것인지 결정할 수 있다. 예측값이 생성된 후, 머지 모드의 경우, 예측값 및 잔차 값을 이용하여 재구성 값을 획득할 수 있고; 스킵 모드의 경우, 잔차 값이 존재하지 않으므로, 직접 예측값을 이용하여 재구성 값을 획득한다.
시퀀스 파라미터 세트(SPS, sequence parameter set): 시퀀스 파라미터 세트에는 전체 시퀀스에서 일부 도구의 스위칭이 허용되는지 여부를 결정하는 플래그 비트가 존재한다. 만약 플래그 비트가 1이면, 비디오 시퀀스에서 상기 플래그 비트에 대응하는 도구가 활성화되는 것을 허용하고; 만약 플래그 비트가 0이면, 비디오 시퀀스에서 상기 플래그 비트에 대응하는 도구가 인코딩 과정에서 활성화되는 것을 허용하지 않는다.
일반 머지 모드: 후보 움직임 정보 리스트에서 하나의 움직임 정보를 선택하고, 상기 움직임 정보에 기반하여 현재 블록의 예측값을 생성하며, 상기 후보 움직임 정보 리스트는 공간 영역 인접 블록 후보 움직임 정보, 시간 영역 인접 블록 후보 움직임 정보, 공간 영역 비인접 블록 후보 움직임 정보, 기존 움직임 정보에 기반하여 조합하여 획득된 움직임 정보, 디폴트 움직임 정보 등을 포함한다.
MMVD 모드: 일반 머지 모드의 후보 움직임 정보 리스트에 기반하여, 일반 머지 모드의 후보 움직임 정보 리스트에서 하나의 움직임 정보를 선택하여 기준 움직임 정보로 간주하고, 테이블 조회 방법으로 움직임 정보 차이를 획득한다. 기준 움직임 정보 및 움직임 정보 차이에 기반하여 최종의 움직임 정보를 획득하고, 상기 최종의 움직임 정보에 기반하여 현재 블록의 예측값을 생성한다.
CIIP 모드: 인트라 프레임 예측값 및 인터 프레임 예측값을 결합하여 현재 블록의 새로운 예측값을 획득한다.
서브 블록 모드: 서브 블록 모드는 Affine 머지 모드 및 서브 블록 TMVP 모드를 포함한다.
Affine(어파인) 머지 모드도 일반 머지 모드와 유사하게, 후보 움직임 정보 리스트에서 하나의 움직임 정보를 선택하고, 상기 움직임 정보에 기반하여 현재 블록의 예측값을 생성한다. 일반 머지 모드와 상이한 점은, 일반 머지 모드의 후보 움직임 정보 리스트 중의 움직임 정보는 2-파라미터의 병진 움직임 벡터이고, Affine 머지 모드의 후보 움직임 정보 리스트 중의 움직임 정보는 4-파라미터의 Affine 움직임 정보이거나, 또는, 6-파라미터의 Affine 움직임 정보인 것이다.
서브 블록 TMVP(subblock-based temporal motion vector prediction) 모드는, 시간 영역 참조 프레임에서 참조 블록의 움직임 정보를 직접 멀티플렉싱하여 현재 블록의 예측값을 생성하는 데에 사용하고, 상기 블록 내의 각 서브 블록의 움직임 정보는 상이할 수 있다.
TPM 모드: 하나의 블록을 두 개의 삼각 서브 블록(45도 및 135도의 두 가지 삼각 서브 블록이 존재함)으로 나누고, 이 두 개의 삼각 서브 블록은 상이한 단방향 움직임 정보를 가지며, TPM 모드는 예측 과정에만 사용되고, 후속되는 변환, 양자화 과정에 영향을 미치지 않으며, 여기서의 단방향 움직임 정보도 직접 후보 움직임 정보 리스트에서 획득된 것이다.
GEO 모드: GEO 모드는 TPM 모드와 유사하지만 분할 형상이 상이하다. GEO 모드는 하나의 사각형 블록을 임의의 형상의 두 개의 서브 블록(TPM의 두 개의 삼각 서브 블록의 형상을 제외한 임의의 다른 형상)으로 나누고, 예컨대 하나의 삼각 서브 블록, 하나의 오각형 서브 블록으로 나누거나; 또는, 하나의 삼각 서브 블록, 하나의 사각형 서브 블록으로 나누거나; 또는, 두 개의 사다리꼴 서브 블록으로 나누며, 이 분할 형상에 대해 제한하지 않는다. GEO 모드에 의해 분할된 이 두 개의 서브 블록은 상이한 단방향 움직임 정보를 갖는다.
상기 예로부터 본 실시예에 관한 머지 모드 및 스킵 모드는 후보 움직임 정보 리스트에서 하나의 움직임 정보를 직접 선택하여, 현재 블록의 예측값을 생성하는 유형의 예측 모드를 의미함을 알 수 있고, 이러한 예측 모드는 인코딩단에서 움직임 검색 과정을 수행할 필요 없으며, MMVD 모드를 제외하고, 다른 모드들은 움직임 정보 차이를 인코딩할 필요가 없다.
SMVD(Symmetric Motion Vector Difference, 대칭 움직임 벡터 차이) 모드: SMVD 모드에서 양방향 움직임 정보 중의 두 개의 MVD는 대칭되고, 즉 그 중 하나의 MVD만 인코딩하면 되며, 다른 하나는 음의 MVD이다. SMVD 모드는 인코딩을 수행할 필요없이, 직접 다른 방향의 움직임 벡터 차이값으로부터 양방향 예측 모드의 특정 방향의 움직임 벡터 차이값을 유추하여 획득하는 것을 의미한다. 예시적으로, 한 가지 간단한 유도 방법은 직접 특정 방향의 움직임 벡터 차이를 스케일링하여 획득하는 것이며, 스케일링 인자는 두 개의 참조 프레임에서 현재 프레임까지의 거리와 관련이 있다.
병진 움직임 모델: 움직임 모델은 2-파라미터의 움직임 모델(예컨대, 2-파라미터의 움직임 벡터), 4-파라미터의 움직임 모델(예컨대, 4-파라미터의 어파인 모델), 6-파라미터의 움직임 모델(예컨대, 6-파라미터의 어파인 모델), 8-파라미터의 움직임 모델(예컨대, 투영 모델) 등을 포함할 수 있으나, 이에 제한되지 않는다. 병진 움직임 모델은 2-파라미터의 움직임 모델을 의미하고, 병진은 동일한 평면 내에서, 하나의 이미지 상의 모든 포인트가 모두 특정 직선 방향을 따라 동일한 거리만큼 이동하는 것을 의미하며, 이러한 이미지 움직임을 이미지의 병진 움직임, 줄여서 병진이라고 칭한다.
비디오 인코딩 프레임워크: 도 1b를 참조하면, 비디오 인코딩 프레임워크를 사용하여 본 발명의 실시예의 인코딩단 처리 프로세스를 구현할 수 있고, 이 밖에, 비디오 디코딩 프레임워크의 모식도는 도 1b와 유사하므로, 여기에서 더 이상 반복하여 설명하지 않으며, 또한, 비디오 디코딩 프레임워크를 사용하여 본 발명의 실시예의 디코딩단 처리 프로세스를 구현할 수 있다. 구체적으로, 비디오 인코딩 프레임워크 및 비디오 디코딩 프레임워크에는 인트라 프레임 예측, 움직임 추정/움직임 보상, 참조 이미지 버퍼, 인-루프(in-loop) 필터링, 재구성, 변환, 양자화, 역변환, 역양자화, 엔트로피 인코더 등 모듈이 포함된다. 인코딩단에서는 이러한 모듈 사이의 협력을 통해 인코딩단 처리 프로세스를 구현할 수 있고, 디코딩단에서는 이러한 모듈 사이의 협력을 통해 디코딩단 처리 프로세스를 구현할 수 있다.
관련 기술에서, 현재 블록이 양방향 블록(즉 현재 블록은 양방향 예측을 사용하는 블록)일 경우, 두 개의 상이한 방향에서 비롯되는 예측 이미지 사이에는 거울 대칭 관계가 종종 존재하는 바, 현재 인코딩 프레임워크에서는 이러한 특징을 충분히 이용하여 쓸데없는 것을 추가적으로 제거하지 못하였기에, 인코딩 성능이 비교적 낮은 등 문제가 존재한다. 상기 발견에 대해, 본 발명의 실시예에서는, 현재 블록이 양방향 블록일 경우, 만약 현재 블록에 대해 양방향 예측값 보상 모드(즉 양방향 광류(optical flow) 모드)를 시작함이 결정되면, 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행할 수 있음으로써, 낮은 예측 품질, 예측 오류 등 문제를 해결하고, 하드웨어 구현 친화성을 향상시켜 인코딩 성능의 향상을 구현할 수 있으며, 인코딩 성능 및 인코딩 효율을 향상시킨다. 예시적으로, 현재 블록이 양방향 예측을 사용하는 블록이라는 것은, 현재 블록의 움직임 정보가 양방향 움직임 정보이고, 양방향 움직임 정보가 두 개의 상이한 방향의 움직임 정보를 포함하는 것을 의미하며, 이 두 개의 상이한 방향의 움직임 정보를 제1 단방향 움직임 정보 및 제2 단방향 움직임 정보라고 칭한다. 제1 단방향 움직임 정보는 제1 참조 프레임에 대응될 수 있고, 제1 참조 프레임은 현재 블록이 위치한 현재 프레임의 앞에 위치하며; 제2 단방향 움직임 정보는 제2 참조 프레임에 대응될 수 있고, 제2 참조 프레임은 현재 블록이 위치한 현재 프레임의 뒤에 위치한다.
이하, 몇 개의 구체적인 실시예를 결합하여, 본 발명의 실시예의 인코딩 및 디코딩 방법을 상세하게 설명하기로 한다.
실시예 1: 도 2를 참조하면, 이는 본 발명의 실시예에서 제공되는 인코딩 및 디코딩 방법의 흐름 모식도이고, 상기 인코딩 및 디코딩 방법은 디코딩단 또는 인코딩단에 응용될 수 있으며, 상기 인코딩 및 디코딩 방법은 하기와 같은 단계를 포함할 수 있다:
단계 201에서, 만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정한다:
제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것;
현재 블록이 병진 움직임 모델을 사용하는 것;
현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것;
현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것;
현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것;
현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것;
현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것;
현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것;
현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것.
일 가능한 실시형태에서, 제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것;
현재 블록이 병진 움직임 모델을 사용하는 것;
현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것;
현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것;
현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것;
현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것;
현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것;
현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것;
현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 중 어느 하나의 조건이 만족되지 않으면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지 않음을 결정한다.
상기 실시예에서는 9개의 조건이 제공되었고, 상기 9개의 조건이 동시에 만족되는지 여부에 기반하여, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정한다.
실제 응용에서는, 또한 9개의 조건에서 일부 조건을 선택하고, 선택된 일부 조건에 기반하여 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정할 수도 있다. 예를 들어, 9개의 조건에서 5개의 조건을 선택하고, 이 선택 방식에 대해 제한하지 않으며, 임의의 5개의 조건일 수 있고, 만약 선택된 5개의 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하고; 만약 선택된 5개의 조건 중 어느 하나의 조건이 만족되지 않으면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지 않음을 결정한다. 물론, 9개의 조건에서 다른 수량의 조건을 선택할 수도 있으며, 이에 대해 제한하지 않는다.
상기 실시예에서, 현재 블록의 예측값이 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득된다는 것은, 현재 블록이 양방향 예측 모드를 사용하는 바, 즉 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록(즉 예측 블록)의 가중을 통해 획득된다는 것을 의미한다. 현재 블록은 두 개의 리스트의 움직임 정보에 대응하고, 제1 움직임 정보(즉 제1 단방향 움직임 정보) 및 제2 움직임 정보(즉 제2 단방향 움직임 정보)로 표기되며, 제1 움직임 정보는 제1 참조 프레임 및 제1 원시 움직임 벡터를 포함하고, 제2 움직임 정보는 제2 참조 프레임 및 제2 원시 움직임 벡터를 포함한다. 상기 두 개의 참조 프레임은 제1 참조 프레임 및 제2 참조 프레임일 수 있고, 두 개의 참조 프레임의 디스플레이 순서가 각각 현재 프레임의 앞과 뒤에 위치한다는 것은, 제1 참조 프레임이 현재 블록이 위치한 현재 프레임의 앞에 위치하고, 제2 참조 프레임이 현재 프레임의 뒤에 위치한다는 것을 의미한다. 제1 참조 프레임을 전향 참조 프레임이라고 칭하고, 전향 참조 프레임은 제1 리스트(예컨대, list0)에 위치하며, 제2 참조 프레임을 후향 참조 프레임이라고 칭하고, 후향 참조 프레임은 제2 리스트(예컨대, list1)에 위치한다.
상기 실시예에서, 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것은, 너비가 제1 임계값보다 크거나 같고, 높이가 제2 임계값보다 크거나 같으며, 면적이 제3 임계값보다 크거나 같은 것; 또는, 너비가 제1 임계값보다 크거나 같고, 높이가 제2 임계값보다 크거나 같으며, 면적이 제4 임계값보다 큰 것을 포함할 수 있으나, 이에 제한되지 않는다. 예시적으로, 상기 제3 임계값은 상기 제4 임계값보다 클 수 있다. 예를 들어, 제1 임계값은 8일 수 있고, 제2 임계값은 8일 수 있으며, 제3 임계값은 128일 수 있고, 제4 임계값은 64일 수 있다. 물론, 상기 수치는 몇 개의 예시일 뿐, 이에 대해 제한하지 않는다.
상기 실시예에서, 제어 정보가 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것은, 시퀀스 레벨 제어 정보(예컨대, 멀티 프레임의 이미지의 제어 정보)가 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 및/또는, 프레임 레벨 제어 정보(예컨대, 한 프레임의 이미지의 제어 정보)가 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것을 포함할 수 있으나, 이에 제한되지 않는다.
단계 202에서, 만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행한다.
일 가능한 실시형태에서, 만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 현재 블록에 포함된 적어도 하나의 서브 블록 중의 각각의 서브 블록에 대해: 상기 서브 블록의 제1 원시 예측값 및 제2 원시 예측값을 결정하고, 제1 원시 예측값 및 제2 원시 예측값에 따라 상기 서브 블록의 수평 방향 속률 및 수직 방향 속률을 결정한다. 수평 방향 속률 및 수직 방향 속률에 따라 상기 서브 블록의 예측 보상값을 획득하고, 제1 원시 예측값, 제2 원시 예측값 및 예측 보상값에 따라 상기 서브 블록의 목표 예측값을 획득한다. 각각의 서브 블록의 목표 예측값에 따라 현재 블록의 예측값을 결정한다.
예시적으로, 상기 서브 블록의 제1 원시 예측값 및 제2 원시 예측값을 결정하는 단계는 하기와 같은 단계를 포함할 수 있으나 이에 제한되지 않는다: 상기 서브 블록에 대응하는 유닛 블록을 결정하고, 현재 블록은 상기 유닛 블록을 포함할 수 있으며, 상기 유닛 블록은 상기 서브 블록을 포함할 수 있다. 상기 유닛 블록의 제1 단방향 움직임 정보에 따라 제1 참조 프레임에서 제1 참조 블록을 결정하고, 제1 참조 블록을 확장하여, 제2 참조 블록을 획득하며; 제2 참조 블록에서 상기 서브 블록에 대응하는 제1 목표 참조 블록을 선택하고, 제1 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제1 원시 예측값을 결정한다. 상기 유닛 블록의 제2 단방향 움직임 정보에 따라 제2 참조 프레임에서 제3 참조 블록을 결정하고, 제3 참조 블록을 확장하여, 제4 참조 블록을 획득하며; 제4 참조 블록에서 상기 서브 블록에 대응하는 제2 목표 참조 블록을 선택하고, 제2 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제2 원시 예측값을 결정한다.
예시적으로, 제1 참조 블록을 확장하여, 제2 참조 블록을 획득하는 단계는, 제1 참조 블록의 상측 가장자리 및 하측 가장자리를 각각 N행의 정수 픽셀 포인트로 채우고, 제1 참조 블록의 좌측 가장자리 및 우측 가장자리를 각각 N열의 정수 픽셀 포인트로 채워, 제2 참조 블록을 획득하는 단계를 포함할 수 있다. N은 0 또는 양의 정수이다. 제2 참조 블록 중의 채워진 N행의 정수 픽셀 포인트의 픽셀값 및 채워진 N열의 정수 픽셀 포인트의 픽셀값은, 제1 참조 프레임 내의 인접 정수 픽셀 위치의 픽셀값을 복사하여 획득되거나, 또는, 제2 참조 블록 중의 채워진 N행의 정수 픽셀 포인트의 픽셀값 및 채워진 N열의 정수 픽셀 포인트의 픽셀값은, 제1 참조 블록 중의 인접 픽셀 포인트의 픽셀값을 복사하여 획득된다.
예시적으로, 제3 참조 블록을 확장하여, 제4 참조 블록을 획득하는 단계는, 제3 참조 블록의 상측 가장자리 및 하측 가장자리를 각각 N행의 정수 픽셀 포인트로 채우고, 제3 참조 블록의 좌측 가장자리 및 우측 가장자리를 각각 N열의 정수 픽셀 포인트로 채워, 제4 참조 블록을 획득하는 단계를 포함할 수 있다. N은 0 또는 양의 정수이다. 제4 참조 블록 중의 채워진 N행의 정수 픽셀 포인트의 픽셀값 및 채워진 N열의 정수 픽셀 포인트의 픽셀값은, 제2 참조 프레임 내의 인접 정수 픽셀 위치의 픽셀값을 복사하여 획득되거나, 또는, 제4 참조 블록 중의 채워진 N행의 정수 픽셀 포인트의 픽셀값 및 채워진 N열의 정수 픽셀 포인트의 픽셀값은, 제3 참조 블록 중의 인접 픽셀 포인트의 픽셀값을 복사하여 획득된다.
일 가능한 실시형태에서, 제1 원시 예측값 및 제2 원시 예측값에 따라 서브 블록의 수평 방향 속률을 결정하는 단계는, 제1 원시 예측값 및 제2 원시 예측값에 따라 계수 S1 및 계수 S3을 결정하는 단계; 계수 S1, 계수 S3 및 속률 임계값에 따라 상기 서브 블록의 수평 방향 속률을 결정하는 단계를 포함할 수 있다.
제1 원시 예측값 및 제2 원시 예측값에 따라 서브 블록의 수직 방향 속률을 결정하는 단계는, 제1 원시 예측값 및 제2 원시 예측값에 따라 계수 S2, 계수 S5 및 계수 S6을 결정하는 단계; 및 계수 S2, 계수 S5, 계수 S6, 속률 임계값 및 상기 서브 블록의 수평 방향 속률에 따라, 상기 서브 블록의 수직 방향 속률을 결정하는 단계를 포함할 수 있다.
예시적으로, 계수 S1, 계수 S3, 계수 S2, 계수 S5 및 계수 S6의 결정 방식 및 관련 정의는 후속되는 실시예를 참조할 수 있으며, 여기에서 더 이상 설명하지 않는다.
예시적으로, 서브 블록의 수평 방향 속률은, 참조 프레임에서 상기 서브 블록에 대응하는 참조 블록(즉 참조 프레임에 위치하는, 상기 서브 블록에 대응하는 참조 블록)의 수평 방향(즉 X 방향) 속률을 의미할 수 있다.
예시적으로, 서브 블록의 수직 방향 속률은, 참조 프레임에서 상기 서브 블록에 대응하는 참조 블록(즉 참조 프레임에 위치하는, 상기 서브 블록에 대응하는 참조 블록)의 수직 방향(즉 Y 방향) 속률을 의미할 수 있다.
일 가능한 실시형태에서, 상기 수평 방향 속률 및 상기 수직 방향 속률에 따라 서브 블록의 예측 보상값을 획득하는 단계는 하기와 같은 단계를 포함할 수 있으나 이에 제한되지 않는다: 제1 원시 예측값에 따라 제1 수평 방향 기울기 및 제1 수직 방향 기울기(gradient)를 결정하고; 제2 원시 예측값에 따라 제2 수평 방향 기울기 및 제2 수직 방향 기울기를 결정한다. 다음, 상기 수평 방향 속률, 상기 제1 수평 방향 기울기, 상기 제2 수평 방향 기울기, 상기 수직 방향 속률, 상기 제1 수직 방향 기울기 및 상기 제2 수직 방향 기울기에 따라, 상기 서브 블록의 예측 보상값을 획득한다.
예시적으로, 상기 서브 블록의 각각의 픽셀 위치의 경우, 제1 수평 방향 기울기는 제1 참조 프레임에서 상기 픽셀 위치에 대응하는 수평 방향 기울기이고, 제1 수직 방향 기울기는 제1 참조 프레임에서 상기 픽셀 위치에 대응하는 수직 방향 기울기이며, 제2 수평 방향 기울기는 제2 참조 프레임에서 상기 픽셀 위치에 대응하는 수평 방향 기울기이고, 제2 수직 방향 기울기는 제2 참조 프레임에서 상기 픽셀 위치에 대응하는 수직 방향 기울기이다. 수평 방향 속률은 상기 서브 블록의 수평 방향 속률(즉 상기 서브 블록 내의 각각의 픽셀 위치는 동일한 수평 방향 속률에 대응됨)이고, 수직 방향 속률은 상기 서브 블록의 수직 방향 속률(즉 상기 서브 블록 내의 각각의 픽셀 위치는 동일한 수직 방향 속률에 대응됨)이다.
요약하면, 상기 서브 블록의 각각의 픽셀 위치의 경우, 상기 픽셀 위치에 대응하는 제1 수평 방향 기울기, 제2 수평 방향 기울기, 수평 방향 속률, 수직 방향 속률, 제1 수직 방향 기울기 및 제2 수직 방향 기울기에 따라, 상기 픽셀 위치의 예측 보상값을 결정할 수 있다. 다음, 상기 픽셀 위치에 대응하는 제1 원시 예측값, 제2 원시 예측값 및 예측 보상값에 따라, 상기 픽셀 위치의 목표 예측값을 획득한다.
예시적으로, 각각의 서브 블록의 경우, 상기 서브 블록의 각각의 픽셀 위치의 목표 예측값이 획득된 후, 이러한 픽셀 위치의 목표 예측값으로 상기 서브 블록의 목표 예측값을 구성할 수 있다. 현재 블록의 경우, 현재 블록의 각각의 서브 블록의 목표 예측값이 획득된 후, 이러한 서브 블록의 목표 예측값으로 현재 블록의 예측값을 구성할 수 있다.
상기 기술적 해결수단으로부터, 본 발명의 실시예에서는 만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행할 수 있음으로써, 낮은 예측 품질, 예측 오류 등 문제를 해결하고, 하드웨어 구현 친화성을 향상시켜 인코딩 성능의 향상을 구현할 수 있으며, 인코딩 성능 및 인코딩 효율을 향상시킨다.
실시예 2: 상기 방법과 동일한 구상에 기반하여, 도 3을 참조하면, 이는 본 발명의 실시예에서 제공되는 다른 인코딩 및 디코딩 방법의 흐름 모식도이고, 상기 방법은 디코딩단에 응용될 수 있으며, 상기 방법은 하기와 같은 단계를 포함할 수 있다:
단계 301에서, 디코딩단이 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정한다. 만약 시작함이 결정되면, 단계 302를 수행하고, 그렇지 않으면, 본 발명에서 제공한 양방향 예측값 보상 모드를 사용할 필요가 없으며, 이 경우의 처리에 대해 제한하지 않는다.
예시적으로, 만약 디코딩단이 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하면, 움직임 정보에 기반하여 획득된 예측값이 충분히 정확하지 않음을 설명하므로, 현재 블록에 대해 양방향 예측값 보상 모드(즉 본 발명의 기술적 해결수단)를 시작하고, 단계 302를 수행한다. 만약 디코딩단이 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지 않음을 결정하면, 움직임 정보에 기반하여 획득된 예측값이 이미 충분히 정확함을 설명하므로, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지 않는다.
예시적으로, 디코딩단은 코드 스트림을 수신하고, 코드 스트림 중의 디코딩된 정보(상기 디코딩된 정보에 기반하여 실시예 1의 관련 조건이 만족되는지 여부를 확인)에 기반하여, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정할 수 있다.
단계 302에서, 만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 현재 블록에 포함된 적어도 하나의 서브 블록 중의 각각의 서브 블록에 대해: 디코딩단이 상기 서브 블록의 제1 원시 예측값 및 제2 원시 예측값을 결정한다.
예시적으로, 현재 블록을 적어도 하나의 유닛 블록으로 분할할 수 있고, 예를 들면, 현재 블록은 하나의 유닛 블록(즉 상기 유닛 블록이 현재 블록임)을 포함할 수 있거나, 또는, 현재 블록은 적어도 두 개의 유닛 블록을 포함할 수 있다. 예를 들어, 유닛 블록의 너비는 dx이고, 높이는 dy이며, 현재 블록의 너비는 W이고, 높이는 H이다. 만약 W가 a보다 크면, dx는 a이고, 만약 W가 a보다 크지 않으면, dx는 W이다. 만약 H가 a보다 크면, dy는 a이고, 만약 H가 a보다 크지 않으면, dy는 H이다. a의 값은 경험에 따라 구성될 수 있으며, 예컨대 4, 8, 16, 32 등이며, 설명의 편리를 위해, 후속적으로는 a=16인 것을 예로 들어 설명한다. 예를 들어, 현재 블록의 사이즈가 8*16이면, 현재 블록은 하나의 유닛 블록만 포함하고, 상기 유닛 블록의 사이즈는 8*16이다. 또 예를 들어, 현재 블록의 사이즈가 8*32이면, 현재 블록은 유닛 블록 1 및 유닛 블록 2를 포함하고, 유닛 블록 1 및 유닛 블록 2의 사이즈는 모두 8*16이다. 또 예를 들어, 현재 블록의 사이즈가 16*32이면, 현재 블록은 유닛 블록 1 및 유닛 블록 2를 포함하고, 유닛 블록 1 및 유닛 블록 2의 사이즈는 모두 16*16이다. 물론, 이는 단지 몇 개의 예시일 뿐, 이에 대해 제한하지 않는다. 설명의 편리를 위해, 후속적으로는 현재 블록을 유닛 블록 1 및 유닛 블록 2로 분할하고, 양자의 사이즈가 모두 16*16인 것을 예로 들어 설명한다.
각각의 유닛 블록의 경우, 상기 유닛 블록을 적어도 하나의 서브 블록으로 분할할 수 있는 바, 예를 들어, 서브 블록의 사이즈가 4*4일 때, 유닛 블록 1을 16개의 서브 블록으로 분할할 수 있으며, 유닛 블록 2를 16개의 서브 블록으로 분할할 수 있다. 또 예를 들어, 서브 블록의 사이즈가 8*8일 때, 유닛 블록 1을 4개의 서브 블록으로 분할할 수 있고, 유닛 블록 2를 4개의 서브 블록으로 분할할 수 있다. 또 예를 들어, 서브 블록의 사이즈가 16*16일 때, 유닛 블록 1을 1개의 서브 블록으로 분할할 수 있고, 유닛 블록 2를 1개의 서브 블록으로 분할할 수 있다. 물론, 이는 단지 몇 개의 예시일 뿐, 이에 대해 제한하지 않는다. 설명의 편리를 위해, 후속적으로는 유닛 블록 1을 16개의 서브 블록으로 분할하고, 유닛 블록 2를 16개의 서브 블록으로 분할하는 것을 예로 들어 설명한다.
각각의 유닛 블록(후속적으로는 유닛 블록 1을 예로 듬)의 경우, 유닛 블록 1의 제1 단방향 움직임 정보에 따라 제1 참조 프레임에서 제1 참조 블록을 결정할 수 있고, 유닛 블록 1의 사이즈는 16*16이며, 제1 참조 블록의 사이즈는 16*16이다. 다음, 제1 참조 블록을 확장하여, 제2 참조 블록을 획득하고, 예를 들어, 제1 참조 블록의 상측 가장자리 및 하측 가장자리를 각각 N행의 정수 픽셀 포인트로 채우고, 제1 참조 블록의 좌측 가장자리 및 우측 가장자리를 각각 N열의 정수 픽셀 포인트로 채워, 제2 참조 블록을 획득한다. N가 1이라고 가정하면, 제2 참조 블록의 사이즈는 18*18이고, N가 2라고 가정하면, 제2 참조 블록의 사이즈는 20*20이며, 이와 같은 방법으로 유추할 수 있으며, 후속적으로는 제2 참조 블록의 사이즈가 18*18인 것을 예로 들어 설명한다. 유닛 블록 1의 제2 단방향 움직임 정보에 따라 제2 참조 프레임에서 제3 참조 블록을 결정할 수 있고, 제3 참조 블록의 사이즈는 16*16이다. 다음, 제3 참조 블록을 확장하여, 제4 참조 블록을 획득하고, 예를 들어, 제3 참조 블록의 상측 가장자리 및 하측 가장자리를 각각 N행의 정수 픽셀 포인트로 채우고, 제3 참조 블록의 좌측 가장자리 및 우측 가장자리를 각각 N열의 정수 픽셀 포인트로 채워, 제4 참조 블록을 획득한다. N가 1이라고 가정하면, 제4 참조 블록의 사이즈는 18*18이고, N가 2라고 가정하면, 제4 참조 블록의 사이즈는 20*20이며, 이와 같은 방법으로 유추할 수 있으며, 후속적으로는 제4 참조 블록의 사이즈가 18*18인 것을 예로 들어 설명한다.
예시적으로, 만약 현재 블록이 양방향 블록(즉 현재 블록은 양방향 예측을 사용하는 블록임)이면, 현재 블록에 대응하는 양방향 움직임 정보를 획득할 수 있고, 이 획득 방식에 대해 제한하지 않는다. 이 양방향 움직임 정보는 두 개의 상이한 방향의 움직임 정보를 포함하고, 두 개의 상이한 방향의 움직임 정보를 제1 단방향 움직임 정보(예컨대, 제1 움직임 벡터 및 제1 참조 프레임 인덱스) 및 제2 단방향 움직임 정보(예컨대, 제2 움직임 벡터 및 제2 참조 프레임 인덱스)라고 칭한다. 제1 단방향 움직임 정보에 기반하여 제1 참조 프레임(예컨대, 참조 프레임 0)을 결정할 수 있고, 제1 참조 프레임은 현재 블록이 위치한 현재 프레임의 앞에 위치하며; 제2 단방향 움직임 정보에 기반하여 제2 참조 프레임(예컨대, 참조 프레임 1)을 결정할 수 있고, 제2 참조 프레임은 현재 블록이 위치한 현재 프레임의 뒤에 위치한다.
예시적으로, 현재 블록의 각각의 유닛 블록에 대해, 상기 유닛 블록의 제1 단방향 움직임 정보와 현재 블록의 제1 단방향 움직임 정보는 동일하고, 상기 유닛 블록의 제2 단방향 움직임 정보와 현재 블록의 제2 단방향 움직임 정보는 동일하다.
유닛 블록 1의 각각의 서브 블록(후속적으로는 서브 블록 11을 예로 들어 설명함)의 경우, 사이즈가 18*18인 제2 참조 블록에서 서브 블록 11에 대응하는 제1 목표 참조 블록을 선택하고, 서브 블록 11의 사이즈는 4*4일 수 있으며, 제1 목표 참조 블록의 사이즈는 6*6일 수 있고, 제1 목표 참조 블록의 픽셀값에 따라 서브 블록 11의 제1 원시 예측값을 결정한다. 사이즈가 18*18인 제4 참조 블록에서 서브 블록 11에 대응하는 제2 목표 참조 블록을 선택하고, 제2 목표 참조 블록의 사이즈는 6*6일 수 있으며, 제2 목표 참조 블록의 픽셀값에 따라 서브 블록 11의 제2 원시 예측값을 결정한다.
단계 303에서, 디코딩단은 제1 원시 예측값 및 제2 원시 예측값에 따라 서브 블록의 수평 방향 속률을 결정한다.
예를 들어, 디코딩단은 제1 원시 예측값 및 제2 원시 예측값에 따라 계수 S1 및 계수 S3을 결정하고, 계수 S1, 계수 S3 및 속률 임계값에 따라 상기 서브 블록의 수평 방향 속률을 결정한다.
단계 304에서, 디코딩단은 제1 원시 예측값 및 제2 원시 예측값에 따라 서브 블록의 수직 방향 속률을 결정한다.
예를 들어, 디코딩단은 제1 원시 예측값 및 제2 원시 예측값에 따라 계수 S2, 계수 S5 및 계수 S6을 결정하고, 상기 계수 S2, 상기 계수 S5, 상기 계수 S6, 속률 임계값 및 상기 서브 블록의 수평 방향 속률에 따라, 상기 서브 블록의 수직 방향 속률을 결정한다.
단계 305에서, 디코딩단은 수평 방향 속률 및 수직 방향 속률에 따라 상기 서브 블록의 예측 보상값을 획득한다.
단계 306에서, 디코딩단은 제1 원시 예측값, 제2 원시 예측값 및 예측 보상값에 따라 상기 서브 블록의 목표 예측값을 획득한다.
예시적으로, 단계 305 및 단계 306에 대해, 상기 서브 블록의 각각의 픽셀 위치의 경우, 제1 참조 프레임에서 상기 픽셀 위치에 대응하는 제1 수평 방향 기울기 및 제1 수직 방향 기울기를 결정하고, 제2 참조 프레임에서 상기 픽셀 위치에 대응하는 제2 수평 방향 기울기 및 제2 수직 방향 기울기를 결정할 수 있다.
다음, 상기 픽셀 위치에 대응하는 제1 수평 방향 기울기, 제2 수평 방향 기울기, 제1 수직 방향 기울기, 제2 수직 방향 기울기, 수평 방향 속률(즉 서브 블록의 수평 방향 속률, 서브 블록 내의 각각의 픽셀 위치는 동일한 수평 방향 속률에 대응됨), 수직 방향 속률(즉 서브 블록의 수직 방향 속률, 서브 블록 내의 각각의 픽셀 위치는 동일한 수직 방향 속률에 대응됨)에 따라, 상기 픽셀 위치의 예측 보상값을 결정한다. 다음, 상기 픽셀 위치에 대응하는 제1 원시 예측값, 제2 원시 예측값 및 예측 보상값에 따라, 상기 픽셀 위치의 목표 예측값을 획득한다.
예시적으로, 각각의 서브 블록의 경우, 상기 서브 블록의 각각의 픽셀 위치의 목표 예측값이 획득된 후, 이러한 픽셀 위치의 목표 예측값으로 상기 서브 블록의 목표 예측값을 구성할 수 있다.
단계 307에서, 디코딩단은 각각의 서브 블록의 목표 예측값에 따라 현재 블록의 예측값을 결정한다.
실시예 3: 상기 방법과 동일한 구상에 기반하여, 도 4를 참조하면, 이는 본 발명의 실시예에서 제공되는 다른 인코딩 및 디코딩 방법의 흐름 모식도이고, 상기 방법은 인코딩단에 응용될 수 있으며, 상기 방법은 하기와 같은 단계를 포함할 수 있다:
단계 401에서, 인코딩단은 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정한다. 만약 시작함이 결정되면, 단계 402를 수행하고, 그렇지 않으면, 본 발명에서 제공한 양방향 예측값 보상 모드를 사용할 필요가 없으며, 이 경우의 처리에 대해 제한하지 않는다.
예시적으로, 만약 인코딩단이 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하면, 움직임 정보에 기반하여 획득된 예측값이 충분히 정확하지 않음을 설명하므로, 현재 블록에 대해 양방향 예측값 보상 모드(즉 본 발명의 기술적 해결수단)를 시작하고, 단계 402를 수행한다. 만약 인코딩단이 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지 않음을 결정하면, 움직임 정보에 기반하여 획득된 예측값이 이미 충분히 정확함을 설명하므로, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지 않는다.
단계 402에서, 만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 현재 블록에 포함된 적어도 하나의 서브 블록 중의 각각의 서브 블록에 대해: 인코딩단이 상기 서브 블록의 제1 원시 예측값 및 제2 원시 예측값을 결정한다.
단계 403에서, 인코딩단은 제1 원시 예측값 및 제2 원시 예측값에 따라 서브 블록의 수평 방향 속률을 결정한다.
단계 404에서, 인코딩단은 제1 원시 예측값 및 제2 원시 예측값에 따라 서브 블록의 수직 방향 속률을 결정한다.
단계 405에서, 인코딩단은 수평 방향 속률 및 수직 방향 속률에 따라 상기 서브 블록의 예측 보상값을 획득한다.
단계 406에서, 인코딩단은 제1 원시 예측값, 제2 원시 예측값 및 예측 보상값에 따라 상기 서브 블록의 목표 예측값을 획득한다.
단계 407에서, 인코딩단은 각각의 서브 블록의 목표 예측값에 따라 현재 블록의 예측값을 결정한다.
예시적으로, 단계 401 내지 단계 407은 단계 301 내지 단계 307을 참조할 수 있고, 여기에서 더 이상 설명하지 않는다.
실시예 4: 실시예 1 내지 실시예 3은 모두 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정하는 것에 관한 것이며, 이하, 실시예 4를 결합하여, 양방향 예측값 보상 모드의 시작 과정을 설명한다. 일 가능한 실시형태에서, 하기와 같은 시작 조건이 주어질 수 있으며, 물론, 이러한 시작 조건은 단지 하나의 예시일 뿐, 실제 응용에서 하기와 같은 시작 조건들은 임의로 조합될 수 있으며, 이에 대해 제한하지 않는다.
예시적으로, 하기와 같은 시작 조건 중 모든 시작 조건이 모두 만족될 때, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정할 수 있다. 하기와 같은 시작 조건 중 어느 하나 또는 복수의 시작 조건이 만족되지 않을 때, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지 않음을 결정할 수 있다.
1. 제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것이다.
예시적으로, 상기 제어 정보는 시퀀스 레벨 제어 정보 및/또는 프레임 레벨 제어 정보를 포함할 수 있으나 이에 제한되지 않는다.
일 가능한 실시형태에서, 시퀀스 레벨(예컨대, 멀티 프레임의 이미지) 제어 정보는 제어 플래그 비트(예컨대, sps_cur_tool_enabled_flag)를 포함할 수 있으나 이에 제한되지 않고, 프레임 레벨(예컨대, 한 프레임의 이미지) 제어 정보는 제어 플래그 비트(예컨대, pic_cur_tool_disabled_flag)를 포함할 수 있으나 이에 제한되지 않는다. 여기서, sps_cur_tool_enabled_flag가 제1 값이고, pic_cur_tool_disabled_flag가 제2 값이면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낸다.
sps_cur_tool_enabled_flag는 시퀀스 중의 모든 이미지가 양방향 예측값 보상 모드를 사용하도록 허용하는지 여부를 나타낸다. pic_cur_tool_disabled_flag는 현재 이미지 내의 각 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않는지 여부를 나타낸다.
예를 들어, sps_cur_tool_enabled_flag가 제1 값일 때, 시퀀스 중의 모든 이미지가 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낼 수 있다. pic_cur_tool_disabled_flag가 제2 값일 때, 현재 이미지 내의 각 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낼 수 있다. 또 예를 들어, sps_cur_tool_enabled_flag가 제2 값 및/또는 pic_cur_tool_disabled_flag가 제1 값일 때, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타낼 수 있고, 즉 제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않는 것이다.
다른 가능한 실시형태에서, 시퀀스 레벨(예컨대, 멀티 프레임의 이미지) 제어 정보는 제어 플래그 비트(예컨대, sps_cur_tool_disabled_flag)를 포함할 수 있으나 이에 제한되지 않고, 프레임 레벨(예컨대, 한 프레임의 이미지) 제어 정보는 제어 플래그 비트(예컨대, pic_cur_tool_disabled_flag)를 포함할 수 있으나 이에 제한되지 않는다. 여기서, sps_cur_tool_disabled_flag가 제2 값이고, pic_cur_tool_disabled_flag가 제2 값이면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낸다.
sps_cur_tool_disabled_flag는 시퀀스 중의 모든 이미지가 양방향 예측값 보상 모드를 사용하도록 허용하지 않는지 여부를 나타낸다. pic_cur_tool_disabled_flag는 현재 이미지 내의 각 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않는지 여부를 나타낸다.
예를 들어, sps_cur_tool_disabled_flag가 제2 값일 때, 시퀀스 중의 모든 이미지가 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낼 수 있다. pic_cur_tool_disabled_flag가 제2 값일 때, 현재 이미지 내의 각 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낼 수 있다. 또 예를 들어, sps_cur_tool_disabled_flag가 제1 값 및/또는 pic_cur_tool_disabled_flag가 제1 값일 때, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타낼 수 있고, 즉 제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않는 것이다.
다른 가능한 실시형태에서, 시퀀스 레벨(예컨대, 복수의 프레임의 이미지) 제어 정보는 제어 플래그 비트(예컨대, sps_cur_tool_enabled_flag)를 포함할 수 있으나 이에 제한되지 않고, 프레임 레벨(예컨대, 한 프레임의 이미지) 제어 정보는 제어 플래그 비트(예컨대, pic_cur_tool_enabled_flag)를 포함할 수 있으나 이에 제한되지 않는다. 여기서, sps_cur_tool_enabled_flag가 제1 값이고, pic_cur_tool_enabled_flag가 제1 값이면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낸다.
sps_cur_tool_enabled_flag는 시퀀스 중의 모든 이미지가 양방향 예측값 보상 모드를 사용하도록 허용하는지 여부를 나타낸다. pic_cur_tool_enabled_flag는 현재 이미지 내의 각 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는지 여부를 나타낸다.
예를 들어, sps_cur_tool_enabled_flag가 제1 값일 때, 시퀀스 중의 모든 이미지가 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낼 수 있다. pic_cur_tool_enabled_flag가 제1 값일 때, 현재 이미지 내의 각 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낼 수 있다. 또 예를 들어, sps_cur_tool_enabled_flag가 제2 값 및/또는 pic_cur_tool_enabled_flag가 제2 값일 때, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타낼 수 있고, 즉 제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않는 것이다.
다른 가능한 실시형태에서, 시퀀스 레벨(예컨대, 멀티 프레임의 이미지) 제어 정보는 제어 플래그 비트(예컨대, sps_cur_tool_disabled_flag)를 포함할 수 있으나 이에 제한되지 않고, 프레임 레벨(예컨대, 한 프레임의 이미지) 제어 정보는 제어 플래그 비트(예컨대, pic_cur_tool_enabled_flag)를 포함할 수 있으나 이에 제한되지 않는다. 여기서, sps_cur_tool_disabled_flag가 제2 값이고, pic_cur_tool_enabled_flag가 제1 값이면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낸다.
sps_cur_tool_disabled_flag는 시퀀스 중의 모든 이미지가 양방향 예측값 보상 모드를 사용하도록 허용하지 않는지 여부를 나타낸다. pic_cur_tool_enabled_flag는 현재 이미지 내의 각 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는지 여부를 나타낸다.
예를 들어, sps_cur_tool_disabled_flag가 제2 값일 때, 시퀀스 중의 모든 이미지가 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낼 수 있다. pic_cur_tool_enabled_flag가 제1 값일 때, 현재 이미지 내의 각 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낼 수 있다. 또 예를 들어, sps_cur_tool_disabled_flag가 제1 값 및/또는 pic_cur_tool_enabled_flag가 제2 값일 때, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타낼 수 있고, 즉 제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않는 것이다.
상기 실시예에서, 제1 값은 1일 수 있고, 제2 값은 0일 수 있으며, 또는, 제1 값은 0일 수 있고, 제2 값은 1일 수 있으며, 물론, 이는 단지 예시일 뿐, 이에 대해 제한하지 않는다.
예시적으로, 본 명세서의 프레임은 이미지에 해당하고, 예컨대, 현재 프레임은 현재 이미지를 나타내며, 참조 프레임은 참조 이미지를 나타낸다.
2. 현재 블록은 병진 움직임 모델을 사용한다.
예시적으로, 현재 블록은 병진 움직임 모델을 사용하고, 즉 현재 블록의 움직임 모델 인덱스 MotionModelIdc는 0이며, 상기 움직임 모델 인덱스는 병진 움직임 모델(즉 2-파라미터의 움직임 모델)의 움직임 모델 인덱스를 의미한다.
예시적으로, 현재 블록이 병진 움직임 모델을 사용하는 것은, 현재 블록이 비 병진 움직임 모델을 사용하지 않는 것을 의미하고, 일 가능한 실시형태에서, 비 병진 움직임 모델은 4-파라미터 또는 6-파라미터의 affine 움직임 모델을 포함할 수 있으나, 이에 제한되지 않는다.
예시적으로, 만약 현재 블록이 병진 움직임 모델을 사용하지 않으면, 시작 조건 2가 만족되지 않음을 설명한다. 또는, 만약 현재 블록의 움직임 모델 인덱스 MotionModelIdc가 0이 아니면, 시작 조건 2가 만족되지 않음을 설명한다. 또는, 만약 현재 블록이 비 병진 움직임 모델(예컨대, 4-파라미터 또는 6-파라미터의 affine 움직임 모델)을 사용하면, 시작 조건 2가 만족되지 않음을 설명한다.
3. 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아니다.
예시적으로, 만약 현재 블록의 예측 모드가 서브 블록 모드(예컨대, 현재 블록의 merge_subblock_flag가 0임)를 사용하지 않고, 현재 블록의 예측 모드가 SMVD 모드(예컨대, 현재 블록의 sym_mvd_flag가 0임)를 사용하지 않으며, 현재 블록의 예측 모드가 CIIP 모드(예컨대, 현재 블록의 ciip_flag가 0임)를 사용하지 않으면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낸다.
예를 들어, 만약 현재 블록의 예측 모드(예컨대, 인터 프레임 예측 모드)가 머지 모드 또는 스킵 모드이고, 현재 블록의 예측 모드가 일반 머지 모드이면, 현재 블록의 예측 모드가 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아님을 설명한다. 예를 들어, 만약 현재 블록의 예측 모드가 머지 모드 또는 스킵 모드이고, 현재 블록의 예측 모드가 MMVD 모드이면, 현재 블록의 예측 모드가 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아님을 설명한다. 예를 들어, 만약 현재 블록의 예측 모드가 머지 모드 또는 스킵 모드이고, 현재 블록의 예측 모드가 TPM 모드이면, 현재 블록의 예측 모드가 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아님을 설명한다. 예를 들어, 만약 현재 블록의 예측 모드가 머지 모드 또는 스킵 모드이고, 현재 블록의 예측 모드가 GEO 모드이면, 현재 블록의 예측 모드가 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아님을 설명한다. 물론, 이는 단지 몇 개의 예시일 뿐, 이에 대해 제한하지 않는다.
예시적으로, 만약 현재 블록의 예측 모드가 서브 블록 모드이면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 3이 만족되지 않는다. 또는, 만약 현재 블록의 예측 모드가 SMVD 모드이면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 3이 만족되지 않는다. 또는, 만약 현재 블록의 예측 모드가 CIIP 모드이면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 3이 만족되지 않는다.
4. 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록(즉 예측 블록)의 가중을 통해 획득되고, 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일하다.
예시적으로, 현재 블록의 예측값이 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득된다는 것은, 현재 블록이 양방향 예측을 사용하고, 즉 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득된다는 것을 의미한다.
예시적으로, 현재 블록은 두 개의 리스트의 움직임 정보에 대응될 수 있고, 이 두 개의 움직임 정보는 제1 움직임 정보 및 제2 움직임 정보로 표기되며, 제1 움직임 정보는 제1 참조 프레임 및 제1 원시 움직임 벡터를 포함하고, 제2 움직임 정보는 제2 참조 프레임 및 제2 원시 움직임 벡터를 포함한다. 두 개의 참조 프레임의 디스플레이 순서가 각각 현재 프레임의 앞과 뒤에 위치한다는 것은, 제1 참조 프레임이 현재 블록이 위치한 현재 프레임의 앞에 위치하고, 제2 참조 프레임이 현재 프레임의 뒤에 위치한다는 것을 의미한다.
일 가능한 실시형태에서, 만약 현재 블록에 두 개의 리스트(예컨대, list0 및 list1)의 움직임 정보(예컨대, 두 개의 참조 프레임 및 두 개의 움직임 벡터)가 존재하고, 두 개의 참조 프레임의 디스플레이 순서가 각각 현재 프레임의 앞과 뒤에 위치하며, 두 개의 참조 프레임에서 현재 프레임까지의 거리가 동일하면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낸다.
두 개의 참조 프레임의 디스플레이 순서가 각각 현재 프레임의 앞과 뒤에 위치하고, 두 개의 참조 프레임에서 현재 프레임까지의 거리가 동일하면, 현재 프레임의 디스플레이 순서 번호 POC_Cur, list0의 참조 프레임의 디스플레이 순서 번호 POC_0, list1의 참조 프레임의 디스플레이 순서 번호 POC_1의 상대적 관계를 통해 표시될 수 있으며, 즉, (POC_1-POC_Cur)은 (POC_Cur-POC_0)와 완전히 같다.
예시적으로, 현재 블록이 양방향 예측을 사용하고, 현재 블록에 대응하는 두 개의 참조 프레임은 상이한 방향에서 비롯되는 바, 다시 말해서, 현재 블록에 대응하는 하나의 참조 프레임은 현재 프레임의 앞에 위치하고, 현재 블록에 대응하는 다른 참조 프레임은 현재 프레임의 뒤에 위치한다.
예시적으로, 만약 현재 블록에 하나의 참조 프레임만 존재하면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 4가 만족되지 않는다. 또는, 만약 현재 블록에 두 개의 참조 프레임이 존재하지만, 두 개의 참조 프레임의 디스플레이 순서가 모두 현재 프레임의 앞에 위치하면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 4가 만족되지 않는다. 또는, 만약 현재 블록에 두 개의 참조 프레임이 존재하지만, 두 개의 참조 프레임의 디스플레이 순서가 모두 현재 프레임의 뒤에 위치하면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 4가 만족되지 않는다. 또는, 만약 현재 블록에 두 개의 참조 프레임이 존재하고, 두 개의 참조 프레임의 디스플레이 순서가 각각 현재 프레임의 앞과 뒤에 위치하지만, 두 개의 참조 프레임과 현재 프레임 사이의 거리가 상이하면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 4가 만족되지 않는다.
5. 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일하다.
일 가능한 실시형태에서, 만약 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일하면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낸다. 예시적으로, 만약 두 개의 참조 프레임의 프레임 레벨 가중된 가중치가 동일하면, 예컨대, 참조 프레임 refIdxL0의 휘도 가중된 가중치(luma_weight_l0_flag[ refIdxL0])가 참조 프레임 refIdxL1의 휘도 가중된 가중치(luma_weight_l1_flag[ refIdxL1])와 같을 수 있으면, 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일함을 나타낸다. 또는, 만약 두 개의 참조 프레임의 블록 레벨 가중된 가중치가 동일하면, 예컨대, 현재 블록의 블록 레벨 가중치의 인덱스 BcwIdx[xCb][yCb]가 0이면, 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일함을 나타낸다. 또는, 만약 두 개의 참조 프레임의 프레임 레벨 가중된 가중치가 동일하고, 두 개의 참조 프레임의 블록 레벨 가중된 가중치가 동일하면, 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일함을 나타낸다.
예시적으로, 만약 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 상이하면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 5가 만족되지 않는다. 예를 들어, 만약 두 개의 참조 프레임의 프레임 레벨 가중된 가중치가 상이하면, 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 상이함을 나타낸다. 또는, 만약 두 개의 참조 프레임의 블록 레벨 가중된 가중치가 상이하면, 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 상이함을 나타낸다. 또는, 만약 두 개의 참조 프레임의 프레임 레벨 가중된 가중치가 상이하고, 두 개의 참조 프레임의 블록 레벨 가중된 가중치가 상이하면, 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 상이함을 나타낸다.
예시적으로, 현재 블록의 두 개의 참조 프레임의 가중된 가중치는 양방향 가중 보상 시 사용되는 가중치를 의미한다. 예를 들어, 현재 블록의 각각의 서브 블록에 대해, 상기 서브 블록의 두 개의 예측값(획득 과정은 후속되는 실시예를 참조)이 획득된 후, 이 두 개의 예측값을 가중하여, 상기 서브 블록의 최종 예측값을 획득해야 한다. 이 두 개의 예측값을 가중할 경우, 이 두 개의 예측값에 대응하는 가중치가 현재 블록의 두 개의 참조 프레임의 가중된 가중치이고, 즉 이 두 개의 예측값에 대응하는 가중치는 동일하다.
6. 현재 블록의 두 개의 참조 프레임은 모두 단기 참조 프레임이다. 또는 현재 블록의 두 개의 참조 프레임은 모두 장기 참조 프레임이 아니다.
일 가능한 실시형태에서, 만약 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임이면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낸다. 단기 참조 프레임은 현재 프레임과 가까운 참조 프레임을 나타내고, 일반적으로는 실제 이미지 프레임이다.
예시적으로, 만약 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임이 아니면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 6이 만족되지 않는다. 또는, 만약 현재 블록의 하나의 참조 프레임이 단기 참조 프레임이 아니면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 6이 만족되지 않는다. 또는, 만약 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임이 아니면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 6이 만족되지 않는다.
다른 가능한 실시형태에서, 만약 현재 블록의 두 개의 참조 프레임이 모두 장기 참조 프레임이 아니면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낸다. 장기 참조 프레임의 표시 번호 POC는 실질적인 의미가 없으며(이는 조건 4의 실효를 초래함), 장기 참조 프레임은 현재 프레임과 멀리 떨어진 참조 프레임을 나타내거나, 또는 몇 개의 프레임의 실제 이미지를 합성한 이미지 프레임을 나타낸다.
예시적으로, 만약 현재 블록의 하나의 참조 프레임이 장기 참조 프레임이면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 6이 만족되지 않는다. 또는, 만약 현재 블록의 두 개의 참조 프레임이 모두 장기 참조 프레임이면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 6이 만족되지 않는다.
7. 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내이다.
일 가능한 실시형태에서, 만약 현재 블록의 너비 cbWidth가 제1 임계값(예컨대, 8)보다 크거나 같고, 현재 블록의 높이 cbHeight가 제2 임계값(예컨대, 8)보다 크거나 같으며, 현재 블록의 면적(cbHeight*cbWidth)이 제3 임계값(예컨대, 128)보다 크거나 같으면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낸다.
예시적으로, 만약 현재 블록의 너비 cbWidth가 제1 임계값보다 작으면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 7이 만족되지 않는다. 또는, 만약 현재 블록의 높이 cbHeight가 제2 임계값보다 작으면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 7이 만족되지 않는다. 또는, 만약 현재 블록의 면적이 제3 임계값보다 작으면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 7이 만족되지 않는다.
다른 가능한 실시형태에서, 만약 현재 블록의 너비 cbWidth가 제1 임계값(예컨대, 8)보다 크거나 같고, 현재 블록의 높이 cbHeight가 제2 임계값(예컨대, 8)보다 크거나 같으며, 현재 블록의 면적(cbHeight*cbWidth)이 제4 임계값(예컨대, 64)보다 크면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낸다.
예시적으로, 만약 현재 블록의 너비 cbWidth가 제1 임계값보다 작으면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 7이 만족되지 않는다. 또는, 만약 현재 블록의 높이 cbHeight가 제2 임계값보다 작으면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 7이 만족되지 않는다. 또는, 만약 현재 블록의 면적이 제4 임계값보다 작거나 같으면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 7이 만족되지 않는다.
8. 현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 동일하다(길이 및 너비가 모두 동일함).
일 가능한 실시형태에서, 만약 list0의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 동일하면, 예를 들어, list0의 참조 프레임의 너비와 현재 프레임의 너비가 동일하고, list0의 참조 프레임의 높이와 현재 프레임의 높이가 동일하며, 또한, list1의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 동일하고, 예를 들어, list1의 참조 프레임의 너비와 현재 프레임의 너비가 동일하며, list1의 참조 프레임의 높이와 현재 프레임의 높이가 동일하면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낸다.
예시적으로, 만약 현재 블록의 두 개의 참조 프레임 중 적어도 하나의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 상이하면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 8이 만족되지 않는다. 예를 들어, 만약 list0의 참조 프레임의 너비와 현재 프레임의 너비가 상이하면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타낸다. 또는, 만약 list0의 참조 프레임의 높이와 현재 프레임의 높이가 상이하면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타낸다. 또는, 만약 list1의 참조 프레임의 너비와 현재 프레임의 너비가 상이하면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타낸다. 또는, 만약 list1의 참조 프레임의 높이와 현재 프레임의 높이가 상이하면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타낸다.
9. 현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 바, 즉 예측값 보상이 수행되어야 하는 것은 휘도 컴포넌트이다.
예시적으로, 현재 블록의 각각의 픽셀 위치의 픽셀값은 휘도 컴포넌트 및 두 개의 색도(chroma) 컴포넌트를 포함할 수 있고, 현재 블록의 각각의 픽셀 위치의 픽셀값에 대해, 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행할 경우, 만약 상기 픽셀값의 휘도 컴포넌트에 대해 움직임 보상을 수행하면, 즉 현재 컴포넌트가 휘도 컴포넌트이면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용함을 나타낸다.
예시적으로, 현재 블록의 각각의 픽셀 위치의 픽셀값에 대해 움직임 보상을 수행할 경우, 만약 상기 픽셀값의 색도 컴포넌트에 대해 움직임 보상을 수행하면, 즉 현재 컴포넌트가 색도 컴포넌트이면, 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하지 않음을 나타내고, 즉 시작 조건 9가 만족되지 않는다.
실시예 5: 도 5를 참조하면, 이는 본 발명의 실시예에서 제공되는 인코딩 및 디코딩 방법의 흐름 모식도이고, 상기 인코딩 및 디코딩 방법은 디코딩단 또는 인코딩단에 응용될 수 있으며, 상기 인코딩 및 디코딩 방법은 하기와 같은 단계를 포함할 수 있다:
단계 501에서, 만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정한다:
제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것;
현재 블록이 병진 움직임 모델을 사용하는 것;
현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것;
현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것;
현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것;
현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것;
현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것;
현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것.
일 가능한 실시형태에서, 제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것;
현재 블록이 병진 움직임 모델을 사용하는 것;
현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것;
현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것;
현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것;
현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것;
현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것;
현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 중 어느 하나의 조건이 만족되지 않으면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지 않음을 결정한다.
상기 실시예에서는 8개의 조건이 제공되었고, 상기 8개의 조건이 동시에 만족되는지 여부에 기반하여, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정한다.
실제 응용에서는, 또한 8개의 조건에서 일부 조건을 선택하고, 선택된 일부 조건에 기반하여 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정할 수도 있다. 예를 들어, 8개의 조건에서 5개의 조건을 선택하고, 이 선택 방식에 대해 제한하지 않으며, 임의의 5개의 조건일 수 있고, 만약 선택된 5개의 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하고; 만약 선택된 5개의 조건 중 어느 하나의 조건이 만족되지 않으면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지 않음을 결정한다. 물론, 8개의 조건에서 다른 수량의 조건을 선택할 수도 있으며, 이에 대해 제한하지 않는다.
단계 502에서, 만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하고, 구체적인 구현 과정은 단계 202를 참조할 수 있으며, 여기에서 더 이상 설명하지 않는다.
실시예 5의 구현 과정은 실시예 1 내지 실시예 4를 참조할 수 있고, 구별되는 점은, 양방향 예측값 보상 모드의 시작 조건에 “현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것”이 포함되지 않는 것이며, 여기에서 더 이상 반복 설명하지 않는다.
예시적으로, 만약 양방향 예측값 보상 모드를 사용하여 현재 블록의 색도 컴포넌트에 대해 예측값 보상을 수행한 효과가 양호하면, 현재 블록에 대해 색도 컴포넌트 예측값 보상을 수행할 수도 있는 바, 즉 “현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것”의 시작 조건을 사용할 필요가 없으며, 현재 블록에 대해 휘도 컴포넌트 및 색도 컴포넌트의 예측값 보상을 수행하도록 허용한다.
실시예 6: 이하, 구체적인 응용 시나리오를 결합하여, 인코딩 및 디코딩을 설명하며, 상기 인코딩 및 디코딩 방법은 하기와 같은 단계를 포함할 수 있다.
단계 a1에서, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정하고, 만약 시작함이 결정되면, 단계 a2를 수행한다.
예시적으로, 실시예 1의 방식을 사용하여 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정하거나, 또는, 실시예 5의 방식을 사용하여 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정하거나, 또는, 실시예 4의 방식을 사용하여 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정할 수 있으며, 이 결정 방식에 대해 더 이상 설명하지 않는다.
단계 a2에서, 현재 블록을 적어도 하나의 유닛 블록으로 분할하고, 유닛 블록의 제1 단방향 움직임 정보에 따라 제1 참조 프레임에서 제1 참조 블록을 결정하며, 제1 참조 블록을 확장하여, 제2 참조 블록을 획득한다. 유닛 블록의 제2 단방향 움직임 정보에 따라 제2 참조 프레임에서 제3 참조 블록을 결정하고, 제3 참조 블록을 확장하여, 제4 참조 블록을 획득한다.
예시적으로, 현재 블록은 하나의 유닛 블록(즉 상기 유닛 블록이 현재 블록임)을 포함할 수 있거나, 또는, 현재 블록은 적어도 두 개의 유닛 블록을 포함할 수 있다. 예를 들어, 유닛 블록의 너비가 dx이고, 높이가 dy이며, 현재 블록의 너비가 W이고, 높이가 H이면, dx=W>a?a:W, dy=H>a?a:H이다. 예를 들면, 만약 W가 a보다 크면, dx는 a이고, 만약 W가 a보다 크지 않으면, dx는 W이다. 만약 H가 a보다 크면, dy는 a이고, 만약 H가 a보다 크지 않으면, dy는 H이다. a의 값은 경험에 따라 구성될 수 있으며, 예컨대 4, 8, 16, 32 등이며, 설명의 편리를 위해, 후속적으로는 a=16인 것을 예로 들어 설명한다. 예를 들어, 현재 블록의 사이즈가 8*16이면, 현재 블록은 하나의 유닛 블록만 포함하고, 상기 유닛 블록의 사이즈는 8*16이다. 또 예를 들어, 현재 블록의 사이즈가 8*32이면, 현재 블록은 유닛 블록 1 및 유닛 블록 2를 포함하고, 유닛 블록 1 및 유닛 블록 2의 사이즈는 모드 8*16이다. 또 예를 들어, 현재 블록의 사이즈가 16*32이면, 현재 블록은 유닛 블록 1 및 유닛 블록 2를 포함하고, 유닛 블록 1 및 유닛 블록 2의 사이즈는 모두 16*16이다. 물론, 이는 단지 몇 개의 예시일 뿐, 이에 대해 제한하지 않는다. 설명의 편리를 위해, 후속적으로는 현재 블록을 유닛 블록 1 및 유닛 블록 2로 분할하고, 양자의 사이즈가 모두 16*16인 것을 예로 들어 설명한다.
예시적으로, 만약 현재 블록이 양방향 블록(즉 현재 블록은 양방향 예측을 사용하는 블록임)이면, 현재 블록에 대응하는 양방향 움직임 정보를 획득할 수 있고, 이 획득 방식에 대해 제한하지 않는다. 이 양방향 움직임 정보는 두 개의 상이한 방향의 움직임 정보를 포함하고, 두 개의 상이한 방향의 움직임 정보를 제1 단방향 움직임 정보(예컨대, 제1 움직임 벡터 및 제1 참조 프레임 인덱스) 및 제2 단방향 움직임 정보(예컨대, 제2 움직임 벡터 및 제2 참조 프레임 인덱스)라고 칭한다. 현재 블록의 각각의 유닛 블록에 대해, 상기 유닛 블록의 제1 단방향 움직임 정보와 현재 블록의 제1 단방향 움직임 정보는 동일하고, 상기 유닛 블록의 제2 단방향 움직임 정보와 현재 블록의 제2 단방향 움직임 정보는 동일하다. 제1 단방향 움직임 정보에 기반하여 제1 참조 프레임(예컨대, 참조 프레임 0)을 결정할 수 있고, 제1 참조 프레임은 현재 블록이 위치한 현재 프레임의 앞에 위치하며; 제2 단방향 움직임 정보에 기반하여 제2 참조 프레임(예컨대, 참조 프레임 1)을 결정할 수 있고, 제2 참조 프레임은 현재 블록이 위치한 현재 프레임의 뒤에 위치한다.
각각의 유닛 블록(후속적으로는 유닛 블록 1을 예로 듬)의 경우, 유닛 블록 1의 제1 단방향 움직임 정보에 따라 제1 참조 프레임에서 제1 참조 블록을 결정하고, 유닛 블록 1의 사이즈는 dx*dy(예컨대, 16*16)이며, 제1 참조 블록의 사이즈는 16*16이다. 다음, 제1 참조 블록을 확장하여, 제2 참조 블록을 획득하고, 예를 들어, 제1 참조 블록에 대해 상, 하, 좌, 우로 각각 N의 채우기를 수행하며(N은 0, 1, 2, 3, 4 등일 수 있고, N가 0일 때, 채우기를 수행하지 않음), 예를 들면, 제1 참조 블록의 상측 가장자리 및 하측 가장자리를 각각 N행의 정수 픽셀 포인트로 채우고, 제1 참조 블록의 좌측 가장자리 및 우측 가장자리를 각각 N열의 정수 픽셀 포인트로 채워, 제2 참조 블록을 획득하며, 제2 참조 블록의 사이즈는 (16+2N)*(16+2N)이다.
일 가능한 실시형태에서, N행/N열의 정수 픽셀 포인트를 채우는 방법은, 제1 참조 프레임 내의 인접 정수 픽셀 영역에서 복제하는 것일 수 있다. 예를 들어, 제2 참조 블록 중의 N행의 정수 픽셀 포인트의 픽셀값 및 N열의 정수 픽셀 포인트의 픽셀값은, 제1 참조 프레임 내의 인접 정수 픽셀 위치의 픽셀값을 복사하여 획득된다.
예를 들어, N이 1이라고 가정하면, 제1 참조 블록의 상측 가장자리를 1행의 정수 픽셀 포인트로 채우고, 제1 참조 블록의 하측 가장자리를 1행의 정수 픽셀 포인트로 채우며, 제1 참조 블록의 좌측 가장자리를 1열의 정수 픽셀 포인트로 채우고, 제1 참조 블록의 우측 가장자리를 1열의 정수 픽셀 포인트로 채워, 제2 참조 블록을 획득하며, 제2 참조 블록의 사이즈는 18*18이다.
예시적으로, 픽셀 위치의 기울기 값의 수평 컴포넌트를 결정할 경우, 상기 픽셀 위치의 좌측 픽셀 위치의 픽셀값 및 상기 픽셀 위치의 우측 픽셀 위치의 픽셀값을 사용해야 하고, 픽셀 위치의 기울기 값의 수직 컴포넌트를 결정할 경우, 상기 픽셀 위치의 상측 픽셀 위치의 픽셀값 및 상기 픽셀 위치의 하측 픽셀 위치의 픽셀값을 사용해야 하는 것을 고려하면, 제1 참조 블록 가장자리의 픽셀 위치는 적어도 일측의 픽셀 위치가 결여된다. 예를 들어, 제1 참조 블록 상측 가장자리의 픽셀 위치의 경우, 상기 제1 참조 블록 내에 상측의 픽셀 위치가 존재하지 않고; 제1 참조 블록 좌측 가장자리의 픽셀 위치의 경우, 상기 제1 참조 블록 내에 좌측의 픽셀 위치가 존재하지 않는다. 따라서, 각 픽셀 위치의 기울기 값을 결정하기 위해, 제1 참조 블록의 상측 가장자리, 하측 가장자리, 좌측 가장자리, 우측 가장자리를 각각 N행/N열의 정수 픽셀 위치(픽셀은 정수임)로 채워야 한다.
예시적으로, 대역폭 증가를 줄이기 위해, 채워진 행/열의 정수 픽셀 위치의 픽셀값은 직접 제1 참조 프레임 내의 인접 정수 픽셀 위치의 픽셀값에서 복사하여 획득될 수 있다. 예를 들어, 제1 참조 프레임에서 제1 참조 블록과 가장 가까운 동일한 사이즈의 정수 픽셀 블록(정수 픽셀 위치로 구성된 블록)을 결정하고; 다음, 상기 정수 픽셀 블록 주변의 최근접 N행/열 정수 픽셀 위치의 픽셀값을 각각 제1 참조 블록의 상측 가장자리, 하측 가장자리, 좌측 가장자리, 우측 가장자리의 채움값으로 할 수 있다.
예시적으로, 제1 참조 블록의 상측 가장자리, 하측 가장자리, 좌측 가장자리, 우측 가장자리를 각각 N행/N열의 정수 픽셀 위치로 채우는 것은, 정수 픽셀 블록의 바로 상측, 바로 하측, 바로 좌측 및 바로 우측의 N행/N열의 정수 픽셀 위치를 각각 채우는 것을 포함할 수 있다.
예를 들어, 제1 참조 블록의 상측 가장자리, 하측 가장자리, 좌측 가장자리, 우측 가장자리를 N행/N열 정수 픽셀 위치로 채운 후, 하나의 너비 및 높이가 모두 원래보다 2N 증가된 블록이 획득되는 것을 고려하면, 상기 블록 중 각 픽셀 위치의 픽셀값에 기반하여, 원래 제1 참조 블록 중 각 픽셀 위치의 기울기 값을 계산할 경우, 상기 블록 외측의 N층 픽셀 위치 중 각 층 픽셀 위치의 코너 포인트는 사용되지 않는다. 따라서, 채우기 작업량을 줄이고 채우기 효율을 향상시키기 위해, 제1 참조 블록의 상측 가장자리, 하측 가장자리, 좌측 가장자리, 우측 가장자리를 각각 N행/N열 정수 픽셀 위치로 채울 경우, 제1 참조 프레임에서 상기 제1 참조 블록과 가장 가까운 동일 사이즈의 정수 픽셀 블록의 바로 상측, 바로 하측, 바로 좌측 및 바로 우측의 N행/N열의 정수 픽셀 위치를 각각 채울 수 있다.
N=1일 때, 제1 참조 블록의 상측 가장자리, 하측 가장자리, 좌측 가장자리, 우측 가장자리를 각각 N행/N열 정수 픽셀 위치로 채우는 것은 하기와 같은 것을 포함할 수 있다.
도 6a를 참조하면, 제1 참조 블록 중의 픽셀 위치의 예측값의 서브 픽셀의 수평 컴포넌트 및 수직 컴포넌트가 모두 절반의 픽셀보다 크거나 같은 경우, 제1 참조 블록의 상측 가장자리를 상측의 최근접 정수 픽셀 위치로 채우고, 제1 참조 블록의 하측 가장자리를 하측의 차근접 정수 픽셀 위치로 채우며, 제1 참조 블록의 좌측 가장자리를 좌측 최근접 정수 픽셀 위치로 채우고, 제1 참조 블록의 우측 가장자리를 우측 차근접 정수 픽셀 위치로 채운다.
도 6b를 참조하면, 제1 참조 블록 중의 픽셀 위치의 예측값의 서브 픽셀의 수평 컴포넌트가 절반의 픽셀보다 크거나 같고, 수직 컴포넌트가 절반의 픽셀보다 작은 경우, 제1 참조 블록의 상측 가장자리를 상측의 차근접 정수 픽셀 위치로 채우고, 제1 참조 블록의 하측 가장자리를 하측의 최근접 정수 픽셀 위치로 채우며, 제1 참조 블록의 좌측 가장자리를 좌측 최근접 정수 픽셀 위치로 채우고, 제1 참조 블록의 우측 가장자리를 우측 차근접 정수 픽셀 위치로 채운다.
도 6c를 참조하면, 제1 참조 블록 중의 픽셀 위치의 예측값의 서브 픽셀의 수평 컴포넌트가 절반의 픽셀보다 작고, 수직 컴포넌트가 절반의 픽셀보다 크거나 같은 경우, 제1 참조 블록의 상측 가장자리를 상측의 최근접 정수 픽셀 위치로 채우고, 제1 참조 블록의 하측 가장자리를 하측의 차근접 정수 픽셀 위치로 채우며, 제1 참조 블록의 좌측 가장자리를 좌측 차근접 정수 픽셀 위치로 채우고, 제1 참조 블록의 우측 가장자리를 우측 최근접 정수 픽셀 위치로 채운다.
도 6d를 참조하면, 제1 참조 블록 중의 픽셀 위치의 예측값의 서브 픽셀의 수평 컴포넌트 및 수직 컴포넌트가 모두 절반의 픽셀보다 작은 경우, 제1 참조 블록의 상측 가장자리를 상측의 차근접 정수 픽셀 위치로 채우고, 제1 참조 블록의 하측 가장자리를 하측의 최근접 정수 픽셀 위치로 채우며, 제1 참조 블록의 좌측 가장자리를 좌측 차근접 정수 픽셀 위치로 채우고, 제1 참조 블록의 우측 가장자리를 우측 최근접 정수 픽셀 위치로 채운다.
예시적으로, 도 6a 내지 도 6d에서, 삼각형은 제1 참조 블록 각 픽셀 위치의 예측값이고, 원형은 참조 프레임 내의 정수 픽셀 위치의 재구성 값이며, 음영 처리된 원형은 채우기를 위해 선택된 참조 프레임 내의 정수 픽셀 위치의 재구성 값이다.
도 6a 내지 도 6d에서는 제1 참조 블록의 사이즈가 4*4임을 예로 들고, 제1 참조 블록을 채운 후, 획득된 것은 6*6의 제2 참조 블록이다. 제1 참조 블록의 사이즈가 16*16일 때, 제1 참조 블록을 채운 후, 획득된 것은 18*18의 제2 참조 블록이고, 구체적인 채우기 방식은 도 6a 내지 도 6d에 도시된 것을 참조하며, 여기에서 더 이상 반복 설명하지 않는다.
다른 가능한 실시형태에서, N행/N열의 정수 픽셀 포인트를 채우는 방법은, 직접 제1 참조 블록 중 최근접 픽셀값을 복제하는 것일 수 있는 바, 즉 제2 참조 블록 중의 N행의 정수 픽셀 포인트의 픽셀값 및 N열의 정수 픽셀 포인트의 픽셀값은, 제1 참조 블록 중의 인접 픽셀 포인트의 픽셀값을 복사하여 획득된다.
도 6e를 참조하면, 제1 참조 블록 중의 인접 픽셀 포인트의 픽셀값을 복사하여, 제2 참조 블록을 획득할 수 있다. 예를 들면, 제1 참조 블록의 상측 가장자리, 하측 가장자리, 좌측 가장자리, 우측 가장자리를 각각 N행/N열 정수 픽셀 위치로 채울 경우, 직접 제1 참조 블록 중의 인접 픽셀 포인트의 픽셀값을 복사하여 획득한다. 도 6e에서는 제1 참조 블록 중의 픽셀 위치의 픽셀값을 제1 참조 블록의 가장자리 영역으로 복사하여 제2 참조 블록을 획득하는 것을 도시하였다.
도 6e에서는 제1 참조 블록의 사이즈가 4*4인 것을 예로 들고, 제1 참조 블록을 채운 후, 획득된 것은 6*6의 제2 참조 블록이다. 제1 참조 블록의 사이즈가 16*16일 때, 제1 참조 블록을 채운 후, 획득된 것은 18*18의 제2 참조 블록이고, 구체적인 채우기 방식은 도 6e에 도시된 것을 참조하며, 여기에서 더 이상 반복 설명하지 않는다.
상기 실시예를 참조하면, N행/N열의 정수 픽셀 포인트를 채우는 방법은, 제1 참조 프레임 중 인접 정수 픽셀 영역에서 복제하거나(도 6a 내지 도 6d), 또는, 제1 참조 블록 중 최근접 픽셀값을 복제(도 6e)하는 것을 수 있는 바, 즉 복수의 픽셀값을 보간하고, 보간하여 획득된 픽셀값을 사용하여 N행/N열의 정수 픽셀 포인트를 채우는 것이 아니라, 직접 기존의 픽셀값을 사용하여, N행/N열의 정수 픽셀 포인트를 채움으로써, 별도의 보간 과정을 피면하고, 별도의 참조 픽셀에 대한 액세스를 간접적으로 피할 수 있다(보간 방식 사용 시 별도의 참조 픽셀을 액세스해야 함).
각각의 유닛 블록(후속적으로는 유닛 블록 1을 예로 듬)의 경우, 유닛 블록 1의 제2 단방향 움직임 정보에 따라 제2 참조 프레임에서 제3 참조 블록을 결정하고, 유닛 블록 1의 사이즈는 dx*dy(예컨대, 16*16)이며, 제3 참조 블록의 사이즈는 16*16이다. 다음, 제3 참조 블록을 확장하여, 제4 참조 블록을 획득하고, 예를 들어, 제3 참조 블록에 대해 상, 하, 좌, 우에서 각각 N의 채우기를 수행하며(N은 0, 1, 2, 3, 4 등일 수 있고, N이 0일 때, 채우기를 수행하지 않음), 예를 들면, 제3 참조 블록의 상측 가장자리 및 하측 가장자리를 각각 N행의 정수 픽셀 포인트로 채우고, 제3 참조 블록의 좌측 가장자리 및 우측 가장자리를 각각 N열의 정수 픽셀 포인트로 채워, 제4 참조 블록을 획득하며, 제4 참조 블록의 사이즈는 (16+2N)*(16+2N)이다.
예시적으로, N행/N열의 정수 픽셀 포인트를 채우는 방법은, 제2 참조 프레임 중 인접 정수 픽셀 영역에 복제하거나, 또는, 직접 제3 참조 블록 중 최근접 픽셀값을 통해 복제하는 것일 수 있다. 예를 들어, 제4 참조 블록 중의 N행의 정수 픽셀 포인트의 픽셀값 및 N열의 정수 픽셀 포인트의 픽셀값은, 제2 참조 프레임 내의 인접 정수 픽셀 위치의 픽셀값을 복사하여 획득되거나, 또는, 제3 참조 블록 중의 인접 픽셀 포인트의 픽셀값을 복사하여 획득된다.
구체적인 채우기 방식은 제1 참조 블록의 채우기 방식을 참조할 수 있고, 여기에서 더 이상 반복 설명하지 않는다.
단계 a3에서, 유닛 블록에 포함된 적어도 하나의 서브 블록 중의 각각의 서브 블록에 대해: 상기 유닛 블록에 대응하는 제2 참조 블록에서 상기 서브 블록에 대응하는 제1 목표 참조 블록을 선택하고, 제1 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제1 원시 예측값을 결정하며; 상기 유닛 블록에 대응하는 제4 참조 블록에서 상기 서브 블록에 대응하는 제2 목표 참조 블록을 선택하고, 제2 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제2 원시 예측값을 결정한다.
예를 들어, 현재 블록의 각각의 유닛 블록의 경우, 상기 유닛 블록을 적어도 하나의 서브 블록으로 분할할 수 있고, 예를 들어, 서브 블록의 사이즈가 4*4이고, 유닛 블록의 사이즈가 16*16일 때, 유닛 블록을 16개의 서브 블록으로 분할할 수 있다. 또 예를 들어, 서브 블록의 사이즈가 8*8일 때, 유닛 블록을 4개의 서브 블록으로 분할할 수 있다. 또 예를 들어, 서브 블록의 사이즈가 16*16일 때, 유닛 블록을 1개의 서브 블록으로 분할할 수 있다. 물론, 이는 단지 몇 개의 예시일 뿐, 이에 대해 제한하지 않는다. 설명의 편리를 위해, 후속적으로는 유닛 블록을 16개의 서브 블록으로 분할하는 것을 예로 들어 설명한다.
각각의 dx*dy(예컨대, 16*16)의 유닛 블록(후속적으로는 유닛 블록 1을 예로 듬)의 각각의 서브 블록(후속적으로는 서브 블록 11을 예로 들어 설명함)의 경우, 유닛 블록 1에 대응하는 제2 참조 블록(사이즈는 18*18임)에서 서브 블록 11에 대응하는 제1 목표 참조 블록을 선택하고, 서브 블록 11의 사이즈는 4*4이며, 제1 목표 참조 블록의 사이즈는 6*6이고, 제1 목표 참조 블록의 픽셀값에 따라 서브 블록 11의 제1 원시 예측값을 결정할 수 있다. 유닛 블록 1에 대응하는 제4 참조 블록(사이즈는 18*18임)에서 서브 블록 11에 대응하는 제2 목표 참조 블록을 선택하고, 제2 목표 참조 블록의 사이즈는 6*6이며, 제2 목표 참조 블록의 픽셀값에 따라 서브 블록 11의 제2 원시 예측값을 결정할 수 있다.
예를 들어, 도 7을 참조하면, 각각의 dx*dy(예컨대, 16*16)의 유닛 블록의 경우, 상기 유닛 블록의 제1 단방향 움직임 정보에 따라 제1 참조 프레임(예컨대, 참조 프레임 0)에서 사이즈가 16*16인 제1 참조 블록을 결정하고, 제1 참조 블록을 확장하여, 사이즈가 18*18인 제2 참조 블록을 획득할 수 있다. 상기 유닛 블록의 제2 단방향 움직임 정보에 따라 제2 참조 프레임(예컨대, 참조 프레임 1)에서 사이즈가 16*16인 제3 참조 블록을 결정하고, 제3 참조 블록을 확장하여, 사이즈가 18*18인 제4 참조 블록을 획득할 수 있다. 다음, 상기 유닛 블록의 각각의 서브 블록(예컨대, b*b, b는 4, 8, 16 등일 수 있고, 후속적으로는 b=4임을 예로 드는 바, 즉 서브 블록의 사이즈는 4*4일 수 있음)의 경우, 후속되는 과정에서 서브 블록에 대응하는 목표 참조 블록의 기울기를 결정해야 하기 때문에, 사이즈가 6*6인 목표 참조 블록을 결정해야 한다. 예를 들어, 상기 유닛 블록에 대응하는 제2 참조 블록에서 상기 서브 블록에 대응하는 제1 목표 참조 블록을 선택하고, 제1 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제1 원시 예측값을 결정하며; 상기 유닛 블록에 대응하는 제4 참조 블록에서 상기 서브 블록에 대응하는 제2 목표 참조 블록을 선택하고, 제2 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제2 원시 예측값을 결정한다.
도 7을 참조하면, 서브 블록의 픽셀 위치는 x=xSb, xSb+1, xSb+2 또는 xSb+3이고, y=ySb, ySb+1, ySb+2 또는 ySb+3이며, 서브 블록에 대응하는 목표 참조 블록(예컨대, 제1 목표 참조 블록 및 제2 목표 참조 블록 등)의 픽셀 위치는 x=xSb, xSb+1, xSb+2, xSb+3, xSb+4 또는xSb+5이고, y=ySb, ySb+1, ySb+2, ySb+3, ySb+4 또는 ySb+5이다. 보다시피, 서브 블록의 픽셀 위치 (x, y)에 대응하는 것은 목표 참조 블록의 픽셀 위치 (x+1, y+1)이다. 예시적으로, xSb 및 ySb는 각각 서브 블록의 시작 픽셀 위치인 바, 예컨대, xSb=0, 4, 8…dx/4*4-4이며, ySb=0, 4, 8…dy/4*4-4 등이다. dx=16라고 가정하면, 서브 블록의 시작 픽셀 위치는 0, 4, 8 또는 12일 수 있다. 예시적으로, 목표 참조 블록의 수평 픽셀 위치의 범위는 [0, dx+1]일 수 있고, 수직 픽셀 위치의 범위는 [0, dy+1]일 수 있다.
예시적으로, 서브 블록의 제1 원시 예측값을
Figure pct00003
으로 표기하고, 서브 블록의 제2 원시 예측값을
Figure pct00004
으로 표기할 수 있으며, 제1 원시 예측값 및 제2 원시 예측값은 모두 6*6 크기의 원시 예측값이다.
단계 a4에서, 서브 블록의 제1 원시 예측값 및 제2 원시 예측값에 따라 상기 서브 블록의 수평 방향 속률을 결정하는 바, 즉 제1 원시 예측값 및 제2 원시 예측값에 따라 서브 블록이 제1 참조 프레임 상의 픽셀에서의 수평 방향(x 방향) 속률
Figure pct00005
을 결정한다. 예시적으로, 상기 서브 블록이 제2 참조 프레임 상의 픽셀에서의 수평 방향 속률은 상기 서브 블록이 제1 참조 프레임 상의 픽셀에서의 수평 방향 속률과 반대된다. 상기 서브 블록의 각각의 픽셀 위치의 픽셀값(예컨대, 휘도값)의 경우, 이러한 픽셀 위치의 픽셀값(예컨대, 휘도값)의 수평 방향 속률은 동일할 수 있으며, 모두 단계 a4에서 결정된 수평 방향 속률이다.
단계 a5에서, 서브 블록의 제1 원시 예측값 및 제2 원시 예측값에 따라 상기 서브 블록의 수직 방향 속률을 결정하는 바, 즉 제1 원시 예측값 및 제2 원시 예측값에 따라 서브 블록이 제1 참조 프레임 상의 픽셀에서의 수직 방향(y 방향) 속률
Figure pct00006
을 결정한다. 예시적으로, 상기 서브 블록이 제2 참조 프레임 상의 픽셀에서의 수직 방향 속률은 상기 서브 블록이 제1 참조 프레임 상의 픽셀에서의 수직 방향 속률과 반대된다. 상기 서브 블록의 각각의 픽셀 위치의 픽셀값(예컨대, 휘도값)의 경우, 이러한 픽셀 위치의 픽셀값(예컨대, 휘도값)의 수직 방향 속률은 동일할 수 있으며, 모두 단계 a5에서 결정된 수직 방향 속률이다.
단계 a4 및 단계 a5에 대해, 서브 블록의 제1 원시 예측값 및 서브 블록의 제2 원시 예측값이 획득된 후, 서브 블록의 제1 원시 예측값 및 제2 원시 예측값에 따라 수평 방향 기울기의 합, 수직 방향 기울기의 합, 두 개의 참조 블록의 휘도의 차이(즉 두 개의 목표 참조 블록의 휘도의 차이, 시간 영역 예측값 차이값이라고도 칭함)를 결정한다. 예를 들어, 수학식 (1)을 통해 수평 방향 기울기의 합을 결정하고, 수학식 (2)를 통해 수직 방향 기울기의 합을 결정하며, 수학식 (3)을 통해 두 개의 참조 블록의 휘도의 차이를 결정한다.
Figure pct00007
(1)
Figure pct00008
(2)
Figure pct00009
(3)
수평 방향 기울기의 합
Figure pct00010
, 수직 방향 기울기의 합
Figure pct00011
, 두 개의 참조 블록의 휘도의 차이
Figure pct00012
가 획득된 후, 하기 수학식을 사용하여 계수 S1, 계수 S2, 계수 S3, 계수 S5 및 계수 S6을 획득할 수 있다. 물론, 여기서는 단지 하나의 예시이며, 각 계수의 획득 방식에 대해 제한하지 않는다. 예시적으로, 수학식 (4)를 참조하면, 계수 S1은 수평 방향 기울기의 합의 절댓값의 합일 수 있는 바, 예를 들면, 먼저 수평 방향 기울기의 합
Figure pct00013
의 절댓값
Figure pct00014
을 결정한 다음, 절댓값을 합산한다. 수학식 (5)를 참조하면, 계수 S2는 “수평 방향 기울기의 합”과 “수직 방향 기울기의 합의 부호 비트”의 곱의 합일 수 있는 바, 예를 들면, 먼저 수직 방향 기울기의 합의 부호 비트
Figure pct00015
를 결정한 다음, 수평 방향 기울기의 합
Figure pct00016
과 상기 부호 비트
Figure pct00017
의 곱을 결정하고, 다음 양자의 곱을 합산한다. 수학식 (6)을 참조하면, 계수 S3은 “두 개의 참조 블록의 휘도의 차이”와 “수평 방향 기울기의 합의 부호 비트”의 곱의 합일 수 있는 바, 예를 들면, 먼저 수평 방향 기울기의 합의 부호 비트
Figure pct00018
를 결정한 다음, 두 개의 참조 블록의 휘도의 차이
Figure pct00019
와 상기 부호 비트
Figure pct00020
의 곱을 결정하고, 다음, 양자의 곱을 합산한다. 수학식 (7)을 참조하면, 계수 S5는 수직 방향 기울기의 합의 절댓값의 합일 수 있는 바, 예를 들면, 먼저 수직 방향 기울기의 합
Figure pct00021
의 절댓값
Figure pct00022
을 결정한 다음, 상기 절댓값을 합산한다. 수학식 (8)을 참조하면, 계수 S6은 “두 개의 참조 블록의 휘도의 차이”와 “수직 방향 기울기의 합의 부호 비트”의 곱의 합일 수 있는 바, 예를 들면, 먼저 수직 방향 기울기의 합의 부호 비트
Figure pct00023
를 결정한 다음, 두 개의 참조 블록의 휘도의 차이
Figure pct00024
와 상기 부호 비트
Figure pct00025
의 곱을 결정하고, 다음 양자의 곱을 합산한다.
Figure pct00026
(4)
Figure pct00027
(5)
Figure pct00028
(6)
Figure pct00029
(7)
Figure pct00030
(8)
수학식 (4) 내지 수학식 (8)에서,
Figure pct00031
은 서브 블록에 대응하는 6*6의 목표 참조 블록, 즉 상기 예시의 제1 목표 참조 블록 및 제2 목표 참조 블록이며, 제1 목표 참조 블록의 픽셀값은 서브 블록의 제1 원시 예측값이고, 제2 목표 참조 블록의 픽셀값은 서브 블록의 제2 원시 예측값이다. i=xSb…xSb+5, j= ySb…ySb+5이다.
Figure pct00032
는 x의 부호를 취함을 나타내고, 즉 x가 0보다 작으면 -1이며, x가 0보다 크면 1이고, x가 0과 같으면 0이다. abs[x]는 x의 절댓값을 취함을 나타낸다.
Figure pct00033
는 수평 방향 기울기의 합을 나타내고,
Figure pct00034
는 수직 방향 기울기의 합을 나타내며,
Figure pct00035
는 두 개의 참조 블록의 휘도의 차이를 나타낸다.
수학식 (1) 내지 수학식 (3)에서, shift2는 고정값일 수 있고, 예컨대 4이며, BD와 관련된 정수값일 수도 있고, shift3은 고정값일 수 있는 바, 예컨대 1이고, BD와 관련된 정수값일 수도 있다. 물론, 이는 단지 하나의 예시일 뿐, shift2 및 shift3의 값에 대해 제한하지 않는다.
Figure pct00036
Figure pct00037
는 각각 제1 목표 참조 블록 및 제2 목표 참조 블록의 수평 방향 기울기를 나타내고,
Figure pct00038
Figure pct00039
는 각각 제1 목표 참조 블록 및 제2 목표 참조 블록의 수직 방향 기울기를 나타낸다.
Figure pct00040
는 제1 목표 참조 블록 중의 픽셀 위치 (i, j)의 픽셀값(예컨대, 휘도값)을 나타내고,
Figure pct00041
는 제2 목표 참조 블록 중의 픽셀 위치 (i, j)의 픽셀값(예컨대, 휘도값)을 나타낸다. 예시적으로, 수평 방향 기울기는 수학식 9를 통해 결정될 수 있고, 수직 방향 기울기는 수학식 10을 통해 결정될 수 있다.
Figure pct00042
(9)
Figure pct00043
(10)
수학식 (9) 및 수학식 (10)에서, shift1은 고정 정수값일 수 있고, 예컨대 6이며, shift1은 BD와 관련된 정수값일 수도 있다. 물론, 이는 단지 하나의 예시일 뿐, 이 shift1의 값에 대해 제한하지 않는다.
Figure pct00044
는 목표 참조 블록 중의 픽셀 위치
Figure pct00045
의 픽셀값을 나타내고, 예를 들어,
Figure pct00046
는 제1 목표 참조 블록 중의 픽셀 위치
Figure pct00047
의 픽셀값(예컨대, 휘도값)을 나타내며,
Figure pct00048
는 제2 목표 참조 블록 중의 픽셀 위치
Figure pct00049
의 픽셀값(예컨대, 휘도값)을 나타낸다.
상기 각 수학식에서,
Figure pct00050
는 우측으로 이동함을 나타내고, k만큼 우측으로 이동하는 것은
Figure pct00051
로 나누는 것에 해당되며, BD(bit depth)는 비트 깊이를 나타내는 바, 즉 휘도값에 필요한 비트 너비이며, 일반적으로는 8, 10, 12이다. 물론, 8, 10, 12는 단지 예시일 뿐, 이 비트 깊이에 대해 제한하지 않는다.
목표 참조 블록 중의 픽셀 위치
Figure pct00052
의 픽셀값에 대해, 만약 참조 픽셀이 마침 서브 블록의 가장자리에 위치하면, 픽셀 위치 주변에 기울기를 계산하기 위한 충분한 픽셀이 없으므로, 이러한 픽셀 위치의 기울기는 인접 픽셀 위치의 기울기를 복제하여 획득된다. 예를 들면, x=0, 또는 x=dx+1, 또는 y=0, 또는 y=dy+1일 때,
Figure pct00053
,
Figure pct00054
이다. A=Clip3(min, max, x)는 A의 값을 [min, max] 범위로 제한함을 나타내고, 즉 만약 x가 min보다 작으면, A=min이고, 만약 x가 max보다 크면, A=max이다.
일 가능한 실시형태에서, 계수 S1 및 계수 S3이 획득된 후, 계수 S1, 계수 S3 및 속률 임계값에 따라 상기 서브 블록의 수평 방향 속률을 결정할 수 있다. 예를 들어, 하기 수학식을 통해 수평 방향 속률
Figure pct00055
을 결정할 수 있다.
Figure pct00056
(11)
물론, 수학식 11은 단지 하나의 예시일 뿐, 이에 대해 제한하지 않는다. 수학식 11에서,
Figure pct00057
는 속률 임계값이고,
Figure pct00058
는 정수로 내림하는 것이며,
Figure pct00059
는 고정된 정수일 수 있는 바, 예컨대 7, 15, 31, 63, 127 등이며, 바람직하게는 15이고, BD와 관련된 정수일 수도 있는 바, 예컨대
Figure pct00060
-1이다. 물론, 이는 단지
Figure pct00061
의 예시일 뿐, 이에 대해 제한하지 않는다.
Figure pct00062
는 수평 방향 속률
Figure pct00063
Figure pct00064
Figure pct00065
사이로 제한하는 바, 즉 수평 방향 속률
Figure pct00066
Figure pct00067
보다 크거나 같으며, 수평 방향 속률
Figure pct00068
Figure pct00069
보다 작거나 같다. 수학식 11에서, 만약
Figure pct00070
가 성립되면,
Figure pct00071
이고, 만약
Figure pct00072
가 성립되지 않으면,
Figure pct00073
이다. Clip3의 의미는 상기 실시예를 참조할 수 있다.
계수 S2, 계수 S5 및 계수 S6이 획득된 후, 계수 S2, 계수 S5, 계수 S6, 속률 임계값 및 수평 방향 속률에 따라, 상기 서브 블록의 수직 방향 속률을 결정할 수 있다. 예를 들어, 하기 수학식을 통해 수직 방향 속률
Figure pct00074
을 결정할 수 있다.
Figure pct00075
(12)
물론, 수학식 12는 단지 하나의 예시일 뿐, 이에 대해 제한하지 않는다. 수학식 12에서,
Figure pct00076
는 속률 임계값이고,
Figure pct00077
는 정수로 내림하는 것이며,
Figure pct00078
는 고정된 정수일 수 있고, 예컨대 7, 15, 31, 63, 127등이며, 바람직하게는 15이고, BD와 관련된 정수일 수도 있으며, 예컨대
Figure pct00079
-1이다.
Figure pct00080
는 수직 방향 속률
Figure pct00081
Figure pct00082
Figure pct00083
사이로 제한하고, 즉 수직 방향 속률
Figure pct00084
Figure pct00085
보다 크거나 같으며, 수직 방향 속률
Figure pct00086
Figure pct00087
보다 작거나 같다. 수학식 12에서, 만약
Figure pct00088
가 성립되면,
Figure pct00089
이고, 만약
Figure pct00090
가 성립되지 않으면,
Figure pct00091
이다. Clip3의 의미는 상기 실시예를 참조할 수 있고,
Figure pct00092
는 수평 방향 속률일 수 있다.
다른 가능한 실시형태에서, 또한 하기 수학식을 통해 수직 방향 속률
Figure pct00093
을 결정할 수도 있다.
Figure pct00094
(13)
수학식 13에서,
Figure pct00095
,
Figure pct00096
이고,
Figure pct00097
는 좌측으로 이동함을 나타내며, k만큼 좌측으로 이동하는 것은
Figure pct00098
를 곱하는 것에 해당된다.
단계 a6에서, 수평 방향 속률 및 수직 방향 속률에 따라 상기 서브 블록의 예측 보상값을 획득한다. 예를 들어, 서브 블록의 각각의 픽셀 위치에 대해, 상기 서브 블록의 수평 방향 속률 및 수직 방향 속률에 따라 상기 픽셀 위치의 예측 보상값을 획득한다.
일 가능한 실시형태에서, 제1 원시 예측값에 따라 제1 수평 방향 기울기 및 제1 수직 방향 기울기를 결정하고, 제2 원시 예측값에 따라 제2 수평 방향 기울기 및 제2 수직 방향 기울기를 결정할 수 있다. 다음, 수평 방향 속률, 상기 제1 수평 방향 기울기, 상기 제2 수평 방향 기울기, 수직 방향 속률, 상기 제1 수직 방향 기울기 및 상기 제2 수직 방향 기울기에 따라, 상기 서브 블록의 각각의 픽셀 위치의 예측 보상값을 획득한다.
예를 들어, 하기 수학식을 사용하여 상기 서브 블록의 각각의 픽셀 위치의 예측 보상값
Figure pct00099
을 획득할 수 있다.
Figure pct00100
(14)
물론, 수학식 14는 단지 하나의 예시일 뿐, 이에 대해 제한하지 않는다. 수학식 14에서,
Figure pct00101
Figure pct00102
는 각각 제1 목표 참조 블록의 수평 방향 기울기(즉 제1 수평 방향 기울기) 및 제2 목표 참조 블록의 수평 방향 기울기(즉 제2 수평 방향 기울기)를 나타내고,
Figure pct00103
Figure pct00104
는 각각 제1 목표 참조 블록의 수직 방향 기울기(즉 제1 수직 방향 기울기) 및 제2 목표 참조 블록의 수직 방향 기울기(즉 제2 수직 방향 기울기)를 나타낸다. 제1 수평 방향 기울기 및 제2 수평 방향 기울기는 수학식 9를 통해 결정될 수 있고, 제1 수직 방향 기울기 및 제2 수직 방향 기울기는 수학식 10을 통해 결정될 수 있다. 수학식 9 및 수학식 10의 관련 내용은 상기 실시예를 참조할 수 있다.
단계 a7에서, 제1 원시 예측값, 제2 원시 예측값 및 예측 보상값에 따라 서브 블록의 목표 예측값을 획득한다. 예를 들어, 상기 서브 블록의 각각의 픽셀 위치의 경우, 제1 원시 예측값, 제2 원시 예측값 및 상기 픽셀 위치의 예측 보상값에 따라, 상기 픽셀 위치의 목표 예측값을 획득할 수 있는 바, 즉 각각의 픽셀 위치는 하나의 목표 예측값에 대응된다.
예를 들어, 하기 수학식을 사용하여 상기 서브 블록의 각각의 픽셀 위치의 목표 예측값
Figure pct00105
을 획득할 수 있고, 상기 목표 예측값
Figure pct00106
는 4*4 서브 블록의 각각의 픽셀 위치의 휘도값의 최종 예측값이다.
Figure pct00107
Figure pct00108
상기 수학식에서,
Figure pct00109
는 제1 목표 참조 블록 중의 픽셀 위치
Figure pct00110
의 픽셀값(예컨대, 휘도값)을 나타내고,
Figure pct00111
는 제2 목표 참조 블록 중의 픽셀 위치
Figure pct00112
의 픽셀값(예컨대, 휘도값)을 나타낸다.
Figure pct00113
는 고정 정수값일 수 있는 바, 예컨대 5이며, BD와 관련된 정수값일 수도 있는 바, 예컨대
Figure pct00114
이며, 이
Figure pct00115
의 값에 대해 제한하지 않는다.
Figure pct00116
이고, 물론, 이는 단지
Figure pct00117
의 예시이며, 이
Figure pct00118
의 값에 대해 제한하지 않는다.
단계 a8에서, 각각의 서브 블록의 목표 예측값에 따라 현재 블록의 예측값을 결정한다.
실시예 7: 이하, 구체적인 응용 시나리오를 결합하여, 인코딩 및 디코딩 방법을 설명하며, 상기 인코딩 및 디코딩 방법은 하기와 같은 단계를 포함할 수 있다:
단계 b1에서, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정하고, 만약 시작함이 결정되면, 단계 b2를 수행한다.
예시적으로, 실시예 1의 방식을 사용하여 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정하거나, 또는, 실시예 5의 방식을 사용하여 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정하거나, 또는, 실시예 4의 방식을 사용하여 현재 블록에 대해 양방향 예측값 보상 모드를 시작하는지 여부를 결정할 수 있으며, 이 결정 방식에 대해 더 이상 설명하지 않는다.
단계 b2에서, 원시 움직임 정보 (두 개의 움직임 벡터 및 참조 프레임 인덱스, 즉 상기 제1 단방향 움직임 정보 및 제2 유닛 움직임 정보)에 기반하여 제1 참조 프레임 및 제2 참조 프레임에서의 원시 예측값
Figure pct00119
Figure pct00120
을 각각 획득한다.
단계 b3에서, 현재 블록의 각각의 서브 블록에 대해, 원시 예측값
Figure pct00121
Figure pct00122
에 기반하여 제1 참조 프레임 상의 픽셀의 수평 방향(x 방향) 속률
Figure pct00123
및 수직 방향(y 방향) 속률
Figure pct00124
을 획득할 수 있다.
예를 들어, 하기 수학식을 사용하여 기울기의 자기 상관 및 상호 상관 계수
Figure pct00125
,
Figure pct00126
,
Figure pct00127
,
Figure pct00128
Figure pct00129
을 획득할 수 있다:
Figure pct00130
Figure pct00131
Figure pct00132
Figure pct00133
Figure pct00134
예시적으로, 상기 수학식 중의
Figure pct00135
,
Figure pct00136
Figure pct00137
는 하기 수학식을 사용하여 획득될 수 있다:
Figure pct00138
Figure pct00139
Figure pct00140
상기 수학식에서,
Figure pct00141
은 4*4 서브 블록 주변의 6*6 윈도우이고,
Figure pct00142
Figure pct00143
은 각각 min(5, BD-7) 및 min(8, BD-4)이다.
다음,
Figure pct00144
,
Figure pct00145
,
Figure pct00146
,
Figure pct00147
Figure pct00148
에 기반하여, 하기 수학식을 통해 움직임 벡터 차이값
Figure pct00149
을 결정할 수 있다.
Figure pct00150
Figure pct00151
상기 수학식에서,
Figure pct00152
,
Figure pct00153
,
Figure pct00154
이고,
Figure pct00155
는 정수로 내림하는 것이며, Clip3(a, b, x)는 만약 x가 a보다 작으면, x=a이고; 만약 x가 b보다 크면, x=b이며; 그렇지 않으면, x는 변하지 않음을 나타낸다.
단계 b4에서, 서브 블록의 각각의 픽셀 위치에 대해, 상기 서브 블록의 수평 방향 속률 및 수직 방향 속률에 따라 상기 픽셀 위치의 예측 보상값을 획득하는 바, 예를 들어, 하기 수학식을 통해,
Figure pct00156
에 의해 보상값
Figure pct00157
을 획득한다.
Figure pct00158
rnd는 round의 정수를 취하는 조작이고,
Figure pct00159
Figure pct00160
는 각각 수평 방향 및 수직 방향의 기울기를 나타낸다.
Figure pct00161
Figure pct00162
예시적으로,
Figure pct00163
는 우측으로 이동함을 나타내고,
Figure pct00164
는 리스트 k의 참조 프레임이 픽셀 위치
Figure pct00165
에서의 픽셀값을 나타내며, shift1=max(2, 14-BD)이고, BD는 비트 깊이를 나타내는 바, 즉 휘도값에 필요한 비트 너비이고, 일반적으로는 10 또는 8이다.
단계 b5에서, 보상값
Figure pct00166
및 원시 예측값에 기반하여, 최종의 예측값
Figure pct00167
을 획득할 수 있다.
Figure pct00168
예시적으로,
Figure pct00169
,
Figure pct00170
이다.
실시예 8: 실시예 1 내지 실시예 7을 토대로, 현재 블록의 각각의 유닛 블록에 대해, 상기 유닛 블록에 대해 움직임 벡터 조정 모드에 기반한 움직임 보상을 수행할 수도 있다. 예를 들어, 상기 유닛 블록의 제1 원시 움직임 벡터(예컨대, 상기 실시예의 제1 단방향 움직임 정보는 제1 원시 움직임 벡터 및 제1 참조 프레임을 포함함)에 따라 상기 유닛 블록에 대응하는 참조 블록 1을 결정하고, 상기 유닛 블록의 제2 원시 움직임 벡터(예컨대, 상기 실시예의 제2 단방향 움직임 정보는 제2 원시 움직임 벡터 및 제2 참조 프레임을 포함함)에 따라 상기 유닛 블록에 대응하는 참조 블록 2를 결정한다. 참조 블록 1의 픽셀값 및 참조 블록 2의 픽셀값에 따라, 제1 원시 움직임 벡터 및 제2 원시 움직임 벡터를 조정하여, 제1 원시 움직임 벡터에 대응하는 제1 목표 움직임 벡터 및 제2 원시 움직임 벡터에 대응하는 제2 목표 움직임 벡터를 획득한다.
다음, 제1 목표 움직임 벡터에 기반하여 제1 참조 프레임에서 상기 유닛 블록에 대응하는 참조 블록 3을 결정하고, 제2 목표 움직임 벡터에 기반하여 제2 참조 프레임에서 상기 유닛 블록에 대응하는 참조 블록 4를 결정한다. 예시적으로, 유닛 블록에 대응하는 참조 블록 3 및 참조 블록 4를 획득하는 과정은 움직임 벡터 조정 모드를 참조할 수 있으며, 여기서 더 이상 설명하지 않는다.
상기 실시예를 참조하면, 상기 참조 블록 3은 상기 유닛 블록에 대응하는 제1 참조 블록이고, 상기 참조 블록 4는 상기 유닛 블록에 대응하는 제3 참조 블록이다. 유닛 블록에 대응하는 제1 참조 블록 및 제3 참조 블록이 획득된 후, 본 발명의 실시예의 양방향 예측값 보상 모드를 사용할 수 있고, 구체적인 구현 과정은 실시예 1 내지 실시예 7을 참조한다.
예를 들어, 움직임 벡터 조정 모드의 움직임 보상 과정에 기반하여 제1 참조 블록 및 제3 참조 블록이 획득된 후, 제1 참조 블록 및 제3 참조 블록에 기반하여, 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행할 수 있다. 예를 들어, 제1 참조 블록을 확장하여, 상기 유닛 블록에 대응하는 제2 참조 블록을 획득하고, 구체적인 확장 방식은 상기 실시예를 참조한다. 제3 참조 블록을 확장하여, 상기 유닛 블록에 대응하는 제4 참조 블록을 획득하고, 구체적인 확장 방식은 상기 실시예를 참조한다.
다음, 상기 유닛 블록에 포함된 적어도 하나의 서브 블록 중의 각각의 서브 블록에 대해: 상기 유닛 블록에 대응하는 제2 참조 블록에서 상기 서브 블록에 대응하는 제1 목표 참조 블록을 선택하고, 제1 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제1 원시 예측값을 결정한다. 상기 유닛 블록에 대응하는 제4 참조 블록에서 상기 서브 블록에 대응하는 제2 목표 참조 블록을 선택하고, 제2 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제2 원시 예측값을 결정한다. 제1 원시 예측값 및 제2 원시 예측값에 따라 서브 블록의 수평 방향 속률 및 수직 방향 속률을 결정하고; 수평 방향 속률 및 수직 방향 속률에 따라 서브 블록의 예측 보상값을 획득하며, 제1 원시 예측값, 제2 원시 예측값 및 예측 보상값에 따라 서브 블록의 목표 예측값을 획득한다.
일 가능한 실시형태에서, 만약 현재 블록에 대해 움직임 벡터 조정 모드를 시작하지만, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지 않으면, 현재 블록의 각각의 유닛 블록에 대해, 상기 유닛 블록의 제1 원시 움직임 벡터에 따라 상기 유닛 블록에 대응하는 참조 블록 1을 결정하고, 상기 유닛 블록의 제2 원시 움직임 벡터에 따라 상기 유닛 블록에 대응하는 참조 블록 2를 결정한다. 참조 블록 1의 픽셀값 및 참조 블록 2의 픽셀값에 따라, 제1 원시 움직임 벡터 및 제2 원시 움직임 벡터를 조정하여, 제1 원시 움직임 벡터에 대응하는 제1 목표 움직임 벡터 및 제2 원시 움직임 벡터에 대응하는 제2 목표 움직임 벡터를 획득한다. 다음, 제1 목표 움직임 벡터에 기반하여 제1 참조 프레임에서 상기 유닛 블록에 대응하는 참조 블록 3을 결정하고, 제2 목표 움직임 벡터에 기반하여 제2 참조 프레임에서 상기 유닛 블록에 대응하는 참조 블록 4를 결정한다. 참조 블록 3의 픽셀값 및 참조 블록 4의 픽셀값을 가중하여, 상기 유닛 블록의 예측값을 획득한다.
다른 가능한 실시형태에서, 만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지만, 현재 블록에 대해 움직임 벡터 조정 모드를 시작하지 않으면, 구현 과정은 실시예 1 내지 실시예 7을 참조하고, 여기에서 더 이상 설명하지 않는다.
다른 가능한 실시형태에서, 만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작하고, 현재 블록에 대해 움직임 벡터 조정 모드를 시작하면, 즉 양방향 예측값 보상 모드 및 움직임 벡터 조정 모드를 시작하면, 하기와 같은 방식을 사용한다:
사이즈가 dx*dy인 특정 유닛 블록의 경우, 만약 움직임 벡터 조정 모드의 최소 SAD값 dmvrSad[xSbIdx][ySbIdxy]이 기설정된 임계값(경험에 따라 구성될 수 있고, 이에 대해 제한하지 않으며, 예컨대 기설정된 임계값은 2*dx*dy일 수 있음)보다 작으면, 상기 유닛 블록에 대해 양방향 예측값 보상 과정을 수행하지 않고, 직접 상기 유닛 블록의 제1 목표 움직임 벡터를 통해 제1 참조 프레임에서 상기 유닛 블록에 대응하는 참조 블록 3을 결정하며, 제2 목표 움직임 벡터에 기반하여 제2 참조 프레임에서 상기 유닛 블록에 대응하는 참조 블록 4를 결정한다. 참조 블록 3의 픽셀값 및 참조 블록 4의 픽셀값을 가중하여, 각각의 픽셀 위치의 예측값을 획득한다. 예를 들어, 각각의 픽셀 위치의 최종 예측값은: pbSamples[x][y]=Clip3(0, 2BD-1, (P0[x+1][y+1]+P1[x+1][y+1]+offset4)>>shift4)이다.
사이즈가 dx*dy인 특정 유닛 블록의 경우, 만약 움직임 벡터 조정 모드의 최소 SAD(sum of abstract distortion) 값 dmvrSad[xSbIdx][ySbIdxy]이 기설정된 임계값(경험에 따라 구성될 수 있고, 이에 대해 제한하지 않으며, 예컨대 기설정된 임계값은 2*dx*dy일 수 있음)보다 크거나 같으면, 상기 유닛 블록에 대해 양방향 예측값 보상 과정을 수행하는 바, 즉 상기 유닛 블록에 대해 움직임 벡터 조정 과정 및 양방향 예측값 보상 과정을 수행한다. 예를 들어, 상기 유닛 블록의 제1 목표 움직임 벡터를 통해 제1 참조 프레임에서 상기 유닛 블록에 대응하는 참조 블록 3을 결정하고, 제2 목표 움직임 벡터에 기반하여 제2 참조 프레임에서 상기 유닛 블록에 대응하는 참조 블록 4를 결정한다. 참조 블록 3(즉 상기 실시예 중의 제1 참조 블록)을 확장하여, 상기 유닛 블록에 대응하는 제2 참조 블록을 획득하고, 참조 블록 4(즉 상기 실시예 중의 제3 참조 블록)를 확장하여, 상기 유닛 블록에 대응하는 제4 참조 블록을 획득한다. 다음, 상기 유닛 블록에 포함된 적어도 하나의 서브 블록 중의 각각의 서브 블록에 대해: 상기 유닛 블록에 대응하는 제2 참조 블록에서 상기 서브 블록에 대응하는 제1 목표 참조 블록을 선택하고, 제1 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제1 원시 예측값을 결정한다. 상기 유닛 블록에 대응하는 제4 참조 블록에서 상기 서브 블록에 대응하는 제2 목표 참조 블록을 선택하고, 제2 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제2 원시 예측값을 결정한다. 다음, 제1 원시 예측값 및 제2 원시 예측값에 기반하여 수평 방향 속률 및 수직 방향 속률을 결정하고, 수평 방향 속률 및 수직 방향 속률에 따라 예측 보상값을 결정하며, 예측 보상값에 따라 각각의 픽셀 위치의 예측값을 획득한다. 예를 들어, 각각의 픽셀 위치의 최종 예측값은: pbSamples[x][y]=Clip3(0,2BD-1,(P0[x+1][y+1]+P1[x+1][y+1]+offset4)>>shift4)일 수 있다.
상기 실시예에서, 움직임 벡터 조정 모드의 최소 SAD값은 참조 블록 3 및 참조 블록 4의 SAD일 수 있다. 예를 들어, 참조 블록 3의 픽셀값과 참조 블록 4의 픽셀값 사이의 다운 샘플링된 SAD는, 다운 샘플링된 SAD가 결정될 경우, 다운 샘플링된 파라미터 N은 경험에 따라 구성되며, 0보다 크거나 같은 정수이고, 만약 N이 0이면, 다운 샘플링을 수행하지 않음을 나타낸다.
일 가능한 실시형태에서, 상기 실시예는 단독으로 구현될 수 있고, 임의로 조합되어 구현될 수도 있으며, 이에 대해 제한하지 않는다. 예를 들어, 실시예 4는 실시예 1과 조합되어 구현될 수 있고; 실시예 4는 실시예 2와 조합되어 구현될 수 있으며; 실시예 4는 실시예 3과 조합되어 구현될 수 있고; 실시예 4는 실시예 5와 조합되어 구현될 수 있으며; 실시예 4는 실시예 6과 조합되어 구현될 수 있고; 실시예 4는 실시예 7과 조합되어 구현될 수 있다. 실시예 2는 실시예 1과 조합되어 구현될 수 있고; 실시예 2는 실시예 5와 조합되어 구현될 수 있다. 실시예 3은 실시예 1과 조합되어 구현될 수 있고; 실시예 3은 실시예 5와 조합되어 구현될 수 있다. 실시예 1은 단독으로 구현될 수 있고, 실시예 2는 단독으로 구현될 수 있으며, 실시예 3은 단독으로 구현될 수 있고, 실시예 5는 단독으로 구현될 수 있으며, 실시예 6은 단독으로 구현될 수 있고, 실시예 7은 단독으로 구현될 수 있다. 실시예 8은 실시예 1 내지 실시예 7의 임의의 실시예와 조합되어 구현될 수 있다. 물론, 이들은 본 발명의 몇 가지 예시일 뿐, 이에 대해 제한하지 않으며, 본 발명에 관한 모든 실시예들은 모두 단독으로 구현되거나 조합되어 구현될 수 있으며, 이에 대해 더 이상 설명하지 않는다.
상기 방법과 동일한 발명 구상에 기반하여, 본 발명의 실시예는 인코딩단 또는 디코딩단에 응용되는 인코딩 및 디코딩 장치를 더 제공하고, 도 8에 도시된 바와 같이, 이는 상기 장치의 구조도이며, 상기 장치는,
만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하기 위한 결정 모듈(81):
제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 현재 블록이 병진 움직임 모델을 사용하는 것; 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것; 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것; 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것; 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것; 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것; 현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 및
만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하기 위한 움직임 보상 모듈(82)을 포함한다.
상기 결정 모듈(81)은 또한, 제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 현재 블록이 병진 움직임 모델을 사용하는 것; 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것; 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것; 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것; 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것; 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것; 현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 중 어느 하나의 조건이 만족되지 않으면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지 않음을 결정한다.
상기 제어 정보가 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것은, 시퀀스 레벨 제어 정보가 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 및/또는, 프레임 레벨 제어 정보가 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것을 포함한다.
현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것은, 너비가 제1 임계값보다 크거나 같고, 높이가 제2 임계값보다 크거나 같으며, 면적이 제3 임계값보다 크거나 같은 것; 또는, 너비가 제1 임계값보다 크거나 같고, 높이가 제2 임계값보다 크거나 같으며, 면적이 제4 임계값보다 큰 것을 포함하고; 상기 제3 임계값은 상기 제4 임계값보다 크다.
상기 제1 임계값은 8이고, 상기 제2 임계값은 8이며, 상기 제3 임계값은 128이고, 상기 제4 임계값은 64이다.
상기 움직임 보상 모듈(82)은 구체적으로, 상기 현재 블록에 포함된 적어도 하나의 서브 블록 중의 각각의 서브 블록에 대해:
상기 서브 블록의 제1 원시 예측값 및 제2 원시 예측값을 결정하고, 상기 제1 원시 예측값 및 상기 제2 원시 예측값에 따라 상기 서브 블록의 수평 방향 속률 및 수직 방향 속률을 결정하며;
상기 수평 방향 속률 및 상기 수직 방향 속률에 따라 상기 서브 블록의 예측 보상값을 획득하고, 상기 제1 원시 예측값, 상기 제2 원시 예측값 및 상기 예측 보상값에 따라 상기 서브 블록의 목표 예측값을 획득하며;
각각의 서브 블록의 목표 예측값에 따라 상기 현재 블록의 예측값을 결정한다.
상기 움직임 보상 모듈(82)은, 상기 서브 블록의 제1 원시 예측값 및 제2 원시 예측값을 결정할 경우, 구체적으로,
상기 서브 블록에 대응하는 유닛 블록을 결정하되, 여기서, 상기 현재 블록은 상기 유닛 블록을 포함하고, 상기 유닛 블록은 상기 서브 블록을 포함하고; 상기 유닛 블록의 제1 단방향 움직임 정보에 따라 제1 참조 프레임에서 제1 참조 블록을 결정하고, 상기 제1 참조 블록을 확장하여, 제2 참조 블록을 획득하며; 상기 제2 참조 블록에서 상기 서브 블록에 대응하는 제1 목표 참조 블록을 선택하고, 상기 제1 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제1 원시 예측값을 결정하며;
상기 유닛 블록의 제2 단방향 움직임 정보에 따라 제2 참조 프레임에서 제3 참조 블록을 결정하고, 상기 제3 참조 블록을 확장하여, 제4 참조 블록을 획득하며; 상기 제4 참조 블록에서 상기 서브 블록에 대응하는 제2 목표 참조 블록을 선택하고, 상기 제2 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제2 원시 예측값을 결정한다.
상기 움직임 보상 모듈(82)은, 상기 제1 참조 블록을 확장하여, 제2 참조 블록을 획득할 경우, 구체적으로, 상기 제1 참조 블록의 상측 가장자리 및 하측 가장자리를 각각 N행의 정수 픽셀 포인트로 채우고, 상기 제1 참조 블록의 좌측 가장자리 및 우측 가장자리를 각각 N열의 정수 픽셀 포인트로 채워, 제2 참조 블록을 획득하며;
상기 움직임 보상 모듈(82)은, 상기 제3 참조 블록을 확장하여, 제4 참조 블록을 획득할 경우, 구체적으로, 상기 제3 참조 블록의 상측 가장자리 및 하측 가장자리를 각각 N행의 정수 픽셀 포인트로 채우고, 상기 제3 참조 블록의 좌측 가장자리 및 우측 가장자리를 각각 N열의 정수 픽셀 포인트로 채워, 제4 참조 블록을 획득하며;
예시적으로, N은 0 또는 양의 정수이다.
상기 제2 참조 블록 중의 채워진 상기 N행의 정수 픽셀 포인트의 픽셀값 및 채워진 상기 N열의 정수 픽셀 포인트의 픽셀값은, 상기 제1 참조 프레임 내의 인접 정수 픽셀 위치의 픽셀값을 복사하여 획득되거나, 또는, 상기 제1 참조 블록 중의 인접 픽셀 포인트의 픽셀값을 복사하여 획득되고;
상기 제4 참조 블록 중의 채워진 상기 N행의 정수 픽셀 포인트의 픽셀값 및 채워진 상기 N열의 정수 픽셀 포인트의 픽셀값은, 상기 제2 참조 프레임 내의 인접 정수 픽셀 위치의 픽셀값을 복사하여 획득되거나, 또는, 상기 제3 참조 블록 중의 인접 픽셀 포인트의 픽셀값을 복사하여 획득된다.
상기 움직임 보상 모듈(82)은, 상기 수평 방향 속률 및 상기 수직 방향 속률에 따라 상기 서브 블록의 예측 보상값을 획득할 경우, 구체적으로, 상기 제1 원시 예측값에 따라 제1 수평 방향 기울기 및 제1 수직 방향 기울기를 결정하고; 상기 제2 원시 예측값에 따라 제2 수평 방향 기울기 및 제2 수직 방향 기울기를 결정하며; 상기 수평 방향 속률, 상기 제1 수평 방향 기울기, 상기 제2 수평 방향 기울기, 상기 수직 방향 속률, 상기 제1 수직 방향 기울기 및 상기 제2 수직 방향 기울기에 따라, 상기 서브 블록의 예측 보상값을 획득한다.
상기 방법과 동일한 발명 구상에 기반하여, 본 발명의 실시예는 인코딩단 또는 디코딩단에 응용되는 인코딩 및 디코딩 장치를 더 제공하고, 상기 장치는, 만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하기 위한 결정 모듈: 제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 현재 블록이 병진 움직임 모델을 사용하는 것; 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것; 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것; 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것; 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것; 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것; 현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 및 만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하기 위한 움직임 보상 모듈을 포함한다.
본 발명의 실시예에 의해 제공되는 디코딩단 기기는 하드웨어 관점에서, 그 하드웨어 아키텍처 모식도는 구체적으로 도 9a에 도시된 것을 참조할 수 있다. 프로세서(911) 및 기계 판독 가능 저장 매체(912)를 포함하고, 상기 기계 판독 가능 저장 매체(912)에는 상기 프로세서(911)에 의해 실행 가능한 기계 실행 가능 명령어가 저장되어 있으며; 상기 프로세서(911)는 기계 실행 가능 명령어를 실행하여, 본 발명의 상기 예시에서 개시된 방법을 구현한다. 예를 들어, 프로세서는 기계 실행 가능 명령어를 실행하여,
만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하는 단계:
제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 현재 블록이 병진 움직임 모델을 사용하는 것; 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것; 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것; 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것; 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것; 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것; 현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 및
만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하는 단계를 구현한다.
본 발명의 실시예에 의해 제공되는 인코딩단 기기는 하드웨어 관점에서, 그 하드웨어 아키텍처 모식도는 구체적으로 도 9b에 도시된 것을 참조할 수 있다. 프로세서(921) 및 기계 판독 가능 저장 매체(922)를 포함하고, 상기 기계 판독 가능 저장 매체(922)에는 상기 프로세서(921)에 의해 실행 가능한 기계 실행 가능 명령어가 저장되어 있으며; 상기 프로세서(921)는 기계 실행 가능 명령어를 실행하여, 본 발명의 상기 예시에서 개시된 방법을 구현한다. 예를 들어, 프로세서는 기계 실행 가능 명령어를 실행하여,
만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하는 단계:
제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 현재 블록이 병진 움직임 모델을 사용하는 것; 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것; 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것; 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것; 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것; 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것; 현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 및
만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하는 단계를 구현한다.
상기 방법과 동일한 발명 구상에 기반하여, 본 발명의 실시예는 비디오 카메라를 더 제공하고, 상기 비디오 카메라는 프로세서 및 기계 판독 가능 저장 매체를 포함하되, 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령어가 저장되어 있으며; 상기 프로세서는 기계 실행 가능 명령어를 실행하여, 본 발명의 상기 예시에서 개시된 방법을 구현한다. 예를 들어, 프로세서는 기계 실행 가능 명령어를 실행하여,
만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하는 단계:
제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것; 현재 블록이 병진 움직임 모델을 사용하는 것; 현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것; 현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임의 디스플레이 순서는 각각 현재 프레임의 앞과 뒤에 위치하며, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것; 현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것; 현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것; 현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것; 현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 및
만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하는 단계를 구현한다.
상기 방법과 동일한 발명 구상에 기반하여, 본 발명의 실시예는 기계 판독 가능 저장 매체를 더 제공하고, 상기 기계 판독 가능 저장 매체에는 복수의 컴퓨터 명령어가 저장되어 있으며, 상기 컴퓨터 명령어가 프로세서에 의해 실행될 경우, 본 발명의 상기 예시에서 개시된 인코딩 및 디코딩 방법이 구현될 수 있다. 여기서, 상기 기계 판독 가능 저장 매체는 실행 가능 명령어, 데이터 등과 같은 정보를 포함하거나 저장할 수 있는 임의의 전기적, 자기적, 광학적 또는 다른 물리 저장 장치일 수 있다. 예를 들어, 기계 판독 가능 저장 매체는 RAM(Radom Access Memory, 랜덤 액세스 메모리), 휘발성 메모리, 비휘발성 메모리, 플래시 메모리, 메모리 드라이버(예컨대, 하드디스크 드라이버), 솔리드 스테이트 하드디스크, 임의의 유형의 메모리 디스크(예컨대, CD, dvd 등), 또는 유사한 저장 매체, 또는 이들의 조합일 수 있다.
상기 방법과 동일한 발명 구상에 기반하여, 본 발명의 실시예는 컴퓨터 프로그램 제품을 더 제공하고, 상기 컴퓨터 프로그램 제품은 컴퓨터 명령어를 포함하며, 상기 컴퓨터 명령어가 프로세서에 의해 실행될 경우, 본 발명의 상기 예시에서 시작된 인코딩 및 디코딩 방법이 구현될 수 있다.
상기 방법과 동일한 발명 구상에 기반하여, 본 발명의 실시예는 인코딩 및 디코딩 시스템을 더 제공하고, 상기 인코딩 및 디코딩 시스템은 프로세서 및 기계 판독 가능 저장 매체를 포함하며, 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령어가 저장되어 있다. 상기 기계 실행 가능 명령어가 프로세서에 의해 실행될 경우, 본 발명의 상기 예시에서 개시된 인코딩 및 디코딩 방법이 구현될 수 있다.
상기 실시예에서 설명된 시스템, 장치, 모듈 또는 유닛은 컴퓨터 칩 또는 엔티티에 의해 구현될 수 있거나, 또는 특정 기능이 있는 제품에 의해 구현될 수 있다. 전형적인 구현 기기는 컴퓨터이고, 컴퓨터의 형태는 개인용 컴퓨터, 랩톱 컴퓨터, 셀룰러폰, 카메라폰, 스마트폰, 개인 휴대 정보 단말기, 멀티미디어 플레이어, 내비게이션 기기, 전자 메일 송수신 기기, 태블릿 컴퓨터, 웨어러블 기기 또는 이러한 기기 중 어느 몇 가지 기기의 조합일 수 있다.
설명의 편리를 위해, 상기 장치를 설명할 때 기능을 다양한 유닛으로 나누어 각각 설명한다. 물론, 본 발명을 구현할 때 각 유닛의 기능을 동일한 하나 또는 복수의 소프트웨어 및/또는 하드웨어에서 구현할 수 있다.
본 기술분야의 통상의 기술자라면 본 발명의 실시예가 방법, 시스템, 또는 컴퓨터 프로그램 제품으로서 제공될 수 있음을 이해해야 한다. 따라서, 본 발명은 하드웨어 실시예, 소프트웨어 실시예, 또는 소프트웨어와 하드웨어를 결합한 실시예 형태를 사용할 수 있다. 또한, 본 발명의 실시예는 컴퓨터 사용 가능 프로그램 코드가 포함된 하나 또는 복수의 컴퓨터 사용 가능 저장 매체(자기 디스크 메모리, CD-ROM 및 광 메모리 등을 포함하지만 이에 제한되지 않음)에서 구현되는 컴퓨터 프로그램 제품의 형태를 사용할 수 있다.
본 발명은 본 발명의 실시예에 따른 방법, 기기(시스템), 및 컴퓨터 프로그램 제품의 흐름도 및/또는 블록도를 참조하여 설명된다. 컴퓨터 프로그램 명령어에 의해 흐름도 및/또는 블록도의 각 흐름 및/또는 블록, 및 흐름도 및/또는 블록도의 흐름 및/또는 블록의 조합이 구현될 수 있음을 이해해야 한다. 이러한 컴퓨터 프로그램 명령어는 범용 컴퓨터, 특수 목적 컴퓨터, 임베디드 프로세서 또는 다른 프로그래밍 가능 데이터 처리 기기의 프로세서에 제공되어 하나의 기계를 생성할 수 있음으로써, 컴퓨터 또는 다른 프로그래머블 가능 데이터 처리 기기의 프로세서에 의해 실행되는 명령어를 통해, 흐름도의 하나 또는 복수의 흐름 및/또는 블록도의 하나 또는 복수의 블록에 지정된 기능을 구현하는 장치가 생성되도록 한다. 또한, 이러한 컴퓨터 프로그램 명령어는 컴퓨터 또는 다른 프로그래머블 데이터 처리 기기가 특정된 방식으로 작업하도록 하는 컴퓨터 판독 가능 메모리에 저장될 수도 있음으로써, 상기 컴퓨터 판독 가능 메모리에 저장된 명령어가 흐름도의 하나의 흐름 또는 복수의 흐름 및/또는 블록도의 하나의 블록 또는 복수의 블록에 지정된 기능을 구현하는 명령어 장치를 포함하는 제조품을 생성하도록 한다.
이러한 컴퓨터 프로그램 명령어는 또한 컴퓨터 또는 다른 프로그래머블 데이터 처리 기기에 로딩되어, 컴퓨터 또는 다른 프로그래밍 가능 기기에서 일련의 조작의 단계가 수행되도록 하여, 컴퓨터에 의해 구현되는 프로세스가 생성되도록 함으로써, 컴퓨터 또는 다른 프로그래머블 기기에서 실행되는 명령어가 흐름도의 하나의 흐름 또는 복수의 흐름 및/또는 블록도의 하나의 블록 또는 복수의 블록에 지정된 기능을 구현하는 단계를 제공한다. 전술한 내용은 단지 본 발명의 바람직한 실시예일 뿐, 본 발명을 제한하기 위함이 아니다. 본 기술분야의 통상의 기술자는 본 발명에 대해 다양한 변경 및 변형을 진행할 수 있다. 본 발명의 사상 및 원칙 내에서 이루어진 임의의 수정, 등가적 대체, 개선 등은 모두 본 발명의 특허청구범위 내에 포함되어야 한다.

Claims (24)

  1. 인코딩 및 디코딩 방법으로서,
    만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하는 단계:
    제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것;
    현재 블록이 병진 움직임 모델을 사용하는 것;
    현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것;
    현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임 중 하나의 참조 프레임은 현재 프레임의 앞에 위치하며, 상기 두 개의 참조 프레임 중 다른 참조 프레임은 상기 현재 프레임의 뒤에 위치하고, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것;
    현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것;
    현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것;
    현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것;
    현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것;
    현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 및
    만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하는 단계를 포함하는 것을 특징으로 하는
    인코딩 및 디코딩 방법.
  2. 제1항에 있어서,
    제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것;
    현재 블록이 병진 움직임 모델을 사용하는 것;
    현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것;
    현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임 중 하나의 참조 프레임은 현재 프레임의 앞에 위치하며, 상기 두 개의 참조 프레임 중 다른 참조 프레임은 상기 현재 프레임의 뒤에 위치하고, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것;
    현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것;
    현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것;
    현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것;
    현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 및
    현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 중 어느 하나의 조건이 만족되지 않으면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지 않음을 결정하는 단계를 더 포함하는 것을 특징으로 하는 인코딩 및 디코딩 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 제어 정보가 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것은, 프레임 레벨 제어 정보가 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것을 포함하는 것을 특징으로 하는 인코딩 및 디코딩 방법.
  4. 제1항 또는 제2항에 있어서,
    현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것은,
    너비가 제1 임계값보다 크거나 같고, 높이가 제2 임계값보다 크거나 같으며, 면적이 제3 임계값보다 크거나 같은 것을 포함하는 것을 특징으로 하는 인코딩 및 디코딩 방법.
  5. 제4항에 있어서,
    상기 제1 임계값은 8이고, 상기 제2 임계값은 8이며, 상기 제3 임계값은 128인 것을 특징으로 하는 인코딩 및 디코딩 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하는 단계는,
    상기 현재 블록에 포함된 적어도 하나의 서브 블록 중의 각각의 서브 블록에 대해:
    상기 서브 블록의 제1 원시(raw) 예측값 및 제2 원시 예측값을 결정하고, 상기 제1 원시 예측값 및 상기 제2 원시 예측값에 따라 상기 서브 블록의 수평 방향 속률(rate) 및 수직 방향 속률을 결정하는 단계;
    상기 수평 방향 속률 및 상기 수직 방향 속률에 따라 상기 서브 블록의 예측 보상값을 획득하고, 상기 제1 원시 예측값, 상기 제2 원시 예측값 및 상기 예측 보상값에 따라 상기 서브 블록의 목표 예측값을 획득하는 단계;
    각각의 서브 블록의 목표 예측값에 따라 상기 현재 블록의 예측값을 결정하는 단계를 포함하는 것을 특징으로 하는
    인코딩 및 디코딩 방법.
  7. 제6항에 있어서,
    상기 서브 블록의 제1 원시 예측값 및 제2 원시 예측값을 결정하는 단계는,
    상기 서브 블록에 대응하는 유닛 블록을 결정하는 단계 - 상기 현재 블록은 상기 유닛 블록을 포함하고, 상기 유닛 블록은 상기 서브 블록을 포함함 -;
    상기 유닛 블록의 제1 단방향 움직임 정보에 따라 제1 참조 프레임에서 제1 참조 블록을 결정하고, 상기 제1 참조 블록을 확장하여, 제2 참조 블록을 획득하며; 상기 제2 참조 블록에서 상기 서브 블록에 대응하는 제1 목표 참조 블록을 선택하고, 상기 제1 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제1 원시 예측값을 결정하는 단계; 및
    상기 유닛 블록의 제2 단방향 움직임 정보에 따라 제2 참조 프레임에서 제3 참조 블록을 결정하고, 상기 제3 참조 블록을 확장하여, 제4 참조 블록을 획득하며; 상기 제4 참조 블록에서 상기 서브 블록에 대응하는 제2 목표 참조 블록을 선택하고, 상기 제2 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제2 원시 예측값을 결정하는 단계를 포함하는 것을 특징으로 하는 인코딩 및 디코딩 방법.
  8. 제7항에 있어서,
    상기 제1 참조 블록을 확장하여, 제2 참조 블록을 획득하는 단계는,
    상기 제1 참조 블록의 상측 가장자리 및 하측 가장자리를 각각 N행의 정수 픽셀 포인트로 채우고, 상기 제1 참조 블록의 좌측 가장자리 및 우측 가장자리를 각각 N열의 정수 픽셀 포인트로 채워, 제2 참조 블록을 획득하는 단계를 포함하고;
    상기 제3 참조 블록을 확장하여, 제4 참조 블록을 획득하는 단계는,
    상기 제3 참조 블록의 상측 가장자리 및 하측 가장자리를 각각 N행의 정수 픽셀 포인트로 채우고, 상기 제3 참조 블록의 좌측 가장자리 및 우측 가장자리를 각각 N열의 정수 픽셀 포인트로 채워, 제4 참조 블록을 획득하는 단계를 포함하되;
    N은 0 또는 양의 정수인 것을 특징으로 하는 인코딩 및 디코딩 방법.
  9. 제8항에 있어서,
    상기 제2 참조 블록 중의 채워진 상기 N행의 정수 픽셀 포인트의 픽셀값 및 채워진 상기 N열의 정수 픽셀 포인트의 픽셀값은, 상기 제1 참조 프레임 내의 인접 정수 픽셀 위치의 픽셀값을 복사하여 획득되거나, 또는, 상기 제1 참조 블록 중의 인접 픽셀 포인트의 픽셀값을 복사하여 획득되고;
    상기 제4 참조 블록 중의 채워진 상기 N행의 정수 픽셀 포인트의 픽셀값 및 채워진 상기 N열의 정수 픽셀 포인트의 픽셀값은, 상기 제2 참조 프레임 내의 인접 정수 픽셀 위치의 픽셀값을 복사하여 획득되거나, 또는, 상기 제3 참조 블록 중의 인접 픽셀 포인트의 픽셀값을 복사하여 획득되는 것을 특징으로 하는 인코딩 및 디코딩 방법.
  10. 제6항에 있어서,
    상기 수평 방향 속률 및 상기 수직 방향 속률에 따라 상기 서브 블록의 예측 보상값을 획득하는 단계는,
    상기 제1 원시 예측값에 따라 제1 수평 방향 기울기 및 제1 수직 방향 기울기를 결정하는 단계;
    상기 제2 원시 예측값에 따라 제2 수평 방향 기울기 및 제2 수직 방향 기울기를 결정하는 단계;
    상기 수평 방향 속률, 상기 제1 수평 방향 기울기, 상기 제2 수평 방향 기울기, 상기 수직 방향 속률, 상기 제1 수직 방향 기울기 및 상기 제2 수직 방향 기울기에 따라, 상기 서브 블록의 예측 보상값을 획득하는 단계를 포함하는 것을 특징으로 하는 인코딩 및 디코딩 방법.
  11. 인코딩 및 디코딩 방법으로서,
    만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하는 단계:
    제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것;
    현재 블록이 병진 움직임 모델을 사용하는 것;
    현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것;
    현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임 중 하나의 참조 프레임은 현재 프레임의 앞에 위치하며, 상기 두 개의 참조 프레임 중 다른 참조 프레임은 상기 현재 프레임의 뒤에 위치하고, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것;
    현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것;
    현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것;
    현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것;
    현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 및
    만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하는 단계를 포함하는 것을 특징으로 하는 인코딩 및 디코딩 방법.
  12. 인코딩 및 디코딩 장치로서,
    만약 하기 조건들이 모두 만족되면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작함을 결정하기 위한 결정 모듈:
    제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것;
    현재 블록이 병진 움직임 모델을 사용하는 것;
    현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것;
    현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임 중 하나의 참조 프레임은 현재 프레임의 앞에 위치하며, 상기 두 개의 참조 프레임 중 다른 참조 프레임은 상기 현재 프레임의 뒤에 위치하고, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것;
    현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것;
    현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것;
    현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것;
    현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것;
    현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 및
    만약 현재 블록에 대해 양방향 예측값 보상 모드를 시작함이 결정되면, 상기 현재 블록에 대해 양방향 예측값 보상 모드에 기반한 움직임 보상을 수행하기 위한 움직임 보상 모듈을 포함하는 것을 특징으로 하는 인코딩 및 디코딩 장치.
  13. 제12항에 있어서,
    상기 결정 모듈은, 또한,
    제어 정보는 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것;
    현재 블록이 병진 움직임 모델을 사용하는 것;
    현재 블록의 예측 모드는 서브 블록 모드가 아니고, SMVD 모드가 아니며, CIIP 모드가 아닌 것;
    현재 블록의 예측값은 두 개의 참조 프레임에서 비롯되는 참조 블록의 가중을 통해 획득되고, 상기 두 개의 참조 프레임 중 하나의 참조 프레임은 현재 프레임의 앞에 위치하며, 상기 두 개의 참조 프레임 중 다른 참조 프레임은 상기 현재 프레임의 뒤에 위치하고, 상기 두 개의 참조 프레임과 현재 프레임 사이의 거리가 동일한 것;
    현재 블록의 두 개의 참조 프레임의 가중된 가중치가 동일한 것;
    현재 블록의 두 개의 참조 프레임이 모두 단기 참조 프레임인 것;
    현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것;
    현재 블록의 두 개의 참조 프레임의 사이즈와 현재 프레임의 사이즈가 모두 동일한 것; 및
    현재 블록이 휘도 컴포넌트 예측값 보상을 수행하는 것; 중 어느 하나의 조건이 만족되지 않으면, 현재 블록에 대해 양방향 예측값 보상 모드를 시작하지 않음을 결정하는 것을 특징으로 하는 인코딩 및 디코딩 장치.
  14. 제12항 또는 제13항에 있어서,
    상기 제어 정보가 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것은, 프레임 레벨 제어 정보가 현재 블록이 양방향 예측값 보상 모드를 사용하도록 허용하는 것인 것을 포함하는 것을 특징으로 하는 인코딩 및 디코딩 장치.
  15. 제12항 또는 제13항에 있어서,
    현재 블록의 너비, 높이 및 면적이 모두 한정된 범위 내인 것은,
    너비가 제1 임계값보다 크거나 같고, 높이가 제2 임계값보다 크거나 같으며, 면적이 제3 임계값보다 크거나 같은 것을 포함하는 것을 특징으로 하는 인코딩 및 디코딩 장치.
  16. 제15항에 있어서,
    상기 제1 임계값은 8이고, 상기 제2 임계값은 8이며, 상기 제3 임계값은 128인 것을 포함하는 것을 특징으로 하는 인코딩 및 디코딩 장치.
  17. 제12항 내지 제16항 중 어느 한 항에 있어서,
    상기 움직임 보상 모듈은 구체적으로, 상기 현재 블록에 포함된 적어도 하나의 서브 블록 중의 각각의 서브 블록에 대해:
    상기 서브 블록의 제1 원시 예측값 및 제2 원시 예측값을 결정하고, 상기 제1 원시 예측값 및 상기 제2 원시 예측값에 따라 상기 서브 블록의 수평 방향 속률 및 수직 방향 속률을 결정하며;
    상기 수평 방향 속률 및 상기 수직 방향 속률에 따라 상기 서브 블록의 예측 보상값을 획득하고, 상기 제1 원시 예측값, 상기 제2 원시 예측값 및 상기 예측 보상값에 따라 상기 서브 블록의 목표 예측값을 획득하며;
    각각의 서브 블록의 목표 예측값에 따라 상기 현재 블록의 예측값을 결정하는 것을 특징으로 하는 인코딩 및 디코딩 장치.
  18. 제17항에 있어서,
    상기 움직임 보상 모듈은, 상기 서브 블록의 제1 원시 예측값 및 제2 원시 예측값을 결정할 경우,
    상기 서브 블록에 대응하는 유닛 블록을 결정하고, 상기 현재 블록은 상기 유닛 블록을 포함하고, 상기 유닛 블록은 상기 서브 블록을 포함하고;
    상기 유닛 블록의 제1 단방향 움직임 정보에 따라 제1 참조 프레임에서 제1 참조 블록을 결정하고, 상기 제1 참조 블록을 확장하여, 제2 참조 블록을 획득하며; 상기 제2 참조 블록에서 상기 서브 블록에 대응하는 제1 목표 참조 블록을 선택하고, 상기 제1 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제1 원시 예측값을 결정하며;
    상기 유닛 블록의 제2 단방향 움직임 정보에 따라 제2 참조 프레임에서 제3 참조 블록을 결정하고, 상기 제3 참조 블록을 확장하여, 제4 참조 블록을 획득하며; 상기 제4 참조 블록에서 상기 서브 블록에 대응하는 제2 목표 참조 블록을 선택하고, 상기 제2 목표 참조 블록의 픽셀값에 따라 상기 서브 블록의 제2 원시 예측값을 결정하는 것을 특징으로 하는 인코딩 및 디코딩 장치.
  19. 제18항에 있어서,
    상기 움직임 보상 모듈은, 상기 제1 참조 블록을 확장하여, 제2 참조 블록을 획득할 경우,
    상기 제1 참조 블록의 상측 가장자리 및 하측 가장자리를 각각 N행의 정수 픽셀 포인트로 채우고, 상기 제1 참조 블록의 좌측 가장자리 및 우측 가장자리를 각각 N열의 정수 픽셀 포인트로 채워, 제2 참조 블록을 획득하며;
    상기 움직임 보상 모듈은, 상기 제3 참조 블록을 확장하여, 제4 참조 블록을 획득할 경우,
    상기 제3 참조 블록의 상측 가장자리 및 하측 가장자리를 각각 N행의 정수 픽셀 포인트로 채우고, 상기 제3 참조 블록의 좌측 가장자리 및 우측 가장자리를 각각 N열의 정수 픽셀 포인트로 채워, 제4 참조 블록을 획득하며;
    N은 0 또는 양의 정수인 것을 특징으로 하는 인코딩 및 디코딩 장치.
  20. 제19항에 있어서,
    상기 제2 참조 블록 중의 채워진 상기 N행의 정수 픽셀 포인트의 픽셀값 및 채워진 상기 N열의 정수 픽셀 포인트의 픽셀값은, 상기 제1 참조 프레임 내의 인접 정수 픽셀 위치의 픽셀값을 복사하여 획득되거나, 또는, 상기 제1 참조 블록 중의 인접 픽셀 포인트의 픽셀값을 복사하여 획득되고;
    상기 제4 참조 블록 중의 채워진 상기 N행의 정수 픽셀 포인트의 픽셀값 및 채워진 상기 N열의 정수 픽셀 포인트의 픽셀값은, 상기 제2 참조 프레임 내의 인접 정수 픽셀 위치의 픽셀값을 복사하여 획득되거나, 또는, 상기 제3 참조 블록 중의 인접 픽셀 포인트의 픽셀값을 복사하여 획득되는 것을 특징으로 하는 인코딩 및 디코딩 장치.
  21. 제17항에 있어서,
    상기 움직임 보상 모듈은, 상기 수평 방향 속률 및 상기 수직 방향 속률에 따라 상기 서브 블록의 예측 보상값을 획득할 경우,
    상기 제1 원시 예측값에 따라 제1 수평 방향 기울기 및 제1 수직 방향 기울기를 결정하고;
    상기 제2 원시 예측값에 따라 제2 수평 방향 기울기 및 제2 수직 방향 기울기를 결정하며;
    상기 수평 방향 속률, 상기 제1 수평 방향 기울기, 상기 제2 수평 방향 기울기, 상기 수직 방향 속률, 상기 제1 수직 방향 기울기 및 상기 제2 수직 방향 기울기에 따라, 상기 서브 블록의 예측 보상값을 획득하는 것을 특징으로 하는 인코딩 및 디코딩 장치.
  22. 디코딩단 기기로서,
    프로세서 및 기계 판독 가능 저장 매체를 포함하되, 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령어가 저장되어 있으며;
    상기 프로세서는 기계 실행 가능 명령어를 실행하여, 제1항 내지 제11항 중 어느 한 항에 따른 인코딩 및 디코딩 방법을 구현하는 것을 특징으로 하는 디코딩단 기기.
  23. 인코딩단 기기로서,
    프로세서 및 기계 판독 가능 저장 매체를 포함하되, 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령어가 저장되어 있으며;
    상기 프로세서는 기계 실행 가능 명령어를 실행하여, 제1항 내지 제11항 중 어느 한 항에 따른 인코딩 및 디코딩 방법을 구현하는 것을 특징으로 하는 인코딩단 기기.
  24. 비디오 카메라로서,
    상기 비디오 카메라는 프로세서 및 기계 판독 가능 저장 매체를 포함하되, 상기 기계 판독 가능 저장 매체에는 상기 프로세서에 의해 실행 가능한 기계 실행 가능 명령어가 저장되어 있으며;
    상기 프로세서는 기계 실행 가능 명령어를 실행하여, 제1항 내지 제11항 중 어느 한 항에 따른 인코딩 및 디코딩 방법을 구현하는 것을 특징으로 하는 비디오 카메라.
KR1020227011043A 2019-11-14 2020-10-28 인코딩 및 디코딩 방법, 장치 및 이의 기기 KR20220050228A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201911115040.X 2019-11-14
CN201911115040.XA CN112804534B (zh) 2019-11-14 2019-11-14 一种编解码方法、装置及其设备
PCT/CN2020/124311 WO2021093589A1 (zh) 2019-11-14 2020-10-28 一种编解码方法、装置及其设备

Publications (1)

Publication Number Publication Date
KR20220050228A true KR20220050228A (ko) 2022-04-22

Family

ID=74036799

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227011043A KR20220050228A (ko) 2019-11-14 2020-10-28 인코딩 및 디코딩 방법, 장치 및 이의 기기

Country Status (5)

Country Link
US (1) US20240073447A1 (ko)
JP (2) JP7419511B2 (ko)
KR (1) KR20220050228A (ko)
CN (3) CN112135146B (ko)
WO (1) WO2021093589A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023019407A1 (zh) * 2021-08-16 2023-02-23 Oppo广东移动通信有限公司 帧间预测方法、编码器、解码器以及存储介质
CN117061824B (zh) * 2023-10-12 2024-01-26 深圳云天畅想信息科技有限公司 流媒体视频补帧方法、装置及计算机设备

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6810144B2 (en) * 2001-07-20 2004-10-26 Koninklijke Philips Electronics N.V. Methods of and system for detecting a cartoon in a video data stream
JP4346868B2 (ja) * 2002-06-17 2009-10-21 株式会社日立製作所 動画符号化装置、及び動画記録再生装置、及び動画再生装置、及び動画符号化方法ならびに動画記録再生方法
KR20110112240A (ko) * 2010-04-06 2011-10-12 삼성전자주식회사 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
CN102387360B (zh) * 2010-09-02 2016-05-11 乐金电子(中国)研究开发中心有限公司 视频编解码帧间图像预测方法及视频编解码器
CA2988107A1 (en) * 2015-06-19 2016-12-22 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding
WO2017036399A1 (en) * 2015-09-02 2017-03-09 Mediatek Inc. Method and apparatus of motion compensation for video coding based on bi prediction optical flow techniques
US10375413B2 (en) * 2015-09-28 2019-08-06 Qualcomm Incorporated Bi-directional optical flow for video coding
US10939104B2 (en) * 2015-10-13 2021-03-02 Samsung Electronics Co., Ltd. Method and device for encoding or decoding image
EP4258657A1 (en) * 2017-01-04 2023-10-11 Samsung Electronics Co., Ltd. Video decoding method and apparatus and video encoding method and apparatus
CN116866586A (zh) * 2017-05-17 2023-10-10 株式会社Kt 对图像解码的方法以及存储压缩视频数据的装置
CN116744018A (zh) * 2017-08-29 2023-09-12 Sk电信有限公司 视频编码方法、视频解码方法和传输比特流的方法
KR102580910B1 (ko) * 2017-08-29 2023-09-20 에스케이텔레콤 주식회사 양방향 옵티컬 플로우를 이용한 움직임 보상 방법 및 장치
CN110324623B (zh) * 2018-03-30 2021-09-07 华为技术有限公司 一种双向帧间预测方法及装置
CN110225346A (zh) * 2018-12-28 2019-09-10 杭州海康威视数字技术股份有限公司 一种编解码方法及其设备
CN112866699B (zh) * 2019-03-11 2022-11-01 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN113411604B (zh) * 2019-06-21 2022-05-31 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及其设备
CN113596457A (zh) * 2019-09-23 2021-11-02 杭州海康威视数字技术股份有限公司 编解码方法方法、装置及设备
EP4029274A4 (en) * 2019-10-13 2022-11-30 Beijing Bytedance Network Technology Co., Ltd. INTERACTION BETWEEN REFERENCE IMAGE RESAMPLING AND VIDEO CODING TOOLS

Also Published As

Publication number Publication date
WO2021093589A1 (zh) 2021-05-20
JP2022550593A (ja) 2022-12-02
JP7419511B2 (ja) 2024-01-22
CN112135146A (zh) 2020-12-25
CN112804534A (zh) 2021-05-14
CN112135145B (zh) 2022-01-25
CN112135146B (zh) 2021-12-24
CN112135145A (zh) 2020-12-25
JP2024045191A (ja) 2024-04-02
US20240073447A1 (en) 2024-02-29
CN112804534B (zh) 2022-03-01

Similar Documents

Publication Publication Date Title
CN112866709B (zh) 一种编解码方法、装置及其设备
US20240073437A1 (en) Encoding and decoding method and apparatus, and devices
JP2024045191A (ja) 符号化及び復号方法、装置及びデバイス

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right