KR20220003037A - 인터 예측 방법 및 장치 - Google Patents

인터 예측 방법 및 장치 Download PDF

Info

Publication number
KR20220003037A
KR20220003037A KR1020217038708A KR20217038708A KR20220003037A KR 20220003037 A KR20220003037 A KR 20220003037A KR 1020217038708 A KR1020217038708 A KR 1020217038708A KR 20217038708 A KR20217038708 A KR 20217038708A KR 20220003037 A KR20220003037 A KR 20220003037A
Authority
KR
South Korea
Prior art keywords
block
motion vector
subblock
reference frame
processed
Prior art date
Application number
KR1020217038708A
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 KR20220003037A publication Critical patent/KR20220003037A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • 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/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

본 출원은 처리될 블록이 하나 이상의 서브블록을 포함하는 인터 예측 방법을 개시하며, 상기 인터 예측 방법은, 상기 처리될 블록의 공간적으로 이웃하는 블록에 기초하여 상기 처리될 블록의 시간 오프셋 벡터를 결정하는 단계 - 상기 시간 오프셋 벡터는 상기 처리될 블록의 서브블록의 병치된 서브블록 결정하는 데 사용됨 -; 및 상기 병치된 서브블록의 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 결정하는 단계 - 상기 처리될 블록의 서브블록의 움직임 벡터는, 상기 병치된 서브블록의 움직임 벡터가 이용 불가능한 경우 제1 미리 설정된 움직임 벡터에 기초하여 획득됨 -를 포함한다. 본 출원은 코딩 시에 예측의 정확도를 향상시키고 코딩 효율을 증대시킨다.

Description

