KR102622148B1 - 병합 모드를 위한 인코더, 디코더 및 대응 방법 - Google Patents
병합 모드를 위한 인코더, 디코더 및 대응 방법 Download PDFInfo
- Publication number
- KR102622148B1 KR102622148B1 KR1020217008881A KR20217008881A KR102622148B1 KR 102622148 B1 KR102622148 B1 KR 102622148B1 KR 1020217008881 A KR1020217008881 A KR 1020217008881A KR 20217008881 A KR20217008881 A KR 20217008881A KR 102622148 B1 KR102622148 B1 KR 102622148B1
- Authority
- KR
- South Korea
- Prior art keywords
- list
- prediction
- candidate
- block
- merge
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 150
- 238000012545 processing Methods 0.000 claims abstract description 67
- 239000013598 vector Substances 0.000 claims description 121
- 230000009977 dual effect Effects 0.000 claims description 42
- 238000004590 computer program Methods 0.000 claims description 6
- 238000013139 quantization Methods 0.000 description 79
- 230000008569 process Effects 0.000 description 57
- 238000000638 solvent extraction Methods 0.000 description 37
- 238000004891 communication Methods 0.000 description 32
- 238000010276 construction Methods 0.000 description 21
- 238000005192 partition Methods 0.000 description 21
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 19
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 17
- 230000002123 temporal effect Effects 0.000 description 15
- 230000006835 compression Effects 0.000 description 13
- 238000007906 compression Methods 0.000 description 13
- 238000009795 derivation Methods 0.000 description 12
- 241000023320 Luma <angiosperm> Species 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 10
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 10
- 230000009466 transformation Effects 0.000 description 10
- 238000001914 filtration Methods 0.000 description 9
- 238000003491 array Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000007781 pre-processing Methods 0.000 description 5
- 230000002441 reversible effect Effects 0.000 description 5
- 230000011664 signaling Effects 0.000 description 5
- 230000000670 limiting effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000009966 trimming Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000002146 bilateral effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000011524 similarity measure Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/107—Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/577—Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Analogue/Digital Conversion (AREA)
Abstract
본 개시는 병합 후보 리스트에 따라 블록을 처리하는 방법 및 디바이스를 제공하며, 상기 방법은 현재 블록의 이웃 블록의 모션 정보에 따라 제1 리스트를 구성하는 단계; 상기 현재 블록의 예측 정보를 획득하는 단계; 상기 현재 블록의 예측 정보가 서브블록 예측이 상기 현재 블록에 적용됨을 지시하는 경우, 상기 제1 리스트에 따라 상기 현재 블록에 대한 단일 예측 후보를 획득하는 단계; 및 상기 현재 블록에 대한 상기 단일 예측 후보를 사용하여 상기 현재 블록의 인터 예측을 수행하는 단계를 포함한다. 본 개시의 실시 예에 따르면, 정규 병합 리스트가 직접 사용될 수 있으며, 서브블록 예측을 위한 단일 예측 병합 후보 리스트를 명시적으로 생성할 필요가 없다.
Description
본 출원(개시)의 실시 예는 일반적으로 화상 처리 분야, 특히 병합 모드(merge mode)에 관한 것이다.
비디오 코딩(비디오 인코딩 및 디코딩)은 예를 들어, 브로드캐스트 디지털 TV, 인터넷 및 모바일 네트워크를 통한 비디오 전송, 화상 채팅(video chat)과 같은 실시간 대화 애플리케이션, 화상 회의(video conferencing), DVD 및 블루레이(Blu-ray) 디스크, 비디오 콘텐츠 수집 및 편집 시스템, 및 보안 애플리케이션의 캠코더인 광범위한 디지털 비디오 애플리케이션에 사용된다.
비교적 짧은 비디오를 묘사하는 데 필요한 비디오 데이터의 양은 상당할 수 있으며, 이는 데이터가 스트리밍되거나 대역폭 용량이 제한된 통신 네트워크를 통해 통신할 때 어려움을 초래할 수 있다. 따라서, 비디오 데이터는 일반적으로 현대 통신 네트워크를 통해 통신되기 전에 압축된다. 메모리 리소스가 제한될 수 있으므로 비디오가 저장 디바이스에 저장될 때 비디오의 크기가 문제가 될 수도 있다. 비디오 압축 디바이스는 종종 소스(source)에서 소프트웨어 및/또는 하드웨어를 사용하여 전송 또는 저장 전에 비디오 데이터를 코딩하며, 이에 따라 디지털 비디오 이미지를 나타내는 데 필요한 데이터 양을 감소시킨다. 압축된 데이터는 비디오 데이터를 디코딩하는 비디오 압축 해제 디바이스에 의해 목적지에서 수신된다. 제한된 네트워크 리소스와 더 높은 비디오 품질에 대한 요구가 계속 증가함에 따라, 화질을 거의 또는 전혀 희생하지 않고 압축률을 향상시키는 개선된 압축 및 압축 해제 기술이 바람직하다.
본 출원의 실시 예는 독립항에 따라 인코딩 및 디코딩을 위한 장치 및 방법을 제공한다.
상기 및 기타 목적은 독립 청구항의 주제에 의해 달성된다. 추가 구현 형태는 종속 청구항, 설명 및 도면으로부터 명백해진다.
본 개시의 제1 측면에 따르면, 병합 후보 리스트(merge candidate list)에 따라 블록을 처리하는 방법이 개시되며, 상기 방법은,
현재 블록의 이웃 블록의 모션(motion) 정보에 따라 제1 리스트를 구성하는 단계; 상기 현재 블록의 예측 정보를 획득하는 단계; 상기 현재 블록의 예측 정보가 서브블록 예측(sub-block prediction)이 상기 현재 블록에 적용됨을 지시하는(indicate) 경우, 상기 제1 리스트에 따라 상기 현재 블록에 대한 단일 예측(uni-prediction) 후보를 획득하는 단계; 및 상기 현재 블록에 대한 상기 단일 예측 후보를 사용하여 상기 현재 블록의 인터 예측(inter prediction)을 수행하는 단계를 포함한다.
이 방법에서, 정규 병합 후보 리스트가 추가 모션 벡터 프루닝(extra motion vector pruning) 없이 서브블록 파티션(partition)(예: 삼각(triangle) 또는 비 직사각형(non-rectangular) 등) 병합 예측에 재사용된다.
가능한 구현에서, 상기 현재 블록은 2개의 서브블록을 포함하고, 각각의 서브블록은 단일 예측 후보에 대응한다.
가능한 구현에서, 하나의 단일 예측 후보가 상기 제1 리스트의 하나의 이중 예측(bi-prediction) 후보에 따라 생성된다.
가능한 구현에서, 두 개의 단일 예측 후보가 상기 제1 리스트의 하나의 이중 예측 후보에 따라 생성된다.
가능한 구현에서, 하나의 단일 예측 후보가 상기 이중 예측 후보의 제1 부분(part)이다.
가능한 구현에서, 하나의 단일 예측 후보가 상기 이중 예측 후보의 제2 부분이다.
가능한 구현에서, 상기 서브블록 예측은 삼각 예측(triangular prediction)이다.
가능한 구현에서, 상기 제1 리스트의 하나의 이중 예측 후보에 따라 상기 두 개의 단일 예측 후보를 생성하는 것은, 상기 두 개의 단일 예측 후보 사이의 유사성(similarity)을 결정하는 것을 포함한다.
가능한 구현에서, 상기 단일 예측 후보는 상기 제1 리스트에서의 상기 후보의 순서에 기반하여 상기 제1 리스트의 이중 예측 후보에 따라 생성된다.
제2 측면에 따르면, 본 개시는 방법 실시 예를 수행하기 위한 처리 회로를 포함하는 인코더를 제공한다.
제3 측면에 따르면, 본 개시는 방법 실시 예를 수행하기 위한 처리 회로를 포함하는 디코더를 제공한다.
제4 측면에 따르면, 본 개시는 방법 실시 예를 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품을 제공한다.
제5 측면에 따르면, 본 개시는 디코더를 제공하며, 상기 디코더는, 하나 이상의 프로세서; 및 상기 프로세서에 결합되어 있으면서 또한 상기 프로세서에 의한 실행을 위한 프로그래밍을 저장하는, 컴퓨터가 판독 가능한 비 일시적 저장 매체를 포함하며, 상기 프로그래밍이 상기 프로세서에 의해 실행될 때 방법 실시 예를 수행하도록 상기 디코더를 구성한다.
제6 측면에 따르면, 본 개시는 인코더를 제공하며, 상기 인코더는, 하나 이상의 프로세서; 및 상기 프로세서에 결합되어 있으면서 또한 상기 프로세서에 의한 실행을 위한 프로그래밍을 저장하는, 컴퓨터가 판독 가능한 비 일시적 저장 매체를 포함하며, 상기 프로그래밍이 상기 프로세서에 의해 실행될 때 방법 실시 예를 수행하도록 상기 인코더를 구성한다.
본 개시의 실시 예에 따르면, 서로 다른 병합 모드가 공유하는 공통 작동(common operation)을 극대화하기 위해, 정규 병합 리스트(regular merge list)가 구성되고 그 모션 벡터가 서브블록 예측에 사용된다. 일 예에서, 정규 병합 후보 리스트의 각각의 병합 후보의 경우, L0 또는 L1 모션 벡터 중 하나만 하나의 서브블록 예측에 사용된다. 또한 L0 대 L1 모션 벡터를 선택하는 순서는 병합 인덱스 패리티(parity)를 기반으로 한다. 정규 병합 리스트는 직접 사용될 수 있으며, 서브블록 예측을 위한 단일 예측 병합 후보 리스트를 명시적으로 생성할 필요가 없다.
일 예에서, 일단 정규 병합 리스트가 구성되면, 정규 병합 후보 리스트의 각각의 병합 후보의 경우, L0 또는 L1 모션 벡터 중 하나만 하나의 서브블록 예측에 사용된다. 또한, L0 대 L1 모션 벡터를 선택하는 순서는 병합 인덱스 패리티를 기반으로 한다. 일 예에서, 표 1에 도시된 바와 같이, 짝수 값 인덱스를 가진 후보의 경우 그의 L0 모션 벡터가 먼저 서브블록 예측에 사용되도록 선택된다. L0 모션 벡터를 사용할 수 없으면, L0 모션 벡터 대신 L1 모션 벡터가 사용된다. 홀수 값 인덱스를 가진 후보의 경우, L1 모션 벡터가 먼저 삼각 예측에 사용되도록 선택된다. 사용할 수 없으면, L0 모션 벡터가 대신 사용된다. 표 1에서, 각 병합 인덱스에 대응하여 "x"로 표시된 모션 벡터가 서브블록 예측을 위해 먼저 선택된다.
표 1 삼각 예측 모드에 대한 단일 예측 MV 선택
본 개시의 일 실시 예에 따르면, 정규 병합 리스트가 직접 사용될 수 있으며, 서브블록 예측을 위한 단일 예측 병합 후보 리스트를 명시적으로 생성할 필요가 없다. 디코더 측에서, 일단 서브블록 병합 인덱스가 수신되면, 시그널링된 병합 인덱스 값을 기반으로 단일 예측 MV 후보를 쉽게 찾을 수 있다.
하나 이상의 실시 예의 세부 사항은 첨부된 도면 및 아래의 설명에서 설명된다. 다른 특징, 목적 및 이점은 설명, 도면 및 청구 범위로부터 명백해질 것이다.
본 개시의 다음 실시 예에서, 첨부된 도면 및 도면을 참조하여 보다 상세하게 설명되며, 여기서
도 1a는 본 개시의 실시 예를 구현하도록 구성된 비디오 코딩 시스템의 예를 도시하는 블록도이다.
도 1b는 본 개시의 실시 예를 구현하도록 구성된 비디오 코딩 시스템의 다른 예를 도시하는 블록도이다.
도 2는 본 개시의 실시 예를 구현하도록 구성된 비디오 인코더의 예를 도시하는 블록도이다.
도 3은 본 개시의 실시 예를 구현하도록 구성된 비디오 디코더의 예시적인 구조를 도시한 블록도이다.
도 4는 인코딩 장치 또는 디코딩 장치의 일 예를 예시하는 블록도이다.
도 5는 인코딩 장치 또는 디코딩 장치의 다른 예를 예시하는 블록도이다.
도 6은 제1 모션 후보 리스트에 기반한 제2 모션 후보 리스트의 구성 예를 도시하는 흐름도이다.
도 7a는 공동 위치 블록(Co-located block)의 예를 예시한다.
도 7b는 공간 이웃 블록의 예를 예시한다.
도 8은 제1 모션 후보 리스트에 기반한 제2 모션 후보 리스트 구성의 다른 예를 도시하는 흐름도이다.
도 9는 삼각 예측 모드의 예를 예시한다.
도 10은 제1 모션 후보 리스트에 기반한 제2 모션 후보 리스트 구성의 다른 예를 도시하는 흐름도이다.
도 11은 서브블록 예측 모드의 일부 예를 예시한다.
도 12는 위치에 위치된 후보 중 병합 후보가 선택되는 예를 도시한다.
도 13은 병합 후보에 대한 예를 도시한다.
도 14는 스케일링된 모션 벡터 획득에 대한 예를 도시한다.
도 15는 시간 후보에 대한 예를 도시한다.
도 16은 콘텐츠 전달 서비스(content delivery service)를 실현하는 콘텐츠 공급 시스템(3100)의 예시적인 구조를 도시하는 블록도이다.
도 17은 단말 디바이스의 일례의 구조를 도시하는 블록도이다.
다음의 동일한 참조 부호에서 달리 명시적으로 지정되지 않은 경우 동일하거나 적어도 기능적으로 동등한 기능을 나타낸다.
도 1a는 본 개시의 실시 예를 구현하도록 구성된 비디오 코딩 시스템의 예를 도시하는 블록도이다.
도 1b는 본 개시의 실시 예를 구현하도록 구성된 비디오 코딩 시스템의 다른 예를 도시하는 블록도이다.
도 2는 본 개시의 실시 예를 구현하도록 구성된 비디오 인코더의 예를 도시하는 블록도이다.
도 3은 본 개시의 실시 예를 구현하도록 구성된 비디오 디코더의 예시적인 구조를 도시한 블록도이다.
도 4는 인코딩 장치 또는 디코딩 장치의 일 예를 예시하는 블록도이다.
도 5는 인코딩 장치 또는 디코딩 장치의 다른 예를 예시하는 블록도이다.
도 6은 제1 모션 후보 리스트에 기반한 제2 모션 후보 리스트의 구성 예를 도시하는 흐름도이다.
도 7a는 공동 위치 블록(Co-located block)의 예를 예시한다.
도 7b는 공간 이웃 블록의 예를 예시한다.
도 8은 제1 모션 후보 리스트에 기반한 제2 모션 후보 리스트 구성의 다른 예를 도시하는 흐름도이다.
도 9는 삼각 예측 모드의 예를 예시한다.
도 10은 제1 모션 후보 리스트에 기반한 제2 모션 후보 리스트 구성의 다른 예를 도시하는 흐름도이다.
도 11은 서브블록 예측 모드의 일부 예를 예시한다.
도 12는 위치에 위치된 후보 중 병합 후보가 선택되는 예를 도시한다.
도 13은 병합 후보에 대한 예를 도시한다.
도 14는 스케일링된 모션 벡터 획득에 대한 예를 도시한다.
도 15는 시간 후보에 대한 예를 도시한다.
도 16은 콘텐츠 전달 서비스(content delivery service)를 실현하는 콘텐츠 공급 시스템(3100)의 예시적인 구조를 도시하는 블록도이다.
도 17은 단말 디바이스의 일례의 구조를 도시하는 블록도이다.
다음의 동일한 참조 부호에서 달리 명시적으로 지정되지 않은 경우 동일하거나 적어도 기능적으로 동등한 기능을 나타낸다.
다음의 설명에서, 본 개시의 일부를 형성하고, 예시로서 본 개시의 실시 예들의 특정 측면들 또는 본 개시의 실시 예들이 사용될 수 있는 특정 측면들을 도시하는 첨부 도면들을 참조한다. 본 개시의 실시 예는 다른 측면에서 사용될 수 있고 도면에 묘사되지 않은 구조적 또는 논리적 변경을 포함할 수 있음이 이해된다. 따라서, 다음의 상세한 설명은 제한적인 의미로 받아들여서는 안되며, 본 개시의 범위는 첨부된 청구 범위에 의해 정의된다.
예를 들어, 설명된 방법과 관련된 개시는 또한 방법을 수행하도록 구성된 대응하는 디바이스 또는 시스템에 대해 참(true)일 수 있고 그 반대의 경우도 마찬가지인 것으로 이해된다. 예를 들어, 하나 또는 복수의 특정 방법 단계가 설명되면, 비록 그러한 하나 이상의 유닛이 도면에 명시적으로 설명되거나 도시되지 않아도, 해당 디바이스는 설명된 하나 또는 복수의 방법 단계를 수행하기 위한 하나 또는 복수의 유닛 예를 들어, 기능 유닛(예: 하나 또는 복수의 단계를 수행하는 하나의 유닛, 또는 복수의 단계 중 하나 이상을 각각 수행하는 복수의 유닛)을 포함할 수 있다. 반면에, 예를 들어, 특정 장치가 하나 또는 복수의 유닛 예를 들어 기능 유닛에 기반하여 기술되면, 비록 그러한 하나 또는 복수의 단계가 도면에 명시적으로 설명되거나 도시되지 않더라도, 해당 방법은 하나 또는 복수의 유닛의 기능을 수행하는 하나의 단계(예: 하나 또는 복수의 유닛의 기능을 수행하는 하나의 단계, 또는 복수의 유닛 중 하나 이상의 기능을 각각 수행하는 복수의 단계)를 포함할 수 있다. 또한, 여기서 설명된 다양한 실시 예들 및/또는 측면들의 특징들은 특별히 달리 언급되지 않는 한 서로 조합될 수 있다는 것이 이해된다.
비디오 코딩은 일반적으로 비디오 또는 비디오 시퀀스를 형성하는 일련의 화상(picture)을 처리하는 것을 의미한다. 용어 "화상" 대신에 용어 "프레임" 또는 "이미지"가 비디오 코딩 분야에서 동의어로 사용될 수 있다. 비디오 코딩(또는 일반적으로 코딩)은 비디오 인코딩과 비디오 디코딩의 두 부분을 포함한다. 비디오 인코딩은 소스 측에서 수행되며, 전형적으로(typically) (더 효율적인 저장 및/또는 전송을 위해) 비디오 화상을 나타내는 데 필요한 데이터의 양을 줄이기 위해 (예를 들어, 압축에 의해) 원래의 비디오 화상을 처리하는 것을 포함한다. 비디오 디코딩은 목적지 측에서 수행되며, 전형적으로, 비디오 화상을 재구성하기 위해 인코더와 비교하여 역 처리(inverse processing)를 포함한다. 비디오 화상(또는 일반적으로 화상)의 "코딩"을 참조하는 실시 예는 비디오 화상 또는 각각의 비디오 시퀀스의 "인코딩" 또는 "디코딩"과 관련되는 것으로 이해되어야 한다. 인코딩 부분과 디코딩 부분의 조합을 CODEC(Coding and Decoding)이라고도 한다.
무손실 비디오 코딩의 경우에, 원래의 비디오 화상이 재구성될 수 있으며, 즉, 재구성된 비디오 화상은 원래의 비디오 화상과 동일한 품질을 갖는다(저장 또는 전송 중에 전송 손실이나 기타 데이터 손실이 없다고 가정). 손실 비디오 코딩의 경우에, 예를 들어, 양자화에 의해 추가 압축이 수행되어 비디오 화상을 나타내는 데이터의 양을 감소시키며, 이는 디코더에서 완전히 재구성될 수 없으며, 즉, 재구성된 비디오 화상의 품질이 원래의 비디오 화상의 품질에 비해 낮거나 나쁘다.
여러 비디오 코딩 표준은 "손실 하이브리드 비디오 코덱" 그룹에 속한다(즉, 샘플 도메인에서 공간 및 시간 예측과 변환 도메인에서 양자화를 적용하기 위한 2D 변환 코딩을 조합). 비디오 시퀀스의 각각의 화상은 전형적으로 비 중첩(non-overlapping) 블록의 세트로 파티셔닝되고(partition), 전형적으로 블록 레벨에서수행된다. 다시 말하자면, 인코더에서 비디오는 전형적으로 블록(비디오 블록) 레벨에서 처리되며, 즉, 예를 들어, 공간(인트라 화상) 예측 및/또는 시간(인터 화상) 예측을 사용하여 예측 블록을 생성하고, 현재 블록(현재 처리된/처리될 블록)에서 예측 블록을 감산하여 잔차(residual) 블록을 획득하며, 잔차 블록을 변환하고 변환 도메인에서 잔차 블록을 양자화하여 전송될 데이터의 양을 감소(압축)시키는 것에 의해 인코딩되며, 반면 디코더에서, 인코더와 비교하여 역 처리가 표현을 위해 현재 블록을 재구성하기 위해 인코딩되거나 압축된 블록에 적용된다. 더욱이, 인코더는 디코더 처리 루프(processing loop)를 복제하여 둘 다 똑같은(identical)예측(예: 인트라 예측 및 인터 예측) 및/또는 후속 블록을 처리 즉, 코딩하기 위한 재구성을 생성할 것이다.
비디오 코딩 시스템(10)의 다음 실시 예에서, 비디오 인코더(20) 및 비디오 디코더(30)는 도 1 내지 도 3에 기반하여 설명된다.
도 1a는 본 출원의 기술을 이용할 수 있는 예시적인 코딩 시스템(10), 예를 들어, 비디오 코딩 시스템(10)(또는 코딩 시스템(10))을 예시하는 개략적인 블록도이다. 비디오 코딩 시스템(10)의 비디오 인코더(20)(또는 인코더(20)) 및 비디오 디코더(30)(또는 디코더(30))는 본 출원에서 설명된 다양한 예에 따라 기술을 수행하도록 구성될 수 있는 디바이스의 예를 나타낸다.
도 1a에 도시된 바와 같이, 코딩 시스템(10)은 인코딩된 화상 데이터(21)를 예를 들어, 인코딩된 화상 데이터(13)를 디코딩하기 위한 목적지 디바이스(14)에 제공하도록 구성된 소스 디바이스(12)를 포함한다.
소스 디바이스(12)는 인코더(20)를 포함하고, 추가적으로, 즉 선택적으로 화상 소스(16), 전처리기(pre-processor)(또는 전처리 유닛)(18), 예를 들어, 화상 전처리기(18) 그리고 통신 인터페이스 또는 통신 유닛(22)을 포함할 수 있다.
화상 소스(16)는 임의의 유형의 화상 캡처(capture) 디바이스, 예를 들어 실제 화상을 캡처하기 위한 카메라 및/또는 임의의 유형의 화상 생성 디바이스, 예를 들어 컴퓨터 애니메이션 화상을 생성하기 위한 컴퓨터 그래픽 프로세서, 또는 실제 화상, 컴퓨터 생성 화상(예: 화면 콘텐츠, 가상 현실(virtual reality, VR) 화상) 및/또는 이들의 조합(예: 증강 현실(augmented reality, AR) 화상)을 획득 및/또는 제공하기 위한 임의의 유형의 다른 디바이스를 포함할 수 있다. 화상 소스는 전술한 화상 중 임의의 것을 저장하는 임의의 유형의 메모리 또는 스토리지일 수 있다.
전처리기(18) 및 전처리 유닛(18)에 의해 수행되는 처리와 구별하여, 화상 또는 화상 데이터(17)는 또한 원시(raw) 화상 또는 원시 화상 데이터(17)로 지칭될 수 있다.
전처리기(18)는 (원시) 화상 데이터(17)를 수신하고, 화상 데이터(17)에 대해 전처리를 수행하여 전처리된 화상(19) 또는 전처리된 화상 데이터(19)를 획득하도록 구성된다. 전처리기(18)에 의해 수행되는 전처리는, 예를 들어 트리밍(trimming), 컬러 포맷 변환(예를 들어 RGB에서 YCbCr로), 컬러 보정 또는 노이즈 제거(de-noising)를 포함할 수 있다. 전처리 유닛(18)은 선택적 구성 요소일 수 있음을 이해할 수 있다.
비디오 인코더(20)는 전처리된 화상 데이터(19)를 수신하고 인코딩된 화상 데이터(21)를 제공하도록 구성된다(자세한 내용은 예를 들어, 도 2에 기반하여 이하에서 설명될 것이다).
소스 디바이스(12)의 통신 인터페이스(22)는 인코딩된 화상 데이터(21)를 수신하고, 인코딩된 화상 데이터(21)(또는 그의 임의의 추가 처리된 버전)를 저장 또는 직접 재구성을 위해, 통신 채널(13)을 통해 다른 디바이스, 예를 들어 목적지 디바이스(14) 또는 임의의 다른 디바이스로 전송하도록 구성될 수 있다.
목적지 디바이스(14)는 디코더(30)(예: 비디오 디코더(30))를 포함하고, 추가적으로, 즉 선택적으로 통신 인터페이스 또는 통신 유닛(28), 후처리기(post-processor)(32)(또는 후처리 유닛(32)) 및 디스플레이 디바이스(34)를 포함할 수 있다.
목적지 디바이스(14)의 통신 인터페이스(28)는 예를 들어 소스 디바이스(12)로부터 직접 또는 다른 소스, 예를 들어 저장 디바이스, 예를 들어 인코딩된 화상 데이터 저장 디바이스로부터, 인코딩된 화상 데이터(21)(또는 그것의 임의의 추가 처리된 버전)를 수신하고, 인코딩된 화상 데이터(21)를 디코더(30)에 제공하도록 구성된다.
통신 인터페이스(22) 및 통신 인터페이스(28)는 소스 디바이스(12)와 목적지 디바이스(14) 사이의 직접 통신 링크 예를 들어, 직접 유선 또는 무선 연결을 통해, 또는 임의 유형의 네트워크, 예를 들어, 유선 또는 무선 네트워크 또는 이들의 조합, 또는 임의 유형의 시설 및 공용 네트워크, 또는 이들의 임의의 유형의 조합을 통해, 인코딩된 화상 데이터(21) 또는 인코딩된 데이터(13)를 전송 또는 수신하도록 구성될 수 있다.
통신 인터페이스(22)는 예를 들어 인코딩된 화상 데이터(21)를 적절한 포맷(format), 예를 들어, 패킷으로 패키지하고(package), 및/또는 임의 유형의 전송 인코딩 또는, 통신 링크 또는 통신 네트워크를 통한 전송을 위한 처리를 사용하여 인코딩된 화상 데이터를 처리하도록 구성될 수 있다.
통신 인터페이스(22)의 대응물(counterpart)을 형성하는 통신 인터페이스(28)는, 예를 들어, 전송된 데이터를 수신하고, 임의의 유형의 대응하는 전송 디코딩 또는 인코딩된 화상 데이터(21)를 획득하기 위한 처리 및/또는 디패키징(depackaging)을 사용하여 전송 데이터를 처리하도록 구성될 수 있다.
통신 인터페이스(22) 및 통신 인터페이스(28) 모두는 소스 디바이스(12)에서 목적지 디바이스(14)를 가리키는 도 1a의 통신 채널(13)에 대한 화살표로 지시된 단방향 통신 인터페이스 또는 양방향 통신 인터페이스로 구성될 수 있으며, 예를 들어 메시지 보내기 및 받기, 예를 들어 연결을 설정하고, 통신 링크 및/또는 데이터 전송 예를 들어 인코딩된 화상 데이터 전송과 관련된 기타 정보를 확인하고 교환하도록 구성될 수 있다.
디코더(30)는 인코딩된 화상 데이터(21)를 수신하고 디코딩된 화상 데이터(31) 또는 디코딩된 화상(31)을 제공하도록 구성된다(더 자세한 사항은 예를 들어, 도 3 또는 도 5에 기반하여 후술될 것임).
목적지 디바이스(14)의 후처리기(32)는 디코딩된 화상 데이터(31)(또한 재구성된 화상 데이터라고도 함) 예를 들어, 디코딩된 화상(31)을 후처리하여 후처리된 화상 데이터(33) 예를 들어, 후처리된 화상(33)을 획득하도록 구성된다. 후처리 유닛(32)에 의해 수행되는 후처리는 예를 들어, 컬러 포맷 변환(예: YCbCr에서 RGB로), 컬러 보정, 트리밍 또는 재샘플링 또는 기타 처리 예를 들어, 디스플레이 디바이스(34)에 의한 디스플레이를 위해 디코딩된 화상 데이터(31)를 준비하는 것을 포함할 수 있다.
목적지 디바이스(14)의 디스플레이 디바이스(34)는 예를 들어 화상을 사용자 또는 뷰어(viewer)에게 디스플레이하기 위해 후처리된 화상 데이터(33)를 수신하도록 구성된다. 디스플레이 디바이스(34)는 재구성된 화상을 나타내기 위한 임의 유형의 디스플레이, 예를 들어, 통합 또는 외부 디스플레이 또는 모니터일 수 있거나 이를 포함할 수 있다. 디스플레이는 예를 들어 액정 디스플레이(liquid crystal display, LCD), 유기 발광 다이오드(organic light emitting diode, OLED) 디스플레이, 플라즈마 디스플레이, 프로젝터, 마이크로 LED 디스플레이, 액정 온 실리콘(liquid crystal on silicon, LCoS), 디지털 조명 프로세서(digital light processor, DLP) 또는 기타 임의의 유형의 디스플레이를 포함할 수 있다.
도 1a가 소스 디바이스(12) 및 목적지 디바이스(14)를 별개의 디바이스로서 도시하지만, 디바이스의 실시 예는 소스 디바이스(12) 또는 대응하는 기능 및 목적지 디바이스(14) 또는 대응하는 기능 모두 또는 둘 모두를 포함할 수도 있다. 이러한 실시 예에서, 소스 디바이스(12) 또는 대응하는 기능 및 목적지 디바이스(14) 또는 대응하는 기능은 동일한 하드웨어 및/또는 소프트웨어를 사용하거나, 별개의 하드웨어 및/또는 소프트웨어 또는 이들의 임의의 조합에 의해 구현될 수 있다.
설명에 기반하여 당업자에게 명백한 바와 같이, 도 1a에 도시된 바와 같이 소스 디바이스(12) 및/또는 목적지 디바이스(14) 내의 상이한 유닛 또는 기능의 기능의 존재 및 (정확한) 분할(split)은 실제 디바이스 및 애플리케이션에 따라 달라질 수 있다.
인코더(20)(예: 비디오 인코더(20)) 또는 디코더(30)(예: 비디오 디코더(30)) 또는 인코더(20)와 디코더(30) 모두는, 하나 이상의 마이크로 프로세서, 디지털 신호 프로세서(digital signal processor DSP), 주문형 집적 회로(application-specific integrated circuit, ASIC), 필드 프로그래밍 가능 게이트 어레이(field-programmable gate array, FPGA), 개별 로직, 하드웨어, 비디오 코딩 전용 또는 이들의 조합과 같은 도 1b에 도시된 처리 회로를 통해 구현될 수 있다. 인코더(20)는 도 2의 인코더(20) 및/또는 여기에 설명된 임의의 다른 인코더 시스템 또는 서브 시스템과 관련하여 논의된 바와 같이 다양한 모듈을 구현하기 위해 처리 회로(46)를 통해 구현될 수 있다. 디코더(30)는 도 3의 디코더(30) 및/또는 여기에 설명된 임의의 다른 디코더 시스템 또는 서브 시스템과 관련하여 논의된 바와 같이 다양한 모듈을 구현하기 위해 처리 회로(46)를 통해 구현될 수 있다. 처리 회로는 나중에 논의되는 다양한 작동을 수행하도록 구성될 수 있다. 도 5에 도시된 바와 같이, 기술이 소프트웨어에서 부분적으로 구현되면, 디바이스는 소프트웨어에 대한 명령을 컴퓨터가 판독 가능한 적절한 비 일시적 저장 매체에 저장할 수 있으며, 하나 이상의 프로세서를 사용하여 하드웨어에서 명령을 실행하여 본 개시의 기술을 수행할 수 있다. 비디오 인코더(20) 및 비디오 디코더(30) 중 하나는 예를 들어 도 1b에 도시된 바와 같이 단일 디바이스에서 결합된 인코더/디코더(CODEC)의 일부로서 통합될 수 있다.
소스 디바이스(12) 및 목적지 디바이스(14)는 임의의 유형의 핸드헬드(handheld) 또는 고정(stationary) 디바이스, 예를 들어, 노트북 또는 랩톱 컴퓨터, 모바일폰, 스마트폰, 태블릿 또는 태블릿 컴퓨터, 카메라, 데스크톱 컴퓨터, 셋톱 박스, 텔레비전, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 디바이스(예: 콘텐츠 서비스 서버 또는 콘텐츠 전달 서버), 방송 수신기 디바이스, 방송 송신기 디바이스 등의 다양한 범위의 디바이스를 포함할 수 있으며, 운영 체제를 전혀 사용하지 않거나 사용할 수 있다. 일부 경우에, 소스 디바이스(12) 및 목적지 디바이스(14)는 무선 통신을 위해 장착될 수 있다. 따라서, 소스 디바이스(12) 및 목적지 디바이스(14)는 무선 통신 디바이스일 수 있다.
일부 경우에, 도 1a에 예시된 비디오 코딩 시스템(10)은 단지 예시일 뿐이며, 본 출원의 기술은 인코딩 디바이스와 디코딩 디바이스 사이의 임의의 데이터 통신을 반드시 포함하지 않는 비디오 코딩 설정(예: 비디오 인코딩 또는 비디오 디코딩)에 적용될 수 있다. 다른 예에서, 데이터는 로컬 메모리로부터 검색되거나, 네트워크 등을 통해 스트리밍된다. 비디오 인코딩 디바이스는 데이터를 인코딩하고 메모리에 저장할 수 있으며, 및/또는 비디오 디코딩 디바이스는 메모리로부터 데이터를 검색하고 디코딩할 수 있다. 일부 예들에서, 인코딩 및 디코딩은 서로 통신하지 않지만 단순히 데이터를 메모리로 인코딩하거나, 및/또는 메모리로부터 데이터를 검색 및 디코딩하는 디바이스들에 의해 수행된다.
설명의 편의를 위해, 본 개시의 실시 예는 HEVC(High-Efficiency Video Coding) 또는 VVC(Versatile Video Coding)의 참조 소프트웨어, ITU-T VCEG(Video Coding Experts Group)의 JCT-VC(Joint Collaboration Team on Video Coding)에 의해 개발된 차세대 비디오 코딩 표준 및 ISO/IEC MPEG(Motion Picture Experts Group)를 참조하여 여기에서 설명된다. 당업자는 본 개시의 실시 예가 HEVC 또는 VVC에 제한되지 않음을 이해할 것이다.
인코더 및 인코딩 방법
도 2는 본 출원의 기술을 구현하도록 구성된 예시적인 비디오 인코더(20)의 개략적인 블록도를 도시한다. 도 2의 예에서, 비디오 인코더(20)는 입력(201)(또는 입력 인터페이스(201)), 잔차 계산(residual calculation) 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 역 양자화(inverse quantization) 유닛(210) 및 역 변환(inverse transform) 처리 유닛(212), 재구성 유닛(214), 루프(loop) 필터 유닛(220), 디코딩된 화상 버퍼(decoded picture buffer, DPB)(230), 모드 선택 유닛(260), 엔트로피(entropy) 인코딩 유닛(270) 및 출력(272)(또는 출력 인터페이스(272))를 포함한다. 모드 선택 유닛(260)은 인터 예측 유닛(244), 인트라 예측 유닛(254) 및 파티셔닝(partitioning) 유닛(262)을 포함할 수 있다. 인터 예측 유닛(244)은 모션 추정 유닛 및 모션 보상 유닛(도시되지 않음)을 포함할 수 있다. 도 2에 도시된 비디오 인코더(20)는 또한 하이브리드 비디오 인코더 또는 하이브리드 비디오 코덱에 따른 비디오 인코더로 지칭될 수 있다.
잔차 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 모드 선택 유닛(260)은 인코더(20)의 순방향 신호 경로를 형성하는 것으로 지칭될 수 있으며, 반면, 역 양자화 유닛(210), 역 변환 처리 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터(220), 디코딩된 화상 버퍼(DPB)(230), 인터 예측 유닛(244) 및 인트라 예측 유닛(254)은 비디오 인코더의 역방향 신호 경로를 형성하는 것으로 지칭될 수 있으며, 여기서 비디오 인코더(20)의 역방향 신호 경로는 디코더의 신호 경로에 대응한다(도 3의 비디오 디코더(30) 참조). 역 양자화 유닛(210), 역 변환 처리 유닛(212), 재구성 유닛(214), 루프 필터(220), 디코딩 화상 버퍼(DPB)(230), 인터 예측 유닛(244) 및 인트라 예측 유닛(254)은 또한 비디오 인코더(20)의 "내장 디코더(built-in decoder)"를 형성하는 것으로 지칭될 수 있다.
화상 & 화상 파티셔닝(화상 & 블록)
인코더(20)는 예를 들어, 입력(201)을 통해, 화상(17)(또는 화상 데이터(17)), 예를 들어. 비디오 또는 비디오 시퀀스를 형성하는 일련의 화상의 화상을 수신하도록 구성될 수 있다. 수신된 화상 또는 화상 데이터는 또한 전처리된 화상(19)(또는 전처리된 화상 데이터(19))일 수 있다. 단순화를 위해 다음 설명은 화상(17)을 참조한다. 화상(17)은 또한 (특히, 현재 화상을 다른 화상, 예를 들어 동일한 비디오 시퀀스 즉, 현재 화상을 포함하는 비디오 시퀀스의 이전에 인코딩된 화상 및/또는 디코딩된 화상과 구별하기 위한 비디오 코딩에서) 코딩될 현재 화상 또는 화상이라고 지칭될 수 있다.
(디지털) 화상은 강도(intensity) 값이 있는 샘플의 2차원 어레이 또는 샘플 행렬일 수 있거나 이로 간주될 수 있다. 어레이의 샘플은 픽셀(pixel)(화상 엘리먼트의 축약 형태) 또는 펠(pel)이라고도 한다. 어레이 또는 화상의 수평 방향 및 수직 방향(또는 축)에 있는 샘플 수는 화상의 크기 및/또는 해상도를 정의한다. 컬러 표현을 위해, 일반적으로 세 가지 컬러 성분이 사용되며, 즉, 화상이 세개의 샘플 어레이로 표현하거나 이를 포함할 수 있다. RBG 포맷 또는 컬러 공간에서, 화상은 해당하는 적색, 녹색 및 청색 샘플 어레이를 포함한다. 그러나 비디오 코딩에서, 각각의 픽셀은 전형적으로 휘도 및 색차 포맷 또는 컬러 공간, 예를 들어, Y로 지시된 휘도 성분(luminance component)(때로는 L이 대신 사용됨)과 Cb 및 Cr로 지시된 두 개의 색차 성분(chrominance component)을 포함하는 YCbCr으로 표현된다. 휘도(또는 루마(luma)) 성분 Y는 밝기(brightness) 또는 그레이 레벨 강도(예: 그레이 스케일 화상에서와 같이)를 나타내는 반면, 두 개의 색차(또는 크로마(chroma)) 성분 Cb 및 Cr은 색도(chromaticity) 또는 컬러 정보 성분을 나타낸다. 따라서, YCbCr 포맷의 화상은 휘도 샘플 값(Y)의 휘도 샘플 어레이와 색차 값(Cb 및 Cr)의 두 개의 색차 샘플 어레이를 포함한다. RGB 포맷의 화상은 YCbCr 포맷으로 컨버전되거나 변환될 수 있으며 그 반대의 경우도 마찬가지이며, 이 프로세스는 컬러 변환 또는 컨버전(conversion)이라고도 한다. 화상이 단색이면 화상은 휘도 샘플 어레이만 포함할 수 있다. 따라서, 화상은 예를 들어 단색 포맷의 루마 샘플 어레이 또는 루마 샘플 어레이와 4: 2: 0, 4: 2: 2 및 4: 4: 4 컬러 포맷에서의 두 개의 대응하는 크로마 샘플 어레이일 수 있다.
비디오 인코더(20)의 실시 예는 화상(17)을 복수의(전형적으로 비 중첩) 화상 블록(203)으로 파티셔닝하도록 구성된 화상 파티셔닝 유닛(도 2에 도시되지 않음)을 포함할 수 있다. 이러한 블록은 루트(root) 블록, 매크로 블록(H.264/AVC) 또는 코딩 트리 블록(coding tree block, CTB) 또는 코딩 트리 유닛(coding tree unit, CTU)(H.265/HEVC 및 VVC)이라고도 한다. 화상 파티셔닝 유닛은 비디오 시퀀스의 모든 화상에 대해 동일한 블록 크기 및 블록 크기를 정의하는 대응하는 그리드(grid)를 사용하거나, 또는 화상 또는 서브 세트 또는 화상 그룹 사이의 블록 크기를 변경하고 각 화상을 해당 블록으로 파티셔닝하도록 구성될 수 있다.
추가 실시 예에서, 비디오 인코더는 화상(17)의 블록(203) 예를 들어, 화상(17)을 형성하는 하나, 여러 또는 모든 블록을 직접 수신하도록 구성될 수 있다. 화상 블록(203)은 또한 현재 화상 블록 또는 코딩될 화상 블록으로 지칭될 수 있다.
화상(17)과 같이, 화상 블록(203)은 화상(17)보다 작은 차원이지만, 강도 값(샘플 값)을 갖는 샘플의 2차원 어레이 또는 샘플 행렬이거나 이로 간주될 수 있다. 다시 말하자면, 블록(203)은 예를 들어, 하나의 샘플 어레이(예: 단색 화상(17)의 경우 루마 어레이, 또는 컬러 화상의 경우 루마 어레이 또는 크로마 어레이) 또는 3개의 샘플 어레이(예: 컬러 화상(17)의 경우 루마 어레이 및 두 개의 크로마 어레이) 또는 적용된 컬러 포맷에 따라 다른 수 및/또는 유형의 어레이를 포함할 수 있다. 블록(203)의 수평 방향 및 수직 방향(또는 축)의 샘플 수는 블록(203)의 크기를 정의한다. 따라서, 블록은 예를 들어, 샘플의 M×N(M-열×N-행) 어레이, 또는 변환 계수의 M×N 어레이일 수 있다.
도 2에 도시된 비디오 인코더(20)의 실시 예는 블록별로 화상(17)을 인코딩하도록 구성될 수 있으며, 예를 들어 인코딩 및 예측은 블록(203)마다 수행된다.
잔차 계산
잔차 계산 유닛(204)은 예를 들어, 샘플별(픽셀별)로 화상 블록(203)의 샘플 값으로부터 예측 블록(265)의 샘플 값을 감산하는 것에 의해, 화상 블록(203) 및 예측 블록(265)(예측 블록(265)에 대한 추가 세부 사항이 나중에 제공됨)에 기반하여 잔차 블록(205)(잔차(205)라고도 함)을 계산하며, 샘플 도메인에서 잔차 블록(205)을 획득하도록 구성될 수 있다.
변환
변환 처리 유닛(206)은 잔차 블록(205)의 샘플 값에 대해 변환, 예를 들어, 이산 코사인 변환(discrete cosine transform, DCT) 또는 이산 사인 변환(discrete sine transform, DST)을 적용하여, 변환 도메인에서 변환 계수(207)를 획득하도록 구성될 수 있다. 변환 계수(207)는 또한 변환 잔차 계수로 지칭될 수 있고, 변환 도메인에서 잔차 블록(205)을 나타낼 수 있다.
변환 처리 유닛(206)은 H.265/HEVC에 대해 지정된 변환과 같은 DCT/DST의 정수 근사치(integer approximation)를 적용하도록 구성될 수 있다. 직교 DCT 변환과 비교할 때, 이러한 정수 근사치는 일반적으로 특정 팩터(factor)에 의해 스케일링된다(scaled). 순방향 변환 및 역 변환에 의해 처리되는 잔차 블록의 놈(norm)을 보존하기 위해 추가 스케일링 팩터(additional scaling factor)가 변환 프로세스의 일부로 적용된다. 스케일링 팩터는 전형적으로, 시프트 연산에 대해 2의 거듭 제곱인 스케일링 팩터, 변환 계수의 비트 깊이(bit depth), 정확도와 구현 비용 간의 균형(tradeoff) 등 특정 제약 조건에 기반하여 선택된다. 특정 스케일링 팩터는 예를 들어, 역 변환 처리 유닛(212)에 의한 역 변환(및 예를 들어 비디오 디코더(30)에서의 역 변환 처리 유닛(312)에 의한 대응하는 역 변환)에 대해 지정되며, 그리고 인코더(20)에서 예를 들어, 변환 처리 유닛(206)에 의한 순방향 변환에 대한 대응하는 스케일링 팩터가 그에 따라 지정될 수 있다.
비디오 인코더(20)의 실시 예(각각 변환 처리 유닛(206))는 변환 파라미터 예를 들어, 변환 유형 또는 예를 들어 엔트로피 인코딩 유닛(270)을 통해 직접 또는 인코딩되거나 압축된, 변환을 출력하도록 구성될 수 있으므로, 예를 들어, 비디오 디코더(30)는 디코딩을 위해 변환 파라미터를 수신하고 사용할 수 있다.
양자화
양자화 유닛(208)은 예를 들어 스칼라 양자화 또는 벡터 양자화를 적용하는 것에 의해, 변환 계수(207)를 양자화하여 양자화된 계수(209)를 획득하도록 구성될 수 있다. 양자화된 계수(209)는 또한 양자화된 변환 계수(209) 또는 양자화된 잔차 계수(209)로 지칭될 수 있다.
양자화 프로세스는 변환 계수(207)의 일부 또는 전부와 관련된 비트 깊이를 감소시킬 수 있다. 예를 들어, n-비트 변환 계수는 양자화 동안 m-비트 변환 계수로 반올림될 수 있으며, 여기서 n은 m보다 크다. 양자화의 정도(degree)는 양자화 파라미터(quantization parameter, QP)를 조정하는 것에 의해 수정될 수 있다. 예를 들어, 스칼라 양자화의 경우, 더 미세하거나 거친 양자화를 달성하기 위해 상이한 스케일링이 적용될 수 있다. 더 작은 양자화 단계 크기는 더 미세한(finer) 양자화에 대응하는 반면, 더 큰 양자화 단계 크기는 더 거친(coarser) 양자화에 대응한다. 적용 가능한 양자화 단계 크기는 양자화 파라미터(QP)로 지시될 수 있다. 양자화 파라미터는 예를 들어 적용 가능한 양자화 단계 크기의 미리 정의된 세트에 대한 인덱스일 수 있다. 예를 들어, 작은 양자화 파라미터는 미세 양자화(작은 양자화 단계 크기)에 대응할 수 있고, 큰 양자화 파라미터는 거친 양자화(큰 양자화 단계 크기)에 대응하거나, 또는 그 반대일 수 있다. 양자화는 예를 들어 역 양자화 유닛(210)에 의한, 양자화 단계 크기와 대응하는 및/또는 역 역양자화(inverse dequantization)에 의한 나누기(division)를 포함할 수 있으며, 양자화 단계 크기에 의한 곱셈(multiplication)을 포함할 수 있다. 일부 표준 예를 들어 HEVC에 따른 실시 예는 양자화 파라미터를 사용하여 양자화 단계 크기를 결정하도록 구성될 수 있다. 일반적으로 양자화 단계 크기는 나누기를 포함한 방정식의 고정 소수점 근사치를 사용하여 양자화 파라미터를 기반으로 계산될 수 있다. 잔차 블록의 놈을 복원하기 위해 추가 스케일링 팩터가 양자화 및 역양자화에 대해 도입될 수 있으며, 이는 양자화 단계 크기 및 양자화 파라미터에 대한 방정식의 고정 소수점 근사치에 사용되는 스케일링으로 인해 수정될 수 있다. 하나의 예시적인 구현에서, 역 변환 및 역양자화의 스케일링이 조합될 수 있다. 다르게는, 맞춤형 양자화 테이블이 사용되어 인코더에서 디코더로 예를 들어 비트스트림에서 시그널링될 수 있다. 양자화는 손실 연산(lossy operation)이며, 양자화 단계 크기가 증가함에 따라 손실이 증가한다.
비디오 인코더(20)(각각 양자화 유닛(208))의 실시 예는 예를 들어 직접적으로 또는 엔트로피 인코딩 유닛(270)을 통해 인코딩된 양자화 파라미터(QP)를 출력하도록 구성될 수 있으므로, 예를 들어, 비디오 디코더(30)는 디코딩을 위해 양자화 파라미터를 수신하고 적용할 수 있다.
역 양자화(Inverse Quantization)
역 양자화 유닛(210)은 예를 들어. 양자화 유닛(208)과 동일한(same) 양자화 단계 크기에 기반하거나 이를 사용하여 양자화 유닛(208)에 의해 적용된 양자화 방식의 역을 적용하는 것에 의해, 양자화된 계수에 양자화 유닛(208)의 역 양자화를 적용하여 역양자화된 계수(dequantized coefficient)(211)를 획득하도록 구성된다. 역양자화된 계수(211)는 또한 역양자화된 잔차 계수(dequantized residual coefficient)(211)로 지칭될 수 있고, 전형적으로 양자화에 의한 손실로 인한 변환 계수와 똑같지는 않지만 변환 계수(207)에 대응한다.
역 변환
역 변환 처리 유닛(212)은 변환 처리 유닛(206)에 의해 적용된 변환의 역 변환 예를 들어, 역(inverse) 이산 코사인 변환(DCT) 또는 역 이산 사인 변환(DST) 또는 다른 역 변환을 적용하여, 샘플 도메인에서 재구성된 잔차 블록(213)(또는 대응하는 역양자화된 계수(213))을 획득하도록 구성된다. 재구성된 잔차 블록(213)은 또한 변환 블록(213)으로 지칭될 수 있다.
재구성
재구성 유닛(214)(예: 가산기(adder) 또는 합산기(summer)(214))은 변환 블록(213)(즉, 재구성된 잔차 블록(213))을 예측 블록(265)에 추가하여, 예를 들어, 샘플 별로 재구성된 잔차 블록(213)의 샘플 값 및 예측 블록(265)의 샘플 값을 추가하는 것에 의해, 샘플 도메인에서 재구성된 블록(215)을 획득하도록 구성된다.
필터링
루프 필터 유닛(220)(또는 "루프 필터"(220))은 재구성된 블록(215)을 필터링하여 필터링된 블록(221)을 획득하거나, 일반적으로 재구성된 샘플을 필터링하여 필터링된 샘플을 획득하도록 구성된다. 루프 필터 유닛은 예를 들어 픽셀 전환(pixel transition)을 부드럽게 하거나(smooth) 그렇지 않으면 비디오 품질을 향상시키도록 구성된다. 루프 필터 유닛(220)은 디블로킹(de-blocking) 필터, 샘플 적응 오프셋(sample-adaptive offset, SAO) 필터 또는 하나 이상의 다른 필터, 예를 들어, 양방향(bilateral) 필터, 적응형 루프 필터(adaptive loop filter, ALF), 선명하게 하기(sharpening), 평활화(smoothing) 필터 또는 협업(collaborative) 필터 또는 이들의 조합과 같은, 하나 이상의 루프 필터를 포함할 수 있다. 루프 필터 유닛(220)은 도 2에 도시된 루프 필터일 수 있으며, 다른 구성에서 루프 필터 유닛(220)은 포스트(post) 루프 필터로 구현될 수 있다. 필터링된 블록(221)은 또한 필터링된 재구성된 블록(221)으로 지칭될 수 있다.
비디오 인코더(20)의 실시 예(각각 루프 필터 유닛(220))는 예를 들어, 직접 또는 엔트로피 인코딩 유닛(270)을 통해 인코딩된 루프 필터 파라미터(예를 들어 샘플 적응 오프셋 정보)를 출력하도록 구성될 수 있으므로, 예를 들어, 디코더(30)는 디코딩을 위해 동일한 루프 필터 파라미터 또는 각각의 루프 필터를 수신하고 적용할 수 있다.
디코딩된 화상 버퍼
디코딩된 화상 버퍼(decoded picture buffer, DPB)(230)는 비디오 인코더(20)에 의해 비디오 데이터를 인코딩하기 위해 참조 화상 또는 일반적으로 참조 화상 데이터를 저장하는 메모리일 수 있다. DPB(230)는 동기식 DRAM(synchronous dynamic random access memory, SDRAM)를 포함하는 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM), 자기 저항성 RAM(magnetoresistive RAM, MRAM), 저항성 RAM(resistive RAM, RRAM) 또는 다른 유형의 메모리 디바이스와 같은 다양한 메모리 디바이스 중 하나로 형성될 수 있다. 디코딩된 화상 버퍼(DPB)(230)는 하나 이상의 필터링된 블록(221)을 저장하도록 구성될 수 있다. 디코딩된 화상 버퍼(230)는 추가로, 동일한 현재 화상 또는 상이한 화상 예를 들어, 이전에 재구성된 화상의 다른 이전에 필터링된 블록, 예를 들어 이전에 재구성되고 필터링된 블록(221)을 저장하도록 구성될 수 있으며, 예를 들어, 인터 예측을 위해, 완전한 이전에 재구성된, 즉 디코딩된 화상(및 대응하는 참조 블록 및 샘플) 및/또는 부분적으로 재구성된 현재 화상(및 대응하는 참조 블록 및 샘플)을 제공할 수 있다. 디코딩된 화상 버퍼(DPB)(230)는 또한, 예를 들어, 재구성된 블록(215)이 루프 필터 유닛(220)에 의해 필터링되지 않으면, 하나 이상의 필터링되지 않은 재구성된 블록(215), 또는 일반적으로 필터링되지 않은 재구성된 샘플, 또는 재구성된 블록 또는 샘플의 다른 추가 처리된 버전을 저장하도록 구성될 수 있다.
모드 선택(파티셔닝 & 예측)
모드 선택 유닛(260)은 파티셔닝 유닛(262), 인터 예측 유닛(244) 및 인트라 예측 유닛(254)을 포함하고, 원래의 화상 데이터 예를 들어 원래 블록(203)(현재 화상(17)의 현재 블록(203)) 그리고 재구성된 화상 데이터, 예를 들어 동일(현재) 화상의 및/또는 예를 들어 디코딩된 화상 버퍼(230) 또는 다른 버퍼(예를 들어, 라인 버퍼, 도시되지 않음)로부터의 하나 또는 복수의 이전에 디코딩된 화상으로부터의, 필터링된 및/또는 필터링되지 않은 재구성된 샘플 또는 블록을 수신하고 획득하도록 구성된다. 재구성된 화상 데이터는 예측 블록(265) 또는 예측자(predictor)(265)를 획득하기 위해, 예측 예를 들어, 인터 예측 또는 인트라 예측을 위한 참조 화상 데이터로 사용된다.
모드 선택 유닛(260)은 현재 블록 예측 모드(파티셔닝 없음을 포함)에 대한 파티셔닝 및 예측 모드(예: 인트라 예측 모드 또는 인터 예측 모드)를 결정하거나 또는 선택하고, 잔차 블록(205)의 계산 및 재구성된 블록(215)의 재구성을 위해 사용되는, 대응하는 예측 블록(265)을 생성하도록 구성될 수 있다.
모드 선택 유닛(260)의 실시 예는 파티셔닝 및 예측 모드(예: 모드 선택 유닛(260)에 의해 지원되거나 사용 가능한 것들로부터)를 선택하도록 구성될 수 있으며, 이는 최상의 매칭(best match)을 제공하거나 또는 다시 말하자면, 최소 잔차(최소 잔차는 전송 또는 저장을 위한 압축에 더 나은 것을 의미함), 또는 최소 시그널링 오버헤드(최소 시그널링 오버헤드는 전송 또는 저장을 위한 더 나은 압축을 의미함)을 제공하거나 또는 둘 모두를 고려하거나 균형을 유지한다. 모드 선택 유닛(260)은 레이트 왜곡 최적화(rate distortion optimization, RDO)에 기반하여 파티셔닝 및 예측 모드를 결정하도록 즉, 최소 레이트 왜곡을 제공하는 예측 모드를 선택하도록 구성될 수 있다. 이 문맥에서 "최상(best)", "최소", "최적(optimum)" 등과 같은 용어는 반드시 전체적인 "최상", "최소", "최적" 등을 의미하는 것은 아니지만, 임계 값을 초과하거나 아래로 떨어지는 값과 같은 종료(termination) 또는 선택 기준(selection criterion) 또는 잠재적으로 "차선책 선택(sub-optimum selection)"으로 이어지지만 복잡성과 처리 시간을 줄이는 다른 제약 조건의 이행(fulfillment)으로 지칭될 수 있다.
다시 말해, 파티셔닝 유닛(262)은 예를 들어, 반복적으로 QT(quad-tree-partitioning), BT(binary partitioning) 또는 TT(triple-tree-partitioning) 또는 이들의 임의의 조합을 사용하는 것에 의해, 블록(203)을 더 작은 블록 파티션 또는 서브블록(다시 블록을 형성함)으로 파티셔닝하고, 예를 들어, 블록 파티션 또는 서브블록 각각에 대한 예측을 수행하도록 구성될 수 있으며, 모드 선택은 파티셔닝된 블록(203)의 트리 구조의 선택을 포함하고, 예측 모드는 블록 파티션 또는 서브블록 각각에 대해 적용된다.
다음에서, 예시적인 비디오 인코더(20)에 의해 수행되는 파티셔닝(예: 파티셔닝 유닛(260)에 의함) 및 예측 처리(인터 예측 유닛(244) 및 인트라 예측 유닛(254)에 의함)가 더 상세히 설명될 것이다.
파티셔닝
파티셔닝 유닛(262)은 현재 블록(203)을 더 작은 파티션, 예를 들어, 정사각형 또는 직사각형 크기의 작은 블록으로 파티셔닝(또는 분할(split))할 수 있다. 이러한 더 작은 블록(서브블록이라고도 함)은 추가로, 더 작은 파티션으로 파티셔닝될 수 있다. 이것은 또한 트리 파티셔닝 또는 계층적 트리 파티셔닝이라고도 하며, 여기서 루트 블록은, 예를 들어 루트 트리 레벨 0(계층적 레벨 0, 깊이 0)에서 재귀적으로 파티셔닝될 수 있으며, 예를 들어, 다음 하위 트리 레벨 예를 들어 트리 레벨 1의 노드(계층적 레벨 1, 깊이 1)의 두 개 이상의 블록으로 파티셔닝되며, 여기서 이러한 블록들은 예를 들어, 최대 트리 깊이 또는 최소 블록 크기에 도달하여 종료 기준이 충족되었기 때문에 파티셔닝이 종료될 때까지, 다시 다음 하위 레벨 예를 들어, 트리 레벨 2(계층적 레벨 2, 깊이 2)의 두 개 이상의 블록 등으로 파티셔닝된다. 더 이상 파티셔닝되지 않은 블록은 트리의 리프(leaf) 블록 또는 리프 노드라고도 한다. 2개의 파티션으로 파티셔닝하는 것을 사용하는 트리를 2진 트리(binary-tree, BT), 3개의 파티션으로 파티셔닝하는 것을 사용하는 트리를 3진 트리(ternary-tree, TT), 4개의 파티션으로 파티셔닝하는 것을 사용하는 트리를 쿼드-트리(quad-tree, QT)라고 지칭한다.
앞서 언급한 바와 같이, 여기서 사용된 용어 "블록"은 화상의 일부(portion), 특히 정사각형 또는 직사각형 일부일 수 있다. 예를 들어, HEVC 및 VVC를 참조하면, 블록은 코딩 트리 유닛(coding tree unit, CTU), 코딩 유닛(coding unit, CU), 예측 유닛(prediction unit, PU) 및 변환 유닛(transform unit, TU) 및/또는 해당 블록, 예를 들어, 코딩 트리 블록(coding tree block, CTB), 코딩 블록(coding block, CB), 변환 블록(transform block, TB) 또는 예측 블록(prediction block, PB)에 대응할 수 있다.
예를 들어, 코딩 트리 유닛(CTU)은 루마 샘플의 CTB, 3개의 샘플 어레이를 갖는 화상의 크로마 샘플의 2개의 대응하는 CTB, 또는 모노크롬 화상 또는 샘플을 코딩하는 데 사용되는 세개의 개별 컬러 평면과 신택스 구조를 사용하여 코딩된 화상의 샘플의 CTB이거나 이를 포함할 수 있다. 상응하게, 코딩 트리 블록(CTB)은 N의 일부 값에 대한 샘플의 N×N 블록일 수 있으므로, 컴포넌트를 CTB로 나누는 것이 파티셔닝이다. 코딩 유닛(CU)은 루마 샘플의 코딩 블록, 또는 3개의 샘플 어레이를 갖는 화상의 크로마 샘플의 2개의 대응하는 코딩 블록, 또는 모노크롬 화상 또는 샘플을 코딩하는 데 사용되는 세개의 개별 컬러 평면과 신택스 구조를 사용하여 코딩된 화상의 샘플의 코딩 블록일 수 있거나 이를 포함할 수 있다. 상응하게, 코딩 블록(CB)은 M 및 N의 일부 값에 대한 샘플의 M×N 블록일 수 있으므로, CTB를 코딩 블록으로 나누는 것이 파티셔닝이다.
실시 예에서, 예를 들어, HEVC에 따르면, 코딩 트리 유닛(CTU)은 코딩 트리로 표시된 쿼드 트리 구조를 사용하여 CU로 분할될 수 있다. 인터 화상(시간적) 또는 인트라 화상(공간적) 예측을 사용하여 화상 영역을 코딩할지의 결정이 CU 레벨에서 이루어진다. 각각의 CU는 PU 분할(splitting) 유형에 따라 1개, 2개 또는 4개의 PU로 추가로 분할될 수 있다. 하나의 PU 내부에서, 동일한 예측 프로세스가 적용되고 관련 정보가 PU 단위로 디코더로 전송된다. PU 분할 유형에 기반한 예측 프로세스를 적용하여 잔차 블록을 획득한 후, CU는 CU에 대한 코딩 트리와 유사한 다른 쿼드 트리 구조에 따라 변환 유닛(TU)으로 파티셔닝될 수 있다.
실시 예에서, 예를 들어 VVC(Versatile Video Coding)라고 하는, 현재 개발중인 최신 비디오 코딩 표준에 따라, 쿼드 트리 및 이진 트리(Quad-tree and binary tree, QTBT) 파티셔닝이 코딩 블록을 파티셔닝하는 데 사용된다. QTBT 블록 구조에서, CU는 정사각형 또는 직사각형 모양을 가질 수 있다. 예를 들어, 코딩 트리 유닛(CTU)은 먼저 쿼드 트리 구조에 의해 파티셔닝된다. 쿼드 트리 리프 노드는 추가로, 2진 트리 또는 3진(또는 삼중(triple)) 트리 구조에 의해 파티셔닝된다. 트리 리프 노드를 파티셔닝하는 것이 코딩 유닛(coding unit, CU)이라고 하며, 그리고 해당 세그먼테이션(segmentation)이 추가 파티셔닝 없이 예측 및 변환 처리에 사용된다. 이는 CU, PU 및 TU가 QTBT 코딩 블록 구조에서 동일한 블록 크기를 가짐을 의미한다. 병렬로, 다중 파티션, 예를 들어 트리플 트리 파티션도 QTBT 블록 구조와 함께 사용하도록 제안되었다.
일 예에서, 비디오 인코더(20)의 모드 선택 유닛(260)은 여기에 설명된 파티셔닝 기술의 임의의 조합을 수행하도록 구성될 수 있다.
전술한 바와 같이, 비디오 인코더(20)는 (미리 결정된) 예측 모드의 세트로부터 최상 또는 최적 예측 모드를 결정하거나 선택하도록 구성된다. 예측 모드의 세트는 예를 들어, 인트라 예측 모드 및/또는 인터 예측 모드를 포함할 수 있다.
인트라 예측
인트라 예측 모드의 세트는 예를 들어, 35개의 상이한 인트라 예측 모드, 예를 들어, HEVC에 정의되어 있는 바와 같은, 예를 들어, DC(또는 평균(mean)) 모드 및 평면 모드(planar mode)와 같은 비 지향성 모드 또는 지향성 모드를 포함할 수 있거나, 또는 예를 들어, VVC에 정의된 바와 같은, 67개의 상이한 인트라 예측 모드, 예를 들어, DC(또는 평균) 모드 및 평면 모드와 같은 비 지향성 모드 또는 지향성 모드를 포함할 수 있다.
인트라 예측 유닛(254)은 인트라 예측 모드 세트의 인트라 예측 모드에 따라 동일한 현재 화상의 이웃 블록의 재구성된 샘플을 사용하여 인트라 예측 블록(265)을 생성하도록 구성된다.
인트라 예측 유닛(254)(또는 일반적으로 모드 선택 유닛(260))은 추가로, 인코딩된 화상 데이터(21)로의 포함(inclusion)을 위해 신택스(syntax) 엘리먼트의 형태로 인트라 예측 파라미터(또는 블록에 대해 선택된 인트라 예측 모드를 지시하는 일반적인 정보)를 엔트로피 인코딩 유닛(270)에 출력하도록 구성되므로, 예를 들어, 비디오 디코더(30)는 디코딩을 위해 예측 파라미터를 수신하고 사용할 수 있다.
인터 예측
(또는 가능한) 인터 예측 모드의 세트는 사용 가능한 참조 화상(즉, 예를 들어 DBP(230)에 저장된, 이전에 적어도 부분적으로 디코딩된 화상) 및 기타 인터 예측 파라미터, 예를 들어, 전체 참조 화상 또는 참조 화상의 일부만 예를 들어, 현재 블록의 영역(area) 주변의 검색 윈도우(search window) 영역이 최상의 매칭 참조 블록을 검색하는 데 사용되는지 및/또는 예를 들어, 픽셀 보간 예를 들어, half/semi-pel 및/또는 quarter-pel 보간이 적용되는지에 따라 달라진다.
위의 예측 모드 외에 스킵(skip) 모드 및/또는 다이렉트(direct) 모드가 적용될 수 있다.
인터 예측 유닛(244)은 모션 추정(motion estimation, ME) 유닛 및 모션 보상(motion compensation, MC) 유닛(모두 도 2에 도시되지 않음)을 포함할 수 있다. 모션 추정 유닛은 모션 추정을 위해, 화상 블록(203)(현재 화상(17)의 현재 화상 블록(203)) 및 디코딩된 화상(231), 또는 적어도 하나 또는 복수의 이전에 재구성된 블록, 예를 들어, 하나 또는 복수의 다른/상이한 이전에 디코딩된 화상(231)의 재구성된 블록을 수신 또는 획득하도록 구성될 수 있다. 예를 들어, 비디오 시퀀스는 현재 화상 및 이전에 디코딩된 화상(231)를 포함할 수 있으며, 또는 다시 말하자면, 현재 화상 및 이전에 디코딩된 화상(231)은 비디오 시퀀스를 형성하는 화상의 시퀀스의 일부이거나 이를 형성할 수 있다.
인코더(20)는 예를 들어, 복수의 다른 화상의 동일하거나 상이한 화상의 복수의 참조 블록으로부터 참조 블록을 선택하고, 참조 화상(또는 참조 화상 인덱스) 및/또는 참조 블록의 위치(x, y 좌표)와 현재 블록의 위치 사이의 오프셋(공간 오프셋)을 인터 예측 파라미터로서 모션 추정 유닛에 제공하도록 구성될 수 있다. 이 오프셋은 모션 벡터(motion vector, MV)라고도 한다. 모션 보상 유닛은 예를 들어, 인터 예측 파라미터를 수신하고, 인터 예측 파라미터에 기반하거나 또는 인터 예측 파라미터를 사용하여 인터 예측을 수행하여 인터 예측 블록(265)을 획득하도록 구성된다. 모션 보상 유닛에 의해 수행되는 모션 보상은 모션 추정에 의해 결정된 모션/블록 벡터에 기반하여 예측 블록을 페치하거나(fetch) 생성하는 것을 포함할 수 있으며, 가능하게는 서브 픽셀 정밀도(sub-pixel precision)에 대한 보간을 수행할 수 있다. 보간 필터링(Interpolation filtering)은 알려진 픽셀 샘플로부터 추가 픽셀 샘플을 생성할 수 있으며, 이에 따라 화상 블록을 코딩하는 데 사용될 수 있는 후보 예측 블록의 수를 잠재적으로 증가시킬 수 있다. 모션 보상 유닛은 현재 화상 블록의 PU에 대한 모션 벡터를 수신하면, 참조 화상 리스트 중 하나에서 모션 벡터가 가리키는(point) 예측 블록을 찾을(locate) 수 있다.
모션 보상 유닛은 또한 비디오 슬라이스(video slice)의 화상 블록을 디코딩할 때 비디오 디코더(30)에 의해 사용하기 위해 블록 및 비디오 슬라이스와 연관된 신택스 엘리먼트를 생성할 수 있다.
엔트로피 코딩
엔트로피 인코딩 유닛(270)은 예를 들어, 엔트로피 인코딩 알고리즘 또는 방식(예: 가변 길이 코딩(variable length coding, VLC) 방식, 콘텍스트 적응형 VLC 방식(context adaptive VLC scheme, CAVLC), 산술 코딩 방식, 이진화, 콘텍스트 적응형 이진 산술 코딩(context adaptive binary arithmetic coding, CABAC), 신택스 기반 콘텍스트 적응 이진 산술 코딩(syntax-based context-adaptive binary arithmetic coding, SBAC), 확률 간격 파티셔닝 엔트로피(probability interval partitioning entropy, PIPE) 코딩 또는 다른 엔트로피 인코딩 방법론 또는 기술) 또는 양자화된 계수에 대한 바이패스(bypass)(압축이 없음), 인터 예측 파라미터, 인트라 예측 파라미터, 루프 필터 파라미터 및/또는 다른 신택스 엘리먼트를 적용하여, 출력(272)을 통해 예를 들어, 인코딩된 비트스트림(21)의 형태로 출력될 수 있는 인코딩된 화상 데이터(21)를 획득하도록 구성되므로, 예를 들어, 비디오 디코더(30)가 디코딩을 위한 파라미터를 수신하고 사용할 수 있다. 인코딩된 비트스트림(21)은 비디오 디코더(30)로 전송되거나, 나중에 비디오 디코더(30)에 의한 전송 또는 검색을 위해 메모리에 저장될 수 있다.
비디오 인코더(20)의 다른 구조적 변형이 비디오 스트림을 인코딩하기 위해 사용될 수 있다. 예를 들어, 비 변환 기반 인코더(non-transform based encoder)(20)는 특정 블록 또는 프레임에 대해 변환 처리 유닛(206) 없이 직접 잔차 신호를 양자화할 수 있다. 다른 구현에서, 인코더(20)는 단일 유닛으로 결합된 양자화 유닛(208) 및 역 양자화 유닛(210)을 가질 수 있다.
디코더 및 디코딩 방법
도 3은 본 출원의 기술을 구현하도록 구성된 비디오 디코더(30)의 예를 도시한다. 비디오 디코더(30)는 예를 들어, 인코더(20)에 의해 인코딩된, 인코딩된 화상 데이터(21)(예: 인코딩된 비트스트림(21))를 수신하여 디코딩된 화상(331)을 획득하도록 구성된다. 인코딩된 화상 데이터 또는 비트스트림은 인코딩된 화상 데이터를 디코딩하기 위한 정보, 예를 들어, 인코딩된 비디오 슬라이스 및 관련 신택스 엘리먼트의 화상 블록을 나타내는 데이터를 포함한다.
도 3의 예에서, 디코더(30)는 엔트로피 디코딩 유닛(304), 역 양자화 유닛(310), 역 변환 처리 유닛(312), 재구성 유닛(314)(예: 합산기(314)), 루프 필터(320), 디코딩된 화상 버퍼(decoded picture buffer, DBP)(330), 인터 예측 유닛(344) 및 인트라 예측 유닛(354)을 포함한다. 인터 예측 유닛(344)은 모션 보상 유닛이거나 이를 포함할 수 있다. 비디오 디코더(30)는, 일부 예들에서, 도 2의 비디오 인코더(100)에 대해 설명된 인코딩 경로와 일반적으로 역인 디코딩 경로를 수행할 수 있다.
인코더(20)와 관련하여 설명된 바와 같이, 역 양자화 유닛(210), 역 변환 처리 유닛(212), 재구성 유닛(214), 루프 필터(220), 디코딩된 화상 버퍼(DPB)(230), 인터 예측 유닛(344) 및 인트라 예측 유닛(354)은 또한 비디오 인코더(20)의 "내장 디코더(built-in decoder)"를 형성하는 것으로도 지칭된다. 따라서, 역 양자화 유닛(310)은 역 양자화 유닛(110)과 기능면에서 똑같을(identical) 수 있고, 역 변환 처리 유닛(312)은 역 변환 처리 유닛(212)과 기능면에서 똑같을 수 있으며, 재구성 유닛(314)은 재구성 유닛(214)과 기능면에서 똑같을 수 있고, 루프 필터(320)는 루프 필터(220)와 기능면에서 똑같을 수 있으며, 디코딩된 화상 버퍼(330)는 디코딩된 화상 버퍼(230)와 기능면에서 똑같을 수 있다. 따라서, 비디오(20) 인코더의 각각의 유닛 및 기능에 대해 제공된 설명은 비디오 디코더(30)의 각각의 유닛 및 기능에 대응하여 적용된다.
엔트로피 디코딩
엔트로피 디코딩 유닛(304)은 비트스트림(21)(또는 일반적으로 인코딩된 화상 데이터(21))을 파싱하고, 예를 들어, 인코딩된 화상 데이터(21)에 대해 엔트로피 디코딩을 수행하여, 예를 들어, 양자화된 계수(309) 및/또는 디코딩된 코딩 파라미터(도 3에 도시되지 않음), 예를 들어, 인터 예측 파라미터(예: 참조 화상 인덱스 및 모션 벡터), 인트라 예측 파라미터(예: 인트라 예측 모드 또는 인덱스), 변환 파라미터, 양자화 파라미터, 루프 필터 파라미터, 및/또는 다른 신택스 엘리먼트 중 일부 또는 전부를 획득하도록 구성된다. 엔트로피 디코딩 유닛(304)은 인코더(20)의 엔트로피 인코딩 유닛(270)과 관련하여 설명된 인코딩 방식에 대응하는 디코딩 알고리즘 또는 방식을 적용하도록 구성될 수 있다. 엔트로피 디코딩 유닛(304)은 추가로, 인터 예측 파라미터, 인트라 예측 파라미터 및/또는 다른 신택스 엘리먼트를 모드 선택 유닛(360)에 제공하고, 다른 파라미터를 디코더(30)의 다른 유닛에 제공하도록 구성될 수 있다. 비디오 디코더(30)는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서 신택스 엘리먼트를 수신할 수 있다.
역 양자화
역 양자화 유닛(310)은 인코딩된 화상 데이터(21)로부터(예: 엔트로피 디코딩 유닛(304)에 의해 파싱 및/또는 디코딩에 의해) 양자화 파라미터(quantization parameter, QP)(또는 일반적으로 역 양자화와 관련된 정보) 및 양자화된 계수를 수신하고, 양자화 파라미터에 기반하여 디코딩된 양자화된 계수(309)에 역 양자화를 적용하여, 변환 계수(311)라고도 지칭될 수 있는 역양자화된 계수(dequantized coefficient)(311)를 획득한다. 역 양자화 프로세스는 양자화 정도 및 마찬가지로 적용되어야 하는 역 양자화 정도를 결정하기 위해, 비디오 슬라이스에서 각각의 비디오 블록에 대한 비디오 인코더(20)에 의해 결정된 양자화 파라미터의 사용을 포함할 수 있다.
역 변환
역 변환 처리 유닛(312)은 역양자화된 계수(311)(또한, 변환 계수(311)라고도 함)를 수신하고, 샘플 도메인에서 재구성된 잔차 블록(213)을 획득하기 위해 역 양자화된 계수(311)에 변환을 적용하도록 구성될 수 있다. 재구성된 잔차 블록(213)은 또한 변환 블록(313)으로 지칭될 수 있다. 변환은 역 변환, 예를 들어 역 DCT, 역 DST, 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스일 수 있다. 역 변환 처리 유닛(312)은 추가로, (예를 들어, 엔트로피 디코딩 유닛(304)에 의한 파싱 및/또는 디코딩에 의해) 인코딩된 화상 데이터(21)로부터 변환 파라미터 또는 대응하는 정보를 수신하여 역양자화된 계수(311)에 적용될 변환을 결정하도록 구성될 수 있다.
재구성
재구성 유닛(314)(예: 가산기 또는 합산기(314))은 재구성된 잔차 블록(313)을 예측 블록(365)에 추가하여, 예를 들어, 재구성된 잔차 블록(313)의 샘플 값과 예측 블록(365)의 샘플 값을 추가하는 것에 의해, 샘플 도메인에서 재구성된 블록(315)을 획득하도록 구성될 수 있다.
필터링
루프 필터 유닛(320)(코딩 루프에서 또는 코딩 루프 이후)은 예를 들어 재구성된 블록(315)을 필터링하여, 필터링된 블록(321)을 획득하도록, 예를 들어, 픽셀 전환(pixel transition)을 부드럽게 하거나 그렇지 않으면 비디오 품질을 향상시키도록 구성된다. 루프 필터 유닛(320)은 디블로킹 필터, 샘플 적응 오프셋(sample-adaptive offset, SAO) 필터 또는 하나 이상의 다른 필터, 예를 들어, 양방향 필터, 적응형 루프 필터(adaptive loop filter, ALF), 선명하게 하기, 평활화 필터 또는 협업 필터 또는 이들의 조합과 같은, 하나 이상의 루프 필터를 포함할 수 있다. 루프 필터 유닛(320)은 도 3에 인루프 필터로서 도시되어 있으며, 다른 구성에서 루프 필터 유닛(320)은 포스트 루프 필터로 구현될 수 있다.
디코딩된 화상 버퍼
화상의 디코딩된 비디오 블록(321)은 디코딩된 화상 버퍼(330)에 저장되고, 디코딩된 화상(331)은 다른 화상에 대한 후속 모션 보상 및/또는 각각의 디스플레이를 위한 참조 화상로서 저장된다. 디코더(30)는 사용자에게 제시하거나(present)보여 주기(viewing)를 위해 예를 들어, 출력(312)을 통해, 디코딩된 화상(311)을 출력하도록 구성된다.
예측
인터 예측 유닛(344)은 인터 예측 유닛(244)(특히 모션 보상 유닛에 대해)과 똑같을 수 있고, 인트라 예측 유닛(354)은 기능면에서 인터 예측 유닛(254)과 똑같을 수 있으며, 파티셔닝 및/또는 예측 파라미터 또는 (예를 들어, 엔트로피 디코딩 유닛(304)에 의해 파싱 및/또는 디코딩에 의해) 인코딩된 화상 데이터(21)로부터 수신된 각각의 정보에 기반하여 분할 또는 파티셔닝 결정 그리고 예측을 수행한다. 모드 선택 유닛(360)은 재구성된 화상, 블록 또는 각각의 샘플(필터링되거나 필터링되지 않음)에 기반하여 블록 당 예측(인트라 예측 또는 인터 예측)을 수행하여 예측 블록(365)을 획득하도록 구성될 수 있다.
비디오 슬라이스가 인트라 코딩(I) 슬라이스로 코딩될 때, 모드 선택 유닛(360)의 인트라 예측 유닛(354)은 시그널링된 인트라 예측 모드 및 현재 화상의 이전에 디코딩된 블록으로부터의 데이터에 기반하여, 현재 비디오 슬라이스의 화상 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 비디오 화상이 인터 코딩된(즉, B 또는 P) 슬라이스로 코딩될 때, 모드 선택 유닛(360)의 인터 예측 유닛(예: 모션 보상 유닛)은 엔트로피 디코딩 유닛(304)으로부터 수신된 모션 벡터 및 다른 신택스 엘리먼트에 기반하여 현재 비디오 슬라이스의 비디오 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 인터 예측을 위해, 예측 블록은 참조 화상 리스트 중 하나 내의 참조 화상 중 하나로부터 생성될 수 있다. 비디오 디코더(30)는 DPB(330)에 저장된 참조 화상에 기반한 디폴트 구성 기술을 사용하여 참조 프레임 리스트인 리스트 0 및 리스트 1을 구성할 수 있다.
모드 선택 유닛(360)은 모션 벡터 및 다른 신택스 엘리먼트를 파싱하는 것에 의해 현재 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 예측 정보를 사용하여, 디코딩되는 현재 비디오 블록에 대한 예측 블록을 생성하도록 구성된다. 예를 들어, 모드 선택 유닛(360)은 수신된 신택스 엘리먼트의 일부를 사용하여, 비디오 슬라이스의 비디오 블록을 코딩하는데 사용되는 예측 모드(예: 인트라 예측 또는 인터 예측), 인터 예측 슬라이스 유형(예: B 슬라이스, P 슬라이스 또는 GPB 슬라이스), 슬라이스에 대한 참조 화상 리스트 중 하나 이상에 대한 구성 정보, 슬라이스의 각각의 인터 인코딩된 비디오 블록에 대한 모션 벡터, 슬라이스의 각각의 인터 코딩된 비디오 블록에 대한 인터 예측 상태 및 현재 비디오 슬라이스에서의 비디오 블록을 디코딩하기 위한 기타 정보를 결정한다.
인코딩된 화상 데이터(21)를 디코딩하기 위해 비디오 디코더(30)의 다른 변형이 사용될 수 있다. 예를 들어, 디코더(30)는 루프 필터링 유닛(320) 없이 출력 비디오 스트림을 생성할 수 있다. 예를 들어, 비 변환 기반 디코더(30)는 특정 블록 또는 프레임에 대해 역 변환 처리 유닛(312) 없이 직접 잔차 신호를 역 양자화할 수 있다. 다른 구현에서, 비디오 디코더(30)는 단일 유닛으로 조합된 역 양자화 유닛(310) 및 역 변환 처리 유닛(312)을 가질 수 있다.
인코더(20) 및 디코더(30)에서, 현재 단계의 처리 결과가 추가로 처리된 후 다음 단계로 출력할 수 있음을 이해해야 한다. 예를 들어, 보간 필터링, 모션 벡터 유도(derivation) 또는 루프 필터링 이후, 클립(Clip) 또는 시프트(Shift)와 같은 추가 연산이 보간 필터링, 모션 벡터 유도 또는 루프 필터링의 처리 결과에 대해 수행될 수 있다.
추가 연산이 현재 블록의 유도된 모션 벡터(아핀(affine) 모드의 제어점(control point) 모션 벡터, 아핀에서의 서브블록 모션 벡터, 평면(planner), ATMVP 모드, 시간 모션 벡터 등을 포함하지만 이에 한정되지 않음)에 적용될 수 있음을 유의해야 한다. 예를 들어, 모션 벡터의 값은 대표 비트(representing bit)에 따라 미리 정의된 범위로 제한된다. 모션 벡터의 대표 비트가 bitDepth이면, 범위는 -2^(bitDepth-1)~2^(bitDepth-1)-1이며, 여기서, “^”는 지수(exponentiation)를 의미한다. 예를 들어, bitDepth가 16으로 설정되면, 범위는 -32768 ~ 32767이며; bitDepth가 18으로 설정되면 범위는 -131072 ~ 131071이다. 다음은 모션 벡터를 제한하는 두 가지 방법을 제공한다.
방법 1: 연산 흐름을 통해 오버플로 MSB(most significant bit)를 제거함
예를 들어, mvx의 값이 -32769이며, 수식(1)과 수식(2)를 적용한 후, 결과 값은 32767이다. 컴퓨터 시스템에서, 십진수는 2의 보수로 저장된다. -32769의 2의 보수는 1,0111,1111,1111,1111(17 비트)이고 그 다음에 MSB는 폐기되므로, 결과적으로 2의 보수는 0111,1111,1111,1111(10 진수는 32767)이며, 이는 수식(1)과 수식 (2)를 적용한 출력과 동일하다.
이 연산은 수식(5) 내지 수식(8)에서와 같이, mvp와 mvd의 합산 중에 적용될수 있다.
방법 2: 값을 클리핑(clip)하여 오버플로 MSB를 제거함
여기서, 함수 Clip3의 정의는 다음:
과 같다.
도 4는 본 개시의 실시 예에 따른 비디오 코딩 디바이스(400)의 개략도이다. 비디오 코딩 디바이스(400)는 여기서 설명된 바와 같이 개시된 실시 예를 구현하기에 적합하다. 일 실시 예에서, 비디오 코딩 디바이스(400)는 도 1a의 비디오 디코더(30)와 같은 디코더 또는 도 1a의 비디오 인코더(20)와 같은 인코더일 수 있다.
비디오 코딩 디바이스(400)는 데이터를 수신하기 위한 진입 포트(ingress port)(410)(또는 입력 포트(410)) 및 수신기 유닛(Rx)(420); 데이터를 처리하는 프로세서, 로직 유닛 또는 중앙 처리 유닛(central processing unit, CPU)(430); 데이터를 전송하기 위한 송신기 유닛(Tx)(440) 및 출구 포트(egress port)(450)(또는 출력 포트(450); 및 데이터를 저장하기 위한 메모리(460)를 포함한다. 비디오 코딩 디바이스(400)는 또한 광학적 또는 전기적 신호의 유출 또는 진입을 위해, 입력 포트(410), 수신기 유닛(420), 송신기 유닛(440) 및 출구 포트(450)에 결합된 광-전기(optical-to-electrical, OE) 구성 요소 및 전기-광(electrical-to-optical, EO) 구성 요소를 포함할 수 있다.
프로세서(430)는 하드웨어 및 소프트웨어로 구현된다. 프로세서(430)는 하나 이상의 CPU 칩, 코어(예: 멀티 코어 프로세서), FPGA, ASIC 및 DSP로 구현될 수 있다. 프로세서(430)는 진입 포트(410), 수신기 유닛(420), 송신기 유닛(440), 출구 포트(450) 및 메모리(460)와 통신한다. 프로세서(430)는 코딩 모듈(470)을 포함한다. 코딩 모듈(470)은 위에서 설명된 개시된 실시 예들을 구현한다. 예를 들어, 코딩 모듈(470)은 다양한 코딩 작동을 구현, 처리, 준비 또는 제공한다. 따라서, 코딩 모듈(470)의 포함은 비디오 코딩 디바이스(400)의 기능에 실질적인 개선을 제공하고, 비디오 코딩 디바이스(400)의 다른 상태로의 변환에 영향을 미친다. 다르게는, 코딩 모듈(470)은 메모리(460)에 저장되고 프로세서(430)에 의해 실행되는 명령(instruction)으로 구현된다.
메모리(460)는 하나 이상의 디스크, 테이프 드라이브 및 솔리드 스테이트 드라이브를 포함할 수 있으며, 오버플로우 데이터 저장 디바이스로 사용되어, 이러한 프로그램이 실행을 위해 선택될 때 프로그램을 저장하고, 프로그램 실행 동안 판독되는 명령과 데이터를 저장한다. 메모리(460)는 예를 들어, 휘발성 및/또는 비 휘발성일 수 있으며 읽기 전용 메모리(read-only memory, ROM), 랜덤 액세스 메모리(random access memory, RAM), 터너리 콘텐츠 주소 지정 가능 메모리(ternary content-addressable memory, TCAM) 및/또는 정적 랜덤 액세스 메모리(static random-access memory, SRAM)일 수 있다.
도 5는 일 실시 예에 따라 도 1의 소스 디바이스(12) 및 목적지 디바이스(14) 중 하나 또는 둘 모두로서 사용될 수 있는 장치(500)의 단순화된 블록도이다.
장치(500)의 프로세서(502)는 중앙 처리 유닛일 수 있다. 다르게는, 프로세서(502)는 현재 존재하거나 향후 개발될 정보를 조작하거나 처리할 수 있는 임의의 다른 유형의 디바이스 또는 다중 디바이스일 수 있다. 개시된 구현은 도시된 바와 같이 단일 프로세서, 예를 들어 프로세서(502)로 실행될 수 있지만, 하나 이상의 프로세서를 사용하여 속도 및 효율성의 이점을 달성할 수 있다.
장치(500)의 메모리(504)는 구현에서 읽기 전용 메모리(read only memory, ROM) 디바이스 또는 랜덤 액세스 메모리(random access memory, RAM) 디바이스일 수 있다. 임의의 다른 적절한 유형의 저장 디바이스가 메모리(504)로 사용될 수 있다. 메모리(504)는 버스(512)를 사용하여 프로세서(502)에 의해 액세스되는 코드 및 데이터(506)를 포함할 수 있다. 메모리(504)는 운영 체제(508) 및 애플리케이션 프로그램(510)을 더 포함할 수 있으며, 애플리케이션 프로그램(510)은 프로세서(502)가 여기에 설명된 방법을 수행하도록 허용하는 적어도 하나의 프로그램을 포함한다. 예를 들어, 애플리케이션 프로그램(510)은 여기에 설명된 방법을 수행하는 비디오 코딩 애플리케이션을 더 포함하는 애플리케이션 1 내지 애플리케이션 N을 포함할 수 있다.
장치(500)는 또한 디스플레이(518)와 같은 하나 이상의 출력 디바이스를 포함할 수 있다. 디스플레이(518)는, 일례에서, 터치 입력을 감지하도록 작동 가능한 터치 감지 엘리먼트와 디스플레이를 결합하는 터치 감지 디스플레이일 수 있다. 디스플레이(518)는 버스(512)를 통해 프로세서(502)에 연결될 수 있다.
여기서는 단일 버스로 도시되어 있지만, 장치(500)의 버스(512)는 다중 버스로 구성될 수 있다. 또한, 보조 스토리지(secondary storage)(514)는 장치(500)의 다른 구성 요소에 직접 결합될 수 있거나 또는 네트워크를 통해 액세스될 수 있고, 메모리 카드와 같은 단일 통합 유닛 또는 다중 메모리 카드와 같은 다중 유닛을 포함할 수 있다. 따라서, 장치(500)는 매우 다양한 구성으로 구현될 수 있다.
병합 후보 리스트
병합 모션 후보 리스트를 구성하는 프로세스는 ITU-T H.265 표준에 의해 도입되었다. 다른 실시 예에서, 병합 모션 후보 리스트는 VVC(Versatile Video Coding)의 확장된 병합 예측에 의해 사용된다. 블록 병합 작동(Block merging operation)은 모션 데이터 코딩을 위한 특정 모드("병합 모드(Merge mode)"라고도 함)이다. 블록 병합 작동은 이웃 블록(neighbor block)의 동일한 모션 정보를 사용하여 현재 블록을 허용한다. 모션 정보는 모션 데이터를 포함하고, 모션 데이터는 하나 또는 두 개의 참조 화상 리스트가 사용되는지에 대한 정보뿐만 아니라, 각 참조 화상 리스트에 대한 참조 인덱스 및 모션 벡터를 포함한다. 블록 병합 작동은 두 개의 이웃 블록이 화상 프레임에서 동일한 변형 불가능한(non-deformable) 객체에 해당하면 특히 유용하다. 이 경우 두 블록이 동일한 모션 벡터와 동일한 참조 화상을 사용하여 예측할 수 있으므로 전체 모션 정보는 두 블록에 대해 동일하다.
일 구현에서, 이웃 블록이 이용 가능하고 모션 정보를 포함하고 있는지 검사한 후, 이웃 블록의 모든 모션 데이터를 모션 정보 후보로 취하기 전에 몇 가지 추가적인 중복 검사(redundancy check)가 수행된다.
일 구현에서, 병합 후보 리스트는 다음 5가지 유형의 후보를 순서대로 포함하여 구성된다.
1) 공간적 이웃 CU로부터의 공간 MVP
2) 병치된(collocated) CU로부터의 임시 MVP
3) FIFO 테이블로부터의 히스토리 기반 MVP
4) 쌍별 평균(Pairwise average) MVP
5) 제로(zero) MV
병합 리스트의 크기는 슬라이스 헤더에서 시그널링되며, 병합 리스트의 최대 허용 크기는 예를 들어, 6이다. 병합 모드에서의 각각의 CU 코드에 대해, 최상의 병합 후보의 인덱스가 인코딩된다.
병합 후보의 각 범주에 대한 생성 프로세스가 제공된다.
공간 후보 유도(Spatial candidate derivation)
일 구현에서, 최대 4개의 병합 후보가 도 12에 묘사된 위치(position)에 위치된 후보들 중에서 선택된다. 유도 순서는 B1, A1, B0, A0 및 B2이다. 위치 B2는 위치 A0, B0, B1, A1의 임의 CU를 사용할 수 없거나(예: 다른 슬라이스 또는 타일(tile)에 속하기 때문에) 또는 인트라 코딩된 경우에만 고려된다. B1 위치에서의 후보가 추가된 후, 나머지 후보의 추가는 동일한 모션 정보를 가진 후보가 리스트에서 제외되는 것을 보장하는 중복 검사의 대상이 되므로, 코딩 효율성이 향상된다. 계산 복잡성을 줄이기 위해, 언급된 중복 검사에서 가능한 모든 후보 쌍이 고려되는 것은 아니다. 대신 도 13에서 화살표로 연결된 쌍만 고려되고, 중복 검사에 사용된 해당 후보가 동일한 모션 정보를 가지고 있지 않은 경우에만 후보가 리스트에 추가된다. 구현 중에, 변경 가능한 것으로 간주되는 공간적 이웃의 순서, 위치 및 수 그리고 위의 예는 제한으로 간주될 수 없다.
시간 후보 유도(Temporal candidate derivation)
일 구현에서, 하나의 후보만 리스트에 추가된다. 특히, 이 시간적 병합 후보의 유도에서, 스케일링된 모션 벡터가 병치된(collocated) 참조 화상에 속하는 공동 위치(co-located) CU를 기반으로 유도된다. 공동 위치 CU의 유도에 사용될 참조 화상 리스트는 슬라이스 헤더에서 명시적으로 시그널링된다. 시간적 병합 후보에 대한 스케일링된 모션 벡터는 도 14의 점선으로 나타낸 바와 같이 획득되며, 이는 POC 거리, tb 및 td를 사용하여 공동 위치 CU의 모션 벡터로부터 스케일링되며, 여기서 tb는 현재 화상의 참조 화상과 현재 화상 사이의 POC 차이로 정의되며, td는 공동 위치 화상의 참조 화상과 공동 위치 화상 사이의 POC 차이로 정의된다. 시간적 병합 후보의 참조 화상 인덱스는 0으로 설정된다.
시간 후보에 대한 위치는 도 15에 묘사된 바와 같이, 후보 C0과 후보 C1 사이에서 선택된다. 위치 C0에서의 CU가 사용될 수 없거나 또는 인트라 코딩되거나 또는 CTU의 현재 행 외부에 있으면, 위치 C1이 사용된다. 그렇지 않으면, 위치 C0가 시간적 병합 후보의 유도에 사용된다.
히스토리 기반 병합 후보 유도
히스토리 기반 MVP(history-based MVP, HMVP) 병합 후보는 공간 MVP 및 TMVP 뒤에 병합 리스트에 추가된다. 일 구현에서, 이전에 코딩된 블록의 모션 정보는 테이블에 저장되고 현재 CU에 대한 MVP로 사용된다. 여러 HMVP 후보가 있는 테이블은 인코딩/디코딩 프로세스 동안에 유지된다. 신규 CTU 행이 발견되는 경우 테이블이 재설정(비워짐)된다. 비-서브블록(non-subblock) 인터 코딩된 CU가 있을 때마다, 관련 모션 정보가 신규 HMVP 후보로서 테이블의 마지막 엔트리에 추가된다.
HMVP 테이블 크기 S는 5로 설정되며, 이는 예를 들어 최대 5개의 HMVP(History-based MVP) 후보가 테이블에 추가될 수 있음을 지시한다. 신규 모션 후보를 테이블에 삽입할 때, 제한된 FIFO(First-in-First-Out) 규칙이 사용되며, 여기서 테이블에 똑같은 HMVP가 있는지를 찾기 위해 중복 검사가 먼저 적용된다. 발견되면, 똑같은 HMVP가 테이블에서 제거되고 이후 모든 HMVP 후보가 앞으로(forward) 이동된다.
HMVP 후보는 병합 후보 리스트 구성 프로세스에 사용될 수 있다. 테이블에서 최신 몇개의 HMVP 후보가 순서대로 검사되고 TMVP 후보 뒤에 후보 리스트에 삽입된다. 중복 검사는 공간적 또는 시간적 병합 후보에 대한 HMVP 후보에 대해 적용된다.
중복 검사 작동의 수를 줄이기 위해, 상이한 단순화가 도입될 수 있다. 일반적으로 사용 가능한 병합 후보의 총 수가 최대 허용 병합 후보에서 1을 뺀 값에 도달하면, HMVP에서 병합 후보 리스트 구성 프로세스가 종료된다.
쌍별 평균 병합 후보 유도(Pair-wise average merge candidate derivation)
쌍별 평균 후보는 기존 병합 후보 리스트에서 미리 정의된 후보 쌍을 평균화하는 것에 의해 생성되며, 미리 정의된 쌍은 예를 들어 (0, 1)로 정의되며, 여기서 숫자는 병합 후보 리스트에 대한 병합 인덱스를 지시한다. 평균 모션 벡터는 각각의 참조 리스트에 대해 별도로 계산된다. 하나의 리스트에서 두 모션 벡터를 모두 사용할 수 있으면, 이들 두 모션 벡터는 서로 다른 참조 화상을 가리키는 경우에도 평균화되며; 하나의 모션 벡터만 사용할 수 있으면, 하나를 직접 사용하고; 사용 가능한 모션 벡터가 없으면 이 리스트를 유효하지 않게 유지한다.
ITU-T H.265에 따른 병합 후보 리스트 구성에 대한 예에서, 병합 후보 리스트는 다음 후보를 기반으로 구성된다.
1. 5개의 공간 이웃 블록에서 유도된 최대 4개의 공간 후보,
2. 두 개의 시간적 공동 위치 블록에서 유도되는 하나의 시간 후보,
3. 조합된 이중 예측 후보(bi-predictive candidate)를 포함한 추가 후보, 및
4. 제로 모션 벡터 후보.
공간 후보
공간 이웃 블록의 모션 정보는 먼저 병합 후보 리스트(일 예에서, 병합 후보 리스트는 제1 모션 벡터가 병합 후보 리스트에 추가되기 전에 빈(empty) 리스트일 수 있음)에 모션 정보 후보로서 추가된다. 여기서, 병합 리스트에 삽입될 것으로 간주되는 이웃 블록은 도 7b에 예시되어 있다. 인터 예측 블록 병합의 경우, A1, B1, B0, A0, B2 순서대로 순차적으로 검사하여 최대 4개의 후보가 병합 리스트에 삽입된다.
모션 정보는 하나 또는 두 개의 참조 화상 리스트가 사용되는지에 대한 정보뿐만 아니라 각 참조 화상 리스트에 대한 참조 인덱스 및 모션 벡터를 포함하는 모션 데이터를 포함할 수 있다.
일 예에서, 이웃 블록의 이용 가능 여부와 이웃 블록이 모션 정보를 포함하는지를 확인한 후, 이웃 블록의 모든 모션 데이터를 모션 정보 후보로 취하기 전에 일부 추가 중복 검사를 수행한다. 이러한 중복 검사는 두 가지 범주로 나눌 수 있다.
카테고리 1, 리스트에서 중복 모션 데이터가 있는 후보를 피한다.
카테고리 2, 중복 신택스를 생성하는 다른 수단으로 표현될 수 있는 두 개의 파티션을 병합하는 것을 방지한다.
시간 후보
도 7a는 시간 모션 정보 후보가 검색되는 블록의 좌표를 예시한다. 병치된 블록은 현재 블록의 -x, -y 좌표가 동일하지만 상이한 화상(참조 화상 중 하나)에 있는 블록이다. 시간 모션 정보 후보는 리스트가 가득 차지 않으면 병합 리스트에 추가된다(일 예에서, 병합 리스트의 후보 수가 임계 값보다 작은 경우 병합 리스트가 가득 차지 않으며, 예를 들어 임계 값은 4, 5, 6 등일 수 있음).
생성된 후보
공간 모션 정보 후보 및 시간 모션 정보 후보를 삽입한 후, 병합 리스트가 여전히 꽉 차 있지 않으면, 생성된 후보를 추가하여 리스트를 채운다. 일 예에서, 병합 리스트의 크기는 시퀀스 파라미터 세트에서 지시되며, 전체 코딩된 비디오 시퀀스에서 고정된다.
이중 예측
인터 예측 모드는 2개의 모션 벡터가 블록을 예측하는 데 사용되는 "이중 예측(bi-prediction)"이라고 한다. 모션 벡터는 동일한 참조 화상 또는 상이한 참조 화상을 가리킬 수 있으며, 참조 화상은 참조 화상 리스트 ID 및 참조 화상 인덱스에 의해 지시될 수 있다. 예를 들어, 제1 모션 벡터는 참조 화상 리스트 L0의 제1 화상을 가리킬 수 있고, 제2 모션 벡터는 참조 화상 리스트 L1의 제1 화상을 가리킬 수 있다. 두 개의 참조 화상 리스트(예를 들어, L0 및 L1)가 유지될 수 있으며, 제1 모션 벡터가 가리키는 화상이 리스트 L0에서 선택되고, 제2 모션 벡터가 가리키는 화상이 리스트 L1에서 선택된다.
일 예에서, 모션 정보가 이중 예측을 지시하면, 모션 정보는 다음 두 부분(part)을 포함한다.
● L0 부분: 모션 벡터 및 참조 화상 리스트 L0의 엔트리를 가리키는 참조 화상 인덱스.
● L1 부분: 모션 벡터 및 참조 화상 리스트 L1의 엔트리를 가리키는 참조 화상 인덱스.
POC(Picture Order Count): 각 화상과 관련된 변수로, CVS(Coded Video Sequence)의 모든 화상 중에서 관련 화상을 고유하게 식별한다. 연관된 화상이 디코딩된 화상 버퍼로부터 출력될 때, POC는 출력 순서에서 연관된 화상의 위치를 지시하는 데 사용되며, 이는 디코딩된 화상 버퍼로부터 출력될 수 있는 동일한 CVS에서의 다른 화상의 출력 순서 위치에 상대적이다.
참조 화상 리스트 L0 또는 L1은 하나 이상의 참조 화상을 포함할 수 있으며, 각각의 참조 화상은 POC로 식별된다. 각각의 참조 인덱스와 POC 값의 연관은 비트스트림에서 시그널링될 수 있다. 예를 들어, 참조 화상 리스트 L0 및 L1은 다음 참조 화상을 포함할 수 있다.
위의 예에서, 참조 화상 리스트 L1의 제1 엔트리(참조 인덱스 0으로 지시됨)는 POC 값이 13인 참조 화상이다. 참조 화상 리스트 L1의 제2 엔트리(참조 인덱스 1로 지시됨)는 POC 값이 14인 참조 화상이다.
삼각 예측 모드(Triangular prediction mode)
삼각 예측 모드의 개념은 모션 보상 예측을 위한 삼각 파티션이다. 도 9에 도시된 예와 같이, CU는 대각선 또는 역 대각선 방향으로 두 개의 삼각 예측 유닛으로 나뉜다. CU에서의 각각의 삼각 예측 유닛은 단일 예측 후보 리스트에서 유도된 단일 예측(uni-prediction) 모션 벡터 및 참조 프레임 인덱스를 사용하여 인터 예측된다. 삼각 예측 유닛을 예측한 후 적응 가중치 프로세스(adaptive weighting process)가 대각선 에지(diagonal edge)에 대해 수행된다. 그런 다음, 변환 및 양자화 프로세스가 전체 CU에 적용된다. 이 모드는 스킵 모드 및 병합 모드에만 적용된다.
삼각 예측 모드에서, 블록이 두 개의 삼각형 부분으로 분할되고(도 9 참조), 각각의 부분은 하나의 모션 벡터를 사용하여 예측될 수 있다. 하나의 삼각형 부분(PU1으로 표시됨)을 예측하는 데 사용되는 모션 벡터는 다른 삼각형 부분(PU2로 표시됨)을 예측하는 데 사용되는 모션 벡터와 상이할 수 있다. 삼각 예측 모드 수행의 복잡성을 줄이기 위해 각각의 부분은 단일 모션 벡터(단일 예측)만을 사용하여 예측될 수 있다. 다시 말하자면, 이중 예측을 사용하여 PU1과 PU2를 예측할 수 없다.
서브블록 예측 모드(Sub-block prediction mode)
삼각 예측 모드는 블록이 두 개의 블록으로 나눠지는 서브블록 예측의 특별한 경우이다. 위의 예에서, 두 개의 블록 분할 방향(45도 파티션 및 135도 파티션)이 예시되어 있다. 그러나 다른 분할 각도 및 분할 비율도 가능하다(예를 들어, 도 11의 예).
일부 예들에서, 블록은 2개의 서브블록 부분으로 분할되고, 각각의 부분은 단일 예측이 적용된다. 삼각 예측 모드와 비교할 때 차이점은 블록이 두 개의 부분으로 나눠지는 방식이며, 이에 따라 삼각 예측의 일반화된 버전을 나타낸다. 예를 들어, 서브블록은 파티션 각도에 따라 직사각형이거나 직사각형이 아닐 수 있다. 일부 예에서, 현재 블록은 2개의 예측 유닛으로 구성되고, 2개의 예측 유닛은 가상 분할 라인(virtual splitting line)에 의해 분할된다. 이 경우, 현재 블록이 기하학적 예측 모드로 예측된다고 한다.
ITU-T H.265 및 VVC의 병합 리스트 구성 프로세스는 모션 정보 후보 리스트를 출력한다. VVC의 병합 리스트 구성 프로세스는 http://phenix.it-sudparis.eu/jvet/에서 공개적으로 사용 가능한, 문서 JVET-L1001_v2 다목적 비디오 코딩(Versatile Video Coding)(초안(Draft) 3)의 "8.3.2.2 병합 모드를 위한 루마 모션 벡터에 대한 유도 프로세스" 섹션에 기술되어 있다. 모션 정보라는 용어는 모션 보상된 예측 프로세스를 수행하기 위해 필요한 모션 데이터를 말한다. 모션 정보는 일반적으로 다음 정보를 참조한다.
● 블록이 단일 예측 또는 이중 예측을 적용하는지 여부
● 예측에 사용되는 참조 화상의 ID(블록이 이중 예측을 적용하면 2개의 ID)
● 모션 벡터(블록이 이중 예측되면 2개의 모션 벡터)
● 추가 정보
VVC 사양 초안의 최신 버전에서, 병합 리스트 구성 프로세스는 문서 JVET-L1001_v2 다목적 비디오 코딩(Versatile Video Coding)(초안(Draft) 3)의 "8.3.2.2 병합 모드를 위한 루마 모션 벡터에 대한 유도 프로세스" 섹션에 기술되어 있다.
본 출원에 제시된 측면은 위의 세 가지 예에 제한되지 않는다는 점에 유의한다. 전술한 예에서 설명한 병합 리스트 구성 프로세스는 삼각 예측 모드가 코딩 블록에 적용되지 않은 경우, 구성된 병합 리스트가 코딩 블록의 예측을 획득하는 데 사용되는, 공통성을 갖는다. 본 개시는 병합 리스트(제1 리스트)의 후보를 사용하여 제2 모션 정보 후보 리스트를 생성하는 방법에 대해 설명하지만, 병합 리스트의 후보는 VVC 또는 ITU-T H.265의 모든 버전에서 설명된 방법일 수 있는 몇 가지 방법에 따라 생성된다..
VVC 및 H.265에서, 병합 리스트 구성 프로세스의 출력은 N개의 후보 모션 정보를 포함한다. 숫자 N은 전형적으로 비트스트림에 포함되며, 5, 6 등과 같은 양의 정수일 수 있다. 구성된 병합 리스트에 포함된 후보는 단일 예측 정보 또는 이중 예측 정보를 포함할 수 있다. 이는 병합 리스트에서 선택된 후보가 이중 예측 작동을 지시할 수 있음을 의미한다.
삼각 예측 모드가 코딩 블록에 적용되면, 코딩 블록의 각각의 삼각형 부분은 단일 예측으로 적용되어야 하며 이중 예측으로 적용되지 않아야 한다(하드웨어 구현 문제로 인함). 이는 이중 예측을 지시하는 정규 병합 리스트의 후보가 사용될 수 없어서, 성능이 저하되는 것을 유발할 수 있음을 의미한다.
문제는 다음과 같이 달리 표현될(reformulated) 수 있다.
● 블록이 삼각 예측 모드를 적용하면, 지시가 비트스트림에 포함되어 각각의 삼각형 부분을 예측하는 데 사용되는 모션 정보를 지시하는 데 사용된다. 예를 들어, 지시는 두 개의 병합 인덱스의 포맷일 수 있으며, 여기서 제1 병합 인덱스는 제1 부분을 예측하기 위해 적용되는 병합 리스트의 엔트리를 지정하고, 제2 병합 인덱스는 제2 부분을 예측하기 위해 적용되는 병합 리스트의 엔트리를 지정한다.
● 개별 부분에 대해 이중 예측을 적용하는 것은 금지되어 있으며, 이는 각각의 부분에 사용되는 모션 정보는 단일 예측을 지시해야 함을 의미한다.
● 병합 리스트에서, 단일 예측 모션 정보 후보 및 이중 예측 모션 정보 후보를 가질 수 있다. 이중 예측 후보를 선택하는 것이 금지되어 있으므로 성능이 저하된다. 단일 예측 후보만 사용할 수 있기 때문에 후보 리스트 크기가 효과적으로 감소된다.
VVC에서, 블록이 특정 크기(너비 샘플 4개 또는 높이 샘플 4개)를 가지면, 블록 예측을 위해 이중 예측을 적용하는 것이 금지된다. 8×4/4×8 블록은 블록 파티셔닝을 사용하여 달성될 수 있는 가능한 가장 작은 인터 예측 블록이다. 하드웨어 구현은 가능한 가장 작은 블록을 최악의 복잡성 척도로 고려해야 하기 때문에, 하드웨어 복잡성 문제로 인해 가장 작은 블록에 대해서는 이중 예측이 허용되지 않는다. 따라서, 가장 작은 블록에 대한 이중 예측을 금지하면 하드웨어 구현에 대한 최악의 복잡성이 감소된다.
VVC의 경우에, 블록의 크기가 8×4/4×8이고 블록이 병합 모드로 코딩되면, 문제 1의 경우와 유사한 문제가 존재한다.
본 개시의 일 실시 예(실시 예 1)에서, 다음 단계에 따라 병합 리스트를 구성한다.
단계 1: 단일 예측 또는 이중 예측으로 모션 정보 후보를 포함하는 모션 후보 리스트(제1 리스트)를 구성한다.
제1 리스트는 ITU-T H.265 및 VVC의 방법에 따라 구성될 수 있으며, H.265 및 VVC의 병합 리스트 구성 프로세스에 대한 위의 예 및 개시를 참조한다.
단계 2: 다음과 같이 제1 리스트의 후보를 사용하여 제2 리스트를 구성한다.
제1 리스트의 제1 후보부터 시작한다.
단계 2.1: 후보가 단일 예측 후보이면, 제2 리스트에 후보(모션 정보 후보)를 추가한다.
또는,
단계 2.2: 후보가 이중 예측 후보이면, 두 개의 단일 예측 후보가 생성되고 두 개의 단일 예측 후보가 다음 순서에 따라 제2 리스트에 추가된다.
● 제1 모션 정보 후보는 L0 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다(후보가 제2 리스트에 삽입되기 전에 단일 예측 후보로 설정됨).
● 제2 모션 정보 후보는 L1 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다(후보는 제2 리스트에 삽입되기 전에 단일 예측 후보로 설정됨).
단계 2.3: 제1 리스트의 다음 후보로 이동하여 지정된 수의 후보가 제2 리스트에 수집되거나 또는 제1 리스트의 모든 후보가 처리될 때까지 단계 2.1 또는 단계 2.2를 계속한다.
제1 병합 리스트와 제2 병합 리스트가 현재 블록의 인터 예측 프로세스에서 사용될 수 있다.
예를 들어, 현재 블록에 삼각 예측을 적용하면, 삼각 예측을 수행하기 위해 제2 리스트에서 두 개의 후보가 선택되고, 하나의 후보가 제1 삼각형 부분의 예측 프로세스에 사용되며, 다른 후보가 제2 삼각형 부분의 예측에 사용된다.
다른 예에서, 현재 블록의 블록 크기가 임계 값보다 작거나 같거나(예를 들어 임계 값은 16일 수 있음) 또는 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링되는 가장 작은 크기이면, 현재 블록의 인터 예측을 수행하기 위해 제2 리스트에서 하나의 후보가 선택된다. 이 예에서, 현재 블록의 크기가 작기 때문에 현재 블록에 대해 이중 예측이 허용되지 않는다.
다른 예에서, 현재 블록에 병합 모드를 적용하고 현재 블록에 삼각 예측 모드를 적용하지 않으면, 현재 블록에 대한 예측을 수행하기 위해 제1 리스트에서 하나의 후보가 선택되며, 이 예는 ITU-T H.265 또는 VVC에 공개된 관련 프로세스와 동일하다.
일 예에서, 제1 모션 후보 리스트는 병합 리스트이다.
삼각(또는 서브블록) 예측을 위한 후보 리스트는 병합 모드 후보 리스트에서 유도되기 때문에 실행 가능한 구현에서 후보 리스트는 독립 리스트(independent list)가 아닐 수 있다. 제2 후보 리스트의 후보는 병합 모드 후보 리스트의 후보를 가리키는 지시자에 의해 나타낼 수 있다.
실시 예 1은 모션 정보 후보 리스트(제2 리스트)를 구성하는 방법을 개시하고, 제2 리스트는 단일 예측 후보를 포함한다.
블록에 삼각 예측이 적용되지 않으면, 제1 리스트가 블록 예측에 사용된다. 일 예에서, 제1 리스트는 병합 모드를 적용하도록 지시되었지만 삼각 예측 모드를 적용하도록 지시되지 않은 블록을 코딩하는 데 사용된다.
제2 리스트는 제1 리스트를 기반으로 구성된다. 블록에 삼각 예측을 적용하면, 제2 리스트에서 모션 정보(또는 모션 벡터) 후보가 선택된다. 제2 리스트는 단일 예측 후보를 포함하며, 후보는 블록의 제1 삼각형 부분 및 제2 삼각형 부분에 적용될 수 있다. 일 예에서, 삼각 병합 모드가 블록에 적용되면, 2개의 병합 인덱스가 비트스트림으로 코딩된다. 병합 인덱스는 블록의 제1 삼각형 부분 또는 제2 삼각형 부분에 사용되는 후보를 식별한다.
다른 예에서, 현재 블록의 블록 크기가 임계 값보다 작거나 같거나(예를 들어 임계 값은 16일 수 있음) 또는 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링되는 가장 작은 크기이면, 제2 리스트에서 블록을 예측하는 데 사용되는 후보를 식별하기 위해 하나의 병합 인덱스가 비트스트림으로 코딩된다. 현재 블록의 블록 크기가 임계 값보다 크거나(예를 들어, 임계 값이 16일 수 있음) 또는 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링된 가장 작은 크기가 아니면, 병합 인덱스는 블록을 예측하는 데 사용되는 제1 리스트의 후보를 식별하기 위해 비트스트림으로 코딩된다.
도 6은 실시 예 1의 하나의 가능한 구현의 흐름도를 도시한다. 흐름도는 제1 모션 후보 리스트에 기반한 제2 모션 후보 리스트의 구성을 나타낸다. 602에 따르면, 삼각 예측이 블록에 적용되면, 제2 모션 후보 리스트가 블록을 예측하는 데 사용되며; 삼각 예측이 블록에 적용되지 않으면 제1 모션 후보 리스트가 블록을 예측하는데 사용된다. 다른 예에서, 602의 조건은 블록 크기 검사를 포함할 수 있다. 블록 크기 검사 결과에 따라 제1 모션 후보 리스트 또는 제2 모션 후보 리스트가 블록을 예측하는 데 사용될 수 있다.
다른 예에서, 블록이 삼각 예측을 적용하지 않는 것으로 결정되면, 블록이 제1 모션 후보 리스트를 사용하는지를 결정하기 위해 다른 조건이 검사될 수 있다. 일 예에서, 블록이 삼각 예측을 적용하지 않는 것으로 결정되면, 블록이 병합 모드를 적용하는지가 추가로 판정된다. 병합 모드가 적용되면, 제1 모션 후보 리스트가 블록 예측에 사용되며; 병합 모드가 적용되지 않으면 현재 블록을 예측하는 다른 방법(예: 인트라 예측)이 적용될 수 있다.
실시 예 1에 따르면, 제2 모션 후보 리스트는 제1 모션 후보 리스트에 기반하여 구성된다. 제2 리스트는 단일 예측 후보만을 포함할 수 있으므로, 사용할 수 없는 후보(예를 들어, 이중 예측 후보)를 포함하지 않는 이점이 있다. 따라서, 어떤 후보가 사용되는지를 시그널링하는 지시자는 더 적은 수의 비트로 표현될 수 있어 압축 효율이 향상된다.
본 개시의 일 실시 예(실시 예 2)에서, 다음 단계에 따라 병합 리스트를 구성한다.
단계 1: 단일 예측 또는 이중 예측으로 모션 정보 후보를 포함하는 모션 후보 리스트(제1 리스트)를 구성한다.
제1 리스트는 ITU-T H.265 및 VVC의 방법에 따라 구성될 수 있으며, HEVC 및 VVC에서 병합 리스트 구성 프로세스에 대한 위의 예 및 개시를 참조한다.
단계 2: 다음과 같이 제1 리스트의 후보를 사용하여 제2 리스트를 구성한다.
제1 리스트의 제1 후보부터 시작한다.
단계 2.1: 후보가 단일 예측 후보이면, 제2 리스트에 후보(모션 정보 후보)를 추가한다.
또는,
단계 2.2: 후보가 이중 예측 후보이면, 두 개의 단일 예측 후보가 생성되고 두 개의 단일 예측 후보가 다음 순서에 따라 제2 리스트에 추가된다.
● 제1 후보는 L0 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다. 모션 벡터는 mv_L0로 표시되고 참조 화상의 POC 값(리스트 L0의 참조 화상 인덱스에 기반하여 계산됨)은 POC_L0으로 표시된다.
● 제2 후보는 L1 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다. 모션 벡터는 mv_L1로 표시되고, 참조 화상의 POC 값(리스트 L1의 참조 화상 인덱스를 기반으로 계산됨)은 POC_L1로 표시된다. POC_L0이 POC_L1과 같고, mv_L0이 mv_L1과 유사하면, 제2 후보는 제2 리스트에 포함되지 않는다. POC_L0이 POC_L1과 같지 않거나 mv_L0이 mv_L1과 유사하지 않으면, 제2 후보가 제2 리스트에 포함된다.
단계 2.3: 제1 리스트의 다음 후보로 이동하여 지정된 수의 후보가 제2 리스트에 수집되거나 제1 리스트의 모든 후보가 처리될 때까지 단계 2.1 또는 단계 2.2를 계속한다.
제1 병합 리스트와 제2 병합 리스트는 현재 블록의 인터 예측 프로세스에서 사용될 수 있다.
일 예에서, 현재 블록에 삼각 예측(또는 서브블록 예측)이 적용되면, 삼각 예측(또는 서브블록 예측)을 수행하기 위해 제2 리스트에서 두 개의 후보가 선택되고, 하나의 후보가 제1 삼각형 부분의 예측 프로세스에서 사용되며, 다른 후보는 제2 삼각형 부분의 예측에 사용된다.
다른 예에서, 현재 블록의 블록 크기가 임계 값보다 작거나 같거나(예를 들어 임계 값은 16일 수 있음) 또는 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링되는 가장 작은 크기이면, 현재 블록의 인터 예측을 수행하기 위해 제2 리스트에서 하나의 모션 정보 후보가 선택된다. 이 예에서, 현재 블록의 크기가 작기 때문에 현재 블록에 대해 이중 예측이 허용되지 않는다.
다른 예에서 현재 블록에 병합 모드를 적용하고 현재 블록에 삼각 예측 모드를 적용하지 않으면, 현재 블록에 대한 예측을 수행하기 위해 제1 리스트에서 하나의 후보가 선택되며, 이 예는 ITU-T H.265 또는 VVC에서 공개된 관련 프로세스와 동일하다.
일 예에서, POC_L0이 POC_L1과 같고 mv_L0이 mv_L1과 똑같으면, 단계 2.2에서 제2 후보가 제2 리스트에 추가되지 않는다.
또 다른 예에서, L0 부분의 참조 화상 인덱스가 L1 부분의 참조 화상 인덱스와 동일하고 mv_L0이 mv_L1과 똑같으면(또는 다르게는 유사), 단계 2.2에서 제2 후보가 제2 리스트에 추가되지 않는다.
일 예에서, 두 모션 벡터의 유사성은 다음 부등식(inequalities):
-K< (MV1.x - MV2.x) < K 및 -K< (MV1.y - MV2.y) < K
에 따라 결정될 수 있으며, 여기서, MV1.x는 제1 모션 벡터의 x 구성 요소(MV2.x의 평균은 MV1.x와 유사함)를 표시하고, MV1.y(MV2.y의 평균은 MV1.y와 유사함)는 y 구성 요소를 표시하며, K는 양수이다. 이 예에서 두 부등식이 모두 유지되면 모션 벡터 MV1은 모션 벡터 MV2와 유사한 것으로 간주된다.
다른 예에서, 유사성은 다음 등식(equalities):
(MV1.x >> N) - (MV2.x >>N) == K 및 (MV1.x >> N) - (MV2.x >>N) == K.
에 기반하여 결정될 수 있다.
여기서 x >> y 는 x를 y 이진수로 나타내는 2의 보수 정수 표현의 산술 오른쪽 시프트(Arithmetic right shift)를 의미한다. 이 함수는 y의 음이 아닌 정수 값에 대해서만 정의된다. 오른쪽 시프트의 결과로 MSB(most significant bit)로 시프트된 비트는 시프트 연산 이전의 x의 MSB와 같은 값을 갖는다. "=="는 연산자의 각 측(side)이 똑같을 때 참인, 유리 연산(rational operation)이다. 이 예에서, 두 e등식이 모두 유지되면 모션 벡터 MV1은 모션 벡터 MV2와 유사한 것으로 간주된다.
일 예에서, 제1 모션 후보 리스트는 병합 리스트이다.
삼각(또는 서브블록) 예측을 위한 후보 리스트는 병합 모드 후보 리스트에서 유도되기 때문에, 실행 가능한 구현에서 후보 리스트는 독립 리스트가 아닐 수 있다. 제2 후보 리스트의 후보는 병합 모드 후보 리스트의 후보를 가리키는 지시자로 나타낼 수 있다.
실시 예 2의 하나의 가능한 구현에 대한 흐름도가 도 8에 도시되어있다. 실시 예 1과의 차이점은 단계(811)에 있다. 단계(811)에서, 이중 예측된 후보의 L1 부분을 L0 부분과 비교(L0 부분의 모션 벡터를 L1 부분의 모션 벡터와 비교하고, L0 부분의 참조 화상의 POC를 L1 부분의 참조 화상의 POC와 비교함)한다. 유사성 측정에 따라 L0 부분이 L1 부분과 유사하면, L1 부분을 기반으로 생성된 단일 예측 후보는 제2 모션 후보 리스트에 삽입되지 않는다.
단계 2.2에서, 제2 후보(제1 모션 후보 리스트의 이중 예측 후보 중 L1 부분을 기반으로 생성된 단일 예측 후보)는 충분히 제1 후보(제1 모션 후보 리스트의 이중 예측 후보의 L0 부분을 기반으로 생성되는 단일 예측 후보)와 상이한 경우에만 제2 모션 후보 리스트에 추가된다.
L1 부분이 L0 부분과 유사한(또는 똑같은) 경우 제2 리스트에 삽입되지 않기 때문에 압축 효율이 향상된다.
도 8에서, 단계 2.2는 807, 811 및 808에 의해 예시된다. 먼저 807에 따르면, 이중 예측 모션 후보의 L1 부분이 제2 리스트에 삽입된다. 그런 다음 제2 리스트의 마지막 엔트리(인덱스 값 last_entry로 지시됨)이 811에 따라 제2 리스트의 이전 엔트리(인덱스 값 last_entry-1로 지시됨)와 비교된다. 마지막 엔트리의 POC 값이 이전 엔트리의 POC 값과 동일하고 마지막 엔트리의 모션 벡터가 이전 엔트리의 모션 벡터와 똑같으면, 808에 따라 마지막 엔트리가 제2 리스트에서 제거된다. 807, 811 및 808의 조합은 본 개시 실시 예의 단계 2.2에 대응함을 유의한다.
본 개시의 일 실시 예(실시 예 3)에서, 다음 단계에 따라 병합 리스트를 구성한다.
단계 1: 단일 예측 또는 이중 예측으로 모션 정보 후보를 포함하는 모션 후보 리스트(제1 리스트)를 구성한다.
제1 리스트는 ITU-T H.265 및 VVC의 방법에 따라 구성될 수 있으며, HEVC 및 VVC에서 병합 리스트 구성 프로세스에 대한 위의 예 및 개시를 참조한다.
단계 2: 제1 리스트가 다음과 같이 업데이트된다.
제1 리스트의 모든 엔트리에 대해:
● 후보가 이중 예측 후보인지 확인한다. 후보가 이중 예측 후보이면, L0 부분에 속하는 모션 벡터는 mv_L0으로 표시되고, 참조 인덱스는 ref_idx_L0으로 표시되며, 참조 화상의 POC 값(리스트 L0의 참조 화상 인덱스를 기반으로 계산됨)은 POC_L0으로 표시된다. L1 부분에 속하는 모션 벡터는 mv_L1으로 표시되고, 참조 인덱스는 ref_idx_L1으로 표시되며, 참조 화상의 POC 값(리스트 L1의 참조 화상 인덱스를 기반으로 계산됨)은 POC_L1로 표시된다.
● POC_L0이 POC_L1과 같고 mv_L0이 mv_L1과 유사하면(또는 실시 예의 다른 예에서와 똑같으면), 후보는 모션 벡터가 MV_L0으로 설정되고, 참조 화상 리스트가 L0으로 설정되며, 참조 인덱스가 ref_idx_L0으로 설정된 단일 예측 후보로 업데이트된다.
단계 3: 다음과 같이 제1 리스트의 후보를 사용하여 제2 리스트를 구성한다.
단계 3.1: 업데이트된 제1 리스트의 제1 후보부터 시작한다.
단계 3.2: 후보가 단일 예측 후보이면 제2 리스트에 후보(모션 정보 후보)를 추가한다.
또는,
단계 3.3: 후보가 이중 예측 후보이면, 두 개의 단일 예측 후보가 생성되고 두 개의 단일 예측 후보가 다음 순서에 따라 제2 리스트에 추가된다.
● 제1 후보는 L0 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다.
● 제2 후보는 L1 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다.
단계 3.4: 제1 리스트의 다음 후보로 이동하여 지정된 수의 후보가 제2 리스트에 수집되거나 제1 리스트의 모든 후보가 처리될 때까지 단계 3.2 또는 단계 3.3을 계속한다.
일 예에서, 현재 블록에 삼각 예측을 적용하면, 삼각 예측을 수행하기 위해 제2 리스트에서 두 개의 후보가 선택되고, 하나의 후보는 제1 삼각형 부분의 예측 프로세스에 사용되고 다른 후보는 제2 삼각형 부분의 예측에 사용된다.
다른 예에서, 현재 블록의 블록 크기가 임계 값보다 작거나 같거나(예를 들어 임계 값은 16일 수 있음), 또는 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링되는 가장 작은 크기이면, 현재 블록의 인터 예측을 수행하기 위해 제2 리스트에서 하나의 모션 정보 후보가 선택된다. 이 예에서, 현재 블록의 크기가 작기 때문에 현재 블록에 대해 이중 예측이 허용되지 않는다.
다른 예에서, 현재 블록에 병합 모드가 적용되고 현재 블록에 삼각 예측 모드가 적용되지 않으면(또는 현재 블록의 블록 크기가 임계 값보다 큰 경우(예를 들어, 임계 값이 16일 수 있음) 또는 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링된 가장 작은 크기가 아닌 경우), 현재 블록의 예측을 수행하기 위해 제1 리스트의 후보가 선택된다.
본 개시의 일 실시 예(실시 예 4)에서, 다음 단계에 따라 병합 리스트를 구성한다.
단계 1: 단일 예측 또는 이중 예측으로 모션 정보 후보를 포함하는 모션 후보 리스트(제1 리스트)를 구성한다.
제1 리스트는 ITU-T H.265 및 VVC의 방법에 따라 구성될 수 있으며, HEVC 및 VVC에서 병합 리스트 구성 프로세스에 대한 위의 예 및 개시를 참조한다.
단계 2: 다음과 같이 제1 리스트의 후보를 사용하여 제2 리스트를 구성한다.
단계 2.1: 제1 리스트의 제1 모션 정보 후보부터 시작한다.
단계 2.2: 후보가 단일 예측 후보이면 제2 리스트에 후보(모션 정보 후보)를 추가한다.
단계 2.3: 제1 리스트의 다음 후보로 이동하고, 지정된 수의 후보가 제2 리스트에 수집되거나 제1 리스트의 모든 후보가 처리될 때까지 단계 2.2를 계속한다.
단계 2.4: 제1 리스트의 제1 후보부터 시작한다.
단계 2.5: 후보가 이중 예측 후보이면, 두 개의 단일 예측 후보가 생성되고 다음 순서에 따라 제2 리스트에 추가된다.
● 제1 모션 정보 후보는 L0 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다. 제1 후보를 제2 리스트에 추가한다.
● 제2 모션 정보 후보는 L1 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다. 제2 리스트가 가득 차지 않으면 제2 후보를 제2 리스트에 추가한다.
단계 2.6: 제1 리스트의 다음 후보로 이동하고, 지정된 수의 후보가 제2 리스트에 수집되거나 제1 리스트의 모든 후보가 처리될 때까지 단계 2.5를 계속한다.
제1 병합 리스트와 제2 병합 리스트는 현재 블록의 인터 예측 프로세스에서 사용될 수 있다.
삼각(또는 서브블록) 예측을 위한 후보 리스트는 병합 모드 후보 리스트에서 유도되기 때문에, 실행 가능한 구현에서 후보 리스트는 독립 리스트가 아닐 수 있다. 제2 후보 리스트의 후보는 병합 모드 후보 리스트의 후보를 가리키는 지시자로 나타낼 수 있다.
일 예에서, 현재 블록에 삼각 예측을 적용하면, 삼각 예측을 수행하기 위해 제2 리스트에서 두 개의 후보가 선택되며, 하나의 후보는 제1 삼각형 부분의 예측 프로세스에 사용되고 다른 후보는 제2 삼각형 부분의 예측에 사용된다.
다른 예에서, 현재 블록의 블록 크기가 임계 값보다 작거나 같거나(예를 들어 임계 값은 16일 수 있음) 또는 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링되는 가장 작은 크기이면, 현재 블록의 인터 예측을 수행하기 위해 제2 리스트에서 하나의 후보가 선택된다. 이 예에서, 현재 블록의 크기가 작기 때문에 현재 블록에 대해 이중 예측이 허용되지 않는다.
다른 예에서, 현재 블록에 병합 모드를 적용하고 현재 블록에 삼각 예측 모드를 적용하지 않으면, 현재 블록에 대한 예측을 수행하기 위해 제1 리스트에서 하나의 후보가 선택되며, 이 예는 ITU-T H.265 또는 VVC에 공개된 관련 프로세스와 동일하다.
본 개시의 일 실시 예(실시 예 5)에서, 제2 리스트(모션 후보 리스트)의 크기는 제1 리스트의 크기보다 작거나 같다.
예를 들어, M이 N보다 작거나 같다고 결정되면 제2 리스트의 크기는 M과 같게 설정되고, 여기서 N은 제1 리스트의 크기(모션 후보 수)이다. 그렇지 않으면(M이 N보다 큰 것으로 결정되면) 제2 리스트의 크기는 N과 같게 설정된다.
다른 예에서, N은 비트스트림으로 코딩된 지시자에서 유도될 수 있으며, M은 미리 정의된 숫자일 수 있다. M과 N은 양의 정수일 수 있으며, 예를 들어, M은 5와 같고 N은 6과 같을 수 있다.
이 실시 예의 예는 다음과 같다: 값 M(제2 리스트의 최대 크기를 설명함)은 5일 수 있으며, 이는 미리 결정될 수 있다. 그리고 N(제1 리스트의 크기) 값은 SPS(sequence parameter set)에서 시그널링될 수 있다. N의 값이 6으로 시그널링되면 제1 리스트의 크기가 제2 리스트의 크기보다 크기 때문에 제2 리스트의 크기는 5로 설정된다. 또 다른 시나리오에서, N이 SPS에서 3으로 시그널링되면 제2 리스트의 크기도 3으로 설정된다.
또 다른 예에서, N은 비트스트림에서 코딩된 지시자로부터 유도될 수 있고 M은 비트스트림에서 또한 코딩되는 지시자로부터 유도될 수 있다. 이 예에서, M 값을 유도하는 데 사용되는 지시자는 N보다 큰 M 값을 지시할 수 없다.
또 다른 예에서, ITU-T H.265에서, 병합 리스트(제1 리스트)의 크기는 N이고, N은 비트스트림으로 코딩된 신택스 엘리먼트를 기반으로 수정될 수 있다. N의 값은 양의 정수일 수 있으며(예를 들어, 양의 정수 값은 2에서 5 사이임), 양의 정수 값은 SPS에서 시그널링된다. 병합 리스트의 크기는 전체 비디오 시퀀스에 대해 고정된다.
실시 예 5에 따르면, 제2 리스트의 크기는 제1 리스트의 크기보다 작거나 같다. 일부 예에서, 에러 견고성(error robustness)을 위해 제2 리스트의 크기도 고정된다. 전술한 실시 예 1 내지 실시 예 4에 따르면, 제2 리스트는 제1 리스트를 기반으로 구성된다. 제2 리스트의 크기는 제1 리스트의 크기보다 작거나 같다. 제1 리스트의 모든 후보가 단일 예측 후보이면, 이 경우 제2 리스트에 삽입할 수 있는 최대 모션 후보 수는 제1 리스트의 후보 수와 같다. 따라서, 제2 리스트의 크기를 제1 리스트보다 작거나 같게 설정하면 제2 리스트는 항상 완전히 채워진다.
다른 실시 예(실시 예 6)에 따르면, 제2 리스트의 크기는 현재 블록의 크기를 기반으로 결정된다. 현재 블록의 크기가 임계 값보다 작으면 제2 리스트의 크기가 K와 같게 설정되고, 현재 블록의 크기가 임계 값보다 크거나 같으면 제2 리스트의 크기가 L과 같게 설정된다. 블록의 크기는 너비와 높이에 따라 결정될 수 있다(예: 너비에 높이를 곱한 값). K와 L은 K<L인 양의 정수이다.
예를 들어, 블록 높이에 너비를 곱한 값이 128보다 크거나 같으면 제2 리스트의 크기가 5로 설정될 수 있다. 너비에 블록 높이를 곱한 값이 128보다 작으면 제2 리스트의 크기는 3으로 설정될 수 있다.
또 다른 예에서, 블록의 너비가 8보다 작거나 같거나 또는 블록의 높이가 8보다 작거나 같으면 제2 리스트의 크기는 3으로 설정된다. 블록의 너비와 높이가 모두 8보다 크면 제2 리스트의 크기는 5로 설정된다.
본 개시의 일 실시 예(실시 예 7)에서, 다음 단계에 따라 병합 리스트를 구성한다.
단계 1: 단일 예측 또는 이중 예측으로 모션 정보 후보를 포함하는 모션 후보 리스트(제1 리스트)를 구성한다.
제1 리스트는 ITU-T H.265 및 VVC의 방법에 따라 구성될 수 있으며, H.265 및 VVC의 병합 리스트 구성 프로세스에 대한 위의 예 및 개시를 참조한다.
단계 2: 다음과 같이 제1 리스트의 후보를 사용하여 제2 리스트를 구성한다.
단계 2.1: 제1 리스트의 제1 후보부터 시작한다.
단계 2.2: 모션 정보 후보가 단일 예측 후보이면 제2 리스트에 후보(모션 정보 후보)를 추가한다.
또는,
단계 2.3: 모션 정보 후보가 이중 예측 후보이면, 이중 예측 후보를 기반으로 하나의 단일 예측 후보가 생성되고 다음과 같이 제2 리스트에 추가된다.
● 생성된 단일 예측 모션 정보 후보는 L0 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다(후보는 제2 리스트에 삽입되기 전에 단일 예측 후보로 설정된다).
단계 2.4: 제1 리스트의 다음 후보로 이동하고, 지정된 수의 후보가 제2 리스트에 수집되거나 제1 리스트의 모든 후보가 처리될 때까지 단계 2.2 또는 단계 2.3을 계속한다.
제1 병합 리스트와 제2 병합 리스트는 현재 블록의 인터 예측 프로세스에서 사용될 수 있다.
일 예에서, 현재 블록에 삼각 예측을 적용하면 삼각 예측을 수행하기 위해 제2 리스트에서 두 개의 후보가 선택되며, 하나의 후보는 제1 삼각형 부분의 예측 프로세스에 사용되며, 다른 후보는 제2 삼각형 부분의 예측에 사용된다.
다른 예에서, 현재 블록의 블록 크기가 임계 값보다 작거나 같거나(예를 들어 임계 값은 16일 수 있음) 또는, 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링되는 가장 작은 크기이면, 현재 블록의 인터 예측을 수행하기 위해 제2 리스트에서 하나의 후보가 선택된다. 이 예에서, 현재 블록의 크기가 작기 때문에 현재 블록에 대해 이중 예측이 허용되지 않는다.
다른 예에서, 현재 블록에 병합 모드를 적용하고 현재 블록에 삼각 예측 모드를 적용하지 않으면, 현재 블록에 대한 예측을 수행하기 위해 제1 리스트에서 하나의 후보가 선택되며, 이 예는 ITU-T H.265 또는 VVC에 공개된 관련 프로세스와 동일하다.
일 예에서, 제1 모션 후보 리스트는 병합 리스트이다.
삼각(또는 서브블록) 예측을 위한 후보 리스트는 병합 모드 후보 리스트에서 유도되기 때문에, 실행 가능한 구현에서 후보 리스트는 독립 리스트가 아닐 수 있다. 제2 후보 리스트의 후보는 병합 모드 후보 리스트의 후보를 가리키는 지시자로 나타낼 수 있다.
실시 예 7은 모션 정보 후보 리스트(제2 리스트)를 구성하는 방법을 개시하고, 제2 리스트는 단일 예측 후보를 포함한다.
블록에 삼각 예측이 적용되지 않으면 제1 리스트는 블록 예측에 사용된다. 일 예에서, 제1 리스트는 병합 모드를 적용하도록 지시되었지만 삼각 예측 모드를 적용하도록 지시되지 않은 블록을 코딩하는 데 사용된다.
제2 리스트는 제1 리스트를 기반으로 구성된다. 블록에 삼각 예측을 적용하면 제2 리스트에서 모션 정보(또는 모션 벡터) 후보를 선택한다. 제2 리스트는 단일 예측 후보를 포함하며, 후보는 블록의 제1 삼각형 부분 및 제2 삼각형 부분에 적용될 수 있다. 일 예에서, 삼각 병합 모드가 블록에 적용되면, 2개의 병합 인덱스가 비트스트림으로 코딩된다. 병합 인덱스는 블록의 제1 삼각형 부분 또는 제2 삼각형 부분에 사용되는 제2 리스트의 후보를 식별한다.
다른 예에서, 현재 블록의 블록 크기가 임계 값보다 작거나 같거나(예를 들어 임계 값은 16일 수 있음) 또는, 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링되는 가장 작은 크기이면, 제2 리스트에서 블록을 예측하는 데 사용되는 후보를 식별하기 위해 하나의 병합 인덱스가 비트스트림으로 코딩된다. 현재 블록의 블록 크기가 임계 값보다 크거나(예: 임계 값이 16일 수 있음) 또는, 현재 블록의 블록 크기가 파라미터 세트에서 미리 정의되거나 시그널링된 가장 작은 크기가 아니면, 병합 인덱스는 제1 리스트의 어떤 후보가 블록을 예측하는 데 사용되는지를 식별하기 위해 비트스트림으로 코딩된다.
실시 예 7에 따르면, 제1 리스트의 모션 후보가 이중 예측 후보이면, 이중 예측 후보가 단일 예측 후보로 변환된 후 후보가 제2 리스트에 추가된다. 이중 예측 모션 후보는 2개의 모션 벡터와 2개의 참조 화상 인덱스를 포함하는데, 한 쌍은 참조 화상 리스트 L0에 대응하고 다른 쌍은 참조 화상 리스트 L1에 대응한다. 변환된 단일 예측 후보는 참조 화상 리스트 L0에 대응하는 참조 화상 인덱스와 모션 벡터를 포함한다. 실시 예 7에서, 블록이 삼각 예측을 적용하는 것으로 결정되면, 참조 화상 리스트 L1에 대응하는 모션 데이터가 제2 단일 예측 후보를 생성하는 데 사용되지 않는다.
도 10은 실시 예 7의 흐름도를 도시한다.
본 개시의 일 실시 예(실시 예 8)에서, 다음 단계에 따라 병합 리스트를 구성한다.
단계 1: 단일 예측 또는 이중 예측으로 모션 정보 후보를 포함하는 모션 후보 리스트(제1 리스트)를 구성한다.
제1 리스트는 ITU-T H.265 및 VVC의 방법에 따라 구성될 수 있으며, H.265 및 VVC의 병합 리스트 구성 프로세스에 대한 위의 예 및 개시를 참조한다.
단계 2: 다음과 같이 제1 리스트의 후보를 사용하여 제2 리스트와 제3 리스트를 구성한다.
단계 2.1: 제1 리스트의 제1 후보부터 시작한다.
단계 2.2: 후보가 단일 예측 후보이면, 제2 리스트와 제3 리스트에 후보(모션 정보 후보)를 추가한다.
또는,
단계 2.3: 후보가 이중 예측 후보이면, 두 개의 단일 예측 후보가 생성되고, 하나의 단일 예측 후보가 제2 리스트에 추가되며, 하나의 단일 예측 후보가 다음 순서에 따라 제3 리스트에 추가된다.
● 제1 모션 정보 후보는 L0 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다(후보가 제2 리스트에 삽입되기 전에 단일 예측 후보로 설정됨).
● 제2 모션 정보 후보는 L1 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다(후보가 제3 리스트에 삽입되기 전에 단일 예측 후보로 설정됨).
단계 2.4: 제1 리스트의 다음 후보로 이동하며, 지정된 수의 후보가 제2 리스트와 제3 리스트에 수집될 때까지 또는 제1 리스트의 모든 후보가 처리될 때까지 단계 2.2 또는 단계 2.3을 계속한다.
제1 병합 리스트, 제2 병합 리스트 및 제3 병합 리스트는 현재 블록의 인터 예측 프로세스에서 사용될 수 있다.
일 예에서, 현재 블록에 삼각 예측을 적용하면 삼각 예측을 수행하기 위해 제2 리스트에서 하나의 후보와 제3 리스트에서 하나의 후보가 선택되며, 하나의 후보는 제1 삼각형 부분의 예측 프로세스에 사용되고, 다른 후보는 제2 삼각형 부분의 예측에 사용된다.
다른 예에서, 현재 블록의 블록 크기가 임계 값보다 작거나 같거나(예를 들어 임계 값은 16일 수 있음) 또는, 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링되는 가장 작은 크기이면, 현재 블록의 인터 예측을 수행하기 위해 제2 리스트에서 하나의 후보가 선택된다. 이 예에서, 현재 블록의 크기가 작기 때문에 현재 블록에 대해 이중 예측이 허용되지 않는다.
다른 예에서, 현재 블록에 병합 모드를 적용하고 현재 블록에 삼각 예측 모드를 적용하지 않으면, 현재 블록에 대한 예측을 수행하기 위해 제1 리스트에서 하나의 후보가 선택되며, 이 예는 ITU-T H.265 또는 VVC에 공개된 관련 프로세스와 동일하다.
일 예에서, 제1 모션 후보 리스트는 병합 리스트이다.
삼각(또는 서브블록) 예측을 위한 후보 리스트는 병합 모드 후보 리스트에서 유도되기 때문에, 실행 가능한 구현에서 후보 리스트는 독립 리스트가 아닐 수 있다. 제2 후보 리스트의 후보는 병합 모드 후보 리스트의 후보를 가리키는 지시자로 나타낼 수 있다.
실시 예 8은 2개의 모션 정보 후보 리스트(제2 리스트 및 제3 리스트)를 구성하는 방법을 개시하고, 제2 리스트 및 제3 리스트는 단일 예측 후보를 포함한다.
블록에 삼각 예측이 적용되지 않으면 제1 리스트는 블록 예측에 사용된다. 일 예에서, 제1 리스트는 병합 모드를 적용하도록 지시되었지만 삼각 예측 모드를 적용하도록 지시되지 않은 블록을 코딩하는 데 사용된다.
제2 리스트와 제3 리스트는 제1 리스트를 기반으로 구성된다. 블록에 삼각 예측을 적용하면 제2 리스트와 제3 리스트에서 모션 정보(또는 모션 벡터) 후보를 선택한다. 제2 리스트와 제3 리스트는 단일 예측 후보를 포함하며, 후보는 블록의 제1 삼각형 부분 및 제2 삼각형 부분에 적용될 수 있다. 일 예에서, 삼각 병합 모드가 블록에 적용되면 2개의 병합 인덱스가 비트스트림으로 코딩된다. 제1 병합 인덱스는 블록의 제1 삼각형 부분에 사용되는 제2 리스트의 후보와 블록의 제2 삼각형 부분에 사용되는 제3 리스트의 후보를 식별한다.
다른 예에서, 현재 블록의 블록 크기가 임계 값보다 작거나 같거나(예를 들어 임계 값은 16일 수 있음) 또는, 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링되는 가장 작은 크기이면, 제2 리스트에서 블록을 예측하는 데 사용되는 후보를 식별하기 위해 하나의 병합 인덱스가 비트스트림으로 코딩된다. 현재 블록의 블록 크기가 임계 값보다 크거나(예: 임계 값이 16일 수 있음) 또는 현재 블록의 블록 크기가 파라미터 세트에서 미리 정의되거나 시그널링된 가장 작은 크기가 아니면, 병합 인덱스는 제1 리스트에서 블록을 예측하는 데 사용되는 후보를 식별하기 위해 비트스트림으로 코딩된다.
다른 예에서, 블록이 삼각 예측을 적용하지 않는 것으로 결정되면, 블록이 제1 모션 후보 리스트를 사용하는지를 결정하기 위해 다른 조건을 확인할 수 있다. 일 예에서, 블록이 삼각 예측을 적용하지 않는 것으로 결정되면, 블록이 병합 모드를 적용하는지가 추가로 판정된다. 병합 모드가 적용되면, 제1 모션 후보 리스트가 블록 예측에 사용되고, 병합 모드가 적용되지 않으면 현재 블록을 예측하는 다른 방법(예: 인트라 예측)이 적용될 수 있다.
실시 예 8에 따르면, 제2 모션 리스트 및 제3 모션 후보 리스트는 제1 모션 후보 리스트에 기반하여 구성된다. 제2 리스트 및 제3 리스트는 단일 예측 후보만 포함할 수 있으므로, 사용할 수 없는 후보(예를 들어, 이중 예측 후보)를 포함하지 않는 이점이 있다. 따라서, 어떤 후보가 사용되는지를 시그널링하는 지시자는 더 적은 수의 비트로 표현될 수 있어 압축 효율이 향상된다.
본 개시의 일 실시 예(실시 예 9)에서, 다음 단계에 따라 병합 리스트를 구성한다.
단계 1: 단일 예측 또는 이중 예측으로 모션 정보 후보를 포함하는 모션 후보 리스트(제1 리스트)를 구성한다.
제1 리스트는 ITU-T H.265 및 VVC의 방법에 따라 구성될 수 있으며, H.265 및 VVC의 병합 리스트 구성 프로세스에 대한 위의 예 및 개시를 참조한다.
단계 1: 양의 정수 값 N으로 카운터를 초기화한다(카운터 값은 N과 같게 설정됨).
단계 2: 다음과 같이 제1 리스트의 후보를 사용하여 제2 리스트를 구성한다.
단계 2.1: 제1 리스트의 제1 후보부터 시작한다.
단계 2.2: 후보가 단일 예측 후보이면 제2 리스트에 후보(모션 정보 후보)를 추가한다.
또는,
단계 2.3: 후보가 이중 예측 후보이면, 두 개의 단일 예측 후보가 상기 하나의 이중 예측 후보에 따라 생성되고, 두 개의 단일 예측 후보가 다음 순서에 따라 제2 리스트에 추가된다.
● 제1 후보는 L0 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다. 모션 벡터는 mv_L0으로 표시되고, 참조 화상의 POC 값(리스트 L0의 참조 화상 인덱스를 기반으로 계산됨)은 POC_L0으로 표시된다.
● 제2 후보는 L1 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다. 모션 벡터는 mv_L1로 표시되고, 참조 화상의 POC 값(리스트 L1의 참조 화상 인덱스를 기반으로 계산됨)은 POC_L1으로 표시된다.
○ 아래의 모든 조건이 충족되면 제2 후보가 제2 리스트에 삽입된다.
■ 카운터 값이 0보다 큰 경우
■ POC_L0이 POC_L1과 같지 않거나 mv_L0이 mv_L1과 유사하지 않은 경우
○ 카운터 값이 0과 같으면, 제2 후보가 제2 리스트에 삽입된다.
● 카운터 값이 0보다 크면 카운터 값이 1씩 감소된다.
단계 2.4: 제1 리스트의 다음 후보로 이동하며, 지정된 수(숫자)의 후보가 제2 리스트에 수집되거나 제1 리스트의 모든 후보가 처리될 때까지 단계 2.2 또는 단계 2.3을 계속한다.
지정된 수의 후보는 미리 정의된 값 또는 비트스트림에 지시된 값일 수 있다. 특정 구현에서 지정된 숫자는 5이다. 이 경우, 제2 리스트에 5개의 후보가 채워질 때까지 제2 리스트에 후보가 추가된다.
하나의 가능한 구현에서, N의 값은 1과 같은 미리 정의된 숫자일 수 있다.
실시 예 9에 따르면, 모션 벡터 비교 작동(위 섹션에서 "POC_L0이 POC_L1과 같지 않거나 mv_L0이 mv_L1과 유사하지 않은 경우" 조건부 검사에 의해 주어진)의 수는 최대 값 N으로 제한된다. 하드웨어 구현에는 특정 타이밍 제약이 있기 때문에 모션 벡터 비교 작동의 수를 줄이고 제한하면 하드웨어 구현의 처리 처리량이 향상된다.
실시 예 9에 따르면, 모션 벡터 비교 작동은 제1 리스트에서 처음 N개의 이중 예측 후보에 대해 요구된다. N이 1인 경우, 생성된 두 개의 단일 예측 후보가 제2 리스트에 삽입되기 전에 제1 리스트의 제1 이중 예측 후보가 모션 벡터 비교 작동을 필요로 한다. 단계 2.3에 따라 제1 리스트의 제1 이중 예측 후보가 처리된 후 나머지 병합 이중 예측 후보는 모션 벡터 비교 작동을 필요로 하지 않는다.
다르게는, 다음 단계에 따라 제2 병합 리스트를 구성할 수 있다.
단계 1: 단일 예측 또는 이중 예측으로 모션 정보 후보를 포함하는 모션 후보 리스트(제1 리스트)를 구성한다.
제1 리스트는 ITU-T H.265 및 VVC의 방법에 따라 구성될 수 있으며, H.265 및 VVC의 병합 리스트 구성 프로세스에 대한 위의 예 및 개시를 참조한다.
단계 1.1: 양의 정수 값 N으로 카운터를 초기화한다(카운터 값은 N과 같게 설정됨).
단계 2: 다음과 같이 제1 리스트의 후보를 사용하여 제2 리스트를 구성한다.
단계 2.1: 제1 리스트의 제1 후보부터 시작한다.
단계 2.2: 후보가 단일 예측 후보이면 제2 리스트에 후보(모션 정보 후보)를 추가한다.
또는,
단계 2.3: 후보가 이중 예측 후보이면, 두 개의 단일 예측 후보가 상기 하나의 이중 예측 후보에 따라 생성되고, 두 개의 단일 예측 후보가 다음 순서에 따라 제2 리스트에 추가된다.
● 제1 후보는 L0 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다. 모션 벡터는 mv_L0으로 표시되고, 참조 화상의 POC 값(리스트 L0의 참조 화상 인덱스를 기반으로 계산됨)은 POC_L0으로 표시된다.
● 제2 후보는 L1 참조 화상 리스트에 대응하는 모션 벡터 및 참조 화상 인덱스를 포함한다. 모션 벡터는 mv_L1로 표시되고, 참조 화상의 POC 값(리스트 L1의 참조 화상 인덱스를 기반으로 계산됨)은 POC_L1으로 표시된다.
○ 아래의 모든 조건이 충족되면 제2 후보가 제2 리스트에 삽입된다.
■ 카운터 값이 0보다 큰 경우
■ POC_L0이 POC_L1과 같지 않거나 mv_L0이 mv_L1과 유사하지 않은 경우
○ 카운터 값이 0이면 제2 후보가 제2 리스트에 삽입된다.
단계 2.4: 카운터 값이 0보다 크면 카운터 값이 1씩 감소된다.
단계 2.5: 제1 리스트의 다음 후보로 이동하고, 지정된 수의 후보가 제2 리스트에 수집되거나 제1 리스트의 모든 후보가 처리될 때까지 단계 2.2 또는 단계 2.3을 계속한다.
지정된 후보 수는 미리 정의된 값이거나 비트스트림에 지시된 값일 수 있다. 특정 구현에서, 지정된 숫자는 5이다. 이 경우, 제2 리스트에 5개의 후보가 채워질 때까지 제2 리스트에 후보가 추가된다.
하나의 특정 구현에서, N의 값은 1과 같은 미리 정의된 숫자일 수 있다.
실시 예 9의 대안에 따르면, 모션 벡터 비교 작동의 수(위 섹션에서 "POC_L0이 POC_L1과 같지 않거나 mv_L0이 mv_L1과 유사하지 않은 경우" 조건부 검사로 설명됨)는 최대 값 N으로 제한된다. 하드웨어 구현에는 특정 타이밍 제약이 있기 때문에 모션 벡터 비교 작동의 수를 줄이고 제한하면 하드웨어 구현의 처리 처리량이 향상된다.
실시 예 9의 대안에 따르면, 모션 벡터 비교 작동은 제1 리스트에서 처음 N개의 후보에 대해 요구된다. N이 1인 경우, 제1 리스트의 제1 이중 후보가 이중 예측 후보이면 모션 벡터 비교 작동이 필요하다. 2.3의 단계에 따라 제1 리스트의 제1 후보가 처리된 후 나머지 병합 이중 예측 후보는 모션 벡터 비교 작동을 필요로 하지 않는다.
제1 예에서, (두 개의 단일 예측 후보를 생성하고 제2 리스트에 삽입하는 것에 의해) 제1 리스트의 제1 이중 예측 후보가 처리된 후 카운터가 1씩 감소된다. 제2 예에서 카운터는 제1 리스트의 제1 후보가 처리된 후 해당 후보가 단일 예측 또는 이중 예측 후보인지 여부에 관계없이 1씩 감소된다.
제1 병합 리스트와 제2 병합 리스트는 현재 블록의 인터 예측 프로세스에서 사용될 수 있다. 삼각(또는 서브블록) 예측을 위한 후보 리스트는 병합 모드 후보 리스트로부터 유도되기 때문에, 실행 가능한 구현에서 후보 리스트는 독립 리스트가 아닐 수 있다. 제2 후보 리스트의 후보는 병합 모드 후보 리스트의 후보를 가리키는 지시자로 나타낼 수 있다.
일 예에서, 현재 블록에 삼각 예측을 적용하면 삼각 예측을 수행하기 위해 제2 리스트에서 두 개의 후보가 선택되며, 하나의 후보는 제1 삼각형 부분의 예측 프로세스에 사용되고, 다른 후보는 제2 삼각형 부분의 예측에 사용된다.
다른 예에서, 현재 블록의 블록 크기가 임계 값보다 작거나 같거나(예를 들어 임계 값은 16일 수 있음) 또는, 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링되는 가장 작은 크기이면, 현재 블록의 인터 예측을 수행하기 위해 제2 리스트에서 하나의 모션 정보 후보가 선택된다. 이 예에서, 현재 블록의 크기가 작기 때문에 현재 블록에 대해 이중 예측이 허용되지 않는다.
다른 예에서, 현재 블록에 병합 모드를 적용하고 현재 블록에 삼각 예측 모드를 적용하지 않으면, 현재 블록에 대한 예측을 수행하기 위해 제1 리스트에서 하나의 후보가 선택되며, 이 예는 ITU-T H.265 또는 VVC에 공개된 관련 프로세스와 동일하다.
일 예에서, 단계 2.3에서 제2 후보는 POC_L0이 POC_L1과 같고 mv_L0이 mv_L1과 똑같으면 제2 리스트에 추가되지 않는다.
다른 예에서, L0 부분의 참조 화상 인덱스가 L1 부분의 참조 화상 인덱스와 동일하고 mv_L0이 mv_L1과 똑같으면(또는 다르게는 유사하면), 단계 2.3에서 제2 후보는 제2 리스트에 추가되지 않는다.
일 예에서, 두 모션 벡터의 유사성은 다음 부등식:
-K< (MV1.x - MV2.x) < K 및 -K< (MV1.y - MV2.y) < K
에 따라 결정될 수 있으며, 여기서 MV1.x는 제1 모션 벡터의 x 구성 요소(MV2.x의 평균은 MV1.x와 유사함)를 표시하고, MV1.y(MV2.y의 평균은 MV1.y와 유사함)는 y 구성 요소를 표시하며, K는 양수이다. 이 예에서, 두 부등식이 모두 유지되면 모션 벡터 MV1은 모션 벡터 MV2와 유사한 것으로 간주된다.
다른 예에서, 유사성은 다음 등식:
(MV1.x >> N) - (MV2.x >>N) == K 및 (MV1.x >> N) - (MV2.x >>N) == K
에 기반하여 결정될 수 있다:
여기서, x >> y는 x를 y 이진수로 나타내는 2의 보수 정수 표현의 산술 오른쪽 시프트를 의미한다. 이 함수는 y의 음이 아닌 정수 값에 대해서만 정의된다. 오른쪽 시프트의 결과로 MSB(most significant bit)로 시프트된 비트는 시프트 연산 이전의 x의 MSB와 같은 값을 갖는다. "=="는 연산자의 각 측이 동일할 때 참인 유리 연산이다. 이 예에서 두 등식이 모두 유지되면 모션 벡터 MV1은 모션 벡터 MV2와 유사한 것으로 간주된다.
일 예에서, 제1 모션 후보 리스트는 병합 리스트이다.
단계 2.3에서 제2 후보(제1 모션 후보 리스트의 이중 예측 후보의 L1 부분을 기반으로 생성된 단일 예측 후보)는 제1 후보(제1 모션 후보 리스트의 이중 예측 후보의 L0 부분을 기반으로 생성되는 단일 예측 후보)와 충분히 상이한 경우에만 제2 모션 후보 리스트에 추가된다.
L1 부분이 L0 부분과 유사하면(또는 똑같으면) 제2 리스트에 삽입되지 않기 때문에 압축 효율이 향상된다.
실시 예 9는 모션 정보 후보 리스트(제2 리스트)를 구성하는 방법을 개시하고, 제2 리스트는 단일 예측 후보를 포함한다.
블록에 삼각 예측이 적용되지 않으면 제1 리스트는 블록 예측에 사용된다. 일 예에서, 제1 리스트는 병합 모드를 적용하도록 지시되었지만 삼각 예측 모드를 적용하도록 지시되지 않은 블록을 코딩하는 데 사용된다.
제2 리스트는 제1 리스트를 기반으로 구성된다. 블록에 삼각 예측을 적용하면 제2 리스트에서 모션 정보(또는 모션 벡터) 후보를 선택한다. 제2 리스트는 단일 예측 후보를 포함하며, 후보는 블록의 제1 삼각형 부분 및 제2 삼각형 부분에 적용될 수 있다. 일 예에서, 삼각 병합 모드가 블록에 적용되면 2개의 병합 인덱스가 비트스트림으로 코딩된다. 병합 인덱스는 블록의 제1 삼각형 부분 또는 제2 삼각형 부분에 사용되는 제2 리스트의 후보를 식별한다.
다른 예에서, 현재 블록의 블록 크기가 임계 값보다 작거나 같거나(예를 들어 임계 값은 16일 수 있음) 또는, 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링되는 가장 작은 크기이면, 제2 리스트에서 블록을 예측하는 데 사용되는 후보를 식별하기 위해 하나의 병합 인덱스가 비트스트림으로 코딩된다. 현재 블록의 블록 크기가 임계 값보다 크거나(예: 임계 값이 16일 수 있음) 또는, 현재 블록의 블록 크기가 파라미터 세트에서 미리 정의되거나 시그널링된 가장 작은 크기가 아니면, 병합 인덱스는 제1 리스트에서 블록을 예측하는 데 사용되는 후보를 식별하기 위해 비트스트림으로 코딩된다.
다른 예에서, 블록이 삼각 예측을 적용하지 않는 것으로 결정되면, 블록이 제1 모션 후보 리스트를 사용하는지를 판정하기 위해 다른 조건을 확인할 수 있다. 일 예에서, 블록이 삼각 예측을 적용하지 않는 것으로 결정되면, 블록이 병합 모드를 적용하는지가 추가로 판정된다. 병합 모드가 적용되면 제1 모션 후보 리스트가 블록 예측에 사용되고, 병합 모드가 적용되지 않으면 현재 블록을 예측하는 다른 방법(예: 인트라 예측)이 적용될 수 있다.
실시 예 9에 따르면, 제2 모션 후보 리스트는 제1 모션 후보 리스트에 기반하여 구성된다. 제2 리스트는 단일 예측 후보만을 포함할 수 있으므로, 사용할 수 없는 후보(예를 들어, 이중 예측 후보)를 포함하지 않는 이점이 있다. 따라서, 어떤 후보가 사용되는지를 시그널링하는 지시자는 더 적은 수의 비트로 표현될 수 있어 압축 효율이 향상된다.
실시 예 1 내지 실시 예 9에서, 측면들이 "제1 리스트" 및 "제2 리스트"라는 용어를 사용하여 설명되며, 여기서 제2 리스트의 모션 정보 후보는 코딩 블록이 삼각 예측 모드 또는 서브블록 예측 모드로 코딩되면 코딩 블록을 예측하는 데 사용된다. 본 개시는 또한 제1 리스트를 구성하기 위한 규칙에 대한 수정으로 볼 수 있다. 제1 리스트는 단일 예측 후보를 포함할 수 있을 뿐만 아니라 이중 예측 후보도 포함할 수 있기 때문에 삼각 예측(선택 가능한 모든 후보가 단일 예측 후보이어야 함을 요구함)을 사용하여 예측되는 코딩 블록의 예측에 사용할 수 없다. 따라서, 본 개시는 예를 들어 ITU-T H.265 표준 또는 VVC 초안 표준에 설명된 리스트 구성 규칙에 대한 수정으로 볼 수 있다. 실제로, 개시된 측면은 단일 예측 후보 및 이중 예측 후보를 포함하는 임의의 모션 정보 리스트에 적용될 수 있으며, 본 개시의 목적은 결과적인 모션 정보 후보 리스트가 단지 단일 예측 후보를 포함하는 방식으로 리스트 구성 규칙을 수정하는 것이다. 따라서, 수정된 리스트 구성 규칙을 적용하여, 삼각(또는 서브블록) 예측을 사용하여 예측되는 코딩 블록을 예측하는 데 사용할 수 있는 모션 정보 후보를 획득할 수 있다. 다시 말하자면, 실시 예 1 내지 실시 예 9는 단일 예측 후보와 이중 예측 후보를 모두 포함하는 병합 리스트를 구성하기 위한 일련의 규칙이 주어졌을 때, 단일 예측 후보만을 포함하는 모션 정보 후보 리스트를 획득하기 위해 필요한 규칙 수정을 설명한다.
예(Example) 1. 병합 후보 리스트에 따라 블록을 처리하는 방법으로서, 상기 방법은,
현재 블록의 이웃 블록의 모션 정보에 따라 제1 리스트를 구성하는 단계;
제1 리스트에 따라 제2 리스트를 구성하는 단계;
현재 블록의 예측 정보 또는 블록 크기 정보를 획득하는 단계; 및
현재 블록의 예측 정보 또는 블록 크기 정보에 따라 제1 리스트 또는 제2 리스트를 사용하여 현재 블록의 인터 예측을 수행하는 단계를 포함한다.
예 2. 예 1의 방법에서, 제2 리스트의 모든 후보는 단일 예측 후보이다.
예 3. 예 1 또는 예 2의 방법에서, 상기 제1 리스트에 따라 제2 리스트를 구성하는 단계는,
제1 리스트의 하나의 이중 예측 후보에 따라 두 개의 단일 예측 후보를 생성하는 단계; 및
두 개의 단일 예측 후보에 따라 제2 리스트를 구성하는 단계를 포함한다.
예 4. 예 1 또는 예 2의 방법에서, 상기 제1 리스트에 따라 제2 리스트를 구성하는 단계는,
제1 리스트의 하나의 이중 예측 후보에 따라 하나의 단일 예측 후보를 생성하는 단계; 및
하나의 단일 예측 후보에 따라 제2 리스트를 구성하는 단계를 포함한다.
예 5. 예 1 또는 예 2의 방법에서, 상기 제1 리스트에 따라 제2 리스트를 구성하는 단계는,
제1 리스트의 하나의 이중 예측 후보에 따라 두 개의 단일 예측 후보를 생성하는 단계; 및
제1 리스트의 적어도 하나의 단일 예측 후보 및 두 개의 단일 예측 후보에 따라 제2 리스트를 구성하는 단계를 포함한다.
예 6. 예 1 또는 예 2의 방법에서, 상기 제1 리스트에 따라 제2 리스트를 구성하는 단계는,
제1 리스트의 하나의 이중 예측 후보에 따라 두 개의 단일 예측 후보를 생성하는 단계;
두 개의 단일 예측 후보 사이의 유사성을 결정하는 단계; 및
두 개의 단일 예측 후보 및 상기 유사성 결정의 결과에 따라 제2 리스트를 구성하는 단계를 포함한다.
예 7. 예 1 내지 예 6 중 어느 하나의 방법에서, 상기 제1 리스트에 따라 제2 리스트를 구성하는 단계는,
제1 리스트의 이중 예측 후보를 두 개의 단일 예측 후보로 분할하는 것에 따라, 제1 리스트의 적어도 하나의 단일 예측 후보를 제2 리스트에 삽입하는 단계를 포함한다.
예 8. 예 1 내지 예 6 중 어느 하나의 방법에서, 상기 제1 리스트에 따라 제2 리스트를 구성하는 단계는,
제1 리스트에서 적어도 하나의 단일 예측 후보의 순서에 따라 그리고 제1 리스트의 이중 예측 후보를 두 개의 단일 예측 후보로 분할하는 것에 따라, 제1 리스트의 적어도 하나의 단일 예측 후보를 제2 리스트에 삽입하는 단계를 포함한다.
예 9. 예 1 내지 예 8 중 어느 하나의 방법에서, 상기 방법은,
제1 리스트의 이중 예측 후보의 두 개의 구성 요소 간의 유사성을 결정하고, 유사성을 결정한 결과에 따라 제1 리스트를 업데이트하는 단계를 더 포함하고,
이에 따라, 상기 제1 리스트에 따라 제2 리스트를 구성하는 단계는,
업데이트된 제1 리스트에 따라 제2 리스트를 구성하는 단계를 포함한다.
예 10. 예 1 내지 예 9 중 어느 하나의 방법에서, 상기 제2 리스트의 크기는 상기 제1 리스트의 크기보다 작거나 같다.
예 11. 예 1 내지 예 9 중 어느 하나의 방법에서, 상기 제2 리스트의 크기는 현재 블록의 블록 크기에 따라 결정된다.
예 12. 예 1 내지 예 9 중 어느 하나의 방법에서, 상기 제2 리스트의 크기는 현재 블록의 너비 길이 또는 높이 길이에 따라 결정된다.
예 13. 예 1 내지 예 12 중 어느 하나의 방법에서, 상기 현재 블록의 예측 정보 또는 블록 크기 정보에 따라, 제1 리스트 또는 제2 리스트를 사용하여 인터 예측을 수행하는 단계는,
삼각 예측(또는 서브블록 예측)이 현재 블록에 적용되는 경우, 제2 리스트가 현재 블록을 예측하는 데 사용되거나; 또는
삼각 예측(또는 서브블록 예측)이 현재 블록에 적용되지 않는 경우, 제1 리스트가 현재 블록을 예측하는 데 사용되는 단계를 포함한다.
예 14. 예 1 내지 예 13 중 어느 하나의 방법에서, 상기 현재 블록의 예측 정보 또는 블록 크기 정보에 따라, 제1 리스트 또는 제2 리스트를 사용하여 인터 예측을 수행하는 단계는,
현재 블록의 블록 크기가 임계 값보다 작거나 같거나(예를 들어, 임계 값이 16일 수 있음) 또는 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에서 시그널링되는 가장 작은 크기인 경우, 제2 리스트가 현재 블록을 예측하는 데 사용되거나; 또는
현재 블록의 블록 크기가 임계 값보다 크거나(예를 들어, 임계 값이 16일 수 있음) 또는 현재 블록의 블록 크기가 미리 정의되거나 파라미터 세트에 시그널링되는 가장 작은 크기가 아닌 경우, 제1 리스트가 현재 블록을 예측하는 데 사용되는 단계를 포함한다.
예 15. 예 1 내지 예 14 중 어느 하나에 따른 방법을 수행하기 위한 처리 회로를 포함하는 인코더(20).
예 16. 예 1 내지 예 14 중 어느 하나에 따른 방법을 수행하기 위한 처리 회로를 포함하는 디코더(30).
예 17. 예 1 내지 예 14 중 어느 하나에 따른 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
예 18. 디코더로서,
하나 이상의 프로세서; 및
프로세서에 결합되면서 또한 프로세서에 의한 실행을 위한 프로그래밍을 저장하는 컴퓨터가 판독 가능한 비 일시적 저장 매체를 포함하고, 프로그래밍은 프로세서에 의해 실행될 때, 예 1 내지 예 14 중 어느 하나에 따른 방법을 수행하도록 디코더를 구성한다.
예 19. 인코더로서,
하나 이상의 프로세서; 및
프로세서에 결합되면서 또한 프로세서에 의해 실행되는 프로그래밍을 저장하는 컴퓨터가 판독 가능한 비 일시적 저장 매체를 포함하고, 프로그래밍은 프로세서에 의해 실행될 때, 예 1 내지 예 14 중 어느 하나에 따른 방법을 수행하도록 인코더를 구성한다.
본 개시의 실시 예가 주로 비디오 코딩에 기반하여 설명되었지만, 코딩 시스템(10), 인코더(20) 및 디코더(30)(및 이에 상응하는 시스템(10))의 실시 예 및 여기에 설명된 다른 실시 예는 또한, 정지 화상 처리 또는 코딩, 즉 비디오 코딩에서와 같이 임의의 선행 또는 연속 화상에 독립적인 개별 화상의 처리 또는 코딩을 위해 구성될 수 있음을 유의해야 한다. 일반적으로 화상 처리 코딩이 단일 화상(17)으로 제한되는 경우에 인터 예측 유닛(244)(인코더) 및 인터 예측 유닛(344)(디코더))만이 이용 가능하지 않을 수 있다. 비디오 인코더(20) 및 비디오 디코더(30)의 모든 다른 기능(도구(tool) 또는 기술이라고도 함)은 정지 화상 처리 예를 들어, 잔차 계산(204/304), 변환(206), 양자화(208), 역 양자화(210/310), (역) 변환(212/312), 파티셔닝(262/362), 인트라 예측(254/354) 및/또는 루프 필터링(220, 320) 그리고 엔트로피 코딩(270) 및 엔트로피 디코딩(304)에 동일하게 사용될 수 있다.
다음은 전술한 실시 예에서 나타낸 인코딩 방법 및 디코딩 방법의 적용 및 이를 사용하는 시스템에 대한 설명이다.
도 16은 콘텐츠 배포 서비스를 실현하기 위한 콘텐츠 공급(content supply) 시스템(3100)을 나타내는 블록도이다. 이 콘텐츠 공급 시스템(3100)은 캡처 디바이스(3102), 단말 디바이스(3106)를 포함하고, 선택적으로 디스플레이(3126)를 포함한다. 캡처 디바이스(3102)는 통신 링크(3104)를 통해 단말 디바이스(3106)와 통신한다. 통신 링크는 전술한 통신 채널(13)을 포함할 수 있다. 통신 링크(3104)는 WIFI, 이더넷, 케이블, 무선(3G/4G/5G), USB 또는 이들의 임의의 유형의 조합 등을 포함하지만, 이에 제한되지 않는다.
캡처 디바이스(3102)는 데이터를 생성하고, 상기 실시 예에서 도시된 바와 같은 인코딩 방법으로 데이터를 인코딩할 수 있다. 다르게는, 캡처 디바이스(3102)는 데이터를 스트리밍 서버(도면에 도시되지 않음)에 배포할 수 있고, 서버는 데이터를 인코딩하고 인코딩된 데이터를 단말 디바이스(3106)로 전송한다. 캡처 디바이스(3102)는 카메라, 스마트 폰 또는 패드, 컴퓨터 또는 랩톱, 화상 회의 시스템(video conference system), PDA, 차량 탑재 디바이스, 또는 이들 중 임의의 조합 등을 포함하지만, 이에 제한되지는 않는다. 예를 들어, 캡처 디바이스(3102)는 전술한 바와 같이 소스 디바이스(12)를 포함할 수 있다. 데이터가 비디오를 포함하는 경우, 캡처 디바이스(3102)에 포함된 비디오 인코더(20)는 실제로 비디오 인코딩 처리를 수행할 수 있다. 데이터가 오디오(즉, 음성)를 포함하는 경우, 캡처 디바이스(3102)에 포함된 오디오 인코더는 실제로 오디오 인코딩 처리를 수행할 수 있다. 일부 실제 시나리오의 경우, 캡처 디바이스(3102)는 인코딩된 비디오 및 오디오 데이터를 함께 다중화하여 분배한다. 예를 들어, 화상 회의 시스템과 같은 다른 실제 시나리오의 경우, 인코딩된 오디오 데이터와 인코딩된 비디오 데이터는 다중화되지 않는다. 캡처 디바이스(3102)는 인코딩된 오디오 데이터 및 인코딩된 비디오 데이터를 단말 디바이스(3106)에 개별적으로 배포한다.
콘텐츠 공급 시스템(3100)에서, 단말 디바이스(310)는 인코딩된 데이터를 수신하여 재생한다. 단말 디바이스(3106)는 전술한 인코딩된 데이터를 디코딩할 수 있는, 스마트 폰 또는 패드(3108), 컴퓨터 또는 랩톱(3110), 네트워크 비디오 레코더(network video recorder, NVR)/디지털 비디오 레코더(digital video recorder, DVR)(3112), TV(3114), 셋톱 박스(set top box, STB)(3116), 화상 회의 시스템(3118), 비디오 감시 시스템(video surveillance system)(3120), PDA(Personal Digital Assistant)(3122), 차량 탑재 디바이스(vehicle mounted device)(3124), 또는 이들 중 임의의 조합 또는 전술된 인코딩된 데이터를 디코딩할 수 있는 것 등과 같은 데이터 수신 및 복구 기능을 갖춘 디바이스일 수 있다. 예를 들어, 단말 디바이스(3106)는 전술한 바와 같이 목적지 디바이스(14)를 포함할 수 있다. 인코딩된 데이터가 비디오를 포함하는 경우, 단말 디바이스에 포함된 비디오 디코더(30)가 비디오 디코딩을 수행하기 위해 우선 순위를 갖는다. 인코딩된 데이터가 오디오를 포함하는 경우, 단말 디바이스에 포함된 오디오 디코더가 오디오 디코딩 처리를 수행하기 위해 우선 순위를 갖는다.
디스플레이가 있는 단말 디바이스의 경우, 예를 들어, 스마트 폰 또는 패드(3108), 컴퓨터 또는 랩톱(3110), 네트워크 비디오 레코더(network video recorder, NVR)/디지털 비디오 레코더(digital video recorder, DVR)(3112), TV(3114), PDA(Personal Digital Assistant)(3122) 또는 차량 탑재 디바이스(3124)의 경우, 단말 디바이스는 디코딩된 데이터를 디스플레이에 공급할 수 있다. 디스플레이가 없는 단말 디바이스의 경우, 예를 들어, STB(3116), 화상 회의 시스템(3118) 또는 비디오 감시 시스템(3120)의 경우, 외부 디스플레이(3126)가 내부에서 컨택되어 디코딩된 데이터를 수신하고 보여준다.
이 시스템의 각각의 디바이스가 인코딩 또는 디코딩를 수행할 때, 전술한 실시 예에 도시된 바와 같이 화상 인코딩 디바이스 또는 화상 디코딩 디바이스가 사용될 수 있다.
도 17은 단말 디바이스(3106)의 일례의 구조를 나타내는 도면이다. 단말 디바이스(3106)가 캡처 디바이스(3102)로부터 스트림을 수신한 후, 프로토콜 진행(protocol proceeding) 유닛(3202)은 스트림의 전송 프로토콜을 분석한다. 프로토콜은 RTSP(Real Time Streaming Protocol), HTTP(Hyper Text Transfer Protocol), HLS(HTTP Live Streaming Protocol), MPEG-DASH, RTP(Real-time Transport Protocol), RTMP(Real Time Messaging Protocol), 또는 이들의 임의의 유형의 조합 등을 포함하지만, 이에 제한되지는 않는다.
프로토콜 진행 유닛(3202)이 스트림을 처리한 후 스트림 파일이 생성된다. 파일은 역다중화(demultiplexing) 유닛(3204)으로 출력된다. 역다중화 유닛(3204)은 다중화된 데이터를 인코딩된 오디오 데이터 및 인코딩된 비디오 데이터로 분리할 수 있다. 위에서 설명한 바와 같이, 예를 들어 화상 회의 시스템과 같은 일부 실제 시나리오의 경우, 인코딩된 오디오 데이터와 인코딩된 비디오 데이터는 다중화되지 않는다. 이러한 상황에서, 인코딩된 데이터는 역다중화 유닛(3204)을 통하지 않고 비디오 디코더(3206) 및 오디오 디코더(3208)로 전송된다.
역다중화 처리를 통해 비디오 ES(Elementary Stream), 오디오 ES 및 선택적으로 자막(subtitle)이 생성된다. 전술한 실시 예에서 설명된 비디오 디코더(30)를 포함하는 비디오 디코더(3206)는 전술한 실시 예에 도시된 디코딩 방법에 의해 비디오 ES를 디코딩하여 비디오 프레임을 생성하고, 이 데이터를 동기 유닛(synchronous unit)(3212)에 공급한다. 오디오 디코더(3208)는 오디오 ES를 디코딩하여 오디오 프레임을 생성하고, 이 데이터를 동기 유닛(3212)에 공급한다. 다르게는, 비디오 프레임은 동기 유닛(3212)에 공급하기 전에 버퍼(도 17에 도시되지 않음)에 저장될 수 있다. 유사하게, 오디오 프레임은 동기 유닛(3212)에 공급하기 전에 버퍼(도 17에 도시되지 않음)에 저장될 수 있다.
동기 유닛(3212)은 비디오 프레임과 오디오 프레임을 동기화하고 비디오/오디오를 비디오/오디오 디스플레이(3214)에 공급한다. 예를 들어, 동기 유닛(3212)은 비디오 및 오디오 정보의 프리젠테이션(presentation)을 동기화한다. 정보는 코딩된 시청각 데이터(audio and visual data)의 표현에 관한 타임 스탬프와 데이터 스트림 자체의 전달에 관한 타임 스탬프를 사용하여 신택스로 코딩할 수 있다.
스트림에 자막이 포함되면, 자막 디코더(3210)는 자막을 디코딩하여 비디오 프레임 및 오디오 프레임과 동기화하여, 비디오/오디오/자막을 비디오/오디오/자막 디스플레이(3216)에 제공한다.
본 개시는 전술한 시스템에 제한되지 않고, 전술한 실시 예에서의 화상 인코딩 디바이스 또는 화상 디코딩 디바이스는 다른 시스템, 예를 들어 자동차 시스템에 통합될 수 있다.
실시 예, 예를 들어, 인코더(20) 및 디코더(30), 그리고 예를 들어, 인코더(20) 및 디코더(30)를 참조하여 본 명세서에 설명된 기능은, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되면, 기능은 컴퓨터가 판독 가능한 매체에 저장되거나 통신 매체를 통해 하나 이상의 명령 또는 코드로 전송되고, 하드웨어 기반 처리 디바이스에 의해 실행될 수 있다. 컴퓨터가 판독 가능한 매체는 데이터 저장 매체와 같은 실재하는(tangible) 매체에 해당하는 컴퓨터가 판독 가능한 저장 매체 또는 예를 들어 통신 프로토콜에 따라 컴퓨터 프로그램을 한 장소에서 다른 장소로 전송하는 것을 용이하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터가 판독 가능한 매체는 일반적으로 (1) 비 일시적인, 컴퓨터가 판독 가능한 실재하는 저장 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체에 해당할 수 있다. 데이터 저장 매체는 본 개시에 설명된 기술의 구현을 위한 명령, 코드 및/또는 데이터 구조를 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용 가능한 미디어일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터가 판독 가능한 매체를 포함할 수 있다.
제한이 아닌 일 예에서, 이러한 컴퓨터가 판독 가능한 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광학 디스크 저장 디바이스, 자기 디스크 저장 디바이스 또는 기타 자기 저장 디바이스, 플래시 메모리, 또는 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하는 데 사용할 수 있으면서 또한 컴퓨터에 의해 액세스될 수 있는 임의 다른 매체를 포함할 수 있다. 또한 임의의 연결을 컴퓨터가 판독 가능한 매체라고 한다. 예를 들어, 동축 케이블, 광섬유 케이블, 트위스트 페어(twisted pair), 디지털 가입자 회선(digital subscriber line, DSL) 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술을 사용하여 웹 사이트, 서버 또는 기타 원격 소스에서 명령이 전송되면, 동축 케이블, 광섬유 케이블, 트위스트 페어, DSL 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술이 매체의 정의에 포함된다. 그러나, 컴퓨터가 판독 가능한 저장 매체 및 데이터 저장 매체는 연결, 반송파, 신호 또는 기타 일시적인 매체를 포함하지 않고 대신 비 일시적이고 실재하는 저장 매체에 대한 것임을 이해해야 한다. 여기에 사용된 디스크(Disk) 및 디스크(disc)는 CD(compact disc), 레이저 디스크, 광 디스크, DVD(Digital Versatile Disc), 플로피 디스크 및 블루레이(Blu-ray) 디스크를 포함하며, 디스크(disk)는 일반적으로 데이터를 자기적으로 재생하는 반면 디스크(disc)는 레이저로 데이터를 광학적으로 재생한다. 위의 조합도 컴퓨터가 판독 가능한 매체의 범위 내에 포함되어야 한다.
명령은 하나 이상의 DSP(digital signal processor), 범용 마이크로 프로세서, ASIC(application specific integrated circuits), FPGA(field programmable logic array) 또는 기타 동등한 통합 또는 개별 논리 회로와 같은 하나 이상의 프로세서에 의해 실행될 수 있다. 따라서, 여기에서 사용되는 용어 "프로세서"는 전술한 구조 또는 본 명세서에 설명된 기술의 구현에 적합한 임의의 다른 구조를 지칭할 수 있다. 또한, 일부 측면에서, 여기에 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공되거나 결합된 코덱에 통합될 수 있다. 또한, 기술은 하나 이상의 회로 또는 로직 엘리먼트에서 완전히 구현될 수 있다.
본 개시의 기술은 무선 핸드셋, 집적 회로(integrated circuit, IC) 또는 IC 세트(예를 들어, 칩 세트)를 포함하는 매우 다양한 디바이스 또는 장치에서 구현될 수 있다. 개시된 기술을 수행하도록 구성된 디바이스의 기능적 측면을 강조하기 위해 다양한 구성 요소, 모듈 또는 유닛이 본 개시에서 설명되지만, 반드시 상이한 하드웨어 유닛에 의한 실현을 필요로 하는 것은 아니다. 오히려, 위에서 설명된 바와 같이, 다양한 유닛은 코덱 하드웨어 유닛으로 결합되거나, 적절한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명된 하나 이상의 프로세서를 포함하는 상호 작동하는 하드웨어 유닛의 세트에 의해 제공될 수 있다.
Claims (13)
- 병합 후보 리스트(merge candidate list)에 따라 블록을 코딩하는 방법으로서, 상기 방법은,
제1 리스트에 병합 후보를 추가함으로써 현재 블록의 이웃 블록의 모션(motion) 정보에 따라 제1 리스트를 구성하는 단계 - 상기 모션 정보는 모션 데이터를 포함하고, 상기 모션 데이터는 각각의 참조 픽처 리스트에 대한 참조 인덱스 및 모션 벡터와 하나 또는 2개의 참조 픽처 리스트의 사용 여부 정보를 포함하며, 상기 제1 리스트는 병합 후보 리스트이고, 상기 병합 후보 리스트는, 다음의 5가지 유형의 후보:
1) 공간적 이웃 CU로부터의 공간 MVP
2) 병치된(collocated) CU로부터의 임시 MVP
3) FIFO 테이블로부터의 히스토리 기반 MVP
4) 쌍별 평균(Pairwise average) MVP
5) 제로(zero) MV
를 순서대로 포함하여 구성됨 - ;
상기 현재 블록의 예측 정보를 획득하는 단계 - 상기 예측 정보는 신택스 엘리먼트에 의해 결정됨 - ;
상기 현재 블록의 예측 정보가 서브블록 예측(sub-block prediction)이 상기 현재 블록에 적용됨을 지시하는(indicate) 경우, 상기 제1 리스트에 따라 상기 현재 블록에 대한 단일 예측(uni-prediction) 후보를 획득하는 단계; 및
상기 현재 블록에 대한 상기 단일 예측 후보를 사용하여 상기 현재 블록의 인터 예측(inter prediction)을 수행하는 단계
를 포함하고,
상기 제1 리스트를 구성하는 단계가,
이웃 블록의 사용 가능 여부 및 모션 정보의 포함 여부를 확인한 후, 왼쪽, 왼쪽 하단, 왼쪽 상단, 상단, 오른쪽 상단 위치의 최대 4개의 병합 후보가 선택되고 왼쪽, 왼쪽 하단, 왼쪽 상단, 상단 위치의 임의의 코딩 유닛(CU) 중 하나가 사용 가능하지 않거나 또는 인트라 코딩되는 경우, 상기 이웃 블록의 모든 모션 정보를 상기 제1 리스트의 병합 후보로 사용하기 전에, 중복 검사를 수행하는 단계 - 상기 중복 검사는 동일한 모션 정보를 갖는 병합 후보가 상기 제1 리스트에서 제외되도록 하고, 상기 중복 검사는 왼쪽, 오른쪽 상단, 상단, 왼쪽 상단 이웃 블록 간 및 왼쪽, 왼쪽 하단, 왼쪽 상단 이웃 블록 간에서 수행됨 - 를 포함하는, 방법. - 제1항에 있어서,
상기 현재 블록은 2개의 서브블록을 포함하고, 각각의 서브블록은 단일 예측 후보에 대응하는, 방법. - 제1항에 있어서,
상기 단일 예측 후보가 L0 참조 픽처 리스트에 대응하는 참조 픽처 인덱스와 모션 벡터를 포함하는, 방법. - 제1항에 있어서,
상기 단일 예측 후보가 L1 참조 픽처 리스트에 대응하는 참조 픽처 인덱스와 모션 벡터를 포함하는, 방법. - 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 서브블록 예측은 삼각 예측(triangular prediction) 모드이고, 상기 삼각 예측 모드는 상기 현재 블록을 대각선 방향 또는 역대각선 방향에서 2개의 삼각 예측 유닛으로 분할하기 위한 것인, 방법. - 제1항 내지 제4항 중 어느 한 항에 있어서,
상기 단일 예측 후보는 상기 제1 리스트에서의 상기 후보의 순서에 기반하여 상기 제1 리스트의 이중 예측 후보에 따라 생성되는, 방법. - 제1항 내지 제4항 중 어느 한 항에 따른 방법을 수행하기 위한 처리 회로를 포함하는 인코더(20).
- 제1항 내지 제4항 중 어느 한 항에 따른 방법을 수행하기 위한 처리 회로를 포함하는 디코더(30).
- 제1항 내지 제4항 중 어느 한 항에 따른 방법을 수행하기 위한 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
- 디코더로서,
하나 이상의 프로세서; 및
상기 프로세서에 결합되어 있으면서 또한 상기 프로세서에 의한 실행을 위한 프로그래밍을 저장하는, 컴퓨터가 판독 가능한 비 일시적 저장 매체
를 포함하며,
상기 프로그래밍이 상기 프로세서에 의해 실행될 때 제1항 내지 제4항 중 어느 한 항에 따른 방법을 수행하도록 상기 디코더를 구성하는, 디코더. - 삭제
- 삭제
- 삭제
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862770142P | 2018-11-20 | 2018-11-20 | |
US62/770,142 | 2018-11-20 | ||
US201962788487P | 2019-01-04 | 2019-01-04 | |
US62/788,487 | 2019-01-04 | ||
PCT/RU2019/050221 WO2020106189A1 (en) | 2018-11-20 | 2019-11-20 | An encoder, a decoder and corresponding methods for merge mode |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210046758A KR20210046758A (ko) | 2021-04-28 |
KR102622148B1 true KR102622148B1 (ko) | 2024-01-05 |
Family
ID=70773942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217008881A KR102622148B1 (ko) | 2018-11-20 | 2019-11-20 | 병합 모드를 위한 인코더, 디코더 및 대응 방법 |
Country Status (16)
Country | Link |
---|---|
US (2) | US11909959B2 (ko) |
EP (1) | EP3864846B1 (ko) |
JP (2) | JP7457010B2 (ko) |
KR (1) | KR102622148B1 (ko) |
CN (6) | CN116405696A (ko) |
AU (2) | AU2019383290B2 (ko) |
BR (1) | BR112021008016A2 (ko) |
CA (1) | CA3112373A1 (ko) |
ES (1) | ES2972326T3 (ko) |
HU (1) | HUE064819T2 (ko) |
IL (1) | IL283310A (ko) |
MX (1) | MX2021005032A (ko) |
PL (1) | PL3864846T3 (ko) |
PT (1) | PT3864846T (ko) |
SG (1) | SG11202102020UA (ko) |
WO (1) | WO2020106189A1 (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113196758A (zh) * | 2018-12-18 | 2021-07-30 | 韩国电子通信研究院 | 图像编码/解码方法和设备以及存储比特流的记录介质 |
CN113852815B (zh) | 2018-12-25 | 2022-12-27 | 北京达佳互联信息技术有限公司 | 利用三角形形状预测单元的视频编码方法、设备及介质 |
CN116647694A (zh) * | 2019-01-02 | 2023-08-25 | 北京大学 | 候选mv列表构建方法和装置 |
AR118250A1 (es) * | 2019-03-08 | 2021-09-22 | Jvckenwood Corp | Dispositivos, métodos y programas de codificación y decodificación de imágenes en movimiento |
US11528504B2 (en) * | 2019-07-11 | 2022-12-13 | Qualcomm Incorporated | Motion vector prediction with motion information collecting buffer |
WO2021243297A1 (en) | 2020-05-29 | 2021-12-02 | Beijing Dajia Internet Information Technology Co., Ltd. | Methods and apparatuses for video coding using geometric partition |
CN115699736A (zh) * | 2020-06-03 | 2023-02-03 | 北京达佳互联信息技术有限公司 | 具有运动矢量细化的几何分区模式 |
WO2022266128A1 (en) * | 2021-06-14 | 2022-12-22 | Beijing Dajia Internet Information Technology Co., Ltd. | Methods and devices for geometric partition mode with motion vector refinement |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101014660B1 (ko) * | 2003-10-24 | 2011-02-16 | 삼성전자주식회사 | 인트라 예측 방법 및 장치 |
US9648334B2 (en) * | 2011-03-21 | 2017-05-09 | Qualcomm Incorporated | Bi-predictive merge mode based on uni-predictive neighbors in video coding |
TWI580261B (zh) * | 2012-01-18 | 2017-04-21 | Jvc Kenwood Corp | Dynamic image decoding device, dynamic image decoding method, and dynamic image decoding program |
US9451277B2 (en) | 2012-02-08 | 2016-09-20 | Qualcomm Incorporated | Restriction of prediction units in B slices to uni-directional inter prediction |
US9554150B2 (en) * | 2013-09-20 | 2017-01-24 | Qualcomm Incorporated | Combined bi-predictive merging candidates for 3D video coding |
KR101908249B1 (ko) * | 2014-11-18 | 2018-10-15 | 미디어텍 인크. | 단방향 예측 및 병합 후보로부터의 모션 벡터에 기초한 양방향 예측 비디오 코딩 방법 |
US20170310988A1 (en) * | 2014-12-09 | 2017-10-26 | Mediatek Inc. | Method of Motion Vector Predictor or Merge Candidate Derivation in Video Coding |
US10887597B2 (en) | 2015-06-09 | 2021-01-05 | Qualcomm Incorporated | Systems and methods of determining illumination compensation parameters for video coding |
US10721489B2 (en) * | 2016-09-06 | 2020-07-21 | Qualcomm Incorporated | Geometry-based priority for the construction of candidate lists |
TW202025760A (zh) * | 2018-09-12 | 2020-07-01 | 大陸商北京字節跳動網絡技術有限公司 | 要檢查多少個hmvp候選 |
WO2020098713A1 (en) * | 2018-11-13 | 2020-05-22 | Beijing Bytedance Network Technology Co., Ltd. | Motion candidate list construction for prediction |
CN112997493B (zh) | 2018-11-13 | 2024-01-05 | 北京字节跳动网络技术有限公司 | 用于单一类型运动候选列表的构建方法 |
US11856194B2 (en) * | 2018-12-21 | 2023-12-26 | Hfi Innovation Inc. | Method and apparatus of simplified triangle merge mode candidate list derivation |
-
2019
- 2019-11-20 SG SG11202102020UA patent/SG11202102020UA/en unknown
- 2019-11-20 KR KR1020217008881A patent/KR102622148B1/ko active IP Right Grant
- 2019-11-20 MX MX2021005032A patent/MX2021005032A/es unknown
- 2019-11-20 AU AU2019383290A patent/AU2019383290B2/en active Active
- 2019-11-20 EP EP19888043.7A patent/EP3864846B1/en active Active
- 2019-11-20 PT PT198880437T patent/PT3864846T/pt unknown
- 2019-11-20 CN CN202310390288.7A patent/CN116405696A/zh active Pending
- 2019-11-20 CA CA3112373A patent/CA3112373A1/en active Pending
- 2019-11-20 CN CN202310367132.7A patent/CN116389766A/zh active Pending
- 2019-11-20 CN CN201980058695.XA patent/CN112673633B/zh active Active
- 2019-11-20 CN CN202310367148.8A patent/CN116389767A/zh active Pending
- 2019-11-20 BR BR112021008016-3A patent/BR112021008016A2/pt unknown
- 2019-11-20 CN CN202310390348.5A patent/CN116582681A/zh active Pending
- 2019-11-20 ES ES19888043T patent/ES2972326T3/es active Active
- 2019-11-20 CN CN202310398395.4A patent/CN116800980A/zh active Pending
- 2019-11-20 PL PL19888043.7T patent/PL3864846T3/pl unknown
- 2019-11-20 WO PCT/RU2019/050221 patent/WO2020106189A1/en active Application Filing
- 2019-11-20 HU HUE19888043A patent/HUE064819T2/hu unknown
- 2019-11-20 JP JP2021518874A patent/JP7457010B2/ja active Active
-
2021
- 2021-05-19 US US17/324,401 patent/US11909959B2/en active Active
- 2021-05-19 IL IL283310A patent/IL283310A/en unknown
-
2023
- 2023-09-27 AU AU2023237109A patent/AU2023237109A1/en active Pending
- 2023-12-29 US US18/400,754 patent/US20240137499A1/en active Pending
-
2024
- 2024-03-14 JP JP2024040503A patent/JP2024083360A/ja active Pending
Non-Patent Citations (2)
Title |
---|
Ru-Ling Liao, et. al., "CE10.3.1.b: Triangular prediction unit mode", Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 12th Meeting: Macao, CN, 2018.10.08, JVET-L0124-v2.* |
Y. Chen, et. al., "Description of SDR, HDR and 360° video coding technology proposal by Qualcomm and Technicolor - low and high complexity versions", Joint Video Exploration Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 10th Meeting: San Diego, US, 2018.04.14, JVET-J0021.* |
Also Published As
Publication number | Publication date |
---|---|
CN112673633B (zh) | 2023-04-04 |
JP7457010B2 (ja) | 2024-03-27 |
US20240137499A1 (en) | 2024-04-25 |
JP2022504383A (ja) | 2022-01-13 |
ES2972326T3 (es) | 2024-06-12 |
CN116405696A (zh) | 2023-07-07 |
WO2020106189A1 (en) | 2020-05-28 |
BR112021008016A2 (pt) | 2021-08-03 |
JP2024083360A (ja) | 2024-06-21 |
US11909959B2 (en) | 2024-02-20 |
CN116389767A (zh) | 2023-07-04 |
AU2019383290A1 (en) | 2021-04-01 |
PT3864846T (pt) | 2024-03-06 |
PL3864846T3 (pl) | 2024-04-08 |
EP3864846A4 (en) | 2021-12-15 |
CN116582681A (zh) | 2023-08-11 |
MX2021005032A (es) | 2021-06-15 |
IL283310A (en) | 2021-07-29 |
CN116389766A (zh) | 2023-07-04 |
AU2019383290B2 (en) | 2023-07-06 |
KR20210046758A (ko) | 2021-04-28 |
EP3864846B1 (en) | 2024-01-03 |
CN116800980A (zh) | 2023-09-22 |
CA3112373A1 (en) | 2020-05-28 |
SG11202102020UA (en) | 2021-03-30 |
CN112673633A (zh) | 2021-04-16 |
EP3864846A1 (en) | 2021-08-18 |
HUE064819T2 (hu) | 2024-04-28 |
AU2023237109A1 (en) | 2023-10-26 |
US20210274168A1 (en) | 2021-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7106744B2 (ja) | ルーマおよびクロマ成分についてibc専用バッファおよびデフォルト値リフレッシュを使用するエンコーダ、デコーダおよび対応する方法 | |
KR102622148B1 (ko) | 병합 모드를 위한 인코더, 디코더 및 대응 방법 | |
JP7521057B2 (ja) | エンコーダ、デコーダ、及びデブロッキングフィルタの境界強度導出の対応する方法 | |
KR20210141712A (ko) | Ibc 병합 리스트를 사용하는 인코더, 디코더 및 대응 방법들 | |
US11876997B2 (en) | Encoder, decoder and corresponding methods of most probable mode list construction for blocks with multi-hypothesis prediction | |
JP2022541700A (ja) | イントラ予測モードに関連するエンコーダ、デコーダ、および対応する方法 | |
KR20220065040A (ko) | 인코더, 디코더 및 대응 방법 | |
US20240244181A1 (en) | Method and apparatus for deriving an interpolation filter index for a current block | |
KR20210139446A (ko) | 인트라 스무딩을 위한 방법 및 장치 | |
JP2023100701A (ja) | イントラ予測のためのイントラモードコーディングを使用するエンコーダ、デコーダ、および対応する方法 | |
CN113228632B (zh) | 用于局部亮度补偿的编码器、解码器、以及对应方法 | |
RU2817030C2 (ru) | Кодер, декодер и соответствующие способы использования для списка объединения ibc | |
KR20240144496A (ko) | 디블로킹 필터의 경계 강도를 도출하는 인코더, 디코더 및 대응 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |