KR102621958B1 - 후보 모션 벡터 리스트 획득 방법, 장치, 인코더 및 디코더 - Google Patents

후보 모션 벡터 리스트 획득 방법, 장치, 인코더 및 디코더 Download PDF

Info

Publication number
KR102621958B1
KR102621958B1 KR1020217008064A KR20217008064A KR102621958B1 KR 102621958 B1 KR102621958 B1 KR 102621958B1 KR 1020217008064 A KR1020217008064 A KR 1020217008064A KR 20217008064 A KR20217008064 A KR 20217008064A KR 102621958 B1 KR102621958 B1 KR 102621958B1
Authority
KR
South Korea
Prior art keywords
block
candidate
picture
reference picture
motion vector
Prior art date
Application number
KR1020217008064A
Other languages
English (en)
Other versions
KR20210036411A (ko
Inventor
후안방 첸
하이타오 양
리안 장
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20210036411A publication Critical patent/KR20210036411A/ko
Application granted granted Critical
Publication of KR102621958B1 publication Critical patent/KR102621958B1/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/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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/567Motion estimation based on rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/4402Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display

Landscapes

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

Abstract

본 출원은 후보 모션 벡터 리스트를 획득하는 방법, 장치, 인코더 및 디코더를 개시한다. 후보 모션 벡터 리스트를 획득하는 방법은, 제 1 후보 픽처 블록이 인코딩/디코딩되고 인터 예측 모드가 사용될 때, 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 판정하는 단계와, 판정 결과를 기초로 현재 블록의 후보 모션 벡터 리스트를 구성하는 단계를 포함하되, 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일할 때 후보 모션 벡터 리스트는 제 1 후보 픽처 블록의 MV를 포함하고, 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때 후보 모션 벡터 리스트는 제 1 후보 픽처 블록의 MV를 포함하지 않는다. 본 출원을 구현하는 것은 인터 예측 모드에서 후보 모션 벡터 리스트를 획득하는 과정을 단순화하고, 모션 정보 유도 과정의 복잡성을 감소시키며, 코딩 효율을 향상할 수 있다.

Description

후보 모션 벡터 리스트 획득 방법, 장치, 인코더 및 디코더
관련 출원에 대한 상호 참조
본 출원은 2019년 5월 15일 “후보 모션 벡터 리스트 획득 방법, 장치, 인코더 및 디코더”라는 명칭으로 중국 특허청에 출원된 중국 특허 출원 제201910408133.5호에 대한 우선권을 주장하며, 이 중국 특허 출원은 그 전체가 본원에 참고로 포함된다.
기술분야
본 출원은 비디오 코딩 기술에 관한 것으로 특히, 후보 모션 벡터 리스트를 획득하는 방법, 장치, 인코더 및 디코더에 관한 것이다.
디지털 비디오 기능은 디지털 텔레비전, 디지털 라이브 방송 시스템, 무선 방송 시스템, PDA(Personal Digital Assistants), 랩톱 또는 데스크톱 컴퓨터, 태블릿 컴퓨터, e-book 리더기, 디지털 카메라, 디지털 녹음 장비, 디지털 미디어 재생기, 비디오 게임기, 비디오 게임 콘솔, 셀룰러 또는 위성 무선 전화(“스마트폰”이라고도 함), 화상 회의 장치, 비디오 스트리밍 장치 등과 같은 매우 다양한 장치에 통합될 수 있다. 디지털 비디오 장치는 예컨대, MPEG-2, MPEG-4, ITU-T H.263 및 ITU-T H.264 / MPEG-4 part 10 AVC(Advanced Video Coding), 비디오 코딩 표준 H.265/HEVC(High Efficiency Video Coding) 표준 및 이 표준의 확장 등과 같은 비디오 압축 기법을 구현한다. 비디오 장치는 비디오 압축 기술을 구현함으로써 디지털 비디오 정보를 보다 효율적으로 전송, 수신 인코딩, 디코딩 및/또는 저장할 수 있다.
AMVP(Advanced Motion Vector Prediction) 모드는 HEVC의 인터 예측 모드(inter prediction mode)이다. AMVP 모드에서, 현재 블록의 공간적으로 또는 시간적으로 이웃하는 코딩된 블록(이웃 블록으로 지칭됨)이 먼저 트래버싱(traverse)되고, 그 다음, 후보 모션 벡터 리스트(후보 모션 정보 리스트라고도 함)가 각 이웃 블록의 모션 정보를 기초로 획득되며 - 여기서 후보 모션 벡터 리스트의 최대 길이는 2임 -, 그 다음, 최적 모션 벡터(motion vector, MV)가 그 후보 모션 벡터 리스트에서 레이트 왜곡 비용(rate distortion cost, RD cost)을 기초로 결정되고, 최소의 RD cost를 갖는 하나의 모션 벡터 후보가 현재 블록의 모션 벡터 예측자(motion vector predictor, MVP)로 사용된다.
그러나, 종래 기술의 후보 모션 벡터 리스트를 획득하는 과정에서, 이웃하는 블록의 MV는 후보 모션 벡터 리스트에 추가되기 전에 더 처리되어야 한다. 이것은 비교적 복잡하다.
본 출원의 실시예들은 인터 예측 모드에서 후보 모션 벡터 리스트를 획득하는 과정을 단순화하고, 모션 정보 모션 유도 과정의 복잡성을 감소시키며, 어느 정도 코딩 효율을 향상하는, 벡터 후보 리스트를 획득하는 방법과, 장치, 인코더와 디코더를 제공한다.
제 1 양태에 따르면, 본 출원의 일 실시예는 후보 모션 벡터 리스트를 획득하는 방법을 제공한다. 이 방법은 제 1 픽처 후보 블록이 인코딩되거나 디코딩되고, 제 1 픽처 후보를 위해 인터 예측 모드가 사용될 때, 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정하는 단계와, 후보 모션 벡터 리스트를 구성하는 단계를 포함하는데, 제 1 후보 픽처 블록이 현재 블록의 참조 픽처와 같을 때는 후보 모션 벡터 리스트가 제 1 후보 픽처 블록의 MV(motion vector, 모션 벡터)를 포함하고, 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때는 후보 모션 벡터 리스트는 제 1 후보 픽처 블록의 MV를 포함하지 않는다
본 출원의 본 실시예에서 제 1 후보 픽처 블록과 제 2 후보 픽처 블록은 현재 블록과 사전 설정된 위치 관계(preset location relationship)를 갖는 픽처 블록이라는 것을 이해하여야 한다. 만약 이 방법이 인코더 측에서 구현된다면, 제 1 후보 픽처 블록 또는 제 2 후보 픽처 블록은 인코딩된 블록이고, 만약 이 방법이 디코더 측에서 구현된다면, 제 1 후보 픽처 블록 또는 제 2 후보 픽처 블록은 디코딩된 블록이다. 제 1 후보 픽처 블록은 현재 블록에 공간적으로 이웃한 좌측(left) 후보 픽처 블록이고, 제 2 후보 픽처 블록은 현재 블록에 공간적으로 이웃한 상측(above) 후보 픽처 블록이라고 가정할 수 있다. 그러나, 본 출원의 본 실시예에서 제 1 후보 픽처 블록과 제 2 후보 픽처 블록의 특정 위치가 제한되는 것은 아니다. 설명과 이해의 편의를 위하여, 예를 들어, 좌측 후보 픽처 블록은 제 1 후보 픽처 블록을 나타내는 데 사용되고, 상측 후보 픽처 블록은 제 2 후보 픽처 블록을 나타내는 데 사용된다.
본 출원에서, 공간적으로 이웃한 좌측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 좌측 후보 픽처 블록의 MV는 스케일링될 필요가 없고, 좌측 후보 픽처 블록의 MV는 바로 제외된다. 이것은 인터 예측 모드에서 후보 모션 벡터 리스트를 획득하는 과정을 단순화할 수 있고, 모션 정보 유도 과정의 복잡성을 감소시키며, 코딩 효율을 향상할 수 있다.
가능한 구현으로, 위 방법은, 제 2 후보 픽처 블록이 인코딩되거나 디코딩되고, 제 2 후보 픽처 블록을 위해 인터 예측 모드가 사용될 때, 제 2 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정하는 단계와, 제 2 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일할 때 제 2 후보 픽처 블록의 MV를 후보 모션 벡터 리스트 내의 모션 벡터 후보로 사용하는 단계를 더 포함한다. 제 2 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 후보 모션 벡터 리스트는 제 2 후보 픽처 블록의 MV를 포함하지 않는다.
본 출원에서, 공간적으로 이웃한 상측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 상측 후보 픽처 블록의 MV는 스케일링될 필요가 없고, 상측 후보 픽처 블록의 MV는 바로 제외된다. 이것은 인터 예측 모드에서 후보 모션 벡터 리스트를 획득하는 과정을 단순화할 수 있고, 모션 정보 유도 과정의 복잡성을 감소시키며, 코딩 효율을 향상할 수 있다.
가능한 구현으로, 제 2 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 제 2 픽처 블록의 MV는 제 2 후보 픽처 블록의 참조 픽처의 POC와 현재 블록의 참조 픽처의 POC를 기초로 스케일링되고, 스케일링된 MV는 후보 모션 벡터 리스트 내의 모션 벡터 후보로 사용된다.
본 출원에서, 공간적으로 이웃한 상측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 현재 픽처 블록의 좌측 후보 픽처 블록이 이용 가능한지 여부를 판정할 필요가 없고, 상측 후보 픽처 블록의 MV는 바로 스케일링된다. 이것은 MV 예측의 정확성과 코딩 효율을 개선할 수 있다.
가능한 구현으로, 현재 블록은 복수의 참조 픽처를 가지고, 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정하는 단계는, 복수의 참조 픽처의 POC들과 제 1 후보 픽처 블록의 참조 픽처의 POC를 개별적으로 비교하는 단계와, 복수의 참조 픽처의 POC들 중 어느 하나가 제 1 후보 픽처 블록의 참조 픽처의 POC와 동일할 때 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일하다고 판정하는 단계를 포함한다.
가능한 구현으로, 전술한 방법은, 제 2 후보 픽처 블록의 MV를 후보 모션 벡터 리스트 내의 모션 벡터 후보로 사용하기 전에, 제 1 후보 픽처 블록의 MV와 제 2 후보 픽처 블록의 MV가 다르다고 판정하는 단계를 더 포함한다. 제 1 후보 픽처 블록의 MV가 제 2 후보 픽처 블록의 MV와 동일할 때, 후보 모션 벡터 리스트는 제 2 후보 픽처 블록의 MV를 포함하지 않는다.
본 출원에서, 후보 모션 벡터 리스트의 중복되는 모션 벡터는 삭제된다. 이것은 중복성(redundancy)을 제거하고, MV 예측의 정확성과 코딩 효율을 개선할 수 있다.
제 2 양태에 따르면, 본 출원의 일 실시예는 전술한 제 1 양태의 임의의 방법을 구현하도록 구성된 몇몇의 기능 유닛을 포함한 인터 예측 장치를 제공한다. 예를 들어, 인터 예측 장치는 제 1 후보 픽처 블록이 인코딩되거나 디코딩되고, 제 1 후보 픽처 블록을 위해 인터 예측 모드가 사용될 때, 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정하도록 구성된 판정 모듈과, 이 판정 결과를 기초로 현재 블록의 후보 모션 벡터 리스트를 구성하도록 구성되는 처리 모듈을 포함할 수 있는데, 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일할 때는 후보 모션 벡터 리스트가 제 1 후보 픽처 블록의 MV를 포함하고, 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때는 후보 모션 벡터 리스트는 제 1 후보 픽처 블록의 MV를 포함하지 않는다.
본 출원에서, 공간적으로 이웃한 좌측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 좌측 후보 픽처 블록의 MV는 스케일링될 필요가 없고, 좌측 후보 픽처 블록의 MV는 바로 제외된다. 이것은 인터 예측 모드에서 후보 모션 벡터 리스트를 획득하는 과정을 단순화하고, 모션 정보 유도 과정의 복잡성을 감소시키며, 코딩 효율을 향상할 수 있다.
가능한 구현으로, 판정 모듈은 제 2 후보 픽처 블록이 인코딩되거나 디코딩되고, 제 2 후보 픽처 블록을 위해 인터 예측 모드가 사용될 때, 제 2 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정하도록 더 구성되고, 처리 모듈은 제 2 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일할 때, 제 2 후보 픽처 블록의 MV를 후보 모션 벡터 리스트 내의 모션 벡터 후보로 사용하도록 더 구성된다. 제 2 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 후보 모션 벡터 리스트는 제 2 후보 픽처 블록의 MV를 포함하지 않는다.
본 출원에서, 공간적으로 이웃한 상측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 상측 후보 픽처 블록의 MV는 스케일링될 필요가 없고, 상측 후보 픽처 블록의 MV는 바로 제외된다. 이것은 인터 예측 모드에서 후보 모션 벡터 리스트를 획득하는 과정을 단순화하고, 모션 정보 유도 과정의 복잡성을 감소시키며, 코딩 효율을 향상할 수 있다.
가능한 구현으로, 판정 모듈은 제 2 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 제 2 후보 픽처 블록의 참조 픽처의 POC와 현재 블록의 참조 픽처의 POC를 기초로 제 2 후보 픽처 블록의 MV를 스케일링하고, 스케일링된 MV를 후보 모션 벡터 리스트 내의 모션 벡터 후보로 사용하도록 더 구성된다.
본 출원에서, 공간적으로 이웃한 상측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 현재 픽처 블록의 좌측 후보 픽처 블록이 이용 가능한지 여부를 판정할 필요가 없고, 상측 후보 픽처 블록의 MV는 바로 스케일링된다. 이것은 MV 예측의 정확성과 코딩 효율을 개선할 수 있다.
가능한 구현으로, 현재 블록은 복수의 참조 픽처를 가지고, 판정 모듈은 복수의 참조 픽처의 POC들과 제 1 후보 픽처 블록의 참조 픽처의 POC를 개별적으로 비교하고, 복수의 참조 픽처의 POC들 중 어느 하나가 제 1 후보 픽처 블록의 참조 픽처의 POC와 동일할 때 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일하다고 판정하도록 더 구성된다.
가능한 구현으로, 처리 모듈은 제 1 픽처 블록의 MV와 제 2 픽처 블록의 MV가 다르다고 판정하도록 더 구성된다. 제 1 픽처 블록의 MV가 제 2 픽처 블록의 MV와 동일할 때, 후보 모션 벡터 리스트는 제 2 픽처 블록의 MV를 포함하지 않는다.
본 출원에서, 후보 모션 벡터 리스트의 중복되는 모션 벡터는 삭제된다. 이는 중복성을 제거하고, MV 예측의 정확성 및 코딩 효율을 개선할 수 있다.
제 3 양태에 따르면, 본 출원의 일 실시예는 비디오 인코더를 제공한다. 비디오 인코더는 픽처 블록을 인코딩하도록 구성되며, 다음을 포함한다:
전술한 제 2 양태에 의한 임의의 구현에 따른 것으로서, 현재 인코딩 픽처 블록의 모션 정보를 예측하고, 현재 인코딩 픽처 블록의 모션 정보를 기초로 현재 인코딩 픽처 블록의 예측 샘플 값을 결정하도록 구성되는 인터 예측 장치와,
목표 후보 모션 정보의 인덱스 지표(index indicator) - 인덱스 지표는 현재 인코딩 픽처 블록에 사용되는 목표 후보 모션 정보를 나타냄 - 를 비트스트림(bitstream)으로 인코딩하도록 구성되는 엔트로피 인코딩 모듈과,
예측 샘플 값을 기초로 현재 인코딩 픽처 블록을 복원하도록 구성되는 복원 모듈.
제 4 양태에 따르면, 본 출원의 일 실시예는 비디오 디코더를 제공한다. 비디오 디코더는 비트스트림으로부터 픽처 블록을 디코딩하도록 구성되며, 다음을 포함한다:
비트스트림을 디코딩하여 인덱스 지표 - 인덱스 지표는 현재 디코딩 픽처 블록의 목표 후보 모션 정보를 나타내도록 사용됨 - 를 획득하도록 구성된 엔트로피 디코딩 모듈과,
제 2 양태에 따른 것으로, 인덱스 지표에 의해 나타내진 목표 후보 모션 정보를 기초로 현재 디코딩 픽처 블록의 모션 정보를 예측하고, 현재 디코딩 픽처 블록의 모션 정보를 기초로 현재 디코딩 픽처 블록의 예측 샘플 값을 결정하도록 구성된 인터 예측 장치와,
예측 샘플 값을 기초로 현재 디코딩 픽처 블록을 복원하도록 구성되는 복원 모듈.
제 5 양태에 따르면, 본 출원의 일 실시예는 비디오 데이터 디코딩 장치를 제공한다. 비디오 데이터 디코딩 장치는 비트스트림의 형태로 비디오 데이터를 저장하도록 구성되는 메모리와, 비트스트림을 디코딩하여 비디오 데이터를 획득하도록 구성되는 비디오 디코더를 포함한다.
제 6 양태에 따르면, 본 출원의 일 실시예는 비디오 데이터 인코딩 장치를 제공한다. 비디오 데이터 인코딩 장치는 하나 이상의 픽처 블록을 포함하는 비디오 데이터를 저장하도록 구성되는 메모리와, 비디오 데이터를 기초로 비트스트림을 생성하도록 구성되는 비디오 인코더를 포함한다.
제 7 양태에 따르면, 본 출원의 일 실시예는 서로 커플링되어 있는 비휘발성 메모리와 프로세서를 포함하는 인코딩 장치를 제공한다. 프로세서는 메모리에 저장되어 있는 프로그램 코드를 호출하여, 전술한 제 1 양태의 방법의 일부 또는 모든 단계를 수행한다.
제 8 양태에 따르면, 본 출원의 일 실시예는 서로 커플링되어 있는 비휘발성 메모리와 프로세서를 포함하는 디코딩 장치를 제공한다. 프로세서는 메모리에 저장되어 있는 프로그램 코드를 호출하여, 전술한 제 1 양태의 방법의 일부 또는 모든 단계를 수행한다.
제 9 양태에 따르면, 본 출원의 일 실시예는 컴퓨터 판독 가능(computer-readable) 저장 매체를 제공한다. 컴퓨터 판독 가능 저장 매체는 프로그램 코드를 저장하고, 프로그램 코드는 전술한 제 1 양태의 방법의 일부 또는 모든 단계를 수행하는 데 사용되는 명령어를 포함한다.
제 10 양태에 따르면, 본 출원의 일 실시예는 컴퓨터 프로그램 제품을 제공한다. 컴퓨터 프로그램 제품이 컴퓨터상에서 실행될 때, 컴퓨터는 전술한 첫 번째 양태의 방법의 일부분 또는 모든 단계를 수행할 수 있게 된다.
본 출원의 제 2 내지 제 10 양태의 기술적 솔루션은 본 출원의 제 1 양태의 기술적 솔루션과 일치한다는 것을 이해하여야 한다. 다양한 양태와 이에 대응되는 실행 가능한 구현에 의해 달성되는 유용한 효과는 유사하며, 세부 사항은 다시 설명하지 않는다.
본 출원의 실시예들에서, 공간적으로 이웃하는 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 후보 픽처 블록의 MV는 스케일링될 필요가 없고, 후보 픽처 블록의 MV는 바로 제외된다는 것을 알 수 있다. 이는 인터 예측 모드에서 후보 모션 벡터 리스트를 획득하는 과정을 단순화하고, 모션 정보 유도 과정의 복잡성을 감소시키며, 코딩 효율을 향상할 수 있다.
본 출원의 실시예 또는 발명의 배경기술에서 기술적 솔루션을 더 명확하게 설명하기 위해, 이하에서는 본 출원의 실시예 또는 발명의 배경기술을 설명하기 위한 첨부 도면을 간략하게 설명한다.
도 1A는 본 출원의 실시예를 구현하기 위한 비디오 코딩 시스템(10)을 예시하는 블록도이다.
도 1B는 본 출원의 실시예를 구현하기 위한 비디오 코딩 시스템(40)을 예시하는 블록도이다.
도 2는 본 출원의 실시예를 구현하기 위한 인코더(20)를 예시하는 구조 블록도이다.
도 3은 본 출원의 실시예를 구현하기 위한 디코더(30)를 예시하는 구조 블록도이다.
도 4는 본 출원의 실시예를 구현하기 위한 비디오 코딩 장치(400)를 예시하는 블록도이다.
도 5는 본 출원의 실시예를 구현하기 위한 인코딩 장치 또는 디코딩 장치를 예시하는 또 다른 블록도이다.
도 6은 본 출원의 실시예에 따른 인터 예측에 사용되는 모션 정보에 대한 개략도이다.
도 7은 현재 블록의 후보 픽처 블록의 위치에 대한 개략도이다.
도 8은 본 출원의 실시예를 구현하기 위한, 후보 모션 벡터 리스트를 획득하는 방법에 대한 개략적인 흐름도이다.
도 9는 본 출원의 실시예에 따른 인터 예측 장치(900)의 개략적인 블록도이다.
다음은 본 출원의 실시예에 첨부된 도면을 참조하여 본 출원의 실시예를 설명한다. 다음의 설명에서, 본 개시물의 일부를 구성하고, 본 출원의 실시예의 특정 양태들 또는 본 출원의 실시예들이 사용될 수 있는 특정 양태들을 예시적으로 보여주는 첨부 도면을 참조한다. 본 출원의 실시예는 다른 양태로 사용될 수 있으며, 첨부 도면에 묘사되지 않은 구조적인 또는 논리적인 변화를 포함할 수 있다는 것을 이해하여야 한다. 따라서, 이하 상세한 설명은 제한적으로 해석되어서는 안 되며, 본 출원의 범위는 첨부된 청구항에 의하여 정의된다. 예를 들어, 설명된 방법과 관련하여 개시된 내용은, 그 방법을 수행하도록 구성된 상응하는 장치 또는 시스템에 대해서도 유효할 수 있으며, 그 반대도 마찬가지라는 것을 이해하여야 한다. 예를 들어, 만약 하나 이상의 특정한 방법 단계가 묘사된 경우, 비록 하나 이상의 유닛이 명시적으로 설명되거나 도면에 도시되지 않더라도, 상응하는 장치는 묘사된 하나 이상의 방법 단계를 수행하는 기능 유닛과 같은 하나 이상의 유닛을 포함할 수 있다(예를 들어, 하나의 유닛이 하나 이상의 단계를 수행할 수도 있고, 복수의 유닛 중 각각이 복수의 단계 중 하나 이상을 수행할 수도 있음). 추가적으로, 예를 들어, 만약 특정 장치가 기능 유닛과 같은 하나 이상의 유닛을 기초로 설명되어 있는 경우, 비록 하나 또는 복수의 단계가 명시적으로 설명되거나 도면에 도시되지 않더라도, 상응하는 방법은 하나 이상의 유닛의 하나 이상의 기능을 수행하는 데 사용되는 하나의 단계를 포함할 수 있다(예를 들어, 하나의 단계가 하나 이상의 유닛의 기능이나 기능들을 수행하는 데 사용될 수도 있고, 또는 복수의 단계들 중 각각의 단계가 복수의 유닛 중 하나 이상의 유닛의 하나 이상의 기능을 수행하는 데 사용될 수도 있음). 더욱이, 다양한 실시예의 특징 및/또는 본 명세서에서 설명된 양태는, 달리 특정되지 않는 한, 서로 조합될 수 있다는 것을 이해하여야 한다.
본 출원의 실시예와 관련된 기술적 솔루션은 현존하는 비디오 코딩 표준(예를 들어, H.264와 HEVC와 같은 표준)에만 적용되는 것이 아니라, 미래의 비디오 코딩 표준(예를 들어, H.266 표준)에도 적용될 수 있다. 본 출원의 구현에 사용되는 용어들은 단지 본 출원의 특정한 실시예를 설명하기 위한 것이며, 본 출원을 제한하기 위한 의도가 아니다. 다음은 본 출원의 실시예와 관련된 개념을 간략하게 설명한다.
비디오 코딩은 일반적으로 픽처 시퀀스(sequence)를 처리하는 것을 말하며, 픽처 시퀀스 비디오 또는 비디오 시퀀스을 형성한다. 비디오 코딩 분야에서, 용어 “픽처(picture)와, 프레임(frame)과, 이미지(image)는 동의어로 사용될 수 있다. 본 명세서에서 사용되는 비디오 코딩은 비디오 인코딩 또는 비디오 디코딩을 말한다. 비디오 인코딩은 소스 측에서 수행되고, 일반적으로 보다 효율적인 저장 및/또는 전송을 위하여 비디오 픽처를 나타내는 데 필요한 데이터의 양을 줄일 수 있도록 원본의 비디오 픽처를 처리(예를 들어, 압축을 통하여)하는 것을 포함한다. 비디오 디코딩은 목적지 측에서 수행되고, 일반적으로 비디오 픽처를 복원하기 위하여 인코더의 처리와 비교했을 때 반대로 처리하는 것을 포함한다. 실시예에서 비디오 픽처의 “코딩”은 비디오 시퀀스의 “인코딩” 또는 “디코딩”이라고 이해하여야 한다. 인코딩 부분과 디코딩 부분의 조합을 코덱(CODEC, encoding and decoding)이라고 말하기도 한다.
비디오 시퀀스는 일련의 픽처를 포함하고, 픽처는 슬라이스(slice)들로 더 분할되며, 슬라이스는 블록들로 더 분할된다. 비디오 코딩 처리는 블록 단위로 수행된다. 일부 새로운 비디오 코딩 표준에서는, “블록” 개념이 더 확장된다. 예를 들어, H.264 표준에서는 매크로 블록(macroblock, MB)이 도입된다. 매크로 블록은 예측 코딩을 위한 다수의 예측 블록(파티션)으로 더 분할될 수 있다. 고효율 비디오 코딩(high efficiency video coding, HEVC) 표준에서는, “코딩 유닛(coding unit, CU)”“예측 유닛(prediction unit, PU)”“변환 유닛(transform unit, TU)”과 같은 기본 개념이 사용되고, 복수의 블록 유닛은 기능적 분할(functional division)에 의하여 획득되며, 설명을 위하여 새로운 트리 기반(tree-based)의 구조가 사용된다. 예를 들어, CU는 쿼드트리 스플릿(quadtree split)을 통하여 더 작은 CU들로 분할될 수 있고, 더 작은 CU는 더 분할되어 쿼드트리 구조를 형성할 수 있다. 하나의 CU는 코딩 픽처의 스플릿과 코딩의 기본 단위이다. PU와 TU에 대해서는 유사한 트리 구조가 존재할 수 있다. PU는 예측 블록에 대응할 수 있고 예측 코딩을 위한 기본 단위이다. CU는 파티션 모드(partition mode)에서 다수의 PU들로 더 파티셔닝된다. TU는 변환 블록과 대응될 수 있고, 예측 잔차(prediction residual)를 변환하기 위한 기본 단위이다. 그러나, 모든 CU와 PU와 TU는 본질적으로 블록(또는 픽처 블록)의 개념이다.
예를 들어, HEVC에서, 하나의 CTU는 코딩 트리로 나타나는 쿼드트리 구조를 사용하여 다수의 CU로 분할된다. 인터 픽처(시간적) 또는 인트라 픽처(공간적) 예측을 통한 픽처 영역 코딩에 대한 결정은 CU 깊이(depth)에서 이루어진다. 각 CU는 PU 파티셔닝 패턴으로 하나, 둘 또는 네 개의 PU로 파티셔닝될 수 있다. 하나의 PU 내에서는 동일한 예측 프로세스가 적용되고, 관련된 정보가 PU 별로 디코더로 전송된다. PU 분할 패턴을 기초로 예측 프로세스를 적용하여 잔차 블록을 획득한 후에, CU는 CU에 사용된 코딩 트리와 유사한 또 다른 쿼드트리 구조를 기초로 변환 유닛(transform unit, TU)으로 파티셔닝될 수 있다. 최근 비디오 압축 기술의 발전으로, 쿼드 트리 및 이진 트리(Quad-tree and binary tree, QTBT) 파티셔닝 프레임이 코딩 블록 파티셔닝에 사용된다. QTBT 블록 구조에서, CU는 정사각형 또는 직사각형일 수 있다.
본 명세서에서, 설명과 이해의 편의를 위해, 현재 코딩 픽처에서 코딩될 픽처 블록을 현재 블록이라고 할 수 있다. 예를 들어, 인코딩 측에서, 현재 블록은 현재 인코딩되고 있는 블록이고, 디코딩 측에서, 현재 블록은 현재 디코딩되고 있는 블록이다. 참조 픽처에서, 현재 블록을 예측하는 데 사용되는 디코딩된 픽처 블록은 참조 블록이라고 한다. 다시 말해, 참조 블록은 현재 블록을 위하여 참조 신호를 제공하는 블록이고, 이 참조 신호는 픽처 블록의 픽셀 값을 나타낸다. 참조 픽처에서 현재 블록을 위하여 예측 신호를 제공하는 블록은 예측 블록이라고 할 수 있다. 이 예측 신호는 예측 블록에서 픽셀 값, 샘플 값, 또는 샘플 신호를 나타낸다. 예를 들어, 복수의 참조 블록이 트래버싱된 후 최적 참조 블록이 발견되고, 최적 참조 블록은 현재 블록을 위하여 예측을 제공하는데, 이 블록을 예측 블록이라고 한다.
무손실 비디오 코딩의 경우, 원본 비디오 픽처가 복원될 수 있다. 다시 말해, 복원된 비디오 픽처는 원본 비디오 픽처와 동일한 품질을 갖는다(저장 또는 전송하는 동안에 전송 손실 또는 기타 데이터 손실이 발생하지 않는다는 가정하에). 손실 비디오 코딩의 경우, 비디오 픽처를 나타내는 데 필요한 데이터의 양을 감소시키기 위하여 예를 들어 양자화와 같은 추가 압축이 수행되고, 비디오 픽처는 디코더 측에서 완벽하게 복원될 수 없다. 다시 말해, 복원된 비디오 픽처의 품질은 원본 비디오 픽처의 품질보다 낮거나 나쁘다.
여러 H.261 비디오 코딩 표준은 “손실 하이브리드 비디오 코딩(lossy hybrid video coding)”에 사용된다(즉, 샘플 도메인에서 공간적 및 시간적 예측이 변환 도메인에서 양자화 적용을 위하여 2D 변환 코딩과 결합된다). 비디오 시퀀스의 각 픽처는 일반적으로 논오버래핑(non-overlapping) 블록 세트로 파티셔닝되고, 일반적으로 블록 레벨에서 코딩이 수행된다. 다시 말해, 인코더 측에서는, 일반적으로 비디오는 블록(비디오 블록) 레벨에서, 예를 들어, 공간적(인트라 픽처) 예측 및 또는 시간적(인터 픽처) 예측을 사용하여 예측 블록을 생성하고, 예측 블록을 현재 블록(현재 처리되고 있거나 처리될 블록)에서 감산하여 잔차 블록을 획득하며, 변환 도메인에서 잔차 블록 변환 및 잔차 블록을 양자화하여 전송해야 할 데이터의 양을 감소(압축)시킴으로써, 처리 즉, 인코딩이 이루어지지만, 반면에 디코더 측에서는 표현을 위한 현재 블록 복원을 위하여 인코더의 처리와 비교하여 반대의 처리가 인코딩 또는 압축된 블록에 적용된다. 또한, 인코더는 디코더의 처리 루프를 복제하여, 인코더와 디코더가 후속 블록을 위한 처리 즉, 코딩을 위하여 동일한 예측(예를 들어, 인트라 예측 및 인터 예측) 및/또는 복원을 생성하도록 한다.
다음은 본 출원의 실시예가 적용되는 시스템 아키텍쳐(system architecture)를 설명한다. 도 1A는 본 출원의 실시예가 적용되는 비디오 코딩 시스템(10)을 예시하는 개략적인 블록도이다. 도 1A에 도시된 바와 같이, 비디오 코딩 시스템(10)은 소스 디바이스(12)와 목적지 디바이스(14)를 포함할 수 있다. 소스 디바이스(12)는 인코딩된 비디오 데이터를 생성하므로 비디오 인코딩 장치로 지칭할 수 있다. 목적지 디바이스(14)는 소스 디바이스(12)에 의하여 생성된 인코딩된 비디오 데이터를 디코딩할 수 있고, 이에 따라 목적지 디바이스(14)는 비디오 디코딩 장치로 지칭할 수 있다. 소스 디바이스(12), 목적지 디바이스(14), 또는 소스 디바이스(12) 또는 목적지 디바이스(14)의 다양한 구현 솔루션은 하나 이상의 프로세서와, 하나 이상의 프로세서에 커플링된 메모리를 포함할 수 있다. 메모리는 RAM, ROM, EEPROM, 플래시 메모리, 또는 본 명세서에 묘사된 대로 컴퓨터에 의하여 접근 가능한 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하는 데 사용할 수 있는 임의의 기타 매체 포함할 수 있으나 이에 제한되지 않는다. 소스 디바이스(12)와 목적지 디바이스(14)는 데스크톱 컴퓨터, 모바일 컴퓨팅 장치, 노트북(예를 들어, 랩톱) 컴퓨터, 태블릿 컴퓨터, 셋톱박스(set top box), “스마트폰”과 같은 휴대용 전화기, 텔레비전 세트, 카메라, 디스플레이 장치, 디지털 매체 플레이어, 비디오 게임 콘솔, 차량 내부 컴퓨터, 무선 통신 장치 또는 유사한 장치를 포함한 다양한 장치를 포함할 수 있다.
비록, 도 1A는 소스 디바이스(12)와 목적지 디바이스(14)를 분리된 장치로 도시하지만, 장치의 실시예는 두 장치 모두를 또는 두 기능 모두를 포함할 수 있다: 소스 디바이스(12) 또는 상응하는 기능과 목적지 디바이스(14) 또는 상응하는 기능. 그러한 실시예에서, 소스 디바이스(12) 또는 상응하는 기능과 목적지 디바이스(14) 또는 상응하는 기능은, 같은 하드웨어 및/또는 소프트웨어를 사용하거나, 별도의 하드웨어 및/또는 소프트웨어 또는 이들의 임의의 조합을 사용하는 것에 의하여 구현될 수 있다.
소스 디바이스(12)와 목적지 디바이스(14) 사이의 통신 연결은 링크(13)에 의하여 구현될 수 있고, 목적지 디바이스(14)는 링크(13)를 통해 소스 디바이스(12)로부터 인코딩된 비디오 데이터를 수신할 수 있다. 링크(13)는 인코딩된 비디오 데이터를 소스 디바이스(12)에서 목적지 디바이스(14)로 옮기는 것이 가능한 하나 이상의 매체 또는 기구를 포함할 수 있다. 일 예에서, 링크(13)는 소스 디바이스(12)가 인코딩된 비디오 데이터를 실시간으로 목적지 디바이스(14)로 바로 전송할 수 있게 하는 하나 이상의 통신 매체를 포함할 수 있다. 본 예에서, 소스 디바이스(12)는 인코딩된 비디오 데이터를 통신 표준(예를 들어, 무선 통신 프로토콜)에 따라 변조할 수 있고, 변조된 비디오 데이터를 목적지 디바이스(14)에 전송할 수 있다. 하나 이상의 통신 매체는 무선 통신 매체 및/또는 유선 통신 매체, 예를 들어 RF(Radio Frequency) 스펙트럼 또는 하나 이상의 물리적 전송 선로를 포함할 수 있다. 하나 이상의 통신 매체는 패킷 기반(packet-based) 네트워크의 일부분에 해당할 수 있고, 패킷 기반 네트워크는, 예를 들어 근거리 통신망(local area network), 광역망(wide area network), 또는 글로벌 네트워크(global network, 예를 들어 인터넷)이다. 하나 이상의 통신 매체는 라우터, 스위치, 기지국, 또는 소스 디바이스(12)에서 목적지 디바이스(14)로의 통신을 가능하게 하는 다른 장치를 포함할 수 있다.
소스 디바이스(12)는 인코더(20)를 포함하며, 소스 디바이스(12)는 선택적으로 픽처 소스(16), 픽처 전처리기(pre-processor)(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개의 샘플 어레이를 포함할 수 있다. 예를 들어, RGB 포맷 또는 색 공간에서, 픽처는 상응하는 빨강, 녹색, 파랑 샘플 어레이를 포함한다. 그러나, 비디오 코딩에서, 각 픽셀은 일반적으로 휘도/색차 포맷 또는 색 공간에서 나타내진다. 예를 들어, YUV 포맷에서 픽처는 Y(때로는 L이 대신 사용됨)로 표시되는 휘도 성분과 U 와 V로 표시되는 두 색차 성분을 포함한다. 휘도(luma, 루마) 성분 Y는 밝기 또는 그레이 레벨 강도(gray level intensity)를 나타내고(예를 들어, 이 둘은 회색조 픽처에서 동일함), 반면에 두 색차(chroma, 크로마) 성분 U와 V는 채도 또는 색 정보 성분을 나타낸다. 따라서, YUV 포맷에서의 픽처는 루마 샘플 값(Y)의 루마 샘플 어레이와 크로마 값(U와 V)의 두 개의 크로마 샘플 어레이를 포함한다. RGB 포맷의 픽처는 YUV 형식의 픽처로 변환하거나 변형할 수 있고 그 반대의 경우도 가능하며, 이 프로세스를 색상 변형(transformation) 또는 변환(conversion)이라고도 한다. 만약 픽처가 흑백인 경우에, 픽처는 루마 샘플 어레이만 포함할 수 있다. 본 출원의 본 실시예에서, 픽처 소스(16)에 의해 픽처 프로세서로 전송되는 픽처는 미가공(raw) 픽처 데이터(17)로 지칭할 수 있다.
픽처 전처리기(18)는 미가공 픽처 데이터(17)를 수신하고, 미가공 픽처 데이터(17)를 전처리하여, 전처리 픽처(19) 또는 전처리 픽처 데이터(19)를 획득하도록 구성된다. 예를 들어, 픽처 전처리기(18)에 의해 수행되는 전처리는 손질(trimming), 색 포맷 변환(예를 들어, RGB 포맷에서 YUV 포맷으로), 색 보정, 또는 노이즈 제거(de-noising)를 포함할 수 있다.
인코더(20)(비디오 인코더(20)라고도 함)는 전처리 픽처 데이터(19)를 수신하고, 관련된 예측 모드(본 명세서의 각 실시예의 예측 모드와 같은)를 사용하여 전처리 픽처 데이터(19)를 처리하여, 인코딩된 픽처 데이터(21)(인코더(20)의 구조적 세부 사항은 도 2, 도 4 또는 도 5를 기초로 이하에서 설명된다)를 제공하도록 구성된다. 일부 실시예에서, 인코더(20)는 이하에서 설명된 실시예들을 수행하도록 구성될 수 있어, 본 출원에서 설명된 인코더 측의 크로마 블록 예측 방법의 애플리케이션을 구현한다.
통신 인터페이스(22)는 인코딩된 픽처 데이터(21)를 수신하고, 인코딩된 픽처 데이터(21)를 저장 또는 바로 복원을 위해 링크(13)를 통하여 목적지 디바이스(14) 또는 임의의 다른 장치(예를 들어, 메모리)로 전송하도록 구성될 수 있다. 이 임의의 다른 장치는 디코딩 또는 저장을 위하여 사용되는 임의의 장치가 될 수 있다. 통신 인터페이스(22)는, 예를 들어, 인코딩된 픽처 데이터(21)를 링크(13)를 통한 전송을 위하여 적절한 포맷, 예를 들어 데이터 패킷으로, 패키징하도록 구성될 수 있다.
목적지 디바이스(14)는 디코더(30)를 포함하고, 목적지 디바이스(14)는 선택적으로 통신 인터페이스(28), 픽처 후처리기(post-processor)(32), 디스플레이 디바이스(34)를 포함할 수 있다. 별도 설명은 다음과 같다.
통신 인터페이스(28)는 소스 디바이스(12) 또는 임의의 다른 소스로부터 인코딩된 픽처 데이터(21)를 수신하도록 구성될 수 있다. 이 임의의 다른 소스는, 예를 들어 저장 장치이고, 이 저장 장치는, 예를 들어 인코딩된 픽처 데이터 저장 장치이다. 통신 인터페이스(28)는 소스 디바이스(12)와 목적지 디바이스(14) 간 링크(13) 또는 임의의 유형의 네트워크를 통하여 인코딩된 픽처 데이터(21)를 송신 또는 수신하도록 구성될 수 있다. 링크(13)는 예를 들어, 직접 유선 또는 무선 연결이고, 이 임의의 유형의 네트워크는, 예를 들어 유선 또는 무선 네트워크, 또는 이들의 임의의 조합, 또는 임의의 유형의 사설 또는 공용 네트워크, 또는 이들의 임의의 조합이다. 통신 인터페이스(28)는 인코딩된 픽처 데이터(21)를 획득하기 위하여, 예를 들어 통신 인터페이스(22)를 통해 전송된 데이터 패킷을 디패키징 하도록 구성될 수 있다.
통신 인터페이스(28) 및 통신 인터페이스(22)는 모두 단방향 통신 인터페이스 또는 양방향 통신 인터페이스로 구성될 수 있고, 예를 들어 연결을 설정하기 위한 메시지를 발신하거나 수신하고, 통신 링크 및/또는 인코딩된 픽처 데이터 송신과 같은 데이터 전송과 관련된 임의의 다른 정보를 확인하고 교환하도록 구성될 수 있다.
디코더(30)(디코더(30)이라고도 함)는 인코딩된 픽처 데이터(21)를 수신하고, 디코딩된 픽처 데이터(31) 또는 디코딩된 픽처(31)(디코더(30)의 구조적 세부 사항은 도 3, 도 4, 또는 도 5를 기초로 이하에서 설명된다)를 제공하도록 구성된다. 일부 실시예에서, 디코더(30)는 이하에서 설명된 실시예들을 수행하도록 구성될 수 있어, 본 출원에서 설명된 디코더 측에서 크로마 블록 예측 방법의 애플리케이션을 구현한다.
픽처 후처리기(32)는 디코딩된 픽처 데이터(31)(복원된 픽처 데이터라고도 함)를 후처리하도록 구성되어, 후처리 픽처 데이터(33)를 획득한다. 픽처 후처리기(32)에 의해 수행되는 후처리는 색 포맷 변환(예를 들어, YUV 포맷에서 RGB 포맷으로), 색 보정, 손질, 재샘플링(re-sampling), 또는 임의의 다른 처리를 포함할 수 있다. 픽처 후처리기(32)는 후처리 픽처 데이터(33)를 디스플레이 디바이스(34)로 전송하도록 더 구성될 수 있다.
디스플레이 디바이스(34)는, 예를 들어 사용자 또는 시청자에게, 픽처를 디스플레이하기 위해 후처리 데이터(33)를 수신하도록 구성된다. 디스플레이 디바이스(34)는 복원된 픽처를 보여주도록 구성된, 예를 들어 통합된 또는 외부의 디스플레이 또는 모니터와 같은 임의의 유형의 디스플레이이거나, 그러한 디스플레이를 포함할 수 있다. 예를 들어, 디스플레이는 LCD(Liquid Crystal Display), OLED(Organic Light Emitting Diode) 디스플레이, 플라즈마 디스플레이, 프로젝터, 마이크로 LED 디스플레이, LCoS(Liquid Crystal On Silicon), DLP(Digital Light Processor), 또는 임의의 다른 유형의 디스플레이를 포함할 수 있다.
비록 도 1A가 소스 디바이스(12)와 목적지 디바이스(14)를 별개의 장치로 도시하고 있지만, 장치의 실시예는 소스 디바이스의 실시예는 둘 모두를 포함하거나, 두 기능 모두를 포함할 수 있다: 소스 디바이스(12) 또는 상응하는 기능과 목적지 디바이스(14) 또는 상응하는 기능. 그러한 실시예에서, 소스 디바이스(12) 또는 상응하는 기능과 목적지 디바이스(14) 또는 상응하는 기능은, 같은 하드웨어 및/또는 소프트웨어를 사용하거나, 별도의 하드웨어 및/또는 소프트웨어 또는 이들의 임의의 조합을 사용하는 것에 의하여 구현될 수 있다.
당업자는 발명의 설명을 기초로 도 1에 나타난 서로 다른 유닛의 기능 또는 소스 디바이스(12) 및/또는 목적지 디바이스(14)의 기능의 존재 및 (정확한)분리는 실제 장치와 애플리케이션에 따라 달라질 수 있다는 것을 알 수 있다. 소스 디바이스(12)와 목적지 디바이스(14)는 각각 임의의 유형의 휴대용 또는 고정된 장치, 예를 들어, 노트북 또는 랩톱 컴퓨터, 모바일 전화기, 스마트폰, 패드 또는 태블릿 컴퓨터, 비디오 카메라, 데스크톱 컴퓨터, 셋톱박스, 텔레비전, 카메라, 차량 탑재 장치, 디스플레이 장치, 디지털 미디어 재생기, 비디오 게임 콘솔, 비디오 스트리밍 장치(컨텐츠 서비스 서버 또는 컨텐츠 배포 서버와 같은), 방송 수신기 장치, 또는 방송 송신기 장치를 포함하는 다양한 장치들 중 하나일 수 있고, 임의의 유형의 운영 체제를 사용하거나 사용하지 않을 수 있다.
인코더(20)와 디코더(30)는 각각 다양한 적절한 회로, 예를 들어, 하나 이상의 마이크로프로세서, DSP(Digital Signal Processor), ASIC(Application-Specific Integrated Circuit), FPGA(Field-Programmable Gate Array), 이산 논리, 하드웨어, 또는 이들의 임의의 조합에 의하여 구현될 수 있다. 만약 이 기법이 소프트웨어를 이용하여 부분적으로 구현되면, 장치는 적절한 비일시적 컴퓨터 판독 가능 저장 매체에 소프트웨어 명령어를 저장할 수 있고, 하나 이상의 프로세서와 같은 하드웨어를 이용하여 명령어를 실행하여, 본 개시물의 기법을 수행할 수 있다. 전술한 내용(하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함) 중 어떠한 것이든 하나 이상의 프로세서로 간주될 수 있다.
일부 경우에, 도 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)은 ASIC(Application-Specific Integrated Circuit) 로직, 그래픽 프로세서, 범용 프로세서 등을 포함할 수 있다. 비디오 코딩 시스템(40)은 대안적으로 선택적 프로세서(43)(optional processor)를 포함할 수 있다. 선택적 프로세서(43)는 유사하게 ASIC(Application-Specific Integrated Circuit) 로직, 그래픽 프로세서, 범용 프로세서 등을 포함할 수 있다. 일부 예에서, 논리 회로(47)는 하드웨어, 예를 들어 비디오 코딩 전용 하드웨어에 의해 구현될 수 있고, 프로세서(43)는 범용 소프트웨어, 운영 체제 등에 의하여 구현될 수 있다. 추가적으로, 메모리(44)는 임의의 유형의 메모리, 예를 들어 휘발성 메모리(예: SRAM(Static Random Access Memory), DRAM(Dynamic Random Access Memory)) 또는 비휘발성 메모리(예: 플래시 메모리)일 수 있다. 비제한적인 예에서, 메모리(44)는 캐시 메모리(cache memory)에 의해 구현될 수 있다. 일부 예에서, 논리 회로(47)는 메모리(44)에 접근할 수 있다(예를 들어, 픽처 버퍼의 구현을 위해). 다른 예에서, 논리 회로(47) 및/또는 처리 유닛(46)은 픽처 버퍼 등의 구현을 위하여 메모리(예를 들어, 캐시)를 포함할 수 있다.
일부 예에서, 논리 회로에 의하여 구현된 인코더(20)는 픽처 버퍼(예를 들어, 처리 유닛(46) 또는 메모리(44)에 의해 구현)와 그래픽 처리 유닛(예를 들어, 처리 유닛(46)에 의해 구현)을 포함할 수 있다. 그래픽 처리 유닛은 픽처 버퍼에 통신 가능하도록 커플링될 수 있다. 그래픽 처리 유닛은 논리 회로(47)에 의해 구현된 인코더(20)를 포함할 수 있어, 도 2를 참조하여 설명된 다양한 모듈 및/또는 본 명세서에서 설명된 임의의 다른 인코더 시스템 또는 서브 시스템을 구현한다. 논리 회로는 본 명세서에서 설명된 다양한 동작을 수행하도록 구성될 수 있다.
일부 예에서, 디코더(30)는 비슷한 방식으로 논리 회로(47)에 의해 구현될 수 있어, 도 3의 디코더(30)를 참조하여 설명된 다양한 모듈 및/또는 본 명세서에서 설명된 임의의 다른 디코더 시스템 또는 서브시스템을 구현한다. 일부 예에서, 논리 회로에 의하여 구현된 디코더(30)는 픽처 버퍼(예를 들어, 처리 유닛(46) 또는 메모리(44)에 의하여 구현)와 그래픽 처리 유닛(예를 들어, 처리 유닛(46)에 의하여 구현)을 포함할 수 있다. 그래픽 처리 유닛은 픽처 버퍼에 통신 가능하도록 커플링될 수 있다. 그래픽 처리 유닛은 논리 회로(47)에 의해 구현된 디코더(30)를 포함할 수 있어, 도 3을 참조하여 설명된 다양한 모듈 및/또는 본 명세서에서 설명된 임의의 다른 인코더 시스템 또는 서브 시스템을 구현한다.
일부 예에서, 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 수신할 수 있다. 설명된 바와 같이, 인코딩된 비트스트림은 데이터, 지표, 인덱스 값, 모드 선택 데이터, 또는 본 명세서에서 설명된 기타 비디오 프레임 코딩과 관련된 것들, 예를 들어 코딩 파티셔닝과 관련된 데이터를 포함할 수 있다(예를 들어, 변환 계수, 또는 양자화 변환 계수, 선택적 지표(설명된 바와 같음), 및/또는 코딩 파티셔닝 정의 데이터). 비디오 코딩 시스템(40)은 안테나(42)에 커플링되고 인코딩된 비트스트림을 디코딩하도록 구성된 디코더(30)를 더 포함할 수 있다. 디스플레이 디바이스(45)는 비디오 프레임을 제공하도록 구성된다.
본 출원의 실시예에서, 예를 들어 인코더(20)를 참조하여 설명된 예에서, 디코더(30)는 반대의 처리를 수행하도록 구성될 수 있다는 것을 이해하여야 한다. 시그널링 신택스 요소(signaling syntax element)와 관련하여, 디코더(30)는 그러한 신택스 요소를 수신하고 파싱(parse)하며, 관련된 비디오 데이터를 대응하여 디코딩하도록 구성될 수 있다. 일부 예에서, 인코더(20)는 신택스 요소를 인코딩된 비디오 비트스트림으로 엔트로피 인코딩(entropy encode) 할 수 있다. 그러한 예에서, 디코더(30)는 그러한 신택스 요소를 파싱하고, 대응하여 관련 비디오 데이터를 디코딩할 수 있다.
본 출원의 실시예에서 설명된 후보 모션 벡터 리스트를 획득하는 방법은 주로 인터 예측 프로세스에서 사용되고, 이 프로세스는 인코더(20)와 디코더(30) 모두에 존재한다는 점을 유의하여야 한다. 본 출원의 실시예의 인코더(20)/디코더(30)는 H.263, H.264, HEVC, 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), 모드 선택 유닛(262)을 포함할 수 있다. 인터 예측 유닛(244)은 모션 추정 유닛과 모션 보상 유닛(도면에 나타나지 않음)을 포함할 수 있다. 도 2에 나타난 인코더(20)는 하이브리드 비디오 인코더 또는 하이브리드 비디오 코덱에 기초한 비디오 인코더라고도 할 수 있다.
예를 들어, 잔차 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 예측 처리 유닛(260), 엔트로피 인코딩 유닛(270)은 인코더(20)에 대해 순방향 신호 경로를 형성하는 반면에, 예를 들어, 역양자화 유닛(210), 역변환 처리 유닛(212), 복원 유닛(214), 버퍼(216), 루프 필터(220), 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230), 예측 처리 유닛(260)은 인코더에 대해 역방향 신호 경로를 형성한다. 인코더에 대해 역방향 신호 경로는 디코더의 신호 경로와 일치한다(도 3의 디코더(30) 참조).
인코더(20)는, 예를 들어 입력단(202)을 통하여, 예를 들어 비디오 또는 비디오 시퀀스를 형성하는 픽처 시퀀스 내의 픽처인 픽처(201) 또는 픽처(201)의 픽처 블록(203)을 수신한다. 픽처 블록(203)은 현재 픽처 블록 또는 인코딩 예정 픽처 블록이라고도 할 수 있다. 픽처(201)는 현재 픽처 또는 인코딩 예정 픽처 블록(특히 비디오 코딩에서는, 현재 픽처와 다른 픽처를 구별하기 위하여 다른 픽처는, 예를 들어, 동일한 하나의 비디오 시퀀스 즉, 현재 픽처 또한 포함하는 비디오 시퀀스 내에서, 이전에 인코딩된 및/또는 디코딩된 픽처임)이라고도 할 수 있다.
일 실시예에서 인코더(20)는 픽처(201)를 픽처 블록(203)과 같은 다수의 블록으로 파티셔닝하도록 구성된 파티셔닝 유닛(도 2에 나타나지 않음)을 포함할 수 있다. 픽처(201)는 보통 다수의 논오버래핑(non-overlapping) 블록으로 파티셔닝된다. 파티셔닝 유닛은 하나의 비디오 시퀀스 내의 모든 픽처를 위해 같은 블록 크기 및 그 블록 크기를 정의하는 상응하는 그리드(grid)를 사용하거나, 또는 픽처 간, 서브셋 간, 또는 픽처 그룹 간 블록 크기를 변경하고, 각 픽처를 상응하는 블록들로 파티셔닝하도록 구성된다.
일 예에서, 인코더(20)의 예측 처리 유닛(260)은 위에서 설명된 파티셔닝 기법의 임의의 조합을 수행하도록 구성될 수 있다.
비록 픽처 블록(203)의 크기가 픽처(201)보다 작지만, 픽처(201)와 마찬가지로, 픽처 블록(203) 또한 샘플 값을 갖는 샘플의 2차원 어레이 또는 행렬이거나 또는 그렇게 간주될 수 있다. 다시 말해, 픽처 블록(203)은, 예를 들어, 하나의 샘플 어레이(예를 들어, 흑백(monochrome) 픽처(201)의 경우 루마 어레이), 세 개의 샘플 어레이(예를 들어, 컬러 픽처의 경우 하나의 루마 어레이와 두 개의 크로마 어레이), 또는 적용된 색 포맷에 따른 임의의 다른 개수 및/또는 유형의 어레이를 포함할 수 있다. 픽처 블록(203)의 수평 및 수직 방향(또는 축)의 샘플의 수는 픽처 블록(203)의 크기를 정의한다.
도 2에 나타난 인코더(20)는 픽처(201)를 블록 단위로 인코딩하도록, 예를 들어 각각의 픽처 블록(203)을 인코딩하고 예측하도록 구성된다.
잔차 계산 유닛(204)은 픽처 블록(203)과 예측 블록(265)(예측 블록(265)에 대한 더 세부적인 사항은 아래 제공)을 기초로 잔차 블록(205)을 계산하도록, 예를 들어, 샘플 단위로(픽셀 단위로) 픽처 블록(203)의 샘플 값으로부터 예측 블록(265)의 샘플 값을 감산하여 샘플 도메인 내의 잔차 블록(205)을 획득하도록 구성된다
변환 처리 유닛(206)은 변환 도메인에서 변환 계수(207)를 획득하기 위하여 변환, 예를 들어 이산 코사인 변환(discrete cosine transform, DCT), 또는 이산 사인 변환(discrete sine transform, DST)을 잔차 블록(205)의 샘플 값에 적용하도록 구성된다. 변환 계수(207)는 변환 잔차 계수로 지칭할 수 있고, 변환 도메인에서의 잔차 블록(205)을 나타낼 수 있다.
변환 처리 유닛(206)은 HEVC/H.265에 규정된 변환과 같은 DCT/DST의 정수 근사를 적용하도록 구성될 수 있다. 직교 DCT 변환과 비교하여, 이러한 정수 근사는 일반적으로 특정 인자에 의하여 스케일링된다. 정방향과 역방향 변환을 통하여 처리되는 잔차 블록의 기준(norm)을 보존하기 위하여, 추가적인 스케일링 인자(scale factor)를 적용하는 것은 변환 처리의 일부이다. 스케일링 인자는 일반적으로 일부 제약에 기초하여 선택된다. 예를 들어, 스케일링 인자는 시프트 연산에서 2의 거듭 제곱, 변환 계수의 비트 심도(bit depth), 정확성과 구현 비용 사이의 트레이드 오프(tradeoff) 등이다. 예컨대, 특정 스케일링 인자는, 예를 들어 디코더 측(30)의 역변환 처리 유닛(212)에 의한 역변환(그리고 인코더 측(20)의 역변환 처리 유닛(212)에 의한 대응하는 역변환)에 대해 특정되고, 예를 들어 인코더 측(20)의 변환 처리 유닛(206)에 의한, 대응하는 정방향 변환에 대한 스케일링 인자는, 그에 따라 특정된다.
양자화 유닛(208)은, 예를 들어 스칼라 양자화 또는 벡터 양자화를 적용하여, 변환 계수(207)를 양자화하도록 구성되어, 양자화된 변환 계수(209)를 획득한다. 양자화된 변환 계수(209)는 양자화된 잔차 계수(209)라고도 지칭할 수 있다. 양자화 프로세스는 변환 계수(207)의 일부 또는 전부와 관련된 비트 심도를 감소시킬 수 있다. 예를 들어, m보다 큰 n에 대하여, n비트 변환 계수는 양자화 중 m비트 변환 계수로 버림(round down)될 수 있다. 양자화 정도는 양자화 파라미터(quantization parameter, QP)를 조절하여 수정될 수 있다. 예를 들어, 스칼라 양자화에서, 더 고밀도 또는 저밀도의 양자화를 달성하기 위하여 다른 스케일이 적용될 수 있다. 더 작은 양자화 스텝은 고밀도 양자화에 대응하는 반면에, 더 큰 양자화 스텝은 저밀도 양자화에 대응한다. 적절한 양자화 스텝 크기는 양자화 파라미터에 의해 나타내질 수 있다. 양자화 파라미터(quantization parameter, QP)는, 예를 들어, 미리 정의된 적절한 양자화 스텝 크기 세트에 대한 인덱스일 수 있다. 예를 들어, 더 작은 양자화 파라미터는 고밀도 양자화(더 작은 양자화 스텝 크기)에 대응하고, 더 큰 양자화 파라미터는 저밀도 양자화(더 큰 양자화 스텝 크기)에 대응하거나 그 반대일 수 있다. 양자화는 양자화 스텝 크기와 대응하는 양자화 및/또는, 예를 들어 역양자화 유닛(210)에 의해 수행되는, 역양자화에 의한 나눗셈을 포함하거나, 또는 양자화 스텝 크기에 의한 곱셈을 포함할 수 있다. HEVC와 같은 일부 표준에 따른 실시예에서, 양자화 파라미터는 양자화 스텝 크기를 결정하는 데 사용될 수 있다. 일반적으로, 양자화 스텝 크기는 나눗셈을 포함하는 방정식의 고정 소수점 근사화를 사용하여 양자화 파라미터를 기초로 계산될 수 있다. 잔차 블록의 기준을 복원하기 위하여 추가적인 스케일링 인자가 양자화와 역양자화에 도입될 수 있고, 양자화 스텝 크기와 양자화 파라미터에 대한 방정식의 고정 소수점 근사화에 사용된 스케일로 인하여 그 잔차 블록의 기준은 수정될 수 있다. 예시적인 구현에서, 역변환과 역양자화의 스케일은 조합될 수 있다. 이에 대신하여, 맞춤형 양자화 테이블이 사용될 수 있고, 인코더로부터 디코더까지, 예를 들어 비트스트림으로 시그널링될 수 있다. 양자화는 손실이 있는 연산이며, 양자화 스텝 크기가 증가할수록 그 손실은 증가한다.
역양자화 유닛(210)은, 양자화 유닛(208)과 동일한 양자화 스텝 크기를 기초로 또는 이를 사용하여, 양자화된 계수에 양자화 유닛(208)의 역양자화를 적용, 예를 들어 양자화 유닛(208)에 의해 적용되는 양자화 방식의 역양자화 방식을 적용하도록 구성되어 역양자화 계수(211)를 획득한다. 역양자화된 계수(211)는 역양자화된 잔차 계수(211)라고도 지칭할 수 있으며, 비록 일반적으로 양자화에 의한 손실로 인하여 변환 계수와 동일하지는 않지만, 변환 계수(207)에 대응한다.
역변환 처리 유닛(212)은 변환 처리 유닛(206)에 의해 적용되는 변환의 역변환, 예를 들어 역이산 코사인 변환(discrete cosine transform, DCT) 또는 역이산 사인 변환(inverse discrete sine transform, DST)을 적용하도록 구성되어, 샘플 도메인에서 역변환 블록(213)을 획득한다. 역변환 블록(213)은 역변환 역양자화 블록(213) 또는 역변환 잔차 블록(213)으로도 지칭할 수 있다.
복원 유닛(214)(예를 들어, 합산기(214))은 역변환 블록(213)(즉, 복원된 잔차 블록(213))을 예측 블록(265)에 더하여, 예를 들어 복원된 잔차 블록(213)의 샘플 값과 예측 블록(265)의 샘플 값을 더하여, 샘플 도메인에서 복원된 블록(215)을 획득한다.
선택적으로, 예를 들어 라인 버퍼(216)의, 버퍼 유닛(216)(줄여서, “버퍼”(216))은 복원된 블록(215)과 대응하는 샘플 값을, 예를 들어 인트라 예측을 위해 버퍼링하거나 저장하도록 구성된다. 다른 실시예에서, 인코더는 임의의 유형의 추정 및/또는 예측, 예를 들어 인트라 예측을 위하여, 필터링되지 않은 복원 블록 및/또는 버퍼 유닛(216)에 저장된 대응하는 샘플 값을 사용하도록 구성된다.
예를 들어, 일 실시예의 인코더(20)는, 버퍼 유닛(216)이 인트라 예측 유닛(254)을 위한 복원된 블록(215)을 저장하는 데 사용될 뿐만 아니라 루프 필터 유닛(220)(도 2에 나타나지 않음)을 위해서도 사용될 수 있도록, 및/또는, 예를 들어 버퍼 유닛(216)과 디코딩된 픽처 버퍼 유닛(230)이 하나의 버퍼를 형성하도록 구성될 수 있다. 다른 실시예에서, 필터링된 블록(221) 및/또는 디코딩된 픽처 버퍼(230)로부터의 블록 또는 샘플(도 2에 나타나지 않음)은 인트라 예측 유닛(254)에 대한 입력 또는 기초로 사용된다.
루프 필터 유닛(220)(간단히 “루프 필터”(220)라고 지칭)은 복원된 블록(215)을 필터링하여 필터링된 블록(221)을 획득하고, 픽셀 전환을 부드럽게 하거나 비디오 품질을 향상하도록 구성된다. 루프 필터 유닛(220)은 예를 들어, 디블로킹(de-blocking) 필터, 샘플 적응 오프셋(sample-adaptive offset, SAO) 필터, 또는 양방향 필터, 적응형 루프 필터(adaptive loop filter, ALF), 선명하게 하거나 부드럽게 하는 필터 또는 협업 필터와 같은 다른 필터를 포함한 하나 이상의 루프 필터를 나타내기 위한 것이다. 비록 루프 필터 유닛(220)이 인 루프 필터(in loop filter)로 도 2에 나타나고 있지만, 다른 구성에서, 루프 필터 유닛(220)은 포스트 루프 필터(post loop filter)로 구현될 수도 있다. 필터링된 블록(221)은 필터링되고 복원된 블록(221)으로도 지칭할 수 있다. 디코딩된 픽처 버퍼(230)는 루프 필터 유닛(220)이 복원된 인코딩된 블록에 대해 필터링 동작을 수행한 후에 복원된 인코딩된 블록을 저장할 수 있다.
일 실시예에서의 인코더(20)(대응하여, 루프 필터 유닛(220))는, 곧바로 또는 엔트로피 인코딩 유닛(270) 또는 임의의 다른 엔트로피 인코딩 유닛에 의해 수행되는 엔트로피 인코딩 후에, 루프 필터 파라미터(샘플 적응 오프셋 정보와 같은)를 출력하도록 구성될 수 있어서, 예를 들어, 디코더(30)는 동일한 루프 필터 파라미터를 수신하고 동일한 루프 필터 파라미터를 디코딩에 적용할 수 있도록 할 수 있다.
디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230)는 인코더(20)에 의하여 비디오 데이터를 인코딩하기 위한 참조 픽처 데이터를 저장하는 참조 픽처 메모리일 수 있다. DPB(230)는, 예를 들어 DRAM(dynamic random access memory)(SDRAM(synchronous DRAM), MRAM(magnetoresistive RAM), RRAM(resistive RAM)을 포함) 또는 기타 유형의 메모리 디바이스를 포함하는 다양한 메모리 디바이스 중 어느 하나로 형성될 수 있다. 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)은 예측 모드(예를 들어, 인트라 예측 모드 또는 인터 예측 모드), 및/또는 예측 블록(265)으로 사용될 대응하는 예측 블록(245 또는 255)을 선택하도록 구성될 수 있어, 잔차 블록(205)을 계산하고 복원 블록(215)을 복원한다.
일 실시예에서의 모드 선택 유닛(262)은 예측 모드(예를 들어, 예측 처리 유닛(260)에 의해 지원되는 예측 모드로부터)를 선택하도록 구성될 수 있으며, 그 예측 모드는 최적의 매치(match) 또는 더 작은 잔차(더 작은 잔차는 전송 또는 저장에 있어 더 나은 압축을 의미)를 제공하거나, 또는 더 작은 시그널링 오버헤드(더 작은 시그널링 오버헤드는 전송 또는 저장에 있어 더 나은 압축을 의미)를 제공하거나, 또는 둘 모두를 고려하거나 균형을 잡는다. 모드 선택 유닛(262)은 레이트 왜곡 최적화(rate distortion optimization, RDO)를 기초로 예측 모드를 결정하도록, 즉 최소 레이트 왜곡 최적화를 제공하는 예측 모드를 선택하거나 연관된 레이트 왜곡이 예측 모드 선택 기준을 적어도 만족시키는 예측 모드를 선택하도록 구성될 수 있다.
이하에서는, 인코더(20)의 예에 따라 수행되는 예측 처리(예를 들어, 예측 처리 유닛(260)을 이용하여)와 모드 선택(예를 들어, 모드 선택 유닛(262)을 이용하여)에 대해 더 자세히 설명한다.
전술한 바와 같이, 인코더(20)는 (사전 결정된) 예측 모드 세트로부터 최고 또는 최적의 예측 모드를 결정하고 선택하도록 구성된다. 예측 모드 세트는, 예를 들어, 인트라 예측 모드 및/또는 인터 예측 모드를 포함할 수 있다.
인트라 예측 모드의 세트는 35개의 서로 다른 인트라 예측 모드들, 예를 들어 DC(또는 평균) 모드와 평면 모드(planar mode)와 같은 비지향성 모드, 또는 H.265에 정의된 지향성 모드를 포함할 수도 있고, 또는 67개의 서로 다른 인트라 예측 모드들, 예를 들어 DC(또는 평균) 모드와 평면 모드와 같은 비지향성 모드들, 또는 개발중인 H.266에 정의된 지향성 모드를 포함할 수 있다.
가능한 구현에서, 인터 예측 모드 세트는 이용 가능한 참조 픽처(즉, 전술한 바와 같이, DBP(230)에 저장된 디코딩된 픽처의 적어도 일부)에 따라 달라지고, 다른 인터 예측 파라미터들은, 예를 들어, 참조 픽처 전부가 사용되는지 또는 참조 픽처 일부분만이 사용되는지, 예를 들어 현재 블록을 둘러싼 서치 윈도우(search window) 영역에서 발견되는 최적 매칭된 참조 블록에 따라 달라지며, 및/또는, 예를 들어, 하프 픽셀(half-pixel) 및/또는 쿼터 픽셀(quarter-pixel) 보간과 같은 픽셀 보간이 적용되는지 여부에 따라 달라진다. 인터 예측 모드 세트는, 예를 들어, AMVP(Advanced Motion Vector Prediction) 모드와 병합(merge) 모드를 포함할 수 있다. 특정 구현에서, 인터 예측 모드 세트는 본 출원의 실시예에서 개선된 제어 포인트 기반 AMVP(improved control point-based AMVP) 모드와 개선된 제어 포인트 기반 병합 모드를 포함할 수 있다. 일 예에서, 인트라 예측 유닛(254)은 아래에서 설명되는 다음과 같은 인터 예측 기법의 임의의 조합을 수행하도록 구성될 수 있다.
전술한 예측 모드에 추가로, 스킵 모드 및/또는 직접 모드 또한 본 출원의 실시예에서 사용될 수 있다.
예측 처리 유닛(260)은 예를 들어, 쿼드트리(quad-tree, QT) 파티셔닝, 이진트리(binary-tree, BT) 파티셔닝, 트리플트리(triple-tree, TT) 파티셔닝, 또는 이들의 임의의 조합을 반복적으로 사용하여 픽처 블록(203)을 더 작은 블록 파티션 또는 서브 블록으로 파티셔닝하고, 예를 들어, 각각의 블록 파티션 또는 서브 블록에 대하여 예측을 수행하도록 더 구성될 수 있고, 모드 선택은 파티셔닝된 픽처 블록(230)의 트리 구조 선택과 각각의 블록 파티션 또는 서브 블록에 적용되는 예측 모드 선택을 포함한다.
인터 예측 유닛(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에 나타나지 않음)에 의해 수행되는 모션 보상은 (보통 서브 픽셀 정확도로 보간 수행하는)모션 추정을 통하여 결정된 모션 벡터 또는 블록 벡터를 기초로 예측 블록을 페칭(fetching)하거나 생성하는 것을 포함할 수 있다. 보간 필터링은 알려진 픽셀 샘플로부터 추가 픽셀 샘플을 생성할 수 있으며, 이에 따라 픽처 블록을 코딩하는 데 사용될 수 있는 후보 예측 블록의 양을 잠재적으로 증가시킬 수 있다. 현재 블록의 PU에 대한 모션 벡터를 수신하면, 모션 보상 유닛(246)은 하나의 참조 픽처 리스트에서 모션 벡터가 가리키는 곳에 예측 블록을 위치시킬 수 있다. 모션 보상 유닛(246)은 디코더(30)에 의해 비디오 슬라이스의 픽처 블록을 디코딩하기 위해서, 블록 및 비디오 슬라이스와 관련된 신택스 요소를 더 생성할 수 있다.
구체적으로, 인터 예측 유닛(244)은 신택스 요소를 엔트로피 인코딩 유닛(270)에 전송할 수 있고, 이 신택스 요소는 인터 예측 파라미터(예를 들어, 다수의 인터 예측 모드가 트래버싱된 후, 현재 블록에 대한 예측을 위해 선택된 인터 예측 모드의 지시 정보)를 포함한다. 가능한 애플리케이션 시나리오에서, 만약 오직 하나의 인터 예측 모드만 존재한다면, 인터 예측 파라미터는 신택스 요소에 포함되지 않을 수도 있다. 이 경우, 디코더 측(30)은 디코딩을 위해 디폴트(default) 예측 모드를 바로 사용할 수 있다. 인터 예측 유닛(244)은 인터 예측 기법들의 임의의 조합을 수행하도록 구성될 수 있다는 것을 이해할 수 있다.
인트라 예측 유닛(254)은 인트라 추정을 위한 동일한 픽처의 픽처 블록(203)(현재 픽처 블록)과 하나 이상의 이전에 복원된 블록, 예를 들어 복원된 이웃 블록을 획득하도록, 예를 들어 수신하도록 구성된다. 예를 들어, 인코더(20)는 다수의 (사전 결정된) 인트라 예측 모드로부터 하나의 인트라 예측 모드를 선택하도록 구성될 수 있다.
일 실시예에서 인코더(20)는 최적화 기준에 따라, 예를 들어 더 작은 잔차(예를 들어, 현재 픽처 블록(203)과 가장 유사한 예측 블록(255)을 제공하는 인트라 예측 모드) 또는 최소 비트 레이트 왜곡을 기초로, 인트라 예측 모드를 선택하도록 구성될 수 있다.
인트라 예측 유닛(254)은 예를 들어, 선택된 인트라 예측 모드의 인트라 예측 파라미터를 기초로, 인트라 예측 블록(255)을 결정하도록 더 구성된다. 어떠한 경우에서도, 블록에 대한 인트라 예측 모드를 선택한 후에, 인트라 예측 유닛(254)은 엔트로피 인코딩 유닛(270)을 위하여 인트라 예측 파라미터, 즉 그 블록에 대한 선택된 인트라 예측 모드를 나타내는 정보를 제공하도록 더 구성된다. 일 예에서, 인트라 예측 유닛(254)은 인트라 예측 기법들의 임의의 조합을 수행하도록 구성될 수 있다.
구체적으로, 인트라 예측 유닛(254)은 신택스 요소를 엔트로피 인코딩 유닛(270)에 전송할 수 있고, 이 신택스 요소는 인트라 예측 파라미터(예를 들어, 다수의 인트라 예측 모드가 트래버싱된 후에, 현재 블록에 대한 예측을 위하여 선택된 인트라 예측 모드의 지시 정보)를 포함한다. 가능한 애플리케이션 시나리오에서, 만약 오직 하나의 인트라 예측 모드만 존재한다면, 인트라 예측 파라미터는 신택스 요소에 포함되지 않을 수 있다. 이 경우, 디코더 측(30)은 디코딩을 위해 디폴트 예측 모드를 바로 사용할 수 있다.
엔트로피 인코딩 유닛(270)은, 출력단(272)을 통하여, 예를 들어 인코딩된 비트스트림(21)의 형태로 출력될 수 있는 인코딩된 픽처 데이터(21)를 획득하기 위하여, 엔트로피 인코딩 알고리즘 또는 체계(예를 들어, VLC(variable length coding) 체계, CAVLC(context adaptive VLC) 체계, 산술 코딩(arithmetic coding) 체계, CABAC(context adaptive binary arithmetic coding), SBAC(syntax-based context-adaptive binary arithmetic coding), PIPE(probability interval partitioning entropy) 코딩, 또는 기타 엔트로피 코딩 방법론 또는 기술)를 다음 중 하나 또는 모두에 대하여 적용하도록 구성된다: 양자화된 계수(209), 인터 예측 파라미터, 인트라 예측 파라미터, 및/또는 루프 필터 파라미터. 인코딩된 비트스트림은 비디오 디코더(30)로 전송되거나, 비디오 디코더(30)에 의한 추후 전송 또는 인출을 위해 보관될 수 있다. 엔트로피 인코딩 유닛(270)은 인코딩되고 있는 현재 비디오 슬라이스에 대한 다른 신택스 요소를 엔트로피 인코딩하도록 더 구성될 수 있다.
비디오 인코더(20)의 다른 구조적 변형은 비디오 스트림을 인코딩하도록 구성될 수 있다. 예를 들어, 비변환 기반(non-transform based) 인코더(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)에 의한 인코딩을 통해 획득한 인코딩된 픽처 데이터(예를 들어, 인코딩된 비트스트림)를 수신하여, 디코딩된 픽처(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)은 복원 유닛(214)과 동일한 기능을 가질 수 있다. 버퍼(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 슬라이스), 슬라이스에 대한 참조 픽처 리스트 중 하나 이상에 대한 구성 정보, 슬라이스의 인터 코딩된 각 블록 비디오의 모션 벡터, 슬라이스의 인터 코딩된 각 비디오 블록의 인터 예측 상태(status), 및 다른 정보를 결정하여, 현재 비디오 슬라이스의 비디오 블록을 디코딩한다. 본 개시물의 다른 예에서, 비트스트림으로부터 비디오 디코더(30)에 의해 수신된 신택스 요소는 APS(adaptive parameter set), SPS(sequence parameter set), PPS(picture parameter set), 또는 슬라이스 헤더 중 하나 이상 내의 신택스 요소를 포함한다.
역양자화 유닛(310)은 비트스트림 내에 제공되고 엔트로피 디코딩 유닛(304)에 의해 디코딩된 양자화된 변환 계수를 역양자화(즉, 양자화 해제)하도록 구성될 수 있다. 역양자화 프로세스는 다음을 포함한다: 비디오 슬라이스 내의 각 비디오 블록에 대해 비디오 인코더(20)에 의해 계산된 양자화 파라미터를 사용하여, 적용되어야 하는 역양자화 정도를 결정하고, 마찬가지로 적용되어야 하는 역양자화 정도를 결정한다.
역변환 처리 유닛(312)은 픽셀 도메인에서 잔차 블록을 생성하기 위해, 역변환(예를 들어, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역변환 프로세스)을 변환 계수에 적용하도록 구성된다.
복원 유닛(314)(예를 들어, 합산기(314))은 역변환 블록(313)(즉, 복원된 잔차 블록(313))을 예측 블록(365)에 더하여, 예를 들어 복원된 잔차 블록(313)의 샘플 값과 예측 블록(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)은 선택적이다. 다른 애플리케이션 시나리오에 따라, 인터 예측 유닛과 인트라 예측 유닛은 선택적으로 사용될 수 있음을 이해하여야 한다.
도 4는 본 출원의 일 실시예에 따른 비디오 코딩 장치(400)(예를 들어, 비디오 인코딩 장치(400) 또는 비디오 디코딩 장치(400))의 개략적인 구조도이다. 비디오 코딩 장치(400)는 본 명세서에서 설명된 실시예를 구현하는 데 적합하다. 일 실시예에서, 비디오 코딩 장치(400)는 비디오 디코더(예를 들어, 도 1A의 디코더(30)) 또는 비디오 인코더(예를 들어, 도 1A의 인코더(20))일 수 있다. 다른 실시예에서, 비디오 코딩 장치(400)는 도 1A의 디코더(30) 또는 도1A의 인코더(20)의 하나 이상의 컴포넌트일 수 있다.
비디오 코딩 장치(400)는 데이터를 수신하도록 구성된 입력 포트(410)와 수신기 유닛(Rx)과, 데이터를 처리하도록 구성된 프로세서, 논리 유닛, 또는 CPU(430)와, 데이터를 전송하도록 구성된 전송기 유닛(Tx)과 출력 포트(450)와, 데이터를 저장하도록 구성된 메모리(460)를 포함한다. 비디오 코딩 장치(400)는 광신호 또는 전기적 신호의 출력 또는 입력을 위하여, 입력 포트(410), 수신기 유닛(420), 전송기 유닛(440), 출력 포트(450)에 커플링된 OE(optical-to-electrical) 컴포넌트와 EO(electrical-to-optical) 컴포넌트를 더 포함할 수 있다.
프로세서(430)는 하드웨어 및 소프트웨어에 의해 구현된다. 프로세서(43)는 하나 이상의 CPU 칩, 코어(예: 멀티 코어 프로세서), FPGA, ASIC 및 DSP로 구현될 수 있다. 프로세서(430)는 입력 포트(410), 수신기 유닛(420), 전송기 유닛(440), 출력 포트(450) 및 메모리(460)와 통신한다. 프로세서(430)는 코딩 모듈(470)(예를 들어, 인코딩 모듈(470) 또는 디코딩 모듈(470))을 포함한다. 인코딩 또는 디코딩 모듈(470)은 본 명세서에 개시된 실시예들을 구현하여 본 출원의 실시예에서 제공되는 크로마 블록 예측 방법을 구현한다. 예를 들어, 인코딩 또는 디코딩 모듈(470)은 다양한 코딩 동작을 구현, 처리, 또는 제공한다. 따라서 인코딩 또는 디코딩 모듈(470)의 포함은 비디오 코딩 장치(400)의 기능의 실질적인 개선을 제공하고 비디오 코딩 장치(400)의 다른 상태로의 스위칭에 영향을 미친다. 대안적으로, 인코딩/디코딩 모듈(470)은 메모리(460)에 저장되고 프로세서(430)에 의해 실행되는 명령어로서 구현된다.
메모리(460)는 하나 이상의 디스크, 테이프 드라이브 및 SSD(Solid State Drive)를 포함하고, 오버 플로우 데이터 저장장치로 사용될 수 있으며, 프로그램이 선택적으로 실행될 때 이러한 프로그램을 저장하고, 프로그램이 실행되는 동안 판독된 명령어와 데이터를 저장한다. 메모리(460)는 휘발성 및/또는 비휘발성일 수 있고, ROM, RAM, TCAM(ternary content-addressable memory), 및/또는 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) 요소를 결합하는 터치 감지 디스플레이일 수 있다. 디스플레이(570)는 버스(550)를 통해 프로세서(510)와 연결될 수 있다.
하나의 비디오 시퀀스는 특정 수량의 픽처를 포함하고, 이 픽처는 일반적으로 프레임이라고 한다. 이웃하는 픽처들은 일반적으로 유사하여, 즉 많은 양의 중복이 포함되어 있다. 모션 보상을 사용하는 목적은 인접한 프레임 간의 중복을 제거하여 압축률을 높이는 것이다. 모션 보상은 이웃하는 프레임들 간의 차이를 기술하기 위한 방법이다(여기서 “이웃하는”은 두 프레임이 코딩 관계에 있어 이웃하는 것을 나타내며, 반드시 재생 시퀀스에서 이웃하는 것을 나타내지는 않음). 모션 보상은 인터 예측 처리의 한 단계이다. 모션 보상을 수행하기 전에, 모션 추정 또는 비트스트림 디코딩을 통하여 코딩 블록의 모션 정보를 획득한다. 모션 정보는 주로 다음을 포함한다: (1) 코딩 블록의 예측 방향: 순방향 예측, 역방향 예측, 및 양방향 예측 포함(순방향 예측은 코딩 블록이 이전에 코딩된 프레임을 기반으로 한 예측을 통해 획득됨을 나타내고, 역방향 예측이란 코딩 블록은 다음에 코딩된 프레임에 기초한 예측을 통해 획득됨을 나타내며, 양방향 예측은 코딩 블록이 이전에 코딩된 프레임 및 다음에 코딩된 프레임을 참조한 예측을 통해 획득됨을 나타낸다); (2) 코딩 블록의 참조 픽처 인덱스(참조 픽처 인덱스는 현재 코딩 블록의 참조 블록이 위치하는 프레임을 나타낸다); (3) 코딩 블록의 모션 벡터 MV(모션 벡터는 참조 블록에 대한 코딩 블록의 움직임 변위(motion displacement)를 나타내고, MV는 수평 성분(MVx로 표시) 및 수직 성분(MVy로 표시)을 포함하며, MVx 및 MVy는 각각의 참조 블록에 대한 코딩 블록의 수평 움직임 변위 및 수직 움직임 변위를 나타낸다). 순방향 예측 또는 역방향 예측의 경우 코딩 블록은 단 하나의 MV를 갖고, 양방향 예측의 경우 코딩 블록은 두 개의 MV를 갖는다. 도 6은 전술한 모션 정보에 대한 설명을 나타낸다. 도 6과 이하 모션 정보 및 예측 정보에 관한 설명에서, 0은 순방향을 나타내고 1은 역방향을 나타낸다. 예를 들어, Ref0은 순방향 참조 픽처를 나타내고, Ref1은 역방향 참조 픽처를 나타내며, MV0은 순방향 모션 벡터를 나타내고, MV1은 역방향 모션 벡터를 나타낸다. A, B, 및 C는 각각 순방향 참조 블록, 현재 코딩 블록, 및 역방향 참조 블록을 나타낸다. Cur는 현재 코딩 프레임을 나타내고, 점선은 블록 B의 모션 트랙을 나타낸다. 모션 보상은 모션 정보를 기초로 참조 블록을 찾고, 참조 블록을 처리하여 코딩 블록의 예측 블록을 획득하는 과정이다.
순방향 예측 모션 보상의 기본적인 과정은 다음과 같다. 도 6에 도시된 바와 같이, 현재 코딩 블록은 도면에서 블록 B이고, B의 높이와 너비는 각각 H와 W로 표시된다. 이 경우, 모션 정보를 통해 현재 코딩 블록 B의 순방향 참조 픽처가 프레임 Ref0이고, 현재 코딩 블록 B의 순방향 모션 벡터가 MV0 = (MV0x, MV0y)임을 알 수 있다. Cur 프레임의 코딩 블록 B가 코딩되면, Cur 프레임에서 블록 B의 좌상측 모서리에 있는 지점의 좌표 (i,j)를 기반으로 프레임 Ref0에서 동일한 좌표 지점이 먼저 발견되고, Ref0의 블록 B'가 블록 B의 높이와 너비를 기반으로 획득될 수 있으며, 블록 B'는 블록 B'의 MV0을 기반으로 블록 A로 이동된다. 마지막으로, 블록 A에 대해 보간 처리가 수행되어, 현재 코딩 블록 B의 예측 블록을 획득한다. 현재 코딩 블록 B의 예측 블록에 포함된 각 픽셀의 픽셀 값을 블록 B에서 해당 픽셀의 예측 값이라고 한다. 역방향 예측 모션 보상 과정은 순방향 예측 모션 보상 과정과 동일하지만 기준 방향이 다르다. 역방향 예측 모션 보상을 통해 획득된 예측 블록과 순방향 예측 움직임 보상을 통해 획득된 예측 블록을 각각 역방향 예측 블록 및 순방향 예측 블록이라고 한다. 코딩 블록이 양방향으로 예측되지 않는 경우, 획득한 순방향 예측 블록과 역방향 예측 블록은 현재 코딩 블록의 예측 블록이다.
양방향 예측의 경우, 순방향 예측 모션 보상 과정을 실행하고, 역방향 예측 모션 보상 과정을 실행하여, 각각 순방향 예측 블록과 역방향 예측 블록을 먼저 획득한 후, 가중 예측(weighted prediction)이 수행되거나, 또는 BIO(Bi-directional optical flow) 기법이 순방향 예측 블록과 역방향 예측 블록에서 동일 위치의 픽셀(collocated pixels)의 값에 사용되어, 코딩 블록 B의 예측 블록을 획득한다.
가중 예측 방법을 사용하여 현재 코딩 블록의 예측 값을 계산할 때, 다음 수학식 (1)에 따라 오직 순방향 예측 블록의 픽셀 값과 역방향 예측 블록의 동일 위치의 픽셀 값의 가중 합(weighted sum)만이 계산된다:
위 수학식 (1)에서, PredB(i, j), PredA(i, j), 및 PredC(i, j)는 좌표(i, j)에서의 각각 현재 코딩 블록의 예측 블록의 예측 값, 현재 코딩 블록의 순방향 예측 블록의 예측 값, 및 현재 코딩 블록의 역방향 예측 블록의 예측 값을 나타낸다. ω0 및 ω(0 ≤ ω≤ 1, 0 ≤ ω≤ 1, 및 ω+ ω= 1)은 가중치 계수(weighting coefficient)이다. 가중치 계수는 인코더마다 달라질 수 있다. 일반적으로, ω0 와 ω은 1/2이다.
AMVP 모드의 후보 모션 벡터 리스트를 획득하는 과정에서, 후보 모션 벡터 리스트에 후보로 추가될 수 있는 모션 벡터(motion vector, MV)는, 현재 블록에 공간적으로 이웃한 픽처 블록의 MV와 현재 블록에 시간적으로 이웃한 픽처 블록의 MV를 포함한다. 공간적으로 이웃한 픽처 블록의 MV는, 현재 블록의 좌측 후보 픽처 블록의 MV와 현재 블록의 상측 후보 픽처 블록을 포함할 수 있다. 예를 들어, 도 7에 도시된 바와 같이, 좌측 후보 픽처 블록 세트는 {A0, A1}을 포함하고, 상측 후보 픽처 블록 세트는 {B0, B1, B2}를 포함하고, 시간적으로 이웃하는 후보 픽처 블록은 {C, T}를 포함한다. 세 세트 모두 후보 모션 벡터 리스트에 후보로 추가될 수 있다. 그러나, 기존 코딩 표준에 따르면, AMVP의 후보 모션 벡터 리스트의 최대 길이는 2이다. 따라서 지정된 순서에 따라 세 개의 세트에서 최대 두 개의 픽처 블록의 MV를 결정하여 후보 모션 벡터 리스트에 추가해야 한다. 순서는 다음과 같을 수 있다. 현재 블록의 좌측 후보 픽처 블록 {A0, A1} 세트가 우선적으로 고려된다(A0이 먼저 고려되고, A0이 이용 불가할 경우 A1이 고려됨); 그 후 현재 블록의 상측 후보 픽처 블록 {B0, B1, B2} 세트가 고려된다(B0이 먼저 고려되고, B0이 이용 불가할 경우 B1이 고려되고, B1이 이용 불가할 경우 B2가 마지막으로 고려됨); 마지막으로, 현재 블록에 시간적으로 이웃한 후보 픽처 블록 {C, T} 세트가 고려된다(T가 먼저 고려되고, T가 이용 불가할 경우 C가 고려됨). 후보 모션 벡터 리스트로부터 결정된 모션 벡터와, 결정된 모션 벡터에 대응하는 모션 정보는 전술한 모션 보상 과정을 완료하여 현재 블록의 예측 값을 획득하는 데 사용된다.
후보 모션 벡터 리스트를 획득하는 방법은 다음 단계를 포함한다.
단계 1: 공간적으로 이웃한 후보 픽처 블록 세트로부터 후보 모션 벡터 리스트에 추가될 수 있는 MV를 선택한다.
단계 1.1: 현재 블록의 좌측 후보 픽처 블록 {A0, A1} 세트로부터 최대 하나의 픽처 블록의 MV로서, 후보 모션 벡터 리스트에 추가될 수 있는 MV를 획득한다.
픽처 블록이 이용 가능하다는 것은 픽처 블록이 인코딩되고 인터 예측 모드가 사용된다는 것을 의미한다. 만약 픽처 블록이 존재하지 않거나, 또는 만약 픽처 블록이 인코딩되거나 디코딩되지 않는다면, 또는 만약 픽처 블록이 인터 예측 모드를 사용하지 않는다면, 그 픽처 블록은 이용 불가하다. A0의 이용 가능 여부가 먼저 판정된다. 만약 A0가 이용 가능하다면, A0는 좌측 후보 픽처 블록이고 A1은 판정될 필요가 없다. 만약 A0가 이용 불가하다면, A1이 이용 가능한지 여부가 판정된다. A1이 이용 가능할 경우 A1은 좌측 후보 픽처 블록이다. 만약 A1이 이용 불가할 경우 현재 픽처의 좌측 후보 픽처 블록은 이용 불가하다.
A0이 이용 가능한 경우, A0의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정한다. A0의 참조 픽처가 현재 블록의 참조 픽처와 동일하면, A0의 MV가 후보 모션 벡터 리스트에 추가된다. A0의 참조 픽처가 현재 블록의 참조 픽처와 다른 경우 A0의 MV는 아래의 수학식 (2)에 따라 스케일링된다.
CurPoc은 현재 블록이 위치한 픽처의 픽처 순서 카운트(picture order count, POC)를 나타내고, DesPoc는 현재 블록의 참조 픽처의 POC를 나타내며, SpaPoc는 공간적으로 이웃한 픽처 블록(예를 들어, A0)의 참조 픽처의 POC를 나타내고, MVs는 스케일링된 MV를 나타낸다. MVs가 후보 모션 벡터 리스트에 추가된다. 이 경우, A1은 고려할 필요가 없고 이는 A1이 이용 가능한지 여부가 판정되지 않는다는 것을 의미한다.
본 구현은 MV에 스케일링 처리를 수행하는 구현의 예라는 것을 이해하여야 한다. 본 명세서에서 이후에 사용되는 모든 스케일링 처리는 종래 기술에서 공간적 거리를 기초로 MV에 대한 스케일링 처리를 수행하는 것과 유사한 방법 또는 다른 방법에 의하여 수행될 수 있다. 이는 본 출원의 본 실시예에서 제한되지 않으며, 세부적인 사항은 이하에서 설명되지 않는다.
A0은 이용 불가하지만 A1이 이용 가능한 경우, A1의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정한다. A1의 참조 픽처가 현재 블록의 참조 픽처와 동일하면, A1의 MV가 후보 모션 벡터 리스트에 추가된다. 만약 A1의 참조 픽처가 현재 블록의 참조 픽처와 다른 경우, A1의 MV는 식 (2)에 따라 스케일링되고 MVs가 후보 모션 벡터 리스트에 추가된다.
A0와 A1 모두 이용 불가할 경우, A0의 MV와 A1의 MV는 모두 제외된다.
현재 블록의 참조 픽처를 획득하는 것은 이후 실시예의 단계 801에서 구체적으로 설명된다. 세부적인 사항은 여기에서 설명되지 않는다.
단계 1.2: 현재 블록의 상측 후보 픽처 블록 {B0, B1, B2} 세트로부터 최대 하나의 픽처 블록의 모션 벡터이면서, 후보 모션 벡터 리스트에 추가될 수 있는 MV를 획득한다.
먼저 B0의 이용 가능 여부가 판정된다. 만약 B0이 이용 가능한 경우, B0은 상측 후보 픽처 블록이고, B1과 B2는 판정될 필요가 없다. 만약 B0이 이용 불가한 경우, B1이 이용 가능한지 여부를 판정한다. 만약 B1이 이용 가능한 경우, B1은 상측 후보 픽처 블록이고, B2는 판정될 필요가 없다. 만약 B1이 이용 불가한 경우, B2이 이용 가능한지 여부를 판정한다. 만약 B2이 이용 가능한 경우, B2는 상측 후보 픽처 블록이다. 만약 B2이 이용 불가한 경우, 현재 블록의 상측 후보 픽처 블록은 이용 불가하다.
B0이 이용 가능한 경우, B0의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판단한다. B0의 참조 픽처가 현재 블록의 참조 픽처와 동일하면, B0의 MV가 후보 모션 벡터 리스트에 추가된다. B0의 참조 픽처가 현재 블록의 참조 픽처와 다르고 현재 픽처 블록의 좌측 후보 픽처 블록이 이용 불가한 경우, B0의 MV는 식 (2)에 따라 스케일링되고 MVs가 후보 모션 벡터 리스트에 추가된다. B0의 참조 픽처가 현재 블록의 참조 픽처와 다르고 현재 픽처 블록의 좌측 후보 픽처 블록이 이용 가능한 경우, B0의 MV는 제외된다. B0과 관련된 MV가 후보 모션 벡터 리스트에 추가되면, B1과 B2는 고려될 필요가 없고 이는 B1과 B2가 이용 가능한지 여부가 판정되지 않는다는 것을 의미한다.
B0은 이용 불가하지만 B1은 이용 가능한 경우, B1의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판단한다. B1의 참조 픽처가 현재 블록의 참조 픽처와 동일하면, B1의 MV가 후보 모션 벡터 리스트에 추가된다. B1의 참조 픽처가 현재 블록의 참조 픽처와 다르고 현재 픽처 블록의 좌측 후보 픽처 블록이 이용 불가한 경우, B1의 MV는 식 (2)에 따라 스케일링되고 MVs가 후보 모션 벡터 리스트에 추가된다. B1의 참조 픽처가 현재 블록의 참조 픽처와 다르고 현재 픽처 블록의 좌측 후보 픽처 블록이 이용 가능한 경우, B1의 MV는 제외된다. B1과 관련된 MV가 후보 모션 벡터 리스트에 추가되면, B2는 고려될 필요가 없고 이는 B2가 이용 가능한지 여부가 판정되지 않는다는 것을 의미한다.
B0과 B1는 이용 불가하지만 B2는 이용 가능한 경우, B2의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판단한다. B2의 참조 픽처가 현재 블록의 참조 픽처와 동일하면, B2의 MV가 후보 모션 벡터 리스트에 추가된다. B2의 참조 픽처가 현재 픽처 블록의 참조 픽처와 다르고 현재 픽처 블록의 좌측 후보 픽처 블록이 이용 불가한 경우, 식 (2)에 따라 B2의 MV를 스케일링하고 MVs가 후보 모션 벡터 리스트에 추가된다. B2의 참조 픽처가 현재 블록의 참조 픽처와 다르고 현재 픽처 블록의 좌측 후보 픽처 블록이 이용 가능한 경우 B2의 MV는 제외된다.
만약 B0, B1 및 B2가 이용 불가한 경우, B0의 MV와 B1의 MV와 B2의 MV는 제외된다.
단계 1.2 이후에, 만약 후보 모션 벡터 리스트가 두 개의 MV를 포함하고 있고, 두 MV가 서로 다르다면, 다음 단계 2와 단계 3을 수행할 필요가 없다. 그러나, 만약 두 MV가 서로 동일하면, 두 MV 중 하나를 삭제하여야 하며, 단계 2는 계속 수행된다. 후보 모션 벡터 리스트가 하나의 MV만 포함하거나 MV를 포함하지 않는 경우에도 또한 단계 2는 수행되어야 한다.
단계 2: 만약 후보 모션 벡터 리스트의 길이가 2 미만이라면, 시간적으로 이웃하는 후보 픽처 블록 {C, T} 세트에서 최대 하나의 픽처 블록의 MV이면서 후보 모션 벡터 리스트에 추가될 수 있는 MV를 선택한다.
T가 이용 가능한지 여부가 먼저 판정된다. T가 이용 가능한 경우, T의 동일 위치의 블록의 MV가 스케일링되고, 스케일링된 MV가 후보 모션 벡터 리스트에 추가되며, C는 판정될 필요가 없다. T가 이용 불가한 경우, C가 이용 가능한지 여부가 판정된다. C가 이용 가능한 경우, C의 동일 위치의 블록의 MV가 스케일링되고, 스케일링된 MV가 후보 모션 벡터 리스트에 추가된다. C가 이용 불가한 경우, 시간적으로 이웃한 픽처 블록은 이용 불가하다.
T가 이용 가능한 경우, T의 동일 위치의 블록의 MV는 다음 수학식 (3)에 따라 스케일링된다:
tb는 현재 블록이 위치한 픽처와 현재 블록의 참조 픽처 사이의 거리를 나타내고, td는 동일 위치의 픽처와 동일 위치의 픽처의 참조 픽처 사이의 거리를 나타내는데, 이 동일 위치의 픽처는 일반적으로 현재 블록의 모든 참조 픽처 중 하나의 참조 픽처로서, 그 POC가 현재 블록이 위치한 픽처의 POC와 가장 가까운 것을 가리키며, colMV는 T의 동일 위치의 MV로서, T의 동일 위치의 블록은 T가 위치한 픽처의 동일 위치의 픽처에서 T의 위치와 동일한 위치를 갖는 픽처 블록이고, 그리고 curMV는 스케일링된 MV를 나타낸다. curMV가 후보 모션 벡터 리스트에 추가된다. 이 경우, C는 고려할 필요가 없고 이는 C가 이용 가능한지 여부가 판정되지 않는다는 것을 의미한다.
T가 이용 불가하지만 C가 이용 가능할 때, 식(3)에 따라 C의 MV가 스케일링되고, curMV가 후보 모션 벡터 리스트에 추가된다.
단계 3: 만약 후보 모션 벡터 리스트의 길이가 2 미만이면, 값이 0인 MV를 사용하여 후보 모션 벡터 리스트를 채워 후보 모션 벡터 리스트의 길이가 2가 되도록 한다.
선택적으로, 만약 후보 모션 벡터 리스트의 길이가 2 미만이면, 후보 모션 벡터 리스트는 히스토리 기반 모션 벡터 예측(history-based motion vector prediction, HMVP) 방법을 사용하여 채워질 수 있다. 채운 후에도 만약 후보 모션 벡터 리스트의 길이가 2 미만이면, 값이 0인 MV를 채우는 데 사용하여 후보 모션 벡터 리스트의 길이가 2가 되도록 한다.
즉, 시간적인(temporal) MVP 방법과 TMVP 방법을 사용하여 병합 후보 리스트를 구성한 후, 병합 후보 리스트에 HMVP 병합 후보를 추가한다. 히스토리 후보 모션 벡터 리스트는 히스토리 모션 벡터 후보를 포함하고, 그 히스토리 모션 벡터 후보는 이전 코딩된 블록의 모션 정보이다. 인코더/디코더 측의 히스토리 후보 모션 벡터 리스트는 일반적으로 다음과 같이 구성되고 사용된다.
(1) 슬라이스(SLICE/tile 그룹)가 디코딩되기 시작할 때, 히스토리 후보 모션 벡터 리스트를 초기화하고, 히스토리 후보 모션 벡터 리스트를 지운다.
(2) 현재 CU를 디코딩하고, 만약 현재 CU 또는 현재 블록이 병학 모드 또는 인터 예측 모드를 사용하면, 병합 후보 모션 정보 리스트 또는 모션 벡터 예측 후보 리스트를 생성하고, 히스토리 후보 모션 벡터 리스트의 히스토리 모션 벡터 후보를 병합 후보 모션 정보 리스트 또는 모션 벡터 예측 후보 리스트에 추가한다.
(3) 현재 CU 또는 현재 블록이 디코딩된 후, 현재 블록의 모션 벡터를 새로운 히스토리 모션 벡터 후보로서 히스토리 후보 모션 벡터 리스트에 추가하고, 히스토리 후보 모션 벡터 리스트를 업데이트한다.
전술한 종래 기법에서, 공간적으로 이웃하는 후보 픽처 블록 세트 중, 단계 1에서 후보 모션 벡터 리스트에 추가될 수 있는 MV를 선택하는 과정에서, 좌측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다르면, 좌측 후보 픽처 블록의 MV는 스케일링되어야 하고, 이후 스케일링된 MV가 후보 모션 벡터 리스트에 추가된다. 이것은 비교적 복잡하다. 이를 고려하여, 본 출원은 개선을 이뤘다.
도 8은 본 출원의 일 실시예를 구현하기 위한, 후보 모션 벡터 리스트를 획득하는 방법의 개략적인 흐름도이다. 프로세스(800)는 비디오 인코더(20) 또는 비디오 디코더(30)에 의하여 수행될 수 있다. 프로세스(800)는 일련의 단계 또는 동작으로 설명된다. 프로세스(800)의 단계 또는 동작은 다양한 순서로 및/또는 동시에 수행될 수 있으며, 도 8에 나타난 실행 순서로 제한되지 않는다는 것을 이해하여야 한다. 도 8에 도시된 바와 같이, 본 방법은 다음 단계를 포함한다.
단계 801: 좌측 후보 픽처 블록이 인코딩/디코딩되고 인터 예측 모드가 사용될 때, 좌측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정한다.
본 출원에서, 인코더 측에서, 좌측 후보 픽처 블록이 인코딩되는지 여부를 판정하고, 디코더 측에서, 좌측 후보 픽처 블록이 디코딩되는지 여부를 판정한다. 좌측 후보 픽처 블록이 인코딩되거나 디코딩되고 인터 예측 모드가 사용된다는 것은, 좌측 후보 픽처 블록이 이용 가능하고, 좌측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 더 판정하여야 함을 나타낸다.
디코더 측에서는 비트스트림을 파싱하여 현재 블록의 모션 정보를 획득한다. 현재 블록이 단방향(예를 들어, 제 1 방향) 인터 예측 모드를 사용하는 경우, 모션 정보는 현재 블록의 제 1 방향 모션 정보이며, 제 1 방향에서의 현재 블록의 하나 이상의 참조 픽처 인덱스(만약 현재 블록이 복수의 참조 픽처를 갖고 있다면, 파싱을 통해 복수의 프레임 인덱스를 획득한다)를 포함한다. 현재 블록이 양방향(예를 들어, 제 1 방향과 제 2 방향) 인터 예측 모드를 사용하는 경우, 모션 정보는 현재 블록의 제 1 방향 모션 정보와 현재 블록의 제 2 방향 모션 정보를 포함한다. 제 1 방향 모션 정보는 제 1 방향에서의 현재 블록의 하나 이상의 참조 픽처 인덱스를 포함하고, 제 2 방향 모션 정보는 제 2 방향에서의 현재 블록의 하나 이상의 참조 픽처 인덱스를 포함한다. 예를 들어, 해당 픽처 블록이 제 1 방향 인터 예측 모드를 사용하는지 여부를 나타내는 데 플래그 predFlagL0가 사용될 수 있으며(list0는제 1 방향 모션 정보를 나타내는 데 사용), 해당 픽처 블록이 제 2 방향 인터 예측 모드를 사용하는지 여부를 나타내는 데 플래그 predFlagL1이 사용될 수 있다(list1은 제 2 방향 모션 정보를 나타내는 데 사용). 전술한 플래그의 값 0은 대응하는 방향의 인터 예측 모드가 사용되지 않음을 나타내고, 전술한 플래그의 값 1은 대응하는 방향의 인터 예측 모드가 사용됨을 나타낸다. 참조 픽처 인덱스와 참조 픽처의 POC 간에 대응 관계가 있고, 대응하는 POC는 현재 블록의 list0 및/또는 list1의 참조 픽처 인덱스를 기반으로 참조 픽처 리스트에서 찾을 수 있다. 인코더 측에서, RDO 기반의 코딩 성능을 비교하여 현재 블록의 모션 정보를 결정한다. 현재 블록의 하나 이상의 참조 픽처의 하나 이상의 POC 중 어느 하나가 좌측 후보 픽처 블록의 참조 픽처의 POC와 동일한지 여부를 판정하기 위하여, 현재 블록의 하나 이상의 참조 픽처의 하나 이상의 POC가 좌측 후보 픽처 블록의 참조 픽처의 POC와 개별적으로 비교되고, 판정 결과를 기초로 현재 블록의 후보 모션 벡터 리스트가 구성된다. 이는 단계 802 및 803에서 자세히 설명된다.
단계 802: 좌측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일할 때, 좌측 후보 픽처 블록의 MV를 후보 모션 벡터 리스트 내의 모션 벡터 후보로 사용한다.
단계 803: 좌측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 좌측 후보 픽처 블록의 MV를 제외한다.
좌측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일하다는 것은 현재 블록의 고유(unique) 참조 픽처의 POC 또는 현재 블록의 복수의 참조 픽처의 POC 중 어느 하나가 좌측 후보 픽처 블록의 참조 픽처의 POC 중 어느 하나와 동일하다는 것을 의미한다. 하나의 비교 방법으로, 현재 블록의 제 1 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC는, 위치 A(A0 또는 A1)의 제 1 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC와 비교된다. 두 POC가 동일하다면, A 위치의 MV가 후보 모션 벡터 리스트에 추가되고, 현재 블록의 제 2 방향 모션 정보를 판정할 필요가 없다. 두 POC가 다르다면, 현재 블록의 제 2 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC는, 위치 A의 제 2 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC와 비교된다. 두 POC가 동일하다면, 위치 A의 MV가 후보 모션 벡터 리스트에 추가된다. 다른 비교 방법으로, 현재 블록의 제 1 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC는, 위치 A의 제 1 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC와 비교된다. 두 POC가 다르다면, 현재 블록의 제 1 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC는, 위치 A의 제 2 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC와 비교된다. 두 POC가 다르다면, 현재 블록의 제 2 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC는, 위치 A의 제 1 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC와 비교된다. 두 POC가 다르다면, 현재 블록의 제 2 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC는, 위치 A의 제 2 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC와 비교된다.
예를 들어, 현재 블록이 단방향(제 2 방향) 인터 예측 모드를 사용하는 경우, 현재 블록의 list1 내 참조 픽처 인덱스에 대응하는 POC는, A0의 list0 및 list1 내 참조 픽처 인덱스들에 대응하는 POC들과 개별적으로 비교된다. 두 POC가 동일하다면, A0의 MV는 후보 모션 벡터 리스트에 추가된다. 두 POC가 다르다면, A0의 MV는 제외된다. 비교 순서는 curlist1->Alist0, 및 curlist1->Alist1이며, curlist1은 현재 목록의 list1 내 참조 픽처 인덱스를 나타내며, Alist0는 A0의 list0 내 참조 픽처 인덱스를 나타내고, Alist1는 A1의 list1 내 참조 픽처 인덱스를 나타낸다. 현재 블록이 양방향 인터 예측 모드를 사용하는 경우, 현재 블록의 list0 내 참조 픽처 인덱스에 대응하는 POC는, A0의 list0 및 list1 내 참조 픽처 인덱스들에 대응하는 POC들과 개별적으로 비교된다. 두 POC가 동일하다면, A0의 MV가 후보 모션 벡터 리스트에 추가된다. 두 POC가 다르다면, 현재 블록의 list1 내 참조 픽처 인덱스에 대응하는 POC는, A0의 list0 및 list1 내 참조 픽처 인덱스들에 대응하는 POC들과 개별적으로 비교된다. 두 POC가 동일하다면, A0의 MV는 후보 모션 벡터 리스트에 추가된다. 두 POC가 다르다면, A0의 MV는 제외된다. 비교 순서는 curlist0->Alist0, curlist0->Alist1, curlist1->Alist0, 및 curlist1->Alist1이며, curlist0은 현재 블록의 list0 내 참조 픽처 인덱스를 나타낸다. 전술한 비교 순서는 설명한 위한 예시이고, 비교 순서는 본 출원에서 특별히 제한되지 않는다는 점을 유의하여야 한다.
본 출원의 단계 802는 좌측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일할 때 사용되는, 종래 기술의 단계 1.1에서 설명한 처리 방법과 동일하다. 자세한 내용은 여기서 다시 설명하지 않는다.
본 출원의 단계 803에서, 좌측 픽처 후보의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 본 출원에서, 좌측 후보 픽처 블록의 MV는 스케일링될 필요가 없고, 좌측 후보 픽처 블록의 MV는 바로 제외된다. 예를 들어, 만약 A0의 참조 픽처가 현재 블록의 참조 픽처와 다르다면, A0의 MV는 제외되고, A0의 MV는 후보 모션 벡터 리스트에 추가되지 않는다. 이는 AMVP 모드에서 후보 모션 벡터 리스트를 획득하는 과정을 단순화하고, 모션 정보 유도 과정의 복잡성을 감소시키며, 코딩 효율을 향상할 수 있다.
일부 실현 가능한 구현에서, 선택적으로, 본 출원의 본 실시예는 단계 804와 단계 805를 더 포함할 수 있다.
단계 804: 상측 후보 픽처 블록이 인코딩/디코딩되고 인터 예측 모드가 사용될 때, 상측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정한다.
본 출원에서, 인코더 측에서는 상측 후보 픽처 블록이 인코딩되는지 여부를 판정하고, 디코더 측에서는 상측 후보 픽처 블록이 디코딩되는지 여부를 판정한다. 상측 후보 픽처 블록이 인코딩되거나 디코딩되고 인터 예측 모드가 사용된다는 것은, 상측 후보 픽처 블록이 이용 가능하고, 상측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 더 판정하여야 함을 나타낸다.
디코더 측에서는 비트스트림을 파싱하여 현재 블록의 모션 정보를 획득한다. 현재 블록이 단방향(예를 들어, 제 1 방향) 인터 예측 모드를 사용하는 경우, 모션 정보는 현재 블록의 제 1 방향 모션 정보이며, 제 1 방향에서의 현재 블록의 하나 이상의 참조 픽처 인덱스(만약 현재 블록이 복수의 참조 픽처를 갖고 있다면, 파싱을 통해 복수의 프레임 인덱스를 획득한다)를 포함한다. 현재 블록이 양방향(예를 들어, 제 1 방향과 제 2 방향) 인터 예측 모드를 사용하는 경우, 모션 정보는 현재 블록의 제 1 방향 모션 정보와 현재 블록의 제 2 방향 모션 정보를 포함한다. 제 1 방향 모션 정보는 제 1 방향에서의 현재 블록의 하나 이상의 참조 픽처 인덱스를 포함하고, 제 2 방향 모션 정보는 제 2 방향에서의 현재 블록의 하나 이상의 참조 픽처 인덱스를 포함한다. 예를 들어, 해당 픽처 블록이 제 1 방향 인터 예측 모드를 사용하는지 여부를 나타내는 데 플래그 predFlagL0가 사용될 수 있으며(list0은 제 1 방향 모션 정보를 나타내는 데 사용), 해당 픽처 블록이 제 2 방향 인터 예측 모드를 사용하는지 여부를 나타내는 데 플래그 predFlagL1이 사용될 수 있다(list1은 제 2 방향 모션 정보를 나타내는 데 사용). 전술한 플래그의 값 0는 대응하는 방향의 인터 예측 모드가 사용되지 않음을 나타내고, 전술한 플래그의 값 1은 대응하는 방향의 인터 예측 모드가 사용됨을 나타낸다. 참조 픽처 인덱스와 참조 픽처 리스트의 참조 픽처의 POC 간에 대응 관계가 있고, 대응하는 POC는 현재 블록의 list0 및/또는 list1 내 참조 픽처 인덱스를 기반으로 한 참조 픽처 리스트에서 찾을 수 있다. 인코더 측에서, RDO 기반의 코딩 수행을 비교하여 현재 블록의 모션 정보를 결정한다. 현재 블록의 하나 이상의 참조 픽처의 하나 이상의 POC 중 어느 하나가 상측 후보 픽처 블록의 참조 픽처의 POC와 동일한지 여부를 판정하기 위하여, 현재 블록의 하나 이상의 참조 픽처의 하나 이상의 POC가 상측 후보 픽처 블록의 참조 픽처의 POC와 개별적으로 비교된다.
단계 805: 판정 결과를 기초로 해당하는 MV를 후보 모션 벡터 리스트에 추가한다.
상측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일하다는 것은 현재 블록의 고유 참조 픽처의 POC 또는 현재 블록의 복수의 참조 픽처의 POC 중 어느 하나가 상측 후보 픽처 블록의 참조 픽처의 POC 중 어느 하나와 동일하다는 것을 의미한다. 하나의 비교 방법으로, 현재 블록의 제 1 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC는, 위치 B(B0 또는 B1)의 제 1 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC와 비교된다. 두 POC가 동일하다면, B 위치의 MV가 후보 모션 벡터 리스트에 추가되고, 현재 블록의 제 2 방향 모션 정보를 판정할 필요가 없다. 두 POC가 다르다면, 현재 블록의 제 2 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC는, 위치 B의 제 2 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC와 비교된다. 두 POC가 동일하다면, 위치 B의 MV가 후보 모션 벡터 리스트에 추가된다. 다른 비교 방법으로, 현재 블록의 제 1 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC는, 위치 B의 제 1 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC와 비교된다. 두 POC가 다르다면, 현재 블록의 제 1 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC는, 위치 B의 제 2 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC와 비교된다. 두 POC가 다르다면, 현재 블록의 제 2 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC는, 위치 B의 제 1 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC와 비교된다. 두 POC가 다르다면, 현재 블록의 제 2 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC는, 위치 B의 제 2 방향 모션 정보의 참조 픽처 인덱스에 대응하는 POC와 비교된다.
본 출원의 단계 805에서, 상측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일할 때, 상측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한 경우 사용되는 처리 방법은 종래 기술의 단계 1.2에서 설명한 처리 방법과 동일하다. 자세한 내용은 여기에서 다시 설명하지 않는다.
본 출원의 단계 805에서, 상측 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다른 경우, 본 출원에서 두 개의 처리 방법이 있다. 한 가지 방법은 상측 후보 픽처 블록의 MV가 스케일링될 필요가 없고, 상측 후보 픽처 블록의 MV가 바로 제외되는 것이다. 예를 들어, B0의 참조 픽처가 현재 블록의 참조 픽처와 다른 경우, B0의 MV는 제외되고 B0의 MV는 후보 모션 벡터 리스트에 추가되지 않는다. 또 다른 방법은 현재 픽처 블록의 좌측 후보 픽처 블록이 이용 가능한지 여부를 판정할 필요 없고, 상측 후보 픽처 블록의 MV가 수학식 (1)에 따라 바로 스케일링되고, 스케일링된 MV가 후보 모션 벡터 리스트에 추가되는 것이다. 이는 MV 예측의 정확성과 코딩 효율을 향상시킬 수 있다.
단계 805 이후, 후보 모션 벡터 리스트가 이미 두 MV를 포함하고 있고, 두 MV가 다르다면, 현재 블록의 후보 모션 벡터 리스트가 결정된다. 그러나 두 MV가 동일하다면, 두 MV 중 하나는 중복성을 제거하기 위하여 삭제되어야 한다. 일부 실행 가능한 다른 구현에서, 구현 복잡성을 단순화하기 위하여, MV를 비교하는 동작은 수행되지 않을 수 있어, 동일한 두 MV가 유지되도록 할 수 있다.
본 출원에서, 공간적으로 이웃한 후보 픽처 블록이 현재 블록의 참조 픽처와 다를 때, 후보 픽처 블록의 MV는 스케일링될 필요가 없고, 후보 픽처 블록의 MV는 바로 제외된다. 이는 인터 예측 모드에서 모션 벡터 후보를 획득하는 과정을 단순화하고, 모션 벡터 유도 과정의 복잡성을 감소시키며, 코딩 효율을 향상시킬 수 있다.
전술한 실시예에 따라 후보 모션 벡터 리스트를 획득한 후, 리스트 내의 각 모션 벡터 후보의 RD 비용을 계산하여 최적의 모션 벡터가 결정되는데, 즉 최소 RD 비용을 갖는 모션 벡터 후보가 현재 블록의 MVP로 사용된다. RD 비용은 다음 수학식에 따라 계산할 수 있다:
J는 RD 비용을 나타내고, SAD는 모션 벡터 후보를 기반으로 모션 추정을 통해 획득한, 예측 블록 픽셀 값과 현재 블록 픽셀 값 사이의 절대 차이의 합(sum of absolute differences, SAD)을 나타내며, R은 비트 레이트를 나타내고, λ는 라그랑주 승수(Lagrange multiplier)를 나타낸다.
인코더 측은 후보 모션 벡터 리스트에서 결정된 MVP의 인덱스를 디코더 측으로 전송한다. 또한, 인코더 측은 현재 블록의 실제 모션 벡터를 획득하기 위해 MVP 중심의 인접 도메인에서 모션 검색을 수행할 수 있다. 인코더 측은 MVP와 실제 모션 벡터 간의 모션 벡터 차분(motion vector difference, MVD)을 계산하고, MVD를 디코더 측으로 전송한다. 디코더 측은 인덱스를 파싱하고, 인덱스를 기반으로 후보 모션 벡터 리스트에서 대응하는 MVP를 찾으며, MVD를 파싱하고, MVD와 MVP를 더하여 현재 블록의 실제 모션 벡터를 획득한다.
도 9는 본 출원의 일 실시예에 따른 인터 예측 장치(900)의 개략적인 블록도이다. 인터 예측 장치(900)는 제 1 후보 픽처 블록이 인코딩/디코딩되고 인터 예측 모드가 사용될 때, 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정하도록 구성된 판정 모듈(901)과 판정 결과를 기초로 현재 블록의 후보 모션 벡터 리스트를 구성하도록 구성되는 처리 모듈(902)을 포함하며, 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일할 때, 후보 모션 벡터 리스트는 제 1 후보 픽처 블록의 모션 벡터 MV를 포함하고, 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 후보 모션 벡터 리스트는 제 1 후보 픽처 블록의 MV를 포함하지 않을 수 있다
가능한 구현에서, 판정 모듈(901)은, 제 2 후보 픽처 블록이 인코딩/디코딩되고 인터 예측 모드가 사용될 때, 제 2 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정하도록 더 구성되고, 처리 모듈(902)은 제 2 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일할 때, 제 2 후보 픽처 블록의 MV를 후보 모션 벡터 리스트 내의 모션 벡터 후보로 사용하도록 더 구성된다.
가능한 구현에서, 제 2 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다를 때, 후보 모션 벡터 리스트는 제 2 후보 픽처 블록의 MV를 포함하지 않는다.
가능한 구현에서, 처리 모듈(902)은 제 2 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 다른 경우, 제 2 후보 픽처 블록의 참조 픽처의 POC 및 현재 블록의 참조 픽처의 POC를 기초로, 제 2 후보 픽처 블록의 MV를 스케일링하고, 스케일링된 MV를 후보 모션 벡터 리스트 내의 모션 벡터 후보로서 사용하도록 더 구성된다.
가능한 구현에서, 현재 블록은 복수의 참조 픽처를 가지고, 판정 모듈(901)은 복수의 참조 픽처의 POC를 제 1 후보 픽처 블록의 참조 픽처의 POC와 개별적으로 비교하고, 복수의 참조 픽처의 POC 중 하나가 제 1 후보 픽처 블록의 참조 픽처의 POC와 동일할 때 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일하다고 판정하도록 특히 더 구성된다.
가능한 구현에서, 처리 모듈(902)은 제 1 후보 픽처 블록의 MV와 제 2 후보 픽처 블록의 MV가 다르다고 판정하도록 더 구성될 수 있다.
가능한 구현에서, 제 1 후보 픽처 블록의 MV가 제 2 후보 픽처 블록의 MV와 동일할 때, 후보 모션 벡터 리스트는 제 2 후보 픽처 블록의 MV를 포함하지 않는다.
판정 모듈(901)과 처리 모듈(902)은 인코더 측 또는 디코더 측의 인터 예측 프로세스에 사용될 수 있다는 점을 유의하여야 한다. 구체적으로, 인코더 측에서, 모듈들은 인코더(20)의 예측 처리 유닛(260)의 인터 예측 유닛(244)에 사용될 수 있고, 디코더 측에서 모듈들은 디코더(30)의 예측 처리 유닛(360)의 인터 예측 유닛(344)에 사용될 수 있다.
판정 모듈(901)과 처리 모듈(902)의 특정 구현 프로세스에 대하여, 도 7의 실시예의 상세한 설명을 참조해야 한다는 점을 또한 유의하여야 한다. 명세서의 간결성을 위하여, 세부 사항은 여기에서 다시 설명되지 않는다.
당업자는 본 명세서에 개시되고 설명된 다양한 설명적인 논리 블록, 모듈, 및 알고리즘 단계를 참조하여 설명된 기능들이 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합에 의해 구현될 수 있다는 것을 이해할 수 있다. 소프트웨어에 의해 구현되는 경우, 설명적인 논리 블록, 모듈 및 단계를 참조하여 설명된 기능은 하나 이상의 명령어 또는 코드로서 컴퓨터 판독 가능 매체에 저장되거나 전송되고, 하드웨어 기반의 처리 유닛에 의하여 실행될 수 있다. 이 컴퓨터 판독 가능 매체는, 데이터 저장 매체와 같은 유형의(tangible) 매체에 대응하는 컴퓨터 판독 가능 저장 매체 또는 컴퓨터 프로그램을 한 장소에서 다른 장소로 전송하는 것을 용이하게 하는 임의의 매체를 포함하는 통신 매체(예를 들어, 통신 프로토콜에 따라)를 포함할 수 있다. 이러한 방식으로, 컴퓨터 판독 가능 매체는 일반적으로 (1) 비일시적인 유형의(tangible) 컴퓨터 판독 가능 저장 매체, 또는 (2) 신호 또는 캐리어와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 출원에서 설명된 기법을 구현하기 위한 명령어, 코드, 및/또는 데이터 구조를 인출하기 위해 하나 이상의 컴퓨터 또는 프로세서에 의해 접근될 수 있는 임의의 사용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체를 포함할 수 있다.
제한이 아닌 예로서, 이러한 컴퓨터 판독 가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM, 또는 다른 컴팩트 디스크 저장 매체, 자기 디스크 저장 매체, 또는 다른 자기 저장 장치, 플래시 메모리, 또는 원하는 프로그램 코드를 명령어 또는 데이터 구조의 형태로 저장하는 데 사용할 수 있고 컴퓨터로 접근할 수 있는 임의의 다른 매체를 포함한다. 또한, 모든 접속부는 컴퓨터 판독 가능 매체라고 한다. 예를 들어, 웹 사이트, 서버, 또는 원격 소스로부터, 동축 케이블, 광섬유, 트위스트 페어(twisted pair), 디지털 가입자 회선(DSL) 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술을 통하여 명령어가 전송된다면, 동축 케이블, 광섬유, 트위스트 페어, 디지털 가입자 회선 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술은 매체의 정의에 포함된다. 그러나, 컴퓨터 판독 가능 저장 매체 및 데이터 저장 매체는 접속부, 캐리어, 신호 또는 다시 일시적인 매체를 포함하지 않고 실제로는 비일시적인 유형의(tangible) 저장 매체를 의미한다는 것을 이해하여야 한다. 본 명세서에서 사용되는 디스크(disk)와 디스크(disc)는 컴팩트 디스크(CD), 레이저 디스크, 광 디스크, DVD(디지털 다목적 디스크) 및 블루레이(Blu-ray) 디스크를 포함한다. 디스크(disk)는 일반적으로 데이터를 자기적으로 재생하는 반면에, 디스크(disc)는 일반적으로 데이터를 광학적으로 재생한다. 전술한 내용의 조합도 컴퓨터 판독 가능한 매체의 범위에 포함되어야 한다.
명령어는 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로 프로세서, ASIC, FPGA 또는 기타 등가의 집적 회로 또는 이산 논리 회로에 의해 실행될 수 있다. 따라서, 본 명세서에서 사용되는 “프로세서”라는 용어는 임의의 전술한 구조 또는 본 명세서에서 설명된 기법을 구현하기 위해 적합한 임의의 다른 구조일 수 있다. 또한, 일부 양태에서, 본 명세서에 설명된 설명적인 논리 블록, 모듈 및 단계를 참조하여 설명된 기능은, 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공될 수 있거나, 결합된 코덱에 통합될 수 있다. 또한, 전술한 기법은 하나 이상의 회로 또는 논리 구성에서 완전히 구현될 수 있다.
본 출원의 기법은 다양한 무선 핸드셋(handset), 집적 회로(IC), 또는 IC 세트(예를 들어, 칩셋)를 포함한 장치 또는 디바이스에 구현될 수 있다. 개시된 기법을 수행하도록 구성된 장치의 기능적 측면을 강조하기 위하여, 본 출원에서 다양한 요소, 모듈 또는 유닛이 설명되지만, 반드시 상이한 하드웨어 유닛들에 의해 구현되는 것은 아니다. 실제로, 위에서 설명된 바와 같이, 다양한 유닛은 적절한 소프트웨어 및/또는 펌웨어를 조합하여 코덱 하드웨어 유닛으로 결합될 수 있거나, 또는 상호 운용 가능한 하드웨어 유닛(위에서 설명된 하나 이상의 프로세서를 포함)에 의해 제공될 수 있다.
전술한 실시예에서, 실시예의 설명은 각각의 초점을 갖는다. 일 실시예에서 자세히 설명되지 않은 부분에 대해서는 다른 실시예의 관련 설명을 참조한다.
전술한 설명은 단지 본 출원의 특정 구현일 뿐이고, 본 출원의 보호 범위를 제한하려는 의도는 아니다. 본 출원에 개시된 기술 범위 내에서 당업자에 의해 용이하게 파악되는 임의의 변형 또는 대체는 본 출원의 보호 범위에 속한다. 따라서, 본 출원의 보호 범위는 청구항의 보호 범위에 따른다.

Claims (17)

  1. 후보 모션 벡터 리스트를 획득하는 방법으로서,
    제 1 후보 픽처 블록이 인코딩되거나 디코딩되고, 상기 제 1 후보 픽처 블록을 위해 인터 예측 모드(inter prediction mode)가 사용될 때, 상기 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정하는 단계와,
    상기 판정의 결과를 기초로 상기 현재 블록의 모션 벡터 후보 리스트를 구성하는 단계를 포함하되,
    상기 제 1 후보 픽처 블록의 상기 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 동일할 때 상기 후보 모션 벡터 리스트는 상기 제 1 후보 픽처 블록의 모션 벡터(MV: motion vector)를 포함하고, 상기 제 1 후보 픽처 블록의 상기 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 다를 때 상기 후보 모션 벡터 리스트는 상기 제 1 후보 픽처 블록의 상기 MV를 포함하지 않는,
    후보 모션 벡터 리스트 획득 방법.
  2. 제 1 항에 있어서,
    제 2 후보 픽처 블록이 인코딩되거나 디코딩되고, 상기 제 2 후보 픽처 블록을 위해 상기 인터 예측 모드가 사용될 때, 상기 제 2 후보 픽처 블록의 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 동일한지 여부를 판정하는 단계와,
    상기 제 2 후보 픽처 블록의 상기 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 동일할 때 상기 제 2 후보 픽처 블록의 MV를 상기 후보 모션 벡터 리스트 내의 모션 벡터 후보로 사용하는 단계를 더 포함하는,
    후보 모션 벡터 리스트 획득 방법.
  3. 제 2 항에 있어서,
    상기 제 2 후보 픽처 블록의 상기 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 다를 때, 상기 후보 모션 벡터 리스트는 상기 제 2 후보 픽처 블록의 상기 MV를 포함하지 않는,
    후보 모션 벡터 리스트 획득 방법.
  4. 제 2 항에 있어서,
    상기 제 2 후보 픽처 블록의 상기 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 다를 때, 상기 제 2 후보 픽처 블록의 상기 참조 픽처의 픽처 순서 카운트(POC: Picture Order Count) 및 상기 현재 블록의 상기 참조 픽처의 POC를 기초로 상기 제 2 후보 픽처 블록의 상기 MV를 스케일링하고, 스케일링된 MV를 상기 후보 모션 벡터 리스트 내의 모션 벡터 후보로 사용하는 단계를 더 포함하는,
    후보 모션 벡터 리스트 획득 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 현재 블록은 복수의 참조 픽처를 갖고,
    상기 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정하는 단계는,
    상기 복수의 참조 픽처의 POC들과 상기 제 1 후보 픽처 블록의 상기 참조 픽처의 상기 POC를 개별적으로 비교하는 단계와,
    상기 복수의 참조 픽처의 상기 POC들 중 하나가 상기 제 1 후보 픽처 블록의 상기 참조 픽처의 상기 POC와 동일할 때, 상기 제 1 후보 픽처 블록의 상기 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 동일하다고 판정하는 단계를 포함하는,
    후보 모션 벡터 리스트 획득 방법.
  6. 제 2 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 제 2 후보 픽처 블록의 MV를 상기 후보 모션 벡터 리스트 내의 모션 벡터 후보로 사용하기 전에,
    상기 제 1 후보 픽처 블록의 상기 MV와 상기 제 2 후보 픽처 블록의 상기 MV가 다르다고 판정하는 단계를 더 포함하는,
    후보 모션 벡터 리스트 획득 방법.
  7. 제 6 항에 있어서,
    상기 제 1 후보 픽처 블록의 상기 MV가 상기 제 2 후보 픽처 블록의 상기 MV와 동일할 때, 상기 후보 모션 벡터 리스트는 상기 제 2 후보 픽처 블록의 상기 MV를 포함하지 않는,
    후보 모션 벡터 리스트 획득 방법.
  8. 인터 예측 장치로서,
    제 1 후보 픽처 블록이 인코딩되거나 디코딩되고, 상기 제 1 후보 픽처 블록을 위해 인터 예측 모드가 사용될 때, 상기 제 1 후보 픽처 블록의 참조 픽처가 현재 블록의 참조 픽처와 동일한지 여부를 판정하도록 구성된 판정 모듈과,
    상기 판정의 결과를 기초로 상기 현재 블록의 모션 벡터 후보 리스트를 구성하도록 구성된 처리 모듈을 포함하되,
    상기 제 1 후보 픽처 블록의 상기 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 동일할 때 상기 후보 모션 벡터 리스트는 상기 제 1 후보 픽처 블록의 MV를 포함하고, 상기 제 1 후보 픽처 블록의 상기 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 다를 때 상기 후보 모션 벡터 리스트는 상기 제 1 후보 픽처 블록의 상기 MV를 포함하지 않는,
    인터 예측 장치.
  9. 제 8 항에 있어서,
    상기 판정 모듈은, 제 2 후보 픽처 블록이 인코딩되거나 디코딩되고, 상기 제 2 후보 픽처 블록을 위해 상기 인터 예측 모드가 사용될 때, 상기 제 2 후보 픽처 블록의 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 동일한지 여부를 판정하도록 더 구성되고,
    상기 처리 모듈은, 상기 제 2 후보 픽처 블록의 상기 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 동일할 때, 상기 제 2 후보 픽처 블록의 MV를 상기 후보 모션 벡터 리스트 내의 모션 벡터 후보로 사용하도록 더 구성되는,
    인터 예측 장치.
  10. 제 9 항에 있어서,
    상기 제 2 후보 픽처 블록의 상기 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 다를 때, 상기 후보 모션 벡터 리스트는 상기 제 2 후보 픽처 블록의 상기 MV를 포함하지 않는,
    인터 예측 장치.
  11. 제 9 항에 있어서,
    상기 처리 모듈은, 상기 제 2 후보 픽처 블록의 상기 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 다를 때, 상기 제 2 후보 픽처 블록의 상기 참조 픽처의 POC 및 상기 현재 블록의 상기 참조 픽처의 POC를 기초로, 상기 제 2 후보 픽처 블록의 상기 MV를 스케일링하고, 스케일링된 MV를 상기 후보 모션 벡터 리스트 내의 모션 벡터 후보로 사용하도록 더 구성되는,
    인터 예측 장치.
  12. 제 8 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 현재 블록은 복수의 참조 픽처를 갖고,
    상기 판정 모듈은 특히,
    상기 복수의 참조 픽처의 POC들과 상기 제 1 후보 픽처 블록의 상기 참조 픽처의 상기 POC를 개별적으로 비교하고,
    상기 복수의 참조 픽처의 상기 POC들 중 하나가 상기 제 1 후보 픽처 블록의 상기 참조 픽처의 상기 POC와 동일할 때, 상기 제 1 후보 픽처 블록의 상기 참조 픽처가 상기 현재 블록의 상기 참조 픽처와 동일하다고 판정하도록 더 구성되는,
    인터 예측 장치.
  13. 제 8 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 판정 모듈은 상기 제 1 후보 픽처 블록의 상기 MV와 상기 제 2 후보 픽처 블록의 상기 MV가 다르다고 판정하도록 더 구성되는,
    인터 예측 장치.
  14. 제 13 항에 있어서,
    상기 제 1 후보 픽처 블록의 상기 MV가 상기 제 2 후보 픽처 블록의 상기 MV와 동일할 때, 상기 후보 모션 벡터 리스트는 상기 제 2 후보 픽처 블록의 상기 MV를 포함하지 않는,
    인터 예측 장치.
  15. 비디오 인코더로서,
    상기 비디오 인코더는 픽처 블록을 인코딩하도록 구성되고,
    상기 비디오 인코더는 제 8 항 내지 제 11 항 중 어느 한 항에 따른 상기 인터 예측 장치와, 엔트로피 인코딩(entropy encoding) 모듈과, 복원 모듈을 포함하되,
    상기 인터 예측 장치는 목표 후보 모션 정보를 기초로 현재 인코딩 픽처 블록의 모션 정보를 예측하고, 상기 현재 인코딩 픽처 블록의 상기 모션 정보를 기초로 상기 현재 인코딩 픽처 블록의 예측 샘플 값을 결정하도록 구성되고,
    상기 엔트로피 인코딩 모듈은 상기 목표 후보 모션 정보의 인덱스 지표(index indicator)를 비트스트림(bitstream)으로 인코딩하도록 구성되며 - 상기 인덱스 지표는 상기 현재 인코딩 픽처 블록에 사용되는 상기 목표 후보 모션 정보를 나타냄 -,
    상기 복원 모듈은 상기 예측 샘플 값을 기초로 상기 현재 인코딩 픽처 블록을 복원하도록 구성되는,
    비디오 인코더.
  16. 비디오 디코더로서,
    상기 비디오 디코더는 비트스트림으로부터 픽처 블록을 디코딩하도록 구성되고,
    상기 비디오 디코더는 엔트로피 디코딩(entropy decoding) 모듈과, 제 8 항 내지 제 11 항 중 어느 한 항에 따른 상기 인터 예측 장치와, 복원 모듈을 포함하되,
    상기 엔트로피 디코딩 모듈은 상기 비트스트림을 디코딩하여 인덱스 지표를 획득하도록 구성되고 - 상기 인덱스 지표는 현재 디코딩 픽처 블록의 목표 후보 모션 정보를 나타내도록 사용됨 -,
    상기 인터 예측 장치는 상기 인덱스 지표에 의해 나타내진 상기 목표 후보 모션 정보를 기초로 상기 현재 디코딩 픽처 블록의 모션 정보를 예측하고, 상기 현재 디코딩 픽처 블록의 상기 모션 정보를 기초로 상기 현재 디코딩 픽처 블록의 예측 샘플 값을 결정하도록 구성되며,
    상기 복원 모듈은 상기 예측 샘플 값을 기초로 상기 현재 디코딩 픽처 블록을 복원하도록 구성되는,
    비디오 디코더.
  17. 비디오 코딩 장치로서,
    서로 커플링되어 있는 비휘발성 메모리와 프로세서를 포함하되,
    상기 프로세서는 상기 메모리에 저장되어 있는 프로그램 코드를 호출하여, 제 1 항 내지 제 4 항 중 어느 한 항에 따른 상기 방법을 수행하는,
    비디오 코딩 장치.
KR1020217008064A 2019-05-15 2020-05-06 후보 모션 벡터 리스트 획득 방법, 장치, 인코더 및 디코더 KR102621958B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201910408133.5 2019-05-15
CN201910408133.5A CN111953997A (zh) 2019-05-15 2019-05-15 候选运动矢量列表获取方法、装置及编解码器
PCT/CN2020/088635 WO2020228560A1 (zh) 2019-05-15 2020-05-06 候选运动矢量列表获取方法、装置及编解码器

Publications (2)

Publication Number Publication Date
KR20210036411A KR20210036411A (ko) 2021-04-02
KR102621958B1 true KR102621958B1 (ko) 2024-01-05

Family

ID=73288780

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217008064A KR102621958B1 (ko) 2019-05-15 2020-05-06 후보 모션 벡터 리스트 획득 방법, 장치, 인코더 및 디코더

Country Status (7)

Country Link
US (2) US11516464B2 (ko)
EP (1) EP3913922A4 (ko)
JP (1) JP2022502966A (ko)
KR (1) KR102621958B1 (ko)
CN (2) CN111953997A (ko)
MX (1) MX2021004373A (ko)
WO (1) WO2020228560A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113794888B (zh) * 2021-03-19 2022-12-23 杭州海康威视数字技术股份有限公司 解码方法、编码方法、装置、设备及机器可读存储介质
CN113079372B (zh) * 2021-06-07 2021-08-06 腾讯科技(深圳)有限公司 帧间预测的编码方法、装置、设备及可读存储介质
CN113301349B (zh) * 2021-07-27 2021-12-03 杭州博雅鸿图视频技术有限公司 运动矢量选择方法、装置、电子设备及存储介质
WO2023113209A1 (ko) * 2021-12-15 2023-06-22 현대자동차주식회사 움직임벡터 예측자들의 후보 리스트를 이용하는 비디오 코딩을 위한 방법 및 장치

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9060176B2 (en) * 2009-10-01 2015-06-16 Ntt Docomo, Inc. Motion vector prediction in video coding
US9300970B2 (en) 2010-07-09 2016-03-29 Samsung Electronics Co., Ltd. Methods and apparatuses for encoding and decoding motion vector
HRP20230425T1 (hr) * 2011-03-21 2023-07-07 Lg Electronics, Inc. Odabir prediktora vektora kretanja
BR112014010966A2 (pt) * 2011-11-08 2017-06-06 Samsung Electronics Co Ltd método para determinar vetor de movimento para previsão inter, aparelho determinador de vetor de movimento para previsão inter, e mídia de gravação legível por computador
JP2013131918A (ja) * 2011-12-21 2013-07-04 Jvc Kenwood Corp 動画像復号装置、動画像復号方法及び動画像復号プログラム
RU2624578C2 (ru) * 2012-07-02 2017-07-04 Самсунг Электроникс Ко., Лтд. Способ и устройство для прогнозирования вектора движения для кодирования видео или декодирования видео
WO2016165069A1 (en) * 2015-04-14 2016-10-20 Mediatek Singapore Pte. Ltd. Advanced temporal motion vector prediction in video coding
WO2017039117A1 (ko) * 2015-08-30 2017-03-09 엘지전자(주) 영상의 부호화/복호화 방법 및 이를 위한 장치
WO2017131908A1 (en) * 2016-01-29 2017-08-03 Google Inc. Dynamic reference motion vector coding mode
EP3439303B1 (en) * 2016-04-28 2020-12-30 LG Electronics Inc. -1- Inter prediction mode-based image processing method and apparatus therefor
KR102338356B1 (ko) * 2016-05-24 2021-12-13 한국전자통신연구원 영상 부호화/복호화 방법 및 이를 위한 기록 매체
CN109218733B (zh) * 2017-06-30 2022-03-29 华为技术有限公司 一种确定预测运动矢量预测的方法以及相关设备
US10880573B2 (en) * 2017-08-15 2020-12-29 Google Llc Dynamic motion vector referencing for video coding
WO2019068753A1 (en) * 2017-10-06 2019-04-11 Telefonaktiebolaget Lm Ericsson (Publ) IMPROVED MOTION VECTOR PROTECTION
CN112204980B (zh) * 2018-04-24 2023-07-21 Lg电子株式会社 视频编码系统中用于帧间预测的方法和装置
US11331254B2 (en) 2018-09-25 2022-05-17 L'oreal Compositions for providing a protective barrier
CN111164976A (zh) * 2019-01-03 2020-05-15 北京大学 视频处理方法和装置

Also Published As

Publication number Publication date
CN111953997A (zh) 2020-11-17
US20210176462A1 (en) 2021-06-10
US11889061B2 (en) 2024-01-30
US11516464B2 (en) 2022-11-29
CN112042197A (zh) 2020-12-04
EP3913922A4 (en) 2022-10-12
EP3913922A1 (en) 2021-11-24
KR20210036411A (ko) 2021-04-02
JP2022502966A (ja) 2022-01-11
WO2020228560A1 (zh) 2020-11-19
US20230121428A1 (en) 2023-04-20
MX2021004373A (es) 2021-06-04

Similar Documents

Publication Publication Date Title
KR102621958B1 (ko) 후보 모션 벡터 리스트 획득 방법, 장치, 인코더 및 디코더
US20220078441A1 (en) Inter prediction method and apparatus
AU2020261145B2 (en) Picture prediction method and apparatus, and computer-readable storage medium
CN112055200A (zh) Mpm列表构建方法、色度块的帧内预测模式获取方法及装置
JP2024056899A (ja) インター予測の方法および装置、並びに対応するエンコーダおよびデコーダ
JP2024037999A (ja) ビデオエンコーダ、ビデオデコーダ、及び対応する方法
US20220109830A1 (en) Method for constructing merge candidate motion information list, apparatus, and codec
JP2023179684A (ja) ピクチャ予測方法および装置、およびコンピュータ可読記憶媒体
CN112088534B (zh) 一种帧间预测的方法、装置、设备及存储介质
CN112135137B (zh) 视频编码器、视频解码器及相应方法
CN111405277B (zh) 帧间预测方法、装置以及相应的编码器和解码器
US12010293B2 (en) Picture prediction method and apparatus, and computer-readable storage medium
RU2819065C2 (ru) Видеокодер, видеодекодер и соответствующий способ
CN111726630B (zh) 基于三角预测单元模式的处理方法及装置
WO2020135368A1 (zh) 一种帧间预测的方法和装置

Legal Events

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