인터 예측 방법 및 장치
본 출원은 2019년 5월 17일에 중국 국가지식산권국에 출원된 "INTER PREDICTION METHOD AND APPARATUS(인터 예측 방법 및 장치)"라는 명칭의 중국 특허출원 제201910414914.5호에 대한 우선권을 주장하며, 그 내용 전체가 인용에 의해 본 출원에 통합된다.
본 발명은 비디오 코딩 분야에 관한 것으로, 특히 비디오 픽처의 인터 예측 방법 및 장치에 관한 것이다.
디지털 비디오 능력은 디지털 텔레비전, 디지털 라이브 방송 시스템, 무선 방송 시스템, 개인 휴대 정보 단말기(personal digital assistant, PDA), 랩톱 또는 데스크톱 컴퓨터, 태블릿 컴퓨터, 전자책 리더, 디지털 카메라, 디지털 기록 장치, 디지털 미디어 플레이어, 비디오 게임 장치, 비디오 게임 콘솔, 셀룰러 또는 위성 무선 전화(소위 "스마트폰"), 화상 회의 장치, 비디오 스트리밍 장치 등을 포함하는 다양한 장치에 통합될 수 있다. 디지털 비디오 장치는, 예를 들어 MPEG-2, MPEG-4, ITU-T H.263 및 ITU-T H.264/MPEG-4 Part 10에서 정의한 표준에 기술된 비디오 압축 기술: 고급 비디오 코딩(advanced video coding, AVC), 비디오 코딩 표준 H.265/고효율 비디오 코딩(high efficiency video coding, HEVC) 표준 및 이러한 표준의 확장과 같은, 비디오 압축 기술을 구현한다. 비디오 장치는 이러한 비디오 압축 기술을 구현함으로써 디지털 비디오 정보를 보다 효율적으로 송신, 수신, 인코딩, 디코딩 및/또는 저장할 수 있다.
비디오 압축 기술은 비디오 시퀀스에서 고유의 중복성(inherent redundancy)을 줄이거나 제거하기 위해 공간(인트라 픽처) 예측 및/또는 시간(인터 픽처) 예측을 수행하는 데 사용된다. 블록 기반 비디오 코딩에서, 비디오 슬라이스(즉, 비디오 프레임 또는 비디오 프레임의 일부)는 픽처 블록들로 파티셔닝되고, 픽처 블록은 또한 트리 블록, 코딩 유닛(coding unit, CU) 및/또는 코딩 노드(coding node)로도 지칭된다. 픽처의 인트라 코딩될(I) 슬라이스 내의 픽처 블록은 동일한 픽처 내의 이웃 블록에 있는 참조 샘플에 기초한 공간 예측을 통해 코딩된다. 픽처의 인터 코딩될(P 또는 B) 슬라이스 내의 픽처 블록은 동일한 픽처 내의 이웃 블록의 참조 샘플에 기초한 공간 예측을 통해 코딩될 수 있거나 다른 픽처 내의 참조 샘플에 기초한 시간 예측이 사용될 수 있다. 픽처는 프레임으로 지칭될 수 있고, 참조 픽처는 참조 프레임으로 지칭될 수 있다.
본 출원의 실시예는 비디오 픽처에 대한 인터 예측 방법 및 장치, 그리고 대응하는 인코더 및 디코더를 제공하여, 픽처 블록의 움직임 정보 예측의 정확도를 향상시키면서 구현 복잡도를 감소시킨다.
제1 측면에 따르면, 본 출원 일 실시예는 인터 예측 방법이 제공되며, 여기서 처리될 블록은 하나 이상의 서브블록을 포함하고, 상기 인터 예측 방법은, 상기 처리될 블록의 공간적으로 이웃하는 블록에 기초하여 상기 처리될 블록의 시간 오프셋 벡터(temporal offset vector)를 결정하는 단계 - 상기 시간 오프셋 벡터는 상기 처리될 블록의 서브블록의 병치된 서브블록(collocated subblock)을 결정하는 데 사용됨 -; 및 상기 병치된 서브블록의 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 결정하는 단계 - 상기 처리될 블록의 서브블록의 움직임 벡터는, 상기 병치된 서브블록의 움직임 벡터가 이용 불가능한 경우 제1 미리 설정된 움직임 벡터에 기초하여 획득됨 -를 포함한다.
이 구현에서, 움직임 벡터는 서브블록에 기초하여 획득된다. 이는 움직임 벡터 예측의 정확도를 향상시키고 코딩 효율을 증대시킨다. 또한, 서브블록의 움직임 벡터는 병치된 서브블록의 움직임 벡터를 이용 불가능한 경우 미리 설정된 움직임 벡터에 기초하여 획득된다. 디폴트 움직임 벡터를 도출하는 방법에 비해, 이 구현은 구현 복잡도를 감소시킨다.
실현 가능한 구현에서, 상기 처리될 블록의 공간적으로 이웃하는 블록에 기초하여 상기 처리될 블록의 시간 오프셋 벡터를 결정하는 단계는, 미리 설정된 순서로, 복수의 제1 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터가 이용 가능한지를, 움직임 벡터가 상기 미리 설정된 순서에서 이용 가능한 첫 번째 공간적으로 이웃한 블록의 움직임 벡터가 획득될 때까지, 순차적으로 확인하는 단계; 및 움직임 벡터가 상기 미리 설정된 순서대로 이용 가능한 상기 첫 번째 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계를 포함한다.
이 구현에서, 시간 오프셋 벡터는 복수의 공간적으로 이웃하는 블록을 사용하여 획득된다. 이러한 방식으로 예측 객체의 공간적 상관관계가 충분히 활용된다.
실현 가능한 구현에서, 상기 복수의 제1 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 모두 이용 불가능한 경우, 제2 미리 설정된 움직임 벡터가 상기 시간 오프셋 벡터로서 사용된다.
실현 가능한 구현에서, 상기 제2 미리 설정된 움직임 벡터는 영(zero) 움직임 벡터이다.
이 구현에서, 영 움직임 벡터는 복수의 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 이용 불가능한 경우에 대안 방안으로 사용된다. 이는 구현 복잡도를 감소시킨다.
실현 가능한 구현에서, 상기 처리될 블록의 공간적으로 이웃하는 블록에 기초하여 상기 처리될 블록의 시간 오프셋 벡터를 결정하는 단계는, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터 및 참조 프레임을 획득하는 단계 - 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 이용 가능함 -; 및 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계를 포함한다.
이 구현에서, 시간 오프셋 벡터는 미리 설정된 위치의 공간적으로 이웃하는 블록을 사용하여 획득된다. 이것은 전술한 실시예의 확인 단계를 건너뛰고, 구현 복잡도를 더욱 감소시킨다.
실현 가능한 구현에서, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터가 이용 불가능한 경우, 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로서 사용한다.
실현 가능한 구현에서, 상기 제3 미리 설정된 움직임 벡터는 영(zero) 움직임 벡터이다.
이 구현에서, 영 움직임 벡터는 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 이용 불가능한 경우 대안 방안으로 사용된다. 이는 구현 복잡도를 감소시킨다.
실현 가능한 구현에서, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 움직임 벡터를 포함하고, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 상기 제1 방향 움직임 벡터에 대응하는 제1 방향 참조 프레임을 포함하고; 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계는, 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우, 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계를 포함한다.
실현 가능한 구현에서, 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다른 경우, 상기 인터 예측 방법은, 상기 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계를 포함한다.
실현 가능한 구현에서, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되는 경우, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제2 참조 프레임 목록에 기초하는 제2 방향 움직임 벡터를 더 포함하고, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 상기 제2 방향 움직임 벡터에 대응하는 제2 방향 참조 프레임을 포함하고; 상기 제1 방향 참조 프레임이 상기 처리될 블록의 대응하는 시간 블록이 위치하는 이미지 프레임과 다른 경우, 상기 인터 예측 방법은, 상기 제2 방향 참조 프레임이 상기 병치된 서브를록이 위치하는 이미지 프레임과 동일한 경우, 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로 사용하거나; 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치한 이미지 프레임과 다른 경우, 상기 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로 사용하는 단계를 더 포함한다.
실현 가능한 구현에서, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되는 경우, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 움직임 벡터 및 제2 참조 프레임 목록에 기초하는 제2 방향 움직임 벡터를 포함하고, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 제1 방향 움직임 벡터에 대응하는 제1 방향 참조 프레임 및 제2 방향 움직임 벡터에 대응하는 제2 방향 참조 프레임을 포함하고; 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계는, 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제2 참조 프레임 목록에서 획득되는 경우: 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계; 또는 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제1 참조 프레임 목록에서 획득되는 경우: 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계를 포함한다.
실현 가능한 구현에서, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계는, 상기 병치된 서브블록이 위치하는 이미지 프레임 상기 제2 참조 프레임 목록에서 획득되고, 상기 처리될 블록의 참조 프레임 목록 내의 모든 참조 프레임이 상기 처리될 블록이 위치하는 이미지 프레임 전에 표시되는 경우: 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계; 또는 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제1 참조 프레임 목록에서 획득되거나, 상기 처리될 블록의 참조 프레임 목록 내의 적어도 하나의 참조 프레임이 상기 처리될 블록이 위치하는 이미지 프레임 후에 표시되는 경우: 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계를 포함한다.
실현 가능한 구현에서, 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고, 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다른 경우 상기 제3 미리 설정된 움직임 벡터가 상기 시간 오프셋 벡터로서 사용된다.
전술한 구현은 시간 오프셋 벡터를 획득하는 다른 방법이며, 다른 성능 및 구현 복잡도를 갖는다. 구현 복잡도 요건에 기초하여 특정 구현이 선택될 수 있다.
실현 가능한 구현에서, 상기 병치된 서브블록이 위치하는 이미지 프레임의 색인으로서 상기 처리될 서브블록의 공간적으로 이웃하는 블록의 참조 프레임 목록에 있는 색인은 비트스트림을 파싱함으로써 획득된다.
이 구현에서, 병치된 서브블록이 위치하는 이미지 프레임을 선택하기 위한 복수의 가능성이 있다. 이는 코딩 성능을 향상시킨다.
실현 가능한 구현에서, 상기 공간적으로 이웃하는 블록의 움직임 벡터가 이용 불가능한 조건은 다음 항목: 상기 공간적으로 이웃하는 블록이 인코딩/디코딩되지 않음; 상기 공간적으로 이웃하는 블록에 대해 인트라 예측 모드 또는 인트라 블록 복사 모드(intra block copy mode)가 사용됨; 상기 공간적으로 인접한 블록이 존재하지 않음; 또는 상기 공간적으로 이웃하는 블록과 상기 처리될 블록이 상이한 코딩 영역에 위치함 중 하나 또는 조합을 포함한다.
실현 가능한 구현에서, 상기 코딩 영역은 픽처, 슬라이스, 타일 또는 타일 그룹을 포함한다.
실현 가능한 구현에서, 상기 처리될 블록의 서브블록의 움직임 벡터를 결정하는 단계 전에, 상기 인터 예측 방법은, 상기 병치된 서브블록의 미리 설정된 블록 내 위치(intra-block position)에 대응하는 움직임 벡터가 이용 가능한지를 판정하는 단계; 및 이에 상응하여, 상기 처리될 블록의 서브블록의 움직임 벡터를 결정하는 단계는, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능한 경우, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하거나; 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터를 이용 불가능한 경우, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하는 단계를 포함한다.
실현 가능한 구현에서, 상기 미리 설정된 블록 내 위치는 상기 병치된 서브블록의 기하학적 중심 위치이다.
이 구현에서, 기하학적 중심 위치가 미리 설정된 블록 내 위치로 사용되거나, 병치된 서브블록의 상단 좌측 모서리(top-left corner)와 같은 다른 블록 내 위치가 미리 설정된 블록 내 위치로 사용될 수 있다.
실현 가능한 구현에서, 상기 미리 설정된 블록 내 위치가 위치하는 예측 유닛에 대해 상기 인트라 예측 모드 또는 상기 인트라 블록 복사 모드를 사용하는 경우, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능하거나; 상기 미리 설정된 블록 내 위치가 위치하는 예측 유닛에 대해 인터 예측이 사용되는 경우, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능하다.
이 구현에서, 병치된 서브블록의 움직임 벡터가 이용 가능한지를 판정하는 데 예측 모드가 사용된다. 이는 구현 복잡도를 더욱 감소시킨다.
실현 가능한 구현에서, 상기 처리될 블록의 서브블록의 움직임 벡터가 제1 미리 설정된 움직임 벡터에 기초하여 획득되는 것은, 상기 제1 미리 설정된 움직임 벡터를 상기 처리될 블록의 서브블록의 움직임 벡터로서 사용하는 것을 포함한다.
실현 가능한 구현에서, 상기 제1 미리 설정된 움직임 벡터는 영 움직임 벡터이다.
이 구현에서, 병치된 서브블록의 움직임 벡터가 이용 불가능한 경우, 영 움직임 벡터는 처리될 블록의 서브블록의 움직임 벡터의 대안 방안으로서 사용된다. 이는 구현 복잡도를 더욱 감소시킨다.
실현 가능한 구현에서, 상기 서브블록의 움직임 벡터는 상기 제1 참조 프레임 목록에 기초하는 제1 방향 서브블록 움직임 벡터 및/또는 상기 제2 참조 프레임 목록에 기초하는 제2 방향 서브블록 움직임 벡터를 포함하고; 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능한 경우, 상기 처리될 블록의 서브블록의 움직임 벡터가 제1 미리 설정된 움직임 벡터에 기초하여 획득되는 것은, 상기 제1 방향 서브블록 움직임 벡터에 기초한 단방향 예측이 상기 처리될 블록의 서브블록에 대해 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 상기 제1 방향 서브블록 움직임 벡터를 획득하거나; 상기 제2 방향 서브블록 움직임 벡터에 기초한 단방향 예측이 상기 처리될 블록의 서브블록에 대해 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 상기 제2 방향 서브블록 움직임 벡터를 획득하는 것을 포함한다.
실현 가능한 구현에서, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능한 경우, 상기 처리될 블록의 서브블록의 움직임 벡터가 제1 미리 설정된 움직임 벡터에 기초하여 획득되는 것은, 상기 처리될 블록이 위치하는 코딩 영역의 예측 유형이 B형 예측인 경우, 상기 처리될 블록의 서브블록에 대해 양방향 예측이 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터와 상기 처리될 블록의 서브블록의 제2 방향 서브블록 움직임 벡터를 개별적으로 획득하거나; 상기 처리될 블록이 위치하는 디코딩 영역의 예측 유형이 P형 예측인 경우, 상기 처리될 블록의 서브블록에 대해 단방향 예측이 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터를 획득하는 것을 포함한다.
처리될 블록이 있는 코딩 영역의 예측 유형이 B형 예측이라는 것은, 처리될 블록이 위치하는 영역이 B형 영역임을 의미하는 것으로 이해되어야 한다. 예를 들어, 처리될 블록은 B 프레임, B 슬라이스, B 타일, B 타일 그룹 등에 위치한다. 이 경우, 처리될 블록에 대해 양방향 예측과 단방향 예측이 모두 허용된다. 처리될 블록이 위치하는 코딩 영역의 예측 유형이 P형 예측이라는 것은, 처리될 블록이 위치하는 영역이 P형 영역임을 의미한다. 예를 들어, 처리될 블록은 P 프레임, P 슬라이스, P 타일, P 타일 그룹 등에 위치한다. 이 경우, 처리될 블록에 대해 단방향 예측만 허용된다.
전술한 구현들은 병치된 서브블록의 움직임 벡터에 기초하여 처리될 블록의 서브블록을 획득하기 위한 서로 다른 방법이며, 상이한 성능 및 구현 복잡도을 갖는다. 구현 복잡도 요건에 따라 특정 구현이 선택될 수 있다.
실현 가능한 구현에서, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하는 단계는, 제1 시간 거리 차이와 제2 시간 거리 차이의 비율에 기초하여, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 대해 스케일링 처리를 수행하여, 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하는 단계를 포함하고, 상기 제1 시간 거리 차이는 상기 처리될 블록이 위치하는 이미지 프레임과 상기 처리될 블록의 참조 프레임 사이의 픽처 순서 카운트 차이(picture order count difference)이고, 상기 제2 시간 거리 차이는 상기 병치된 서브블록이 위치하는 이미지 프레임과 상기 병치된 서브블록의 참조 프레임 사이의 픽처 순서 카운트 차이이다.
실현 가능한 구현에서, 상기 처리될 블록의 참조 프레임 목록 내의 상기 처리될 블록의 참조 프레임 색인은 상기 비트스트림을 파싱함으로써 획득된다.
이 구현에서, 참조 프레임을 선택하기 위한 복수의 가능성이 있다. 이는 코딩 성능을 향상시킨다.
실현 가능한 구현에서, 상기 처리될 블록의 참조 프레임 목록 내의 상기 처리될 블록의 참조 프레임 색인은 0이다.
색인의 값이 프로토콜에 따라 인코더 측과 디코더 측에서 합의된 값인 경우, 관련 정보를 송신하기 위한 비트율이 감소된다.
실현 가능한 구현에서, 상기 인터 예측 방법은, 상기 처리될 블록의 서브블록의 움직임 벡터와 상기 처리될 블록의 참조 프레임에 기초하여 상기 처리될 블록의 서브블록에 대해 움직임 보상을 수행하여, 상기 처리될 블록의 서브블록의 예측 값을 획득하는 단계를 더 포함한다.
이 예측 모드는 복수의 가능한 인터 예측 모드 중 하나로 사용될 수 있고, 후보 예측 벡터 목록의 구축에 사용될 수 있으며, 처리될 블록의 재구축을 구현하기 위해, 병합(merge) 모드 또는 아핀(affine) 예측 모드와 같은, 다른 예측 모드와 결합될 수 있다.
제2 측면에 따르면, 본 출원의 일 실시예는 인터 예측 장치를 제공하며, 여기서 처리될 블록은 하나 이상의 서브블록을 포함하며, 상기 인터 예측 장치는,
상기 처리될 블록의 공간적으로 이웃하는 블록에 기초하여 상기 처리될 블록의 시간 오프셋 벡터를 결정하도록 구성된 오프셋 획득 모듈 - 상기 시간 오프셋 벡터는 상기 처리될 블록의 서브블록의 병치된 서브블록을 결정하는 데 사용됨 -; 및 상기 병치된 서브블록의 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 결정하도록 구성된 움직임 벡터 획득 유닛 - 상기 처리될 블록의 서브블록의 움직임 벡터는, 상기 병치된 서브블록의 움직임 벡터가 이용 불가능한 경우 제1 미리 설정된 움직임 벡터에 기초하여 획득됨 -을 포함한다.
실현 가능한 구현에서, 상기 오프셋 획득 모듈은 구체적으로, 미리 설정된 순서로, 복수의 제1 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터가 이용 가능한지를, 움직임 벡터가 상기 미리 설정된 순서로 이용 가능한 첫 번째 공간적으로 이웃한 블록의 움직임 벡터가 획득될 때까지, 순차적으로 확인하고; 움직임 벡터가 상기 미리 설정된 순서대로 이용 가능한 상기 제1 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 상기 오프셋 획득 모듈은 구체적으로, 상기 복수의 제1 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 모두 이용 불가능한 경우, 제2 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 상기 제2 미리 설정된 움직임 벡터는 영 움직임 벡터이다.
실현 가능한 구현에서, 상기 오프셋 획득 모듈은 구체적으로, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터 및 참조 프레임을 획득하고 - 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 이용 가능함 -; 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 상기 오프셋 획득 모듈은 구체적으로, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터가 이용 불가능한 경우, 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 상기 제3 미리 설정된 움직임 벡터는 영 움직임 벡터이다.
실현 가능한 구현에서, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 움직임 벡터를 포함하고, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 상기 제1 방향 움직임 벡터에 대응하는 제1 방향 참조 프레임을 포함하고; 상기 오프셋 획득 모듈은 구체적으로, 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우, 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다른 경우, 상기 오프셋 획득 모듈은 구체적으로, 상기 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되는 경우, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제2 참조 프레임 목록에 기초하는 제2 방향 움직임 벡터를 더 포함하고, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 상기 제2 방향 움직임 벡터에 대응하는 제2 방향 참조 프레임을 포함하고; 상기 제1 방향 참조 프레임이 상기 처리될 블록의 대응하는 시간 블록이 위치하는 이미지 프레임과 다른 경우, 상기 오프셋 획득 모듈은 구체적으로, 상기 제2 방향 참조 프레임이 상기 병치된 서브를록이 위치하는 이미지 프레임과 동일한 경우, 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로 사용하거나; 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치한 이미지 프레임과 다른 경우, 상기 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로 사용하도록 구성된다.
실현 가능한 구현에서, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되는 경우, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 움직임 벡터 및 제2 참조 프레임 목록에 기초하는 제2 방향 움직임 벡터를 포함하고, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 제1 방향 움직임 벡터에 대응하는 제1 방향 참조 프레임 및 제2 방향 움직임 벡터에 대응하는 제2 방향 참조 프레임을 포함하고; 상기 오프셋 획득 모듈은 구체적으로, 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제2 참조 프레임 목록에서 획득되는 경우, 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성되거나; 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제1 참조 프레임 목록에서 획득되는 경우, 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 상기 오프셋 획득 모듈은 구체적으로, 상기 병치된 서브블록이 위치하는 이미지 프레임 상기 제2 참조 프레임 목록에서 획득되고, 상기 처리될 블록의 참조 프레임 목록 내의 모든 참조 프레임이 상기 처리될 블록이 위치하는 이미지 프레임 전에 표시되는 경우, 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성되거나; 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제1 참조 프레임 목록에서 획득되거나, 상기 처리될 블록의 참조 프레임 목록 내의 적어도 하나의 참조 프레임이 상기 처리될 블록이 위치하는 이미지 프레임 후에 표시되는 경우, 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 상기 오프셋 획득 모듈은 구체적으로, 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고, 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다른 경우 상기 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로 사용하도록 구성된다.
실현 가능한 구현에서, 상기 병치된 서브블록이 위치하는 이미지 프레임의 색인으로서 상기 처리될 서브블록의 공간적으로 이웃하는 블록의 참조 프레임 목록에 있는 색인은 비트스트림을 파싱함으로써 획득된다.
실현 가능한 구현에서, 상기 공간적으로 이웃하는 블록의 움직임 벡터가 이용 불가능한 조건은 다음 항목: 상기 공간적으로 이웃하는 블록이 인코딩/디코딩되지 않음; 상기 공간적으로 이웃하는 블록에 대해 인트라 예측 모드 또는 인트라 블록 복사 모드가 사용됨; 상기 공간적으로 인접한 블록이 존재하지 않음; 또는 상기 공간적으로 이웃하는 블록과 상기 처리될 블록이 상이한 코딩 영역에 위치함 중 하나 또는 조합을 포함한다.
실현 가능한 구현에서, 상기 코딩 영역은 픽처, 슬라이스, 타일 또는 타일 그룹을 포함한다.
실현 가능한 구현에서, 상기 인터 예측 장치는, 상기 병치된 서브블록의 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능한지를 판정하도록 구성된 판정 모듈; 및 이에 상응하여, 상기 움직임 벡터 획득 모듈은 구체적으로, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능한 경우, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하거나; 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터를 이용 불가능한 경우, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하도록 구성된다.
실현 가능한 구현에서, 상기 미리 설정된 블록 내 위치는 상기 병치된 서브블록의 기하학적 중심 위치이다.
실현 가능한 구현에서, 상기 미리 설정된 블록 내 위치가 위치하는 예측 유닛에 대해 상기 인트라 예측 모드 또는 상기 인트라 블록 복사 모드를 사용하는 경우, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능하거나; 상기 미리 설정된 블록 내 위치가 위치하는 예측 유닛에 대해 인터 예측이 사용되는 경우, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능하다.
실현 가능한 구현에서, 상기 움직임 벡터 획득 모듈은 구체적으로, 상기 제1 미리 설정된 움직임 벡터를 상기 처리될 블록의 서브블록의 움직임 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 상기 제1 미리 설정된 움직임 벡터는 영 움직임 벡터이다.
실현 가능한 구현에서, 상기 서브블록의 움직임 벡터는 상기 제1 참조 프레임 목록에 기초하는 제1 방향 서브블록 움직임 벡터 및/또는 상기 제2 참조 프레임 목록에 기초하는 제2 방향 서브블록 움직임 벡터를 포함하고; 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능한 경우, 상기 움직임 벡터 획득 모듈은 구체적으로, 상기 제1 방향 서브블록 움직임 벡터에 기초한 단방향 예측이 상기 처리될 블록의 서브블록에 대해 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 상기 제1 방향 서브블록 움직임 벡터를 획득하거나; 상기 제2 방향 서브블록 움직임 벡터에 기초한 단방향 예측이 상기 처리될 블록의 서브블록에 대해 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 상기 제2 방향 서브블록 움직임 벡터를 획득하도록 구성된다.
실현 가능한 구현에서, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능한 경우, 상기 움직임 벡터 획득 모듈은 구체적으로, 상기 처리될 블록이 위치하는 코딩 영역의 예측 유형이 B형 예측인 경우, 상기 처리될 블록의 서브블록에 대해 양방향 예측이 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터와 상기 처리될 블록의 서브블록의 제2 방향 서브블록 움직임 벡터를 개별적으로 획득하거나; 상기 처리될 블록이 위치하는 디코딩 영역의 예측 유형이 P형 예측인 경우, 상기 처리될 블록의 서브블록에 대해 단방향 예측이 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터를 획득하도록 구성된다.
실현 가능한 구현에서, 상기 움직임 벡터 획득 모듈은 구체적으로, 제1 시간 거리 차이와 제2 시간 거리 차이의 비율에 기초하여, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 대해 스케일링 처리를 수행하여, 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하도록 구성되고, 상기 제1 시간 거리 차이는 상기 처리될 블록이 위치하는 이미지 프레임과 상기 처리될 블록의 참조 프레임 사이의 픽처 순서 카운트 차이이고, 상기 제2 시간 거리 차이는 상기 병치된 서브블록이 위치하는 이미지 프레임과 상기 병치된 서브블록의 참조 프레임 사이의 픽처 순서 카운트 차이이다.
실현 가능한 구현에서, 상기 처리될 블록의 참조 프레임 목록 내의 상기 처리될 블록의 참조 프레임 색인은 상기 비트스트림을 파싱함으로써 획득된다.
실현 가능한 구현에서, 상기 처리될 블록의 참조 프레임 목록 내의 상기 처리될 블록의 참조 프레임 색인은 0이다.
실현 가능한 구현에서, 상기 인터 예측 장치는, 상기 처리될 블록의 서브블록의 움직임 벡터와 상기 처리될 블록의 참조 프레임에 기초하여 상기 처리될 블록의 서브블록에 대해 움직임 보상을 수행하여, 상기 처리될 블록의 서브블록의 예측 값을 획득하도록 구성된 움직임 보상 모듈을 더 포함한다.
제3 측면에 따르면, 본 출원의 일 실시예는 비디오 인코더를 제공한다. 상기 비디오 인코더는 픽처 블록을 인코딩하도록 구성되며, 본 출원의 제2 측면의 실시예에 따른 인터 예측 장치 - 상기 인터 예측 장치는, 타깃 후보 움직임 정보에 기초하여 현재 인코딩 픽처 블록의 움직임 정보를 예측하고, 상기 현재 인코딩 픽처 블록의 움직임 정보에 기초하여 상기 현재 인코딩 픽처의 예측된 픽셀 값을 결정하도록 구성됨 -;
상기 타깃 후보 움직임 정보의 색인 식별자를 비트스트림으로 인코딩하도록 구성된 엔트로피 인코딩 모듈 - 상기 색인 식별자는 상기 현재 인코딩 픽처 블록에 사용되는 타깃 후보 움직임 정보를 지시함 -; 및
상기 예측된 픽셀 값에 기초하여 상기 현재 인코딩 픽처 블록을 재구축하도록 구성된 재구축 모듈을 포함한다.
제4 측면에 따르면, 본 출원의 실시예는 비디오 디코더를 제공한다. 상기 비디오 디코더는 비트스트림으로부터 픽처 블록을 디코딩하도록 구성되며, 상기 비트스트림으로부터 색인 식별자를 디코딩하도록 구성된 엔트로피 디코딩 모듈 - 상기 색인 식별자는 현재 디코딩 픽처 블록의 타깃 후보 움직임 정보를 지시하는 데 사용됨 -; 본 출원 실시예의 제2 측면에 따른 인터 예측 장치 - 상기 인터 예측 장치는, 상기 색인 식별자에 의해 지시되는 상기 타깃 후보 움직임 정보에 기초하여 상기 현재 디코딩 픽처 블록의 움직임 정보를 예측하고, 상기 현재 디코딩 픽처 블록의 움직임 정보에 기초하여 상기 현재 디코딩 픽처 블록의 예측된 픽셀 값을 결정하도록 구성됨 -; 및 상기 예측된 픽셀 값에 기초하여 상기 현재 디코딩 픽처 블록을 재구축하도록 구성된 재구축 모듈을 포함한다.
제5 측면에 따르면, 본 출원의 일 실시예는 서로 결합된 비휘발성 메모리 및 프로세서를 포함하는 인코딩 기기를 제공한다. 상기 프로세서는 상기 메모리에 저장된 프로그램 코드를 호출하여, 제 측면에 따른 방법의 단계 중 일부 또는 전부를 수행한다.
제6 측면에 따르면, 본 출원의 일 실시예는 서로 결합된 비휘발성 메모리 및 프로세서를 포함하는 디코딩 기기를 제공한다. 상기 프로세서는 메모리에 저장된 프로그램 코드를 호출하여, 제1 측면에 따른 방법의 단계의 일부 또는 전부를 수행한다.
제7 측면에 따르면, 본 출원의 일 실시예는 컴퓨터로 판독 가능한 저장 매체를 제공한다. 상기 컴퓨터로 판독 가능한 저장 매체는 프로그램 코드를 저장하고, 상기 프로그램 코드는 제1 측면에 따른 임의의 방법의 단계의 일부 또는 전부를 수행하는 데 사용되는 명령어를 포함한다.
제8 측면에 따르면, 본 출원의 실시예는 컴퓨터 프로그램 제품을 제공한다. 상기 컴퓨터 프로그램 제품은 컴퓨터상에서 실행될 때, 상기 컴퓨터는 제1 측면에 따른 임의의 방법의 단계의 일부 또는 전부를 수행할 수 있게 된다.
제9 측면에 따르면, 본 출원의 일 실시예는 처리될 블록이 하나 이상의 서브블록을 포함하는 인터 예측 방법을 제공하며, 상기 인터 예측 방법은, 상기 처리될 블록의 공간적으로 이웃하는 블록을 획득하는 단계; 및 상기 공간적으로 이웃하는 블록에 기초하여 시간 오프셋 벡터를 획득하는 단계 - 상기 시간 오프셋 벡터는 상기 처리될 블록의 서브블록의 병치된 서브블록을 결정하는 데 사용됨 -를 포함하고, 상기 공간적으로 이웃하는 블록이 제1 참조 프레임 목록에 위치한 제1 방향 참조 프레임을 갖고, 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제1 방향 참조 프레임과 동일한 경우, 상기 시간 오프셋 벡터는 상기 공간적으로 이웃하는 블록의 제1 방향 움직임 벡터이고, 상기 제1 방향 움직임 벡터는 상기 제1 방향 참조 프레임에 대응한다.
실현 가능한 구현에서, 상기 공간적으로 이웃하는 블록이 상기 제1 참조 프레임 목록에 위치한 상기 제1 방향 참조 프레임을 갖지 않거나, 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제1 방향 참조 프레임과 상이한 경우, 상기 인터 예측 방법은, 상기 공간적으로 이웃하는 블록이 제2 참조 프레임 목록에 위치한 제2 방향 참조 프레임을 갖고, 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제2 방향 참조 프레임과 동일한 경우, 상기 시간 오프셋 벡터는 상기 공간적으로 이웃하는 블록의 제2 방향 움직임 벡터이고, 상기 제2 방향 움직임 벡터는 상기 제2 방향 참조 프레임에 대응하는 것을 더 포함한다.
실현 가능한 구현에서, 상기 처리될 블록의 공간적으로 이웃하는 블록을 획득하는 단계는, 상기 공간적으로 이웃하는 블록이 이용 가능한지를 확인하는 단계; 및 상기 공간적으로 이웃하는 블록이 이용 가능한 경우 상기 공간적으로 이웃하는 블록을 획득하는 단계를 포함한다.
실현 가능한 구현에서, 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제1 방향 참조 프레임과 동일한 것은, 상기 병치된 서브블록이 위치하는 이미지 프레임의 POC가 상기 제1 방향 참조 프레임의 POC와 동일한 것을 포함한다.
실현 가능한 구현에서, 상기 병치된 서브블록이 위치한 이미지 프레임이 상기 제2 방향 참조 프레임과 동일한 것은, 상기 병치된 서브블록이 위치하는 이미지 프레임의 POC가 상기 제2 방향 참조 프레임의 POC와 동일한 것을 포함한다.
실현 가능한 구현에서, 상기 인터 예측 방법은, 비트스트림을 파싱하여 상기 병치된 서브블록이 위치하는 이미지 프레임의 색인 정보를 획득하는 단계를 더 포함한다.
실현 가능한 구현에서, 상기 인터 예측 방법은, 상기 처리될 블록과 미리 설정된 관계를 갖는 이미지 프레임을 상기 병치된 서브블록이 위치하는 이미지 프레임으로서 사용하는 단계를 더 포함한다.
실현 가능한 구현에서, 상기 미리 설정된 관계는, 상기 병치된 서브블록이 위치하는 이미지 프레임이 디코딩 순서에서 상기 처리될 블록이 위치한 이미지 프레임에 인접하고, 상기 처리될 블록이 위치하는 이미지 프레임보다 먼저 디코딩되는 것을 포함한다.
실현 가능한 구현에서, 상기 미리 설정된 관계는, 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 처리될 블록의 제1 방향 참조 프레임 목록 또는 제2 방향 참조 프레임 목록에서 참조 프레임 색인이 0인 참조 프레임인 것을 포함한다.
실현 가능한 구현에서, 상기 공간적으로 이웃하는 블록이 상기 제2 참조 프레임 목록에 위치한 제2 방향 참조 프레임을 갖지 않거나, 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제2 방향 참조 프레임과 다른 경우, 상기 인터 예측 방법은, 상기 시간 오프셋 벡터로서 영 움직임 벡터를 사용하는 단계를 더 포함한다.
제10 측면에 따르면, 본 출원의 일 실시예는 서로 결합된 비휘발성 메모리 및 프로세서를 포함하는 비디오 코딩 기기를 제공한다. 상기 프로세서는 상기 메모리에 저장된 프로그램 코드를 호출하여, 제9 측면에 기술된 방법을 수행한다.
본 출원의 제2 측면 내지 제10 측면에서의 기술적 방안은 제1 측면의 기술적 방안과 일치한다는 것을 이해해야 한다. 다양한 측면에서 달성되는 유익한 효과와 대응하는 가능한 구현은 유사하며, 세부 사항은 다시 설명하지 않는다.
본 출원의 실시예의 기술적 방안 또는 배경기술을 보다 명확하게 설명하기 위해, 이하에서는 본 출원의 실시예 또는 배경기술을 설명하기 위한 첨부 도면을 간략하게 설명한다.
도 1a는 본 발명의 일 실시예를 구현하기 위한 비디오 인코딩 및 디코딩 시스템(10)의 일례의 블록도이다.
도 1b는 본 발명의 일 실시예를 구현하기 위한 비디오 코딩 시스템(40)의 일례의 블록도이다.
도 2는 본 발명의 일 실시예를 구현하기 위한 인코더(20)의 예시적인 구성 블록도이다.
도 3은 본 발명의 일 실시예를 구현하기 위한 디코더(30)의 예시적인 구성 블록도이다.
도 4는 본 발명의 일 실시예를 구현하기 위한 비디오 코딩 기기(400)의 일례의 블록도이다.
도 5는 본 발명의 일 실시예를 구현하기 위한 인코딩 장치 또는 디코딩 장치의 다른 예의 블록도이다.
도 6은 본 발명의 일 실시예를 구현하기 위해 사용되는 공간적으로 이웃하는 블록 및 시간적 참조 블록의 예의 개략도이다.
도 7은 본 발명의 일 실시예를 구현하기 위한 AMVP 예측 모드의 일례의 개략도이다.
도 8은 본 발명의 일 실시예를 구현하기 위한 서브블록의 일례의 개략도이다.
도 9는 본 발명의 일 실시예를 구현하기 위한 인터 예측 방법의 일례의 흐름도이다.
도 10은 본 발명의 일 실시예를 구현하기 위한 움직임 벡터 스케일링 처리의 일례의 개략도이다.
도 11은 본 발명의 실시예를 구현하기 위해 사용되는 처리될 블록의 서브블록 및 서브블록의 병치 서브블록의 예의 개략도이다.
도 12는 본 발명의 일 실시예를 구현하기 위한 다른 인터 예측 방법의 일례의 흐름도이다.
도 13은 본 발명의 일 실시예를 구현하기 위한 인터 예측 장치의 일례의 블록도이다.
이하에서는 본 발명의 실시예에서 첨부도면을 참조하여 본 발명의 실시예를 설명한다. 이하의 설명에서는, 본 개시의 일부를 형성하고, 예시로서, 본 발명의 실시예의 특정 측면 또는 본 발명의 실시예가 사용될 수 있는 특정 측면을 도시한 첨부 도면을 참조한다. 본 발명의 실시예는 다른 측면에서 사용될 수 있고, 첨부 도면에 도시되지 않은 구조적 또는 논리적 변경을 포함할 수 있음을 이해해야 한다. 따라서, 이하의 상세한 설명은 한정적인 의미로 이해해서는 안 되며, 본 발명의 범위는 첨부된 청구 범위에 의해 정의된다. 예를 들어, 설명된 방법과 관련된 개시 내용은 또한 그 방법을 수행하도록 구성된 대응하는 기기 또는 시스템에도 적용 가능하며, 그 반대의 경우도 마찬가지임을 이해해야 한다. 예를 들어, 하나 이상의 구체적인 방법 단계들이 기술되면, 대응하는 기기는 기술된 하나 또는 이상의 방법 단계를 수행하기 위한 기능 유닛과 같은 하나 이상의 유닛(예: 하나의 유닛이 하나 이상의 단계를 수행하거나; 복수의 유닛, 그 각각이 복수의 단계 중 하나 이상을 수행)을, 그러한 하나 이상의 유닛이 첨부 도면에 명시적으로 기술되거나 예시되지 않더라도 포함할 수 있다, 또한, 예를 들어, 특정 장치가 하나 이상의 유닛, 예컨대 기능 유닛에 기초하여 기술되면, 대응하는 방법은 하나 이상의 유닛의 기능을 수행하는 데 사용되는 단계(예: 하나 이상의 유닛의 하나 이상의 기능을 수행하는 데 사용되는 하나의 단계; 또는 각각이 복수의 유닛 중 하나 이상의 유닛의 하나 이상의 기능을 수행하는 데 사용되는 복수의 단계)를, 그러한 하나 이상의 단계가 첨부 도면에 명시적으로 기술되거나 예시되지 않더라도, 포함할 수 있다. 또한, 본 명세서에 기술된 다양한 예시적인 실시예 및/또는 측면의 특징은 특별히 달리 언급되지 않는 한 서로 결합될 수 있음을 이해해야 한다.
본 발명의 실시예에서의 기술적 방안은 기존의 비디오 코딩 표준(예: H.264 및 HEVC와 같은 표준)에 적용될 수 있을 뿐만 아니라, 미래의 비디오 코딩 표준(예: H.266 표준)에도 적용될 수 있다. 본 발명의 실시예에서 사용되는 용어는 단지 본 발명의 구체적인 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 이하에서는 먼저 본 발명의 실시예에서 사용될 수 있는 몇 가지 개념을 간략하게 설명한다.
비디오 코딩은 보통 픽처의 시퀀스(sequence of picture)를 처리하는 것을 말하며, 픽처의 시퀀스는 비디오 또는 비디오 시퀀스를 형성한다. 비디오 코딩 분야에서, "픽처(picture)", "프레임(frame)" 및 "이미지(image)"라는 용어는 동의어로 사용될 사용될 수 있다. 본 명세서에서 비디오 코딩은 비디오 인코딩 또는 비디오 디코딩을 가리킨다. 비디오 인코딩은 근원지(source) 측에서 수행되며, 보통 더 효율적인 저장 및/또는 송신을 위해, 비디오 픽처를 표현하기 위한 데이터의 양을 줄이기 위해 원본 비디오 픽처(original video picture)를 처리(예: 압축)하는 것을 포함한다. 비디오 디코딩은 목적지(destination) 측에서 수행되며, 보통 픽처를 재구축하기 위해 인코더와 대비하여 역 처리를 포함한다. 실시예에서의 비디오 픽처의 "코딩"은 비디오 시퀀스의 "인코딩" 또는 "디코딩"으로 이해되어야 한다. 인코딩 부분과 디코딩 부분의 조합은 코딩(인코딩 및 디코딩)으로도 지칭된다.
비디오 시퀀스는 픽처(picture)의 시퀀스를 포함하고, 픽처는 슬라이스(slice)로 더 분할되고, 슬라이스는 블록(block)으로 더 분할된다. 비디오 코딩은 블록으로 수행된다. 일부 새로운 비디오 코딩 표준에서, "블록"이라는 개념이 더욱 확장된다. 예를 들어, H.264 표준에는 매크로블록(macroblock, MB)이 있고, 매크로블록은 예측 코딩(predictive coding)에 사용될 수 있는 복수의 예측 블록(파티션, partition)으로 더 분할될 수 있다. 고효율 비디오 코딩(high efficiency video coding, HEVC) 표준에서, 복수의 블록 유닛은 코딩 유닛(coding unit, CU), 예측 유닛(prediction unit, PU), 및 변환 유닛(transform unit, TU)과 같은 기본 개념을 사용하여 기능에 기초하여 분류되고, 새로운 트리 기반 구조를 사용하여 설명된다. 예를 들어, CU는 사지 트리(quadtree)에 기초하여 더 작은 CU로 분할될 수 있고, 더 작은 CU는 사지 트리 구조를 생성하기 위해 더 분할될 수 있다. CU는 코딩 픽처를 분할 및 인코딩을 위한 기본 단위(basic unit)이다. PU와 TU도 유사한 트리 구조를 가지고 있다. PU는 예측 블록에 대응할 수 있으며, 예측 코딩을 위한 기본 단위이다. CU는 분할 모드에서 복수의 PU로 더 분할된다. TU는 변환 블록에 대응할 수 있으며, 예측 잔차(prediction residual)를 변환하기 위한 기본 단위이다. 그러나 본질적으로, CU, PU, 및 TU는 모두 블록(또는 픽처 블록)의 개념이다.
예를 들어, HEVC에서, CTU는 코딩 트리로서 표현되는 사지 트리 구조를 사용함으로써 복수의 CU로 분할된다. 인터 픽처(시간) 또는 인트라 픽처(공간) 예측을 사용하여 픽처 영역을 코딩할지의 결정은 CU 레벨에서 내린다. 각각의 CU는 PU 분할 유형에 기초하여 1개, 2개 또는 4개의 PU로 더 분할될 수 있다. 하나의 PU에는 동일한 예측 프로세스가 적용되며, 관련 정보는 PU 단위로 디코더에 송신된다. PU 분할 유형에 기초한 예측 프로세스를 적용하여 잔차 블록을 획득한 후, CU는 CU에 사용된 코딩 트리와 유사한 다른 사지 트리 구조에 기초하여 변환 유닛(transform unit, TU)으로 파티셔닝될 수 있다. 최근 비디오 압축 기술의 발달로, 사지 트리 더기 이지 트리(Quadtree plus Binary Tree, QTBT) 파티션 프레임은 코딩 블록의 파티셔닝에 사용된다. QTBT 블록 구조에서, CU는 정사각형 또는 직사각형일 수 있다.
본 명세서에서, 설명 및 이해의 편의를 위해, 현재 코딩 픽처에서 코딩될 픽처 블록이 현재 블록으로 지칭될 수 있다. 예를 들어, 인코딩에서, 현재 블록은 인코딩 중인 블록이고, 디코딩에서, 현재 블록은 디코딩 중인 블록이다. 참조 픽처에서, 현재 블록을 예측하는 데 사용되는 디코딩된 픽처 블록을 참조 블록이라고 한다. 구체적으로, 참조 블록은 현재 블록에 참조 신호를 제공하는 블록이고, 참조 신호는 픽처 블록 내의 픽셀 값을 나타낸다. 참조 픽처에 있고 현재 블록에 예측 신호를 제공하는 블록은 예측 블록으로 지칭될 수 있다. 예측 신호는 예측 블록 내의 픽셀 값, 샘플링 값 또는 샘플링 신호를 나타낸다. 예를 들어, 복수의 참조 블록을 순회한 후, 최적의 참조 블록을 찾는다. 최적 참조 블록은 현재 블록에 대한 예측을 제공하며, 이 블록을 예측 블록으로 지칭한다.
무손실 비디오 코딩의 경우, 원본 비디오 픽처는 재구축될 수 있다. 즉, 재구축된 비디오 픽처는 원본 비디오 픽처과 동일한 품질을 갖는다(저장 또는 송신 중에 송신 손실이나 기타 데이터 손실이 발생하지 않는다고 가정). 손실 비디오 코딩의 경우, 비디오 픽처를 표현하는 데 필요한 데이터의 양을 줄이기 위해, 추가 압축이, 예컨대 양자화에 의해, 수행되며, 그 비디오 픽처는 디코더에서 완전하게 재구축될 수 없다, 즉 재구축된 비디오 픽처의 품질이 원본 비디오 픽처의 품질에 비해 낮거나 나쁘다.
몇몇 H.261 비디오 코딩 표준은 "손실 하이브리드 비디오 코덱"에 속한다(즉, 변환 도메인에서 양자화를 적용하기 위해 샘플 도메인(sample domain)의 공간 및 시간 예측과 2D 변환 코딩을 결합함). 비디오 시퀀스의 픽처 각각은 보통 중첩되지 않는(non-overlapping) 블록의 세트로 파티셔닝되고, 코딩은 보통 블록 레벨에서 수행된다. 다시 말해, 인코더 측에서, 비디오는 보통 블록(비디오 블록) 레벨에서 처리, 즉 인코딩된다. 예를 들어, 공간(인트라 픽처) 예측 및 시간(인터 픽처) 예측을 통해 예측 블록을 생성하고, 현재 블록(현재 처리되고 있거나 처리될 블록)에서 예측 블록을 감산하여 잔차 블록을 획득하고, 변환 도메인에서 잔차 블록을 변환 및 양자화하여 송신될(압축될) 데이터의 양을 감소시킨다. 디코더 측에서, 인코더와는 반대의 처리가 인코딩되거나 압축된 블록에 적용되어 표현을 위해 현재 블록을 재구축한다. 또한, 인코더는 디코더 처리 루프를 복제하여, 인코더와 디코더가 후속 블록을 처리, 즉 코딩하기 위해 동일한 예측(예: 인트라 예측 및 인터 예측) 및/또는 재구축 생성할 것이다.
다음은 본 발명의 실시예가 적용되는 시스템 아키텍처를 설명한다. 무화과. 도 1a는 본 발명의 실시예가 적용되는 비디오 인코딩 및 디코딩 시스템(10)의 일례의 개략적인 블록도이다. 도 1a에 도시된 바와 같이, 비디오 인코딩 및 디코딩 시스템(10)은 근원지 기기(source device)(12) 및 목적지 기기(destination device)(14)를 포함할 수 있다. 근원지 기기(12)는 인코딩된 비디오 데이터를 생성하므로, 근원지 기기(12)는 비디오 인코딩 장치로 지칭될 수 있다. 목적지 기기(14)는 근원지 기기(12)에 의해 생성된 인코딩된 비디오 데이터를 디코딩할 수 있으므로, 목적지 기기(14)는 비디오 디코딩 장치로 지칭될 수 있다. 다양한 구현 방안에서, 근원지 기기(12), 목적지 기기(14), 또는 근원지 기기(12)와 목적지 기기(14) 모두는 하나 이상의 프로세서 및 하나 이상의 프로세서에 결합된 메모리를 포함할 수 있다. 본 명세서에 기술한 바와 같이, 메모리로는 RAM, ROM, EEPROM, 플래시 메모리, 또는 컴퓨터에 의해 액세스 가능한 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하는 데 사용될 수 있는 기타 매체를 포함할 수 있지만, 이에 한정되지 않는다. 근원지 기기(12) 및 목적지 기기(14)는 데스크톱 컴퓨터, 모바일 컴퓨팅 장치, 노트북(예: 랩탑) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 소위 "스마트"폰이라고 하는 전화 핸드셋, 텔레비전, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 차량 장착형 컴퓨터, 무선 통신 장치 등을 포함할 수 있다.
도 1a는 근원지 기기(12)와 목적지 기기(14)를 별개의 기기로 나타내지만, 기기 실시예는 대안적으로 근원지 기기(12)와 목적지 기기(14)를 모두, 또는 근원지 기기(12) 와 목적지 기기(14) 모두의 기능, 즉 근원지 기기(12) 또는 대응하는 기능 및 목적지 기기(14) 또는 대응하는 기능을 포함할 수 있다. 이러한 실시예에서, 근원지 기기(12) 또는 대응하는 기능 및 목적지 기기(14) 또는 대응하는 기능은 동일한 하드웨어 및/또는 소프트웨어, 별개의 하드웨어 및/또는 소프트웨어, 또는 이들의 임의의 조합을 사용하여 구현될 수 있다.
근원지 기기(12)와 목적지 기기(14) 사이의 통신 연결은 링크(13)를 통해 구현될 수 있고, 목적지 기기(14)는 링크(13)를 통해 근원지 기기(12)로부터 인코딩된 비디오 데이터를 수신할 수 있다. 링크(13)는 인코딩된 비디오 데이터를 근원지 기기(12)로부터 목적지 기기(14)로 이동할 수 있는 하나 이상의 매체 또는 장치를 포함할 수 있다. 일례에서, 링크(13)는 근원지 기기(12)가 실시간으로 목적지 기기(14)에 인코딩된 비디오 데이터를 직접 송신할 수 있게 하는 하나 이상의 통신 매체를 포함할 수 있다. 이 예에서, 근원지 기기(12)는 통신 표준(예: 무선 통신 프로토콜)에 따라 인코딩된 비디오 데이터를 변조할 수 있고, 변조된 비디오 데이터를 목적지 기기(14)에 송신할 수 있다. 하나 이상의 통신 매체로는 무선 통신 매체 및/또는 유선 통신 매체, 예를 들어 무선 주파수(radio frequency, RF) 스펙트럼 또는 하나 이상의 물리 송신 케이블을 포함할 수 있다. 하나 이상의 통신 매체는 패킷 기반 네트워크의 일부를 구성할 수 있으며, 패킷 기반 네트워크는, 예를 들어, 근거리 통신망, 광역 통신망 또는 글로벌 통신망(예: 인터넷)일 수 있다. 하나 이상의 통신 매체는 라우터, 교환기, 기지국, 또는 근원지 기기(12)로부터 목적지 기기(14)로의 통신을 용이하게 하는 다른 기기를 포함할 수 있다.
근원지 기기(12)는 인코더(20)를 포함한다. 선택적으로, 근원지 기기(12)는 픽처 소스(16), 픽처 전처리기(18), 및 통신 인터페이스(22)를 더 포함할 수 있다. 특정 구현 형태에서, 인코더(20), 픽처 소스(16), 픽처 전처리기(18) 및 통신 인터페이스(22)는 근원지 기기(12)의 하드웨어 구성요소일 수 있거나, 근원지 기기(12)의 소프트웨어 프로그램일 수 있다. 설명은 다음과 같이 별도로 제공된다. 픽처 소스(16)는, 예를 들어, 현실 세계 픽처를 캡처하도록 구성된 임의의 유형의 캡처 기기; 및/또는 픽처 또는 코멘트(화면 콘텐츠 코딩의 경우, 화면의 일부 텍스트는 코딩될 픽처 또는 이미지의 일부로도 간주됨)를 생성하기 위한 임의의 유형의 기기, 예를 들어, 컴퓨터 애니메이션 픽처를 생성하도록 구성된 컴퓨터 그래픽 처리 유닛; 또는 현실 세계 픽처 또는 컴퓨터 애니메이션 픽처(예: 화면 콘텐츠 또는 가상 현실(virtual reality, VR) 픽처), 및/또는 이들의 임의의 조합(예: 증강 현실(augmented reality, AR) 픽처)를 획득 및/또는 제공하도록 구성된 임의의 유형의 기기를 포함할 수 있거나 이러한 것일 수 있다.
픽처 소스(16)는 픽처를 캡처하도록 구성된 카메라 또는 픽처를 저장하도록 구성된 메모리일 수 있다. 픽처 소스(16)는 임의의 유형의 (내부 또는 외부) 인터페이스를 더 포함할 수 있으며 이를 통해 이전에 캡처되거나 생성된 픽처가 저장되고/되거나 픽처가 획득 또는 수신된다. 픽처 소스(16)가 카메라인 경우, 픽처 소스(16)는, 예를 들어, 로컬 카메라 또는 근원지 기기에 통합된 카메라일 수 있다. 픽처 소스(16)가 메모리인 경우, 픽처 소스(16)는 로컬 메모리 또는 예를 들어 소스 디바이스에 통합된 메모리일 수 있다. 픽처 소스(16)가 인터페이스를 포함하는 경우, 인터페이스는, 예를 들어, 외부 비디오 소스로부터 픽처를 수신하기 위한 외부 인터페이스일 수 있다. 외부 픽처 소스는, 예를 들어, 카메라와 같은 외부 픽처 캡처 기기, 외부 메모리 또는 외부 픽처 생성 기기이다. 외부 픽처 생성 기기는, 예를 들어 외부 컴퓨터 그래픽 처리 유닛, 컴퓨터 또는 서버이다. 인터페이스는 임의의 유형의 인터페이스, 예를 들어, 임의의 독점 또는 표준화된 인터페이스 프로토콜에 따른 유선 또는 무선 인터페이스 또는 광학 인터페이스일 수 있다.
픽처는 픽셀(픽처 요소)의 2차원 배열 또는 행렬로 간주될 수 있다. 어레이의 픽셀은 샘플이라고도 할 수 있다. 배열 또는 픽처의 수평 및 수직 방향(또는 축)의 샘플 양은 픽처의 크기 및/또는 해상도를 정의한다. 색을 표현하기 위해서는 일반적으로 3가지 색 성분이 사용된다. 예를 들어, 픽처는 3개의 샘플 배열로 표현되거나 이를 포함할 수 있다. 예를 들어, RBG 형식 또는 색 공간에서 픽처에는 대응하는 적색, 녹색 및 청색 샘플 배열이 포함된다. 그러나, 비디오 코딩에서, 각각의 픽셀은 일반적으로 루마(luma)/크로마(chroma) 형식 또는 색 공간으로 표현된다. 예를 들어, YUV 형식의 픽처는 Y로 지시(또는 때때로 L로 지시)되는 루마 성분과 U 및 V로 지시되는 두 개의 크로마 성분을 포함한다. 휘도(루마) 성분 Y는 밝기 또는 그레이 레벨 강도(예: 둘 다 그레이스케일 픽처에서 동일함)를 나타내고, 두 개의 색도(크로마) 성분 U와 V는 크로마 또는 색 정보 성분을 나타낸다. 이에 상응하여, YUV 형식의 픽처는 루마 샘플 값(Y)의 루마 샘플 배열과 크로마 값(U 및 V)의 2개의 크로마 샘플 배열을 포함한다. RGB 형식의 픽처는 YUV 형식으로 변환 또는 전환될 수 있으며 그 반대의 경우도 성립한다. 이 프로세스를 색 변환 또는 전환이라고도 한다. 픽처가 흑백인 경우, 픽처는 루마 샘플 배열만 포함할 수 있다. 본 발명의 이 실시예에서, 픽처 소스(16)에 의해 픽처 프로세서로 송신된 픽처는 또한 원시(raw) 픽처 데이터(17)로 지칭될 수 있다.
픽처 전처리기(18)는 원시 픽처 데이터(17)를 수신하고 원시 픽처 데이터(17)에 대한 전처리를 수행하여 전처리된 픽처(19) 또는 전처리된 픽처 데이터(19)를 획득하도록 구성된다. 예를 들어, 픽처 전처리기(18)에 의해 수행되는 전처리는 트리밍(trimming), 색 형식 변환(예: RGB 형식에서 YUV 형식으로), 색 보정 또는 노이즈 제거(denoising)를 포함할 수 있다.
인코더(20)(또는 비디오 인코더(20)라고 칭함)는 전처리된 픽처 데이터(19)를 수신하고, (본 명세서의 실시예에서의 예측 모드와 같은) 관련 예측 모드에서 전처리된 픽처 데이터(19)를 처리하여, 인코딩된 픽처 데이터(21)를 제공하도록 구성된다(인코더(20)의 구성 세부사항은 도 2, 도 4 또는 도 5에 기초하여 아래에서 더 설명된다). 일부 실시예에서, 인코더(20)는 본 발명에서 기술되는 크로마 블록 예측 방법의 인코더 측 적용을 구현하기 위해, 아래 설명되는 다양한 실시예를 수행하도록 구성될 수 있다.
통신 인터페이스(22)는 인코딩된 픽처 데이터(21)를 수신하고, 인코딩된 픽처 데이터(21)를 저장 또는 직접 재구축을 위해 링크(13)를 통해 목적지 기기(14) 또는 임의의 다른 기기(예: 메모리)에 전송하도록 구성될 수 있다. 임의의 다른 기기는 디코딩 또는 저장에 사용되는 임의의 기기일 수 있다. 통신 인터페이스(22)는, 예를 들어, 링크(13)를 통한 송신을 위해, 인코딩된 픽처 데이터(21)를 적절한 포맷, 예를 들어 데이터 패킷으로 캡슐화하도록 구성될 수 있다.
목적지 기기(14)는 디코더(30)를 포함한다. 선택적으로, 목적지 기기(14)는 통신 인터페이스(28), 픽처 후처리기(32), 및 디스플레이 기기(34)를 더 포함할 수 있다. 설명은 다음과 같이 개별적으로 제공된다.
통신 인터페이스(28)는 근원지 기기(12) 또는 임의의 다른 소스로부터 인코딩된 픽처 데이터(21)를 수신하도록 구성될 수 있다. 임의의 다른 소스는, 예를 들어 저장 기기이다. 저장 기기는, 예를 들어 인코딩된 픽처 데이터 저장 기기이다. 통신 인터페이스(28)는 근원지 기기(12)와 목적지 기기(14) 사이의 링크(13)를 통해 또는 임의의 유형의 네트워크를 통해 인코딩된 픽처 데이터(21)를 송신 또는 수신하도록 구성될 수 있다. 링크(13)는 예를 들어 직접적인 유선 또는 무선 연결이다. 임의의 유형의 네트워크는, 예를 들어 유선 또는 무선 네트워크 또는 이들의 임의의 조합, 또는 임의의 유형의 전용(private) 또는 공용 네트워크 또는 이들의 임의의 조합이다. 통신 인터페이스(28)는, 예를 들어 통신 인터페이스(22)를 통해 송신되는 데이터 패킷을 캡슐화 해제하여, 인코딩된 픽처 데이터(21)를 획득하도록 구성될 수 있다.
통신 인터페이스(28) 및 통신 인터페이스(22) 모두는 단방향 통신 인터페이스 또는 양방향 통신 인터페이스로 구성될 수 있으며, 예를 들어, 연결을 확립(설정)하기 위해 메시지를 전송 및 수신하고, 인코딩된 픽처 데이터 송신과 같은 데이터 송신 및/또는 통신 링크와 관련된 기타 정보를 확인(acknowledg) 및 교환하도록 구성된다.
디코더(30)(또는 디코더(30)로 지칭됨)는 인코딩된 픽처 데이터(21)를 수신하고 디코딩된 픽처 데이터(31) 또는 디코딩된 픽처(31)를 제공하도록 구성된다(디코더(30)의 구성 세부사항은 도 3, 도 4, 또는 도 5에 기초하여 아래에 더 설명됨). 일부 실시예에서, 디코더(30)는 본 발명에서 기술되는 크로마 블록 예측 방법의 디코더 측 적용을 구현하기 위해 후술되는 다양한 실시예를 수행하도록 구성될 수 있다.
픽처 후처리기(32)는 디코딩된 픽처 데이터(31)(또한 재구축된 픽처 데이터로도 지칭됨)에 대한 후처리를 수행하여 후처리된 픽처 데이터(33)를 획득하도록 구성된다. 픽처 후처리기(32)에 의해 수행되는 후처리는 색 포맷 전환(예: YUV 포맷에서 RGB 포맷으로), 색 보정, 트리밍, 리샘플링, 또는 임의의 다른 처리를 포함할 수 있다. 픽처 후처리기(32)는 추가로, 후처리된 픽처 데이터(33)를 디스플레이 기기(34)로 송신하도록 구성될 수 있다.
디스플레이 기기(34)는 후처리된 픽처 데이터(33)를 수신하여 픽처를, 예를 들어, 사용자 또는 뷰어에게 표시하도록 구성된다. 디스플레이 기기(34)는 재구축된 픽처를 제시하기 위한 임의의 유형의 디스플레이, 예를 들어 통합된 또는 외부 디스플레이 또는 모니터일 수 있거나 이를 포함할 수 있다. 예를 들어, 디스플레이로는 액정 디스플레이(liquid crystal display, LCD), 유기 발광 다이오드(organic light emitting diode, OLED) 디스플레이, 플라즈마 디스플레이, 프로젝터, 마이크로 LED 디스플레이, 실리콘 상 액정(liquid crystal on silicon, LCoS), 디지털 조명 프로세서(digital light processor, DLP) 또는 기타 임의의 유형의 디스플레이를 포함할 수 있다.
비록 도 1a는 근원지 기기(12)와 목적지 기기(14)를 별개의 기기로 도시하지만, 기기 실시예는 대안적으로 근원지 기기(12)와 목적지 기기(14) 둘 다 또는 근원지 기기(12)와 목적지 기기(14) 둘 다의 기능, 즉 근원지 기기 (12) 또는 대응하는 기능과 목적지 기기(14) 또는 대응하는 기능을 포함할 수 있다. 이러한 실시예에서, 근원지 기기(12) 또는 대응하는 기능 및 목적지 기기(14) 또는 대응하는 기능은 동일한 하드웨어 및/또는 소프트웨어, 별개의 하드웨어 및/또는 소프트웨어, 또는 이들의 임의의 조합을 사용하여 구현될 수 있다.
설명에 기초하여, 당업자는 도 1a에 도시된 근원지 기기(12) 및/또는 목적지 기기(14)의 상이한 유닛들 또는 기능들의 존재 및 기능의 (정확한) 분할이 실제 기기 및 애플리케이션에 따라 다를 수 있음을 확실히 알 수 있다. 근원지 기기(12) 및 목적지 기기(14)는
임의의 유형의 핸드헬드 또는 고정식 기기, 예를 들어 노트북 또는 랩톱 컴퓨터, 이동 전화, 스마트폰, 태블릿 또는 태블릿 컴퓨터, 비디오 카메라, 데스크톱 컴퓨터, 셋톱 박스, 텔레비전, 카메라, 차량 장착형(vehicle-mounted) 기기, 디스플레이 기기, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 기기(예: 콘텐츠 서비스 서버 또는 콘텐츠 전송 서버), 방송 수신 기기 또는 방송 전송 기기를 포함한, 광범위한 기기 중 어느 하나를 포함할 수 있으며, 임의의 유형의 운영 체제를 사용하거나 사용하지 않을 수 있다.
인코더(20) 및 디코더(30) 각각은 다양한 적절한 회로, 예를 들어 하나 이상의 마이크로프로세서, 디지털 신호 프로세서(digital signal processor, DSP), 애플리케이션 특정 집적 회로(specific integrated circuits, ASIC), 필드 프로그래머블 게이트 어레이(field-programmable gate arrays, FPGA), 이산 로직(discrete logic), 하드웨어 또는 이들의 조합 중 어느 하나로 구현될 수 있다. 기술이 소프트웨어를 사용하여 부분적으로 구현되는 경우, 기기는 소프트웨어 명령어를 적절하고 비일시적인, 컴퓨터로 판독 가능한 저장 매체에 저장할 수 있고 하나 이상의 프로세서와 같은 하드웨어를 사용하여 명령어를 실행하여, 본 개시의 기술을 수행할 수 있다. 전술한 내용(하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등 포함) 중 어느 하나는 하나 이상의 프로세서로 간주될 수 있다.
경우에 따라서는, 도 1a에 도시된 비디오 인코딩 및 디코딩 시스템(10)은 예시일 뿐이며 본 출원의 기술은 인코딩 기기와 디코딩 기기 사이의 임의의 데이터 통신을 반드시 포함하지는 않는 비디오 코딩 설정(예: 비디오 인코딩 또는 비디오 디코딩)에 적용될 수 있다. 다른 예에서, 데이터는 로컬 메모리로부터 검색되거나, 네트워크를 통해 스트리밍되는 등일 수 있다. 비디오 인코딩 기기는 데이터를 인코딩하고 인코딩된 데이터를 메모리에 저장하고/하거나, 비디오 디코딩 기기는 메모리에서 데이터를 검색하고 데이터를 디코딩할 수 있다. 일부 예에서, 인코딩 및 디코딩은 서로 통신하지 않지만, 단순히 데이터를 메모리로 인코딩하고/하거나 메모리로부터 데이터를 검색하고 데이터를 디코딩하는 기기에 의해 수행된다.
도 1b는 예시적인 실시예에 따른 도 2의 인코더(20) 및/또는 도 3의 디코더(30)를 포함하는 비디오 코딩 시스템(40)의 일례의 예시도이다. 비디오 코딩 시스템(40)은 본 발명의 실시예에서의 다양한 기술의 조합을 구현할 수 있다. 예시된 구현에서, 비디오 코딩 시스템(40)은 이미징 기기(41), 인코더(20), 디코더(30)(및/또는 처리 유닛(46)의 논리 회로(47)에 의해 구현되는 비디오 인코더/디코더), 안테나(42), 하나 이상의 프로세서(43), 하나 이상의 메모리(44), 및/또는 디스플레이 기기(45)를 포함할 수 있다.
도 1b에 도시된 바와 같이, 이미징 기기(41), 안테나(42), 처리 유닛(46), 논리 회로(47), 인코더(20), 디코더(30), 프로세서(43), 메모리(44) 및/또는 디스플레이 기기(45)는 서로 통신할 수 있다. 설명된 바와 같이, 비디오 코딩 시스템(40)은 인코더(20) 및 디코더(30)와 함께 예시되지만, 비디오 코딩 시스템(40)은 다른 예에서 인코더(20) 또는 디코더(30)만을 포함할 수 있다.
일부 예에서, 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 송신 또는 수신하도록 구성될 수 있다. 또한, 일부 예에서, 디스플레이 기기(45)는 비디오 데이터를 제시하도록 구성될 수 있다. 일부 예에서, 로직 회로(47)는 처리 유닛(46)에 의해 구현될 수 있다. 처리 유닛(46)은 애플리케이션 특정 집적 회로(application-specific integrated circuit, ASIC) 로직, 그래픽 처리 유닛, 범용 프로세서 등을 포함할 수 있다. 비디오 코딩 시스템(40)은 대안적으로 선택적인 프로세서(43)를 포함할 수 있다. 선택적인 프로세서(43)는 유사하게 애플리케이션 특정 집적 회로(application-specific integrated circuit, ASIC) 로직, 그래픽 처리 유닛, 범용 프로세서 등을 포함할 수 있다. 일부 예에서, 논리 회로(47)는 하드웨어, 예를 들어 비디오 코딩을 위한 전용 하드웨어를 사용하여 구현될 수 있다. 프로세서(43)는 범용 소프트웨어, 운영 체제 등에 의해 구현될 수 있다. 또한, 메모리(44)는 임의의 유형의 메모리일 수 있으며, 예를 들어, 휘발성 메모리(예: 정적 랜덤 액세스 메모리(Static Random Access Memory, SRAM), 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM)) 또는 비휘발성 메모리(예: 플래시 메모리)일 수 있다. 비한정적인 예에서, 메모리(44)는 캐시 메모리로 구현될 수 있다. 일부 예에서, 논리 회로(47)는 (예를 들어, 픽처 버퍼를 구현하기 위해) 메모리(44)에 액세스할 수 있다. 다른 예에서, 논리 회로(47) 및/또는 처리 유닛(46)은 픽처 버퍼 등을 구현하기 위한 메모리(예: 캐시)를 포함할 수 있다.
일부 예에서, 논리 회로에 의해 구현된 인코더(20)는 (예를 들어, 처리 유닛(46) 또는 메모리(44)에 의해 구현되는) 픽처 버퍼 및 (예를 들어, 처리 유닛(46)에 의해 구현되는) 그래픽 처리 유닛을 포함할 수 있다. 그래픽 처리 유닛은 픽처 버퍼에 통신 가능하게 연결될 수 있다. 그래픽 처리 장치는 논리 회로(47)에 의해 구현되는 인코더(20)를 포함하여, 도 2를 참조하여 설명된 다양한 모듈 및/또는 본 명세서에 설명된 임의의 다른 인코더 시스템 또는 서브시스템을 구현할 수 있다. 논리 회로는 본 명세서에서 설명된 다양한 동작(operation)을 수행하도록 구성될 수 있다.
일부 예에서, 디코더(30)는 유사한 방식으로 논리 회로(47)에 의해 구현되어, 도 3의 디코더(30) 및/또는 본 명세서에 기술된 임의의 다른 디코더 시스템 또는 서브시스템을 참조하여 설명된 다양한 모듈들을 구현할 수 있다. 일부 예에서, 논리 회로에 의해 구현되는 디코더(30)는 (처리 유닛(2820) 또는 메모리(44)에 의해 구현되는) 픽처 버퍼 및 (예를 들어, 처리 유닛(46)에 의해 구현되는) 그래픽 처리 유닛을 포함할 수 있다. 그래픽 처리 유닛은 픽처 버퍼에 통신 가능하게 연결될 수 있다. 그래픽 처리 유닛은 논리 회로(47)에 의해 구현되는 디코더(30)를 포함하여, 도 3 및/또는 본 명세서에 기술된 임의의 다른 디코더 시스템 또는 서브시스템을 참조하여 설명된 다양한 모듈을 구현할 수 있다.
일부 예에서, 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 수신하도록 구성될 수 있다. 설명된 바와 같이, 인코딩된 비트스트림은 비디오 프레임 코딩과 관련되고 본 명세서에서 설명되는 데이터, 지시자, 색인 값, 모드 선택 데이터 등, 예를 들어 코딩 파티셔닝과 관련된 데이터(예: 변환 계수 또는 양자화된 변환 계수, 선택적 지시자(설명된 바와 같은) 및/또는 코딩 파티셔닝을 정의하는 데이터)를 포함할 수 있다. 비디오 코딩 시스템(40)은 안테나(42)에 결합되고 인코딩된 비트스트림을 디코딩하도록 구성된 디코더(30)를 더 포함할 수 있다. 디스플레이 기기(45)는 비디오 프레임을 제시하도록 구성된다.
본 발명의 이 실시예에서, 인코더(20)를 참조하여 설명된 예에 대해, 디코더(30)는 역 프로세스를 수행하도록 구성될 수 있다는 것을 이해해야 한다. 시그널링 신택스 요소와 관련하여, 디코더(30)는 신택스 요소를 수신 및 파싱하고 그에 상응하여 비디오 데이터를 디코딩하도록 구성될 수 있다. 일부 예에서, 인코더 (20)는 신택스 요소를 인코딩된 비디오 비트스트림으로 엔트로피 인코딩할 수 있다. 이러한 예에서, 디코더(30)는 신택스 요소를 파싱하고 그에 상응하여 비디오 데이터를 디코딩할 수 있다.
본 발명의 실시예에서 설명된 움직임 벡터 예측 방법은 인터 예측 프로세스에서 주로 사용된다는 점에 유의해야 한다. 이 프로세스는 인코더(20) 및 디코더(30) 모두에 존재한다. 본 발명의 실시예에서 인코더(20) 및 디코더(30)는, 예를 들어, H.263, H.264, HEVV, MPEG-2, MPEG-4, VP8, 또는 VP9 또는 차세대 비디오 표준 프로토콜(예: H.266)과 같은 비디오 표준 프로토콜에 대응하는 인코더/디코더일 수 있다.
도 2는 본 발명의 일 실시예를 구현하기 위한 인코더(20)의 일례의 개략/개념 블록도이다. 도 2의 예에서, 인코더(20)는 잔차 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 역양자화 유닛(210), 역변환 처리 유닛(212), 재구축 유닛(214), 버퍼(216), 루프 필터 유닛(220), 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230), 예측 처리 유닛(260) 및 엔트로피 인코딩 유닛(270)을 포함한다. 예측 처리 유닛(260)은 인터 예측 유닛(244), 인트라 예측 유닛(254) 및 모드 선택을 포함할 수 있다. 인터 예측 유닛(244)은 움직임 추정 유닛 및 움직임 보상 유닛(도면에 도시되지 않음)을 포함할 수 있다. 도 2에 도시된 인코더(20)는 또한 하이브리드 비디오 인코더 또는 하이브리드 비디오 코덱에 기반한 비디오 인코더로도 지칭될 수 있다.
예를 들어, 잔차 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 예측 처리 유닛(260), 및 엔트로피 인코딩 유닛(270)은 인코더(20)의 순방향 신호 경로(forward signal path)를 형성하는 반면, 예를 들어, 역양자화 유닛(210), 역변환 처리 유닛(212), 재구축 유닛(214), 버퍼(216), 루프 필터(220), 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230) 및 예측 처리 유닛(260)는 역방향 신호 경로(backward signal path)를 형성한다. 인코더의 역방향 신호 경로는 디코더(도 3의 디코더(30) 참조)의 신호 경로에 해당한다.
인코더(20)는, 예를 들어 입력(202)을 통해, 픽처(201) 또는 픽처(201)의 픽처 블록(203), 예를 들어 비디오 또는 비디오 시퀀스를 형성하는 픽처의 시퀀스를 수신한다. 픽처 블록(203)은 또한 현재 픽처 블록 또는 코딩될 픽처로 지칭될 수 있고, 픽처(201)는 현재 픽처 또는 코딩될 픽처로 지칭될 수 있다(특히 비디오 코딩에서, 현재 픽처를 다른 픽처, 예를 들어 동일한 비디오 시퀀스, 즉 현재 픽처도 포함하는 비디오 시퀀스에서 이전에 인코딩된 및/또는 디코딩된 픽처와 구별하기 위한 것임).
일 실시예에서, 인코더(20)는 픽처(201)를 픽처 블록(203)과 같은 복수의 블록으로 파티셔닝하도록 구성된 파티셔닝 유닛(도 2에 도시되지 않음)을 포함할 수 있다. 픽처(201)는 보통 복수의 중첩되지 않는(비중첩) 블록으로 파티셔닝된다. 파티셔닝 유닛은, 비디오 시퀀스의 모든 픽처에 대해 동일한 블록 크기 및 블록 크기를 정의하는 대응하는 그리드를 사용하거나, 픽처 또는 픽처의 서브세트 또는 그룹 사이의 블록 크기를 변경하고, 각각의 픽처를 대응하는 블록으로 파티셔닝하도록 구성될 수 있다.
일례에서, 인코더(20)의 예측 처리 유닛(260)은 위에서 설명된 파티셔닝 기술들의 임의의 조합을 수행하도록 구성될 수 있다.
픽처(201)과 마찬가지로, 픽처 블록(203)도 또한 픽처 블록(203)의 크기가 픽처(201)의 크기보다 작더라도, 샘플 값을 갖는 샘플의 2차원 배열 또는 행렬이거나 또는 그렇게 간주될 수 있다. 다시 말해, 픽처 블록(203)은 예를 들어, 하나의 샘플 배열(예: 모노크롬 픽처(201)의 경우 루마 배열), 3개의 샘플 배열(예: 하나의 루마 배열와 2개의 크로마 배열), 또는 적용된 색 포맷에 따라 다른 수량 및/또는 배열 유형을 포함할 수 있다. 픽처 블록(203)의 수평 및 수직 방향(또는 축)의 샘플 수량은 픽처 블록(203)의 크기를 정의한다.
도 2에 도시된 인코더(20)는 픽처(201)를 블록 단위로 인코딩하도록 구성되며, 예를 들어, 각각 픽처 블록(203)에 대해 인코딩 및 예측을 수행하도록 구성된다.
잔차 계산 유닛(204)은 예측 블록(203) 및 예측 블록(265)에 기초하여 잔차 블록(205)을 계산하도록 구성되며(예측 블록(265)에 대한 다른 세부사항은 아래에 제공됨), 예를들어, 픽처 블록(203)의 샘플 값에서 예측 블록(265)의 샘플 값을 샘플 단위(픽셀 단위)로 감산하여, 샘플 도메인에서 잔차 블록(205)을 획득한다.
변환 처리 유닛(206)은 변환, 예를 들어 이산 코사인 변환(discrete cosine transform, DCT) 또는 이산 사인 변환(discrete sine transform, DST)을 잔차 블록(205)의 샘플 값에 적용하여, 변환 도메인에서 변환 계수(207)를 획득하도록 구성된다. 변환 계수(207)는 또한 변환 잔차 계수로 지칭될 수 있고 변환 도메인에서 잔차 블록(205)을 나타낸다.
변환 처리 유닛(206)은 HEVC/H.265에 명시된 변환과 같은 DCT/DST의 정수 근사치를 적용하도록 구성될 수 있다. 직교 DCT 변환과 비교하여, 이러한 정수 근사치는 일반적으로 계수에 의해 조정된다. 정변환 및 역변환을 사용하여 처리되는 잔차 블록의 규준(norm)을 유지하기 위해, 추가 스케일 인자(scale factor)을 적용하는 것은 변환 프로세스의 일부이다. 스케일 인자은 일반적으로 몇 가지 제약 조건에 따라 선택된다. 예를 들어, 스케일 인자는 시프트 연산에 대한 2의 거듭제곱이며, 변환 계수의 비트 심도, 또는 정확도와 구현 비용 간의 절충점(tradeoff)이다. 예를 들어, 특정 스케일 인자는, 예를 들어 디코더(30) 측의 역변환 처리 유닛(212)에 의한 역변환(및 예를 들어, 인코더(20) 측의 역변환 처리 유닛(212)에 의한 대응하는 역변환)에 의한 역변환에 대해 지정되고, 이에 상응하여 대응하는 스케일 팩터는 인코더(20) 측에서 변환 처리 유닛(206)에 의한 정변환에 대해 지정될 수 있다.
양자화 유닛(208)은 예를 들어, 스칼라 양자화 또는 벡터 양자화를 적용함으로써, 변환 계수(207)를 양자화하여 양자화된 변환 계수(209)를 획득하도록 구성된다. 양자화된 변환 계수(209)는 양자화된 잔차 계수(209)로도 지칭될 수 있다. 양자화 프로세스는 변환 계수(207)의 일부 또는 전부와 관련된 비트 심도를 감소시킬 수 있다. 예를 들어, n 비트 변환 계수는 양자화 동안 m비트 변환 계수로 내림(rounded down)될 수 있으며, 여기서 n은 m보다 크다. 양자화 파라미터(quantization parameter, QP)를 조정하여 양자화 정도를 수정할 수 있다. 예를 들어, 스칼라 양자화의 경우, 더 미세하거나 더 거친 양자화를 달성하기 위해 다른 스케일이 적용될 수 있다. 더 작은 양자화 단계(step)는 더 미세한 양자화에 대응하고 더 큰 양자화 단계는 더 거친 양자화에 대응한다. 적용 가능한 양자화 단계는 양자화 파라미터(quantization parameter, QP)로 지시될 수 있다. 예를 들어, 양자화 파라미터는 적용 가능한 양자화 단계의 미리 정의된 세트에 대한 색인일 수 있다. 예를 들어, 더 작은 양자화 파라미터는 더 미세한 양자화(더 작은 양자화 단계)에 대응할 수 있고, 더 큰 양자화 파라미터는 더 거친 양자화(더 큰 양자화 단계)에 대응할 수 있거나 그 반대의 경우도 성립한다. 양자화는 양자화 단계 및 대응하는 양자화 또는 예를 들어, 역양자화 유닛(210)에 의해 수행되 역양자화에 의한 나눗셈을 포함할 수 있고, 양자화 단계에 의한 곱셈을 포함할 수 있다. HEVC와 같은 일부 표준에 따른 실시예에서, 양자화 파라미터는 양자화 단계를 결정하기 위해 사용될 수 있다. 일반적으로, 양자화 단계는 나눗셈을 포함하는 방정식의 고정 소수점 근사를 이용하여 양자화 파라미터를 기초하여 계산될 수 있다. 양자화 및 역양자화를 위해 추가 스케일 인자가 도입되어 잔차 블록의 규준을 복원할 수 있으며, 여기서 잔차 블록의 규준은 양자화 단계 및 양자화 파라미터에 대한 방정식의 고정 소수점 근사에 사용된 스케일로 인해 수정될 수 있다. 예시적인 구현에서, 역변환 및 역양자화의 스케일들은 결합될 수 있다. 대안적으로, 맞춤형 양자화 표가 사용되고 인코더로부터 디코더에, 예를 들어 비트스트림으로 시그널링될 수 있다. 양자화는 양자화 단계가 증가함에 따라 손실이 증가하는 손실 연산(lossy operation)이다.
역양자화 유닛(210)은 양자화 계수에 양자화 유닛(208)의 역양자화를 적용하여, 예를 들어, 양자화 유닛(208)과 동일한 양자화 단계에 기초하거나 사용하여 양자화 유닛(208)에 의해 적용된 양자화 방식의 역을 적용하여, 역양자화된 계수(211)를 획득하도록 구성된다. 역양자화된 계수(211)는 또한 역양자화된 잔차 계수(211)라고도 지칭될 수 있고 역양자화된 계수(211)는 일반적으로 양자화에 의해 야기되는 손실로 인해 변환 계수와 다르더라도, 변환 계수(207)에 대응한다.
역변환 처리 유닛(212)은 변환 처리 유닛(206)에 의해 적용된 변환의 역변환, 예를 들어 역 이산 코사인 변환(discrete cosine transform, DCT) 또는 역 이산 사인 변환(discrete sine transform, DST)를 적용하여, 샘플 도메인에서 역변환 블록(213)을 획득하도록 구성된다. 역변환 블록(213)은 또한 역변환 역양자화된 블록(213) 또는 역변환 잔차 블록(213)으로도 지칭될 수 있다.
재구축 유닛(214)(예: 합산기(214))은 예를 들어, 재구축된 잔차 블록(213)의 샘플 값과 예측 블록(265)의 샘플 값을 가산함으로써, 역변환 블록(213)(즉, 재구축된 잔차 블록(213))을 예측 블록(265)에 가산하여, 샘플 도메인에서 재구축된 블록(215)을 획득하도록 구성된다.
선택적으로, 예를 들어 라인 버퍼(216)의 버퍼 유닛(216)(줄여서 "버퍼"(216))은, 예를 들어 인트라 예측을 위해, 재구축된 블록(215) 및 대응하는 샘플 값을 버퍼링하거나 저장하도록 구성된다. 다른 실시예에서, 인코더는 임의의 유형의 추정 및/또는 예측, 예를 들어 인트라 예측을 위해, 버퍼 유닛(216)에 저장된/또는 필터링되지 않은 재구축된 블록 및/또는 대응하는 샘플 값을 사용하도록 구성될 수 있다.
예를 들어, 실시예에서, 인코더(20)는 버퍼 유닛(216)이 인트라 예측(254)에 사용될 뿐만 아니라 루프 필터 유닛(220)(도 2에 도시되지 않음)에도 사용되는 재구축된 블록(215)을 저장하도록, 및/또는 예를 들어 버퍼 유닛(216)과 디코딩된 픽처 버퍼(230)가 하나의 버퍼를 형성하도록 구성될 수 있다. 다른 실시예에서, 필터링된 블록(221) 및/또는 디코딩된 픽처 버퍼(230)로부터의 블록 또는 샘플(블록 또는 샘플은 도 2에 도시되지 않음)은 인트라 예측 유닛(254)에 대한 입력 또는 기초로 사용된다.
루프 필터 유닛(220)(줄여서 "루프 필터"(220))은 재구축된 블록(215)을 필터링하여 필터링된 블록(221)을 획득하고, 픽셀 전이(pixel transition)을 매끄럽게 하거나 비디오 품질을 개선하도록 구성된다. 루프 필터 유닛(220)은 하나 이상의 루프 필터, 예를 들어 디블로킹 필터(deblocking filter), 샘플 적응적 오프셋(sample-adaptive offset, SAO) 필터, 또는 양방향 필터, 적응적 루프 필터(adaptive loop filter, ALF), 샤프닝(sharpening) 또는 스무딩(smoothing) 필터, 협업 필터(collaborative filter)와 같은 다른 필터를 나타내기 위한 것이다. 루프 필터 유닛(220)는 도 2에서 인루프(in-loop) 필터로 도시되어 있지만, 다른 구성에서, 루프 필터 유닛(220)는 포스트 루프(post-loop) 필터로 구현될 수 있다. 필터링된 블록(221)은 필터링된 재구축된 블록(221)으로도 지칭될 수 있다. 디코딩 픽처 버퍼(230)는 루프 필터 유닛(220)가 재구축된 인코딩 블록에 대해 필터링 동작을 수행한 후의 재구축된 인코딩 블록을 저장할 수 있다.
일 실시예에서, 인코더(20)(이에 상응하여, 루프 필터 유닛(220))는 루프 필터 파라미터(예: 샘플 적응적 오프셋 정보)를, 예를 들어, 직접 또는 엔트로피 인코딩 유닛(270) 또는 다른 엔트로피 인코딩 유닛에 의해 수행되는 엔트로피 인코딩 후에 출력하도록 구성될 수 있어, 예를 들어 디코더(30)가 디코딩을 위해 동일한 루프 필터 파라미터를 수신하고 적용할 수 있도록 한다.
디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230)는 인코더(20)에 의한 비디오 데이터 인코딩에 사용하기 위한 참조 픽처 데이터를 저장하는 참조 픽처 메모리일 수 있다. DPB(230)는 동적 랜덤 액세스 메모리(Ddynamic random access memory, DRAM)(동기식 DRAM(synchronous DRAM, SDRAM), 자기 저항식 RAM(magnetoresistive RAM, MRAM) 및 저항식 RAM(resistive RAM, RRAM) 포함), 또는 다른 유형의 메모리 소자와 같은, 다양한 메모리 소자 중 어느 하나에 의해 구성될 수 있다. DPB(230) 및 버퍼(216)는 동일한 메모리 소자 또는 별개의 메모리 소자에 의해 제공될 수 있다. 일례에서, 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230)는 필터링된 블록(221)을 저장하도록 구성된다. 디코딩된 픽처 버퍼(230)는 추가로, 동일한 현재 픽처의 또는 예를 들어, 이전에 재구축된 다른 픽처의, 다른 이전에 필터링된 블록, 예를 들어, 이전에 재구축되고 필터링된 블록(221)을 저장하도록 구성될 수 있어, 예를 들어 인터 예측을 위해, 완전한 이전에 재구축된, 즉 디코딩된 픽처(및 대응하는 참조 블록 및 샘플) 및/또는 부분적으로 재구축된 현재 픽처(및 대응하는 참조 블록 및 샘플)을 제공할 수 있다. 일례에서, 재구축된 블록(215)이 인루프 필터링 없이 재구축되면, 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230)는 재구축된 블록(215)을 저장하도록 구성된다.
블록 예측 처리 유닛(260)이라고도 하는 예측 처리 유닛(260)은 픽처 블록(203)(현재 픽처(201)의 현재 픽처 블록(203)) 및 재구축된 픽처 데이터를,
예를 들어, 버퍼(216)로부터의 동일한 (현재) 픽처의 참조 샘플 및/또는 디코딩된 픽처 버퍼(230)로부터의 하나 이상의 이전에 디코딩된 픽처의 참조 픽처 데이터(231)를 수신하거나 획득하도록 구성되고; 예측을 위해 그러한 데이터를 처리하도록, 즉, 인터 예측 블록(245) 또는 인트라 예측 블록(255)일 수 있는 예측 블록(265)을 제공하도록 구성된다.
모드 선택 유닛(262)은 잔차 블록(205)을 계산하고 재구축된 블록(215)을 재구축하기 위해, 예측 모드(예: 인트라 또는 인터 예측 모드) 및/또는 예측 블록(265)으로서 사용될 대응하는 예측 블록(245 또는 255)을 선택하도록 구성될 수 있다.
일 실시예에서, 모드 선택 유닛(262)은 (예를 들어, 예측 처리 유닛(260)에 의해 지원되는 예측 모드 중에서) 예측 모드를 선택하도록 구성될 수 있으며, 여기서 예측 모드는 최상 매칭 또는 최소 잔차(최소 잔차는 송신 또는 저장을 위한 더 나은 압축을 의미함)를 제공하거나, 최소 시그널링 오버헤드(최소 시그널링 오버헤드는 송신 또는 저장을 위한 더 나은 압축을 의미함)을 제공하거나, 둘 모두를 고려하거나 균형을 유지한다. 모드 선택 유닛(262)은 레이트 왜곡 최적화(rate-distortion optimization, RDO)에 기초하여 예측 모드를 결정하도록 구성될 수 있고, 구체적으로 최소 레이트 왜곡 최적화를 제공하는 예측 모드를 선택하거나 다음을 위한 예측 모드를 선택하도록 구성될 수 있다. 관련 레이트 왜곡이 최소한 예측 모드 선택 기준을 충족하는 예측 모드를 선택한다.
다음은 인코더(20)의 일례예에서 (예를 들어, 예측 처리 유닛(260)에 의해) 수행되는 예측 처리 및 (예를 들어, 모드 선택 유닛(262)에 의해) 수행되는 모드 선택을 상세히 설명한다.
전술한 바와 같이, 인코더(20)는 (미리 결정된) 예측 모드의 세트로부터 최적 또는 최적 예측 모드를 결정하거나 선택하도록 구성된다. 예측 모드의 세트는, 예를 들어 인트라 예측 모드 및/또는 인터 예측 모드를 포함할 수 있다.
인트라 예측 모드의 세트는 35개의 상이한 인트라 예측 모드, 예를 들어 DC(또는 평균) 모드 및 평면 모드와 같은 비방향성(non-directional) 모드, 또는 H.265에 정의된 것과 같은 방향성 모드를 포함할 수 있거나, 또는 67개의 상이한 인트라 예측 모드, 예를 들어 DC(또는 평균) 모드 및 평면 모드와 같은 비방향성 모드, 또는 개발 중인 H.266에 정의된 것과 같은 방향성 모드를 포함할 수 있다.
가능한 구현에서, 인터 예측 모드의 세트는 이용 가능한 참조 픽처(즉, 예를 들어, 전술한 바와 같이 DBP(230)에 저장된 디코딩된 픽처의 적어도 일부) 및 다른 인터 예측 파라미터에 의존한다, 예를 들어 전체 참조 픽처 또는 참조 픽처의 일부, 예를 들어 현재 블록의 영역 주변의 검색 창 영역이 최적의 매칭 참조 블록을 검색하는 데 사용되는지 여부에 의존하고/하거나 예를 들어, 1/2 픽셀(half-pixel) 및/또는 1/4 픽셀(quarter-pixel) 보간과 같은 픽셀 보간이 적용되는지 여부에 의존한다. 인터 예측 모드의 세트는, 예를 들어, 향상된 움직임 벡터 예측(Advanced Motion Vector Prediction, AMVP) 모드 및 병합(merge) 모드를 포함할 수 있다. 구체적인 구현 시에, 인터 예측 모드의 세트는 제어 포인트에 기초한 AMVP 모드 및 본 발명의 실시예에서 개선되는 제어 포인트에 기초한 병합 모드를 포함할 수 있다. 일례에서, 인트라 예측 유닛(254)은 이하에 설명되는 인터 예측 기술의 임의의 조합을 수행하도록 구성될 수 있다.
전술한 예측 모드에 더하여, 스킵(skip) 모드 및/또는 직접(direct) 모드가 또한 본 발명의 실시예에서 적용될 수 있다.
예측 처리 유닛(260)은 추가로, 예를 들어 사지 트리(quadtre, QT) 파티셔닝, 이지 트리(binary tree, BT) 파티셔닝, 삼지 트리(triple tree, TT) 파티셔닝 또는 이들의 임의의 조합을 반복 사용하여, 픽처 블록(203)을 더 작은 블록 파티션 또는 서브블록으로 파티셔닝하고, 예를 들어 블록 파티션 또는 서브블록 각각에 대해 예측을 수행하도록 구성된다. 모드 선택은 파티셔닝된 픽처 블록(203)의 트리 구조의 선택 및 블록 파티션 또는 서브블록 각각에 적용되는 예측 모드의 선택을 포함한다.
인터 예측 유닛(244)은 움직임 추정(motion estimation, ME) 유닛(도 2에 도시되지 않음) 및 움직임 보상(motion compensation, MC) 유닛(도 2에 도시되지 않음)을 포함할 수 있다. 움직임 추정 유닛은 움직임 추정을 위해, 픽처 블록(203)(현재 픽처(201)의 현재 픽처 블록(203)) 및 디코딩된 픽처(231), 또는 적어도 하나 이상의 이전에 재구축된 블록, 예를 들어, 다른/상이한 이전에 디코딩된 픽처(231)의 하나 이상의 재구축된 블록을 수신하거나 획득하도록 구성된다. 예를 들어, 비디오 시퀀스는 현재 픽처 및 이전에 디코딩된 픽처(31)를 포함할 수 있다, 다시 말해, 현재 픽처 및 이전에 디코딩된 픽처(31)는 비디오 시퀀스를 형성하는 픽처의 일부이거니 픽처의 시퀀스를 형성할 수 있다.
예를 들어, 인코더(20)는 동일한 픽처 또는 복수의 다른 픽처 중의 동일한 픽처 또는 상이한 픽처의 복수의 참조 블록으로부터 참조 블록을 선택하고, 움직임 추정 유닛(도 2에 도시되지 않음)에 참조 블록을 제공하고/하거나, 참조 블록의 위치(좌표 X 및 Y)와 현재 블록의 위치 사이의 오프셋(공간 오프셋)을 인터 예측 파라미터로 제공하도록 구성될 수 있다. 이 오프셋은 움직임 벡터(motion vector, MV)라고도 지칭된다.
움직임 보상 유닛은 인터 예측 파라미터를 획득하고, 인터 예측 파라미터에 기초하거나 인터 예측 파라미터를 사용하여 인터 예측을 수행하여, 인터 예측 블록(245)을 획득하도록 구성된다. 움직임 보상 유닛(도 2에 도시되지 않음)에 의해 수행되는 움직임 보상은 움직임 추정을 통해(아마도 서브픽셀 정밀도의 보간을 수행함으로써) 결정된 움직임/블록 벡터에 기초하여 예측 블록을 인출하거나 생성하는 것을 포함할 수 있다. 보간 필터링은 알려진 픽셀 샘플로부터 추가 픽셀 샘플을 생성할 수 있다. 이것은 픽처 블록을 코딩하는 데 사용될 수 있는 후보 예측 블록의 수량을 잠재적으로 증가시킨다. 움직임 보상 유닛(246)는, 현재 픽처 블록의 PU에 대한 움직임 벡터를 수신하면, 하나의 참조 픽처 목록에서 움직임 벡터가 가리키는 예측 블록을 찾을 수 있다. 움직임 보상 유닛 (246) 은 디코더(30) 에 의해 비디오 슬라이스의 픽처 블록을 디코딩하기 위해, 블록 및 비디오 슬라이스와 연관된 신택스 요소를 추가로 생성할 수 있다.
구체적으로, 인터 예측 유닛(244)은 신택스 요소를 엔트로피 인코딩 유닛(270)에 송신할 수 있으며, 여기서 신택스 요소는 인터 예측 파라미터(예: 복수의 인터 예측 모들 순회한 후 현재 블록의 예측에 사용되는 인터 예측 모드의 선택의 표시 정보)를 포함한다. 가능한 적용 시나리오에서, 인터 예측 모드가 하나뿐인 경우, 인터 예측 파라미터는 대안적으로 신택스 요소에서 실려 전달되지 않을 수 있다. 이 경우, 디코딩 유닛(30)은 디폴트 예측 모드에서 직접 디코딩를 수행할 수 있다. 인터 예측 유닛(244)은 인터 예측 기술들의 임의의 조합을 수행하도록 구성될 수 있음을 이해할 수 있다.
인트라 예측 유닛(254)은 인트라 추정을 위해 샘플 픽처의 픽처 블록(203)(현재 픽처 블록) 및 하나 이상의 이전에 재구축된 블록, 예를 들어, 재구축된 이웃 블록을 획득, 예를 들어 수신하도록 구성된다. 예를 들어, 인코더(20)는 복수의 (미리 정해진) 인트라 예측 모드 중에서 인트라 예측 모드를 선택하도록 구성될 수 있다.
일 실시예에서, 인코더(20)는 최적화 기준에 따라, 예를 들어, 최소 잔차(예: 현재 픽처 블록(203)에 가장 유사한 예측 블록(255)를 제공하는 인트라 예측 모드) 또는 최소 레이트 왜곡에 기초하여 인트라 예측 모드를 선택하도록 구성될 수 있다.
인트라 예측 유닛(254)은 추가로, 예를 들어 선택된 인트라 예측 모드의 인트라 예측 파라미터에 기초하여 인트라 예측 블록(255)을 결정하도록 구성된다. 어느 경우든, 블록에 대한 인트라 예측 모드를 선택한 후, 인트라 예측 유닛(254)은 추가로, 인트라 예측 파라미터, 즉 블록에 대해 선택된 인트라 예측 모드를 지시하는 정보를 엔트로피 인코딩 유닛에 제공하도록 구성된다. 일례에서, 인트라 예측 유닛(254)은 인트라 예측 기술들의 임의의 조합을 수행하도록 구성될 수 있다.
구체적으로, 인트라 예측 유닛(254)은 신택스 요소를 엔트로피 인코딩 유닛(270)에 송신할 수 있으며, 여기서 신택스 요소는 인트라 예측 파라미터(예: 복수의 인트라 예측 모드의 순회 후 현재 블록의 예측에 사용되는 인트라 예측 모드의 선택의 지시 정보)를 포함한다. 가능한 적용 시나리오에서, 인트라 예측 모드가 하나만 있는 경우, 인트라 예측 파라미터는 대안적으로 신택스 요소에 실려 전달되지 않을 수 있다. 이 경우, 디코딩 유닛(30)은 디폴트 예측 모드에서 직접 디코딩를 수행할 수 있다.
엔트로피 인코딩 유닛(270)은 양자화된 계수(209), 인터 예측 파라미터, 인트라 예측 파라미터 및/또는 루프 필터 파라미터 중 하나 또는 전부에 대해 엔트로피 인코딩 알고리즘 또는 방식(scheme)(예: 가변 길이 코딩(variable length coding, VLC) 방식, 컨텍스트 적응적 VLC(context adaptive VLC, CAVLC) 방식, 산술 코딩 방식, 컨텍스트 적응적 이진 산술 코딩(context adaptive binary arithmetic coding, CABAC), 신택스 기반 컨텍스트 적응적 이진 산술 코딩(구syntax-based context-adaptive binary arithmetic coding, SBAC), 확률 구간 파티셔닝 엔트로피(probability interval partitioning entropy, PIPE) 코딩, 또는 기타 엔트로피 인코딩 방법 또는 기술)을 적용하여 (또는 적용을 건너뛰어), 예를 들어 인코딩 비트스트림(21)의 형태로, 출력(272)를 통해 출력될 수 있는 인코딩된 픽처 데이터(21)를 획득하도록 구성된다. 인코딩된 비트스트림은 비디오 디코더(30)에 송신되거나, 비디오 디코더(30)에 의한 나중의 송신 또는 검색을 위해 보관될 수 있다. 엔트로피 인코딩 유닛(270)은 추가로, 인코딩되고 있는 현재 비디오 슬라이스에 대한 다른 신택스 요소를 엔트로피 인코딩하도록 구성될 수 있다.
비디오 인코더(20)의 다른 구조적 변형은 비디오 비트스트림을 인코딩하는 데 사용될 수 있다. 예를 들어, 비변환 기반의 인코더(20)는 일부 블록 또는 프레임에 대해 변환 처리 유닛(206) 없이 잔차 신호를 직접 양자화할 수 있다. 다른 구현에서, 인코더(20)는 단일 유닛으로 결합되는 양자화 유닛(208) 및 역양자화 유닛(210)을 가질 수 있다.
구체적으로, 본 발명의 이 실시예에서, 인코더(20)는 이하의 실시예에서 설명되는 움직임 벡터 예측 방법을 구현하도록 구성될 수 있다.
비디오 인코더(20)의 다른 구조적 변형이 비디오 비트스트림을 인코딩하는 데 사용될 수 있음을 이해해야 한다. 예를 들어, 일부 픽처 블록 또는 픽처 프레임의 경우, 비디오 인코더(20)는 잔차 신호를 직접 양자화할 수 있어, 변환 처리 유닛(206)에 의한 처리는 필요하지 않으며, 이에 따라 역변환 처리 유닛(212)에 의한 처리도 필요하지 않다. 대안적으로, 일부 픽처 블록 또는 픽처 프레임에 대해, 비디오 인코더(20)는 잔차 데이터를 생성하지 않으며, 이에 따라 변환 처리 유닛(206), 양자화 유닛(208), 역양자화 유닛(210), 및 역변환 처리 유닛(212)에 의한 처리는 필요하지 않다. 대안적으로, 비디오 인코더(20)는 재구축된 픽처 블록을 참조 블록으로서 직접 저장할 수 있으며, 필터(220)에 의한 처리는 필요하지 않다. 대안적으로, 비디오 인코더(20)의 양자화 유닛(208)과 역양자화 유닛(210)이 결합될 수도 있다. 루프 필터(220)는 선택적이며, 무손실 압축 코딩의 경우, 변환 처리 유닛(206), 양자화 유닛(208), 역양자화 유닛(210) 및 역변환 처리 유닛(212)은 선택적이다. 상이한 적용 시나리오에 따라, 인터 예측 유닛(244) 및 인트라 예측 유닛(254)이 선택적으로 인에이블될 수 있음을 이해해야 한다.
도 3은 본 발명의 일 실시예를 구현하기 위한 디코더(30)의 일례의 개략/개념 블록도이다. 비디오 디코더(30)는, 예를 들어 인코더(20)에 의한 인코딩을 통해 획득된 인코딩된 픽처 데이터(예: 인코딩된 비트스트림)(21)를 수신하여, 디코딩된 픽처(231)를 획득하도록 구성된다. 디코딩 프로세스에서, 비디오 디코더(30)는 비디오 인코더(20)로부터의 비디오 데이터, 예를 들어 인코딩된 비디오 슬라이스의 픽처 블록을 나타내는 인코딩된 비디오 비트스트림, 및 연관된 신택스 요소를 수신한다.
도 3의 예에서, 디코더(30)는 엔트로피 디코딩 유닛(304), 역양자화 유닛(310), 역변환 처리 유닛(312), 재구축 유닛(314)(예: 합산기(314)), 버퍼(316), 루프 필터(320), 디코딩된 픽처 버퍼(330) 및 예측 처리 유닛(360)을 포함한다. 예측 처리 유닛(360)은 인터 예측 유닛(344), 인트라 예측 유닛(354), 및 모드 선택 유닛(362)을 포함할 수 있다. 일부 예에서, 비디오 디코더(30)는 도 2의 비디오 인코더(20)를 참조하여 설명된 인코딩 프로세스에 일반적으로 역인 디코딩 프로세스를 수행할 수 있다.
엔트로피 디코딩 유닛(304)은 인코딩된 픽처 데이터(21)에 대해 엔트로피 디코딩을 수행하여, 예를 들어 양자화된 계수(309) 및/또는 디코딩된 코딩 파라미터(도 3에 도시되지 않음), 예를 들어 인터 예측 파라미터, 인트라 예측 파라미터, 루프 필터 파라미터, 및/또는 (디코딩되는) 다른 신택스 요소 중 하나 또는 모두를 획득하도록 구성된다. 엔트로피 디코딩 유닛 (304)은 추가로, 인터 예측 파라미터, 인트라 예측 파라미터, 및/또는 다른 신택스 요소를 예측 처리 유닛(360)에 포워딩하도록 구성된다. 비디오 디코더(30)는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 신택스 요소를 수신할 수 있다.
역양자화 유닛(310)은 역양자화 유닛(110)과 동일한 기능을 가질 수 있다. 역변환 처리 유닛(312)은 역변환 처리 유닛(212)과 동일한 기능을 가질 수 있다. 재구축 유닛(314)은 재구축 유닛(211)과 동일한 기능을 가질 수 있다. 버퍼(316)는 버퍼(216)와 동일한 기능을 가질 수 있다. 루프 필터(320)는 루프 필터(220)와 동일한 기능을 가질 수 있다. 디코딩된 픽처 버퍼(330)는 디코딩된 픽처 버퍼(230)와 동일한 기능을 가질 수 있다.
예측 처리 유닛(360)은 인터 예측 유닛(344) 및 인트라 예측 유닛(354)을 포함할 수 있다. 인터 예측 유닛(344)의 기능은 인터 예측 유닛(244)의 기능과 유사할 수 있고, 인트라 예측 유닛(354)의 기능은 인트라 예측 유닛(254)의 기능과 유사할 수 있다. 예측 처리 유닛(360)은 일반적으로 블록 예측을 수행하고/하거나 인코딩된 데이터(21)로부터 예측 블록(365)을 획득하고, (명시적 또는 암묵적으로) 예를 들어, 엔트로피 디코딩 유닛(304)으로부터의 예측 관련 파라미터 및/또는 선택된 예측 모드에 관한 정보를 수신하거나 획득하도록 구성된다.
비디오 슬라이스가 인트라 인코딩된(I) 슬라이스로서 인코딩되는 경우, 예측 처리 유닛(360)의 인트라 예측 유닛(354)은 시그널링된 인트라 예측 모드 및 현재 프레임 또는 픽처의 이전에 디코딩된 블록으로부터의 데이터에 기초하여 현재 비디오 슬라이스의 픽처 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 비디오 프레임이 인터 인코딩된(B 또는 P) 슬라이스로 인코딩되는 경우, 예측 처리 유닛(360)의 인터 예측 유닛(344)(예: 움직임 보상 유닛)은 엔트로피 디코딩 유닛(304)으로부터 수신되는 움직임 벡터 및 다른 신택스 요소에 기초하여 현재 비디오 슬라이스의 비디오 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 인터 예측의 경우, 예측 블록은 하나의 참조 픽처 목록 내의 하나의 참조 픽처로부터 생성될 수 있다. 비디오 디코더(30)는 DPB(330)에 저장된 참조 픽처에 기초하여 디폴트 구축 기술을 사용하여, 참조 프레임 목록: 목록 0 및 목록 1을 구축할 수 있다.
예측 처리 유닛(360)은 움직임 벡터 및 다른 신택스 요소를 파싱함으로써 현재 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 예측 정보를 사용하여 디코딩되고 있는 현재 비디오 블록에 대한 예측 블록을 생성하도록 구성된다. 본 발명의 일례에서, 예측 처리 유닛(360)은 수신된 일부 신택스 요소를 이용하여, 비디오 슬라이스의 비디오 블록을 인코딩하기 위한 예측 모드(예: 인트라 또는 인터 예측), 인터 예측 슬라이스 유형(예: B 슬라이스, P 슬라이스, 또는 GPB 슬라이스), 슬라이스에 대한 참조 픽처 목록 중 하나 이상의 구성 정보, 슬라이스의 각각의 인터 인코딩된 비디오 블록에 대한 움직임 벡터, 슬라이스의 각각의 인터 인코딩된 비디오 블록의 인터 예측 상태, 및 다른 정보를 결정하여, 현재 비디오 슬라이스의 비디오 블록을 디코딩한다. 본 개시의 다른 예에서, 비트스트림으로부터 비디오 디코더(30)에 의해 수신된 신택스 요소는 적응적 파라미터 세트(adaptive parameter set, APS), 시퀀스 파라미터 세트(sequence parameter set, SPS), 픽처 파라미터 세트(picture parameter se, PPS), 또는 슬라이스 헤더 중 하나 이상에 신택스 요소를 포함한다.
역양자화 유닛(310)은 비트스트림에 제공되고 엔트로피 디코딩 유닛(304)에 의해 디코딩되는 양자화된 변환 계수에 대해 역양자화(즉, 양자화 해제)를 수행하도록 구성될 수 있다. 역양자화 프로세스는 다음을 포함할 수 있다: 적용되어야 하는 양자화의 정도 및 마찬가지로 적용되어야 하는 역양자화의 정도를 결정하기 위해, 비디오 슬라이스의 각각의 비디오 블록에 대해 비디오 인코더(20)에 의해 계산된 양자화 파라미터를 사용.
역변환 처리 유닛(312)은 픽셀 도메인에서 잔차 블록을 생성하기 위해, 변환 계수에 역변환(예: 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역변환 프로세스)을 적용하도록 구성된다.
재구축 유닛(314)(예: 합산기(314))은, 예를 들어, 재구축된 잔차 블록(313)의 샘플 값을 예측 블록(365)의 샘플 값에 가산함으로써, 역변환 블록(313)(즉, 재구축된 잔차 블록(313))을 예측 블록(365)에 추가하여, 샘플 도메인에서 재구축된 블록(315) 및 예측 블록(365)의 샘플 값을 사용하여 샘플 도메인에서 재구축된 블록(315)을 획득한다.
루프 필터 유닛(320)(코딩 루프 동안 또는 코딩 루프 이후)은, 픽셀 이행을 매끄럽게하거나 비디오 품질을 개선하기 위해, 재구축된 블록(315)을 필터링하여 필터링된 블록(321)을 획득하도록 구성된다. 일례에서, 루프 필터 유닛(320)은 아래에 설명된 필터링 기술의 임의의 조합을 수행하도록 구성될 수 있다. 루프 필터 유닛(320)은 하나 이상의 루프 필터, 예를 들어 디블록킹 필터, 샘플 적응적 오프셋(sample-adaptive offset, SAO) 필터, 또는 양방향 필터, 적응적 루프 필터(adaptive loop filter, ALF), 샤프닝 또는 스무딩 필터, 또는 협업필터와 같은 다른 필터를 나타내기 위한 것이다. 루프 필터 유닛(320은 도 3에서 인루프 필터로 도시되어 있지만, 다른 구성에서, 루프 필터 유닛은(320)는 포스트 루프 필터로 구현될 수 있다.
주어진 프레임 또는 픽처의 디코딩된 비디오 블록(321)은 이후에 후속 움직임 보상에 사용되는 참조 픽처를 저장하는 디코딩된 픽처 버퍼(330)에 저장된다.
디코더(30)는 예를 들어, 사용자에게 제시하거나 사용자에 의한 보기를 위해 출력(332)을 통해 디코딩된 픽처(31)를 출력하도록 구성된다.
비디오 디코더(30) 의 다른 변형은 압축된 비트스트림을 디코딩하는 데 사용될 수 있다. 예를 들어, 디코더(30)는 루프 필터 유닛(320) 없이 출력 비디오 비트스트림을 생성할 수 있다. 예를 들어, 비변환 기반 디코더(30)는 일부 블록 또는 프레임에 대해 역변환 처리 유닛(312) 없이 잔차 신호를 직접 역양자화할 수 있다. 다른 구현에서, 비디오 디코더(30)는 단일 유닛으로 결합되는 역양자화 유닛 (310) 및 역변환 처리 유닛 (312)을 가질 수도 있다.
구체적으로, 본 발명의 이 실시예에서, 디코더(30)는 다음 실시예에서 설명되는 움직임 벡터 예측 방법을 구현하도록 구성된다.
비디오 디코더(30)의 다른 구조적 변형은 인코딩된 비디오 비트스트림을 디코딩하도록 구성될 수도 있음을 이해해야 한다. 예를 들어, 비디오 디코더(30)는 필터(320)에 의한 처리 없이 출력 비디오 비트스트림을 생성할 수 있다. 대안적으로, 비디오 디코더(30)의 엔트로피 디코딩 유닛(304)은 일부 픽처 블록 또는 픽처 프레임에 대해, 디코딩을 통해 양자화된 계수를 획득하지 않으며, 이에 상응하여 역양자화 유닛(310) 및 역변환 처리 유닛(312)에 의한 처리가 필요하지 않다. 루프 필터(320)는 선택적이며, 무손실 압축의 경우, 역양자화 유닛(310) 및 역변환 처리부(312)는 선택적이다. 상이한 적용 시나리오에 따라, 인터 예측 유닛 및 인트라 예측 유닛이 선택적으로 인에이블될 수 있음을 이해해야 한다.
본 출원의 인코더(20) 및 디코더(30)에서, 프로시저에 대한 처리 결과는 추가 처리된 후 다음 프로시저에 출력될 수 있음을 이해해야 한다. 예를 들어, 보간 필터링, 움직임 벡터 도출, 또는 루프 필터링과 같은 프로시저 이후에 대응하는 프로시저의 처리 결과에 대해 클립(clip) 또는 시프트(shift)와 같은 연산이 추가로 수행된다.
예를 들어, 현재 픽처 블록의 제어 포인트의 움직임 벡터 또는 이웃하는 아핀 코딩 블록의 움직임 벡터로부터 도출된 현재 픽처 블록의 서브블록의 움직임 벡터는 추가로 처리될 수 있다. 이것은 본 출원에서 한정되지 않는다. 예를 들어, 움직임 벡터의 값은 특정 비트 심도 범위 내로 제한된다. 움직임 벡터의 허용 비트 깊이가 bitDepth라고 가정하면, 움직임 벡터의 값은 -2^(bitDepth - 1) ∼ 2^(bitDepth - 1) - 1의 범위이며, 여기서 "^" 기호는 지수를 나타낸다. bitDepth가 16이면, 값의 범위는 -32768부터 32767까지이다. bitDepth가 18이면, 값의 범위는 -131072부터 131071까지이다. 다른 예로, 움직임 벡터의 값(예: 하나의 8 x 8 픽처 블록 내의 4개의 4 x 4 움직임 벡터)은 제한되어, 4개의 4 x 4 서브블록의 MV의 정수 부분 사이의 최대 차이가 N개 픽셀을 초과하지 않도록 하며, 예를 들어 1 픽셀을 초과하지 않는다.
움직임 벡터의 값을 특정 비트 심도 범위 내에 있도록 제한하기 위해 다음 두 가지 방식이 사용될 수 있다.
방식 1: 움직임 벡터의 오버플로 최상위 비트(overflow most significant bit)가 제거된다.
Figure pct00001
vx는 픽처 블록 또는 픽처 블록의 서브블록의 움직임 벡터의 수평 성분을 나타낸다. vy는 픽처 블록 또는 픽처 블록의 서브블록의 움직임 벡터의 수직 성분을 나타낸다. ux 및 uy는 중간 값이다. bitDepth는 비트 심도를 나타낸다.
예를 들어, vx의 값은 -32769이고, 전술한 식에 따라 32767이 획득된다. 값은 2의 보수 표현으로 컴퓨터에 저장되고, -32769의 2의 보수 표현은 1,0111,1111,1111,1111(17비트)이며, 컴퓨터에 의해 오버플로에 대해 수행되는 처리는 최상위 비트를 폐기하는 것이다. 따라서, vx의 값은 0111,1111,1111,1111, 즉 32767이다. 이 값은 식에 따라 처리한 결과와 일치한다.
방식 2: 클리핑(clipping)이 다음 공식에 따라 움직임 벡터에 대해 수행된다:
Figure pct00002
vx는 픽처 블록 또는 픽처 블록의 서브블록의 움직임 벡터의 수평 성분을 나타낸다. vy는 픽처 블록 또는 픽처 블록의 서브블록의 움직임 벡터의 수직 성분을 나타낸다. x, y 및 z는 각각 MV 클램핑 프로세스 Clip 3의 3개의 입력 값에 대응한다. Clip 3은 z 값을 범위 [x, y]로 클리핑하는 것을 지시하도록 정의된다.
Figure pct00003
도 4는 본 발명의 일 실시예에 따른 비디오 코딩 기기(400)(예: 비디오 인코딩 기기(400) 또는 비디오 디코딩 기기(400))의 개략도이다. 비디오 코딩 기기(400)는 본 출원에 기술된 실시예들을 구현하는 데 적합하다. 일 실시예에서, 비디오 코딩 기기(400)는 비디오 디코더(예:도 1a의 비디오 디코더(30)) 또는 비디오 인코더(예: 도 1a의 비디오 인코더(20))일 수 있다.
비디오 코딩 기기(400)는 데이터를 수신하기 위한 입구 포트(410) 및 수신 유닛(Rx)(420); 데이터를 처리하기 위한 프로세서, 로직 유닛 또는 중앙 처리 장치(central processing unit, CPU)(430); 데이터를 송신하기 위한 송신기 유닛(Tx)(440) 및 출구 포트(450); 및 데이터를 저장하기 위한 메모리(460)를 포함한다. 비디오 코딩 기기(400)는 또한 입구 포트(410), 수신기 유닛(420), 송신기 유닛(440) 및 출구 포트(450)에 결합된, 광 또는 전기 신호의 유출 또는 유입을 위한 광전(optical-to-electrical) 변환 구성요소 및 전광(electrical-to-optical, EO) 구성요소를 포함할 수 있다.
프로세서(430)는 하드웨어 및 소프트웨어를 사용하여 구현될 수 있다. 프로세서(430)는 하나 이상의 CPU 칩, 코어(예: 멀티 코어 프로세서), FPGA, ASIC 및 DSP로 구현될 수 있다. 프로세서(430)는 입구 포트(410), 수신기 유닛(420), 송신기 유닛(440), 출구 포트(450) 및 메모리(460)와 통신할 수 있다. 프로세서(430)는 코딩 모듈(470)(예: 인코딩 모듈(470) 또는 디코딩 모듈(470))을 포함할 수 있다. 인코딩/디코딩 모듈(470)은 본 발명의 실시예에서 제공되는 크로마 블록 예측 방법을 구현하기 위해. 본 명세서에 개시된 실시예를 구현한다. 예를 들어, 인코딩/디코딩 모듈(470)은 다양한 코딩 동작(coding operation)을 구현, 처리, 준비 또는 제공할 수 있다. 따라서 인코딩/디코딩 모듈(470)은 비디오 코딩 기기(400)의 기능에 실질적인 개선을 제공하고 비디오 코딩 기기(400)의 다른 상태로의 변환에 영향을 미친다. 대안적으로, 인코딩/디코딩 모듈(470)은 메모리(460)에 저장되고 프로세서(430)에 의해 실행되는 명령어로서 구현된다.
메모리(460)는 프로그램이 실행을 위해 선택될 때 그 프로그램을 저장하고, 프로그램 실행 중에 판독되는 명령어 및 데이터를 저장하기 위해, 하나 이상의 디스크, 테이프 드라이브 및 솔리드 스테이트 드라이브(solid-state drive)를 포함할 수 있으며, 오버플로 데이터 저장 기기로 사용될 수 있다. 메모리(460)는 예를 들어, 휘발성 및/또는 비휘발성일 수 있고 판독 전용 메모리(read-only memory, ROM), 랜덤 액세스 메모리(read-only memory, RAM), 터너리 콘텐츠 주소지정 가능 메모리(ternary content-addressable memory, TCAM) 및/또는 정적 랜덤 액세스 메모리(SRAM)일 수 있다.
도 5는 예시적인 실시예에 따른 도 1a의 근원지 기기(12) 및 목적지 기기(14) 중 하나 또는 둘 모두로서 사용될 수 있는 장치(500)의 간략화된 블록도이다. 장치(500)는 본 출원의 기술을 구현할 수 있다. 다시 말해, 도 5는 본 출원의 실시예에 따른 인코딩 기기 또는 디코딩 기기(줄여서 코딩 기기(500))의 구현의 개략적인 블록도이다. 코딩 기기(500)는 프로세서(510), 메모리(530) 및 버스 시스템(550)을 포함할 수 있다. 프로세서와 메모리는 버스 시스템을 통해 연결된다. 메모리는 명령어를 저장하도록 구성된다. 프로세서는 메모리에 저장된 명령어를 실행하도록 구성된다. 코딩 기기의 메모리는 프로그램 코드를 저장한다. 프로세서는 메모리에 저장된 프로그램 코드를 호출하여 본 출원에 기술된 다양한 비디오 인코딩 또는 디코딩 방법, 특히 다양한 새로운 인터 예측 방법을 수행할 수 있다. 반복을 피하기 위해, 여기에서는 세부 사항을 설명하지 않는다.
본 출원의 이 실시예에서, 프로세서(510)는 중앙 처리 장치(Central Processing Unit, 줄여서 "CPU")일 수 있거나, 프로세서(510)는 다른 범용 프로세서, 디지털 신호 프로세서(DSP), 애플리케이션 특정 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 또는 다른 프로그램 가능한 논리 디바이스, 이산 게이트 또는 트랜지스터 논리 디바이스, 이산 하드웨어 구성요소 등일 수 있다. 범용 프로세서는 마이크로프로세서일 수 있고, 프로세서는 임의의 통상적인 프로세서 등일 수 있다.
메모리(530)는 판독 전용 메모리(ROM) 디바이스 또는 랜덤 액세스 메모리(RAM) 디바이스를 포함할 수 있다. 임의의 다른 적절한 유형의 저장 디바이스가 대안적으로 메모리(530)로서 사용될 수 있다. 메모리(530)는 버스(550)를 통해 프로세서(510)에 의해 액세스되는 코드 및 데이터(531)를 포함할 수 있다. 메모리(530)는 운영 체제(533) 및 애플리케이션 프로그램(535)를 더 포함할 수 있다. 애플리케이션 프로그램(535)은 프로세서(510)가 본 출원에 기술된 비디오 인코딩 또는 디코딩 방법(특히, 본 출원에 기술된 움직임 벡터 예측 방법)을 수행할 수 있도록 하는 적어도 하나의 프로그램을 포함한다. 예를 들어, 애플리케이션 프로그램(535)은 애플리케이션 1 ∼ 애플리케이션 N을 포함할 수 있고, 본 출원에 기술된 비디오 인코딩 또는 디코딩 방법을 수행하는 데 사용되는 비디오 인코딩 또는 디코딩 애플리케이션(간단히 비디오 코딩 애플리케이션으로 지칭됨)을 더 포함할 수 있다.
버스 시스템(550)은 데이터 버스 외에 전원 버스, 제어 버스, 상태 신호 버스 등을 더 포함할 수 있다. 다만, 명확한 설명을 위해, 도면에는 다양한 형태의 버스를 버스 시스템(550)으로 표기하였다.
선택적으로, 코딩 기기(500)는 디스플레이(570)와 같은, 하나 이상의 출력 기기를 더 포함할 수 있다. 일례에서, 디스플레이(570)는 터치 입력을 감지하도록 동작 가능한, 디스플레이와 터치 감지 유닛을 결합한 터치 감지 디스플레이(touch-sensitive display)일 수 있다. 디스플레이(570)는 버스(550)를 통해 프로세서(510)와 연결될 수 있다.
도 4 및 도 5에 도시된 장치 또는 기기는 모두 본 출원의 실시예에서의 방법들을 수행하도록 구성될 수 있다.
전술한 바와 같이, 인터 예측은 비디오 인코딩 및 디코딩 시스템의 중요한 부분이다.
HEVC에서는 다음 두 가지 인터 예측 모드가 도입된다: 향상된 움직임 벡터 예측(Advanced Motion Vector Prediction, AMVP) 모드 및 병합(Merge) 모드.
AMVP 모드에서, 후보 움직임 벡터 리스트가 현재 코딩 유닛에 공간적으로 또는 시간적으로 이웃하는 코딩된 유닛의 움직임 정보에 기초하여 구축되고, 그런 다음, 후보 움직임 벡터 리스트에서 최적 움직임 벡터가 결정되어 현재 코딩 유닛의 움직임 벡터 예측자(Motion vector predictor, MVP)로서 사용된다. 레이트 왜곡 비용(rate-distortion cost)은 식 (1)에 따라 계산되며, 여기서 J는 레이트 왜곡 비용(rate-distortion cost, RD Cost)을 나타내고, SAD는 후보 움직임 벡터 예측자를 사용하여 수행되는 움직임 추정을 통해 획득되는 원본(original) 샘플 값과 예측된 샘플 값 사이의 절대 차의 합(Sum of Absolute Differences, SAD)을 나타내고, R은 비트 레이트를 나타내고, λ는 라그랑주 승수(Lagrange multiplier)를 나타낸다. 인코더 측은 디코더 측에, 후보 움직임 벡터 리스트에 있고 레이트 왜곡 비용에 기초하여 선택된 움직임 벡터 예측자의 색인 값과 참조 색인 값을 전송한다. 또한, 현재 코딩 블록의 실제 움직임 벡터를 획득하기 위해, MVP 중심의 이웃 영역에서 움직임 검색을 수행한다. 인코더 측은 MVP와 실제 움직임 벡터 사이의 차이(Motion vector difference, MVD)를 디코더 측에 전송한다.
Figure pct00004
병합 모드에서, 후보 움직임 정보 리스트는 먼저 현재 현재 코딩 유닛의 공간적으로 또는 시간적으로 이웃하는 코딩된 유닛의 움직임 정보에 기초하여 구축되고, 그 다음 레이트 왜곡 비용 기준에 따라 후보 움직임 정보 리스트로부터 최적 움직임 정보가 결정되어 현재 코딩 블록의 움직임 정보로서 사용되며; 후보 움직임 정보 리스트 내의 최적 움직임 정보의 위치의 색인 값(병합 색인으로 표시되며, 이하에서도 동일)이 디코더 측에 전송된다. 현재 코딩 블록의 공간적으로 또는 시간적으로 이웃하는 코딩 유닛의 후보 움직임 정보는 도 6에 도시되어 있다. 공간 후보 움직임 정보는 공간적으로 이웃하는 5개의 블록(A0, A1, B0, B1, B2)에서 온 것이다. 이웃 블록(neighboring block)을 이용 불가능하거나 인트라 코딩 모드 또는 인트라 블록 복사 모드에 있으면, 이웃 블록은 후보 움직임 정보 목록에 추가되지 않는다. 현재 코딩 유닛의 시간 후보 움직임 정보는 참조 프레임 및 현재 프레임의 픽처 순서 카운트(Picture order count, POC)에 기초하여 참조 프레임 내의 병치된 블록의 MV를 스케일링함으로써 획득된다. 병치된 블록의 결정은 다음을 포함한다: 먼저, 참조 프레임에서 T 위치에 있는 블록이 이용 가능한지를 판정하고, 위치 T의 블록이 이용 불가능하면, C 위치의 블록을 병치된 블록으로서 선택한다.
HEVC에서의 인터 예측 시에, 인코딩 유닛의 모든 픽셀이 동일한 움직임 정보를 갖는다는 가정에 기초하여 움직임 보상을 수행하여, 인코딩 유닛 내의 픽셀의 예측 값을 획득한다. 그러나 인코딩 유닛에서, 모든 픽셀이 반드시 동일한 움직임 특징을 가지는 것은 아니다. 따라서, 동일한 움직임 정보를 사용하여 CU 내의 모든 픽셀에 대한 예측은 움직임 보상의 정확도를 감소시키고, 잔차 정보를 더욱 증가시킬 수 있다.
코딩 효율을 더욱 증가시키기 위해, 일부 실행 가능한 구현에서, 코딩 유닛은 적어도 2개의 코딩 서브유닛으로 분할되고, 그 다음, 각각의 코딩 서브유닛의 움직임 정보가 도출되며, 움직임 보상은 코딩 서브유닛의 움직임 정보에 기초하여 수행된다. 이것은 예측 정확도를 향상시킨다. 예를 들어, 서브코딩 유닛 기반 움직임 벡터 예측(Sub-CU based motion vector prediction, SMVP) 기술이 사용된다.
SMVP에 따르면, 현재 인코딩 유닛은 M x N 크기의 인코딩 유닛으로 분할되고, 각각의 인코딩 유닛의 움직임 정보를 도출된 다음, 각각의 인코딩 유닛의 움직임 정보를 이용하여 움직임 보상이 수행되어, 현재 코딩 유닛의 예측 값을 획득한다.
SMVP 기술에 기초하여, 하나 또는 두 가지 유형의 후보 움직임 정보, 즉 향상된 시간적 움직임 벡터 예측(Advanced temporal motion vector predictionn, ATMVP) 및/또는 공간-시간적 움직임 벡터 예측(Spatial-temporal motion vector prediction, STMVP)가 병합 모드의 후보 예측 움직임 정보 목록에 추가된다. 이에 상응하여, 후보 예측 움직임 정보 목록는 서브블록 기반 병합 후보 목록(subblock-based merging candidate list)으로도 지칭된다.
일부 실현 가능한 구현에서, 서브블록 기반 병합 후보 목록은, ATMVP 예측 모드, 아핀 모델 기반 예측 모드(상속된(inherited) 제어 포인트 움직임 벡터가 사용되는 예측 방법 및/또는 구축된 제어 포인트 움직임 벡터가 사용되는 예측 방법 포함), 인터 평면(PLANAR) 예측 모드 중 하나 이상을 포함한다.
도 7에 도시된 바와 같이, ATMVP 기술에 따르면, 병치된 참조 프레임(Collocated reference picture)을 먼저 결정한 다음, 현재 인코딩 유닛을 M x N 크기의 인코딩 서브유닛으로 분할하고, 각각의 현재 코딩 서브유닛에 대응하고 병치된 참조 프레임에 있는 코딩 서브유닛의 중심 위치에 있는 픽셀의 움직임 정보를 획득하고, 스케일링하고, 현재 코딩 서브유닛의 움직임 정보로 변환한다. ATMVP는 또한 서브블록 기반 시간적 움직임 벡터 예측(subblock-based temporal motion vector prediction, SbTMVP)도 지칭된다.
STMVP 기술에 따르면, 각각의 현재 인코딩 서브유닛의 공간적으로 위에(upper) 이웃하는 위치의 움직임 정보, 공간적으로 좌측에 이웃하는 위치의 움직임 정보, 시간적으로 우측 아래에 이웃하는 위치의 움직임 정보가 획득되고, 이들 움직임 정보의 평균이 계산되어 현재 인코딩 서브유닛의 움직임 정보로 변환된다. 도 8에 도시된 바와 같이, 현재 인코딩 유닛은 4개의 인코딩 서브유닛(A, B, C, D)으로 분할된다. A가 예로서 사용된다. 코딩 서브유닛 A의 움직임 정보는 병치된 참조 프레임에서 공간적으로 이웃한 위치 c와 b의 움직임 정보와 위치 D의 움직임 정보를 이용하여 도출된다.
SMVP 기술을 사용한 후, ATMVP 후보 움직임 정보와 STMVP 후보 움직임 정보가 병합 모드의 후보 움직임 정보 목록에 추가된다. 이 경우, 병합 모드에서의 인코딩 프로세스는 다음과 같다:
(1) 공간적으로 이웃한 위치 A1, B1, B0, A0에서 움직임 정보를 순차적으로 획득하고, 각각의 위치에서 움직임 정보의 가용성을 확인하고, 선택적으로 중복 항목을 제거하고, 제거되지 않은 이용 가능한 움직임 정보를 후보 움직임 정보 목록에 삽입한다.
(2) ATMVP 및 STMVP 기술을 이용하여 대응하는 움직임 정보를 획득하고, 가용성 확인하고 중복 항목을 제거하며, 획득된 움직임 정보의 가용성 확인하고, 선택적으로 중복 항목을 제거하고, 이용 가능한 삭제되지 않은 움직임 정보를 후보 움직임 정보 목록에 삽입한다.
(3) 후보 움직임 정보 목록의 길이가 6보다 작은 경우, 위치 B2의 움직임 정보를 획득하고, 움직임 정보의 가용성을 확인하고, 선택적으로 중복 항목을 제거하고, 움직임 정보가 이용 가능하고 제거되지 않은 경우 움직임 정보를 후보 움직임 정보 목록에 삽입한다.
(4) 이웃하는 인코딩된 프레임에서 위치 T에 대응하는 블록의 움직임 정보 획득(움직임 정보가 존재하지 않으면, 위치 C에 대응하는 블록의 움직임 정보 획득)하고, 이웃하는 인코딩된 프레임과 현재 프레임 사이의 POC 관계에 기초하여 스케일링 수행하고, 스케일링된 움직임 정보를 후보 움직임 정보 목록에 삽입한다.
(5) 후보 움직임 정보 목록의 길이가 7보다 작은 경우, 움직임 정보를 채워 길이가 7인 후보 움직임 정보 목록을 획득하며, 여기서 채워진 움직임 정보는 0 또는 사전 합의된 방식으로 획득된 다른 움직임 정보일 수 있다. 이는 한정되지 않는다.
(6) 후보 움직임 정보 목록에 있는 후보 움직임 정보 각각을 순회하고, 움직임 보상 및 재구축을 수행하여 재구축된 값을 획득한 다음, 레이트 왜곡 최적화 방법*Rate-distortion optimization, RDO)에 따라 가장 낮은 레이트 왜곡 비용(Rate-Distortion Cost, RD 비용)을 갖는 후보 움직임 정보를 결정하여, 최소 RD 비용을 갖는 후보 움직임 정보에 대응하는 병합 색인를 획득한다.
(7) 후보 움직임 정보 목록의 길이에 기초하여 병합 색인을 비트스트림에 기록하고, 그 비트스트림을 디코더 측에 전송한다.
ATMVP 기술을 이용하여 현재 처리될 픽처에 대해 인터 예측을 수행하는 프로세스는 주로 다음을 포함한다: 현재 처리될 픽처에서 현재 처리될 블록의 오프셋 움직임 벡터를 결정하고; 현재 처리될 블록에서의 처리될 서브블록의 위치와 오프셋 움직임 벡터에 기초하여, 병치된 참조 픽처에서의 처리될 서브블록의 병치된 서브블록을 결정하고; 병치된 서브블록의 움직임 벡터에 기초하여 현재 처리될 서브블록의 움직임 벡터를 결정하고; 처리될 서브블록의 움직임 벡터에 기초하여 처리될 서브블록에 대해 움직임 보상 예측을 수행하여, 처리될 서브블록의 예측 픽셀 값을 획득한다.
구체적으로, 도 9에 도시된 바와 같이, 실현 가능한 구현에서, 방법은 다음 단계를 포함한다.
S901: 오프셋 움직임 벡터(offset motion vector)를 획득한다.
오프셋 움직임 벡터는 현재 CU(즉, 현재 처리될 CU, 또는 처리될 블록, 인코딩될 블록, 디코딩될 블록 등으로도 지칭될 수 있음)에서 미리 설정된 위치 포인트에 대응하는 포인트이고 병치된 픽처(collocated picture)에 있는 포인트의 위치를 결정하는 데 사용된다. 현재 CU의 공간적으로 이웃하는 블록의 움직임 벡터는 오프셋 움직임 벡터로 사용될 수 있다. 현재 CU가 위치하는 프레임의 병치된 픽처는 비트스트림을 파싱함으로써 획득될 수 있거나, 미리 설정된 값(미리 설정된 값은 인코더 측과 디코더 측에서 동일함)을 갖는 픽처일 수 있다. 예를 들어, 병치된 픽처는 현재 CU의 참조 프레임 목록에서 참조 프레임 색인이 0인 픽처라고 가정한다. 일부 실현 가능한 구현에서, 병치된 픽처 블록에서 현재 CU의 위치는 또한 오프셋 움직임 벡터 및 병치된 픽처 블록에 기초하여 결정될 수도 있다. 그 위치의 블록은 병치된 블록(대응하는/병치된 블록)으로 지칭될 수 있다.
예를 들어, 오프셋 움직임 벡터는 다음 방법 중 어느 하나를 사용하여 획득될 수 있다.
방법 1: 도 6에서 A1의 움직임 벡터가 이용 가능한지를 판정한다. 움직임 벡터가 이용 가능하다는 것은 움직임 벡터가 존재하고 획득될 수 있다는 것을 의미함을 이해해야 한다. 예를 들어, 이웃하는 블록의 움직임 벡터는, 이웃하는 블록이 존재하지 않거나, 이웃하는 블록과 현재 블록이 동일한 코딩 영역(예: 슬라이스(slice), 타일(tile), 또는 타일 그룹(tile group))에 있지 않거나, 또는 이웃하는 블롯에 인트라 예측 모드 또는 인트라 블록 복사 모드(intra block copy, IBC)가 이웃 블록에 사용된다. 반대로, 주변 블록의 움직임 벡터는 주변 블록에 인터 예측 모드를 사용하거나, 이웃하는 블록에 인터 예측 모드이 사용되고 이웃하는 블록과 현재 블록이 동일한 디코딩 영역에 있는 경우에 이용 가능하다.
인트라 블록 복사 모드의 경우, 인트라 블록 복사 코딩 도구가 HEVC의 화면 콘텐츠 코딩(screen content coding, SCC) 표준과 같은 확장된 표준에서 사용되며, 주로 화면 콘텐츠 비디오의 코딩 효율을 높이기 위해 사용된다. IBC 모드는 블록 레벨 코딩 모드이다. 인코더 측에서는 블록 매칭 방법을 사용하여 각각의 CU에 대한 최적의 블록 벡터 또는 움직임 벡터를 찾는다. 여기서 움직임 벡터는 주로 현재 블록에서 참조 블록으로의 변위를 나타내기 위해 사용되며, 변위 벡터(displacement vector)로도 지칭된다. 참조 블록은 현재 픽처에서 재구축된 블록이다. IBC 모드는 인트라 예측 모드 또는 인터 예측 모드 이외의 제3 예측 모드로 간주될 수 있다. 저장 공간을 절약하고 디코더의 복잡도을 줄이기 위해, 일부 구현에서, IBC 모드는 현재 CTU의 미리 정의된 영역에서 재구축된 부분만이 예측에 사용되도록 허용한다.
A1이 이용 불가능한 경우, 현재 CU의 오프셋 움직임 벡터로서 영 움직임 벡터가 사용될 수 있다.
A1은 제1 참조 프레임 목록 0에 기초한 제1 방향 움직임 벡터와 제2 참조 프레임 목록 1에 기초한 제2 방향 움직임 벡터를 가질 수 있다고 가정한다.
A1이 이용 가능한 경우, A1이 다음 조건 (1) ∼ (5)을 모두 충족하면,
목록 1에 기초하는, A1의 제2 방향 움직임 벡터가 현재 CU의 오프셋 움직임 벡터로 사용된다. 조건은 다음과 같다.
(1) 목록 1 내의 참조 프레임이 예측을 위한 A1에 사용된다.
(2) 예측에 사용되는 A1의 목록 1 내의 참조 프레임은 현재 CU가 위치하는 이미지 프레임의 병치된 픽처와 동일하다.
예를 들어, 목록 1 내의 참조 프레임의 POC가 현재 CU가 위치하는 이미지 프레임의 병치된 픽처의 POC와 동일한지를 결정할 수 있으며, 여기서, 병치된 픽처를 나타내는 정보는 비트스트림을 파싱함으로써 획득될 수 있다.
(3) 저지연 인코딩 구조가 사용되는데, 구체적으로는, 인코딩될/디코딩될/가처리될 픽처의 참조 프레임이 모두 인코딩될/디코딩될/처리될 픽처 앞에 표시된다.
공될 영상보다 먼저 표시된다.
(4) 현재 CU가 위치하는 픽처의 픽처 유헝이 B 픽처이거나, 현재 CU가 위치하는 타일이 B 타일이거나, 또는 현재 CU가 위치하는 타일 그룹(tile group)이 B 타일 그룹이다.
(5) 현재 CU가 위치하는 픽처의 병치된 픽처가 목록 1로부터 획득된다. 예를 들어, 신택스 요소 collocated_from_l0_flag의 값은 0이다.
그렇지 않고, A1이 이용 가능하지만 전술한 조건 중 적어도 하나를 충족하지 않는 경우, A1이 다음 조건 (6) 및 (7)을 충족하면, A1의, 목록 0에 기초하는 제1 방향 움직임 벡터가 현재 CU의 오프셋 움직임 벡터로 사용된다. 조건은 다음과 같다.
(6) 목록 0 내의 참조 프레임이 예측을 위한 A1에 사용된다.
(7) 예측에 사용된 A1의 목록 0 내의 참조 프레임은 현재 CU가 위치하는 이미지 프레임의 병치된 픽처와 동일하다.
방법 2: 도 6의 A1, B1, B0, A0의 시퀀스에서 첫 번째 이용 가능한 이웃 블록의 움직임 벡터를 찾는다. 이웃하는 블록의 참조 프레임이 현재 CU가 위치하는 프레임의 병치된 픽처이면, 즉 발견된 움직임 벡터가 병치된 픽처를 가리키면, 이웃 블록의 움직임 벡터를 현재 CU의 오프셋 움직임 벡터로서 사용된다. 그렇지 않고, 이웃 블록의 참조 프레임이 현재 CU가 위치하는 프레임의 병치된 픽처가 아니면, 실현 가능한 구현에서, 영 움직임 벡터가 현재 CU의 오프셋 움직임 벡터로 사용될 수 있다. 다른 실현 가능한 구현에서, 첫 번째 이용 가능한 이웃 블록의 움직임 벡터는 병치된 픽처의 POC, 현재 CU가 위치하는 픽처의 POC, 및 첫 번째 이용 가능한 이웃 블록의 참조 프레임의 POC에 기초하여 스케일링되므로, 스케일링된 움직임 벡터가 병치된 픽처를 가리킬 수 있으며; 스케일링된 움직임 벡터는 현재 CU의 오프셋 움직임 벡터로 사용된다. 구체적인 스케일링 방법은, 종래 기술에서 시간적 움직임 벡터를 구하는 방법, 또는 이 실시예에서의 단계 1005의 스케일링 방법을 참조한다. 자세한 내용은 설명하지 않습니다.
오프셋 움직임 벡터가 영 움직임 벡터인 경우, 병치된 픽처에 있고 현재 CU와 동일한 위치에 있는 픽처 블록은 병치된 픽처에서 현재 CU의 병치된 블록임을 이해해야 한다.
조건을 충족하는 현재 CU의 오프셋 움직임 벡터를 전술한 방법으로 획득할 수 없는 경우, ATMVP 예측 모드를 사용하여 현재 CU의 서브블록의 움직임 벡터를 획득할 수 없다.
S902: 오프셋 움직임 벡터에 기초하여, ATMVP 모드가 이용 가능한지를 판정한다.
구체적으로, 현재 CU에서 미리 설정된 위치 포인트에 대응하고 병치된 픽처 내에 있는 포인트가 서브블록 S이고, 서브블록 S의 좌표 위치가 (xcol, ycol)인 픽처 블록을 가정한다.
Figure pct00005
(x, y)는 현재 CU의 좌측 상단 모서리의 좌표를 나타내고, W는 현재 CU의 너비를 나타내고, H는 현재 CU의 높이를 나타내고, (
Figure pct00006
,
Figure pct00007
)는 오프셋 움직임 벡터를 나타낸다.
서브블록 S의 예측 모드가 인트라 예측 모드 또는 인트라 블록 복사 모드인 경우, ATMVP 모드가 이용 불가능한 것으로 판정하고, 단계 902 이후의 단계를 수행하지 않는다.
서브블록 S의 예측 모드가 인터 예측 모드인 경우, ATMVP 모드가 이용 가능한 것으로 판정한다. 또한, 서브블록 S의 움직임 정보, 구체적으로 좌표 위치(xcol, ycol)에 대응하는 움직임 정보를 획득하여, 초기 디폴트 움직임 벡터로서 결정한다.
초기 기본 움직임 벡터 MV는, 처리될 서브블록의 기본 움직임 벡터(MV)를 획득하기 위해 스케일링된다.
예를 들어, 도 10에 도시된 바와 같이, MV는 식 (3)에 따라 획득될 수 있다:
Figure pct00008
CurPoc은 현재 CU가 위치하는 프레임의 POC를 나타내고, ColPoc은 병치된 픽처의 POC를 나타내고, CurRefPoc은 현재 CU의 참조 프레임의 POC를 나타내고, ColRefPoc은 서브블록 S의 참조 프레임의 POC를 나타낸다.
MV는 수평 방향의 움직임 벡터 MVx와 수직 방향의 움직임 벡터 MVy를 포함하고, 수평 방향의 스케일링된 움직임 벡터 MVsx와 수직 방향의 스케일링된 움직임 벡터 MVsy는 위 식에 따른 계산을 통해 개별적으로 획득될 수 있음을 이해해야 한다.
S903: 병치된 서브블록의 움직임 정보에 기초하여 처리될 서브블록의 움직임 정보 결정한다.
예를 들어, 도 11에 도시된 바와 같이, 처리될 블록, 즉 현재 CU는 현재 픽처 내에 위치하고, 처리될 블록은 4개의 서브블록을 포함하고, 하나의 처리될 서브블록은 처리될 블록의 좌측 상단 서브블록이다. 이 경우, 병치된 픽처에서 좌측 상단 위치의 서브블록이 처리될 서브블록의 병치된 서브블록으로서 결정될 수 있다. 서로 다른 병치된 서브블록이 하나의 병치된 블록 전체의 형태로 존재할 수도 있거나, 개별 서브블록의 형태로 존재할 수도 있음을 이해해야 한다.
예를 들어, 병치된 서브블록의 기하학적 중심 위치에 대응하는 움직임 정보가 획득될 수 있다. 구체적으로, 현재 CU의 (i,j)번째 처리될 서브블록(즉, 좌측에서 우측으로 i번째 서브블록이고 상단에서 하단으로 j번째 서브블록인 서브블록)의 병치된 서브블록의 중심 위치
Figure pct00009
는 식 (4)에 따라 획득될 수 있다.
Figure pct00010
(x, y)는 현재 CU의 좌측 상단 모서리 좌표를 나타내고, M은 처리될 서브블록의 너비를 나타내고, H는 처리될 서브블록의 높이를 나타낸다.
중앙 위치가 위치하는 픽처 블록의 예측 모드가 결정된다.
픽처 블록의 예측 모드가 인터 예측 모드인 경우, 중앙 위치의 움직임 벡터를 이용할 수 있고, 그 위치의 움직임 벡터를 획득한다. 처리될 서브블록이 위치한 이미지 프레임과 병치된 서브블록이 위치한 이미지 프레임 간의 시간적 관계에 기초하여 움직임 벡터에 스케일링 처리를 수행하여, 처리될 서브블록의 움직임 벡터를 획득한다. 스케일링 처리 방법은 식 (2)의 그것과 유사하다. 예를 들어,
Figure pct00011
MV는 중앙 위치의 움직임 벡터를 나타내고, MVR은 처리될 서브블록의 움직임 벡터를 나타낸다.
실현 가능한 구현에서, 현재 CU의 참조 프레임의 POC CurRefPoc는, 현재 CU가 위치하는 프레임의 참조 픽처 목록에서 참조 프레임 색인이 0인 참조 프레임의 POC로 미리 설정될 수 있다.
CurRefPoc은 대안적으로 현재 CU가 위치하는 프레임의 참조 픽처 목록 내의 다른 참조 프레임일 수 있으며, 이는 한정되지 않음을 이해해야 한다.
픽처 블록의 예측 모드가 인트라 예측 모드 또는 인트라 블록 복사 모드인 경우, 중앙 위치의 움직임 벡터는 이용 불가능하며, 단계 S902에서 결정되는 처리될 서브블록의 디폴트 움직임 벡터(MV)가 처리될 서브블록의 움직임 벡터로서 사용된다.
S904: 현재 CU의 서브블록의 움직임 정보에 기초하여 움직임 보상을 수행하여, 현재 CU의 예측된 픽셀 값을 획득한다.
각각의 서브블록에 대해, 단계 903에서 결정된 움직임 벡터와 현재 CU가 위치하는 픽처의 참조 프레임, 예를 들어 움직임 벡터 MVR 및 참조 프레임 CurRefPoc에 기초하여 움직임 보상이 수행되어, 서브블록의 예측된 픽셀을 획득한다. 움직임 보상 처리에 대해서는 전술한 설명 또는 종래 기술의 임의의 개선 방안을 참조한다. 자세한 내용은 다시 설명하지 않습니다.
현재 CU는 서브블록득을 포함한다. 따라서, 전술한 방식으로 각각의 서브블록의 예측된 픽셀 값이 획득된 후, 현재 CU의 예측 픽셀 값이 획득된다.
이 구현에서, 각각의 서브블록의 움직임 벡터가 획득되므로, 처리될 블록 내부의 보다 복잡한 움직임 상황이 반영될 수 있다. 이는 움직임 벡터의 정확도를 향상시키고 코딩 효율을 증대시킨다. 다만, 병치된 서브블록의 움직임 정보를 이용할 수 없는 경우에는, 디폴트 움직임 정보를 계산해야 한다. 이는 코딩 속도에 영향을 미친다.
도 12에 도시된 바와 같이, 다른 실현 가능한 구현에서, 처리될 블록은 하나 이상의 서브블록을 포함하고, 처리될 블록의 병치된 픽처의 식별 정보는 비트스트림을 파싱하여 획득된다. 처리될 블록의 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터가 이용 가능하고 움직임 벡터에 대응하는 참조 프레임이 병치된 픽처인 경우, 그 움직임 벡터는 시간 오프셋 벡터로 결정된다. 처리될 블록의 서브블록의 병치된 서브블록의 위치는 시간 오프셋 벡터에 기초하여 병치된 픽처에서 결정된다. 병치된 서브블록의 움직임 벡터의 이용 가능한지를 판정하고, 병치된 서브블록의 움직임 벡터에 기초하여 처리될 블록의 서브블록의 움직임 벡터를 결정한다. 인터 예측 방법은 구체적으로 다음 단계를 포함한다.
S1201: 처리될 블록의 공간적으로 이웃하는 블록에 기초하여 처리될 블록의 시간 오프셋 벡터를 결정한다.
시간 오프셋 벡터는 처리될 블록의 서브블록의 병치된 서브블록을 결정하는 데 사용된다.
예를 들어, 도 11에 도시된 바와 같이, 처리될 블록은 4개의 처리될 서브블록을 포함하고, 처리될 블록의 각각의 서브블록의 병치된 서브블록은 현재 픽처 내의 처리될 블록의 서브블록의 위치 및 시간 오프셋 벡터(도면에서 오프셋 움직임 벡터로 표기됨)에 기초하여 병치된 픽처(타깃 픽처로 표기됨, 즉 병치된 서브블록이 위치하는 픽처) 내에서 결정된다.
병치된 서브블록이 위치한 이미지 프레임(병치된 픽처)의 색인으로서 처리될 블록의 공간적으로 이웃하는 블록의 참조 프레임 목록에 있는 색인은, 비트스트림을 파싱하여 획득된다. 디코더 측은 비트스트림에서 대응하는 정보를 파싱함으로써 병치된 픽처를 결정할 수 있고; 인코더 측은 RDO 선택 방식으로 최적의 성능을 갖는 이미지 프레임을 병치된 픽처로서 결정하거나, 프레임을 병치된 픽처로 지정하고, 병치된 픽처의 지시 정보를 비트 스트림에 기록할 수 있다. 대안적으로, 병치된 픽처는 프로토콜에 따라 인코더 측 및 디코더 측에서 미리 설정될 수 있다.
실현 가능한 구현에서, 단계 1201은 구체적으로,
미리 설정된 순서로, 복수의 제1 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터가 이용 가능한지를, 움직임 벡터가 미리 설정된 순서로 이용 가능한 첫 번째 공간적으로 이웃한 블록의 움직임 벡터가 획득될 때까지, 순차적으로 확인하고;
움직임 벡터가 미리 설정된 순서대로 이용 가능한 제1 공간적으로 이웃하는 블록의 움직임 벡터를 시간 오프셋 벡터로서 사용하는 것일 수 있다.
복수의 제1 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 모두 이용할 수 없는 경우, 제2 미리 설정된 움직임 벡터는 시간 오프셋 벡터로 사용된다.
예를 들어, 도 6에 도시된 바와 같이, 움직임 벡터가 이용 가능한, 첫 번째 공간적으로 이웃하는 블록이 발견될 때까지, 처리될 블록의 공간적으로 이웃하는 블록 A1, B1, B0, 및 A0이 이용 가능한지를 순차적으로 확인한다. 첫 번째 공간적으로 이웃하는 블록을 B0라고 가정한다. 이 경우, 확인을 중지하고, B0의 움직임 벡터를 시간 오프셋 벡터로서 사용한다.
실현 가능한 구현에서, B0의 참조 프레임, 처리될 블록이 위치한 이미지 프레임, 및 처리될 블록의 병치된 픽처 사이의 시간 관계에 기초하여, B0의 움직임 벡터에 대해 스케일링 처리가 추가로 수행될 수 있으므로, 스케일링된 움직임 벡터가 병치된 픽처를 참조 프레임으로서 사용할 수 있다.
제2 미리 설정된 움직임 벡터, 즉 영 움직임 벡터는 공간적으로 이웃하는 블록의 움직임 벡터가 모두 이용 불가능한 경우, 시간 오프셋 벡터로 사용될 수 있다.
제1 미리 설정된 위치의 공간적으로 이웃하는 블록이 프로토콜에 따라 인코더 측 및 디코더 측에서 미리 설정되거나, 상위 레벨 신택스 요소에 기초하여 인코더 측 및 디코더 측에서 결정된다는 것을 이해해야 한다. 이것은 본 출원의 이 실시예에서 한정되지 않는다.
공간적으로 이웃하는 블록의 움직임 벡터를 이용할 수 없는 조건은 다음 항목 중 하나 또는 조합을 포함한다: 공간적으로 이웃하는 블록이 인코딩/디코딩되지 않는다( 예측 방법이 인코더 측에서 구현되는 경우, 공간적으로 이웃하는 블록은 인코딩되지 않거나, 예측 방법이 디코더 측에서 구현되는 경우, 공간적으로 이웃하는 블록은 인디코딩되지 않음); 공간적으로 이웃하는 블록에 대해 인트라 예측 모드 또는 인트라 블록 복사 모드가 사용된다; 공간적으로 인접한 블록이 존재하지 않는다; 또는
예를 들어, 코딩 영역은 픽처, 슬라이스(slice), 타일(tile) 또는 타일 그룹(tile group)을 포함한다.
다른 실행 가능한 구현에서, 단계 1201은 대안적으로 구체적으로 다음과 같을 수 있다:
제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터 및 참조 프레임을 획득하고 - 여기서, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 이용 가능함 -;
제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 시간 오프셋 벡터로서 사용한다.
제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터가 이용 불가능한 경우, 제3 미리 설정된 움직임 벡터를 시간 오프셋 벡터로서 사용한다.
일부 실현 가능한 구현에서, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록은 공간적으로 이웃하는 블록의 참조 프레임이 병치된 픽처가 위치하는 것과 동일한 것이라는 조건을 충족한다.
예를 들어, 도 6에 도시된 바와 같이, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록이 A1이라고 가정한다.
제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 움직임 벡터를 포함하고, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 제1 방향 움직임 벡터에 대응하는 제1 방향 참조 프레임을 포함함을 이해해야 한다.
실현 가능한 구현에서, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 시간 오프셋 벡터로서 사용하는 것은 구체적으로, 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우, 제1 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하는 것이거나; 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 다른 경우, 제3 미리 설정된 움직임 벡터를 시간 오프셋 벡터로서 사용하는 것이다.
예를 들어, 미리 설정된 제3 움직임 벡터는 영 움직임 벡터이다.
제2 미리 설정된 위치의 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되는 경우, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제2 참조 프레임 목록에 기초하는 제2 방향 움직임 벡터를 더 포함하고, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 제2 방향 움직임 벡터에 대응하는 제2 방향 참조 프레임을 포함함을 이해해야 한다.
다른 실현 가능한 구현에서, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 시간 오프셋 벡터로 사용하는 것은 구체적으로, 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제1 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하거나; 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 다른 경우, 제2 방향 참조 프레임이, 병치된 서브블록이 위치하는 이미지 프레임과 동일한지를 결정하고; 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제2 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하거나; 제2 방향 참조 프레임이 병치된 서브를록이 위치하는 이미지 프레임과 다른 경우 제3 미리 설정된 움직임 벡터를 시간 오프셋 벡터로 사용하는 것이다.
선택적으로, 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한지를 판정하기 전에, 이 방법은 공간적으로 이웃하는 블록이 위치한 코딩 영역의 유형이 B형인지, 즉, 코딩 영역이 B 프레임, B 타일, B 슬라이스 또는 B 타일 그룹인지를 판정한다.
다른 실현 가능한 구현에서, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되는 경우, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 시간 오프셋 벡터로 사용하는 것은 구체적으로, 병치된 서브블록이 위치하는 이미지 프레임이 제2 참조 프레임 목록으로부터 획득되는 경우, 제2 방향 참조 프레임이 병치된 서브블록이 위치한 이미지 프레임과 동일한지를 판정하고, 제2 방향 참조 프레임이 병치된 서브블록이 위치한 이미지 프레임과 동일한 경우, 제2 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하거나, 제2 방향 참조 프레임이 병치된 서브블록이 위치한 이미지 프레임과 다르고 제1 방향 참조 프레임이 병치된 서브블록이 위치한 이미지 프레임과 동일한 경우 제1 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하거나; 병치된 서브블록이 위치한 이미지 프레임이 제1 참조 프레임 목록로부터 획득된 경우, 제1 방향 참조 프레임이 병치된 서브블록이 위치한 이미지 프레임과 동일한지를 판정하고, 제1 방향 참조 프레임이 병치된 서브블록이 위치한 이미지 프레임과 동일한 경우, 제1 방향 움직임 벡터를 시간 오프셋 벡터로 사용하거나, 제1 방향 참조 프레임이 병치된 서브블록이 위치한 이미지 프레임과 다르고 제2 방향 참조 프레임이 병치된 서브블록이 위치한 이미지 프레임과 동일한 경우 제2 방향 움직임 벡터를 시간 오프셋 벡터로 사용하는 것이다. 또한, 또한, 제2 방향 참조 프레임이 병치된 서브블록이 위치한 이미지 프레임과 다르고, 제1 방향 참조 프레임이 병치된 서브블록이 위치한 이미지 프레임과 다른 경우 미리 설정된 제3 움직임 벡터를 시간 오프셋 벡터로서 사용한다.
다른 실현 가능한 구현에서, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되는 경우, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 시간 오프셋 벡터로서 사용하는 것은 구체적으로, 병치된 서브블록이 위치하는 이미지 프레임 제2 참조 프레임 목록에서 획득되고, 처리될 블록의 참조 프레임 목록 내의 모든 참조 프레임이 처리될 블록이 위치하는 이미지 프레임 전에 표시되는 경우, 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한지를 판정하고 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제2 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하거나; 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 다르고 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제1 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하거나; 병치된 서브블록이 위치하는 이미지 프레임이 제1 참조 프레임 목록에서 획득되거나, 처리될 블록의 참조 프레임 목록 내의 적어도 하나의 참조 프레임이 처리될 블록이 위치하는 이미지 프레임 후에 표시되는 경우, 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한지를 판정하고, 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제1 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하거나, 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 다르고 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제2 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하는 것이다. 또한, 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 다르고, 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 다른 경우 제3 미리 설정된 움직임 벡터가 시간 오프셋 벡터로서 사용된다.
예를 들어, 병치된 서브블록이 위치하는 이미지 프레임이 제1/제2 참조 프레임 목록로부터 획득하는지는 비트스트림의 신택스 요소 collocated_from_l0_flag 를 파싱하여 판정할 수 있다. 구체적으로, 1과 동일한 collocated_from_l0_flag는 병치된 서브블록이 위치하는 이미지 프레임(병치된 픽처)이 제1 참조 프레임 목록에서 획득되는 것을 지정하고; 0과 동일한 collocated_from_l0_flag는 병치된 서브블록이 위치하는 이미지 프레임이 제2 참조 프레임 목록에서 획득되는 것을 지정한다. 비트스트림이 collocated_from_l0_flag에 관한 정보를 실어 전달하지 않는 경우, 병치된 서브블록이 위치한 이미지 프레임은 디폴트로 제1 참조 프레임 목록에서 획득된다.
예를 들어, 처리될 블록의 참조 프레임 목록에 있는 모든 참조 프레임이 처리될 블록이 위치한 이미지 프레임 전에 표시된다. 즉 저지연 프레임 코딩 구조가 사용된다. 이 코딩 구조에서, 픽처의 각 프레임이 인코딩되는 경우, 모든 사용된 참조 프레임은 현재 인코딩될 프레임 전에 표시된다. 이에 상응하여, 디코더 측에서는 사용된 모든 참조 프레임이 현재 디코딩될 프레임 전에 표시된다.
공간적으로 이웃하는 블록이 위치한 코딩 영역의 유형이 B형이 아닌 경우, 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되지 않고, 양방향 예측이 사용되는 구현이 우수한 기술적 효과를 달성되지 않을 수 있음을 이해해야 한다. 따라서, 선택적으로, 양방향 예측이 사용되는 전술한 구현이 수행되기 전에, 공간적으로 이웃하는 블록이 위치한 코딩 영역이 B형인지 여부가 판정될 수 있다.
S1202: 병치된 서브블록의 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능한지를 결정한다.
처리될 블록에서 서브블록의 병치된 서브블록(예시적인 서브블록이라 함)의 위치는 처리 블록의 서브블록의 위치 좌표 및 단계 S1201에서 결정된 시간 오프셋 벡터에 기초하여 병치된 픽처에서 결정될 수 있다. 예를 들어, 병치된 서브블록의 위치는 본 명세서의 식 (4)에 따라 획득될 수 있다. 구체적으로, 수학식 4를 참조하면, x 및 y는 각각 처리될 블록의 좌측 상단 모서리의 수평 좌표 및 수직 좌표를 나타내고; i 및 j는 예시적인 서브블록이 처리될 블록에 배치된 서브블록으로서, 왼쪽에서 오른쪽으로 i번째 서브블록이고 상단에서 하단으로 j번째 서브블록임을 나타내고; ; xoff 및 yoff는 각각 시간 오프셋 벡터의 수평 좌표 및 수직 좌표를 나타내고; M과 N은 각각 서브블록의 너비와 높이를 나타낸다.
Figure pct00012
Figure pct00013
는 예시적인 서브블록의 병치된 서브블록(줄여서 병치된 서브블록이라고 함)의 위치 좌표를 나타낸다.
식 (4)에서 M/2 및 N/2는 미리 설정된 블록 내 위치가 병치된 서브블록의 기하학적 중심 위치임을 나타내는 것으로 이해되어야 한다. 미리 설정된 블록 내 위치는 대안적으로 병치된 서브블록의 상단 좌측 모서리와 같은 다른 블록 내 위치일 수 있다. 이것은 한정되지 않는다.
병치된 서브블록의 미리 설정된 블록 내 위치에 대응하는 움직임 벡터는 병치된 서브블록의 움직임 벡터로도 사용될 수 있다.
위치 좌표 (
Figure pct00014
,
Figure pct00015
)가 위치하는 병치된 픽처 내의 예측 유닛은 위치 좌표에 기초하여 결정될 수 있고, 병치된 서브블록의 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능한지는 예측 유닛의 예측 정보에 기초하여 결정될 수 있다.
예측 유닛은 병치된 픽처가 실제로 인코딩된 후의 결과이며, 병치된 서브블록과 일치하지 않을 수 있음을 이해해야 한다.
예를 들어, 예측 유닛의 예측 모드가 인터 예측 모드인 경우, 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능하거나; 예측 유닛의 예측 모드가 인트라 예측 모드 또는 인트라 블록 복사 모드인 경우, 미리 설정된 블록 내 위치에 대응하는 움직임 벡터는 이용 불가능하다.
실현 가능한 구현에서, 예측 유닛의 예측 모드 정보가 확인될 수 있으며, 예측 모드 정보에 기초하여, 예측 유닛의 예측 모드가 인트라 예측 모드, 인터 예측 모드, 인트라 블록 복사 모드 또는 다른 모드인 것으로 결정된다.
다른 실현 가능한 구현에서, 예측 유닛의 움직임 정보가 확인될 수 있으며, 예를 들어, 예측 방향이 확인될 수 있다. 예측 방향 플래그 predFlagL0 및/또는 predFlagL1이 1인 경우 예측 모드는 인터 예측 모드이다. 그렇지 않으면, 예측 모드는 인트라 예측 모드이거나, 움직임 벡터를 이용 불가능한 다른 예측 모드이다.
S1203: 병치된 서브블록의 움직임 벡터에 기초하여 처리될 블록의 서브블록의 움직임 벡터를 결정한다.
처리될 블록의 서브블록의 움직임 벡터는 병치된 서브블록의 움직임 벡터를 이용할 수 없는 경우 미리 설정된 제1 움직임 벡터에 기초하여 획득된다.
예측 유닛의 예측 모드가 인터 예측 모드인 경우, 미리 설정된 블록 내 위치에 대응하는 움직임 벡터를 이용할 수 있고, 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 기초하여 처리될 블록의 서브블록의 움직임 벡터가 획득된다.
구체적으로, 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 대해, 제2 시간 거리 차이에 대한 제1 시간 거리 차이의 비율에 기초하여, 스케일링 처리를 수행하여 처리될 블록의 서브블록의 움직임 벡터를 획득할 수 있으며, 처리될 블록, 여기서 제1 시간 거리 차이는 처리될 블록이 위치한 이미지 프레임과 처리될 블록의 참조 프레임 사이의 픽처 순서 카운트 차이이고, 제2 시간 거리 차이는 병치된 서브블록이 위치한 이미지 프레임과 병치된 서브블록의 참조 프레임 사이의 픽처 순서 카운트 차이이다. 스케일링 처리를 위한 구체적인 계산 절차는, 예를 들어 본 명세서의 식 (3)을 참조한다. 자세한 내용은 다시 설명하지 않는다.
처리될 블록의 참조 프레임 목록에서 처리될 블록의 참조 프레임의 색인은 비트스트림을 파싱하여 얻는다. 구체적으로, 디코더 측은 비트스트림 내의 대응하는 정보를 파싱함으로써 처리될 블록의 참조 프레임을 결정할 수 있고; 인코더 측에서는 RDO 선택 방식으로, 최적의 성능을 갖는 이미지 프레임을 처리될 블록의 참조 프레임으로 결정하거나, 프레임을 처리될 블록의 참조 프레임으로 지정하고, 처리될 블록의 참조 프레임의 지시 정보를 비트스트림에 기록할 수 있다. 대안적으로, 처리될 블록의 참조 프레임은 프로토콜에 따라 인코더 측 및 디코더 측에서 미리 설정될 수 있다. 예를 들어, 처리될 블록의 참조 프레임 목록에서 처리될 블록의 참조 프레임 색인은 0이다.
미리 설정된 블록 내 위치에 대응하는 움직임 벡터는 그 위치에 대응하는 움직임 벡터 저장 유닛으로부터 직접 획득될 수 있거나, 이웃 위치에 대응하는 움직임 벡터 저장 유닛으로부터 획득될 수 있거나, 이웃 위치에 대응하는 움직임 벡터 저장 유닛의 움직임 벡터에 기초한 보간 필터링을 통해 획득될 수 있다. 이는 한정되지 않는다.
예측 유닛의 예측 모드가 인트라 예측 모드 또는 인트라 블록 복사 모드인 경우, 미리 설정된 블록 내 위치에 대응하는 움직임 벡터를 이용할 수 없고, 처리될 블록의 서브블록의 움직임 벡터는 제1 미리 설정된 움직임 벡터에 기초하여 획득된다.
실현 가능한 구현에서, 서브블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 서브블록 움직임 벡터 및/또는 기본 프레임인 제2 방향 서브블록 움직임 벡터를 포함한다.
가능한 구현예에서, 서브블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 서브블록 움직임 벡터 및/또는 제2 참조 프레임 목록에 기초하는 제2 방향 서브블록 움직임 벡터를 포함하고; 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능한 경우, 처리될 블록의 서브블록의 움직임 벡터가 제1 미리 설정된 움직임 벡터에 기초하여 획득되는 것은 구체적으로, 제1 방향 서브블록 움직임 벡터에 기초한 단방향 예측이 처리될 블록의 서브블록에 대해 사용되는 것으로 결정하고, 제1 미리 설정된 움직임 벡터에 기초하여 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터를 획득하거나; 제2 방향 서브블록 움직임 벡터에 기초한 단방향 예측이 처리될 블록의 서브블록에 대해 사용되는 것으로 결정하고, 제1 미리 설정된 움직임 벡터에 기초하여 처리될 블록의 서브블록의 제2 방향 서브블록 움직임 벡터를 획득하는 것이다.
다른 실현 가능한 구현에서, 서브블록의 움직임 벡터는 제1 참조 프레임 목록에 기초한 제1 방향 서브블록 움직임 벡터 및 제2 참조 프레임 목록에 기초한 제2 방향 서브블록 움직임 벡터를 포함하고; 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능한 경우, 처리될 블록의 서브블록의 움직임 벡터가 제1 미리 설정된 움직임 벡터에 기초하여 획득되는 것은 구체적으로, 처리될 블록이 위치하는 코딩 영역의 예측 유형이 B형 예측인 경우, 처리될 블록의 서브블록에 대해 양방향 예측이 사용되는 것으로 결정하고, 제1 미리 설정된 움직임 벡터에 기초하여 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터와 처리될 블록의 서브블록의 제2 방향 서브블록 움직임 벡터를 개별적으로 획득하거나; 처리될 블록이 위치하는 디코딩 영역의 예측 유형이 P형 예측인 경우, 처리될 블록의 서브블록에 대해 단방향 예측이 사용되는 것으로 결정하고, 제1 미리 설정된 움직임 벡터에 기초하여 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터를 획득하는 것이다.
예를 들어, 코딩 영역은 픽처, 슬라이스, 타일 또는 타일 그룹을 포함한다.
실현 가능한 구현에서, 처리될 블록의 서브블록의 움직임 벡터가 제1 미리 설정된 움직임 벡터에 기초하여 획득되는 것은, 제1 미리 설정된 움직임 벡터를 처리될 블록의 서브블록의 움직임 벡터로서 사용하는 것을 포함한다.
실현 가능한 구현에서, 제1 미리 설정된 움직임 벡터는 영 움직임 벡터이다.
예를 들어, 제1 방향 예측 플래그 predFlagL0은 1로 설정될 수 있고, 제2 방향 예측 플래그 predFlagL1은 0으로 설정될 수 있으며, 제1 방향 서브블록 움직임 벡터 mvL0은 (0, 0)으로 설정될 수 있다.
대안적으로, 제1 방향 예측 플래그 predFlagL0은 0으로 설정될 수 있고, 제2 방향 예측 플래그 predFlagL1은 1로 설정될 수 있으며, 제2 방향 서브블록 움직임 벡터 mvL1는 (0, 0)으로 설정될 수 있다.
대안적으로, 예시적인 서브블록이 위치한 디코딩 영역이 B 프레임, B 슬라이스, B 타일 또는 B 타일 그룹인 경우, 제1 방향 예측 플래그 predFlagL0은 1로 설정될 수 있고, 제2 방향 예측 플래그 predFlagL1은 1로 설정될 수 있으며, 제1 방향 서브블록 움직임 벡터 mvL0은 (0, 0)으로 설정될 수 있고, 제2 방향 서브블록 움직임 벡터 mvL1은 (0, 0)으로 설정될 수 있다. 그렇지 않으면(예시적인 서브블록이 위치한 코딩 영역이 전술한 양방향 예측 영역에 대응하지 않는 경우), 제1 방향 예측 플래그 predFlagL0은 1로 설정될 수 있고, 제2 방향 예측 플래그 predFlagL1은 0으로 설정될 수 있으며, 제1 방향 서브블록 움직임 벡터 mvL0은 (0, 0)으로 설정될 수 있다.
S1204: 처리될 블록의 서브블록의 움직임 벡터와 처리될 블록의 참조 프레임에 기초하여 처리될 블록의 서브블록에 대해 움직임 보상을 수행하여, 처리될 블록의 서브블록의 예측 값을 획득한다.
예시적인 서브블록을 처리하는 전술한 프로시저는 각각의 서브블록의 예측 값을 획득하기 위해, 처리될 블록의 각각의 서브블록에 대해 수행된다는 것을 이해해야 한다. 처리될 블록은 서브블록을 포함한다. 따라서, 각각의 서브블록의 예측 값이 결정된 후, 처리될 블록의 예측 값이 이에 상응하여 결정된다.
이 실시예에서는, 시간 오프셋 벡터를 획득하기 위한 몇 가지 단순화된 방법이 제공된다. 이는 병치된 서브블록을 획득하는 정확도를 보장하면서 계산 복잡도를 감소시킨다. 또한, 병치된 서브블록을 이용할 수 없는 경우 대응하는 처리될 블록의 서브블록의 움직임 벡터를 결정하는 방식이 단순화되고 계산 복잡도가 더욱 감소된다.
도 13에 도시된 바와 같이, 처리될 블록은 하나 이상의 서브블록을 포함한다. 인터 예측 장치(1300)는,
처리될 블록의 공간적으로 이웃하는 블록에 기초하여 처리될 블록의 시간 오프셋 벡터를 결정하도록 구성된 오프셋 획득 모듈(1301) - 여기서 시간 오프셋 벡터는 처리될 블록의 서브블록의 병치된 서브블록을 결정하는 데 사용됨 -; 및 병치된 서브블록의 움직임 벡터에 기초하여 처리될 블록의 서브블록의 움직임 벡터를 결정하도록 구성된 움직임 벡터 획득 유닛(1302) - 여기서 처리될 블록의 서브블록의 움직임 벡터는, 병치된 서브블록의 움직임 벡터가 이용 불가능한 경우 제1 미리 설정된 움직임 벡터에 기초하여 획득됨 -을 포함한다.
실현 가능한 구현예에서, 오프셋 획득 모듈(1301)은 구체적으로, 미리 설정된 순서로, 복수의 제1 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터가 이용 가능한지를, 움직임 벡터가 미리 설정된 순서로 이용 가능한 첫 번째 공간적으로 이웃한 블록의 움직임 벡터가 획득될 때까지, 순차적으로 확인하고; 움직임 벡터가 미리 설정된 순서대로 이용 가능한 제1 공간적으로 이웃하는 블록의 움직임 벡터를 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 오프셋 획득 모듈(1301)은 구체적으로, 복수의 제1 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 모두 이용 불가능한 경우, 제2 미리 설정된 움직임 벡터를 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 제2 미리 설정된 움직임 벡터는 영 움직임 벡터이다.
실현 가능한 구현에서, 오프셋 획득 모듈(1301)은 구체적으로, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터 및 참조 프레임을 획득하고 - 여기서 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 이용 가능함 -; 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 오프셋 획득 모듈은 구체적으로, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터가 이용 불가능한 경우, 제3 미리 설정된 움직임 벡터를 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 제3 미리 설정된 움직임 벡터는 영 움직임 벡터이다.
실현 가능한 구현에서, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 움직임 벡터를 포함하고, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 제1 방향 움직임 벡터에 대응하는 제1 방향 참조 프레임을 포함하고; 오프셋 획득 모듈(1301)은 구체적으로, 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우, 제1 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 다른 경우, 오프셋 획득 모듈(1301)은 구체적으로, 제3 미리 설정된 움직임 벡터를 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되는 경우, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제2 참조 프레임 목록에 기초하는 제2 방향 움직임 벡터를 더 포함하고, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 제2 방향 움직임 벡터에 대응하는 제2 방향 참조 프레임을 포함하고; 제1 방향 참조 프레임이 처리될 블록의 대응하는 시간 블록이 위치하는 이미지 프레임과 다른 경우, 오프셋 획득 모듈(1301)은 구체적으로, 제2 방향 참조 프레임이 병치된 서브를록이 위치하는 이미지 프레임과 동일한 경우, 제2 방향 움직임 벡터를 시간 오프셋 벡터로 사용하거나, 제2 방향 참조 프레임이 병치된 서브블록이 위치한 이미지 프레임과 다른 경우, 제3 미리 설정된 움직임 벡터를 시간 오프셋 벡터로 사용하도록 구성된다.
실현 가능한 구현에서, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되는 경우, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 움직임 벡터 및 제2 참조 프레임 목록에 기초하는 제2 방향 움직임 벡터를 포함하고, 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 제1 방향 움직임 벡터에 대응하는 제1 방향 참조 프레임 및 제2 방향 움직임 벡터에 대응하는 제2 방향 참조 프레임을 포함하고; 오프셋 획득 모듈(1301)은 구체적으로, 병치된 서브블록이 위치하는 이미지 프레임이 제2 참조 프레임 목록에서 획득되는 경우, 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제2 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하거나, 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 다르고 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제1 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하도록 구성되거나; 또는 병치된 서브블록이 위치하는 이미지 프레임이 제1 참조 프레임 목록에서 획득되는 경우, 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제1 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하거나, 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 다르고 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제2 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 오프셋 획득 모듈(301)은 구체적으로, 병치된 서브블록이 위치하는 이미지 프레임 제2 참조 프레임 목록에서 획득되고, 처리될 블록의 참조 프레임 목록 내의 모든 참조 프레임이 처리될 블록이 위치하는 이미지 프레임 전에 표시되는 경우, 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제2 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하거나, 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 다르고 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제1 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하도록 구성되거나; 또는 병치된 서브블록이 위치하는 이미지 프레임이 제1 참조 프레임 목록에서 획득되거나, 처리될 블록의 참조 프레임 목록 내의 적어도 하나의 참조 프레임이 처리될 블록이 위치하는 이미지 프레임 후에 표시되는 경우, 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제1 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하거나, 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 다르고 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 제2 방향 움직임 벡터를 시간 오프셋 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 오프셋 획득 모듈(1301)은 구체적으로, 제2 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 다르고, 제1 방향 참조 프레임이 병치된 서브블록이 위치하는 이미지 프레임과 다른 경우 제3 미리 설정된 움직임 벡터를 시간 오프셋 벡터로 사용하도록 구성된다.
실현 가능한 구현에서, 병치된 서브블록이 위치하는 이미지 프레임의 색인으로서 처리될 서브블록의 공간적으로 이웃하는 블록의 참조 프레임 목록에 있는 색인은 비트스트림을 파싱함으로써 획득된다.
실현 가능한 구현에서, 공간적으로 이웃하는 블록의 움직임 벡터가 이용 불가능한 조건은 다음 항목 중 하나 이상의 조합을 포함한다: 공간적으로 이웃하는 블록이 인코딩/디코딩되지 않는다; 공간적으로 이웃하는 블록에 대해 인트라 예측 모드 또는 인트라 블록 복사 모드가 사용된다; 공간적으로 인접한 블록이 존재하지 않는다; 또는 공간적으로 이웃하는 블록과 처리될 블록이 상이한 코딩 영역에 위치한다.
실현 가능한 구현에서, 코딩 영역은 픽처, 슬라이스, 타일 또는 타일 그룹을 포함한다.
실현 가능한 구현에서, 인터 예측 장치는, 병치된 서브블록의 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능한지를 판정하도록 구성된 판정 모듈(1303)을 더 포함하고; 이에 상응하여, 움직임 벡터 획득 모듈(1302)은 구체적으로, 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능한 경우, 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 기초하여 처리될 블록의 서브블록의 움직임 벡터를 획득하거나, 미리 설정된 블록 내 위치에 대응하는 움직임 벡터를 이용 불가능한 경우, 제1 미리 설정된 움직임 벡터에 기초하여 처리될 블록의 서브블록의 움직임 벡터를 획득하도록 구성된다.
실현 가능한 구현에서, 미리 설정된 블록 내 위치는 병치된 서브블록의 기하학적 중심 위치이다.
실현 가능한 구현에서, 미리 설정된 블록 내 위치가 위치하는 예측 유닛에 대해 인트라 예측 모드 또는 인트라 블록 복사 모드를 사용하는 경우, 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능하거나; 미리 설정된 블록 내 위치가 위치하는 예측 유닛에 대해 인터 예측이 사용되는 경우, 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능하다.
실현 가능한 구현에서, 움직임 벡터 획득 모듈(1302)은 구체적으로, 제1 미리 설정된 움직임 벡터를 처리될 블록의 서브블록의 움직임 벡터로서 사용하도록 구성된다.
실현 가능한 구현에서, 제1 미리 설정된 움직임 벡터는 영 움직임 벡터이다.
실현 가능한 구현에서, 서브블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 서브블록 움직임 벡터 및/또는 제2 참조 프레임 목록에 기초하는 제2 방향 서브블록 움직임 벡터를 포함하고; 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능한 경우, 움직임 벡터 획득 모듈(1302)은 구체적으로, 제1 방향 서브블록 움직임 벡터에 기초한 단방향 예측이 처리될 록의 서브블록에 대해 사용되는 것으로 결정하고, 제1 미리 설정된 움직임 벡터에 기초하여 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터를 획득하거나; 제2 방향 서브블록 움직임 벡터에 기초한 단방향 예측이 처리될 록의 서브블록에 대해 사용되는 것으로 결정하고, 제1 미리 설정된 움직임 벡터에 기초하여 처리될 블록의 서브블록의 제2 방향 서브블록 움직임 벡터를 획득하도록 구성된다.
실현 가능한 구현에서, 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능한 경우, 움직임 벡터 획득 모듈(1302)은 구체적으로, 처리될 블록이 위치하는 코딩 영역의 예측 유형이 B형 예측인 경우, 처리될 블록의 서브블록에 대해 양방향 예측이 사용되는 것으로 결정하고, 제1 미리 설정된 움직임 벡터에 기초하여 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터와 처리될 블록의 서브블록의 제3 방향 서브블록 움직임 벡터를 개별적으로 획득하거나; 처리될 블록이 위치하는 디코딩 영역의 예측 유형이 P형 예측인 경우, 처리될 블록의 서브블록에 대해 단방향 예측이 사용되는 것으로 결정하고, 제1 미리 설정된 움직임 벡터에 기초하여 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터를 획득하도록 구성된다.
실현 가능한 구현에서, 움직임 벡터 획득 모듈(1302)은 구체적으로, 제1 시간 거리 차이와 제2 시간 거리 차이의 비율에 기초하여, 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 대해 스케일링 처리를 수행하여, 처리될 블록의 서브블록의 움직임 벡터를 획득하도록 구성되고, 제1 시간 거리 차이는 처리될 블록이 위치하는 이미지 프레임과 처리될 블록의 참조 프레임 사이의 픽처 순서 카운트 차이이고, 제2 시간 거리 차이는 병치된 서브블록이 위치하는 이미지 프레임과 병치된 서브블록의 참조 프레임 사이의 픽처 순서 카운트 차이이다.
실현 가능한 구현에서, 처리될 블록의 참조 프레임 목록 내의 처리될 블록의 참조 프레임 색인은 비트스트림을 파싱함으로써 획득된다.
실현 가능한 구현에서, 처리될 블록의 참조 프레임 목록 내의 처리될 블록의 참조 프레임 색인은 0이다.
실현 가능한 구현에서, 인터 예측 장치는, 처리될 블록의 서브블록의 움직임 벡터와 처리될 블록의 참조 프레임에 기초하여 처리될 블록의 서브블록에 대해 움직임 보상을 수행하여, 처리될 블록의 서브블록의 예측 값을 획득하도록 구성된 움직임 보상 모듈(1304)을 더 포함한다.
도 13에 도시된 본 출원의 이 실시예의 모듈은 도 12에 도시된 방법 및 실현 가능한 구현들을 수행하도록 구성되며, 동일한 기술적 효과가 있다.
이하에서는 예를 사용하여 본 출원의 실시예와 관련된 일부 구현을 설명한다.
[실시예 A]
단계 1: 오프셋 움직임 벡터(offset motion vector)를 결정한다.
오프셋 움직임 벡터(offset motion vector)는 병치된 픽처(collocated picture) 내의 현재 CU의 병치된 블록의 위치를 결정하는 데 사용된다. 현재 CU의 공간적으로 이웃하는 블록의 움직임 벡터는 오프셋 움직임 벡터로 사용될 수 있다. 병치된 픽처에서의 현재 CU의 위치는 오프셋 움직임 벡터와 현재 프레임의 병치된 픽처에 기초하여 결정된다. 그 위치에 있는 블록을 병치된 블록(corresponding/collocated block)으로 지칭한다. 오프셋 움직임 벡터는 다음 방법 중 하나를 사용하여 획득할 수 있다.
방법 1: 구현 시에, 도 6에 도시된 바와 같이, A1이 이용 가능한 경우, 오프셋 움직임 벡터는 다음과 같은 방법으로 결정된다.
A1을 이용 불가능한 경우, 오프셋 움직임 벡터의 값은 0이다. A1을 이용 불가능하다는 것은, A1 위치의 블록이 디코딩되지 않은 경우, 그 블록이 인터 예측 블록이 아님(인트라 예측 블록 또는 인트라 블록 복사(Intra block copy, IBC) 블록임)을 의미하거나, 그 블록이 현재 슬라이스(slice), 타일, 타일 그룹(tile group) 또는 픽처 외부에 있는 경우, 그 블록은 이용 불가능한 블록으로 간주된다.
다음 조건을 모두 충족하면, 현재 블록의 오프셋 움직임 벡터는 A1의 목록 1에 대응하는 움직임 벡터이다.
목록 1이 예측을 위해 A1에 사용된다.
예측에 사용되는 A1의 목록 1에서 참조 프레임은 현재 프레임의 병치된 픽처(collocated picture)와 동일하다. (POC가 동일한지를 판정하고, 참조 프레임의 색인와 병치된 픽처의 색인은 동일한 POC에 대응하고, 현재 블록의 병치된 픽처의 idx는 비트스트림으로부터 획득할 수 있다.)
저 지연(low-latency) 코딩 구조를 사용하며, 구체적으로, 현재 픽처 전에 표시되는 픽처만을 예측에 사용한다.
현재 블록이 위치하는 픽처, 타일 또는 타일 그룹의 유형은 B형이다.
collocated_from_l0_flag는 0이다. 1과 동일한 collocated_from_l0_flag는 참조 픽처 큐 목록 0으로부터 시간 움직임 벡터 예측을 위한 병치된 픽처가 획득되는 것을 지정한다. 0과 동일한 collocated_from_l0_flag는 시간 움직임 벡터 예측을 위한 병치된 픽처가 참조 픽처 큐 목록 1으로부터 획득되는 것을 지정한다. collocated_from_l0_flag가 비트스트림에 존재하지 않는 경우, collocated_from_l0_flag의 값은 1이다.
그렇지 않고, 다음의 모든 조건을 충족하면, 오프셋 움직임 벡터는 A1의 목록 0에 대응하는 움직임 벡터이다.
목록 0이 예측을 위해 A1에 사용된다.
예측에 사용된 A1의 목록 0 내의 참조 프레임은 현재 프레임의 병치된 픽처와 동일하다.
방법 2: 예를 들어, 도 6의 A1, B1, B0, A0의 시퀀스에서 첫 번째 이용 가능한 이웃 블록의 움직임 벡터를 찾는다. 움직임 벡터가 병치된 픽처를 가리키는 경우, 움직임 벡터는 현재 CU의 오프셋 움직임 벡터로 사용된다. 그렇지 않으면 영 움직임 벡터가 사용될 수 있거나; 첫 번째 이용 가능한 이웃 블록의 움직임 벡터가 스케일링되어, 영 움직임 벡터가 병치된 픽처를 가리키고, 스케일링된 움직임 벡터가 현재 CU의 오프셋 움직임 벡터로 사용된다.
사용된 오프셋 벡터는 대안적으로 제로 오프셋 벡터일 수 있음을 이해해야 한다. 이 경우, 처리될 블록과 동일한 위치에 있는 병치된 픽처 내의 픽처 블록이 병치된 픽처 내의 처리될 블록의 병치된 블록이다. 또한, 요건을 충족하는 타깃 오프셋 벡터를 찾을 수 없는 경우, ATMVP 기술이 사용되는 것이 아니라, 처리될 서브블록의 움직임 벡터를 얻기 위해 다른 기술이 사용될 수 있다.
단계 2: ATMVP 모드에 있는 가용성 정보(availability information) 및 디폴트 움직임 정보를 획득한다.
먼저 오프셋 벡터에 기초하여 병치된 블록을 획득하고, 병치된 블록에서 미리 설정된 위치가 위치한 병치된 서브블록 S의 예측 모드를 획득할 수 있다. 병치된 블록의 미리 설정된 위치의 좌표(xcol, ycol)는 식 6에 따라 획득할 수 있다. 디폴트 움직임 정보 및 ATMVP 모드에서의 가용성은 병치된 서브블록 S의 예측 모드 및 움직임 정보에 기초하여 획득된다. 구체적인 방법은 다음과 같다.
구체적으로, 미리 설정된 위치에 대응하는 서브블록의 예측 모드를 획득하기 위해, 미리 설정된 위치의 좌표가 병치된 블록에서 먼저 결정되고; ATMVP가 현재 이용 가능한지가 미리 설정된 위치에 대응하는 서브블록 S의 예측 모드에 기초하여 결정된다.
Figure pct00016
(x, y)는 현재 CU의 좌측 상단 모서리 좌표를 나타내고, (
Figure pct00017
,
Figure pct00018
)는 오프셋 움직임 벡터를 나타내고, W는 현재 CU의 너비를 나타내고, H는 현재 CU의 높이를 나타낸다.
미리 설정된 위치가 있는 병치된 서브블록 S의 예측 모드가 인트라 예측 모드 또는 인트라 블록 복사 모드인 경우, ATMVP 모드에서의 움직임 정보는 이용 불가능하다.
미리 설정된 위치가 있는 병치된 서브블록 S의 예측 모드가 인터 예측 모드인 경우, 병치된 서브블록 S의 움직임 정보를 더 추출하고, 식 (6)에 따라 미리 설정된 위치의 좌표를 구한다. 또한, 병치된 픽처의 움직임 벡터 필드에서의 위치의 움직임 정보는 병치된 서브블록 S의 움직임 정보로 사용되며, 병치된 서브블록 S의 움직임 정보를 병치된 서브블록의 디폴트 움직임 정보라고 한다.
병치된 서브블록 S의 디폴트 움직임 벡터 MV를 스케일링하여 처리할 서브블록의 기본 움직임 벡터(MV)를 획득하고, 스케일링된 움직임 벡터(MV)를 기본 움직임 정보로 사용한다.
예를 들어, 도 10에 도시된 바와 같이, 스케일링된 MV는 (7)과 같은 방법을 이용하여 획득할 수 있다. 여기서 스케일링 방법은 특별히 한정되지 않는다.
Figure pct00019
현재 블록이 위치한 프레임의 POC를 CurPoc, 현재 블록의 참조 프레임의 POC를 CurRefPoc, 병치된 픽처의 POC를 ColPoc, 병치된 픽처의 참조 프레임의 POC를 ColRefPoc, 그리고 스케일링될 움직임 벡터는 MV라고 가정한다.
선택적으로, MV는 수평 방향의 움직임 벡터 MVx와 수직 방향의 움직임 벡터 MVy로 분해되고, 수평 방향의 움직임 벡터 MVsx와 수직 방향의 움직임 벡터 MVsy는 전술한 식에 따라 계산을 통해 개별적으로 획득된다.
(미리 설정된 위치는 하나의 서브블록 S에만 대응하고, 병치된 서브블록 S을 선택하는 것은 병치된 서브블록 S의 예측 모드에 기초하여, ATMVP가 이용 가능한지를 판정하는 것임을 이해해야 한다).
단계 3: 병치된 서브블록의 움직임 정보에 기초하여 처리될 서브블록의 움직임 정보를 결정한다.
도 11에 도시된 바와 같이, 현재 CU 내의 각각의 서브블록에 대해, 병치된 픽처 내 서브블록의 병치된 서브블록을 오프셋 움직임 벡터 및 서브블록의 위치 좌표에 기초하여 결정하고, 병치된 서브블록의 움직임 정보를 획득한다.
병치된 서브블록의 중심점의 위치 좌표는 식 (8)에 따라 획득된다. (x, y)는 현재 CU의 좌측 상단 모서리의 좌표를 나타내고, i는 좌측에서 우측으로 i번째 서브블록을 나타내고, j는 상단에서 하단으로 j번째 서브블록을 나타내고, (
Figure pct00020
,
Figure pct00021
)는 오프셋 움직임 벡터를 나타내고, M x N는 서브블록의 크기(예: 4 x 4 또는 8 x 8)를 나타내며, (
Figure pct00022
,
Figure pct00023
)는 대응하는 (i, j)번째 서브블록의 위치 좌표를 나타낸다.
Figure pct00024
병치된 서브블록의 예측 모드는 병치된 서브블록의 중심점 위치 좌표에 기초하여 획득된다. 병치된 서브블록의 예측 모드가 인터 예측 모드인 경우, 병치된 서브블록의 움직임 정보가 이용 가능하다. 이 경우, 병치된 픽처의 움직임 벡터 필드 내의 위치의 움직임 정보가 병치된 서브블록의 움직임 정보로 사용된다. 병치된 서브블록의 움직임 정보를 스케일링하여, 처리될 서브블록의 움직임 정보를 획득한다. 스케일링 방법은 단계 2의 방법과 동일하며, 여기서 다시 설명하지 않는다.
병치된 서브블록의 예측 모드가 인트라 예측 모드 또는 인트라 블록 복사 모드인 경우, 병치된 서브블록의 움직임 정보를 이용 불가능하다. 이 경우, 단계 2에서 획득한 디폴트 움직임 정보가 병치된 서브블록의 움직임 정보로서 사용될 수 있다.
단계 4: 각각의 서브블록의 움직임 정보에 기초하여 움직임 보상 예측을 수행하여, 현재 CU의 예측된 픽셀 값을 획득한다.
참조 프레임에서 대응하는 좌표점을 찾기 위해, 서브블록의 움직임 정보에 기초하여 각각의 서브블록의 좌측 상단 모서리에 있는 픽셀의 좌표에 움직임 벡터를 더한다. 움직임 벡터가 분수 샘플 정확도이면, 서브블록의 예측된 픽셀 값을 획득하기 위해 보간 필터링을 수행해야 한다. 그렇지 않으면 참조 프레임의 픽셀 값을 직접 획득하여 서브블록의 예측 픽셀 값으로 사용한다.
ATMVP 모드에 있는 가용성 정보를 결정하려면 오프셋 움직임 벡터를 도입해야 한다. 이것은 오프셋 움직임 벡터 검색 프로세스에 따라 다르다. 또한, 병치된 서브블록의 움직임 정보를 이용할 수 없는 경우, 디폴트 움직임 정보를 계산해야 한다. 이것은 코딩 속도에 영향을 미친다.
[실시예 B]
단계 1: 오프셋 움직임 벡터(offset motion vector)를 결정한다.
오프셋 움직임 벡터(offset motion vector)는 병치된 픽처 내의 현재 CU의 병치된 블록의 위치를 결정하는 데 사용된다. 현재 CU의 공간적으로 이웃하는 블록의 움직임 벡터는 오프셋 움직임 벡터로 사용될 수 있다. 공간적으로 이웃하는 블록의 참조 프레임은 현재 CU의 병치된 픽처(collocated picture)로 사용된다. 병치된 픽처에서의 현재 CU의 위치는 오프셋 움직임 벡터와 현재 프레임의 병치된 픽처에 기초하여 결정된다. 그 위치에 있는 블록을 병치된 블록(corresponding/collocated block)으로 지칭한다. 오프셋 움직임 벡터는 다음 방법 중 하나를 사용하여 획득할 수 있다.
구체적인 방법은 실시예 A의 단계 1과 동일하다.
단계 2: 병치된 서브블록의 움직임 정보를 획득한다.
도 11에 도시된 바와 같이, 병치된 블록을 오프셋 벡터에 기초하여 먼저 획득한 다음, 처리될 서브블록과 상대적인 위치 관계를 갖는 병치된 블록을, 처리될 서브블록의 위치에 기초하여 타깃 픽처에서 결정한다(이는 또한 처리될 서브블록과 상대적인 위치 관계를 갖는 병치된 서브블록이 병치된 블록에서 결정되는 것으로 이해될 수 있음).
현재 CU 내의 각 서브블록에 대해, 병치된 픽처 내의 서브블록의 병치된 서브블록은 오프셋 움직임 벡터 및 서브블록의 위치 좌표에 기초하여 결정되고, 병치된 서브블록의 움직임 정보가 획득된다.
병치된 서브블록의 중심점의 위치 좌표는 식 (9)에 따라 획득된다. (x, y)는 현재 CU의 좌측 상단 모서리의 좌표를 나타내고, i는 좌측에서 우측으로 i번째 서브블록을 나타내고, j는 상단에서 하단으로 j번째 서브블록을 나타내고, (
Figure pct00025
,
Figure pct00026
)는 오프셋 움직임 벡터를 나타내고, M x N는 서브블록의 크기(예: 4 x 4 또는 8 x 8)를 나타내며, (
Figure pct00027
,
Figure pct00028
)는 대응하는 (i, j)번째 서브블록의 위치 좌표를 나타낸다.
Figure pct00029
병치된 서브블록의 예측 모드는 병치된 서브블록의 중심점 위치 좌표에 기초하여 획득된다. 병치된 서브블록의 예측 모드가 인터 예측 모드인 경우, 병치된 서브블록의 움직임 정보가 이용 가능하다. 이 경우, 병치된 픽처의 움직임 벡터 필드 내의 위치의 움직임 정보가 병치된 서브블록의 움직임 정보로 사용된다. 현재 서브블록의 움직임 정보는 병치된 서브블록의 움직임 정보에 기초하여 도출된다. 병치된 서브블록의 움직임 정보를 스케일링하고 서브블록의 움직임 벡터로 변환한다. 종래 기술의 시그널링 방법이 사용될 수 있으며, 세부사항 여기에 설명되지 않는다.
병치된 서브블록의 예측 모드가 인트라 예측 모드 또는 인트라 블록 복사 모드인 경우, 병치된 서브블록의 움직임 정보를 이용 불가능하다. 이 경우, 다음 처리 방법 중 하나가 사용될 수 있다/
단계 2에서 획득한 디폴트 움직임 정보가 병치된 서브블록의 움직임 정보로서 사용될 수 있다.
방법 1: 현재 CU의 서브블록이 위치한 픽처, 슬라이스 또는 타일 그룹의 타입이 B형인 경우, 병치된 서브블록 또는 처리될 서브블록에 양방향 영 움직임 벡터가 채워지며, 예를 들어 predFlagL0 = 1, predFlagL1 = 1, mvL0 = 0 및 mvL1 = 0이다.
그렇지 않으면, 단방향 목록 0 움직임 벡터가 채워지며, 예를 들어 predFlagL0 = 1, predFlagL1 = 0, mvL0 = 0 및 mvL1 = 0이다.
방법 2: 단방향 목록 0 영 움직임 벡터 정보가 병치된 서브블록 또는 처리될 서브블록에 채워지며, 예를 들어, predFlagL0 = 1, predFlagL1 = 0, mvL0 = 0, mvL1 = 0이다.
방법 3: 단방향 목록 1 영 움직임 벡터 정보가 병치된 서브블록 또는 처리될 서브블록에 채워지며, 예를 들어, predFlagL0 = 0, predFlagL1 = 1, mvL0 = 0, mvL1 = 0이다.
predFlagL0과 predFlagL1은 각각 목록 0과 목록 1을 사용하여 예측을 수행하는 예측 방향을 나타내고, mvL0과 mvL1은 각각 목록 0과 목록 1을 사용하여 예측을 수행하기 위한 움직임 벡터를 나타낸다. mvL0 = 0은 mvL0의 수평 성분과 수직 성분 모두 0으로 채워지는 것을 나타내고, mvL1 = 0은 mvL1의 수평 성분과 수직 성분 모두 0임을 나타낸다.
단계 3: 각각의 서브블록의 움직임 정보에 기초하여 움직임 보상 예측을 수행하여, 현재 CU의 예측된 픽셀 값을 획득한다.
참조 프레임에서 대응하는 좌표점을 찾기 위해, 서브블록의 움직임 정보에 기초하여 각각의 서브블록의 좌측 상단 모서의 픽셀의 좌표에 움직임 벡터를 더한다. 움직임 벡터가 분수 샘플 정확도이면, 서브블록의 예측된 픽셀 값을 획득하기 위해 보간 필터링을 수행해야 한다. 그렇지 않으면 참조 프레임의 픽셀 값을 직접 획득하여 서브블록의 예측 픽셀 값으로 사용한다.
문서에 대한 수정은 다음과 같다(수정의 근거는 JVET-N1001-v3 참조, 다음 의사코드의 의미에 대해서는, 이 문서를 참조하고, 이 문서는 웹사이트 http://phenix.intevry.fr/jvet/ 에서 다운로드 가능):
availableFlagL0SbCol 및 availableFlagL1SbCol이 모두 0이면 다음이 적용된다.
Figure pct00030
본 출원의 이 실시예에 따르면, 병치된 서브블록의 움직임 정보를 이용할 수 없는 경우, ATMVP 모드에서 가용성 정보 및 디폴트 움직임 정보를 결정하기 위해, 복잡한 시작 오프셋 움직임 벡터 계산이 필요하고, 미리 설정된 움직임 정보를 직접 채우는 종래 기술의 문제점이 해결된다. 이것은 코딩 복잡도를 감소시킨다.
[실시예 C]
이 실시예는 인터 예측 방법에 관한 것으로, 오프셋 움직임 벡터를 획득하는 방법이 최적화되어 있다. 단계 2 및 단계 3은 실시예 A와 동일하다. 구체적인 설명은 다음과 같다.
단계 1: 오프셋 움직임 벡터(offset motion vector)를 결정한다.
오프셋 움직임 벡터(offset motion vector)는 병치된 픽처 내의 현재 CU의 병치된 블록의 위치를 결정하는 데 사용된다. 현재 CU의 공간적으로 이웃하는 블록의 움직임 벡터는 오프셋 움직임 벡터로 사용될 수 있다. 공간적으로 이웃하는 블록의 참조 프레임은 현재 CU의 병치된 픽처(collocated picture)로 사용된다. 병치된 픽처에서의 현재 CU의 위치는 오프셋 움직임 벡터와 현재 프레임의 병치된 픽처에 기초하여 결정된다. 그 위치에 있는 블록을 병치된 블록(corresponding/collocated block)으로 지칭한다. 오프셋 움직임 벡터는 다음 방법 중 하나를 사용하여 획득할 수 있다.
도 10에 도시된 바와 같이, A1이 이용 가능하고, A1의 움직임 벡터가 가리키는 병치된 픽처가 A1의 병치된 픽처이면(즉, A1의 참조 픽처가 A1의 병치된 프레임임), A1의 움직임 벡터는 현재 CU의 오프셋 움직임 벡터로서 사용된다. 오프셋 움직임 벡터는 다음 방법 중 하나를 사용하여 획득할 수 있다. A1이 이용 불가능하면, 오프셋 움직임 벡터의 값은 0이다. A1이 이용 불가능하다는 것은 A1 위치의 블록이 디코딩되지 않은 경우, 그 블록은 인트라 예측 블록 또는 인트라 블록 복사 블록이거나, 현재 슬라이스(slice), 타일, 타일 그룹(tile group) 또는 픽처 외부에 위치하는 경우, 블록을 사용할 수 없는 블록으로 간주한다.
방법 1: 다음의 모든 미리 설정된 조건이 충족되는지가 판정된다. 미리 설정된 조건이 모두 충족되면, A1의 목록 1에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한지를 확인한다. A1의 목록 1에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한 경우, 목록 1에 대응하는 움직임 벡터가 오프셋 움직임 벡터로 사용되거나; 또는 A1의 목록 1에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 다른 경우, 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한지 여부를 확인한다. 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한 경우, 목록 0에 대응하는 움직임 벡터가 오프셋 움직임 벡터로 사용되며; 그렇지 않으면 오프셋 움직임 벡터는 0이다.
(1) 저 지연 코딩 구조를 사용하며, 구체적으로, 현재 픽처 전에 표시되는 픽처만을 예측에 사용한다.
(2) 현재 블록이 위치하는 픽처, 타일 또는 타일 그룹의 유형은 B형이다.
(3) collocated_from_l0_flag는 0이다. 1과 동일한 collocated_from_l0_flag는 참조 픽처 큐 목록 0으로부터 시간 움직임 벡터 예측을 위한 병치된 픽처가 획득되는 것을 지정한다. 0과 동일한 collocated_from_l0_flag는 시간 움직임 벡터 예측을 위한 병치된 픽처가 참조 픽처 큐 목록 1으로부터 획득되는 것을 지정한다. collocated_from_l0_flag가 비트스트림에 존재하지 않는 경우, collocated_from_l0_flag의 값은 1이다.
그렇지 않고(전술한 미리 설정된 조건이 충족되지 않으면), A1의 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한지를 먼저 확인한다. A1의 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한 경우, 목록 0에 대응하는 움직임 벡터가 오프셋 움직임 벡터로 사용된다; 또는 A1의 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 다른 경우, 목록 1에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한지를 확인한다. 목록 1에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한 경우, 목록 1에 대응하는 움직임 벡터가 오프셋 움직임 벡터로 사용되며; 그렇지 않으면 오프셋 움직임 벡터는 0이다.
방법 2: 다음의 미리 설정된 조건이 모두 충족되는지가 판정된다. 미리 설정된 조건이 모두 충족되면, A1의 목록 1에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한지를 확인한다. A1의 목록 1에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한 경우, 목록 1에 대응하는 움직임 벡터가 오프셋 움직임 벡터로 사용되거나; 또는 A1의 목록 1에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 다른 경우, 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한지를 확인한다. 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한 경우, 목록 0에 대응하는 움직임 벡터가 오프셋 움직임 벡터로 사용되며; 그렇지 않으면 오프셋 움직임 벡터는 0이다.
(1) 현재 블록이 위치한 픽처, 타일 또는 타일 그룹의 타입은 B형이다.
(2) collocated_from_l0_flag는 0이다. 1과 동일한 collocated_from_l0_flag는 참조 픽처 큐 목록 0으로부터 시간 움직임 벡터 예측을 위한 collocated_from_l0_flag가 획득되는 것을 지정한다. 0과 동일한 collocated_from_l0_flag는 참조 픽처 큐 목록 1로부터 시간 움직임 벡터 예측을 위한 병칙된 픽처가 획득되는 것을 지정한다. collocated_from_l0_flag가 비트스트림에 존재하지 않는 경우 collocated_from_l0_flag의 값은 1이다.
그렇지 않으면(위의 미리 설정된 조건이 충족되지 않으면), A1의 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한지를 먼저 확인한다. A1의 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한 경우, 목록 0에 대응하는 움직임 벡터가 오프셋 움직임 벡터로 사용되거나; 또는 A1의 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 다른 경우, 목록 1에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한지를 확인한다. 목록 1에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한 경우, 목록 1에 대응하는 움직임 벡터가 오프셋 움직임 벡터로 사용되며; 그렇지 않으면 오프셋 움직임 벡터는 0이다.
방법 3: A1의 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한지를 먼저 확인한다. A1의 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한 경우, A1의 목록 0에 대응하는 움직임 벡터를 오프셋 움직임 벡터로 사용한다. 목록 1에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한지는 확인할 필요가 없다. A1의 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 다르고, 현재 블록이 위치한 픽처, 타일 또는 타일 그룹의 타입이 B형인 경우, 목록 1의 참조 프레임이 현재 프레임의 병치된 픽처와 동일한지를 추가로 판정해야 한다. 목록 1의 참조 프레임이 현재 프레임의 병치된 픽처와 동일한 경우, A1의 목록 1에 대응하는 움직임 벡터가 오프셋 움직임 벡터로 사용될 수 있고; 그렇지 않으면 오프셋 움직임 벡터는 0이다.
방법 4: A1의 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한지 확인한다. A1의 목록 0에 대응하는 참조 프레임이 현재 프레임의 병치된 픽처와 동일한 경우 A1의 목록 0에 대응하는 움직임 벡터가 오프셋 움직임 벡터로 사용되며; 그렇지 않으면 오프셋 움직임 벡터는 0이다.
픽처 블록의 현재 프레임의 병치된 픽처의 색인 번호(idx)는 비트스트림으로부터 획득될 수 있다.
사용된 오프셋 벡터는 대안적으로 영 오프셋 벡터일 수 있음을 이해해야 한다. 이 경우, 병치된 픽처 내에서 처리될 블록과 동일한 위치에 있는 픽처 블록이 병치된 픽처 내의 처리될 블록의 병치된 블록이다. 또한, 요건을 충족하는 타깃 오프셋 벡터를 찾을 수 없는 경우, ATMVP 기술을 사용하지 않고 처리할 서브블록의 움직임 벡터를 획득하기 다른 기술을 사용할 수 있다.
문서에 대한 수정 사항은 다음과 같습니다.
방법 1:
Figure pct00031
방법 2:
Figure pct00032
방법 3:
Figure pct00033
방법 4:
Figure pct00034
본 출원의 실시예는 코딩 복잡도를 감소시키고 코딩 효율을 증가시키 위한 새로운 오프셋 움직임 벡터 계산 방법을 제공한다.
당업자는 본 명세서에 개시되고 설명된 다양한 예시적인 논리 블록, 모듈 및 알고리즘 단계를 참조하여 설명된 기능이 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합을 사용하여 구현될 수 있음을 이해할 수 있다. 소프트웨어가 구현을 위해 사용되는 경우, 예시적인 논리 블록, 모듈 및 단계를 참조하여 설명된 기능은 하나 이상의 명령어 또는 코드로서 컴퓨터로 판독 가능한 매체에 저장되거나 이를 통해 송신되고 하드웨어 기반 처리 유닛에 의해 실행될 수 있다. 컴퓨터가 판독 가능한 매체는 컴퓨터가 판독 가능한 저장매체를 포함할 수 있다. 컴퓨터로 판독 가능한 저장 매체는 데이터 저장 매체와 같은 유형의 매체 또는 컴퓨터 프로그램을 한 장소에서 다른 장소로(예: 통신 프로토콜에 따라) 전송하는 것을 용이하게 하는 임의의 매체를 포함하는 통신 매체에 대응한다. 이러한 방식으로, 컴퓨터로 판독 가능한 매체는 일반적으로 (1) 비일시적 유형의, 컴퓨터로 판독 가능한 저장 매체, 또는 (2) 신호 또는 캐리어와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 출원에 설명된 기술을 구현하기 위한 명령어, 코드 및/또는 데이터 구조를 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 사용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독로 가능한 매체를 포함할 수 있다.
한정이 아닌 예로서, 이러한 컴퓨터로 판독한 가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장 장치, 자기 디스크 저장 장치 또는 다른 자기 저장 장치를 포함할 수 있다. 플래시 메모리 또는 원하는 프로그램 코드를 명령어 또는 데이터 구조의 형태로 저장하는 데 사용할 수 있고 컴퓨터에서 액세스할 수 있는 기타 모든 매체를 포함할 수 있다. 또한, 모든 연결이 컴퓨터로 판독 가능한 매체로저 적절하게 지칭된다. 예를 들어, 웹사이트, 서버 또는 다른 원격 소스에서 동축 케이블, 광섬유, 트위스트 페어, 디지털 가입자 회선(digital subscriber line, DSL) 또는 적외선, 라디오 및 마이크로웨이브와 같은 무선 기술을 통해 명령어가 전송되는 경우, 동축 케이블, 광섬유, 트위스트 페어, DSL 또는 적외선, 라디오, 마이크로웨이브와 같은 무선 기술은 매체의 정의에 포함된다. 그러나, 컴퓨터로 판독 가능한 저장 매체 및 데이터 저장 매체는 연결, 캐리어, 신호 또는 기타 일시적인 매체를 포함하는 것 아니라, 실제로는 비일시적인 유형의 저장 매체를 의미한다는 것을 이해해야 한다. 본 명세서에서 사용되는 disk 및 disc는 CD(Compact Disc), 레이저 디스크(Laser Disc), 광디스크(Optical Disc), DVD(Digital Multimedia Disc), 블루레이 디스크(Blu-ray Disc) 등을 포함한다. disk는 일반적으로 자기적으로 데이터를 재생하는 반면 disc는 레이저를 사용하여 광학적으로 데이터를 재생한다. 전술한 사항의 조합도 컴퓨터로 판독 가능한 기록매체의 범위에 포함되어야 한다.
명령어는 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로프로세서, 애플리케이션 특정 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 또는 기타 등가 집적 회로 또는 이산 논리 회로와 같은, 하나 이상의 프로세서에 의해 실행될 수 있다. 따라서, 본 명세서에서 사용되는 "프로세서"라는 용어는 전술한 구조 또는 본 명세서에서 설명한 기술을 구현하기에 적합한 다른 모든 구조를 의미할 수 있다. 또한, 몇몇 측면에서, 본 명세서에 설명된 예시적인 논리 블록, 모듈, 및 단계를 참조하여 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공될 수 있거나, 결합된 코덱에 통합될 수 있다. 또한, 기술은 모두 하나 이상의 회로 또는 논리 요소로 구현될 수 있다.
본 출원의 기술은 무선 핸드셋, 집적 회로(IC) 또는 IC 세트(예: 칩셋)를 포함하는 다양한 장치 또는 기기에서 구현될 수 있다. 다양한 구성요소, 모듈 또는 유닛이 개시된 기술을 수행하도록 구성된 장치의 기능적 측면을 강조하기 위해 본 출원에서 설명되지만, 반드시 상이한 하드웨어 유닛을 사용하여 구현되는 것은 아니다. 실제로, 위에서 설명된 바와 같이, 다양한 유닛은 적절한 소프트웨어 및/또는 펌웨어와 조합하여 코덱 하드웨어 유닛으로 결합될 수 있거나, 상호운용 가능한 하드웨어 유닛(위에서 설명된 하나 이상의 프로세서 포함)에 의해 제공될 수 있다.
전술한 실시예에서, 실시예의 설명은 각각의 초점을 갖는다. 실시예에서 구체적으로 설명되지 않은 부분에 대해서는 다른 실시예에서 관련된 설명을 참조한다.
이상의 설명은 단지 본 출원의 특정한 예시적인 구현일 뿐이고, 본 출원의 보호 범위를 한하려는 것은 아니다. 본 출원에 개시된 기술적 범위 내에서 당업자에 의해 용이하게 파악된 변형 또는 대체는 본 출원의 보호 범위에 속할 것이다. 따라서 본 출원의 보호 범위는 청구범위의 보호 범위에 따른다.

Claims (68)

  1. 처리될 블록이 하나 이상의 서브블록을 포함하는 인터 예측 방법으로서,
    상기 처리될 블록의 공간적으로 이웃하는 블록에 기초하여 상기 처리될 블록의 시간 오프셋 벡터(temporal offset vector)를 결정하는 단계 - 상기 시간 오프셋 벡터는 상기 처리될 블록의 서브블록의 병치된 서브블록(collocated subblock)을 결정하는 데 사용됨 -; 및
    상기 병치된 서브블록의 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 결정하는 단계 - 상기 처리될 블록의 서브블록의 움직임 벡터는, 상기 병치된 서브블록의 움직임 벡터가 이용 불가능한 경우 제1 미리 설정된 움직임 벡터에 기초하여 획득됨 -
    를 포함하는 인터 예측 방법.
  2. 제1항에 있어서,
    상기 처리될 블록의 공간적으로 이웃하는 블록에 기초하여 상기 처리될 블록의 시간 오프셋 벡터를 결정하는 단계는,
    미리 설정된 순서로, 복수의 제1 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터가 이용 가능한지를, 움직임 벡터가 상기 미리 설정된 순서에서 이용 가능한 첫 번째 공간적으로 이웃한 블록의 움직임 벡터가 획득될 때까지, 순차적으로 확인하는 단계; 및
    움직임 벡터가 상기 미리 설정된 순서대로 이용 가능한 상기 첫 번째 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계를 포함하는, 인터 예측 방법.
  3. 제2항에 있어서,
    상기 복수의 제1 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 모두 이용 불가능한 경우, 제2 미리 설정된 움직임 벡터가 상기 시간 오프셋 벡터로서 사용되는, 인터 예측 방법.
  4. 제3항에 있어서,
    상기 제2 미리 설정된 움직임 벡터는 영(zero) 움직임 벡터인, 인터 예측 방법.
  5. 제1항에 있어서,
    상기 처리될 블록의 공간적으로 이웃하는 블록에 기초하여 상기 처리될 블록의 시간 오프셋 벡터를 결정하는 단계는,
    제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터 및 참조 프레임을 획득하는 단계 - 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 이용 가능함 -; 및
    상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계를 포함하는, 인터 예측 방법.
  6. 제5항에 있어서,
    상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터가 이용 불가능한 경우, 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는, 인터 예측 방법.
  7. 제6항에 있어서,
    상기 제3 미리 설정된 움직임 벡터는 영(zero) 움직임 벡터인, 인터 예측 방법.
  8. 제5항 내지 제7항 중 어느 한 항에 있어서,
    상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 움직임 벡터를 포함하고, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 상기 제1 방향 움직임 벡터에 대응하는 제1 방향 참조 프레임을 포함하고;
    상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계는,
    상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우, 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계를 포함하는, 인터 예측 방법.
  9. 제8항에 있어서,
    상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다른 경우, 상기 인터 예측 방법은,
    상기 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계를 포함하는 인터 예측 방법.
  10. 제8항에 있어서,
    상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되는 경우, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제2 참조 프레임 목록에 기초하는 제2 방향 움직임 벡터를 더 포함하고, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 상기 제2 방향 움직임 벡터에 대응하는 제2 방향 참조 프레임을 포함하고; 상기 제1 방향 참조 프레임이 상기 처리될 블록의 대응하는 시간 블록이 위치하는 이미지 프레임과 다른 경우, 상기 인터 예측 방법은,
    상기 제2 방향 참조 프레임이 상기 병치된 서브를록이 위치하는 이미지 프레임과 동일한 경우, 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로 사용하거나;
    상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치한 이미지 프레임과 다른 경우, 상기 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로 사용하는 단계를 더 포함하는 인터 예측 방법.
  11. 제5항 내지 제7항 중 어느 한 항에 있어서,
    상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되는 경우, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 움직임 벡터 및 제2 참조 프레임 목록에 기초하는 제2 방향 움직임 벡터를 포함하고, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 제1 방향 움직임 벡터에 대응하는 제1 방향 참조 프레임 및 제2 방향 움직임 벡터에 대응하는 제2 방향 참조 프레임을 포함하고; 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계는,
    상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제2 참조 프레임 목록에서 획득되는 경우:
    상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계; 또는
    상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제1 참조 프레임 목록에서 획득되는 경우:
    상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계를 포함하는, 인터 예측 방법.
  12. 제11항에 있어서,
    상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계는,
    상기 병치된 서브블록이 위치하는 이미지 프레임 상기 제2 참조 프레임 목록에서 획득되고, 상기 처리될 블록의 참조 프레임 목록 내의 모든 참조 프레임이 상기 처리될 블록이 위치하는 이미지 프레임 전에 표시되는 경우:
    상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계; 또는
    상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제1 참조 프레임 목록에서 획득되거나, 상기 처리될 블록의 참조 프레임 목록 내의 적어도 하나의 참조 프레임이 상기 처리될 블록이 위치하는 이미지 프레임 후에 표시되는 경우:
    상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하는 단계를 포함하는, 인터 예측 방법.
  13. 제11항 또는 제12항에 있어서,
    상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고, 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다른 경우 상기 제3 미리 설정된 움직임 벡터가 상기 시간 오프셋 벡터로 사용되는, 인터 예측 방법.
  14. 제8항 내지 제13항 중 어느 한 항에 있어서,
    상기 병치된 서브블록이 위치하는 이미지 프레임의 색인으로서 상기 처리될 서브블록의 공간적으로 이웃하는 블록의 참조 프레임 목록에 있는 색인은 비트스트림을 파싱함으로써 획득되는, 인터 예측 방법.
  15. 제2항 내지 제14항 중 어느 한 항에 있어서,
    상기 공간적으로 이웃하는 블록의 움직임 벡터가 이용 불가능한 조건은 다음 항목:
    상기 공간적으로 이웃하는 블록이 인코딩/디코딩되지 않음;
    상기 공간적으로 이웃하는 블록에 대해 인트라 예측 모드 또는 인트라 블록 복사 모드(intra block copy mode)가 사용됨;
    상기 공간적으로 인접한 블록이 존재하지 않음; 또는
    상기 공간적으로 이웃하는 블록과 상기 처리될 블록이 상이한 코딩 영역에 위치함 중 하나 또는 조합을 포함하는, 인터 예측 방법.
  16. 제15항에 있어서,
    상기 코딩 영역은 픽처, 슬라이스, 타일 또는 타일 그룹을 포함하는 방법.
  17. 제1항 내지 제16항 중 어느 한 항에 있어서,
    상기 처리될 블록의 서브블록의 움직임 벡터를 결정하는 단계 전에, 상기 인터 예측 방법은,
    상기 병치된 서브블록의 미리 설정된 블록 내 위치(intra-block position)에 대응하는 움직임 벡터가 이용 가능한지를 판정하는 단계; 및
    이에 상응하여, 상기 처리될 블록의 서브블록의 움직임 벡터를 결정하는 단계는,
    상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능한 경우, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하거나;
    상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터를 이용 불가능한 경우, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하는 단계를 포함하는, 인터 예측 방법.
  18. 제17항에 있어서,
    상기 미리 설정된 블록 내 위치는 상기 병치된 서브블록의 기하학적 중심 위치인, 인터 예측 방법.
  19. 제17항 또는 제18항에 있어서,
    상기 미리 설정된 블록 내 위치가 위치하는 예측 유닛에 대해 상기 인트라 예측 모드 또는 상기 인트라 블록 복사 모드를 사용하는 경우, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능하거나; 상기 미리 설정된 블록 내 위치가 위치하는 예측 유닛에 대해 인터 예측이 사용되는 경우, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능한, 인터 예측 방법.
  20. 제17항 내지 제19항 중 어느 한 항에 있어서,
    상기 처리될 블록의 서브블록의 움직임 벡터가 제1 미리 설정된 움직임 벡터에 기초하여 획득되는 것은,
    상기 제1 미리 설정된 움직임 벡터를 상기 처리될 블록의 서브블록의 움직임 벡터로서 사용하는 것을 포함하는, 인터 예측 방법.
  21. 제1항 내지 제20항 중 어느 한 항에 있어서,
    상기 제1 미리 설정된 움직임 벡터는 영 움직임 벡터인, 인터 예측 방법.
  22. 제17항 내지 제21항 중 어느 한 항에 있어서,
    상기 서브블록의 움직임 벡터는 상기 제1 참조 프레임 목록에 기초하는 제1 방향 서브블록 움직임 벡터 및/또는 상기 제2 참조 프레임 목록에 기초하는 제2 방향 서브블록 움직임 벡터를 포함하고;
    상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능한 경우, 상기 처리될 블록의 서브블록의 움직임 벡터가 제1 미리 설정된 움직임 벡터에 기초하여 획득되는 것은,
    상기 제1 방향 서브블록 움직임 벡터에 기초한 단방향 예측이 상기 처리될 블록의 서브블록에 대해 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 상기 제1 방향 서브블록 움직임 벡터를 획득하거나;
    상기 제2 방향 서브블록 움직임 벡터에 기초한 단방향 예측이 상기 처리될 블록의 서브블록에 대해 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 상기 제2 방향 서브블록 움직임 벡터를 획득하는 것을 포함하는, 인터 예측 방법.
  23. 제22항에 있어서,
    상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능한 경우, 상기 처리될 블록의 서브블록의 움직임 벡터가 제1 미리 설정된 움직임 벡터에 기초하여 획득되는 것은,
    상기 처리될 블록이 위치하는 코딩 영역의 예측 유형이 B형 예측인 경우, 상기 처리될 블록의 서브블록에 대해 양방향 예측이 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터와 상기 처리될 블록의 서브블록의 제2 방향 서브블록 움직임 벡터를 개별적으로 획득하거나;
    상기 처리될 블록이 위치하는 디코딩 영역의 예측 유형이 P형 예측인 경우, 상기 처리될 블록의 서브블록에 대해 단방향 예측이 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터를 획득하는 것을 포함하는, 인터 예측 방법.
  24. 제17항 내지 제23항 중 어느 한 항에 있어서,
    상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하는 단계는,
    제1 시간 거리 차이와 제2 시간 거리 차이의 비율에 기초하여, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 대해 스케일링 처리를 수행하여, 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하는 단계를 포함하고, 상기 제1 시간 거리 차이는 상기 처리될 블록이 위치하는 이미지 프레임과 상기 처리될 블록의 참조 프레임 사이의 픽처 순서 카운트 차이(picture order count difference)이고, 상기 제2 시간 거리 차이는 상기 병치된 서브블록이 위치하는 이미지 프레임과 상기 병치된 서브블록의 참조 프레임 사이의 픽처 순서 카운트 차이인, 인터 예측 방법.
  25. 제24항에 있어서,
    상기 처리될 블록의 참조 프레임 목록 내의 상기 처리될 블록의 참조 프레임 색인은 상기 비트스트림을 파싱함으로써 획득되는, 인터 예측 방법.
  26. 제24항 또는 제25항에 있어서,
    상기 처리될 블록의 참조 프레임 목록 내의 상기 처리될 블록의 참조 프레임 색인은 0인, 인터 예측 방법.
  27. 제1항 내지 제26항 중 어느 한 항에 있어서,
    상기 인터 예측 방법은,
    상기 처리될 블록의 서브블록의 움직임 벡터와 상기 처리될 블록의 참조 프레임에 기초하여 상기 처리될 블록의 서브블록에 대해 움직임 보상을 수행하여, 상기 처리될 블록의 서브블록의 예측 값을 획득하는 단계를 더 포함하는 인터 예측 방법.
  28. 처리될 블록이 하나 이상의 서브블록을 포함하는 인터 예측 장치로서,
    상기 처리될 블록의 공간적으로 이웃하는 블록에 기초하여 상기 처리될 블록의 시간 오프셋 벡터를 결정하도록 구성된 오프셋 획득 모듈 - 상기 시간 오프셋 벡터는 상기 처리될 블록의 서브블록의 병치된 서브블록을 결정하는 데 사용됨 -; 및
    상기 병치된 서브블록의 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 결정하도록 구성된 움직임 벡터 획득 유닛 - 상기 처리될 블록의 서브블록의 움직임 벡터는, 상기 병치된 서브블록의 움직임 벡터가 이용 불가능한 경우 제1 미리 설정된 움직임 벡터에 기초하여 획득됨 -
    을 포함하는 인터 예측 장치.
  29. 제28항에 있어서,
    상기 오프셋 획득 모듈은 구체적으로,
    미리 설정된 순서로, 복수의 제1 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터가 이용 가능한지를, 움직임 벡터가 상기 미리 설정된 순서에서 이용 가능한 첫 번째 공간적으로 이웃한 블록의 움직임 벡터가 획득될 때까지, 순차적으로 확인하고;
    움직임 벡터가 상기 미리 설정된 순서대로 이용 가능한 상기 첫 번째 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성되는, 인터 예측 장치.
  30. 제29항에 있어서,
    상기 오프셋 획득 모듈은 구체적으로, 상기 복수의 제1 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 모두 이용 불가능한 경우, 제2 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성되는, 인터 예측 장치.
  31. 제30항에 있어서,
    상기 제2 미리 설정된 움직임 벡터는 영(zero) 움직임 벡터인, 인터 예측 장치.
  32. 제28항에 있어서,
    상기 오프셋 획득 모듈은 구체적으로,
    제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터 및 참조 프레임을 획득하고 - 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 이용 가능함 -;
    상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성되는, 인터 예측 장치.
  33. 제32항에 있어서,
    상기 오프셋 획득 모듈은 구체적으로, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터가 이용 불가능한 경우, 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성되는, 인터 예측 장치.
  34. 제33항에 있어서,
    상기 제3 미리 설정된 움직임 벡터는 영(zero) 움직임 벡터인, 인터 예측 장치.
  35. 제32항 내지 제34항 중 어느 한 항에 있어서,
    상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 움직임 벡터를 포함하고, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 상기 제1 방향 움직임 벡터에 대응하는 제1 방향 참조 프레임을 포함하고;
    상기 오프셋 획득 모듈은 구체적으로, 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우, 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성되는, 인터 예측 장치.
  36. 제35항에 있어서,
    상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다른 경우, 상기 오프셋 획득 모듈은 구체적으로,
    상기 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성되는, 인터 예측 장치.
  37. 제35항에 있어서,
    상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되는 경우, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제2 참조 프레임 목록에 기초하는 제2 방향 움직임 벡터를 더 포함하고, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 상기 제2 방향 움직임 벡터에 대응하는 제2 방향 참조 프레임을 포함하고; 상기 제1 방향 참조 프레임이 상기 처리될 블록의 대응하는 시간 블록이 위치하는 이미지 프레임과 다른 경우, 상기 오프셋 획득 모듈은 구체적으로,
    상기 제2 방향 참조 프레임이 상기 병치된 서브를록이 위치하는 이미지 프레임과 동일한 경우, 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로 사용하고;
    상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치한 이미지 프레임과 다른 경우, 상기 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로 사용하도록 구성되는, 인터 예측 장치.
  38. 제32항 내지 제34항 중 어느 한 항에 있어서,
    상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록에 대해 양방향 예측이 사용되는 경우, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 움직임 벡터는 제1 참조 프레임 목록에 기초하는 제1 방향 움직임 벡터 및 제2 참조 프레임 목록에 기초하는 제2 방향 움직임 벡터를 포함하고, 상기 제2 미리 설정된 위치의 공간적으로 이웃하는 블록의 참조 프레임은 제1 방향 움직임 벡터에 대응하는 제1 방향 참조 프레임 및 제2 방향 움직임 벡터에 대응하는 제2 방향 참조 프레임을 포함하고; 상기 오프셋 획득 모듈은 구체적으로,
    상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제2 참조 프레임 목록에서 획득되는 경우:
    상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성되거나;
    상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제1 참조 프레임 목록에서 획득되는 경우:
    상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성되는, 인터 예측 장치.
  39. 제38항에 있어서,
    상기 오프셋 획득 모듈은 구체적으로,
    상기 병치된 서브블록이 위치하는 이미지 프레임 상기 제2 참조 프레임 목록에서 획득되고, 상기 처리될 블록의 참조 프레임 목록 내의 모든 참조 프레임이 상기 처리될 블록이 위치하는 이미지 프레임 전에 표시되는 경우:
    상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성되거나;
    상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제1 참조 프레임 목록에서 획득되거나, 상기 처리될 블록의 참조 프레임 목록 내의 적어도 하나의 참조 프레임이 상기 처리될 블록이 위치하는 이미지 프레임 후에 표시되는 경우:
    상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제1 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하거나; 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고 상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 동일한 경우 상기 제2 방향 움직임 벡터를 상기 시간 오프셋 벡터로서 사용하도록 구성되는, 인터 예측 장치.
  40. 제38항 또는 제39항에 있어서,
    상기 오프셋 획득 모듈은 구체적으로,
    상기 제2 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다르고, 상기 제1 방향 참조 프레임이 상기 병치된 서브블록이 위치하는 이미지 프레임과 다른 경우 상기 제3 미리 설정된 움직임 벡터를 상기 시간 오프셋 벡터로 사용하도록 구성되는, 인터 예측 장치.
  41. 제37항 내지 제40항 중 어느 한 항에 있어서,
    상기 병치된 서브블록이 위치하는 이미지 프레임의 색인으로서 상기 처리될 서브블록의 공간적으로 이웃하는 블록의 참조 프레임 목록에 있는 색인은 비트스트림을 파싱함으로써 획득되는, 인터 예측 장치.
  42. 제29항 내지 제41항 중 어느 한 항에 있어서,
    상기 공간적으로 이웃하는 블록의 움직임 벡터가 이용 불가능한 조건은 다음 항목:
    상기 공간적으로 이웃하는 블록이 인코딩/디코딩되지 않음;
    상기 공간적으로 이웃하는 블록에 대해 인트라 예측 모드 또는 인트라 블록 복사 모드가 사용됨;
    상기 공간적으로 인접한 블록이 존재하지 않음; 또는
    상기 공간적으로 이웃하는 블록과 상기 처리될 블록이 상이한 코딩 영역에 위치함 중 하나 또는 조합을 포함하는, 인터 예측 장치.
  43. 제42항에 있어서,
    상기 코딩 영역은 픽처, 슬라이스, 타일 또는 타일 그룹, 인터 예측 장치.
  44. 제28항 내지 제43항 중 어느 한 항에 있어서,
    상기 인터 예측 장치는,
    상기 병치된 서브블록의 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능한지를 판정하도록 구성된 판정 모듈을 더 포함하고;
    이에 상응하여, 상기 움직임 벡터 획득 모듈은 구체적으로,
    상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능한 경우, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하거나;
    상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터를 이용 불가능한 경우, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하도록 구성되는, 인터 예측 장치.
  45. 제44항에 있어서,
    상기 미리 설정된 블록 내 위치는 상기 병치된 서브블록의 기하학적 중심 위치인, 인터 예측 장치.
  46. 제44항 또는 제45항에 있어서,
    상기 미리 설정된 블록 내 위치가 위치하는 예측 유닛에 대해 상기 인트라 예측 모드 또는 상기 인트라 블록 복사 모드를 사용하는 경우, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능하거나; 상기 미리 설정된 블록 내 위치가 위치하는 예측 유닛에 대해 인터 예측이 사용되는 경우, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 가능한, 인터 예측 장치.
  47. 제44항 내지 제46항 중 어느 한 항에 있어서,
    상기 움직임 벡터 획득 모듈은 구체적으로,
    상기 제1 미리 설정된 움직임 벡터를 상기 처리될 블록의 서브블록의 움직임 벡터로서 사용하도록 구성되는, 인터 예측 장치.
  48. 제28항 내지 제47항 중 어느 한 항에 있어서,
    상기 제1 미리 설정된 움직임 벡터는 영 움직임 벡터인, 인터 예측 장치.
  49. 제44항 내지 제48항 중 어느 한 항에 있어서,
    상기 서브블록의 움직임 벡터는 상기 제1 참조 프레임 목록에 기초하는 제1 방향 서브블록 움직임 벡터 및/또는 상기 제2 참조 프레임 목록에 기초하는 제2 방향 서브블록 움직임 벡터를 포함하고;
    상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능한 경우, 상기 움직임 벡터 획득 모듈은 구체적으로,
    상기 제1 방향 서브블록 움직임 벡터에 기초한 단방향 예측이 상기 처리될 블록의 서브블록에 대해 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 상기 제1 방향 서브블록 움직임 벡터를 획득하거나;
    상기 제2 방향 서브블록 움직임 벡터에 기초한 단방향 예측이 상기 처리될 블록의 서브블록에 대해 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 상기 제2 방향 서브블록 움직임 벡터를 획득하도록 구성되는, 인터 예측 장치.
  50. 제49항에 있어서,
    상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터가 이용 불가능한 경우, 상기 움직임 벡터 획득 모듈은 구체적으로,
    상기 처리될 블록이 위치하는 코딩 영역의 예측 유형이 B형 예측인 경우, 상기 처리될 블록의 서브블록에 대해 양방향 예측이 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터와 상기 처리될 블록의 서브블록의 제2 방향 서브블록 움직임 벡터를 개별적으로 획득하거나;
    상기 처리될 블록이 위치하는 디코딩 영역의 예측 유형이 P형 예측인 경우, 상기 처리될 블록의 서브블록에 대해 단방향 예측이 사용되는 것으로 결정하고, 상기 제1 미리 설정된 움직임 벡터에 기초하여 상기 처리될 블록의 서브블록의 제1 방향 서브블록 움직임 벡터를 획득하도록 구성되는, 인터 예측 장치.
  51. 제44항 내지 제50항 중 어느 한 항에 있어서,
    상기 움직임 벡터 획득 모듈은 구체적으로,
    제1 시간 거리 차이와 제2 시간 거리 차이의 비율에 기초하여, 상기 미리 설정된 블록 내 위치에 대응하는 움직임 벡터에 대해 스케일링 처리를 수행하여, 상기 처리될 블록의 서브블록의 움직임 벡터를 획득하도록 구성되고, 상기 제1 시간 거리 차이는 상기 처리될 블록이 위치하는 이미지 프레임과 상기 처리될 블록의 참조 프레임 사이의 픽처 순서 카운트 차이이고, 상기 제2 시간 거리 차이는 상기 병치된 서브블록이 위치하는 이미지 프레임과 상기 병치된 서브블록의 참조 프레임 사이의 픽처 순서 카운트 차이인, 인터 예측 장치.
  52. 제51항에 있어서,
    상기 처리될 블록의 참조 프레임 목록 내의 상기 처리될 블록의 참조 프레임 색인은 상기 비트스트림을 파싱함으로써 획득되는, 인터 예측 장치.
  53. 제51항 또는 제52항에 있어서,
    상기 처리될 블록의 참조 프레임 목록 내의 상기 처리될 블록의 참조 프레임 색인은 0인, 인터 예측 장치.
  54. 제28항 내지 제53항 중 어느 한 항에 있어서,
    상기 인터 예측 장치는,
    상기 처리될 블록의 서브블록의 움직임 벡터와 상기 처리될 블록의 참조 프레임에 기초하여 상기 처리될 블록의 서브블록에 대해 움직임 보상을 수행하여, 상기 처리될 블록의 서브블록의 예측 값을 획득하도록 구성된 움직임 보상 모듈을 더 포함하는 인터 예측 장치.
  55. 픽처 블록을 인코딩하도록 구성된 비디오 인코더로서,
    제28항 내지 제54항 중 어느 한 항에 따른 인터 예측 장치 - 상기 인터 예측 장치는, 타깃 후보 움직임 정보에 기초하여 현재 인코딩 픽처 블록의 움직임 정보를 예측하고, 상기 현재 인코딩 픽처 블록의 움직임 정보에 기초하여 상기 현재 인코딩 픽처의 예측된 픽셀 값을 결정하도록 구성됨 -;
    상기 타깃 후보 움직임 정보의 색인 식별자를 비트스트림으로 인코딩하도록 구성된 엔트로피 인코딩 모듈 - 상기 색인 식별자는 상기 현재 인코딩 픽처 블록에 사용되는 타깃 후보 움직임 정보를 지시함 -; 및
    상기 예측된 픽셀 값에 기초하여 상기 현재 인코딩 픽처 블록을 재구축하도록 구성된 재구축 모듈
    을 포함하는 비디오 인코더.
  56. 비트스트림으로부터 픽처 블록을 디코딩하도록 구성된 비디오 디코더로서,
    상기 비트스트림으로부터 색인 식별자를 디코딩하도록 구성된 엔트로피 디코딩 모듈 - 상기 색인 식별자는 현재 디코딩 픽처 블록의 타깃 후보 움직임 정보를 지시하는 데 사용됨 -;
    제28항 내지 제54항 중 어느 한 항에 따른 인터 예측 장치 - 상기 인터 예측 장치는, 상기 색인 식별자에 의해 지시되는 상기 타깃 후보 움직임 정보에 기초하여 상기 현재 디코딩 픽처 블록의 움직임 정보를 예측하고, 상기 현재 디코딩 픽처 블록의 움직임 정보에 기초하여 상기 현재 디코딩 픽처 블록의 예측된 픽셀 값을 결정하도록 구성됨 -; 및
    상기 예측된 픽셀 값에 기초하여 상기 현재 디코딩 픽처 블록을 재구축하도록 구성된 재구축 모듈
    을 포함하는 비디오 디코더.
  57. 비디오 코딩 기기로서,
    서로 결합된 비휘발성 메모리 및 프로세서를 포함하고,
    상기 프로세서는 상기 메모리에 저장된 프로그램 코드를 호출하여, 제1항 내지 제27항 중 어느 한 항에 따른 방법을 수행하는,
    비디오 코딩 기기.
  58. 처리될 블록이 하나 이상의 서브블록을 포함하는 인터 예측 방법으로서,
    상기 처리될 블록의 공간적으로 이웃하는 블록을 획득하는 단계; 및
    상기 공간적으로 이웃하는 블록에 기초하여 시간 오프셋 벡터를 획득하는 단계 - 상기 시간 오프셋 벡터는 상기 처리될 블록의 서브블록의 병치된 서브블록을 결정하는 데 사용됨 -를 포함하고,
    상기 공간적으로 이웃하는 블록이 제1 참조 프레임 목록에 위치한 제1 방향 참조 프레임을 갖고, 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제1 방향 참조 프레임과 동일한 경우, 상기 시간 오프셋 벡터는 상기 공간적으로 이웃하는 블록의 제1 방향 움직임 벡터이고, 상기 제1 방향 움직임 벡터는 상기 제1 방향 참조 프레임에 대응하는,
    인터 예측 방법.
  59. 제58항에 있어서,
    상기 공간적으로 이웃하는 블록이 상기 제1 참조 프레임 목록에 위치한 상기 제1 방향 참조 프레임을 갖지 않거나, 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제1 방향 참조 프레임과 상이한 경우, 상기 인터 예측 방법은,
    상기 공간적으로 이웃하는 블록이 제2 참조 프레임 목록에 위치한 제2 방향 참조 프레임을 갖고, 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제2 방향 참조 프레임과 동일한 경우, 상기 시간 오프셋 벡터는 상기 공간적으로 이웃하는 블록의 제2 방향 움직임 벡터이고, 상기 제2 방향 움직임 벡터는 상기 제2 방향 참조 프레임에 대응하는 것을 더 포함하는 인터 예측 방법
  60. 제58항 또는 제59항에 있어서,
    상기 처리될 블록의 공간적으로 이웃하는 블록을 획득하는 단계는,
    상기 공간적으로 이웃하는 블록이 이용 가능한지를 확인하는 단계; 및
    상기 공간적으로 이웃하는 블록이 이용 가능한 경우 상기 공간적으로 이웃하는 블록을 획득하는 단계를 포함하는 인터 예측 방법.
  61. 제58항 내지 제60항 중 어느 한 항에 있어서,
    상기 병치된 서브블록이 위치한 이미지 프레임이 상기 제1 방향 참조 프레임과 동일한 것은,
    상기 병치된 서브블록이 위치하는 이미지 프레임의 POC가 상기 제1 방향 참조 프레임의 POC와 동일한 것을 포함하는, 인터 예측 방법.
  62. 제59항 내지 제61항 중 어느 한 항에 있어서,
    상기 병치된 서브블록이 위치한 이미지 프레임이 상기 제2 방향 참조 프레임과 동일한 것은,
    상기 병치된 서브블록이 위치하는 이미지 프레임의 POC가 상기 제2 방향 참조 프레임의 POC와 동일한 것을 포함하는, 인터 예측 방법.
  63. 제58항 내지 제62항 중 어느 한 항에 있어서,
    상기 인터 예측 방법은,
    비트스트림을 파싱하여 상기 병치된 서브블록이 위치하는 이미지 프레임의 색인 정보를 획득하는 단계를 더 포함하는 인터 예측 방법.
  64. 제58항 내지 제62항 중 어느 한 항에 있어서,
    상기 인터 예측 방법은,
    상기 처리될 블록과 미리 설정된 관계를 갖는 이미지 프레임을 상기 병치된 서브블록이 위치하는 이미지 프레임으로서 사용하는 단계를 더 포함하는 인터 예측 방법.
  65. 제64항에 있어서,
    상기 미리 설정된 관계는,
    상기 병치된 서브블록이 위치하는 이미지 프레임이 디코딩 순서에서 상기 처리될 블록이 위치한 이미지 프레임에 인접하고, 상기 처리될 블록이 위치하는 이미지 프레임보다 먼저 디코딩되는 것을 포함하는, 인터 예측 방법.
  66. 제64항에 있어서,
    상기 미리 설정된 관계는,
    상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 처리될 블록의 제1 방향 참조 프레임 목록 또는 제2 방향 참조 프레임 목록에서 참조 프레임 색인이 0인 참조 프레임인 것을 포함하는, 인터 예측 방법.
  67. 제58항 내지 제66항 중 어느 한 항에 있어서,
    상기 공간적으로 이웃하는 블록이 상기 제2 참조 프레임 목록에 위치한 제2 방향 참조 프레임을 갖지 않거나, 상기 병치된 서브블록이 위치하는 이미지 프레임이 상기 제2 방향 참조 프레임과 다른 경우, 상기 인터 예측 방법은,
    상기 시간 오프셋 벡터로서 영 움직임 벡터를 사용하는 단계를 더 포함하는 인터 예측 방법.
  68. 비디오 코딩 기기로서,
    서로 결합된 비휘발성 메모리 및 프로세서를 포함하고,
    상기 프로세서는 상기 메모리에 저장된 프로그램 코드를 호출하여, 제58항 내지 제67항 중 어느 한 항에 따른 방법을 수행하는,
    비디오 코딩 기기.
KR1020217038708A 2019-05-17 2019-08-15 인터 예측 방법 및 장치 KR20220003037A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201910414914.5 2019-05-17
CN201910414914.5A CN111953995A (zh) 2019-05-17 2019-05-17 一种帧间预测的方法和装置
PCT/CN2019/100751 WO2020232845A1 (zh) 2019-05-17 2019-08-15 一种帧间预测的方法和装置

Publications (1)

Publication Number Publication Date
KR20220003037A true KR20220003037A (ko) 2022-01-07

Family

ID=73336807

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217038708A KR20220003037A (ko) 2019-05-17 2019-08-15 인터 예측 방법 및 장치

Country Status (8)

Country Link
US (1) US12108046B2 (ko)
EP (1) EP3955576A4 (ko)
JP (2) JP7318007B2 (ko)
KR (1) KR20220003037A (ko)
CN (2) CN111953995A (ko)
BR (1) BR112021023118A2 (ko)
MX (1) MX2021013316A (ko)
WO (1) WO2020232845A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024005456A1 (ko) * 2022-06-27 2024-01-04 현대자동차주식회사 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114026870A (zh) * 2019-06-27 2022-02-08 三星电子株式会社 用于对视频进行解码的方法和设备以及用于对视频进行编码的方法和设备
CN113794889B (zh) * 2021-03-19 2022-12-23 杭州海康威视数字技术股份有限公司 解码方法、编码方法、装置、设备及机器可读存储介质
US20230059035A1 (en) * 2021-08-23 2023-02-23 Netflix, Inc. Efficient encoding of film grain noise
US20230336737A1 (en) * 2022-04-18 2023-10-19 Tencent America LLC Sub-block based temporal motion vector predictor with an motion vector offset
WO2024151335A1 (en) * 2023-01-09 2024-07-18 Tencent America LLC Subblock based motion vector predictor with mv offset in amvp mode
US20240267525A1 (en) * 2023-02-02 2024-08-08 Tencent America LLC Smooth Sub-Block Motion Vector Prediction
CN118337962B (zh) * 2024-06-12 2024-09-03 湖南中泓汇智智能科技有限公司 一种用于超视距远程驾驶平台的5g网络数据传输方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201113527D0 (en) * 2011-08-04 2011-09-21 Imagination Tech Ltd External vectors in a motion estimation system
US11477477B2 (en) 2015-01-26 2022-10-18 Qualcomm Incorporated Sub-prediction unit based advanced temporal motion vector prediction
US20160337662A1 (en) 2015-05-11 2016-11-17 Qualcomm Incorporated Storage and signaling resolutions of motion vectors
EP3414901A4 (en) * 2016-02-08 2018-12-26 Sharp Kabushiki Kaisha Systems and methods for transform coefficient coding
CN116567212A (zh) * 2016-08-11 2023-08-08 Lx 半导体科技有限公司 编码/解码设备以及发送图像数据的设备
CN109587479B (zh) 2017-09-29 2023-11-10 华为技术有限公司 视频图像的帧间预测方法、装置及编解码器
KR20200095463A (ko) 2017-11-01 2020-08-10 브이아이디 스케일, 인크. 병합 모드를 위한 서브-블록 모션 도출 및 디코더측 모션 벡터 정교화

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024005456A1 (ko) * 2022-06-27 2024-01-04 현대자동차주식회사 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체

Also Published As

Publication number Publication date
EP3955576A1 (en) 2022-02-16
WO2020232845A1 (zh) 2020-11-26
US20220078441A1 (en) 2022-03-10
BR112021023118A2 (pt) 2022-01-04
MX2021013316A (es) 2021-12-10
EP3955576A4 (en) 2022-07-27
CN112243586A (zh) 2021-01-19
CN111953995A (zh) 2020-11-17
US12108046B2 (en) 2024-10-01
JP2023156315A (ja) 2023-10-24
JP7318007B2 (ja) 2023-07-31
JP7547574B2 (ja) 2024-09-09
JP2022532670A (ja) 2022-07-15

Similar Documents

Publication Publication Date Title
CN115243039B (zh) 一种视频图像预测方法及装置
JP7547574B2 (ja) インター予測方法および装置
WO2020114510A1 (zh) 用于多假设编码的加权预测方法及装置
KR102621958B1 (ko) 후보 모션 벡터 리스트 획득 방법, 장치, 인코더 및 디코더
CN115243048B (zh) 视频图像解码、编码方法及装置
AU2020261145B2 (en) Picture prediction method and apparatus, and computer-readable storage medium
TWI748522B (zh) 視訊編碼器、視訊解碼器及相應方法
KR20210107109A (ko) 인터 프레임 예측 방법, 디바이스, 및 대응하는 인코더 및 디코더
JP2023179684A (ja) ピクチャ予測方法および装置、およびコンピュータ可読記憶媒体
CN112088534B (zh) 一种帧间预测的方法、装置、设备及存储介质
CN112153389B (zh) 一种帧间预测的方法和装置
CN112135137B (zh) 视频编码器、视频解码器及相应方法
CN111432219B (zh) 一种帧间预测方法及装置
CN114270847A (zh) 融合候选运动信息列表的构建方法、装置及编解码器
CN118828009A (zh) 候选运动矢量列表获取方法、装置及编解码器
CN111726630A (zh) 基于三角预测单元模式的处理方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal