KR102607443B1 - 비디오 데이터 인터 예측 방법 및 장치 - Google Patents

비디오 데이터 인터 예측 방법 및 장치 Download PDF

Info

Publication number
KR102607443B1
KR102607443B1 KR1020237003303A KR20237003303A KR102607443B1 KR 102607443 B1 KR102607443 B1 KR 102607443B1 KR 1020237003303 A KR1020237003303 A KR 1020237003303A KR 20237003303 A KR20237003303 A KR 20237003303A KR 102607443 B1 KR102607443 B1 KR 102607443B1
Authority
KR
South Korea
Prior art keywords
motion information
control point
image block
block
candidate motion
Prior art date
Application number
KR1020237003303A
Other languages
English (en)
Other versions
KR20230020021A (ko
Inventor
환방 천
샨 가오
하이타오 양
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Priority to KR1020237040529A priority Critical patent/KR20230163004A/ko
Publication of KR20230020021A publication Critical patent/KR20230020021A/ko
Application granted granted Critical
Publication of KR102607443B1 publication Critical patent/KR102607443B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/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/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/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/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • 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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/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/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
    • 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 후보 움직임 정보 그룹, 하나 이상의 제2 후보 움직임 정보 그룹, 및 상기 제1 후보 움직임 정보 그룹과 상기 제2 후보 움직임 정보 그룹을 색인화하는 데 사용되는 복수의 색인 정보를 포함하고, 상기 제1 후보 움직임 정보 그룹은 상기 현재 영상 블록의 제1 이웃 영상 블록상의 미리 설정된 위치의 움직임 정보 및 상기 제1 이웃 영상 블록의 움직임 모델에 기초하여 결정되는 움직임 정보 그룹이고, 상기 제2 후보 움직임 정보 그룹은 상기 현재 영상 블록상의 둘 이상의 미리 설정된 위치에 각각 이웃하는 둘 이상의 샘플 위치의 움직임 정보의 세트임 -; 상기 후보 움직임 정보 리스트로부터 타깃 움직임 정보를 결정하는 단계; 및 상기 타깃 움직임 정보에 기초하여 상기 현재 영상 블록에 대해 인터 예측을 수행하는 단계를 포함한다.

Description

비디오 데이터 인터 예측 방법 및 장치{INTERFRAME PREDICTION METHOD AND DEVICE FOR VIDEO DATA}
본 출원은 비디오 인코딩 및 디코딩 분야에 관한 것으로, 특히 비디오 데이터 인터 예측 방법 및 장치, 비디오 인코더 및 비디오 디코더에 관한 것이다.
광전자 수집 기술의 개발과 고화질 디지털 비디오에 대한 요구가 증가함에 따라, 비디오 데이터량이 점점 커지고 있다. 제한된 이종 송신 대역폭(heterogeneous transmission bandwidth)과 다양한 비디오 애플리케이션은 비디오 코딩 효율에 대해 더 높은 요건을 부과한다. 이 경우, 고효율 비디오 코딩(high efficient video coding, HEVC) 표준이 필요에 따라 공식화되기 시작한다.
비디오 코딩 및 압축의 기본 원리는 공간 영역(space domain), 시간 영역(time domain) 및 코드 워드(code word) 사이의 상관관계를 사용하여 용장도(redundancy)를 최대한 제거하는 것이다. 현재, 유행하는 방법은 예측(인트라 예측(intra prediction) 및 인터 예측(inter prediction) 포함), 변환, 양자화 및 엔트로피 코딩과 같은 단계를 수행함으로써 비디오 코딩 및 압축을 구현하기 위해 블록 기반 하이브리드 비디오 코딩 프레임 워크를 사용하는 것이다. 이 코딩 프레임 워크는 강력하며 블록 기반 하이브리드 비디오 코딩 프레임 워크는 HEVC에도 사용된다. 다양한 비디오 인코딩/디코딩 방식에서, 움직임 추정/움직임 보상은 인코딩/디코딩 효율에 영향을 미치는 핵심 기술이다.
비디오에서 인접 프레임의 장면들 사이에는 상관관계가 있다. 이러한 방식에서, 영상(picture)은 몇 개의 블록 또는 매크로블록으로 분할될 수 있고, 이웃하는 프레임에서의 각각의 블록 또는 매크로 블록의 위치가 발견되고, 블록 또는 매크로 블록과, 이웃하는 프레임에서의 대응하는 블록 또는 매크로 블록 사이의 상대 공간 위치 오프셋이 획득된다. 획득된 상대 오프셋은 움직임 벡터(motion vector, MV)이다. 움직임 벡터를 획득하는 프로세스는 움직임 추정(motion estimation, ME)이라한다. 움직임 추정은 프레임 간 용장도를 제거함으로써, 비디오 송신의 비트 오버헤드를 감소시킬 수 있다.
기존의 움직임 추정 방법에서, 미리 설정된 정책에 따라 현재 코딩 블록의 이웃 코딩 블록(neighboring coding block)으로부터 코딩 블록이 선택되고, 현재 코딩 블록의 움직임 정보 그룹은 그 코딩 블록의 움직임 정보 그룹을 사용하여 도출된다. 이 방법에서, 인코더 측은 이웃 코딩 블록을 지시하는 색인 정보를 디코더 측에 전송할 필요가 없다. 이는 비디오 송신의 비트 오버헤드를 줄인다. 그러나 이웃 코딩 블록의 움직임 정보 그룹이 이용 가능하지 않으면, 인코더 측은 움직임 추정 방법을 재선택할 필요가 있고, 재선택된 움직임 추정 방법을 지시하기 위해 지시 정보를 디코더 측에 전송해야 한다. 결과적으로, 비디오 송신의 비트 오버헤드가 증가된다.
본 출원은 비디오 송신의 비트 오버헤드를 줄이고, 인코딩/디코딩 효율을 향상시키기 위한 비디오 데이터 인터 예측 방법 및 장치, 비디오 인코더 및 비디오 디코더를 제공한다.
제1 측면에 따르면, 비디오 데이터 인터 예측 방법이 제공된다. 상기 비디오 데이터 인터 예측 방법은, 현재 영상 블록의 후보 움직임 정보 리스트를 결정하는 단계 - 상기 후보 움직임 정보 리스트는 하나 이상의 제1 후보 움직임 정보 그룹, 하나 이상의 제2 후보 움직임 정보 그룹, 및 상기 제1 후보 움직임 정보 그룹과 상기 제2 후보 움직임 정보 그룹을 색인화하는 데 사용되는 복수의 색인 정보를 포함하고, 상기 복수의 색인 정보는 상기 복수의 후보 움직임 정보 그룹에 일대일 대응하고, 상기 제1 후보 움직임 정보 그룹은 상기 현재 영상 블록의 제1 이웃 영상 블록상의 미리 설정된 위치의 움직임 정보 및 상기 제1 이웃 영상 블록의 움직임 모델에 기초하여 결정되는 움직임 정보 그룹이고, 상기 제2 후보 움직임 정보 그룹은 상기 현재 영상 블록상의 둘 이상의 미리 설정된 위치에 각각 이웃하는 둘 이상의 샘플 위치의 움직임 정보의 세트이고, 상기 둘 이상의 샘플 위치는 상기 현재 영상 블록의 하나 이상의 제2 이웃 영상 블록에 위치함 -; 상기 후보 움직임 정보 리스트로부터 타깃 움직임 정보를 결정하는 단계 - 상기 타깃 움직임 정보는 상기 하나 이상의 제1 후보 움직임 정보 리스트 및 상기 하나 이상의 제2 후보 움직임 정보 그룹에 있고 스크리닝 규칙(screening rule)을 충족시키는 움직임 정보 그룹임 -; 및 상기 타깃 움직임 정보에 기초하여 상기 현재 영상 블록에 대해 인터 예측을 수행하는 단계를 포함한다.
여기서 제1 이웃 영상 블록과 제2 이웃 영상 블록은 단지 상이한 방식으로 후보 움직임 정보 그룹을 획득하는 프로세스에서 순회된(traversed) 현재 영상 블록의 공간적으로 이웃한 블록들 및/또는 순회된 현재 영상 블록의 시간적으로 이웃한 블록들 사이를 구별하기 위해 사용된다는 것을 이해해야 한다. 제1 이웃 영상 블록은 현재 영상 블록의 공간적으로 이웃한 블록 및/또는 현재 영상 블록의 시간적으로 이웃한 블록을 포함할 수 있다. 제2 이웃 영상 블록은 현재 영상 블록의 공간적으로 이웃한 블록 및/또는 현재 영상 블록의 시간적으로 이웃한 블록을 포함할 수 있다.
제1 이웃 영상 블록상의 미리 설정된 위치는 제1 이웃 영상 블록의 코너 위치, 예를 들어, 제1 이웃 영상 블록의 좌측 상단 코너 및 우측 상단 코너, 또는 제1 이웃 영상 블록의 좌측 상단 코너 및 좌측 하단 코너, 또는 제1 이웃 영상 블록의 좌측 상단 코너, 좌측 하단 코너 및 우측 상단 코너로 이해될 수 있음에 유의해야 한다. 현재 영상 블록상의 둘 이상의 미리 설정된 위치는 상기 현재 영상 블록의 둘 이상의 코너 위치로서 이해될 수 있고, 현재 영상 블록의 둘 이상의 제어점(control point), 예를 들어 현재 영상 블록의 좌측 상단 코너 및 우측 상단 코너, 또는 현재 영상 블록의 좌측 상단 코너 및 좌측 하단 코너, 또는 현재 영상 블록의 좌측 상단 코너, 좌측 하단 코너, 및 우측 상단 코너를 지칭할 수도 있다.
일례에서, 상기 타깃 움직임 정보가 스크리닝 규칙을 충족시키는 움직임 정보 그룹이라는 것은, 상기 후보 움직임 정보 리스트로부터 제1 후보 움직임 정보 그룹 또는 제2 후보 움직임 정보 그룹을 결정하는 것으로 이해될 수 있으며, 여기서 레이트 왜곡 비용(rate-distortion cost)은, 타깃 움직임 정보가 상기 현재 코딩 블록을 인코딩하는 데 사용되는 경우에 최저이다.
본 실시예에서 제공되는 비디오 데이터 인터 예측 방법에 따르면, 인코더 측 또는 디코더 측은 두 가지 유형의 후보 움직임 정보 그룹을 포함하는 후보 움직임 정보 리스트를 구성한다. 이 두 가지 유형의 후보 움직임 정보 그룹은 통일적으로 조정된(uniformly orchestrated) 색인 정보를 갖는다. 두 가지 유형의 후보 움직임 정보 그룹 중 하나가 현재 영상 블록에 적용 불가능하면, 인코더 측은 후보 움직임 정보 리스트에 포함된 다른 유형의 후보 움직임 정보 그룹으로부터 타깃 움직임 정보를 선택하고, 비트스트림을 사용하여 디코더 측에 타깃 움직임 정보의 색인 정보를 전송할 수 있다.
후보 움직임 정보 리스트 내의 후보 움직임 정보 그룹은 유일한 색인 정보를 가지고 있기 때문에, 인코더 측은 인코더 측에 의해 사용되는 움직임 추정 방법을 지시하는 지시 정보를 비트스트림으로 전송할 필요가 없다. 이는 비디오 송신의 비트 오버헤드를 줄인다.
선택적으로, 상기 제1 후보 움직임 정보 그룹의 색인 정보의 빈 스트링(bin string)의 길이는 상기 제2 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이 이하이다.
제1 후보 움직임 정보 그룹은 움직임 모델 기반 움직임 정보 그룹이고, 제1 후보 움직임 정보 그룹에 기초하여 인코딩/디코딩을 수행하는 효율은 제2 후보 움직임 정보 그룹에 기초하여 인코딩/디코딩을 수행하는 효율보다 높다. 따라서, 제1 후보 움직임 정보 그룹이 타깃 움직임 정보일 확률이 비교적 높다. 이러한 방식으로, 제1 후보 움직임 정보 그룹의 색인 정보는 비교적 소량의 비트를 갖는 색인 정보로 설정될 수 있다. 이는 비디오 송신의 비트 오버헤드를 감소시키는 데 도움이 된다.
선택적으로, 복수의 색인 정보 중 제1 색인 정보의 비트 수량은 복수의 색인 정보 중 제2 색인 정보의 비트 수량보다 적으며, 상기 제1 색인 정보는 상기 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹에 대응하고, 상기 제2 색인 정보는 후상기 보 움직임 정보 리스트에 나중에 추가되는 움직임 정보 그룹에 대응하며; 상기 현재 영상 블록의 후보 움직임 정보 리스트를 결정하는 단계는, 상기 제1 후보 움직임 정보 그룹을 상기 후보 움직임 정보 리스트에 먼저 추가한 다음, 상기 제2 후보 움직임 정보 그룹을 상기 후보 움직임 정보 리스트에 추가하는 단계를 포함한다.
제1 후보 움직임 정보 그룹은 움직임 모델 기반 움직임 정보 그룹이고, 제1 후보 움직임 정보 그룹에 기초하여 인코딩/디코딩을 수행하는 효율은 제2 후보 움직임 정보 그룹에 기초하여 인코딩/디코딩을 수행하는 효율보다 높다. 따라서, 제1 후보 움직임 정보 그룹이 타깃 움직임 정보일 확률이 비교적 높다. 이러한 방식으로, 제1 후보 움직임 정보 그룹의 색인 정보는 비교적 소량의 비트를 갖는 색인 정보로 설정될 수 있다. 이는 비디오 송신의 비트 오버헤드를 감소시키는 데 도움이 된다.
선택적으로, 상기 현재 영상 블록의 후보 움직임 정보 리스트를 결정하는 단계는, 상기 제1 이웃 영상 블록이 병진 움직임 모델(translational motion model)을 사용한 이웃 영상 블록인 경우, 상기 제1 이웃 영상 블록의 움직임 정보를 상기 제1 후보 움직임 정보 그룹으로서 상기 후보 움직임 정보 리스트에 추가하는 단계; 및/또는 상기 제1 이웃 영상 블록이 비병진 움직임 모델(non-translational motion model)을 사용한 영상 블록인 경우, 상기 제1 이웃 영상 블록상의 둘 이상의 미리 설정된 위치의 움직임 정보 및 상기 제1 이웃 영상 블록의 움직임 모델에 기초하여, 상기 현재 영상 블록에 대응하는 둘 이상의 미리 설정된 위치의 움직임 정보를 도출하고, 상기 현재 영상 블록에 대응하는 둘 이상의 미리 설정된 위치의 움직임 정보를 제1 후보 움직임 정보 그룹으로서 상기 후보 움직임 정보 리스트에 추가하는 단계를 포함한다.
비병진 움직임 모델은 다양한 아핀(affin) 움직임 모델, 예를 들어, 4-파라미터 아핀 움직임 모델, 6-파라미터 아핀 움직임 모델, 또는 8-파라미터 아핀 움직임 모델를 포함할 수 있지만, 이에 한정되는 것은 아님을 이해해야 한다.
상기 제1 이웃 영상 블록의 움직임 모델이 병진 움직임 모델이면, 상기 제1 이웃 영상 블록의 움직임 정보 그룹은 상기 제1 후보 움직임 정보 그룹으로서 상기 후보 움직임 정보 리스트에 직접 추가될 수 있다. 이는 영상 압축 효율을 향상시킨다. 상기 제1 이웃 영상 블록의 움직임 모델이 비병진 움직임 모델이면, 상기 제1 후보 움직임 정보 그룹은 상기 비병진 움직임 모델에 대응하는 공식에 따라 그리고 상기 제1 이웃 영상 블록상의 미리 설정된 위치에 기초하여 생성되어야한다.
선택적으로, 제1 이웃 영상 블록은 병진 움직임 모델을 사용한 제1 이웃 영상 블록 및 비병진 움직임 모델을 사용한 제1 이웃 영상 블록을 포함하고, 상기 복수의 색인 정보 중의 제1 색인 정보의 비트 수량이 상기 복수의 색인 정보 중의 제2 색인 정보의 비트 수량보다 적고, 상기 제1 색인 정보는, 상기 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹에 대응하고, 상기 제2 색인 정보는 상기 후보 움직임 정보 리스트에 나중에 추가되는 움직임 정보 그룹에 대응한다.
상기 현재 영상 블록의 후보 움직임 정보 리스트를 결정하는 단계는, 비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 수량이 수량 임계 값 이상인 경우, 상기 비병진 움직임 모델을 사용한 상기 제1 이웃 영상 블록상의 둘 이상의 미리 설정 위치의 움직임 정보 및 상기 비병진 움직임 모델을 사용한 상기 제1 이웃 영상 블록의 움직임 모델에 기초하여, 상기 현재 영상 블록에 대응하는 둘 이상의 미리 설정된 위치의 움직임 정보를 도출하고, 상기 현재 영상 블록에 대응하는 둘 이상의 미리 설정된 위치의 움직임 정보를 제1 후보 움직임 정보 그룹으로서 상기 후보 움직임 정보 리스트에 추가한 다음, 상기 제2 후보 움직임 정보 그룹을 상기 후보 움직임 정보 리스트에 추가하는 단계를 포함한다.
비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 수량이 수량 임계 값 이상이면, 이는 현재 영상 블록이 비병진 움직임 모델을 사용한 영상 블록일 확률이 비교적 높다는 것을 지시한다. 따라서, 비병진 움직임 모델을 사용한 제1 이웃 영상 블록에 기초하여 도출된 제1 후보 움직임 정보 그룹이 먼저 후보 움직임 정보 리스트에 추가될 수 있고, 그런 다음 제2 후보 움직임 정보 그룹이 후보 움직임 정보 리스트에 추가될 수 있다. 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이는 비교적 짧고, 타깃 움직임 정보가 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹일 확률이 비교적 높다. 따라서, 본 실시예는 비디오 송신의 비트 오버헤드를 감소시키는 데 도움이 된다.
선택적으로, 상기 현재 영상 블록의 후보 움직임 정보 리스트를 결정하는 단계는, 상기 후보 움직임 정보 리스트의 길이가 길이 임계 값보다 작고, 제1 이웃 영상 블록이 병진 움직임 모델을 사용한 제1 이웃 코딩 블록을 더 포함하는 경우, 상기 병진 움직임 모델을 사용한 상기 제1 이웃 영상 블록의 움직임 정보 그룹을 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 추가하는 단계; 및 상기 후보 움직임 정보 리스트의 길이가 여전히 길이 임계 값보다 작으면, 영(zero) 움직임 정보를 상기 후보 움직임 정보 리스트에 추가하는 단계를 더 포함한다.
여기에서의 후보 움직임 정보 리스트의 길이는 후보 움직임 정보 리스트에 이미 추가된 후보 움직임 정보 그룹의 수량으로서 이해될 수 있음을 이해해야 한다. 여기에서의 길이 임계 값은 후보 움직임 정보 리스트 내의 후보 움직임 정보 그룹의 미리 설정된 최대 수량으로 이해될 수 있다.
상기 후보 움직임 정보 리스트의 길이가 상기 제2 후보 움직임 정보 그룹이 상기 후보 움직임 정보 리스트에 추가된 후의 길이 임계 값보다 작고, 상기 제1 이웃 영상 블록이 상기 병진 운동 모델을 사용한 상기 제1 이웃 영상 블록을 더 포함하면, 상기 병진 움직임 모델을 사용한 상기 제1 이웃 영상 블록의 움직임 정보 그룹이 상기 제1 후보 움직임 정보 그룹으로서 상기 후보 움직임 정보 리스트에 추가되고; 상기 후보 움직임 정보 리스트의 길이가 여전히 상기 길이 임계 값보다 작으면, 상기 영 움직임 정보는 상기 후보 움직임 정보 리스트에 추가된다.
선택적으로, 비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 수량이 수량 임계 값 이상인 경우, 제3 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이는 상기 제2 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이보다 짧고, 상기 제3 후보 움직임 정보 그룹은 상기 비병진 움직임 모델 및 상기 비병진 움직임 모델을 사용한 상기 제1 이웃 영상 블록의 움직임 모델을 사용한 상기 제1 이웃 영상 블록상의 둘 이상의 미리 설정된 위치의 움직임 정보에 기초하여 도출되는 제1 후보 움직임 정보 그룹이다.
비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 수량이 수량 임계 값 이상이면, 이는 현재 영상 블록이 비병진 움직임 모델을 사용한 영상 블록일 확률이 비교적 높다는 것을 지시한다. 따라서, 비병진 움직임 모델을 사용한 제1 이웃 영상 블록에 기초하여 도출되는 제1 후보 움직임 정보 그룹(즉, 제3 후보 움직임 정보 그룹)의 색인 정보는 비교적 소량의 비트를 갖는 색인 정보로 설정될 수 있다. 타깃 움직임 정보가 제3 후보 움직임 정보 그룹일 확률이 비교적 높다. 따라서, 본 실시예는 비디오 송신의 비트 오버헤드를 감소시키는 데 도움이 된다.
선택적으로, 상기 후보 움직임 정보 리스트의 길이가 길이 임계 값보다 작고, 상기 제1 이웃 영상 블록이 병진 움직임 모델을 사용한 제1 이웃 영상 블록을 더 포함하는 경우, 상기 후보 움직임 정보 리스트는 상기 병진 움직임 모델을 사용한 상기 제1 이웃 영상 블록의 움직임 정보를 더 포함하고, 상기 병진 움직임 모델을 사용한 상기 제1 이웃 영상 블록의 움직임 정보는 제1 후보 움직임 정보 그룹이고, 상기 병진 움직임 모델을 사용한 상기 제1 이웃 영상 블록의 움직임 정보의 색인 정보의 빈 스트링의 길이는 상기 제2 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이 이상이다.
후보 움직임 정보 리스트의 길이가 제2 후보 움직임 정보 그룹이 후보 움직임 정보 리스트에 추가된 후의 길이 임계 값보다 작고, 제1 이웃 영상 블록이 병진 움직임 운동 모델을 사용한 제1 이웃 영상 블록을 더 포함하면, 병진 움직임 운동 모델을 사용한 제1 이웃 영상 블록의 움직임 정보 그룹이 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 추가되고, 제1 후보 움직임 정보 그룹의 색인 정보는 비교적 대량의 비트를 갖는 색인 정보로 설정되며; 후보 움직임 정보 리스트의 길이가 여전히 길이 임계 값보다 작으면, 영 움직임 정보가 후보 움직임 정보 리스트에 추가된다.
선택적으로, 제1 이웃 영상 블록은 병진 움직임 모델을 사용한 제1 이웃 영상 블록 및 비병진 움직임 모델을 사용한 제1 이웃 영상 블록을 포함하고, 복수의 색인 정보 중의 제1 색인 정보의 비트 수량은 복수의 색인 정보 중의 제2 색인 정보의 비트 수량보다 적으며, 상기 제1 색인 정보는 상기 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹에 대응하고, 상기 제2 색인 정보는 상기 후보 움직임 정보 리스트에 나중에 추가되는 움직임 정보 그룹에 대응한다.
상기 현재 영상 블록의 후보 움직임 정보 리스트를 결정하는 단계는,
상기 비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 수량이 수량 임계 값 이하인 경우, 상기 병진 움직임 모델을 사용한 상기 제1 이웃 영상 블록의 움직임 정보 그룹을 제1 후보 움직임 정보로서 상기 후보 움직임 정보 리스트에 먼저 추가한 다음, 상기 제2 후보 움직임 정보 그룹을 상기 후보 움직임 정보 리스트에 추가하는 단계를 포함한다.
비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 수량이 수량 임계 값 이하이면, 이는 현재 영상 블록이 병진 움직임 모델을 사용한 영상 블록일 확률이 비교적 높다는 것을 지시한다. 따라서, 병진 움직임 모델을 사용한 제1 이웃 영상 블록의 움직임 정보 그룹이 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 먼저 추가될 수 있고, 그런 다음 제2 후보 움직임 정보 그룹은 후보 움직임 정보 리스트에 추가된다. 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이는 비교적 짧고, 타깃 움직임 정보가 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹일 확률은 비교적 높다. 따라서, 본 실시예는 비디오 송신의 비트 수량을 감소시키는 데 도움이 된다.
선택적으로, 상기 현재 영상 블록의 후보 움직임 정보 리스트를 결정하는 단계는, 상기 후보 움직임 정보 리스트의 길이가 길이 임계 값보다 작고, 제1 이웃 영상 블록이 비병진 움직임 모델을 사용한 제1 이웃 영상 블록을 더 포함하는 경우, 상기 비병진 움직임 모델을 사용한 상기 제1 이웃 영상 블록상의 둘 이상의 미리 설정된 움직임 정보 및 상기 비병진 움직임 모델을 사용한 상기 제1 이웃 영상 블록의 상기 움직임 모델에 기초하여, 상기 현재 영상 블록상의 둘 이상의 미리 설정된 위치의 움직임 정보를 추가로 도출하고, 상기 현재 영상 블록상의 둘 이상의 미리 설정된 위치의 움직임 정보를 상기 제1 후보 움직임 정보 그룹으로서 상기 후보 움직임 정보 리스트에 추가하는 단계; 및 상기 후보 움직임 정보 리스트의 길이가 여전히 상기 길이 임계 값보다 작으면, 영 움직임 정보를 상기 후보 움직임 정보 리스트에 추가하는 단계를 더 포함한다.
후보 움직임 정보 리스트의 길이가, 제2 후보 움직임 정보 그룹이 후보 움직임 정보 리스트에 추가된 후의 길이 임계 값보다 작고, 제1 이웃 영상 블록이 비병진 움직임 모델을 사용한 제1 이웃 영상 블록을 더 포함하면, 비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 움직임 정보 그룹에 기초하여 도출되는 제1 후보 움직임 정보 그룹이 후보 움직임 정보 리스트에 추가되고; 후보 움직임 정보 리스트의 길이가 여전히 길이 임계 값보다 작으면, 영 움직임 정보가 후보 움직임 정보 리스트에 추가된다. 이러한 방식으로, 타깃 움직임 정보의 선택 범위가 확장될 수 있다.
선택적으로, 비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 수량이 수량 임계 값 이하인 경우, 병진 움직임 모델을 사용한 제1 이웃 영상 블록의 움직임 정보는 제1 후보 움직임 정보 그룹이고, 상기 병진 움직임 모델을 사용한 제1 이웃 영상 블록의 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이는 상기 제2 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이보다 짧다.
비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 수량이 수량 임계 값 이하이면, 이는 현재 영상 블록이 병진 움직임 모델을 사용한 영상 블록일 확률이 비교적 높다는 것을 지시한다. 따라서, 병진 움직임 모델을 사용한 제1 이웃 영상 블록의 움직임 정보 그룹은 제1 후보 움직임 정보 그룹으로서 사용될 수 있고, 제1 후보 움직임 정보 그룹의 색인 정보는 비교적 소량의 비트를 갖는 색인 정보로 설정된다. 타깃 움직임 정보가 제1 후보 움직임 정보 그룹일 확률이 비교적 높다. 따라서, 본 실시예는 비디오 송신의 비트 오버헤드를 감소시키는 데 도움이 된다.
선택적으로, 상기 후보 움직임 정보 리스트의 길이가 길이 임계 값보다 작고, 제1 이웃 영상 블록이 비병진 움직임 모델을 사용한 제1 이웃 영상 블록을 더 포함하는 경우, 상기 후보 움직임 정보 리스트는 제4 후보 움직임 정보 그룹을 더 포함하며, 상기 제4 후보 움직임 정보 그룹은 상기 비병진 움직임 모델을 사용한 상기 제1 이웃 영상 블록 상의 둘 이상의 미리 설정된 위치의 움직임 정보 및 상기 비병진 움직임 모델을 사용한 상기 제1 이웃 영상 블록의 상기 움직임 모델에 기초하여 도출되는 제1 후보 움직임 정보 그룹이고, 상기 제4 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이는 상기 제2 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이 이상이다.
후보 움직임 정보 리스트의 길이가, 제2 후보 움직임 정보 그룹이 후보 움직임 정보 리스트에 추가된 후의 길이 임계 값보다 작고, 제1 이웃 영상 블록이 비병진 움직임 모델을 사용한 제1 이웃 영상 블록을 더 포함하면, 비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 움직임 정보 그룹에 기초하여 도출되는 움직임 정보 그룹은 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 추가되고, 제1 후보 움직임 정보 그룹의 색인 정보는 비교적 대량의 비트를 갖는 색인 정보로 설정되며; 후보 움직임 정보 리스트의 길이가 여전히 길이 임계 값보다 작으면, 영 움직임 정보가 후보 움직임 정보 리스트에 추가된다. 이러한 방식으로, 타깃 움직임 정보의 선택 범위가 확장될 수 있다.
상기 제1 후보 움직임 정보 그룹과 상기 제2 후보 움직임 정보 그룹은 모두 상기 현재 영상 블록상의 제1 위치 그룹의 움직임 정보이고, 상기 현재 영상 블록상의 둘 이상의 미리 설정된 위치는 제2 위치 그룹이고; 상기 현재 영상 블록의 후보 움직임 정보 리스트를 결정하는 단계는, 상기 제2 위치 그룹이 상기 제1 위치 그룹과 다른 경우, 위치 변환 공식에 따라 그리고 상기 제2 위치에 대응하는 움직임 정보에 기초하여, 상기 제2 후보 움직임 정보 그룹을 도출하는 단계를 포함한다.
제1 후보 움직임 정보 그룹에 대응하는 위치의 수량이 제2 후보 움직임 정보 그룹에 대응하는 위치의 수량과 동일한 경우, 본 실시예에 따라 획득된 후보 움직임 정보 리스트의 모든 움직임 정보 그룹은 동일한 위치의 움직임 정보이다. 이는 움직임 추정의 복잡도를 감소시킨다.
선택적으로, 상기 제1 후보 움직임 정보 그룹은 상기 현재 영상 블록상의 제1 위치 그룹의 움직임 정보이고, 상기 제2 후보 움직임 정보 그룹은 상기 현재 영상 블록상의 제3 위치 그룹의 움직임 정보이며, 상기 비디오 데이터 인터 예측 방법은, 상기 제1 위치 그룹이 상기 제3 위치 그룹과 다른 경우, 위치 변환 공식에 따라 그리고 상기 제2 후보 움직임 정보 그룹에 기초하여 제5 후보 움직임 정보 그룹을 도출하는 단계 - 상기 제5 후보 움직임 정보 그룹에 대응하는 위치는 상기 제1 위치 그룹과 동일함 -를 더 포함한다.
제1 후보 움직임 정보 그룹에 대응하는 위치의 수량이 제2 후보 움직임 정보 그룹에 대응하는 위치의 수량과 동일한 경우, 본 실시예에 따라 획득되는 후보 움직임 정보 리스트의 모든 움직임 정보 그룹은 동일한 위치의 움직임 정보이다. 이는 움직임 추정의 복잡도를 감소시킨다.
제2 측면에 따르면, 본 출원은 제1 측면에서의 임의의 방법을 구현하도록 구성된 여러 기능 유닛을 포함하는 비디오 데이터 인터 예측 장치를 제공한다. 예를 들어, 상기 비디오 데이터 인터 예측 장치는,
현재 영상 블록의 후보 움직임 정보 리스트를 결정하도록 구성된 후보 움직임 정보 리스트 결정 유닛 - 상기 후보 움직임 정보 리스트는 하나 이상의 제1 후보 움직임 정보 그룹, 하나 이상의 제2 후보 움직임 정보 그룹, 및 상기 제1 후보 움직임 정보 그룹과 상기 제2 후보 움직임 정보 그룹을 색인화하는 데 사용되는 복수의 색인 정보를 포함하고, 상기 제1 후보 움직임 정보 그룹은 상기 현재 영상 블록의 제1 이웃 영상 블록상의 미리 설정된 위치의 움직임 정보 및 상기 제1 이웃 영상 블록의 움직임 모델에 기초하여 결정되는 움직임 정보 그룹이고, 상기 제2 후보 움직임 정보 그룹은 상기 현재 영상 블록상의 둘 이상의 미리 설정된 위치에 각각 이웃하는 둘 이상의 샘플 위치의 움직임 정보의 세트이고, 상기 둘 이상의 샘플 위치는 상기 현재 영상 블록의 하나 이상의 제2 이웃 영상 블록에 위치함 -; 및
상기 후보 움직임 정보 리스트로부터 타깃 움직임 정보를 결정하도록 구성된 인터 예측 처리 유닛 - 상기 타깃 움직임 정보는 상기 하나 이상의 제1 후보 움직임 정보 리스트 및 상기 하나 이상의 제2 후보 움직임 정보 그룹에 있고 스크리닝 규칙을 충족시키는 움직임 정보 그룹임 -을 포함하고, 상기 인터 예측 처리 유닛은 추가로, 상기 타깃 움직임 정보에 기초하여 상기 현재 영상 블록에 대해 인터 예측을 수행하도록 구성된다.
이 비디오 데이터 인터 예측 장치는, 예를 들어 비디오 인코딩 장치(비디오 인코더) 또는 비디오 디코딩 장치(비디오 디코더)에 적용될 수 있다.
제3 측면에 따르면, 본 출원은 비디오 인코더를 제공한다. 상기 비디오 인코더는 영상 블록을 인코딩하도록 구성되며, 상기 비디오 인코더는,
제2 측면에 따른 비디오 데이터 인터 예측 장치 - 상기 비디오 데이터 인터 예측 장치는 타깃 움직임 정보에 기초하여 코딩 영상 블록의 예측 블록을 예측하도록 구성되고, 상기 타깃 움직임 정보는 후보 움직임 정보 리스트 내에 있고 스크리닝 규칙, 상기 타깃 움직임 정보가 상기 현재 화상 블록을 인코딩하는 데 사용되는 경우에 레이트 왜곡 비용이 최저인 것을 충족시키는 움직임 정보 그룹임 -;
상기 타깃 움직임 정보의 색인 정보를 비트스트림으로 인코딩하도록 구성된 엔트로피 인코더 - 상기 타깃 움직임 정보의 색인 정보는 상기 후보 움직임 정보 리스트로부터 상기 타깃 움직임 정보를 결정하는 데 사용됨-; 및
상기 예측 블록에 기초하여 상기 코딩 영상 블록을 재구성하도록 구성된 재구성기(reconstructor)를 포함한다.
제4 측면에 따르면, 본 출원은 비디오 디코더를 제공한다. 상기 비디오 디코더는 비트스트림을 디코딩하여 영상 블록을 획득하도록 구성되며, 상기 비디오 디코더는,
상기 비트스트림을 디코딩하여 타깃 움직임 정보의 색인 정보를 획득하도록 구성된 엔트로피 디코더;
제2 측면에 따른 비디오 데이터 인터 예측 장치 - 상기 비디오 데이터 인터 예측 장치는 타깃 움직임 정보에 기초하여 코딩 영상 블록의 예측 블록을 예측하도록 구성되고, 상기 타깃 움직임 정보는 후보 움직임 정보 리스트 내의 상기 색인 정보에 의해 지시되는 움직임 정보 그룹임 -; 및
상기 예측 블록에 기초하여 상기 코딩 영상 블록을 재구성하도록 구성된 재구성기를 포함한다.
제5 측면에 따르면, 본 출원은 비디오 데이터 인코딩 기기를 제공한다. 상기 비디오 데이터 인코딩 기기는,
비디오 데이터를 저장하도록 구성된 메모리 - 상기 비디오 데이터는 하나 이상의 영상 블록을 포함함 -; 및
비디오 인코더를 포함하고, 상기 비디오 인코더는, 현재 영상 블록의 후보 움직임 정보 리스트를 결정하고 - 상기 후보 움직임 정보 리스트는 하나 이상의 제1 후보 움직임 정보 그룹, 하나 이상의 제2 후보 움직임 정보 그룹, 및 상기 제1 후보 움직임 정보 그룹과 상기 제2 후보 움직임 정보 그룹을 색인화하는 데 사용되는 복수의 색인 정보를 포함하고, 상기 제1 후보 움직임 정보 그룹은 상기 현재 영상 블록의 제1 이웃 영상 블록상의 미리 설정된 위치의 움직임 정보 및 상기 제1 이웃 영상 블록의 움직임 모델에 기초하여 결정되는 움직임 정보 그룹이고, 상기 제2 후보 움직임 정보 그룹은 상기 현재 영상 블록상의 둘 이상의 미리 설정된 위치에 각각 이웃하는 둘 이상의 샘플 위치의 움직임 정보의 세트이고, 상기 둘 이상의 샘플 위치는 상기 현재 영상 블록의 하나 이상의 제2 이웃 영상 블록에 위치함 -; 상기 후보 움직임 정보 리스트로부터 타깃 움직임 정보를 결정하고 - 상기 타깃 움직임 정보는 상기 하나 이상의 제1 후보 움직임 정보 리스트 및 상기 하나 이상의 제2 후보 움직임 정보 그룹에 있고 스크리닝 규칙을 충족시키는 움직임 정보 그룹임 -; 상기 타깃 움직임 정보에 기초하여 상기 현재 영상 블록에 대해 인터 예측을 수행하고; 상기 타깃 움직임 정보의 색인 정보를 포함한 비트스트림을 전송하도록 구성된다.
제6 측면에 따르면, 본 출원은 비디오 데이터 디코딩 기기를 제공한다. 상기 비디오 데이터 디코딩 기기는,
비트스트림 형식(bitstream-form)의 비디오 데이터를 저장하도록 구성된 메모리; 및
비디오 디코더를 포함하고, 상기 비디오 디코더는, 상기 비트스트림을 디코딩하여 타깃 움직임 정보의 색인 정보를 획득하고 - 상기 색인 정보는 상기 타깃 움직임 정보를 결정하는 데 사용됨 -; 현재 영상 블록의 후보 움직임 정보 리스트를 결정하고 - 상기 후보 움직임 정보 리스트는 하나 이상의 제1 후보 움직임 정보 그룹, 하나 이상의 제2 후보 움직임 정보 그룹, 및 상기 제1 후보 움직임 정보 그룹과 상기 제2 후보 움직임 정보 그룹을 색인화하는 데 사용되는 복수의 색인 정보를 포함하고, 상기 제1 후보 움직임 정보 그룹은 상기 현재 영상 블록의 제1 이웃 영상 블록상의 미리 설정된 위치의 움직임 정보 및 상기 제1 이웃 영상 블록의 움직임 모델에 기초하여 결정되는 움직임 정보 그룹이고, 상기 제2 후보 움직임 정보 그룹은 상기 현재 영상 블록상의 둘 이상의 미리 설정된 위치에 각각 이웃하는 둘 이상의 샘플 위치의 움직임 정보의 세트이고, 상기 둘 이상의 샘플 위치는 상기 현재 영상 블록의 하나 이상의 제2 이웃 영상 블록에 위치함 -; 상기 비트스트림을 디코딩하여 획득되는 색인 정보에 기초하여 상기 후보 움직임 정보 리스트로부터 상기 타깃 움직임 정보를 결정하고; 상기 타깃 움직임 정보에 기초하여 상기 현재 영상 블록에 대해 인터 예측을 수행하도록 구성된다.
제7 측면에 따르면, 본 출원은 서로 연결된 비휘발성 메모리 및 프로세서를 포함하는 인코딩 기기를 제공한다. 상기 프로세서는 상기 메모리에 저장된 프로그램 코드를 호출하여, 제1 측면의 임의의 방법에서의 일부 단계 또는 모든 단계를 수행한다.
제8 측면에 따르면, 본 출원은 서로 연결된 비휘발성 메모리 및 프로세서를 포함하는 디코딩 기기를 제공한다. 상기 프로세서는 상기 메모리에 저장된 프로그램 코드를 호출하여, 제1 측면의 임의의 방법에서의 일부 단계 또는 모든 단계를 수행한다.
제9 측면에 따르면, 본 출원은 컴퓨터로 판독 가능한 저장 매체를 제공한다. 상기 컴퓨터로 판독 가능한 저장 매체는 프로그램 코드를 저장하고, 상기 프로그램 코드는 제1 측면의 임의의 방법에서의 일부 단계 또는 모든 단계를 수행하는 데 사용되는 명령어를 포함한다.
제10 측면에 따르면, 본 출원의 일 실시예는 컴퓨터 프로그램 제품을 제공한다. 상기 컴퓨터 프로그램 제품이 컴퓨터에서 실행될 때, 상기 컴퓨터는 제1 측면의 임의의 방법에서의 일부 단계 또는 모든 단계를 수행할 수 있게 된다.
본 출원의 제2 측면 내지 제10 측면의 기술적 방안은 제1 측면의 기술적 방안과 일치한다는 것을 이해해야 한다. 여러 측면 및 대응하는 실현 가능한 구현예에 의해 달성되는 유익한 효과는 유사하며, 세부 사항은 다시 설명되지 않는다.
도 1은 본 출원에 적용 가능한 비디오 인코딩 방법의 개략 흐름도이다.
도 2는 본 출원에 적용 가능한 비디오 디코딩 방법의 개략 흐름도이다.
도 3은 본 출원에 따라 움직임 모델 기반 아핀 모델 병합 모드에 기초하여 예측을 수행하는 방법의 개략도이다.
도 4는 본 출원에 따른 인터 예측 방법의 개략 흐름도이다.
도 5는 본 출원에 따라 조합된 제어점 기반(combined control point-based) 움직임 정보 그룹을 구성하는 방법의 개략도이다.
도 6은 본 출원에 따른 후보 움직임 정보 리스트를 구성하는 방법의 개략 흐름도이다.
도 7은 본 출원에 따른 비디오 인코딩 및 디코딩 시스템의 개략 블록도이다.
도 8은 본 출원에 따른 비디오 인코더의 개략 블록도이다.
도 9는 본 출원에 따른 비디오 디코더의 개략 블록도이다.
도 10은 본 출원에 따른 비디오 데이터 인터 예측 장치의 개략 블록도이다.
도 11은 본 출원에 따른 인코딩 기기치 또는 디코딩 기기의 개략 블록도이다.
본 출원을 쉽게 이해할 수 있도록, 본 출원에서 제공하는 기술적 방안의 가능한 기술 특징을 먼저 설명한다.
도 1은 본 출원에 적용 가능한 비디오 인코딩 방법의 개략 흐름도이다.
비디오 인코딩 방법은 인트라 예측(intra prediction), 인터 예측(inter prediction), 변환(transform), 양자화(quantization), 엔트로피 코딩(entropy coding) 및 루프 내 필터링(in-loop filtering)과 같은 단계를 포함한다. 영상이 코딩 블록으로 분할된 후, 인트라 예측 또는 인터 예측이 수행되고, 잔차(residual)가 획득된 후에 변환 및 양자화가 수행되고, 마지막으로 엔트로피 코딩이 수행되고 비트스트림이 출력된다. 여기서, 코딩 블록은 MxN 크기(M은 N과 같거나 N과 같지 않을 수 있음)이고 샘플을 포함하는 배열(array)이다. 또한, 각 샘플 위치의 샘플 값이 알려져 있다. 도 1에서, P는 예측 값을 나타내고, Dn은 잔차를 나타내고, uFn'은 재구성 값(필터링 전)을 나타내고, Dn'은 잔차를 나타낸다.
인트라 예측은 현재 영상의 재구성된 영역에서 샘플의 샘플 값을 사용하여 현재 코딩 블록에서 샘플의 샘플 값을 예측하는 것을 의미한다.
인터 예측은 현재 영상에서 현재 코딩 블록에 대한 재구성된 영상에서 매칭되는 참조 블록을 검색하고, 참조 블록 내의 샘플의 샘플 값을 현재 코딩 블록 내의 샘플의 샘플 값의 예측 정보 또는 예측 값(이하에서 정보 및 값은 구별되지 않음)로서 사용하는 것을 의미한다. 이 프로세스는 움직임 추정이다. 또한, 현재 코딩 블록의 움직임 정보 그룹이 송신된다.
현재 코딩 블록의 움직임 정보 그룹은 예측 방향 지시 정보(보통 순방향 예측, 역방향 예측 또는 양방향 예측), 참조 블록을 가리키는 하나 또는 두 개의 움직임 벡터, 및 참조 블록이 위치하는 영상의 지시 정보(보통 참조 색인으로 표기됨)를 포함함에 유의해야 한다.
순방향 예측은 순방향 참조 영상 세트로부터 하나 이상의 참조 영상을 선택하여, 현재 코딩 블록에 대한 하나 이상의 참조 블록을 획득하는 것을 의미한다. 역방향 예측은 역방향 참조 영상 세트로부터 하나 이상의 참조 영상을 선택하여, 현재 코딩 블록에 대한 하나 이상의 참조 블록을 획득하는 것을 의미한다.
양방향 예측은 순방향 참조 영상 세트 및 역방향 참조 영상 세트 각각으로부터 하나 이상의 참조 영상을 선택하여, 하나 이상의 참조 블록을 개별적으로 획득하는 것을 의미한다. 양방향 예측 방법이 사용되는 경우, 현재 코딩 블록은 둘 이상의 참조 블록을 갖는다. 각각의 참조 블록은 움직임 벡터와 참조 색인을 사용하여 지시되어야 한다. 그리고 현재 블록에서 샘플의 샘플 값의 예측 값은 두 개의 참조 블록에서의 샘플의 샘플 값에 기초하여 결정된다.
움직임 추정 프로세스에서, 참조 영상은 현재 코딩 블록에 대해 복수의 참조 블록의 검색을 필요로 하며, 예측에 최종적으로 사용되는 특정 참조 블록 또는 특정 참조 블록들은 레이트 왜곡 최적화(rate-distortion optimization, RDO)를 통해 또는 다른 방법을 사용하여 결정된다.
인트라 예측 방법 또는 인터 예측 방법을 사용하여 예측 정보를 획득한 후, 현재 코딩 블록 내의 샘플의 샘플 값 및 대응하는 예측 정보에 기초하여, 잔차 정보가 획득될 수 있다. 예를 들어, 잔차 정보는 참조 블록의 샘플의 샘플 값에서 현재 코딩 블록의 샘플의 샘플 값을 직접 감산함으로써 획득될 수 있다. 대안으로, 잔차 정보는 다른 가능한 방식으로 획득될 수 있다. 그런 다음, 이산 코사인 변환(Discrete Cosine Transformation, DCT) 등의 방법으로 잔차 정보를 변환하고, 변환된 잔차 정보에 대해 양자화, 엔트로피 코딩과 같은 작업을 수행하여, 최종적으로 비트스트림을 획득하므로, 디코더 측은 비트스트림을 디코딩한다. 인코더 측에서의 처리에서, 재구성된 신호를 획득하기 위해, 예측 신호 및 재구성된 잔차 신호에 대해 필터링 작업이 추가로 수행될 수 있고, 재구성된 신호는 후속 인코딩을위한 참조 신호로서 사용된다.
비트스트림에 대해 디코더 측에 의해 수행되는 처리는 인코더 측에 의해 영상을 인코딩하는 것의 역 프로세스와 유사하다. 도 2는 본 출원에 적용 가능한 비트스트림 디코딩 방법의 개략 흐름도이다.
도 2에 도시된 바와 같이, 엔트로피 디코딩 및 역 양자화와 같은 작업이 먼저 수행되어 변환을 통해 잔차 정보를 획득하고, 디코더 측은 비트스트림을 파싱하여 현재 코딩 블록의 예측 모드를 획득한다. 예측 모드가 인트라 예측이면, 현재 코딩 블록 주변의 재구성된 영역에서의 샘플의 샘플 값을 사용하여 예측 정보가 구성된다. 예측 모드가 인터 예측이면, 현재 코딩 블록의 움직임 정보 그룹이 획득되어야 하고, 움직임 정보 그룹을 사용하여 재구성된 영상에서 참조 블록이 결정되고, 참조 블록 내의 샘플의 샘플 값을 예측 정보로서 사용한다. 재구성된 부분 영상을 획득하기 위해, 현재 코딩 블록의 재구성된 정보(재구성된 블록이라고도 함)는 예측 정보(예측 블록이라고도 함) 및 잔차 정보(잔차 블록이라고도 함)에 대해 필터링 작업을 수행함으로써 획득된다.
일부 가능한 구현예에서, 현재 코딩 블록의 움직임 정보 그룹은 비병진 움직임 모델 기반 예측을 통해 획득될 수 있다.
비병진 움직임 모델 기반 예측의 일부 구현예에서, 인코더 측 및 디코더 측은 동일한 움직임 모델을 사용하여 현재 코딩 블록에서 각각의 움직임 보상 서브유닛의 움직임 정보를 도출하고,
움직임 보상 서브유닛의 움직임 정보에 기초한 움직임 보상을 수행하여
예측 블록을 획득한다. 이는 예측 효율을 향상시킨다. 일반적으로 사용되는 움직임 모델로는 6-파라미터 아핀 모델과 4 파라미터 아핀 모델을 포함한다.
4-파라미터 아핀 모델은 식 (1)로 표시된다:
4-파라미터 아핀 모델은 현재 코딩 블록의 좌측 상단 코너에서 샘플에 대한 두 개의 샘플의 움직임 벡터 및 두 개의 샘플의 좌표로 표현될 수 있다. 움직임 모델 파라미터를 나타내는 데 사용되는 샘플을 제어점이라고 한다.
좌측 상단 코너(0, 0) 및 우측 상단 코너(W, 0)의 샘플이 제어점으로 사용되면,
현재 코딩 블록의 좌측 상단 코너 및 우측 상단 코너에서 제어점의 움직임 벡터(vx0, vy0) 및 (vx1, vy1)가 먼저 결정된다. 그런 다음, 현재의 코딩 블록에서 각각의 움직임 보상 서브유닛의 움직임 정보가 식 (2)에 따라 도출된다. (x, y)는 현재 코딩 블록의 좌측 상단 코너에서 샘플에 대한 움직임 보상 서브유닛의 좌표를 나타내고, W는 현재 코딩 블록의 폭을 나타낸다.
6-파라미터 아핀 모델은 식 (3)으로 표시된다:
6-파라미터 아핀 모델은 세 개의 제어점(미리 설정된 위치라고도 함)의 움직임 벡터 및 현재 코딩 블록의 좌측 상단 코너에서 샘플에 대한 세 개의 제어점의 좌표로 표현될 수 있다.
좌측 상단 코너(0, 0), 우측 상단 코너(W, 0) 및 좌측 하단 코너(0, H)의 샘플이 제어점으로 사용되면, 현재 코딩 블록의 좌측 상단 코너, 우측 상단 코너 및 좌측 하단 코너의 제어점의 움직임 벡터(vx0, vy0), (vx1, vy1) 및 (vx2, vy2)가 먼저 결정된다. 그런 다음, 현재 코딩 블록에서 각각의 움직임 보상 서브유닛의 움직임 정보가 식 (4)에 따라 도출된다. (x, y)는 현재 코딩 블록의 좌측 상단 코너의 샘플에 대한 움직임 보상 서브유닛의 좌표를 나타내고, W 및 H는 현재 코딩 블록의 폭 및 높이를 나타낸다. 본 출원에서, 폭 및 높이의 정의에 대해서는 영상 처리 분야 또는 비디오 처리 분야의 표준에서 관련 표준을 참조한다는 점에 유의해야 한다. 예를 들어, 폭은 수평 방향에서의 현재 코딩 블록의 샘플 수량을 가리키고, 높이는 수직 방향에서의 현재 코딩 블록의 샘플 수량을 가리킨다.
8-파라미터 이중 선형 모델(8-parameter bilinear model)은 식 (5)에 표시된다.
8-파라미터 이중 선형 모델은
네 개의 제어점의 움직임 벡터 및 현재 코딩 블록의 좌측 상단 코너의 샘플에 대한 네 개의 제어점의 좌표로 표현될 수 있다. 좌측 상단 코너(0, 0), 우측 상단 코너(W, 0), 좌측 하단 코너(0, H) 및 우측 하단 코너(W, H)의 샘플이 제어점으로서 사용되면, 현재 코딩 블록의 좌측 상단 코너, 우측 상단 코너, 좌측 하단 코너 및 우측 하단 코너의 움직임 벡터 (vx0, vy0), (vx1, vy1), (vx2, vy2) 및 (vx3, vy3) 가 먼저 결정된다. 그 후, 현재 코딩 블록에서 각각의 움직임 보상 서브유닛의 움직임 정보가 식 (6)에 따라 도출된다. (x, y)는 현재 코딩 블록의 좌측 상단 코너의 샘플에 대한 움직임 보상 서브유닛의 좌표를 나타내고, W 및 H는 현재 코딩 블록의 폭 및 높이를 나타낸다.
비병진 움직임 모델을 사용하여 예측되는 코딩 블록을 비병진 코딩 블록이라고한다. 아핀 코딩 블록은 비병진 코딩 블록이다. 비병진 코딩 블록의 제어점의 움직임 정보는 아핀 모델 병합(affine model merge, AMM) 모드를 사용하여 획득할 수 있다. 두 가지 아핀 모델 병합 모드: 움직임 모델 기반 AMM 모드와 제어점 기반 복합 병합(complex merge) 모드가 있다.
도 3은 본 출원에 따른 움직임 모델 기반 AMM 모드에 기초하여 예측을 수행하는 방법을 도시한다.
현재 코딩 블록( "현재 블록"이라고도 할 수 있음)의 제어점의 움직임 벡터가 인코딩되는 경우, 코딩 블록은 미리 설정된 정책에 따라 이웃 코딩 블록( "이웃 블록", 예를 들어 "공간적으로 이웃한 블록"이라고도 할 수 있음)으로부터 선택되고, 현재 블록의 코너 위치(예: 좌측 상단 코너 및 우측 상단 코너)의 움직임 정보는 코딩 블록의 코너 위치(예: 좌측 상단 코너 및 우측 상단 코너)의 움직임 정보를 사용하여 도출되므로, 현재 블록의 움직임 모델은 코딩 블록의 움직임 모델과 동일하다. 움직임 모델이 동일하다는 것은 현재 블록의 움직임 모델의 파라미터 값 및 파라미터의 수량이 동일한 좌표계에서 이웃 블록의 그 것들과 동일하다는 것을 의미한다는 점에 유의해야 한다. 예를 들어, 현재 블록 및 이웃 블록은 각각 4-파라미터 아핀 모델을 사용하거나, 현재 블록 및 이웃 블록은 각각 6-파라미터 아핀 모델을 사용하거나, 또는 현재 블록 및 이웃 블록은 각각 8-파라미터 이중 선형 모델을 사용한다.
도 3에 도시된 바와 같이, A, B, C, D 및 E는 현재 블록의 이웃 코딩 블록(즉, 공간적으로 이웃한 블록)상의 샘플 위치(간단히 "위치"라고도 할 수 있음)이다. 순회(Traversing)는 AA-B-C-D-E 순서로 수행되어 아핀 코딩 블록을 찾고 아핀 코딩 블록의 미리 설정된 위치(제어점이라고 할 수 있으며, 예를 들어 아핀 코딩 블록의 좌측 상단 코너 및 우측 상단 코너)의 움직임 정보를 획득하여, 현재 블록상의 대응하는 미리 설정된 위치(제어점이라고도 할 수 있으며, 예를 들어, 현재 블록의 좌측 상단 코너 및 우측 상단 코너)의 움직임 정보를 도출한다. 여기에서의 예에서 A, B, C, D 및 E는 각각 또한 샘플로서 이해될 수 있으며, 예를 들어 둘 이상의 샘플을 포함하는 샘플 또는 샘플 블록일 수 있음에 유의해야 한다. 샘플이 샘플 블록이면, 샘플 블록의 크기는, 예를 들어 2x2, 1x2, 4x2, 4x4 또는 기타 크기이다.
이하에서는 A를 예로 사용하여 도출 프로세스를 설명한다. 다른 경우는 유추에 의해 추론된다.
샘플 위치 A(예: 왼쪽 샘플 위치 A)가 위치한 코딩 블록이 아핀 코딩 블록이면, 아핀 코딩 블록의 좌측 상단 코너(x2, y2)의 움직임 벡터(vx2, vy2) 및 우측 상단 코너(x3, y3)의 움직임 벡터(vx3, vy3)가 획득된다. 현재 코딩 블록의 좌측 상단 코너(x0, y0)의 움직임 벡터(vx0, vy0)는 식 (7)을 사용하여 계산되고, 현재 코딩 브록의 우측 상단 코너(x1, y1)의 움직임 벡터(vx1, vy1)는 식 (8)을 사용하여 계산된다.
제어점의 움직임 정보를 획득하는 다른 방법이 또한 본 출원에 적용될 수 있음에 유의해야 한다. 간결하도록, 여기에서는 세부 사항을 설명하지 않는다.
전술한 내용으로부터, 현재 블록이 이웃 블록의 움직임 모델을 계승하기 때문에, 움직임 모델 기반 AMM 모드는 제어점 기반 복합 병합 모드보다 코딩 효율이 높다는 것을 알 수 있다. 그러나 이웃 블록의 움직임 정보 그룹이 이용 불가능한 경우, 인코더 측은 움직임 추정 방법을 재선택하고, 재선택된 움직임 추정 방법을 지시하기 위한 지시 정보를 디코더 측에 전송해야 한다. 결과적으로, 비디오 송신의 비트 오버헤드가 증가된다. 또한, 이웃 블록의 움직임 정보 그룹이 이용 가능하더라도, 제어점 기반의 복합 병합 모드를 사용함으로써 선택적인 움직임 정보 그룹이 추가될 수 있다.
본 출원은 비디오 송신의 비트 오버헤드를 줄이고 움직임 모델 기반 AMM 모드의 적용 범위를 확장하기 위한 오디오 데이터 인터 예측 방법을 제공한다.
도 4에 도시된 바와 같이, 본 출원의 이 실시예에서의 방법(400)은 다음 단계들을 포함할 수 있다.
S410: 현재 영상 블록의 후보 움직임 정보 리스트를 결정하며, 여기서 후보 움직임 정보 리스트는 하나 이상의 제1 후보 움직임 정보 그룹, 하나 이상의 제2 후보 움직임 정보 그룹, 및 제1 후보 움직임 정보 그룹과 제2 후보 움직임 정보 그룹을 색인화하는 데 사용되는 복수의 색인 정보를 포함하고, 복수의 색인 정보는 복수의 후보 움직임 정보 그룹에 일대일 대응하고, 제1 후보 움직임 정보 그룹은 현재 영상 블록의 제1 이웃 영상 블록상의 미리 설정된 위치의 움직임 정보 및 제1 이웃 영상 블록의 움직임 모델에 기초하여 결정되는 움직임 정보 그룹이고, 제2 후보 움직임 정보 그룹은 현재 영상 블록상의 둘 이상의 미리 설정된 위치에 각각 이웃하는 둘 이상의 샘플 위치의 움직임 정보의 세트이고, 둘 이상의 샘플 위치는 현재 영상 블록의 하나 이상의 제2 이웃 영상 블록에 위치한다.
S420: 후보 움직임 정보 리스트로부터 타깃 움직임 정보를 결정한다.
S430: 타깃 움직임 정보에 기초하여 현재 영상 블록에 대해 인터 예측을 수행한다.
이 방법(400)은 인코더 측 또는 디코더 측에 의해 수행될 수 있다. 인코더 측 또는 디코더 측은 하드웨어 기기일 수 있거나; 범용 하드웨어 기기에서 실행되는 인코딩 소프트웨어 또는 디코딩 소프트웨어일 수 있거나; 또는 인코딩 기능을 갖는 인코딩 소프트웨어와 하드웨어 기기의 세트 또는 디코딩 기능을 갖는 디코딩 소프트웨어와 하드웨어 기기의 세트일 수 있다. 이 방법(400)이 인코더 측에 의해 수행되면, S420에서의 타깃 움직임 정보는 하나 이상의 제1 후보 움직임 정보 그룹 및 하나 이상의 제2 후보 움직임 정보 그룹에 있고 스크리닝 규칙을 충족시키는 움직임 정보 그룹이라는 것을 이해해야 한다.
예를 들어, 타깃 움직임 정보는 후보 움직임 정보 리스트 내의 움직임 정보 그룹이며, 여기서 움직임 정보 그룹이 현재 영상 블록을 인코딩하는 데 사용되는 경우에 레이트 왜곡 비용이 가장 낮다. 이 방법(400)이 디코더 측에 의해 수행되면, S420에서의 타깃 움직임 정보는, 후보 움직임 정보 리스트에 있고 디코딩된 색인 정보에 의해 지시되는 움직임 정보 그룹이다.
이 방법(400)이 인코더 측에 의해 수행되는 경우, 영상 블록은 코딩 블록으로서 이해되어야 한다. 예를 들어, 현재 영상 블록은 현재 코딩 블록이고, 제1 이웃 영상 블록은 제1 이웃 코딩 블록이고, 제2 이웃 영상 블록은 제2 이웃 코딩 블록이다. 이 방법(400)이 디코더 측에 의해 수행되는 경우, 영상 블록은 디코딩 블록으로서 이해되어야 한다. 예를 들어, 현재 영상 블록은 현재 디코딩 블록이고, 제1 이웃 영상 블록은 제1 이웃 디코딩 블록이고, 제2 이웃 영상 블록은 제2 이웃 디코딩 블록이다. 간결하게 하기 위해, 이하에서는 주로 인코더 측이 이 방법(400)을 수행하는 예를 사용하여 본 출원에서 제공되는 인터 예측 방법을 설명한다. 디코더 측에 의해 수행되는 인터 예측 방법은 디코더 측의 처리 방식이 인코더 측의 처리 방식과 다른 경우에만 설명된다. 달리 명시되지 않는 한, 디코더 측에 의해 수행되는 작업은 인코더 측에 의해 수행되는 작업과 유사하다.
본 출원에서는 인코더 측이 후보 움직임 정보 리스트를 결정하는 방식을 한정하지 않는다. 예를 들어, 제1 후보 움직임 정보 그룹은 도 3에 도시된 방법을 사용하여 획득될 수 있거나, 또는 제1 후보 움직임 정보 그룹은 다른 방법을 사용하여 획득될 수 있고, 제2 후보 움직임 정보 그룹은 다음의 방법을 사용하여 획득될 수 있다. 제1 후보 움직임 정보 그룹 및 제2 후보 움직임 정보 그룹이 획득된 후, 제1 후보 움직임 정보 그룹 및 제2 후보 움직임 정보 그룹은 후보 움직임 정보 리스트에 채워진다.
제1 이웃 코딩 블록은 제2 이웃 코딩 블록과 동일 또는 상이할 수 있다. 도 3에 도시된 바와 같이, 제1 이웃 코딩 블록은 위치 A가 위치한 코딩 블록일 수 있고, 제2 이웃 코딩 블록은 위치 D가 위치한 코딩 블록(도 3에는 도시되지 않음)일 수 있다. 이 경우, 제1 이웃 코딩 블록은 제2 이웃 코딩 블록과 상이하다. 제2 이웃 코딩 블록은 대안으로 위치 A가 위치한 코딩 블록일 수 있다. 이 경우에, 제1 이웃 코딩 블록은 제2 이웃 코딩 블록과 동일하다.
제1 이웃 코딩 블록 및 제2 이웃 코딩 블록은 현재 블록의 공간적으로 이웃한 코딩 블록일 수 있거나, 현재 블록의 시간적으로 이웃한 코딩 블록일 수 있다. 본 출원에서는 이를 한정하지 않는다. 예를 들어, 공간적으로 이웃한 코딩 블록은도 3에 도시된 샘플 위치 A, B, C, D 및 E가 있는 코딩 블록을 포함하지만 이에 한정되는 것은 아니다.
제1 이웃 코딩 블록은 병진 움직임 모델을 사용하는 코딩 블록일 수 있거나, 비병진 움직임 모델을 사용하는 코딩 블록일 수 있다. 따라서, 제1 이웃 코딩 블록이 병진 움직임 모델을 사용하는 코딩 블록인 경우, 제1 후보 움직임 정보 그룹은 병진 움직임 정보 그룹이거나; 또는 제1 이웃 코딩 블록이 비병진 움직임 모델을 사용하는 코딩 블록인 경우, 제1 후보 움직임 정보 그룹은 비병진 움직임 정보 그룹이다. 병진 움직임 정보 그룹은 하나의 움직임 벡터 또는 두 개의 움직임 벡터를 포함하고, 비병진 움직임 정보 그룹은 둘 이상의 움직임 벡터를 포함한다. 따라서, 제1 후보 움직임 정보 그룹은 하나의 움직임 벡터만을 포함할 수 있거나, 복수의 움직임 벡터를 포함할 수 있다.
이에 상응하여, 제1 이웃 코딩 블록이 병진 움직임 모델을 사용한 코딩 블록 인 경우, 제1 이웃 코딩 블록상의 미리 설정된 위치는, 예를 들어, 도 3에 도시된 위치 A이다. 제1 이웃 코딩 블록이 비병진 움직임 모델을 사용한 코딩 블록인 경우, 제1 이웃 코딩 블록의 미리 설정된 위치는, 예를 들어, 도 3에서 좌측 상단 코너(x2, y2) 및 우측 상단 코너(x3, y3)일 수 있다.
제2 후보 움직임 정보 그룹에 대해 설명하면, 현재 코딩 블록상의 둘 이상의 미리 설정된 위치는, 예를 들어, 이하의 도 5에서의 획득된 CP1 및 CP2일 수 있으며,
현재 코딩 블록상의 둘 이상의 미리 설정된 위치에 이웃한 둘 이상의 샘플 위치는, 예를 들어, B2 및 B1일 수 있다. B2 및 B1은 동일한 이웃 코딩 블록(즉, 제2 이웃 코딩 블록)에 속할 수 있거나, 상이한 이웃 코딩 블록에 속할 수 있다.
본 출원에서, 움직임 정보 그룹은 움직임 벡터를 포함하지만 이에 한정되지는 것은 아니다. 예를 들어, 움직임 정보 그룹은 예측 방향 지시 정보(보통 순방향 예측, 역방향 예측 또는 양방향 예측), 하나 또는 둘 이상의 움직임 벡터, 및 참조 색인(reference index)를 포함한다. 움직임 정보 그룹이 병진 움직임 정보 그룹이면, 움직임 정보 그룹은 하나 또는 두 개의 움직임 벡터를 포함할 수 있으며, 예를 들어, 순방향 예측 방향의 움직임 벡터 및/또는 역방향 예측 방향의 움직임 벡터를 포함할 수 있음을 이해해야 한다. 다시 말해, 움직임 정보 그룹은 하나의 움직임 벡터를 포함할 수 있거나, 상이한 예측 방향으로 두 개의 움직임 벡터를 포함할 수 있다. 움직임 정보 그룹이 비병진 움직임 정보 그룹이면, 움직임 정보 그룹은 복수의 움직임 벡터의 조합, 예를 들어 두 개의 움직임 벡터의 조합을 포함하며, 이는 구체적으로 두 개의 미리 설정된 위치(제어점이라고도 함)의 움직임 벡터의 조합일 수 있다. 디코더 측은 두 개의 제어점의 위치 좌표 및 두 개의 제어점의 움직임 벡터의 조합을 사용하여 현재 영상 블록에서 임의의 위치 좌표(x, y)를 갖는 샘플의 움직임 벡터를 계산할 수 있음을 이해해야 한다. 이는 현재 영상 블록에서 각각의 움직임 보상 서브유닛의 움직임 벡터를 계산하는 것이라고도 할 수도 있다. 움직임 벡터는 대응하는 참조 프레임에서 참조 블록을 가리킨다.
후보 움직임 정보 리스트를 결정한 후, 인코더 측은 스크리닝 규칙에 따라 스크리닝을 통해 후보 움직임 정보 리스트로부터 타깃 움직임 정보를 획득한다. 타깃 움직임 정보는 또한 최적 움직임 정보 그룹이라고도 할 수 있다. 예를 들어, 인코더 측은 후보 움직임 정보 리스트 내의 각각의 움직임 정보 그룹을 사용하여 움직임 보상 예측을 수행할 수 있으며, 그 후, 레이트 왜곡 최적화(rate distortion 최적화, RDO) 기준에 따라 스크리닝을 통해 최적 움직임 정보 그룹을 획득할 수 있다. 예를 들어, 최적의 움직임 정보 그룹이 현재 코딩 블록을 인코딩하는 데 사용되는 경우에 레이트 왜곡 비용이 최저이다. 그 후, 최적 움직임 정보 그룹의 색인가 비트스트림에 기록되고, 비트스트림이 전송된다. 전술한 RDO 기준이 스크리닝 규칙이다.
전술한 예는 단지 설명을 위한 예일 뿐이며, 최적 움직임 정보 그룹을 결정하는 다른 방식도 적용 가능하다. 이 실시예에서 제공되는 인코딩 방법에 따르면, 인코더 측은 두 가지 유형의 후보 움직임 정보 그룹을 포함하는 후보 움직임 정보 리스트를 구성한다. 여기에서의 두 가지 유형의 후보 움직임 정보 그룹은 단지 후보 움직임 정보 그룹의 상이한 획득(도출) 방식을 반영하려는 것으로 이해되어야 한다. 두 가지 유형의 후보 움직임 정보 그룹 중 하나가 현재 코딩 블록에 적용 불가능하면, 인코더 측은 후보 움직임 정보 리스트에 포함된 다른 유형의 후보 움직임 정보 그룹으로부터 타깃 움직임 정보를 선택하고, 타깃 움직임 정보의 색인 정보를 비트스트림을 사용하여 디코더 측에 전송할 수 있다.
후보 움직임 정보 리스트 내의 후보 움직임 정보 그룹은 유일한 색인 정보를 갖기 때문에, 인코더 측은 인코더 측에 의해 사용되는 후보 움직임 정보 리스트 구성 방법을 지시하는 지시 정보를 비트스트림으로 전송할 필요가 없다. 이는 비디오 송신의 비트 오버헤드를 줄이다. 또한, 현재 블록의 이웃 블록이 제어점 기반 복합 병합 모드를 사용하는 코딩 블록이면, 움직임 모델 기반 AMM 모드에 기초하는 움직임 추정이 이웃 블록의 움직임 정보 그룹을 사용하여 현재 블록에 대해 여전히 수행될 수 있다. 이는 코딩 효율을 향상시킨다.
이하에서는 본 출원에서 제공되는 인터 예측 방법의 실시예를 더 설명한다.
[실시예 1]
단계 1: 후보 움직임 정보 리스트를 구성한다.
단계 1.1: 움직임 모델 기반 움직임 정보를 후보 움직임 정보 리스트에 추가한다.
현재 블록 주위의 이웃 블록은 모든 비병진 코딩 블록을 찾기 위해, 도 3에 도시된 방법에 따라 순회될 수 있다. 비병진 코딩 블록의 움직임 모델이 현재 블록의 움직임 모델과 동일하면, 각각의 비병진 코딩 블록의 제어점의 움직임 정보가 획득된 다음, 현재 블록의 대응하는 제어점의 움직임 정보(즉, 제1 움직임 정보 그룹)가 도출된다.
단계 1.2: 조합된 제어점 기반 움직임 정보를 후보 움직임 정보 리스트에 추가한다.
단계 1.1에서 획득된 후보 움직임 정보 리스트의 길이가 미리 설정된 리스트 길이 N보다 작으면, 조합된 제어점 기반 움직임 정보(즉, 제2 움직임 정보 그룹)가 구성되고, 움직임 정보는 후보 움직임 정보 리스트에 추가된다.
조합된 제어점 기반 움직임 정보를 구성하는 방법은 다음과 같다.
먼저, 각각의 제어점의 움직임 정보가 도출된다. 도 5에 도시된 바와 같이, CPk (k = 1, 2, 3, 4)는 제k 제어점을 나타낸다. A0, A1, A2, B0, B1, B2, 및 B3은 현재 블록의 공간적으로 이웃한 위치이며, CPk(k = 1, 2, 3)의 움직임 정보를 예측하는 데 사용된다. Tr은 현재 블록의 시간적으로 이웃한 위치를 나타내며, CP4의 움직임 정보를 예측하는 데 사용된다. Tr은 현재 블록의 동일-위치 블록의 오른쪽 하단의 공간적으로 이웃한 샘플 위치를 나타내며, 여기서 동일-위치 블록은, 현재 블록과 동일한 크기, 동일한 형상 및 동일한 좌표를 가지고 참조 영상에 있는 영상 블록이다.
CP1, CP2, CP3, 및 CP4의 위치 좌표는 각각 (0, 0),(W, 0),(0, H) 및 (W, H)이며, 여기서 W와 H는 현재 블록의 폭과 높이를 나타낸다.
각각의 제어점의 움직임 정보는 다음과 같은 순서로 획득된다.
CP1의 경우, 검사 순서는 B2-A2-B3이다. B2의 움직임 정보가 이용 가능하면(available), B2의 움직임 정보가 사용된다. 그렇지 않으면 A2와 B3이 순서대로 검출된다. 세 위치 모두의 움직임 정보를 이용 불가능하면, CP1의 움직임 정보는 획득될 수 없다.
CP2의 경우, 검사 순서는 B0-B1이다.
CP3의 경우, 검사 순서는 A0-A1이다.
CP4의 경우, Tr의 움직임 정보가 사용될 수 있다.
여기서, 움직임 정보가 이용 가능하다는 것은, 위치 X가 위치한 블록이 인터 예측 모드로 이미 인코딩되었음을 의미한다. 그렇지 않으면 위치 X를 사용할 수 없다. 위치 X는, 예를 들어 위치 B2, 위치 A2, 위치 B3, 위치 A0, 위치 A1, 위치 B0, 위치 B1 또는 위치 Tr이다.
제어점의 움직임 정보를 획득하는 다른 방법이 또한 본 발명에 적용될 수 있음에 유의해야 한다. 여기에서는 세부 사항을 설명하지 않는다. 예를 들어, CP1의 경우, B2, A2, 및 B3이 모두 이용 가능한 경우, CP1은 {B2, A2, 및 B3} 중 어느 하나의 움직임 정보를 사용할 수 있다. 이 방법은 CP2 내지 CP4에도 적용되며, 여기에서는 세부사항을 다시 설명하지 않는다. 대안으로, 도 5에 도시된 바와 같이, 현재 영상 블록의 제어점 CP1(좌측 상단 샘플이라고도 함)의 움직임 정보의 소스는 x1개의 샘플의 움직임 정보를 포함할 수 있다. x1개의 샘플은, 현재 영상 블록이 속하는 비디오 프레임에 시간적으로 이웃한 비디오 프레임에 있고 현재 영상 블록의 좌측 상단 샘플 LT와 동일한 위치에 있는 샘플 Col-LT, 현재 영상 블록의 좌측에 공간적으로 이웃한 영상 블록 A2, 현재 영상 블록의 좌측 상단에 공간적으로 이웃한 영상 블록 B2, 및 현재 영상 블록의 상단에 공간적으로 인접한 영상 블록 B3 중 적어도 하나를 포함한다.
그 후, 제어점의 움직임 정보를 조합하여, 비병진 움직임 정보를 획득한다.
두 개의 제어점의 움직임 정보가 조합되어 4-파라미터 아핀 모델을 구성한다. 두 제어점의 조합 방식은 다음 방식: {CP1, CP4}, {CP2, CP3}, {CP1, CP2}, {CP2, CP4}, {CP1, CP3}, 및 {CP3, CP4}를 포함한다. 예를 들어, 제어점 CP1 및 CP2를 사용하여 구성되는 4-파라미터 아핀 모델은 아핀(CP1, CP2)로 표기된다.
세 개의 제어점의 움직임 정보가 조합되어 6-파라미터 아핀 모델을 구성한다. 세 개의 제어점의 조합 방식으로는 {CP1, CP2, CP4}, {CP1, CP2, CP3}, {CP2, CP3, CP4}, 및 {CP1, CP3, CP4}를 포함한다. 예를 들어, CP1, CP2 및 CP3을 사용하여 구성되는 6-파라미터 아핀 제어점 모델은 Affine (CP1, CP2, CP3)으로 표기된다.
네 개의 제어점의 움직임 정보가 조합되어 8-파라미터 이중 선형 모델을 구성한다. 제어점 CP1, CP2, CP3, 및 CP4를 사용하여 구성되는 8-파라미터 이중 선형 모델은 Bilinear (CP1, CP2, CP3, CP4)으로 표기된다.
이들 모델은 미리 설정된 순서로 순회된다. 조합 모델에 대응하는 제어점의 움직임 정보를 이용 불가능하면, 모델을 사용할 수 없는 것으로 간주된다. 조합 모델에 대응하는 모든 제어점의 움직임 정보가 이용 가능하면,
모델의 참조 색인이 결정되고, 제어점의 움직임 벡터가 스케일링된다. 스케일링 후의 모든 제어점의 움직임 정보가 일치하면 모델이 유효하지 않다. 그렇지 않으면, 제어점의 움직임 정보가 후보 움직임 정보 리스트에 추가된다.
스케일링 방법은 식 9에 나타나 있다. 는 현재 프레임의 영상 순서 카운트(picture order count, POC) 번호를 나타내고, 는 현재 블록의 참조 프레임의 POC 번호를 나타내고, 는 제어점의 참조 프레임의 POC 번호를 나타내고, 는 스케일링을 통해 획득된 MV를 나타낸다.
단계 1.3: 움직임 정보를 보충한다.
선택적으로, 단계 1.2에서 획득된 후보 움직임 정보 리스트의 길이가 지정된 리스트 길이 N보다 짧으면, 현재 블록에 이웃한 코딩된 블록의 움직임 정보가 후보 움직임 정보 리스트에 추가되거나, 영 움직임 정보(즉, 영 움직임 벡터)가 후보 움직임 정보 리스트에 채워진다.
후보 움직임 정보 리스트를 구성하는 흐름도는 도 6에 도시되어 있다.
S601: 제1 후보 움직임 정보 그룹을 획득하고, 제1 후보 움직임 정보 그룹을 후보 움직임 정보 리스트에 추가하고; 이 경우에 후보 움직임 정보 리스트의 길이(candNum1)가 미리 설정된 리스트 길이 N보다 짧으면, 단계 S602를 수행하고; 또는 후보 움직임 정보 리스트의 길이가 N과 같으면, 후보 움직임 정보 리스트를 구성 프로시저를 종료한다.
S602: 제2 후보 움직임 정보 그룹을 획득하고, 제2 후보 움직임 정보 그룹을 후보 움직임 정보 리스트에 추가하며; 이 경우에 후보 움직임 정보 리스트의 길이(candNum2)가 미리 설정된 리스트 길이 N보다 짧으면, 단계 S603을 수행하거나; 또는 후보 움직임 정보 리스트의 길이가 N과 같으면, 후보 움직임 정보 리스트 구성 프로시저를 종료한다.
S603: 움직임 정보가 현재 블록의 이웃 블록의 병진 움직임 정보 및/또는 영 움직임 정보일 수 있는 움직임 정보를 채운다. 후보 움직임 정보 리스트의 길이 값이 N과 같을 때까지 채움을 중단하고, 후보 움직임 정보 리스트를 구성하는 절차를 종료한다.
표 1은 실시예 1에서 구성되는 후보 움직임 정보 리스트의 예를 나타낸다.
[표 1]
표 1에서, MV0, MV1, MV2 및 MV3은 현재 블록의 네 개의 제어점의 움직임 벡터이며, 색인 값 0에 대응하는 움직임 벡터 조합은 단계 1.1에서 결정된 움직임 정보이고, 색인 값 2에 대응하는 움직임 벡터 조합은 단계 1.2에서 결정된 움직임 정보이다.
후보 움직임 정보 리스트는 예측 방향 및 참조 색인 값과 같은 정보를 더 포함할 수 있음에 유의해야 한다. 참조 값이 양방향 예측에 대응하면, 후보 항목은 순방향 참조 색인 및 순방향 움직임 벡터 조합, 그리고 역방향 참조 색인 및 역방향 움직임 벡터 조합을 포함한다. 참조 값이 순방향 예측에 대응하면, 후보 항목은 순방향 참조 색인 및 순방향 움직임 벡터 조합을 포함하고; 참조 값이 역방향 예측에 대응하면, 후보 항목은 역방향 참조 색인 및 역방향 움직임 벡터 조합을 포함한다. 또한, 인코더 측과 디코더 측이 특정 수량의 움직임 벡터의 조합이 특정 위치에서의 제어점의 움직임 벡터의 조합이라는 것에 동의하면, 예를 들어, 두 개의 움직임 벡터의 조합은, 디폴트로, 좌측 상단 코너 및 우측 상단 코너에서 두 개의 제어점의 움직임 벡터의 조합이고, 후보 움직임 정보 리스트는 각각의 움직임 벡터 조합에 대응하는 위치 좌표 조합을 반영할 필요가 없고; 그렇지 않으면, 후보 움직임 정보 리스트에서, 각각의 색인에 대응하는 비병진 움직임 모델에 대응하는 후보 항목(candidate)은 복수의 제어점의 움직임 벡터 및 복수의 제어점의 대응하는 위치 좌표를 포함한다.
단계 2: 최적 움직임 정보 그룹을 결정한다.
디코더 측은 비트스트림을 디코딩하여, 블록 레벨의 색인, 예를 들어, 후보 움직임 정보 리스트에서 현재 블록의 최적 후보 움직임 정보 그룹의 색인 값을 획득하여, 현재 블록의 제어점의 움직임 벡터 예측기를 획득한다.
움직임 벡터 예측기(motion vector predictor)는 현재 블록의 제어점의 움직임 벡터로서 직접 사용될 수 있다. 이 방법은 병합(merge) 모드에 기초하여 움직임 벡터를 획득하는 방법이다.
대안으로, 디코더 측은 비트스트림을 추가로 디코딩하여 각각의 제어점의 움직임 벡터 차이를 획득하고, 움직임 벡터 예측기와 움직임 벡터 차이를 더하여 현재 블록의 제어점의 움직임 벡터를 획득한다. 이 방법은 고급 움직임 벡터 예측(advanced motion vector prediction, AMVP) 모드에 기초하여 움직임 벡터를 획득하는 방법이다.
인코더 측은 후보 움직임 정보 리스트 내의 각각의 움직임 정보 그룹을 사용하여 움직임 보상 예측을 수행한 다음, RDO 기준에 따라 최적 움직임 정보 그룹 및 최적 움직임 정보 그룹의 색인 값을 선택하고, 그 후 색인 값을 비트스트림에 기록한다.
움직임 벡터 예측기는 현재 블록의 제어점의 움직임 벡터(조합 예측 모드(Merge))로서 직접 사용될 수 있다.
대안으로, 인코더 측은 움직임 추정을 추가로 수행하고, 검색을 통해 최종 움직임 벡터를 획득하고, 각각의 제어점의 움직임 벡터 차이(motion vector difference, MVD)를 비트스트림에 기록한다(AMVP 모드). 여기에서의 MVD는 추정된 움직임 벡터와 리스트로부터 선택된 최적 움직임 벡터의 차이로 이해될 수 있다.
단계 3: 제어점의 움직임 정보 및 움직임 모델에 기초하여 현재 블록에서 각각의 샘플(x, y) 또는 각각의 움직임 보상 서브유닛의 움직임 벡터(Vx, Vy)를 결정하고, 현재 프레임의 예측 방향으로 참조 색인에 의해 지시되는 참조 프레임에서, 현재 블록에서 각각의 샘플의 움직임 벡터가 위치하는 위치에 기초하여 각 샘플의 예측 값을 획득한다.
구현 시에, 움직임 벡터 조합이 특정 위치의 움직임 벡터의 조합으로 한정되지 않으면, 후보 움직임 정보 리스트에서, 각각의 움직임 벡터 조합은 움직임 벡터 조합와 연관된 위치 좌표를 갖는다는 것을 이해해야 한다. 다시 말해, 각각의 움직임 벡터 조합 내의 각각의 움직임 벡터는 움직임 벡터에 대응하는 제어점의 위치 좌표에 대응한다.
다른 구현예에서, 움직임 벡터 조합이 지정된 위치의 움직임 벡터의 조합이면 후보 움직임 정보 리스트는 각각의 움직임 벡터 조합에 대응하는 위지 좌표를 포함할 필요가 없다, 예를 들어 4-파라미터 아핀 움직임 모델에 대응하는 움직임 벡터 조합은 현재 블록의 좌측 상단 및 우측 상단 코너의 조합이고, 6-파라미터 아핀 움직임 모델에 대응하는 움직임 벡터 조합은 현재 블록의 좌측 상단 코너, 좌측 하단 코너 및 우측 상단 코너의 움직임 벡터의 조합이다.
4-파라미터 아핀 움직임 모델은 두 개의 움직임 벡터의 조합에 대응하고, 6-파라미터 아핀 움직임 모델은 세 개의 움직임 벡터의 조합에 대응하고, 8-파라미터 아핀 움직임 모델은 네 개의 움직임 벡터의 조합에 대응한다는 것을 이해해야 한다. 이러한 방식으로, 후보 움직임 정보 리스트에서, 사용되어야 하는 아핀 움직임 모델이 움직임 벡터 조합에 포함된 움직임 벡터의 수량을 사용하여 간접적으로 도출될 수 있다. 따라서, 후보 움직임 정보 리스트는 움직임 모델 정보 필드를 포함하지 않을 수 있다.
여기에서의 단계 3에서는, 단계 2에서 선택된 최적 움직임 정보 그룹에 대응하는 움직임 모델이 비병진 움직임 모델인 것으로 가정된다. 단계 2에서 선택된 최적 움직임 정보 그룹이 양방향 예측에 대응하는 하나의 움직임 벡터 또는 두 개의 움직임 벡터이면, 다시 말해, 단계 2에서 선택된 최적 움직임 정보 그룹에 대응하는 움직임 모델이 병진 움직임 모델이면, 최적 움직임 정보 그룹 내의 움직임 벡터는 현재 블록의 움직임 벡터로서 사용되거나, 최적 움직임 정보 그룹 내의 움직임 벡터와 MVD의 합이 현재 블록의 움직임 벡터로서 사용된다. 현재 블록의 예측 방향으로 참조 색인에 의해 지시되는 참조 프레임에서, 현재 블록의 예측 블록은 현재 블록의 움직임 벡터가 있는 위치에 기초하여 획득된다.
선택적으로, 이 방법(400)에서, 제1 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이는 제2 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이 이하이다.
제1 후보 움직임 정보 그룹은 움직임 모델 기반 움직임 정보 그룹이고, 제1 후보 움직임 정보 그룹에 기초하여 인코딩을 수행하는 효율은 제2 후보 움직임 정보 그룹에 기초하여 인코딩을 수행하는 효율보다 높다. 따라서, 제1 후보 움직임 정보 그룹이 타깃 움직임 정보일 확률이 비교적 높다. 이러한 방식으로, 제1 후보 움직임 정보 그룹의 색인 정보는 비교적 소량의 비트를 갖는 색인 정보로 설정될 수 있다. 이는 비디오 송신의 비트 오버헤드를 감소시키는 데 도움이 된다.
예를 들어, 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹이 비교적 소량의 비트를 갖는 색인 정보에 대응하고, 나중에 후보 움직임 정보 리스트에 추가되는 움직임 정보 그룹은 비교적 대량의 비트를 갖는 색인 정보에 대응하도록 설정될 수 있다. 후보 움직임 정보 리스트가 구성되는 경우, 제1 후보 움직임 정보 그룹이 먼저 후보 움직임 정보 리스트에 추가된 다음, 제2 후보 움직임 정보 그룹이 후보 움직임 정보 리스트에 추가되어, 제1 후보 움직임 정보 그룹의 색인 정보는 제2 후보 움직임 정보 그룹의 색인 정보의 비트 수량보다 적다.
선택적으로, 현재 코딩 블록의 후보 움직임 정보 리스트를 결정하는 단계는 다음 단계들을 포함한다.
S411: 제1 이웃 코딩 블록이 병진 움직임 모델을 사용하는 이웃 코딩 블록 인 경우, 제1 이웃 코딩 블록의 움직임 정보를 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 추가하고; 및/또는
S412: 제1 이웃 코딩 블록이 비병진 움직임 모델을 사용하는 코딩 블록인 경우, 제1 이웃 코딩 블록상의 적어도 두 개의 미리 설정된 위치의 움직임 정보 및 제1 이웃 코딩 블록의 움직임 모델에 기초하여, 현재 코딩 블록에 대응하는 둘 이상의 미리 설정된 위치의 움직임 정보를 도출하고, 현재 코딩 블록에 대응하는 둘 이상의 미리 설정된 위치의 움직임 정보를 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 추가한다.
제1 이웃 코딩 블록의 움직임 모델이 병진 움직임 모델이면, 제1 이웃 코딩 블록의 움직임 정보 그룹은 처리될 필요가 없으며, 제1 후보 움직임 정보 그룹으로서 직접 후보 움직임 정보 리스트에 추가될 수 있다. 이는 코딩 효율을 향상시킨다. 제1 이웃 코딩 블록의 움직임 모델이 비병진 움직임 모델이면, 제1 후보 움직임 정보 그룹은 비병진 움직임 모델에 대응하는 공식에 따라 그리고 제1 이웃 코딩 블록상의 미리 설정된 위치의 움직임 정보에 기초하여 생성될 필요가 있다.
본 출원에서 제공되는 인터 예측의 실시예가 아래에서 더 설명된다.
[실시예 2]
단계 1: 후보 움직임 정보 리스트를 구성한다.
단계 1.1: 움직임 모델 기반 움직임 정보를 후보 움직임 정보 리스트에 추가한다.
현재 블록 주위의 이웃 블록은 도 3에 도시된 방법에 따라 순회될 수 있다. 이웃 블록이 병진 코딩 블록이면, 이웃 블록의 움직임 정보는 후보 움직임 정보 리스트에 직접 채워진다. 이웃 블록이 비병진 코딩 블록이고, 비병진 코딩 블록의 움직임 모델이 현재 블록의 움직임 모델과 동일하면, 각각의 비병진 코딩 블록의 제어점의 움직임 정보가 획득되고, 그런 다음, 현재 블록의 대응하는 제어점의 움직임 정보(즉, 제1 움직임 정보 그룹)가 도출된다.
단계 1.2: 조합된 제어점 기반 움직임 정보를 후보 움직임 정보 리스트에 추가한다.
실시예 2의 단계 1.2에 대해서는 실시예 1의 단계 1.2를 참조한다. 간결하게 하기 위해, 여기서는 다시 설명하지 않는다.
단계 1.3: 움직임 정보를 보충한다.
선택적으로, 단계 1.2에서 획득된 후보 움직임 정보 리스트의 길이가 지정된 리스트 길이 N보다 작으면, 영 움직임 정보(즉, 영 움직임 벡터)가 채워진다.
표 2는 실시예 2에서 구성되는 후보 움직임 정보 리스트의 예를 보여준다.
[표 2]
표 2에서, MV0, MV1, MV2 및 MV3은 현재 블록의 네 개의 제어점의 움직임 벡터이며, 색인 값 0에 대응하는 움직임 벡터 조합은 단계 1.1에서 결정된 움직임 정보이고, 색인 값 3에 대응하는 움직임 벡터 조합은 단계 1.2에서 결정된 움직임 정보이다.
후보 움직임 정보 리스트는 예측 방향 및 참조 색인 값과 같은 정보를 더 포함할 수 있음에 유의해야 한다. 참조 값이 양방향 예측에 대응하면, 후보 항목은 순방향 참조 색인 및 순방향 움직임 벡터 조합, 그리고 역방향 참조 색인 및 역방향 움직임 벡터 조합을 포함한다. 참조 값이 순방향 예측에 대응하면, 후보 항목은 순방향 참조 색인 및 순방향 움직임 벡터 조합을 포함하고; 참조 값이 역방향 예측에 대응하면, 후보 항목은 역방향 참조 색인 및 역방향 움직임 벡터 조합을 포함한다.
단계 2: 최적 움직임 정보를 결정한다.
디코더 측은 비트스트림을 디코딩하여 리스트에서 현재 블록의 최적 후보 움직임 정보 그룹의 색인 값을 획득하여, 현재 블록의 제어점의 움직임 벡터 예측기를 획득한다.
움직임 벡터 예측기는 현재 블록(병합 모드)의 제어점의 움직임 벡터로서 직접 사용될 수 있다.
대안으로, 디코더 측은 비트스트림을 디코딩하여 각각의 제어점의 움직임 벡터 차이를 획득하고, 움직임 벡터 예측기와 MVD를 더하여 현재 블록(AMVP 모드)의 제어점의 움직임 벡터를 획득한다.
인코더 측은 후보 움직임 정보 리스트 내의 각각의 움직임 정보 그룹을 사용하여 움직임 보상 예측을 수행한 다음, RDO 기준에 따라 최적 움직임 정보 그룹 및 최적 움직임 정보 그룹의 색인 값을 선택하고, 그 후 색인 값을 비트스트림에 기록한다.
움직임 벡터 예측기는 현재 블록(병합 모드)의 제어점의 움직임 벡터로서 직접 사용될 수 있다.
대안으로, 인코더 측은 움직임 추정을 추가로 수행하고, 검색을 통해 최종 움직임 벡터를 획득하고, 각각의 제어점의 MVD를 비트스트림에 기록한다(AMVP 모드).
단계 3: 제어점의 움직임 정보 및 움직임 모델에 기초하여 현재 블록에서 각각의 샘플(x, y) 또는 각각의 움직임 보상 서브유닛의 움직임 벡터(Vx, Vy)를 결정하고, 현재 프레임의 예측 방향으로 참조 색인에 의해 지시되는 참조 프레임에서, 현재 블록에서 각각의 샘플의 움직임 벡터가 위치하는 위치에 기초하여 각 샘플의 예측 값을 획득한다.
구현 시에, 움직임 벡터 조합이 특정 위치의 움직임 벡터의 조합으로 한정되지 않으면, 후보 움직임 정보 리스트에서, 각각의 움직임 벡터 조합은 움직임 벡터 조합와 연관된 위치 좌표를 갖는다는 것을 이해해야 한다. 다시 말해, 각각의 움직임 벡터 조합 내의 각각의 움직임 벡터는 움직임 벡터에 대응하는 제어점의 위치 좌표에 대응한다.
다른 구현예에서, 움직임 벡터 조합이 지정된 위치의 움직임 벡터의 조합이면 후보 움직임 정보 리스트는 각각의 움직임 벡터 조합에 대응하는 위지 좌표를 포함할 필요가 없다, 예를 들어 4-파라미터 아핀 움직임 모델에 대응하는 움직임 벡터 조합은 현재 블록의 좌측 상단 및 우측 상단 코너의 조합이고, 6-파라미터 아핀 움직임 모델에 대응하는 움직임 벡터 조합은 현재 블록의 좌측 상단 코너, 좌측 하단 코너 및 우측 상단 코너의 움직임 벡터의 조합이다.
4-파라미터 아핀 움직임 모델은 두 개의 움직임 벡터의 조합에 대응하고, 6-파라미터 아핀 움직임 모델은 세 개의 움직임 벡터의 조합에 대응하고, 8-파라미터 아핀 움직임 모델은 네 개의 움직임 벡터의 조합에 대응한다는 것을 이해해야 한다. 이러한 방식으로, 후보 움직임 정보 리스트에서, 사용되어야 하는 아핀 움직임 모델이 움직임 벡터 조합에 포함된 움직임 벡터의 수량을 사용하여 간접적으로 도출될 수 있다. 따라서, 후보 움직임 정보 리스트는 움직임 모델 정보 필드를 포함하지 않을 수 있다. 움직임 정보 리스트는 예측 방향에 관한 정보를 포함하고, 그 정보에 기초하여 상이한 움직임 모델이 구별될 수 있음에 유의해야 한다. 예를 들어 양방향 4-파라미터 모델은 두 개의 순방향 움직임 벡터 및 두 개의 역방향 움직임 벡터를 포함한다. 양방향 병진 모델은 하나의 순방향 움직임 벡터 및 하나의 역방향 움직임 벡터를 포함한다.
선택적으로, 비병진 움직임 모델을 사용한 제1 이웃 코딩 블록의 수량이 수량 임계 값 이상인 경우, 제3 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이는 제2 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이보다 짧으며, 제3 후보 움직임 정보 그룹은 비병진 움직임 모델을 사용하여 제1 이웃 코딩 블록상의 둘 이상의 미리 정해진 위치의 움직임 정보 및 비병진 움직임 모델을 사용한 제1 이웃 코딩 블록의 움직임 모델에 기초하여 도출되는 제1 후보 움직임 정보 그룹이다.
도 3이 예로서 사용된다. 위치 A가 위치한 코딩 블록은 비병진 움직임 모델을 사용한 제1 이웃 코딩 블록이고, 좌측 상단 코너 (x2, y2) 및 우측 상단 코너 (x3, y3)는 제1 이웃 코딩 블록상의 둘 이상의 미리 설정된 위치이고, V2 및 V3은 둘 이상의 미리 설정된 위치의 움직임 정보이고, V0 및 V1은 V2 및 V3에 기초하여 도출된 제1 후보 움직임 정보 그룹(즉, 제3 후보 움직임 정보 그룹)이다.
비병진 움직임 모델을 사용한 제1 이웃 코딩 블록의 수량이 수량 임계 값 이상이면, 이는 현재 코딩 블록이 비병진 움직임 모델을 사용한 코딩 블록일 확률이 비교적 높다는 것을 지시한다. 따라서, 비병진 움직임 모델을 사용한 제1 이웃 코딩 블록에 기초하여 도출되는 제1 후보 움직임 정보 그룹(즉, 제3 후보 움직임 정보 그룹)의 색인 정보는 비교적 소량의 비트를 갖는 색인 정보로 설정될 수 있다. 타깃 움직임 정보가 제3 후보 움직임 정보 그룹일 확률이 비교적 높다. 따라서, 이 실시예는 비디오 송신의 비트 수량을 감소시키는 데 도움이 된다.
예를 들어, 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹이 비교적 소량의 비트를 갖는 색인 정보에 대응하고, 나중에 후보 움직임 정보 리스트에 추가되는 움직임 정보 그룹은 비교적 대량의 비트를 갖는 색인 정보에 대응하도록 설정될 수 있다. 후보 움직임 정보 리스트가 구성되는 경우, 제3 후보 움직임 정보 그룹이 먼저 후보 움직임 정보 리스트에 추가된 다음, 제2 후보 움직임 정보 그룹이 후보 움직임 정보 리스트에 추가되어, 제3 후보 움직임 정보 그룹의 색인 정보는 제2 후보 움직임 정보 그룹의 색인 정보의 비트 수량보다 적다.
선택적으로, 후보 움직임 정보 리스트의 길이가 길이 임계 값보다 작고, 제1 이웃 코딩 블록이 병진 움직임 모델을 사용한 제1 이웃 코딩 블록을 더 포함하는 경우, 후보 움직임 정보 리스트는 병진 움직임 모델을 사용한 제1 이웃 코딩 블록을 더 포함하며, 병진 움직임 모델을 사용한 제1 이웃 코딩 블록의 움직임 정보는 제1 후보 움직임 정보 그룹이고, 병진 운동 모델을 사용한 제1 이웃 코딩 블록의 움직임 정보의 색인 정보의 빈 스트링의 길이는 제2 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이 이상이다.
본 출원에서, 후보 움직임 정보 리스트의 길이는 후보 움직임 정보 리스트에 수용될 수 있는 움직임 정보 그룹의 수량이다.
후보 움직임 정보 리스트의 길이가, 제2 후보 움직임 정보 그룹이 후보 움직임 정보 리스트에 추가된 후의 길이 임계 값보다 작고, 제1 이웃 코딩 블록이 병진 움직임 모델을 사용한 제1 이웃 코딩 블록을 더 포함하면, 병진 움직임 모델을 사용한 제1 이웃 코딩 블록의 움직임 정보 그룹은 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 추가되고, 제1 후보 움직임 정보 그룹의 색인 정보는 비교적 대량의 색인 정보를 갖는 색인 정보로 설정되고; 후보 움직임 정보 리스트의 길이가 여전히 길이 임계 값보다 작으면, 영 움직임 정보가 후보 움직임 정보 리스트에 추가된다.
선택적으로, 비병진 움직임 모델을 사용한 제1 이웃 코딩 블록의 수량이 수량 임계 값 이하인 경우, 병진 움직임 모델을 사용한 제1 이웃 코딩 블록의 움직임 정보 그룹은 제1 후보 움직임 정보 그룹이고, 병진 움직임 모델을 사용한 제1 이웃 코딩 블록의 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이는 제2 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이보다 짧다.
비병진 움직임 모델을 사용한 제1 이웃 코딩 블록의 수량이 수량 임계 값 이하이면, 이는 현재 코딩 블록이 병진 움직임 모델을 사용한 코딩 블록일 확률이 비교적 높다는 것을 지시한. 따라서, 병진 움직임 모델을 사용한 제1 이웃 코딩 블록의 움직임 정보 그룹은 제1 후보 움직임 정보 그룹으로서 사용될 수 있고, 제1 후보 움직임 정보 그룹의 색인 정보는 비교적 소량의 비트를 갖는 색인 정보로 설정된다. 타깃 움직임 정보가 제1 후보 움직임 정보 그룹일 확률이 비교적 높다. 따라서, 이 실시예는 비디오 송신의 비트 오버헤드를 감소시키는 데 도움이 된다.
도 3이 예로 사용된다. 위치 A가 위치한 코딩 블록이 병진 움직임 모델을 사용한 제1 이웃 코딩 블록이면, 위치 A가 위치한 코딩 블록의 움직임 정보 그룹은 현재 블록의 좌측 하단 코너에 있는 제어점의 움직임 정보(즉, 제1 후보 움직임 정보 그룹)로 사용될 수 있다.
후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹은 비교적 소량의 비트를 갖는 색인 정보에 대응하고, 나중에 후보 움직임 정보 리스트에 추가되는 움직임 정보 그룹은 비교적 대량의 비트를 갖는 색인 정보에 대응하도록 설정될 수 있다. 후보 움직임 정보 리스트가 구성될 때, 병진 움직임 모델을 사용한 제1 이웃 코딩 블록의 움직임 정보 그룹은 먼저 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 추가되고, 그런 다음 제2 후보 움직임 정보 그룹이 후보 움직임 정보 목록에 추가된다. 이는 타깃 움직임 정보의 색인 정보의 빈 스트링의 길이를 감소시키는 데 도움이 된다.
선택적으로, 후보 움직임 정보 리스트의 길이가 길이 임계 값보다 작고, 제1 이웃 코딩 블록이 비병진 움직임 모델을 사용한 제1 이웃 코딩 블록을 더 포함하는 경우, 후보 움직임 정보 리스트는 제4 후보 움직임 정보 그룹을 더 포함하고, 제4 후보 움직임 정보 그룹은 비병진 움직임 모델을 사용한 제1 이웃 코딩 블록상의 둘 이상의 미리 설정된 위치의 움직임 정보 및 비병진 움직임 모델을 사용한 제1 이웃 코딩 블록의 움직임 모델에 기초하여 도출되는 제1 후보 움직임 정보 그룹이고, 제4 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이는 제2 후보 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이 이상이다.
제2 후보 움직임 정보 그룹이 후보 움직임 정보 리스트에 추가된 후에 후보 움직임 정보 리스트의 길이가 길이 임계 값보다 작고, 제1 이웃 코딩 블록은 비병진 움직임 모델을 사용한 제1 이웃 코딩 블록을 더 포함하면, 비병진 움직임 모델을 사용한 제1 이웃 코딩 블록의 움직임 정보 그룹에 기초하여 도출된 움직임 정보 그룹이 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 추가되고, 제1 후보 움직임 정보 그룹의 색인 정보는 비교적 대량의 비트를 갖는 색인 정보로 설정되며; 후보 움직임 정보 리스트의 길이가 여전히 길이 임계 값보다 작으면, 영 움직임 정보가 후보 움직임 정보 리스트에 추가된다.
도 3이 예로 사용된다. 위치 A가 위치한 코딩 블록이 비병진 움직임 모델을 사용한 제1 이웃 코딩 블록이라고 가정하면, 좌측 상단 코너 (x2, y2) 및 우측 상단 코너 (x3, y3)는 제1 이웃 코딩 블록상의 둘 이상의 미리 설정된 위치이고, V2 및 V3은 둘 이상의 미리 설정된 위치의 움직임 정보이며, V0 및 V1은 V2 및 V3에 기초하여 도출된 제1 후보 움직임 정보 그룹(즉, 제4 후보 움직임 정보 그룹)이다
아래에서는 본 출원에서 제공되는 인터 예측 방법의 실시예를 더 설명한다.
[실시예 3]
단계 1: 후보 움직임 정보 리스트를 구성한다.
도 3에 도시된 바와 같이, 현재 블록 주위의 이웃 블록은 A-B-C-D-E로 순회되고, 이웃 블록 내의 비병진 코딩 블록의 수량 M이 계수된다.
M이 미리 설정된 수량 임계 값 T보다 크면, 움직임 정보 그룹을 추가하는 순서는 다음과 같다:
먼저, 현재 블록의 움직임 정보 그룹으로서 비병진 코딩 블록의 움직임 정보 그룹에 기초하여 결정되는 움직임 정보 그룹(즉, 일부 제1 후보 움직임 정보 그룹)이 후보 움직임 정보 리스트에 추가되고, 구체적으로 현재 블록에 대응하는 둘 이상의 미리 설정된 위치의 움직임 정보는 비병진 코딩 블록상의 둘 이상의 미리 설정된 위치의 움직임 정보 및 비병진 코딩 블록의 움직임 모델에 기초하여 도출되고, 현재 블록에 대응하는 둘 이상의 미리 설정된 위치의 움직임 정보가 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 추가되고;
그 후, 조합된 제어점 기반 움직임 정보 그룹(즉, 제2 후보 움직임 정보 그룹)이 후보 움직임 정보 리스트에 추가되며;
이 경우에 후보 움직임 정보 리스트의 길이가 지정된 리스트 길이 N보다 작 으면, 현재 블록의 움직임 정보 그룹으로서 병진 코딩 블록의 움직임 정보에 기초하여 결정되는 움직임 정보 그룹(즉, 일부 다른 제1 후보 움직임 정보 그룹)이 후보 움직임 정보 리스트에 더 추가되고;
이 경우에 후보 움직임 정보 리스트의 길이가 여전히 지정된 리스트 길이 N보다 작으면, 영 움직임 정보가 채워진다.
M이 미리 설정된 수량 임계 값 T 이하이면, 움직임 정보 그룹을 추가하는 순서는 다음과 같다:
먼저, 현재 블록의 움직임 정보 그룹으로서 병진 코딩 블록의 움직임 정보 그룹에 기초하여 결정되는 움직임 정보 그룹(즉, 일부 제1 후보 움직임 정보 그룹)이 후보 움직임 정보 리스트에 추가되고;
그 후, 조합된 제어점 기반 움직임 정보 그룹(즉, 제2 후보 움직임 정보 그룹)이 후보 움직임 정보 리스트에 추가되며;
이 경우에 후보 움직임 정보 리스트의 길이가 지정된 리스트 길이 N보다 작 으면, 현재 블록의 움직임 정보 그룹으로서 비병진 코딩 블록의 움직임 정보 그룹에 기초하여 도출되는 움직임 정보 그룹(즉, 일부 다른 제1 후보 움직임 정보 그룹)이 후보 움직임 정보 리스트에 더 추가되고;
이 경우에 후보 움직임 정보 리스트의 길이가 여전히 지정된 리스트 길이 N보다 작으면, 영 움직임 정보가 채워진다.
비병진 코딩 블록의 움직임 정보 그룹 또는 병진 코딩 블록의 움직임 정보 그룹에 기초하여 현재 블록의 움직임 정보 그룹을 결정하는 방법에 대해서는 실시예 1의 단계 1.1 및 단계 1.2를 참조한다. 간결하게 하기 위해, 여기서는 세부사항을 다시 설명하지 않는다.
선택적으로, 제1 후보 움직임 정보 그룹 및 제2 후보 움직임 정보 그룹은 모두 현재 코딩 블록상의 제1 위치 그룹의 움직임 정보이고, 현재 코딩 블록상의 둘 이상의 미리 설정된 위치는 제2 위치 그룹이며; 위치 현재 코딩 블록의 후보 움직임 정보 리스트를 결정하는 것은, 제2 위치 그룹이 제1 위치 그룹과 다른 경우, 위치 변환 공식에 따라 그리고 대응하는 움직임 정보에 기초하여 제2 후보 움직임 정보 그룹을 도출하는 것을 포함한다.
제1 후보 움직임 정보 그룹에 대응하는 위치의 수량이 제2 후보 움직임 정보 그룹에 대응하는 위치의 수량과 동일한 경우, 이 실시예에 따라 획득되는 후보 움직임 정보 리스트내의 모든 움직임 정보 그룹은 특정 위치의 움직임 정보이다. 이는 움직임 추정의 복잡도를 감소시킨다.
도 5가 예로 사용된다. 제1 후보 움직임 정보 그룹이 CP1 및 CP2에 대응하는 움직임 정보라고 가정하면, CP1 및 CP2는 제1 위치 그룹이다. 제2 후보 움직임 정보 그룹이 기초한 샘플 위치가 위치 A1 및 위치 A2(즉, 제2 위치 그룹)이면, 인코더 측은 위치 변환 공식에 따라 그리고 제2 위치 그룹에 대응하는 움직임 정보에 기초하여, CP2 및 CP2에 대응하는 제2 후보 움직임 정보 그룹을 획득할 수 있다.
선택적으로, 제1 후보 움직임 정보 그룹은 현재 코딩 블록상의 제1 위치그룹이고, 제2 후보 움직임 정보 그룹은 현재 코딩 블록상의 제3 위치 그룹의 움직임 정보이고; 상기 방법은, 제1 위치 그룹이 제3 위치 그룹과 다른 경우, 위치 변환 공식에 따라 그리고 제2 후보 움직임 정보 그룹에 기초하여 제5 후보 움직임 정보 그룹을 도출하는 것을 더 포함하며, 여기서 제5 후보 움직임 정보 그룹에 대응하는 위치는 제1 위치 그룹과 동일하다.
제1 후보 움직임 정보 그룹에 대응하는 위치의 수량이 제2 후보 움직임 정보 그룹에 대응하는 위치의 수량과 동일한 경우, 본 실시예에 따라 획득되는 후보 움직임 정보 리스트 내의 모든 움직임 정보 그룹은 특정 위치의 움직임 정보이다. 이는 움직임 추정의 복잡도를 감소시킨다.
도 5가 예로 사용된다. 제1 후보 움직임 정보 그룹이 CP1 및 CP2에 대응하는 움직임 정보라고 가정하면, CP1 및 CP2는 제1 위치 그룹이다. 제2 후보 움직임 정보 그룹이 CP2 및 CP3(즉, 제3 위치 그룹)에 대응하는 움직임 정보이면, 인코더 측은 위치 변환 공식에 따라 그리고 CP2 및 CP3에 기초하여, 제2 후보 움직임 정보 그룹을 획득할 수 있다.
실시예 1, 실시예 2 및 실시예 3에서, 제어점의 상이한 조합이 동일한 위치에 있는 제어점으로 변환될 수 있다.
예를 들어, {CP1, CP4}, {CP2, CP3}, {CP2, CP4}, {CP1, CP3}, 또는 {CP3, CP4}를 조합하여 획득되는 4-파라미터 아핀 모델이 제어점 {CP1, CP2}로 표현되도록 변환된다. 변환 방법은 다음과 같다: 제어점의 움직임 벡터 및 좌표 정보를 식 (1)에 대입하여, 모델 파라미터를 획득하고; 그런 다음, 그 식에 {CP1, CP2}를 대입하여 {CP1, CP2}의 움직 벡터를 획득한다.
예를 들어, {CP1, CP2, CP4}, {CP2, CP3, CP4}, 또는 {CP1, CP3, CP4}를 조합하여 획득되는 6-파라미터 아핀 모델은 제어점 {CP1, CP2, CP3}로 표현되도록 변환된다. 변환 방법은 다음과 같다: 제어점의 움직임 벡터 및 좌표 정보를 식 (3)에 대입하여, 모델 파라미터를 획득하고; 그런 다음, 그 식에 {CP1, CP2, CP3} 를 대입하여 {CP1, CP2, CP3}의 움직 벡터를 획득한다.
식 (1) 및 식 (3)은 위치 변환 공식이다.
전술한 내용은 본 출원에서 제공되는 비디오 데이터 인터 예측 방법을 상세히 설명하였다. 이하에서는 첨부 도면을 참조하여 본 출원에서 제공되는 비디오 인코딩/디코딩 시스템, 비디오 데이터 인코딩 장치 및 비디오 데이터 디코딩 장치를 명확하고 완전하게 설명한다.
도 7은 본 출원의 일 실시예에서 설명되는 예시적인 비디오 코딩 시스템(1)의 블록도이다. 본 명세서에서 사용되는 바와 같이, 용어 "비디오 코덱"은 일반적으로 비디오 인코더와 비디오 디코더를 모두 지칭한다. 본 출원에서, "비디오 코딩" 또는 "코딩"이라는 용어는 일반적으로 비디오 인코딩 또는 비디오 디코딩을 지칭할 수 있다. 비디오 코딩 시스템(1)의 비디오 인코더(100) 및 비디오 디코더(200)는 본 출원에서 제공되는 비디오 데이터 인터 예측 방법에 따라 현재 코딩된 영상 블록의 움직임 정보, 예를 들어, 움직임 벡터, 또는 현재 코딩된 영상 블록의 움직임 보상 서브유닛을 예측하도록 구성되어, 예측된 움직임 벡터가 움직임 추정 방법을 사용하여 획득되는 움직임 벡터에 최대한 근접하도록 한다. 이는 인코딩/디코딩 성능을 더욱 향상시킨다.
도 7에 도시된 바와 같이, 비디오 코딩 시스템(1)은 근원지 장치(10) 및 목적지 장치(20)를 포함한다. 근원지 장치(10)는 인코딩된 비디오 데이터를 생성한다. 따라서, 근원지 장치(10)는 비디오 인코딩 장치라고 할 수 있다. 목적지 장치(20)는 근원지 장치(10)에 의해 생성되는 인코딩된 비디오 데이터를 디코딩할 수 있다. 따라서, 목적지 장치(20)는 비디오 디코딩 장치라고 할 수 있다. 근원지 장치(10), 목적지 장치(20), 또는 근원지 장치(10) 및 목적지 장치(20) 모두의 다양한 구현은 하나 이상의 프로세서 및 하나 이상의 프로세서에 연결된 메모리를 포함할 수 있다. 메모리는 랜덤 액세스 메모리(random access memory, RAM), 판독 전용 메모리(read only memory, ROM), 소거 및 프로그램 가능한 판독 전용 메모리(erasable programmable ROM, EPROM), 플래시 메모리, 또는 본 명세서에 기술된 바와 같은, 필요한 프로그램 코드를 명령어 또는 컴퓨터에 의해 액세스 가능한 데이터 구조의 형태로 저장하는 데 사용될 수 있는 임의의 다른 매체를 포함할 수 있다.
근원지 장치(10) 및 목적지 장치(20)는 데스크톱 컴퓨터, 이동 컴퓨팅 장치, 노트북(예: 랩톱) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 이른바 "스마트" 폰이라고 하는 핸드헬드 전화기, 텔레비전, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 차량 장착형 컴퓨터 및 유사한 장치를 포함한, 다양한 장치를 포함할 수 있다.
목적지 장치(20)는 링크(30)를 통해 근원지 장치(10)로부터 인코딩된 비디오 데이터를 수신할 수 있다. 링크(30)는 근원지 장치(10)로부터 목적지 장치로 인코딩된 비디오 데이터를 이동할 수 있는 하나 이상의 매체 또는 장치를 포함할 수 있다. 일례에서, 링크(30)는 근원지 장치(10)가 인코딩된 비디오 데이터를 목적지 장치(20)에 실시간으로 직접 송신할 수 있게 하는 하나 이상의 통신 매체를 포함할 수 있다. 이 예에서, 근원지 장치(10)는 통신 표준(예: 무선 통신 프로토콜)에 따라, 인코딩된 비디오 데이터를 변조할 수 있고, 변조된 비디오 데이터를 목적지 장치(20)에 송신할 수 있다. 하나 이상의 통신 매체는 무선 및/또는 유선 통신 매체, 예를 들어 무선 주파수(radio frequency, RF) 스펙트럼 또는 하나 이상의 물리 송신 선로를 포함할 수 있다. 하나 이상의 통신 매체는 패킷 기반 네트워크의 일부를 구성할 수 있고, 패킷 기반 네트워크는, 예를 들어, 근거리 네트워크, 광역 네트워크 또는 글로벌 네트워크(예: 인터넷)이다. 하나 이상의 통신 매체는 라우터, 교환기, 기지국, 또는 근원지 장치(10)로부터 목적지 장치(20)로의 통신을 용이하게 하는 다른 장치를 포함할 수 있다.
다른 예에서, 인코딩된 비디오 데이터는 출력 인터페이스(140)를 통해 저장 장치(40)에 출력될 수 있다. 유사하게, 인코딩된 비디오 데이터는 입력 인터페이스(240)를 통해 저장 장치(40)로부터 액세스될 수 있다. 저장 장치(40)는 복수의 분산 데이터 저장 매체 또는 로컬로 액세스 가능한 데이터 저장 매체 중 하나, 예를 들어, 하드 드라이브, 블루레이, 디지털 다목적 디스크(digital versatile disc, DVD), 컴팩트 디스크 판독 전용 메모리(compact disc read-only memory, CD-ROM), 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하도록 구성된 임의의 다른 적절한 디지털 저장 매체를 포함할 수 있다.
다른 예에서, 저장 장치(40)는 근원지 장치(10)에 의해 생성되는 인코딩된 비디오 데이터를 유지할 수 있는 파일 서버 또는 다른 중간 저장 장치에 대응할 수 있다. 목적지 장치(20)는 저장 장치(40)로부터 저장된 비디오 데이터에 액세스할 수 있다. 스트리밍 송신 또는 다운로드를 통해, 저장 장치(40)로부터 저장된 비디오 데이터를 액세스할 수 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 인코딩된 비디오 데이터를 목적지 장치(20)에 송신할 수 있는 임의의 유형의 서버일 수 있다. 파일 서버의 예로는 네트워크 서버(예를 들어 웹 사이트에 사용됨), 파일 전송 프로토콜(file transfer protocol, FTP) 서버, 네트워크 부착형 스토리지(network attached storage, NAS) 장치 또는 로컬 디스크 드라이브를 포함한다. 목적지 장치(20)는 임의의 표준 데이터 연결(인터넷 연결 포함)을 통해 인코딩된 비디오 데이터에 액세스할 수 있다. 표준 데이터 연결로는 무선 채널(예: 무선 충실도(Wireless-Fidelity, Wi-Fi) 연결), 유선 연결(예: 디지털 가입자 회선(digital subscriber line, DSL) 또는 케이블 모뎀), 또는 파일 서버에 저장된 인코딩된 비디오 데이터에 액세스하기에 적합한 이 둘의 조합을 포함할 수 있다. 저장 장치(40)로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이 둘의 조합일 수 있다.
본 출원에서의 움직임 벡터 예측 기술은 복수의 멀티미디어 애플리케이션, 예를 들어, 무선 텔레비전 방송, 케이블 텔레비전 송신, 위성 텔레비전 송신, 스트리밍 비디오 송신(예: 인터넷을 통해)을 지원하기 위한, 비디오 인코딩 및 디코딩, 데이터 저장 매체에 저장된 비디오 데이터의 인코딩, 데이터 저장 매체에 저장된 비디오 데이터의 디코딩, 또는 다른 애플리케이션을 지원하기 위해 적용될 수 있다. 일부 예에서, 비디오 코딩 시스템(1)은 비디오 스트리밍 송신, 비디오 재생, 비디오 브로드캐스트 및/또는 화상 전화(videotelephony)와 같은 애플리케이션을 지원하기 위해 단방향 또는 양방향 비디오 송신을 지원하도록 구성될 수 있다.
도 7에 기재된 비디오 코딩 시스템(1)은 단지 예일 뿐이며, 본 출원의 기술은 인코딩 장치와 디코딩 장치 사이의 어떠한 데이터 통신을 반드시 포함하지 않는 비디오 코딩 기기(예: 비디오 인코딩 또는 비디오 디코딩)에 적용 가능하다. 다른 예에서, 데이터는 로컬 메모리로부터 검색되고, 스트리밍 방식 등으로 네트워크상에서 송신된다. 비디오 인코딩 장치는 데이터를 인코딩하고 그 데이터를 메모리에 저장할 수 있고, 및/또는 비디오 디코딩 장치는 메모리로부터 데이터를 검색하고 데이터를 디코딩할 수 있다. 많은 예에서, 데이터를 오직 인코딩하여 그 데이터를 메모리에 저장하고/하거나 메모리로부터 데이터를 검색하고 그 데이터를 디코딩하고 서로 통신하지 않고 서로 통신하지 않는 장치가, 인코딩 및 디코딩을 수행한다.
도 7의 예에서, 근원지 장치(10)는 비디오 소스(120), 비디오 인코더(100) 및 출력 인터페이스(140)를 포함한다. 일부 예에서, 출력 인터페이스(140)는 변조기/복조기(모뎀) 및/또는 송신기를 포함할 수 있다. 비디오 소스(120)는 비디오 캡처 장치(예: 카메라), 이전에 캡처된 비디오 데이터를 포함하는 비디오 아카이브(video archive), 비디오 콘텐츠 제공자로부터 비디오 데이터를 수신하도록 구성된 비디오 피드 인 인터페이스(video feed-in interface) 및/또는 비디오 데이터를 생성하기 위한 컴퓨터 그래픽 시스템, 또는 이러한 비디오 데이터 소스의 조합을 포함할 수 있다.
비디오 인코더(100)는 비디오 소스(120)로부터 비디오 데이터를 인코딩할 수 있다. 일부 예에서, 근원지 장치(10)는 인코딩된 비디오 데이터를 출력 인터페이스(140)를 통해 목적지 장치(20)에 직접 송신한다. 다른 예에서, 인코딩된 비디오 데이터는 대안으로, 저장 장치(40)상에 저장되어, 목적지 장치(20)가 이후에 디코딩 및/또는 재생을 위해 인코딩된 비디오 데이터에 액세스할 수 있도록 한다.
도 7의 예에서, 목적지 장치(20)는 입력 인터페이스(240), 비디오 디코더(200) 및 디스플레이 장치(220)를 포함한다. 일부 예에서, 입력 인터페이스(240)는 수신기 및/또는 모뎀을 포함한다. 입력 인터페이스(240)는 링크(30)를 통해 및/또는 저장 장치(40)로부터 인코딩된 비디오 데이터를 수신할 수 있다. 디스플레이 장치(220)는 목적지 장치(20)와 통합될 수 있거나 목적지 장치(20) 외부에 위치할 수 있다. 디스플레이 장치(220)는 디코딩된 비디오 데이터를 표시한다. 디스플레이 장치(220)로는 복수의 디스플레이 장치, 예를 들어, 액정 디스플레이(liquid crystal display, LCD), 플라즈마 디스플레이, 유기 발광 다이오드(organic light-emitting diode, OLED) 디스플레이, 또는 기타 유형의 디스플레이 장치를 포함할 수 있다.
도 7에는 도시되어 있지 않지만, 일부 측면에서, 비디오 인코더(100)와 비디오 디코더(200)는 각각 오디오 인코더와 오디오 디코더와 통합될 수 있고, 동일한 데이터 스트림 또는 별개의 데이터 스트림에 있는 오디오와 비디오의 코딩을 처리하기 위해, 적절한 멀티플렉서-디멀티플렉서 유닛 또는 다른 하드웨어 및 소프트웨어를 포함할 수 있다. 일부 예에서, 적용 가능하면, 멀티플렉스-디멀티플렉스(multiplex-demultiplex, MUX-DEMUX) 유닛은 ITU H.223 멀티플렉서 프로토콜, 또는 사용자 데이터그램 프로토콜(user datagram protocol, UDP)과 같은, 다른 프로토콜을 준수할 수 있다.
비디오 인코더(100)와 비디오 디코더(200)는 각각 복수의 다음 회로, 예를 들어 하나 이상의 마이크로프로세서, 디지털 신호 프로세서(Digital Signal Processor, DSP), 주문형 반도체(field programmable gate array, FPGA), 이산 로직(discrete logic), 하드웨어 또는 이들의 조합 중 어느 하나로서 구현될 수 있다. 본 출원이 소프트웨어를 사용하여 부분적으로 구현되면, 이 장치는 적절한 비휘발성의 컴퓨터로 판독 가능한 저장 매체에, 소프트웨어에 사용된 명령어를 저장할 수 있고, 하드웨어에서 그 명령어를 실행하기 위해 하나 이상의 프로세서를 사용하여 본 출원에서의 기술을 구현할 수 있다. 전술한 내용 중 어느 하나(하드웨어, 소프트웨어, 하드웨어 및 소프트웨어의 조합 등 포함)는 하나 이상의 프로세서로 간주될 수 있다. 비디오 인코더(100)와 비디오 디코더(200)는 각각 하나 이상의 인코더 또는 디코더에 포함될 수 있고, 인코더 또는 디코더는 조합된 인코더/디코더의 일부로서 대응하는 장치 내의 조합된 인코더/디코더(코덱)에 통합될 수 있다.
본 출원에서, 비디오 인코더(100)는 일반적으로 다른 정보를, 예를 들어 비디오 디코더(200)에 "시그널링" 또는 "송신"하는 다른 장치로 지칭될 수도 있다. "시그널링" 또는 "송신"이라는 용어는 압축된 비디오 데이터를 디코딩하는 데 사용되는 구문 요소 및/또는 다른 데이터의 전송을 대체로 가리킨다. 전송은 실시간으로 또는 거의 실시간으로 발생할 수 있다. 대안으로, 통신은 일정 시간 후에 발생할 수 있으며, 예를 들어, 인코딩된 비트스트림 내의 구문 요소가 인코딩 중에 컴퓨터 판독 가능 저장 매체에 저장될 때에 발생할 수 있으며, 그러면 구문 요소가 매체에 저장된 후에 디코딩 장치는 언제든지 구문 요소를 검색할 수 있다.
비디오 인코더(100) 및 비디오 디코더(200)는 고효율 비디오 코딩9high efficiency video coding, HEVC) 또는 그 확장과 같은, 비디오 압축 표준에 따라 동작할 수 있고, HEVC 테스트 모델(HEVC test model, 인트라 예측기(109))을 준수할 수도 있다. 대안으로, 비디오 인코더(100) 및 비디오 디코더(200)는 다른 산업 표준, 예를 들어 ITU-T H.264 및 H.265 표준, 또는 그러한 표준의 확장판에 따라 동작할 수도 있다. 그러나 본 출원의 기술은 어떤 인코딩 및 디코딩 표준에 한정되는 것은 않는다.
일례에서, 도 4를 참조하면, 비디오 인코더(100)는 현재 코딩 영상 블록과 관련된 구문 요소를 디지털 비디오 출력 비트스트림(비트스트림 또는 간단히 스트림이라고 함)으로 인코딩하도록 구성된다. 여기서, 현재 영상 블록의 인터 예측에 사용되는 구문 요소를 간략히 인터 예측 데이터라고 하며, 인터 예측 데이터는 타깃 움직임 정보를 지시하는 데 사용되는 색인 정보를 포함할 수 있다. 현재 영상 블록을 인코딩하는 데 사용되는 타깃 움직임 정보를 결정하기 위해, 비디오 인코더(100)는 추가로, 후보 움직임 정보 리스트를 결정 또는 생성하고(S410), 스크리닝 규칙(예: RDO)에 따라 후보 움직임 정보 리스트로부터 타깃 움직임 정보를 결정하도록 구성된다(S420). 비디오 인코더(100)는 추가로, 결정된 타깃 움직임 정보 그룹에 기초하여 현재 영상 블록을 인코딩하도록 구성된다(S430). 여기에서의 인코딩 프로세스는, 결정된 타깃 움직임 정보 그룹에 기초하여 현재 영상 블록에서 각각의 움직임 보상 서브유닛(기본 움직임 보상 유닛이라고도 할 수 있음)의 움직임 정보를 예측하는 것과, 현재 영상 블록에서 하나 이상의 움직임 보상 서브유닛의 움직임 정보를 사용하여 현재 영상 블록에 대해 인터 예측을 수행하는 것을 포함할 수 있다.
기본 움직임 보상 유닛은 움직임 보상을 수행하기 위한 최소 유닛이고, 이 유닛은 통일된 움직임 정보를 갖는 것으로 이해되어야 한다. 본 발명의 실시예에서, 샘플이 기본 움직임 보상 유닛으로서 사용된다. 대안으로 기본 움직임 보상 유닛으로서 샘플 행렬 등이 사용될 수 있다. 본 출원에서는 이를 한정하지 않는다.
비디오 인코더가 AMVP 모드를 사용하여 인터 예측을 수행하는 경우, 현재 코딩 영상 블록(즉, 원래 블록)과 본 출원에서 제안된 새로운 인터 예측 방법에 기초하여 예측된 움직 정보에 기초하여 생성된 예측 블록 사이의 차이(즉, 잔차)가 0이면, 비디오 인코더(100)는 현재 코딩 영상 블록과 관련된 구문 요소만을 비트스트림(스트림이라고도 함)으로 인코딩해야 하며; 그렇지 않으면, 구문 요소 외에, 대응하는 잔차를 비트스트림으로 인코딩해야 한다. 비디오 인코더가 병합 모드를 사용하여 인터 예측을 수행하는 경우, 타깃 움직임 정보의 색인 정보만이 비트스트림으로 인코딩되어야 한다.
다른 예에서, 도 4를 참조하면, 비디오 디코더(200)는 비트스트림을 디코딩하여 현재 코딩 영상 블록과 관련된 구문 요소를 획득하고, 후보 움직임 정보 리스트를 결정한다(S410). 여기서, 현재 영상 블록의 인터 예측에 사용되는 구문 요소를 간략하게 인터 예측 데이터라고 하며, 인터 예측 데이터는 타깃 움직임 정보를 결정하는 데 사용되는 색인 정보를 포함한다. 비디오 디코더(200)는 인터 예측 데이터 내의 색인 정보에 기초하여 타깃 움직임 정보를 결정하고(S420), 결정된 타깃 움직임 정보 그룹에 기초하여 현재 영상 블록을 디코딩한다(S430). 여기에서의 디코딩 프로세스는, 결정된 타깃 움직임 정보 그룹에 기초하여 현재 영상 블록에서 하나 이상의 기본 움직임 보상 유닛의 움직임 정보를 예측하는 것, 및 현재 영상 블록에서 하나 이상의 기본 움직임 보상 유닛의 움직임 정보를 사용하여 현재 영상 블록에 대해 인터 예측을 수행하는 것을 포함할 수 있다.
선택적으로, 비디오 디코더(200)에 의해 결정되는 후보 움직임 정보 리스트는 완전한 리스트(즉, 비디오 인코더에 의해 결정되는 후보 움직임 정보 리스트와 동일한 리스트)이거나 불완전한 리스트, 예를 들어, 타깃 움직임 정보를 포함하는 부분 리스트일 수 있다. 예를 들어, 비트스트림에 실려 전달되고 타깃 움직임 정보를 결정하는 데 사용되는 색인 값이 3이면, 결정된 불완전한 리스트는 색인 값이 0, 1, 2 및 3인 후보 움직임 정보 그룹을 포함하지만, 색인 값이 4, 5 등인 후보 움직임 정보 그룹을 포함하지 않을 수 있다.
전술한 내용으로부터, 본 출원에서 제공되는 비디오 인코더(100) 및 비디오 디코더(200)는 두 가지 유형의 후보 움직임 정보 그룹을 포함하는 후보 움직임 정보 리스트를 구성한다는 것을 알 수 있다. 두 가지 유형의 후보 움직임 정보 그룹은 통일적으로 조율된 색인 정보를 갖는다. 두 가지 유형의 후보 움직임 정보 그룹 중 하나가 현재 영상 블록에 적용 불가능하면, 비디오 인코더(100)는 후보 움직임 정보 리스트에 포함된 다른 유형의 후보 움직임 정보 그룹으로부터 타깃 움직임 정보를 선택하고, 비트스트림을 사용하여 비디오 디코더(200)에 타깃 움직임 정보의 색인 정보를 전송할 수 있다. 후보 움직임 정보 리스트 내의 후보 움직임 정보 그룹은 유일한 색인 정보를 가지기 때문에, 비디오 인코더(100)는 비트스트림에서, 비디오 인코더(100)에 의해 사용되는 후보 움직임 정보 리스트 구성 방법을 지시하는 지시 정보를 전송할 필요가 없다. 이는 비디오 송신의 비트 오버헤드를 감소시킨다.
도 8은 본 출원의 일 실시예에 따른 예시적인 비디오 인코더(100)의 블록도이다. 비디오 인코더(100)는 비디오를 후처리 엔티티(post-processing entity)(41)에 출력하도록 구성된다. 후처리 엔티티(41)는 비디오 인코더(100)로부터 인코딩된 비디오 데이터를 처리할 수 있는 비디오 엔티티의 인스턴스, 예를 들어 미디어 인식 네트워크 요소(media aware network element, MANE) 또는 슬라이싱 장치/편집 장치를 나타낸다. 일부 경우에, 후처리 엔티티(41)는 네트워크 엔티티의 인스턴스일 수 있다. 일부 비디오 인코딩 시스템에서, 후처리 엔티티(41)와 비디오 인코더(100)는 개별 장치의 일부일 수 있지만, 다른 경우에, 후처리 엔티티(41)를 참조하여 설명된 기능은 비디오 인코더(100)를 포함하는 동일한 장치에 의해 수행될 수 있다. 일례에서, 후처리 엔티티(41)는 도 7의 저장 장치(40)의 인스턴스이다.
비디오 인코더(100)는 본 출원에서 제공되는 방법에 따라 비디오 영상 블록 인터 예측을 수행할 수 있다.
도 8의 예에서, 비디오 인코더(100)는 예측 처리 유닛(108), 필터 유닛(106), 디코딩된 영상 버퍼(decoded picture buffer, DPB)(107), 합산기(summator)(112), 변환기(101), 양자화기(102) 및 엔트로피 인코더(103)를 포함한다. 예측 처리 유닛(108)은 인터 예측기(110) 및 인트라 예측기(109)를 포함한다. 영상 블록의 재구성을 위해, 비디오 인코더(100)는 역 양자화기(104), 역 변환기(105) 및 가산 기(111)를 더 포함한다. 필터 유닛(106)은 하나 이상의 루프 필터, 예를 들어 디블로킹 필터(deblocking filter), 적응형 루프 필터(adaptive loop filter, ALF) 및 샘플 적응형 오프셋(sample adaptive offset, SAO) 필터를 더 나타내도록 의도된다. 비록 필터 유닛(106)이 도 8에서는 루프 내 필터(in-loop filter)로서 도시되어 있지만, 다른 구현예에서, 필터 유닛(106)은 루프 후 필터(post-loop filter)로서 구현될 수 있다. 일례에서, 비디오 인코더(100)는 비디오 데이터 메모리 및(도시되지 않은) 분할 유닛(partitioning unit)을 더 포함할 수 있다.
비디오 데이터 메모리는 비디오 인코더(100)의 구성요소에 의해 인코딩될 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리에 저장된 비디오 데이터는 비디오 소스(120)로부터 획득될 수 있다. DPB(107)는 인트라 코딩 모드 및 인터 코딩 모드에서 비디오 인코더(100)에 의해 비디오 데이터를 인코딩하는 데 사용되는 참조 비디오 데이터를 저장하는 참조 영상 메모리일 수 있다. 비디오 데이터 메모리와 DPB(107)는 각각 복수의 메모리 장치, 예를 들어, 동기식 동적 랜덤 액세스 메모리(synchronous dynamic random access memory(DRAM), SFDRAM), 자기저항식 RAM(magnetoresistive RAM, MRAM), 저항식 RAM(resistive RAM, RRAM) 또는 기타 유형의 메모리 장치를 포함하는 동적 랜덤 액세스 메모리(DRAM)로 구성될 수 있다. 비디오 데이터 메모리와 DPB(107)는 동일한 메모리 장치 또는 별개의 메모리 장치에 의해 제공될 수 있다. 다양한 예에서, 비디오 데이터 메모리는 비디오 인코더(100)의 다른 구성요소와 함께 칩상에 위치할 수 있거나, 그러한 구성요소에 대해 칩 외부에 위치할 수도 있다.
도 8에 도시된 바와 같이, 비디오 인코더(100)는 비디오 데이터를 수신하고 비디오 데이터 메모리에 비디오 데이터를 저장한다. 분할 유닛은 비디오 데이터를 여러 영상 블록으로 분할하고, 이들 영상 블록은, 예를 들어 쿼드 트리 구조(quadtree structure) 또는 이진 트리 구조(binary-tree structure)에 기초한 영상 블록 분할을 통해, 더 작은 블록으로 더 분할될 수 있다. 분할은 슬라이스(slice), 타일(tile) 또는 다른 더 큰 단위로 분할하는 것을 더 포함할 수 있다. 비디오 인코더(100)는 일반적으로 코딩 비디오 슬라이스에서 영상 블록을 인코딩하기 위한 구성요소를 포함한다. 슬라이스는 복수의 영상 블록으로 분할될 수 있다(그리고 타일이라고 하는 영상 블록 세트로 분할될 수 있다). 예측 처리 유닛(108)(구체적으로 예측 처리 유닛(108)에서 인터 예측 유닛(110) 임)은 현재 영상 블록의 후보 움직임 정보 리스트를 결정하고, 스크리닝 규칙에 따라 후보 움직임 정보 리스트로부터 타깃 움직임 정보를 결정하고, 타깃 움직임 정보에 기초하여 현재 영상 블록에 대해 인터 예측을 수행할 수 있다. 예측 처리 유닛(108)은 인트라 디코딩 및 인터 디코딩 후에 획득되는 블록을 합산기(112)에 제공하여 잔차 블록을 생성할 수 있고, 그 블록은 참조 화상으로서 사용되는 코딩된 블록을 재구성하기 위해 합산기(111)에 제공된다. 또한, 예측 처리 유닛(108)(구체적으로 인터 예측 유닛(110)임)은 타깃 움직임 정보의 색인 정보를 엔트로피 인코더(103)로 전송하여, 엔트로피 인코더(103)가 타깃 움직임 정보의 색인 정보를 비트스트림으로 인코딩할 수 있도록 한다.
예측 처리 유닛(108) 내의 인트라 예측기(109)는 공간적 용장도를 제거하기 위해, 현재 코딩 블록과 동일한 프레임 또는 슬라이스에서 하나 이상의 이웃 블록들에 대한 현재 영상 블록에 대해 인트라 예측 인코딩을 수행할 수 있다. 예측 처리 유닛(108) 내의 인터 예측기(110)는 시간적 용장도를 제거하기 위해, 하나 이상의 참조 영상에서 하나 이상의 예측 블록에 대한 현재 영상 블록에 대해 인터 예측 인코딩을 수행할 수 있다.
구체적으로, 인터 예측기(110)는 타깃 움직임 정보를 결정하도록 구성될 수 있다. 예를 들어, 인터 예측 부(110)는 레이트 왜곡 분석(Rate-distortion analysis)을 통해, 후보 움직임 정보 리스트 내의 각각의 움직임 정보 그룹의 레이트 왜곡 값을 계산하고, 후보 움직임 정보 리스트에서 최적 레이트 왜곡 특징을 갖는 움직임 정보 그룹을 선택할 수 있다. 레이트 왜곡 분석은 일반적으로, 코딩된 블록과 인코딩되지 않은, 코딩된 블록을 생성하기 위해 인코딩될 원래 블록 사이의 왜곡(또는 에러)의 양을 결정하고, 코딩된 블록을 생성하는 데 사용되는 비트 레이트(즉, 비트 수량)를 결정하기 위한 것이다. 예를 들어, 인터 예측기(110)는 현재 영상 블록에 대해 인터 예측을 수행하기 위해 사용되는 타깃 움직임 정보로서 후보 움직임 정보 리스트 내의 움직임 정보 그룹을 결정할 수 있고, 여기서 레이트 왜곡 비용은, 후보 움직임 정보 리스트 내의 움직임 정보 그룹이 현재 영상 블록을 인코딩하는 데 사용되는 경우에 최저이다. 이하에서는 인터 예측 인코딩 프로세스를 상세히 설명한다.
인터 예측기(110)은 결정된 타깃 움직임 정보 그룹에 기초하여 현재 영상 블록에서 하나 이상의 기본 움직임 보상 유닛의 움직임 정보(예: 움직임 벡터)를 예측하고, 현재 영상 블록에서 하나 이상의 기본 움직임 보상 유닛의 움직임 정보(예: 움직임 벡터)를 사용하여 현재 영상 블록의 예측 블록을 획득 또는 생성하도록 구성된다. 인터 예측기(110)는 참조 영상 리스트 내의 하나의 참조 영상에서, 움직임 벡터가 가리키는 예측 블록을 위치를 결정할 수 있다. 인터 예측기(110)는 추가로, 비디오 슬라이스의 영상 블록을 디코딩할 때에 비디오 디코더(200)에 의해 사용하기 위해, 영상 블록 및 비디오 슬라이스와 연관된 구문 요소를 생성할 수 있다. 대안으로, 일례에서, 인터 예측 유닛(110)은 각각의 기본 움직임 보상 유닛의 움직임 정보를 사용하여 움직임 보상 프로세스를 수행하여, 각각의 기본 움직임 보상 유닛의 예측 블록을 생성하여, 현재 영상 블록의 예측 블록을 획득할 수 있다. 여기에서의 인터 예측기(110)는 움직임 추정 프로세스 및 움직임 보상 프로세스를 수행한다는 것을 이해해야 한다.
구체적으로, 현재 영상 블록에 대한 타깃 움직임 정보를 선택한 후, 인터 예측기(110)는 엔트로피 인코더(103)에, 현재 영상 블록의 타깃 움직임 정보를 지시하는 정보를 제공하여, 엔트로피 인코더(103)가 선택된 타깃 움직임 정보 그룹을 지시하는 정보를 인코딩할 수 있도록 한다. 본 출원에서, 엔트로피 인코더(103)는 송신된 비트스트림에, 현재 영상 블록과 관련된 인터 예측 데이터를 추가할 수 있으며, 인터 예측 데이터는 후보 움직임 정보 리스트로부터 선택된 타깃 움직임 정보를 지시하기 위해, 색인 정보를 포함할 수 있다.
인트라 예측기(109)는 현재 영상 블록에 대해 인트라 예측을 수행할 수 있다. 구체적으로, 인트라 예측기(109)는 현재 블록을 인코딩하는 데 사용되는 인트라 예측 모드를 결정할 수 있다. 예를 들어, 인트라 예측기(109)는 레이트 왜곡 분석을 통해 각각의 테스트될 후보 움직임 정보 그룹의 레이트 왜곡 값을 계산하고, 테스트될 모드 중에서 최적 레이트 왜곡 특성을 갖는 인트라 예측 모드를 선택할 수 있다. 어느 경우든, 인트라 예측기(109)는 영상 블록에 대한 타깃 움직임 정보를 선택한 후, 현재 영상 블록의 타깃 움직임 정보를 엔트로피 인코더(103)에 제공하여, 엔트로피 인코더(103)가 타깃 움직임 정보를 인코딩할 수 있도록 한다.
예측 처리 유닛(108)이 인터 예측 및 인트라 예측을 통해 현재 영상 블록의 예측 블록을 생성한 후, 비디오 인코더(100)는 현재 코딩 영상 블록에서 예측 블록을 감산하여 잔차 영상 블록을 형성한다. 합산기(112)는 이러한 감산 작업을 수행하는 하나 이상의 구성요소를 나타낸다. 잔차 블록 내의 잔차 비디오 데이터는 하나 이상의 TU에 포함되고 변환기(101)에 적용될 수 있다. 변환기(101)는 이산 코사인 변환(discrete cosine transformation, DCT) 또는 개념적으로 유사한 변환과 같은, 변환을 통해 잔차 비디오 데이터를 잔차 변환 계수로 변환한다. 변환기(101)는 잔차 비디오 데이터를 샘플 값 영역에서 변환 영역, 예를 들어 주파수 영역으로 변환할 수 있다.
변환기(101)는 획득된 변환 계수를 양자화기(102)에 전송할 수 있다. 양자화기(102)는 변환 계수를 양자화하여 비트 레이트를 더 감소시킨다. 일부 예에서, 양자화기(102)는 양자화된 변환 계수를 포함하는 행렬을 스캐닝할 수 있다. 대안으로, 엔트로피 인코더(103)는 스캐닝을 수행할 수 있다.
양자화 후, 엔트로피 인코더(103)는 양자화된 변환 계수에 대해 엔트로피 코딩을 수행한다. 예를 들어, 엔트로피 인코더(103)는 컨텍스트 적응형 가변 길이 코딩(context adaptive variable length coding, CAVLC), 컨텍스트 적응형 이진 산술 코딩(context adaptive binary arithmetic coding, CABAC), 구문 기반 컨텍스트 적응형 이진 산술 코딩(syntax-based context-adaptive binary arithmetic coding, SBAC), 확률 구간 분할 엔트로피(probability interval partitioning entropy, PIPE) 코딩, 또는 기타 엔트로피 코딩 방법 또는 기술을 수행할 수 있다.
엔트로피 인코더(103)가 엔트로피 코딩을 수행한 후, 인코딩된 비트스트림은 비디오 디코더(200)로 송신되거나, 후속 송신을 위해 보관되거나(archived), 비디오 디코더(200)에 의해 검색될 수 있다. 엔트로피 인코더(103)는 추가로, 코딩 현재 영상 블록의 구문 요소에 대해 엔트로핑 코딩을 수행, 예를 들어, 타깃 움직임 정보를 비트스트림으로 인코딩할 수 있다.
역 양자화기(104)와 역 변환기(105)는 각각 역 양자화 및 역변환을 적용하여, 샘플 영역에서 잔차 블록을 재구성하고, 예를 들어 잔차 블록은 이후에 참조 영상의 참조 블록으로 사용된다. 합산기(111)는 재구성된 잔차 블록을 인터 예측기(110) 또는 인트라 예측기(109)에 의해 생성된 예측 블록에 더하여, 재구성된 영상 블록을 생성한다. 필터 유닛(106)은 블록 아티팩트(block artifact)와 같은 왜곡을 감소시키기 위해 재구성된 영상 블록에 적용 가능하다. 그 후, 재구성된 영상 블록은 디코딩된 영상 버퍼(107)에 참조 블록으로서 저장되고, 후속 비디오 프레임 또는 영상의 블록에 대해 인터 예측을 수행하기 위해 인터 예측기(110)에 의해 참조 블록으로서 사용될 수 있다.
비디오 인코더(100)의 다른 구조적 변형이 비디오 스트림을 인코딩하는 데 사용될 수도 있음을 이해해야 한다. 예를 들어, 일부 영상 블록 또는 영상 프레임에 대해, 비디오 인코더(100)는 변환기(101)에 의한 처리 없이, 이에 상응하여 역 변환기(105)에 의한 처리 없이 잔차 신호를 직접 양자화할 수 있다. 대안으로, 일부 영상 블록 또는 영상 프레임에 대해, 비디오 인코더(100)는 잔차 데이터를 생성하지 않고, 이에 상응하여, 변환기(101), 양자화기(102), 역 양자화기(104) 및 역 변환기(105)에 의한 처리는 필요하지 않다. 대안으로, 비디오 인코더(100)는 필터 유닛(106)에 의한 처리 없이 재구성된 영상 블록을 참조 블록으로서 직접 저장할 수 있다. 대안으로, 비디오 인코더(100) 내의 양자화기(102) 및 역 양자화기(104)가 결합될 수도 있다.
도 9는 본 출원의 일 실시예에 따른 예시적인 비디오 디코더(200)의 블록도이다. 도 9의 예에서, 비디오 디코더(200)는 엔트로피 디코더(203), 예측 처리 유닛(208), 역 양자화기(204), 역 변환기(205), 합산기(211), 필터 유닛(206) 및 디코딩된 영상 버퍼(207)를 포함한다. 일부 예에서, 비디오 디코더(200)는 도 8의 비디오 인코더(100)를 참조하여 설명한 인코딩 프로세스와 실질적으로 역인, 디코딩 프로세스를 수행할 수 있다.
디코딩 동안, 비디오 디코더(200)는 비디오 인코더(100)로부터, 인코딩된 비디오 슬라이스의 영상 블록 및 연관된 구문 요소를 나타내는 인코딩된 비디오 비트스트림을 수신한다. 비디오 디코더(200)는 네트워크 엔티티(42)로부터 비디오 데이터를 수신할 수 있고, 선택적으로, 추가로 그 비디오 데이터를 비디오 데이터 메모리(도시되지 않음)에 저장할 수 있다. 비디오 데이터 메모리는 비디오 디코더(200)의 구성요소에 의해 디코딩될 비디오 데이터, 예를 들어 인코딩된 비디오 비트스트림을 저장할 수 있다. 비디오 데이터 메모리에 저장된 비디오 데이터는, 예를 들어, 저장 장치(40) 또는 카메라와 같은 로컬 비디오 소스로부터, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통해, 또는 물리 데이터 저장 매체에 액세스함으로써 획득될 수 있다. 비디오 데이터 메모리는 인코딩된 비디오 비트스트림으로부터 인코딩된 비디오 데이터를 저장하도록 구성된 디코딩된 영상 버퍼(CPB)로서 사용될 수 있다. 따라서, 도 9에는 비디오 데이터 메모리가 도시되지 않았지만, 비디오 데이터 메모리와 DPB(207)는 동일한 메모리일 수 있거나, 개별적으로 배치된 메모리일 수 있다. 비디오 데이터 메모리와 DPB(207) 각각은 복수의 메모리 장치, 예를 들어, 동기식 DRAM(SDRAM), 자기 저항 RAM(MRAM), 저항식 RAM(RRAM), 또는 기타 유형의 메모리 장치를 포함하는 동적 랜덤 액세스 메모리(DRAM)로 구성될 수 있다. 다양한 예에서, 비디오 데이터 메모리는 비디오 디코더(200)의 다른 구성요소와 하나의 칩에 통합될 수 있거나, 또는 그러한 구성요소에 대해 칩 외부에 배치될 수 있다.
네트워크 엔티티(42)는, 예를 들어, 서버, MANE, 비디오 편집기/스플라이 서, 또는 전술한 하나 이상의 기술을 구현하도록 구성된 다른 그러한 장치일 수 있다. 네트워크 엔티티(42)는 비디오 인코더, 예를 들어 비디오 인코더(100)를 포함하거나 포함하지 않을 수 있다. 네트워크 엔티티(42)는 인코딩된 비디오 비트스트림을 비디오 디코더(200)에 전송하기 전에, 네트워크 엔티티(42)는 본 출원에 기재된 기술의 일부를 구현할 수 있다. 일부 비디오 디코딩 시스템에서, 네트워크 엔티티(42)와 비디오 디코더(200)는 별개의 장치의 일부일 수 있지만, 다른 경우에, 네트워크 엔티티(42)를 참조하여 설명된 기능은 비디오 디코더(200)를 포함하는 동일한 장치에 의해 수행될 수 있다. 일부 경우에, 네트워크 엔티티(42)는 도 7의 저장 장치(40)의 인스턴스일 수 있다.
비디오 디코더(200)의 엔트로피 디코더(203)는 비트스트림에 대해 엔트로피 디코딩을 수행하여 양자화된 계수 및 일부 구문 요소를 생성한다. 엔트로피 디코더(203)는 구문 요소를 예측 처리 유닛(208)에 포워딩한다. 비디오 디코더(200)는 구문 요소 및/또는 구문 요소들을 비디오 슬라이스 레벨 및/또는 영상 블록 레벨에서 수신할 수 있다. 본 출원에서, 일례에서, 여기에서의 구문 요소는 현재 영상 블록과 관련된 타깃 움직임 정보를 포함할 수 있다.
비디오 슬라이스를 디코딩하여 인트라 디코딩된(I) 슬라이스를 획득하는 경우, 예측 처리 유닛(208)의 인트라 예측기(209)는 시그널링된 인트라 예측 모드 및, 현재 프레임 또는 영상으로부터 온 이전에 디코딩된 블록의 데이터에 기초하여 현재 비디오 슬라이스의 영상 블록의 예측 블록을 생성할 수 있다. 비디오 슬라이스를 디코딩하여 인터 디코딩된(즉, B 또는 P) 슬라이스를 획득하는 경우, 예측 처리 유닛(208)의 인터 예측기(210)는 엔트로피 디코더(203)로부터 수신된 구문 요소에 기초하여, 현재 비디오 슬라이스의 현재 영상 블록을 디코딩하는 데 사용되는 타깃 움직임 정보를 결정하고, 결정된 타깃 움직임 정보 그룹에 기초하여 현재 영상 블록을 디코딩(예: 인터 예측을 수행)한다. 구체적으로, 인터 예측기(210)는 현재 비디오 슬라이스의 현재 영상 블록을 예측하기 위해 새로운 인터 예측 방법을 사용할지 여부(구체적으로, 본 출원의 방법을 사용하여 후보 움직임 정보 리스트를 결정할지 여부)를 판정할 수 있고; 구문 요소가 새로운 인터 예측 방법을 사용하여 현재 영상 블록을 예측하도록 명령하면, 인터 예측기(210)는 새로운 인터 예측 방법(예: 구문 요소에 의해 지정된 새로운 인터 예측 방법 또는 디폴트의 새로운 인터 예측 방법)에 기초하여, 현재 비디오 슬라이스의 현재 영상 블록의 움직임 정보 그룹 또는 현재 영상 블록의 기본 움직임 보상 유닛을 예측하여, 움직임 보상 프로세스에서, 현재 영상 블록의 예측된 움직임 정보 그룹 또는 현재 영상 블록의 기본 움직임 보상 유닛을 사용하여, 현재 영상의 예측 블록 또는 현재 영상 블록의 기본 움직임 보상 유닛을 획득하거나 생성한다. 여기에서의 움직임 정보 그룹은 참조 영상 정보 및 움직임 벡터를 포함할 수 있다. 참조 영상 정보는 단방향/양방향 예측 정보, 참조 영상 리스트 번호 및 참조 영상 리스트에 대응하는 참조 영상 색인을 포함할 수 있으나, 이에 한정되는 것은 아니다. 인터 예측을 위해, 예측 블록은 참조 영상 리스트 중 하나 내의 참조 영상 중 하나로부터 생성될 수 있다. 비디오 디코더(200)는 DPB(207)에 저장된 참조 영상들에 기초하여, 참조 영상 리스트, 즉 리스트 0 및 리스트 1을 구성할 수 있다. 현재 영상의 참조 색인은 참조 프레임 리스 0과 참조 프레임 리스트 1 중 하나 이상에 포함될 수 있다. 일부 예에서, 비디오 인코더(100)는 새로운 인터 예측 모드를 사용하여 특정 블록의 특정 구문 요소를 디코딩할지 여부를 지시하기 위해 시그널링할 수 있거나, 새로운 인터 예측 모드를 사용할지 여부를 지시하고 특정 블록의 특정 구문 요소를 디코딩하는 데 사용되는 특정 새로운 인터 예측 모드를 지시하기 위해 시그널링할 수 있다. 여기에서의 인터 예측기(210)는 움직임 보상 프로세스를 수행하는 것으로 이해되어야 한다.
전술한 방법 실시예는 두 개의 제어점(4 파라미터)의 아핀 모델(예: 회전 스케일링 아핀 모델(rotational scaling affine model)), 세 개의 제어점(6 파라미터)의 아핀 모델(예: 회전 스케일링 아핀 모델) 또는 네 개의 제어점(8 파라미터)의 아핀 모델(예: 원근 아핀 모델(perspective affine model))을 사용하여, 현재 영상 블록의 움직임 정보 그룹 또는 현재 영상 블록의 기본 움직임 보상 유닛을 예측하는 인터 예측 프로세스를 상세히 설명하였다.
역 양자화기(204)는 비트스트림에 제공되고 엔트로피 디코더(203)에 의한 디코딩을 통해 획득되는 양자화된 변환 계수에 대해 역 양자화, 즉 양자화 제거(dequantize)를 역 양자화를 수행한다. 역 양자화 프로세스는 다음: 비디오 슬라이스 내의 각각의 영상 블록에 대해 비디오 인코더(100)에 의해 계산되는 양자화 파라미터를 사용하여 적용될 양자화 정도(quantization degree)를 결정하고, 마찬가지로 적용될 역양자화 정도를 결정하는 것을 포함할 수 있다. 역 변환기(205)는 샘플 영역에서 잔차 블록을 생성하기 위해, 역 변환, 예를 들어 역 DCT, 역 정수 변환 또는 개념적으로 유사한 역 변환 프로세스를 변환 계수에 적용한다.
인터 예측기(210)가 현재 영상 블록 또는 현재 영상 블록의 서브블록에 사용되는 예측 블록을 생성한 후, 비디오 디코더(200)는 역 변환기(205)로부터의 잔차 블록과 인터 예측기(210)에 의해 생성되는 대응하는 예측 블록의 합을 계산함으로써, 재구성된 블록, 즉 디코딩된 영상 블록을 획득한다. 합산기(211)는 이러한 합산 작업을 수행하는 구성요소를 나타낸다. 필요한 경우, 루프 필터(디코딩 루프 내에 또는 디코딩 루프 뒤에)가 샘플 전이를 매끄럽게 하거나 다른 방식으로 비디오 품질을 향상시키는 데 추가로 사용될 수 있다. 필터 유닛(206)은 하나 이상의 루프 필터, 예를 들어 디블로킹 필터, 적응형 루프 필터(ALF) 및 샘플 적응형 오프셋(SAO) 필터를 나타낼 수 있다. 비록 필터 유닛(206)은 도 9에서 루프 내 필터로서 도시되어 있지만, 다른 구현예에서, 필터 유닛(206)은 루프 후 필터로서 구현될 수 있다. 일례에서, 필터 유닛(206)은 블록 왜곡을 감소시키기 위해 블록 재구성에 적용 가능하고, 그 결과는 디코딩된 비디오 스트림으로서 출력된다. 또한, 주어진 프레임 또는 영상에서 디코딩된 영상 블록은 디코딩된 영상 버퍼(207)에 추가로 저장될 수 있고, 디코딩된 영상 버퍼(207)는 후속 움직임 보상에 사용되는 참조 영상을 저장한다. 디코딩된 영상 버퍼(207)는 메모리의 일부일 수 있고, 디스플레이 장치(예: 도 7의 디스플레이 장치(220))에서 후속 프리젠테이션을 위해 디코딩된 비디오를 추가로 저장할 수 있거나; 또는 그러한 메모리와 분리될 수 있다.
인코딩된 비디오 비트스트림을 디코딩하기 위해 비디오 디코더(200)의 다른 구조적 변형이 사용될 수도 있음을 이해해야 한다. 예를 들어, 비디오 디코더(200)는 필터 유닛(206)에 의한 처리 없이 출력 비디오 스트림을 생성할 수 있다. 대안으로, 일부 영상 블록 또는 영상 프레임에 대해, 비디오 디코더(200)의 엔트로피 디코더(203)는 디코딩을 통해 양자화된 계수를 획득하지 않으며, 이에 상응하여, 역 양자화기(204) 및 역 변환기(205)에 의한 처리는 요구되지 않는다.
도 10은 본 출원의 일 실시예에 따른 인터 예측 장치(1000)의 개략 블록도이다. 인터 예측 장치(1000)는 비디오 영상을 디코딩하기 위한 인터 예측뿐만 아니라 비디오 영상을 인코딩하기 위한 인터 예측에도 적용 가능하다는 점에 유의해야 한다. 여기에서의 인터 예측 장치(1000)는 도 8의 인터 예측기(110)에 대응할 수 있거나, 도 9의 인터 예측기(210)에 대응할 수 있음을 이해해야 한다. 인터 예측 장치(1000)는,
현재 영상 블록의 후보 움직임 정보 리스트를 결정하도록 구성된 후보 움직임 정보 리스트 결정 유닛(1001) - 여기서 후보 움직임 정보 리스트는 하나 이상의 제1 후보 움직임 정보 그룹, 하나 이상의 제2 후보 움직임 정보 그룹, 및 제1 후보 움직임 정보 그룹과 제2 후보 움직임 정보 그룹을 색인화하는 데 사용되는 복수의 색인 정보를 포함하고, 제1 후보 움직임 정보 그룹은 현재 영상 블록의 제1 이웃 영상 블록상의 미리 설정된 위치의 움직임 정보 및 제1 이웃 영상 블록의 움직임 모델에 기초하여 결정되는 움직임 정보 그룹이고, 제2 후보 움직임 정보 그룹은 현재 영상 블록상의 둘 이상의 미리 설정된 위치에 각각 이웃하는 둘 이상의 샘플 위치의 움직임 정보의 세트이고, 둘 이상의 샘플 위치는 상기 현재 영상 블록의 하나 이상의 제2 이웃 영상 블록에 위치함 -; 및
후보 움직임 정보 리스트로부터 타깃 움직임 정보를 결정하도록 구성되고, 추가로, 타깃 움직임 정보에 기초하여 현재 영상 블록에 대해 인터 예측을 수행하도록 구성된 인터 예측 처리 유닛(1002)을 포함한다.
인터 예측 장치(1000)는 두 가지 유형의 후보 움직임 정보 그룹을 포함하는 후보 움직임 정보 리스트를 구성한다는 것을 알 수 있다. 두 가지 유형의 후보 움직임 정보 그룹은 통일적으로 조율된 색인 정보를 정보를 갖는다. 두 가지 유형의 후보 움직임 정보 그룹 중 하나가 현재 영상 블록에 적용 불가능하면, 인코더 측은 후보 움직임 정보 리스트에 포함된 다른 유형의 후보 움직임 정보 그룹으로부터 타깃 움직임 정보를 선택하고, 비트스트림을 사용하여 타깃 움직임 정보의 색인 정보를 디코더 측에 전송할 수 있다. 후보 움직임 정보 리스트 내의 후보 움직임 정보 그룹은 유일한 색인 정보를 가지기 때문에, 인코더 측은 인코더 측에 의해 사용되는 움직임 추정 방법을 지시하는 지시 정보를 비트스트림에서 전송할 필요가 없다. 이는 비디오 송신의 비트 오버헤드를 감소시킨다.
실현 가능한 구현예에서, 복수의 색인 정보 중의 제1 색인 정보의 비트 수량이 복수의 색인 정보 내의 제2 색인 정보의 비트 수량보다 적으며, 제1 색인 정보는 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹에 대응하고, 제2 색인 정보는 후보 움직임 정보 리스트에 나중에 추가되는 움직임 정보 그룹에 대응하며; 인터 예측 처리 유닛(1002)은 구체적으로, 먼저 제1 후보 움직임 정보 그룹을 후보 움직임 정보 리스트에 추가하고, 그런 다음, 제2 후보 움직임 정보 그룹을 후보 움직임 정보 리스트에 추가하도록 구성된다.
제1 후보 움직임 정보 그룹은 움직임 모델 기반 움직임 정보 그룹이고, 제1 후보 움직임 정보 그룹에 기초하여 인코딩/디코딩을 수행하는 효율은 제2 후보 움직임 정보 그룹에 기초하여 인코딩/디코딩을 수행하는 효율보다 높다. 따라서, 제1 후보 움직임 정보 그룹이 타깃 움직임 정보일 확률이 비교적 높다. 이러한 방식으로, 제1 후보 움직임 정보 그룹의 색인 정보는 비교적 소량의 비트를 갖는 색인 정보로 설정될 수 있다. 이는 비디오 송신의 비트 오버헤드를 감소시키는 데 도움이 된다.
일부 가능한 구현 시나리오에서, 제1 이웃 영상 블록이 병진 움직임 모델을 사용한 제1 이웃 영상 블록 및 비병진 움직임 모델을 사용한 제1 이웃 영상 블록을 포함하면, 복수의 색인 정보 중의 제1 색인 정보의 비트 수량은 복수의 색인 정보 중의 제2 색인 정보의 비트 수량보다 적고, 제1 색인 정보는 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹에 대응하고, 제2 색인 정보는 후보 움직임 정보 리스트에 나중에 추가되는 움직임 정보 그룹에 대응하며, 인터 예측 처리 유닛(1002)은 구체적으로,
비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 수량이 수량 임계 값 이상인 경우, 비병진 움직임 모델을 사용한 제1 이웃 영상 블록상의 둘 이상의 미리 설정된 위치의 움직임 정보 및 비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 움직임 모델에 기초하여, 현재 영상 블록에 대응하는 둘 이상의 미리 설정된 위치의 움직임 정보를 도출하고, 현재 영상 블록에 대응하는 둘 이상의 미리 설정된 위치의 움직임 정보를 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 추가한 다음, 제2 후보 움직임 정보 그룹을 후보 움직임 정보 리스트에 추가하도록 구성된다.
비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 수량이 수량 임계 값 이상이면, 이는 현재 영상 블록이 비병진 움직임 모델을 사용한 영상 블록일 확률이 비교적 높다는 것을 지시한다. 따라서, 비병진 움직임 모델을 사용한 제1 이웃 영상 블록에 기초하여 도출되는 제1 후보 움직임 정보 그룹은 먼저 후보 움직임 정보 리스트에 추가될 수 있고, 그런 다음 제2 후보 움직임 정보 그룹이 후보 움직임 정보 리스트에 추가될 수 있다. 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이는 비교적 짧고, 타깃 움직임 정보가 후보 움직임 정보 리스트에 먼저 추가된 움직임 정보 그룹일 확률이 비교적 높다. 따라서, 이는 비디오 송신의 비트 오버헤드를 감소시키는 데 도움이 된다.
일부 실현 가능한 구현예에서, 후보 움직임 정보 리스트를 결정하는 측면에서, 인터 예측 처리 유닛(1002)은 구체적으로,
후보 움직임 정보 리스트의 길이가 길이 임계 값보다 작고, 제1 이웃 영상 블록은 병진 움직임 모델을 사용한 제1 이웃 영상 블록을 더 포함하는 경우, 병진 움직임 모델을 사용한 제1 이웃 영상 블록의 움직임 정보 그룹을 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 더 추가하고; 후보 움직임 정보 리스트의 길이가 여전히 길이 임계 값보다 작으면, 영 움직임 정보를 후보 움직임 정보 리스트에 추가하도록 구성된다.
일부 가능한 구현 시나리오에서, 제1 이웃 영상 블록이 병진 움직임 모델을 사용한 제1 이웃 영상 블록 및 비병진 움직임 모델을 사용한 제1 이웃 영상 블록을 포함하면, 복수의 제1 색인 정보 중의 제1 색인 정보의 비트 수량은 복수의 색인 정보 중의 제2 색인 정보의 비트 수량보다 적고, 제1 색인 정보는 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹에 대응하고, 제2 색인 정보는 후보 움직임 정보 리스트에 나중에 추가되는 움직임 정보 그룹에 대응하며, 인터 예측 처리 유닛(1002)은 구체적으로,
비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 수량이 수량 임계 값 이하인 경우, 먼저 병진 움직임 모델을 사용한 제1 이웃 영상 블록의 움직임 정보 그룹을 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 추가하고, 그런 다음 제2 후보 움직임 정보 그룹을 후보 움직임 정보 리스트에 추가하도록 구성된다.
비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 수량이 수량 임계 값 이하이면, 이는 현재 영상 블록이 병진 움직임 모델을 사용한 영상 블록일 확률이 비교적 높다는 것을 지시한다. 따라서, 병진 움직임 모델을 사용한 제1 이웃 영상 블록의 움직임 정보 그룹은 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 먼저 추가될 수 있고, 그런 다음 제2 후보 움직임 정보 그룹이 후보 움직임 정보 리스트에 추가된다. 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹의 색인 정보의 빈 스트링의 길이는 비교적 짧고, 타깃 움직임 정보가 후보 움직임 정보 리스트에 먼저 추가되는 움직임 정보 그룹일 확률은 비교적 높다. 따라서 이는 비디오 송신의 비트 오버헤드를 감소시키는 데 도움이 된다.
일부 실현 가능한 구현예에서, 후보 움직임 정보 리스트를 결정하는 측면에서, 인터 예측 처리 유닛(1002)은 구체적으로,
후보 움직임 정보 리스트의 길이가 길이 임계 값보다 작고, 제1 이웃 영상 블록이 비병진 움직임 모델을 사용한 제1 이웃 영상 블록을 더 포함하는 경우, 비병진 움직임 모델을 사용한 제1 이웃 영상 블록상의 둘 이상의 이미 설정된 위치의 움직임 정보 및 비병진 움직임 모델을 사용한 제1 이웃 영상 블록의 움직임 모델에 기초하여, 현재 영상 블록상의 둘 이상의 미리 설정된 위치의 움직임 정보를 추가로 도출하고, 현재 영상 블록상의 둘 이상의 미리 설정된 위치의 움직임 정보를 제1 후보 움직임 정보 그룹으로서 후보 움직임 정보 리스트에 추가하고; 후보 움직임 정보 리스트의 길이가 여전히 길이 임계 값보다 작으면, 영 움직임 정보를 후보 움직임 정보 리스트에 추가하도록 구성된다.
일부 가능한 구현 시나리오에서, 제1 후보 움직임 정보 그룹과 제2 후보 움직임 정보 그룹은 모두 현재 영상 블록상의 제1 위치 그룹이고, 현재 영상 블록상의 둘 이상의 미리 설정된 위치는 제2 위치 그룹이며, 인터 예측 처리 유닛(1002)은 구체적으로,
제2 위치 그룹이 제1 위치 그룹과 상이한 경우, 위치 변환 공식에 따라 그리고 제2 위치에 대응하는 움직임 정보에 기초하여 제2 후보 움직임 정보 그룹을 도출하도록 구성된다.
제1 후보 움직임 정보 그룹에 대응하는 위치의 수량이 제2 후보 움직임 정보 그룹에 대응하는 위치의 수량과 동일한 경우, 본 실시예에 따라 획득되는 후보 움직임 정보 리스트 내의 모든 움직임 정보 그룹은 동일한 위치의 움직임 정보이다. 이는 움직임 추정의 복잡도를 감소시킨다.
일부 가능한 구현 시나리오에서, 제1 후보 움직임 정보 그룹은 현재 영상 블록상의 제1 위치 그룹의 움직임 정보이고, 제2 후보 움직임 정보 그룹은 현재 영상 블록상의 제3 위치 그룹의 움직임 정보이며; 인터 예측 처리 유닛(1002)은 추가로,
제1 위치 그룹이 제3 위치 그룹과 상이한 경우, 위치 변환 공식에 따라 그리고 제2 후보 움직임 정보 그룹에 기초하여 제5 후보 움직임 정보 그룹을 도출하도록 구성되며, 여기서 제5 후보 움직임 정보 그룹에 대응하는 위치는 제1 위치 그룹과 동일하다.
제1 후보 움직임 정보 그룹에 대응하는 위치의 수량이 제2 후보 움직임 정보 그룹에 대응하는 위치의 수량과 동일한 경우, 본 실시예에 따라 획득되는 후보 움직임 정보 리스트의 모든 움직임 정보 그룹은 동일한 위치의 움직임 정보이다. 이는 움직임 추정의 복잡도를 감소시킨다.
인터 예측 장치(1000)가 비디오 영상을 디코딩하도록 구성되는 경우, 이 인터 예측 장치(1000)는,
타깃 움직임 정보를 결정하는 데 사용되는 색인 정보를 수신하도록 구성된 인터 예측 데이터 획득 유닛(도시되지 않음)을 포함한다.
이에 상응하여, 인터 예측 처리 유닛(1002)은 구체적으로 타깃 움직임 정보의 색인 정보에 기초하여 후보 움직임 정보 리스트로부터 타깃 움직임 정보를 결정하도록 구성된다.
인터 예측 장치(1000)가 비디오 영상을 인코딩하도록 구성되는 경우,
인터 예측 처리 유닛(1002)은 구체적으로, 스크리닝 규칙에 따라 후보 움직임 정보 리스트로부터 타깃 움직임 정보를 결정하도록 구성되며, 예를 들어, 후보 움직임 정보 리스트 내의 움직임 정보 그룹을 현재 영상 블록에 대해 인터 예측을 수행하는 데 사용되는 타깃 움직임 정보로서 결정하도록 구성되며, 여기서 후보 움직임 정보 리스트 내의 움직임 정보 그룹이 현재 영상 블록을 인코딩하는데 사용되는 경우에 레이트-왜곡 비용이 최저이다.
본 출원의 이 실시예에서의 인터 예측 장치의 모듈은 본 출원의 인터 예측 방법에 포함된 다양한 실행 단계를 구현하기 위한 기능 체(functional body)이며, 구체적으로 본 출원에서의 인터 예측 방법에서의 단계들 및 이들 단계의 확장 및 변형을 구현할 수 있는 기능 체라는 것에 유의해야 한다. 세부 사항에 대해서는 본 명세서에서의 인터 예측 방법에 대한 설명을 참조한다. 간결하게 하기 위해, 여기에서는 세부 사항을 설명하지 않는다.
도 11은 본 출원의 실시예에 따른 인코딩 기기 또는 디코딩 기기(간결하게 코딩 기기(1100)라고 함)의 구현의 개략 블록도이다. 코딩 기기(1100)는 프로세서(1110), 메모리(1130) 및 버스 시스템(1150)을 포함할 수 있다. 프로세서와 메모리는 버스 시스템을 사용하여 서로 연결된다. 메모리는 명령어를 저장하도록 구성되어 있다. 프로세서는 메모리에 저장된 명령어를 실행하도록 구성된다. 코딩 기기의 메모리는 프로그램 코드를 저장하고, 프로세서는 메모리에 저장된 프로그램 코드를 호출하여 본 출원에서 설명한 다양한 비디오 인코딩 또는 디코딩 방법, 특히 본 출원에서 설명한 인터 예측 방법을 수행할 수 있다. 반복을 피하기 위해, 여기서는 세부 사항을 다시 설명하지 않는다.
본 출원의 이 실시예에서, 프로세서(1110)는 중앙 처리 유닛(central processing unit, CPU)일 수 있거나, 프로세서(1110)는 다른 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 반도체(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 또는 다른 프로그램 가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직 디바이스, 이산 하드웨어 구성요소 등일 수 있다. 범용 프로세서는 마이크로프로세서일 수 있거나, 또는 프로세서는 임의의 종래의 프로세서 등일 수 있다.
메모리(1130)는 버스(1150)를 사용하여 프로세서(1110)에 의해 액세스되는 코드 및 데이터(1131)를 포함할 수 있다. 메모리(1130)는 운영 체제(1133) 및 애플리케이션 프로그램(1135)을 더 포함할 수 있다. 애플리케이션 프로그램(1135)은 프로세서(1110)가 본 출원에 기재된 비디오 인코딩 또는 디코딩 방법(특히, 본 출원에 기재된 인터 예측 방법)을 수행할 수 있게 하는 하나 이상의 프로그램을 포함한다. 예를 들어, 애플리케이션 프로그램(1135)은 애플리케이션 1 내지 N을 포함할 수 있고, 본 출원에 기재된 비디오 인코딩 또는 디코딩 방법을 수행하는 비디오 인코딩 또는 디코딩 애플리케이션(간FIR하게 비디오 코딩 애플리케이션이라고 함)을 더 포함할 수 있다.
버스 시스템(1150)은 데이터 버스 외에 전력 버스, 제어 버스, 상태 신호 버스 등을 더 포함할 수 있다. 그러나 명확한 설명을 위해, 도면에서 다양한 유형의 버스가 버스 시스템(1150)으로 표시되어 있다.
선택적으로, 디코딩 기기(1100)는 하나 이상의 출력 기기, 예를 들어 디스플레이(1170)를 더 포함할 수 있다. 예를 들어, 디스플레이(1170)는 터치 입력을 작동 가능하게 감지하는 디스플레이와 터치 유닛을 결합한 터치 디스플레이일 수 있다. 디스플레이(1170)는 버스 시스템(1150)을 사용하여 프로세서(1110)에 연결될 수 있다.
당업자는 본 명세서에 개시되고 설명된 다양한 예시적인 논리 블록, 모듈 및 알고리즘 단계를 참조하여 설명된 기능이 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합에 의해 구현될 수 있음을 이해할 수 있다. 소프트웨어에 의해 구현되는 경우, 다양한 예시적인 논리 블록, 모듈 및 단계를 참조하여 설명된 기능은 하나 이상의 명령어 또는 코드로서 컴퓨터로 판독 가능한 매체에 저장되거나 컴퓨터 판독 가능한 매체를 통해 송신되고 하드웨어 기반 처리 유닛에 의해 실행될 수 있다. 컴퓨터로 판독 가능한 매체는 데이터 저장 매체와 같은 유형 매체에 대응하는 컴퓨터로 판독 가능한 저장 매체, 또는 (예를 들어 통신 프로토콜에 따라) 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터로 판독 가능한 매체는 일반적으로 (1) 비일시적인 유형의 컴퓨터로 판독 가능한 저장 매체, 또는 (2) 신호 또는 캐리어와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 출원에서 설명한 기술을 구현하기 위한 명령어, 코드 및/또는 데이터 구조를 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터로 판독 가능한 매체를 포함할 수 있다.
한정사항이 아닌 예로서, 이러한 컴퓨터로 판독 가능한 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 콤팩트 디스크 저장 장치, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 플래시 메모리, 또는 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하는 데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 또한, 모든 연결을 컴퓨터로 판독 가능 매체라고 한다. 예를 들어, 명령어가 동축 케이블, 광섬유 케이블, 연선 쌍(twisted pair), DSL 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술을 통해 웹 사이트, 서버 또는 다른 원격 소스에서 전송되면, 동축 케이블, 광섬유 케이블, 연선 쌍, DSL 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술은 매체 정의에 포함된다. 그러나 컴퓨터로 판독 가능한 저장 매체 및 데이터 저장 매체는 연결, 캐리어, 신호 또는 다른 일시적 매체를 포함하지 않지만, 실제로는 비일시적인 유형의 매체를 의미하는 것으로 이해되어야 한다. 본 명세서에서 사용된 디스크(disk) 및 디스크(disc)로는 컴팩트 디스크(CD), 레이저 디스크, 광 디스크, 디지털 다목적 디스크(DVD) 및 블루레이를 포함한다. 디스크(disk)는 일반적으로 데이터를 자기적으로 재생하는 반면, 디스크(disc)는 레이저를 사용하여 데이터를 광학적으로 재생한다. 전술한 것의 조합도 또한 컴퓨터로 판독 가능한 매체의 범위에 포함되어야 한다.
명령어는 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로프로세서, 주문형 반도체(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 또는 동등한 집적 회로 또는 이산 논리 회로와 같은 하나 이상의 프로세서에 의해 실행될 수 있다. 따라서, 본 명세서에서 사용된 용어 "프로세서"는 전술한 구조, 또는 본 명세서에서 기재된 기술의 구현에 적용될 수 있는 임의의 다른 구조를 지칭할 수 있다. 또한, 일부 측면에서, 본 명세서에서 기재된 다양한 예시적인 논리 블록, 모듈 및 단계를 참조하여 설명한 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공될 수 있거나, 또는 결합된 코덱에 통합될 수 있다. 또한, 이 기술은 하나 이상의 회로 또는 논리 요소에서 완전히 구현될 수 있다.
본 출원의 기술은 무선 핸드셋, 집적 회로(IC), 또는 IC 세트(예: 칩셋)를 포함하는 다양한 장치 또는 기기에서 구현될 수 있다. 개시된 기술을 수행하도록 구성된 장치의 기능적 측면을 강조하기 위해 다양한 다양한 구성요소, 모듈 또는 유닛이 본 출원에서 설명되지만, 반드시 상이한 하드웨어 유닛들에 의해 구현될 필요는 없다. 실제로, 전술한 바와 같이, 다양한 유닛은 적절한 소프트웨어 및/또는 펌웨어와 함께 코덱 하드웨어 유닛으로 결합되거나, 상호 운용 가능한 하드웨어 유닛(전술한 하나 이상의 프로세서 포함)에 의해 제공될 수 있다.
이상의 설명은 본 출원의 구체적인 구현의 예일 뿐이며, 본 출원의 보호 범위를 한정하려는 것은 아니다. 본 출원에 개시된 기술 범위 내에서 당업자에 의해 용이하게 파악되는 임의의 변형 또는 대체는 본 출원의 보호 범위 내에 속한다. 따라서, 본 출원의 보호 범위는 청구 범위의 보호 범위에 따라야 한다.

Claims (17)

  1. 제2 후보 움직임 정보를 결정하는 방법으로서,
    현재 영상 블록의 제2 제어점 그룹의 움직임 벡터를 획득하는 단계 - 상기 제2 제어점 그룹은 상기 현재 영상 블록의 둘 이상의 제어점이고, 상기 현재 영상 블록의 둘 이상의 제어점의 각각의 움직임 벡터는 미리 설정된 검사 순서에 따라 하나 이상의 이웃 샘플 위치로부터 결정되는 제1 이용가능한 이웃 샘플 위치의 움직임 벡터이고, 상기 하나 이상의 이웃 샘플 위치는 대응하는 제어점에 이웃하고, 상기 하나 이상의 이웃 샘플 위치는 상기 현재 영상 블록의 하나 이상의 이웃 영상 블록에 위치함 - ; 및
    상기 제2 제어점 그룹이 제1 제어점 그룹과 상이할 때, 위치 변환 공식에 따라 그리고 상기 현재 영상 블록의 상기 제2 제어점 그룹의 움직임 벡터에 기초하여 상기 현재 영상 블록의 상기 제1 제어점 그룹의 움직임 벡터를 도출하는 단계 - 상기 제1 제어점 그룹은 상기 현재 영상 블록의 둘 이상의 제어점임 -
    를 포함하고,
    상기 제2 후보 움직임 정보는 상기 현재 영상 블록의 상기 제1 제어점 그룹의 움직임 벡터를 포함하는,
    제2 후보 움직임 정보를 결정하는 방법.
  2. 제1항에 있어서,
    위치 변환 이전의 상기 제2 제어점 그룹의 수량은 위치 변환 이후의 상기 제1 제어점 그룹의 수량과 동일한,
    제2 후보 움직임 정보를 결정하는 방법.
  3. 제2항에 있어서,
    위치 변환 이전의 상기 제2 제어점 그룹의 수량과 위치 변환 이후의 상기 제1 제어점 그룹의 수량이 2인 경우, 상기 제1 제어점 그룹은 상기 현재 영상 블록의 좌측 상단 제어점 및 우측 상단 제어점이거나; 또는
    위치 변환 이전의 상기 제2 제어점 그룹의 수량과 위치 변환 이후의 상기 제1 제어점 그룹의 수량이 3인 경우, 상기 제1 제어점 그룹은 상기 현재 영상 블록의 좌측 상단 제어점, 우측 상단 제어점 및 좌측 하단 제어점인,
    제2 후보 움직임 정보를 결정하는 방법.
  4. 제3항에 있어서,
    상기 제2 제어점 그룹은 상기 현재 영상 블록의 상기 좌측 상단 제어점, 상기 우측 상단 제어점 및 우측 하단 제어점이고, 상기 제1 제어점 그룹은 상기 현재 영상 블록의 상기 좌측 상단 제어점, 상기 우측 상단 제어점 및 상기 좌측 하단 제어점이거나; 또는
    상기 제2 제어점 그룹은 상기 현재 영상 블록의 상기 좌측 상단 제어점, 상기 좌측 하단 제어점 및 우측 하단 제어점이고, 상기 제1 제어점 그룹은 상기 현재 영상 블록의 상기 좌측 상단 제어점, 상기 우측 상단 제어점 및 상기 좌측 하단 제어점이거나; 또는
    상기 제2 제어점 그룹은 상기 현재 영상 블록의 상기 우측 상단 제어점, 상기 좌측 하단 제어점 및 우측 하단 제어점이고, 상기 제1 제어점 그룹은 상기 현재 영상 블록의 상기 좌측 상단 제어점, 상기 우측 상단 제어점 및 상기 좌측 하단 제어점이거나; 또는
    상기 제2 제어점 그룹은 상기 현재 영상 블록의 상기 좌측 상단 제어점 및 상기 좌측 하단 제어점이고, 상기 제1 제어점 그룹은 상기 현재 영상 블록의 상기 좌측 상단 제어점 및 상기 우측 상단 제어점인,
    제2 후보 움직임 정보를 결정하는 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제2 제어점 그룹의 둘 이상의 제어점은,
    상기 현재 영상 블록의 제1 제어점 CP1 - 상기 현재 영상 블록의 제1 제어점 CP1의 움직임 벡터는 상기 제1 제어점 CP1의 하나 이상의 이웃 샘플 위치로부터 제1 검사 순서에 따라 결정된 제1 이용가능한 이웃 샘플 위치의 움직임 벡터임 - ;
    상기 현재 영상 블록의 제2 제어점 CP2 - 상기 현재 영상 블록의 제2 제어점 CP2의 움직임 벡터는 상기 제2 제어점 CP2의 하나 이상의 이웃 샘플 위치로부터 제2 검사 순서에 따라 결정된 제1 이용가능한 이웃 샘플 위치의 움직임 벡터임 - ;
    상기 현재 영상 블록의 제3 제어점 CP3 - 상기 현재 영상 블록의 제3 제어점 CP3의 움직임 벡터는 상기 제3 제어점 CP3의 하나 이상의 이웃 샘플 위치로부터 제3 검사 순서에 따라 결정된 제1 이용가능한 이웃 샘플 위치의 움직임 벡터임 - ; 및
    상기 현재 영상 블록의 제4 제어점 CP4 - 상기 현재 영상 블록의 제4 제어점 CP4의 움직임 벡터는 시간적으로 이웃한 위치 Tr의 움직임 벡터임 -
    를 포함하는 4개의 제어점 중 2개 이상이고,
    상기 미리 설정된 검사 순서는 상기 제1 검사 순서, 상기 제2 검사 순서, 또는 상기 제3 검사 순서를 포함하는,
    제2 후보 움직임 정보를 결정하는 방법.
  6. 제5항에 있어서,
    상기 현재 영상 블록의 제2 제어점 그룹의 움직임 벡터를 획득하는 단계는,
    상기 현재 영상 블록의 상기 제1 제어점 CP1의 움직임 벡터와 상기 제2 제어점 CP2의 움직임 벡터를 조합하여 상기 현재 영상 블록의 제2 제어점 그룹의 움직임 벡터를 획득하는 단계;
    상기 현재 영상 블록의 상기 제1 제어점 CP1의 움직임 벡터와 상기 제3 제어점 CP3의 움직임 벡터를 조합하여 상기 현재 영상 블록의 제2 제어점 그룹의 움직임 벡터를 획득하는 단계;
    상기 현재 영상 블록의 상기 제1 제어점 CP1의 움직임 벡터와 상기 제2 제어점 CP2의 움직임 벡터와 상기 제4 제어점 CP4의 움직임 벡터를 조합하여 상기 현재 영상 블록의 제2 제어점 그룹의 움직임 벡터를 획득하는 단계;
    상기 현재 영상 블록의 상기 제1 제어점 CP1의 움직임 벡터와 상기 제2 제어점 CP2의 움직임 벡터와 상기 제3 제어점 CP3의 움직임 벡터를 조합하여 상기 현재 영상 블록의 제2 제어점 그룹의 움직임 벡터를 획득하는 단계;
    상기 현재 영상 블록의 상기 제2 제어점 CP2의 움직임 벡터와 상기 제3 제어점 CP3의 움직임 벡터와 상기 제4 제어점 CP4의 움직임 벡터를 조합하여 상기 현재 영상 블록의 제2 제어점 그룹의 움직임 벡터를 획득하는 단계; 또는
    상기 현재 영상 블록의 상기 제1 제어점 CP1의 움직임 벡터와 상기 제3 제어점 CP3의 움직임 벡터와 상기 제4 제어점 CP4의 움직임 벡터를 조합하여 상기 현재 영상 블록의 제2 제어점 그룹의 움직임 벡터를 획득하는 단계
    를 포함하는,
    제2 후보 움직임 정보를 결정하는 방법.
  7. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 하나 이상의 이웃 샘플 위치가 상기 현재 영상 블록의 하나 이상의 이웃 영상 블록에 위치하는 것은,
    2개의 샘플 위치가 상기 현재 영상 블록의 하나의 이웃 영상 블록에 위치하는 것;
    2개의 샘플 위치가 상기 현재 영상 블록의 2개의 이웃 영상 블록에 위치하는 것;
    3개의 샘플 위치가 상기 현재 영상 블록의 2개의 이웃 영상 블록에 위치하는 것;
    3개의 샘플 위치가 상기 현재 영상 블록의 3개의 이웃 영상 블록에 위치하는 것;
    4개의 샘플 위치가 상기 현재 영상 블록의 3개의 이웃 영상 블록에 위치하는 것; 또는
    4개의 샘플 위치가 상기 현재 영상 블록의 4개의 이웃 영상 블록에 위치하는 것
    을 포함하는,
    제2 후보 움직임 정보를 결정하는 방법.
  8. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제2 후보 움직임 정보를 지시하는 색인을 비트스트림에 인코딩하여 비트스트림을 생성하는 단계
    를 더 포함하는 제2 후보 움직임 정보를 결정하는 방법.
  9. 기기로서,
    하나 이상의 프로세서; 및
    상기 프로세서에 연결되고, 상기 프로세서에 의해 실행가능한 프로그램 명령을 저장하는 컴퓨터로 판독 가능한 저장 매체를 포함하고,
    상기 프로그램 명령이 상기 프로세서에 의해 실행될 때, 상기 기기는 제1항 내지 제4항 중 어느 하나의 항에 따른 방법을 수행할 수 있게 되는, 기기.
  10. 컴퓨터로 판독 가능한 저장 매체로서,
    상기 컴퓨터로 판독 가능한 저장 매체는 프로그램 명령을 저장하고,
    상기 프로그램 명령이 기기 또는 하나 이상의 프로세서에 의해 실행될 때, 상기 기기는 제1항 내지 제4항 중 어느 하나의 항에 따른 방법을 수행할 수 있게 되는, 컴퓨터로 판독 가능한 저장 매체.
  11. 컴퓨터로 판독 가능한 저장 매체로서,
    하나 이상의 프로세서에 의해 제8항에 따른 방법을 수행하여 획득되는 비디오 비트스트림을 저장하는, 컴퓨터로 판독 가능한 저장 매체.
  12. 비디오 데이터의 인코딩된 비트스트림을 저장하는 방법으로서,
    제8항에 따른 방법을 사용하여 생성된 비트스트림을 수신하는 단계; 및
    상기 비트스트림을 저장 매체에 저장하는 단계
    를 포함하는, 비디오 데이터의 인코딩된 비트스트림을 저장하는 방법.
  13. 비디오 데이터의 인코딩된 비트스트림을 저장하는 시스템으로서,
    제8항에 따른 방법을 사용하여 생성된 비트스트림을 수신하는 수신 수단; 및
    상기 비트스트림을 저장하는 저장 수단
    을 포함하는, 비디오 데이터의 인코딩된 비트스트림을 저장하는 시스템.
  14. 비디오 데이터의 인코딩된 비트스트림을 전송하는 방법으로서,
    저장 매체로부터 비트스트림을 획득하는 단계 - 상기 비트스트림은 제8항에 따른 방법을 사용하여 생성된 비트스트림이고, 상기 저장 매체에 저장됨 - ; 및
    상기 비트스트림을 전송하는 단계
    를 포함하는, 비디오 데이터의 인코딩된 비트스트림을 전송하는 방법.
  15. 비디오 데이터의 인코딩된 비트스트림을 전송하는 시스템으로서,
    저장 매체로부터 비트스트림을 획득하는 획득 수단 - 상기 비트스트림은 제8항에 따른 방법을 사용하여 생성된 비트스트림이고, 상기 저장 매체에 저장됨 - ; 및
    상기 비트스트림을 전송하는 전송 수단
    을 포함하는, 비디오 데이터의 인코딩된 비트스트림을 전송하는 시스템.
  16. 비디오 데이터의 인코딩된 비트스트림을 저장하는 방법으로서,
    비트스트림을 수신하는 단계 - 상기 비트스트림은 제8항에 따른 방법을 사용하여 생성된 비트스트림임 - ; 및
    상기 비트스트림을 전송하는 단계
    를 포함하는, 비디오 데이터의 인코딩된 비트스트림을 저장하는 방법.
  17. 비디오 데이터의 인코딩된 비트스트림을 전송하는 시스템으로서,
    비트스트림을 수신하는 수신 수단 - 상기 비트스트림은 제8항에 따른 방법을 사용하여 생성된 비트스트림임 - ; 및
    상기 비트스트림을 전송하는 전송 수단
    을 포함하는, 비디오 데이터의 인코딩된 비트스트림을 전송하는 시스템.
KR1020237003303A 2017-12-12 2018-12-12 비디오 데이터 인터 예측 방법 및 장치 KR102607443B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237040529A KR20230163004A (ko) 2017-12-12 2018-12-12 비디오 데이터 인터 예측 방법 및 장치

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201711319298.2 2017-12-12
CN201711319298.2A CN109922336B (zh) 2017-12-12 2017-12-12 视频数据的帧间预测方法和装置
PCT/CN2018/120435 WO2019114721A1 (zh) 2017-12-12 2018-12-12 视频数据的帧间预测方法和装置
KR1020207019381A KR102494762B1 (ko) 2017-12-12 2018-12-12 비디오 데이터 인터 예측 방법 및 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207019381A Division KR102494762B1 (ko) 2017-12-12 2018-12-12 비디오 데이터 인터 예측 방법 및 장치

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237040529A Division KR20230163004A (ko) 2017-12-12 2018-12-12 비디오 데이터 인터 예측 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20230020021A KR20230020021A (ko) 2023-02-09
KR102607443B1 true KR102607443B1 (ko) 2023-11-29

Family

ID=66819231

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020237003303A KR102607443B1 (ko) 2017-12-12 2018-12-12 비디오 데이터 인터 예측 방법 및 장치
KR1020237040529A KR20230163004A (ko) 2017-12-12 2018-12-12 비디오 데이터 인터 예측 방법 및 장치
KR1020207019381A KR102494762B1 (ko) 2017-12-12 2018-12-12 비디오 데이터 인터 예측 방법 및 장치

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020237040529A KR20230163004A (ko) 2017-12-12 2018-12-12 비디오 데이터 인터 예측 방법 및 장치
KR1020207019381A KR102494762B1 (ko) 2017-12-12 2018-12-12 비디오 데이터 인터 예측 방법 및 장치

Country Status (9)

Country Link
US (2) US11363274B2 (ko)
EP (1) EP3720131A4 (ko)
JP (2) JP7148612B2 (ko)
KR (3) KR102607443B1 (ko)
CN (5) CN112055205B (ko)
AU (2) AU2018383797B2 (ko)
BR (1) BR112020011548A2 (ko)
TW (3) TWI741239B (ko)
WO (1) WO2019114721A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111556323B (zh) * 2016-02-06 2022-05-13 华为技术有限公司 图像编解码方法及装置
US10999596B2 (en) * 2018-06-19 2021-05-04 Qualcomm Incorporated Unification of affine motion field derivation and affine motion compensation
CN116668719A (zh) * 2018-09-06 2023-08-29 Lg电子株式会社 图像解码方法、图像编码方法、存储介质和发送方法
WO2020130714A1 (ko) * 2018-12-21 2020-06-25 주식회사 엑스리스 영상 신호 부호화/복호화 방법 및 이를 위한 장치
KR20220064950A (ko) * 2019-09-24 2022-05-19 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 프레임 간 예측 방법 및 장치, 기기, 저장 매체
WO2021056214A1 (zh) * 2019-09-24 2021-04-01 Oppo广东移动通信有限公司 编码方法、解码方法、编码器、解码器以及存储介质
EP4131957A4 (en) * 2020-04-03 2023-04-19 Guangdong Oppo Mobile Telecommunications Corp., Ltd. INTERFRAME PREDICTION METHOD, ENCODER, DECODER AND STORAGE MEDIUM

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017118411A1 (en) 2016-01-07 2017-07-13 Mediatek Inc. Method and apparatus for affine inter prediction for video coding system

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3681342B2 (ja) * 2000-05-24 2005-08-10 三星電子株式会社 映像コーディング方法
US8767831B2 (en) * 2007-10-31 2014-07-01 Broadcom Corporation Method and system for motion compensated picture rate up-conversion using information extracted from a compressed video stream
JP5716438B2 (ja) * 2011-02-08 2015-05-13 株式会社Jvcケンウッド 画像復号装置、画像復号方法および画像復号プログラム
KR102049308B1 (ko) * 2011-11-02 2020-01-08 타지반 투 엘엘씨 동화상 부호화 방법, 동화상 부호화 장치, 동화상 복호 방법, 동화상 복호 장치, 및, 동화상 부호화 복호 장치
CN103716631B (zh) * 2012-09-29 2017-04-05 华为技术有限公司 用于图像处理的方法、装置、编码器和解码器
CN112087630B (zh) * 2014-09-30 2022-04-08 华为技术有限公司 图像预测方法、装置、解码器及存储介质
CN104935938B (zh) * 2015-07-15 2018-03-30 哈尔滨工业大学 一种混合视频编码标准中帧间预测方法
US10728571B2 (en) * 2015-08-04 2020-07-28 Lg Electronics Inc. Inter prediction method and device in video coding system
CN111556323B (zh) * 2016-02-06 2022-05-13 华为技术有限公司 图像编解码方法及装置
WO2017147765A1 (en) * 2016-03-01 2017-09-08 Mediatek Inc. Methods for affine motion compensation
US10560712B2 (en) * 2016-05-16 2020-02-11 Qualcomm Incorporated Affine motion prediction for video coding
US10448010B2 (en) * 2016-10-05 2019-10-15 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
US10701390B2 (en) * 2017-03-14 2020-06-30 Qualcomm Incorporated Affine motion information derivation
US10602180B2 (en) * 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction
EP3468195A1 (en) * 2017-10-05 2019-04-10 Thomson Licensing Improved predictor candidates for motion compensation
EP3468196A1 (en) * 2017-10-05 2019-04-10 Thomson Licensing Methods and apparatuses for video encoding and video decoding
US20190208211A1 (en) * 2018-01-04 2019-07-04 Qualcomm Incorporated Generated affine motion vectors
US11172229B2 (en) * 2018-01-12 2021-11-09 Qualcomm Incorporated Affine motion compensation with low bandwidth
US20190222834A1 (en) * 2018-01-18 2019-07-18 Mediatek Inc. Variable affine merge candidates for video coding
US20190364295A1 (en) * 2018-05-25 2019-11-28 Tencent America LLC Method and apparatus for video coding
US10798394B2 (en) * 2018-06-27 2020-10-06 Avago Technologies International Sales Pte. Limited Low complexity affine merge mode for versatile video coding
US20200021836A1 (en) * 2018-07-10 2020-01-16 Tencent America LLC Method and apparatus for ordering and selection of affine merge candidates in motion compensation
US10462488B1 (en) * 2018-07-13 2019-10-29 Tencent America LLC Method and apparatus for video coding
US11140398B2 (en) * 2018-08-20 2021-10-05 Mediatek Inc. Methods and apparatus for generating affine candidates
CN112913240A (zh) * 2018-10-22 2021-06-04 北京字节跳动网络技术有限公司 解码器侧运动矢量推导和其他编解码工具之间的并置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017118411A1 (en) 2016-01-07 2017-07-13 Mediatek Inc. Method and apparatus for affine inter prediction for video coding system

Also Published As

Publication number Publication date
CN111480338B (zh) 2022-10-11
KR102494762B1 (ko) 2023-01-31
US20220394270A1 (en) 2022-12-08
CN115733972A (zh) 2023-03-03
TW201929545A (zh) 2019-07-16
AU2023200956A1 (en) 2023-03-23
CN111480338A (zh) 2020-07-31
BR112020011548A2 (pt) 2020-11-17
US20200382790A1 (en) 2020-12-03
TWI741239B (zh) 2021-10-01
EP3720131A1 (en) 2020-10-07
TW202145785A (zh) 2021-12-01
JP7148612B2 (ja) 2022-10-05
AU2018383797A1 (en) 2020-07-09
CN112055205B (zh) 2021-08-03
JP2021506180A (ja) 2021-02-18
WO2019114721A1 (zh) 2019-06-20
KR20200096276A (ko) 2020-08-11
AU2023200956B2 (en) 2024-05-02
AU2018383797B2 (en) 2022-12-15
CN116915986A (zh) 2023-10-20
EP3720131A4 (en) 2020-10-07
CN109922336B (zh) 2023-07-18
US11363274B2 (en) 2022-06-14
TW202315402A (zh) 2023-04-01
KR20230020021A (ko) 2023-02-09
JP2023017760A (ja) 2023-02-07
CN109922336A (zh) 2019-06-21
TWI786790B (zh) 2022-12-11
TW202312738A (zh) 2023-03-16
CN112055205A (zh) 2020-12-08
KR20230163004A (ko) 2023-11-29

Similar Documents

Publication Publication Date Title
US11252436B2 (en) Video picture inter prediction method and apparatus, and codec
KR102607443B1 (ko) 비디오 데이터 인터 예측 방법 및 장치
KR102606146B1 (ko) 모션 벡터 예측 방법 및 관련 장치
TWI841033B (zh) 視頻數據的幀間預測方法和裝置
CN110677645B (zh) 一种图像预测方法及装置
KR102566569B1 (ko) 인터 예측 방법 및 장치, 비디오 인코더 및 비디오 디코더

Legal Events

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