KR102631517B1 - 픽처 분할 방법 및 장치 - Google Patents
픽처 분할 방법 및 장치 Download PDFInfo
- Publication number
- KR102631517B1 KR102631517B1 KR1020217008065A KR20217008065A KR102631517B1 KR 102631517 B1 KR102631517 B1 KR 102631517B1 KR 1020217008065 A KR1020217008065 A KR 1020217008065A KR 20217008065 A KR20217008065 A KR 20217008065A KR 102631517 B1 KR102631517 B1 KR 102631517B1
- Authority
- KR
- South Korea
- Prior art keywords
- current node
- node
- mode
- block
- splitting
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 158
- 230000011218 segmentation Effects 0.000 title claims abstract description 10
- 241000023320 Luma <angiosperm> Species 0.000 claims abstract description 210
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 claims abstract description 210
- 230000033001 locomotion Effects 0.000 claims description 89
- 238000000638 solvent extraction Methods 0.000 claims description 78
- 230000015654 memory Effects 0.000 claims description 57
- 239000013598 vector Substances 0.000 claims description 30
- 239000012634 fragment Substances 0.000 claims description 25
- 238000006073 displacement reaction Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 description 100
- 238000013139 quantization Methods 0.000 description 66
- 238000004891 communication Methods 0.000 description 28
- 230000006870 function Effects 0.000 description 18
- 238000006243 chemical reaction Methods 0.000 description 14
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000005192 partition Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 10
- 230000009466 transformation Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 7
- 238000007781 pre-processing Methods 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000009499 grossing Methods 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000009966 trimming Methods 0.000 description 2
- 238000012952 Resampling Methods 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- XSQUKJJJFZCRTK-UHFFFAOYSA-N Urea Chemical compound NC(N)=O XSQUKJJJFZCRTK-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000004202 carbamide Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 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
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/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/96—Tree coding, e.g. quad-tree coding
-
- 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/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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- 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/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- 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
-
- 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/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/186—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 a colour or a chrominance component
-
- 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/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
본 발명의 실시예는 픽처 분할 방법 및 장치를 제공한다. 방법은 루마 블록 및 크로마 블록을 포함하는 현재 노드의 분할 모드를 결정하는 단계와, 현재 노드의 분할 모드 및 현재 노드의 크기에 기초하여, 현재 노드의 크로마 블록이 더 분할되지 않는다고 결정하는 단계와, 현재 노드의 크로마 블록이 더 분할되지 않는 경우, 현재 노드의 분할 모드에 기초하여 현재 노드의 루마 블록을 분할하는 단계를 포함한다. 현재 노드의 크로마 블록이 더 분할되지 않는 경우, 현재 노드의 루마 블록만 분할하기 위해 방법이 사용될 수 있으므로, 인코딩 및 디코딩 효율이 향상되고, 코덱의 최대 처리량이 감소되고, 코덱의 구현이 용이하게 된다.
Description
삭제
본 출원은 비디오 코딩의 분야에 관한 것이고, 보다 정확하게는, 픽처 분할 방법 및 장치에 관한 것이다.
인터넷 기술이 빠르게 발전하고 사람들의 물질적, 정신적 문화가 점점 더 풍요로워짐에 따라, 인터넷에서, 비디오, 특히 고화질 비디오의 애플리케이션에 대한 요구가 증가하고 있다. 그러나, 고화질 비디오는 상당히 많은 양의 데이터를 갖는다. 제한된 대역폭으로 인터넷에서 고화질 비디오를 송신하기 위해 먼저 해결되어야 할 문제는 비디오의 인코딩 및 디코딩이다. 비디오 코딩은 광범위한 디지털 비디오 애플리케이션, 예컨대, 방송 디지털 텔레비전, 인터넷 및 모바일 네트워크를 통한 비디오 송신, 화상 채팅 및 화상 회의와 같은 실시간 대화 애플리케이션, DVD 및 Blu-ray 디스크, 비디오 콘텐츠 수집 및 편집 시스템, 및 캠코더의 보안 애플리케이션에 사용된다.
비디오 시퀀스의 각 픽처는 일반적으로 중첩되지 않는 블록의 집합으로 분할되고, 코딩은 일반적으로 블록 레벨에서 수행된다. 예컨대, 공간적(인트라 픽처) 예측 및/또는 시간적(인터 픽처) 예측을 통해 예측 블록이 생성된다. 이에 대응하여, 예측 모드는 인트라 예측 모드(공간적 예측) 및 인터 예측 모드(시간적 예측)를 포함할 수 있다. 인트라 예측 모드 집합은 35개의 상이한 인트라 예측 모드, 예컨대, DC(또는 평균) 모드 및 평면 모드와 같은 무방향성(non-directional) 모드 또는 H.265에서 정의되는 방향성(directional) 모드를 포함할 수 있거나, 또는 67개의 상이한 인트라 예측 모드, 예컨대, DC(또는 평균) 모드 및 평면 모드와 같은 무방향성 모드 또는 개발 중인 H.266에서 정의되는 방향성 모드를 포함할 수 있다. 인터 예측 모드의 집합은, 예컨대, 전체 참조 픽처가 사용되는지 또는 참조 픽처의 일부분만 사용되는지 여부에 따라, 이용 가능한 참조 픽처 및 다른 인터 예측 파라미터에 의존한다.
기존의 비디오는 일반적으로 컬러 비디오이고, 루마(luma) 성분 외에 크로마(chroma) 성분을 포함한다. 따라서, 루마 성분을 인코딩 및 디코딩하는 것 외에, 크로마 성분도 인코딩 및 디코딩되어야 한다. 그러나, 종래 기술에서는 인코딩 및 디코딩 효율이 비교적 낮다.
본 출원(또는 본 개시)의 실시예는 픽처 분할 장치 및 방법을 제공한다.
제 1 측면에 따르면, 본 발명의 실시예는 픽처 분할 방법에 관한 것이다. 방법은 비디오 스트림 디코딩 또는 인코딩 장치에 의해 수행된다. 방법은 루마 블록 및 크로마 블록을 포함하는 현재 노드의 분할 모드를 결정하는 단계와, 현재 노드의 분할 모드 및 현재 노드의 크기에 기초하여 현재 노드의 크로마 블록이 더 분할되지 않는지 결정하는 단계와, 현재 노드의 크로마 블록이 더 분할되지 않는 경우, 현재 노드의 분할 모드에 기초하여 현재 노드의 루마 블록을 분할하는 단계를 포함한다.
제 1 측면의 방법에 따르면, 현재 노드의 크로마 블록이 더 분할되지 않는 경우, 현재 노드의 루마 블록만 분할될 수 있으므로, 인코딩 및 디코딩 효율이 향상되고, 코덱의 최대 처리량이 감소되고, 코덱의 구현이 용이하게 된다.
제 2 측면에 따르면, 본 발명의 실시예는 프로세서 및 메모리를 포함하는 비디오 스트림 디코딩 장치에 관한 것이다. 메모리는 명령을 저장하고, 명령은 프로세서가 제 1 측면에 따른 방법을 수행할 수 있게 한다.
제 3 측면에 따르면, 본 발명의 실시예는 프로세서 및 메모리를 포함하는 비디오 스트림 인코딩 장치에 관한 것이다. 메모리는 명령을 저장하고, 명령은 프로세서가 제 1 측면에 따른 방법을 수행할 수 있게 한다.
제 4 측면에 따르면, 컴퓨터 판독 가능 저장 매체가 제안된다. 컴퓨터 판독 가능 저장 매체는 명령을 저장하고, 명령이 실행되면, 하나 이상의 프로세서가 비디오 데이터를 인코딩할 수 있게 된다. 명령은 하나 이상의 프로세서가 제 1 측면의 임의의 가능한 실시예에 따른 방법을 수행할 수 있게 한다.
제 5 측면에 따르면, 본 발명의 실시예는 프로그램 코드를 포함하는 컴퓨터 프로그램에 관한 것이다. 프로그램 코드가 컴퓨터에서 실행되면, 제 1 측면의 임의의 가능한 실시예에 따른 방법이 수행된다.
하나 이상의 실시예의 세부사항은 첨부 도면 및 이하의 설명에서 설명된다. 다른 특징, 목적, 및 이점은 설명, 도면, 및 청구범위로부터 명백해질 것이다.
본 출원의 실시예 또는 배경기술에서의 기술적 해결책을 보다 명확하게 설명하기 위해, 이하에서는 본 출원의 실시예 또는 배경기술을 설명하기 위한 첨부 도면을 설명한다.
도 1a는 본 발명의 실시예를 구현하기 위한 비디오 코딩 시스템의 예의 블록도이다.
도 1b는 도 2의 인코더(20) 및 도 3의 디코더(30) 중 하나 또는 둘을 포함하는 비디오 코딩 시스템의 예의 블록도이다.
도 2는 본 발명의 실시예를 구현하기 위한 비디오 인코더의 예시적인 구조를 나타내는 블록도이다.
도 3은 본 발명의 실시예를 구현하기 위한 비디오 디코더의 예시적인 구조를 나타내는 블록도이다.
도 4는 인코딩 장치 또는 디코딩 장치의 예를 예시하는 블록도이다.
도 5는 다른 인코딩 장치 또는 다른 디코딩 장치의 예를 도시하는 블록도이다.
도 6은 YUV 포맷에서의 샘플 그리드의 예를 나타낸다.
도 7a 내지 도 7e는 5개의 상이한 분할 유형을 나타낸다.
도 8은 쿼드트리 플러스 이진 트리 분할 모드를 나타낸다.
도 9는 본 발명의 실시예 1에 따른 방법의 흐름도이다.
도 10은 본 발명의 실시예 1에서의 스텝 906의 흐름도이다.
도 11은 본 발명의 실시예 3에 따른 방법의 흐름도를 나타낸다.
이하에서는, 동일한 참조 부호는 달리 명시되지 않는 한 동일하거나 적어도 기능적으로 동등한 특징을 표현한다.
도 1a는 본 발명의 실시예를 구현하기 위한 비디오 코딩 시스템의 예의 블록도이다.
도 1b는 도 2의 인코더(20) 및 도 3의 디코더(30) 중 하나 또는 둘을 포함하는 비디오 코딩 시스템의 예의 블록도이다.
도 2는 본 발명의 실시예를 구현하기 위한 비디오 인코더의 예시적인 구조를 나타내는 블록도이다.
도 3은 본 발명의 실시예를 구현하기 위한 비디오 디코더의 예시적인 구조를 나타내는 블록도이다.
도 4는 인코딩 장치 또는 디코딩 장치의 예를 예시하는 블록도이다.
도 5는 다른 인코딩 장치 또는 다른 디코딩 장치의 예를 도시하는 블록도이다.
도 6은 YUV 포맷에서의 샘플 그리드의 예를 나타낸다.
도 7a 내지 도 7e는 5개의 상이한 분할 유형을 나타낸다.
도 8은 쿼드트리 플러스 이진 트리 분할 모드를 나타낸다.
도 9는 본 발명의 실시예 1에 따른 방법의 흐름도이다.
도 10은 본 발명의 실시예 1에서의 스텝 906의 흐름도이다.
도 11은 본 발명의 실시예 3에 따른 방법의 흐름도를 나타낸다.
이하에서는, 동일한 참조 부호는 달리 명시되지 않는 한 동일하거나 적어도 기능적으로 동등한 특징을 표현한다.
비디오 코딩은 일반적으로 비디오 또는 비디오 시퀀스를 형성하는 픽처의 시퀀스의 처리를 지칭한다. "픽처(picture)", "프레임(frame)", 및 "이미지(image)"라는 용어는 비디오 코딩의 분야에서 동의어로서 사용될 수 있다. 본 출원(또는 본 개시)에서 사용되는 비디오 코딩은 비디오 인코딩 또는 비디오 디코딩을 나타낸다. 비디오 코딩은, 예컨대 보다 효율적인 저장 및/또는 송신을 위해, 비디오 픽처를 표현하는 데 필요한 데이터의 양을 줄이기 위해 미처리(raw) 비디오 픽처를 처리함으로써(예컨대, 압축함으로써), 소스 측에서 수행된다. 비디오 디코딩은 목적지 측에서 수행되고, 일반적으로 비디오 픽처를 재구성하기 위한 인코더와 비교할 때의 역 처리를 포함한다. 실시예에서의 비디오 픽처의 "코딩"은 비디오 시퀀스의 "인코딩" 또는 "디코딩"으로서 이해되어야 한다. 인코딩 구성요소와 디코딩 구성요소의 조합은 코덱(encoding and decoding)이라고도 지칭된다.
비디오 시퀀스의 각각의 픽처는 일반적으로 중첩되지 않는 블록의 집합으로 분할되고, 코딩은 일반적으로 블록 레벨에서 수행된다. 다시 말해서, 인코더 측에서, 비디오는 일반적으로, 예컨대, 예측 블록을 생성하기 위해 공간적(인트라 픽처) 예측 및/또는 시간적(인터 픽처) 예측을 사용하고, 잔여 블록을 획득하기 위해 현재 블록(현재 처리되는/처리될 블록)으로부터 예측 블록을 빼고, 잔여 블록을 변환하고, 송신될(압축될) 데이터의 양을 줄이기 위해 변환 영역에서 잔여 블록을 양자화함으로써, 블록(픽처 블록 또는 비디오 블록이라고도 지칭된다) 레벨에서, 처리, 즉 인코딩된다. 디코더 측에서, 표현을 위한 현재 블록을 재구성하기 위해 인코딩된 또는 압축된 블록에 인코더와 비교되는 역 처리가 적용된다. 또한, 인코더 및 디코더가 후속 블록을 처리, 즉, 코딩하기 위해 동일한 예측(예컨대, 인트라 예측 및 인터 예측) 및/또는 재구성을 생성할 수 있도록, 인코더는 디코더 처리 루프를 복제한다.
"블록"이라는 용어는 픽처 또는 프레임의 일부일 수 있다. 본 출원에서 주요 용어는 이하와 같이 정의된다.
현재 블록은 처리되고 있는 블록이다. 예컨대, 인코딩에서, 현재 블록은 현재 인코딩되고 있는 블록이고, 디코딩에서, 현재 블록은 디코딩되고 있는 블록이다. 현재 처리되는 블록이 크로마 성분 블록인 경우, 현재 처리되는 블록은 현재 크로마 블록이라고 지칭된다. 현재 크로마 블록에 대응하는 루마 블록은 현재 루마 블록이라고 지칭될 수 있다.
CTU : 코딩 트리 유닛(coding tree unit)의 약칭이다. 픽처는 복수의 CTU를 포함하고, 하나의 CTU는 일반적으로 하나의 정사각형 픽처 영역에 대응하고, 픽처 영역에서 루마 샘플 및 크로마 샘플을 포함한다(또는 루마 샘플만을 포함할 수 있거나 크로마 샘플만을 포함할 수 있다). CTU는 구문 요소를 더 포함한다. 이러한 구문 요소는 어떻게 CTU를 적어도 하나의 코딩 유닛(coding unit, CU)으로 분할하고 각 코딩 유닛을 디코딩하여 재구성된 픽처를 획득하는지에 대한 방법을 나타낸다.
CU : 코딩 유닛의 약칭이다. CU는 일반적으로 A×B 직사각형 영역에 대응하고 A×B개의 루마 샘플 및 루마 샘플에 대응하는 크로마 샘플을 포함하고, 여기서 A는 직사각형의 폭이고, B는 직사각형의 높이이고, A는 B와 같거나 다를 수 있다. A 및 B의 값은 일반적으로 2의 정수승(integer power of 2), 예컨대, 256, 128, 64, 32, 16, 8, 4이다. 코딩 유닛은 디코딩 처리를 통해 디코딩되어 A×B 직사각형 영역의 재구성된 픽처를 획득할 수 있다. 디코딩 처리는 일반적으로 예측, 역양자화, 및 역변환과 같은 처리를 수행하여 예측된 픽처 및 잔여를 생성하는 것을 포함한다. 예측된 픽처와 잔여를 중첩함으로써 재구성된 픽처가 획득된다.
이하에서는 도 1a 내지 도 3에 기초한 인코더(20), 디코더(30), 및 코딩 시스템(10)의 실시예를 설명한다.
도 1a는 코딩 시스템(10), 예컨대, 본 출원(본 개시)의 기술을 사용할 수 있는 비디오 코딩 시스템(10)의 예를 도시하는 개념적 또는 개략적인 블록도이다. 비디오 코딩 시스템(10)의 인코더(20)(예컨대, 비디오 인코더(20)) 및 디코더(30)(예컨대, 비디오 디코더(30))는 본 출원에 설명된 다양한 예에 따라 인트라 예측을 수행하도록 구성될 수 있는 디바이스의 예를 표현한다. 도 1a에 나타낸 바와 같이, 코딩 시스템(10)은 인코딩된 데이터(13)를 디코딩하기 위해 인코딩된 데이터(13), 예컨대, 인코딩된 픽처(13)를 목적지 디바이스(14)에 제공하도록 구성된 소스 디바이스(12)를 포함한다.
소스 디바이스(12)는 인코더(20)를 포함하고, 추가적으로 또는 선택적으로 픽처 소스(16), 전처리 유닛(18), 예컨대, 픽처 전처리 유닛(18), 및 통신 인터페이스 또는 통신 유닛(22)을 포함할 수 있다.
픽처 소스(16)는, 예컨대, 현실 세계 픽처를 캡처하기 위한 임의의 유형의 픽처 캡처 디바이스, 및/또는 픽처 또는 코멘트(화면 콘텐츠 인코딩을 위한 것, 일부 화면의 텍스트는 인코딩될 픽처 또는 이미지의 일부로서 간주되기도 한다)를 생성하기 위한 임의의 유형의 디바이스, 예컨대, 컴퓨터 애니메이션 픽처를 생성하기 위한 컴퓨터 그래픽 프로세서, 또는 현실 세계 픽처, 컴퓨터 애니메이션 픽처(예컨대, 화면 콘텐츠, 또는 가상 현실(virtual reality, VR) 픽처), 및/또는 이들의 임의의 조합(예컨대, 증강 현실(augmented reality, AR) 픽처)을 획득 및/또는 제공하기 위한 임의의 유형의 다른 디바이스이거나 이들 디바이스를 포함할 수 있다.
픽처는 루마 값을 갖는 샘플의 2차원 배열 또는 매트릭스로서 간주될 수 있다. 배열에서의 샘플은 픽셀(pixel)(화소(picture element)의 약칭) 또는 pel이라고도 지칭될 수 있다. 배열 또는 픽처의 수평 및 수직 방향(또는 축)에 있는 샘플의 양은 픽처의 크기 및/또는 해상도를 정의한다. 색상의 표현을 위해, 일반적으로 세 가지 색 성분이 채용되고, 구체적으로, 픽처는 세 개의 샘플 배열로서 표현되거나 세 개의 샘플 배열을 포함할 수 있다. RBG 포맷 또는 색 공간에서, 픽처는 대응하는 빨간색, 초록색, 및 파란색 샘플 배열을 포함한다. 그러나, 비디오 코딩에서, 각 픽셀은 일반적으로 루마/크로마 포맷으로 또는 색 공간에서 표현된다. 예컨대, YCbCr은 Y(때로는 L이 대신 사용됨)에 의해 나타내어지는 루마 성분과 Cb 및 Cr에 의해 나타내어지는 두 개의 크로마 성분을 포함한다. 휘도(luminance)(줄여서 루마) 성분 Y는 밝기 또는 (예컨대, 그레이 스케일 픽처에서와 같은) 그레이 레벨 강도를 표현하는 반면, 두 색차(chrominance)(줄여서 크로마) 성분 Cb 및 Cr은 색도 또는 색상 정보 성분을 표현한다. 따라서, YCbCr 포맷의 픽처는 루마 샘플 값(Y)의 루마 샘플 배열과 크로마 값(Cb 및 Cr)의 두 개의 크로마 샘플 배열을 포함한다. RGB 포맷의 픽처는 YCbCr 포맷으로 전환 또는 변환될 수 있고, 그 반대의 경우도 가능하고, 그 과정은 색상 변환 또는 전환이라고도 알려져 있다. 픽처가 단색인 경우, 픽처는 루마 샘플 배열만 포함할 수 있다.
픽처 소스(16)(예컨대, 비디오 소스(16))는, 예컨대, 픽처를 캡처하기 위한 카메라, 이전에 캡처되거나 생성된 픽처를 포함하거나 저장하는 픽처 메모리와 같은 메모리, 및/또는 픽처를 획득하거나 수신하기 위한 임의의 종류의 (내부 또는 외부) 인터페이스일 수 있다. 카메라는, 예컨대, 로컬 카메라 또는 소스 디바이스에 통합된 통합 카메라일 수 있고, 메모리는 로컬 메모리 또는, 예컨대, 소스 디바이스에 통합된 통합 메모리일 수 있다. 인터페이스는, 예컨대, 외부 비디오 소스로부터 픽처를 수신하기 위한 외부 인터페이스일 수 있다. 외부 비디오 소스는, 예컨대, 카메라와 같은 외부 픽처 캡처 디바이스, 외부 메모리, 또는 외부 픽처 생성 디바이스이다. 외부 픽처 생성 디바이스는, 예컨대, 외부 컴퓨터 그래픽 프로세서, 컴퓨터, 또는 서버이다. 인터페이스는 임의의 유형의 인터페이스, 예컨대, 임의의 독점적인 또는 표준화된 인터페이스 프로토콜에 따른 유선 또는 무선 인터페이스 또는 광학 인터페이스일 수 있다. 픽처 데이터(17)를 획득하기 위한 인터페이스는 통신 인터페이스(22)와 동일한 인터페이스일 수 있거나, 통신 인터페이스(22)의 일부일 수 있다.
전처리 유닛(18) 및 전처리 유닛(18)에 의해 수행되는 처리와는 달리, 픽처 또는 픽처 데이터(17)(예컨대, 비디오 데이터(16))는 미처리 픽처 또는 미처리 픽처 데이터(17)라고 지칭될 수도 있다.
전처리 유닛(18)은 (미처리) 픽처 데이터(17)를 수신하고, 픽처 데이터(17)를 전처리하여 전처리된 픽처(19) 또는 전처리된 픽처 데이터(19)를 획득하도록 구성된다. 예컨대, 전처리 유닛(18)에 의해 수행되는 전처리는 트리밍, 색상 포맷 전환(예컨대, RGB로부터 YCbCr로의 전환), 색상 조정, 및 노이즈 제거를 포함할 수 있다. 전처리 유닛(18)은 선택적인 구성요소일 수 있음이 이해될 수 있다.
인코더(20)(예컨대, 비디오 인코더(20))는 전처리된 픽처 데이터(19)를 수신하고 인코딩된 픽처 데이터(21)를 제공하도록 구성된다(세부사항은, 예컨대, 도 2 또는 도 4에 기초하여, 아래에서 더 설명된다). 예에서, 인코더(20)는 실시예 1 내지 실시예 3을 구현하도록 구성될 수 있다.
소스 디바이스(12)의 통신 인터페이스(22)는 인코딩된 픽처 데이터(21)를 수신하고, 인코딩된 픽처 데이터(21)를, 저장 또는 직접 재구성을 위해, 다른 디바이스, 예컨대, 목적지 디바이스(14) 또는 임의의 다른 디바이스에 송신하도록 구성될 수 있거나, 인코딩된 데이터(13)를 상응하게 저장하고 또한/또는 인코딩된 데이터(13)를 다른 디바이스에 송신하기 전에 인코딩된 픽처 데이터(21)를 처리하도록 구성될 수 있고, 여기서 다른 디바이스는, 예컨대, 목적지 디바이스(14) 또는 디코딩 또는 저장을 위한 임의의 다른 디바이스이다.
목적지 디바이스(14)는 디코더(30)(예컨대, 비디오 디코더(30))를 포함하고, 추가적으로, 즉 선택적으로, 통신 인터페이스 또는 통신 유닛(28), 후처리 유닛(32), 및 표시 디바이스(34)를 포함할 수 있다.
목적지 디바이스(14)의 통신 인터페이스(28)는, 예컨대, 소스 디바이스(12) 또는 임의의 다른 소스로부터 직접, 인코딩된 픽처 데이터(21) 또는 인코딩된 데이터(13)를 수신하도록 구성된다. 임의의 다른 소스는, 예컨대, 인코딩된 픽처 데이터 저장 디바이스와 같은 저장 디바이스이다.
통신 인터페이스(22) 및 통신 인터페이스(28)는 소스 디바이스(12)와 목적지 디바이스(14) 사이의 직접 통신 링크를 통해 또는 임의의 유형의 네트워크를 통해 인코딩된 픽처 데이터(21) 또는 인코딩된 데이터(13)를 송신 또는 수신하도록 구성될 수 있다. 직접 통신 링크는, 예컨대, 직접 유선 또는 무선 연결이고, 임의의 유형의 네트워크는, 예컨대, 유선 또는 무선 네트워크 또는 이들의 조합, 또는 임의의 유형의 개인 및 공용 네트워크, 또는 이들의 조합이다.
통신 인터페이스(22)는, 예컨대, 통신 링크 또는 통신 네트워크를 통한 송신을 위해, 인코딩된 픽처 데이터(21)를 적절한 포맷, 예컨대, 패킷으로 패키징하도록 구성될 수 있다.
통신 인터페이스(22)의 대응 부분을 형성하는 통신 인터페이스(28)는, 예컨대, 인코딩된 픽처 데이터(21)를 획득하기 위해 인코딩된 데이터(13)를 디패키징하도록 구성될 수 있다.
통신 인터페이스(22)와 통신 인터페이스(28)는 모두, 도 1a에서 소스 디바이스(12)로부터 목적지 디바이스(14)로의 인코딩된 데이터(13)에 대해 화살표에 의해 나타내어진 바와 같이, 단방향 통신 인터페이스로서 구성될 수 있거나, 양방향 통신 인터페이스로서 구성될 수 있고, 예컨대, 연결을 확립하기 위해 메시지를 송신 및 수신하고, 통신 링크 및/또는 인코딩된 픽처 데이터 송신과 같은 데이터 송신과 관련된 임의의 다른 정보를 ACK 및 교환하도록 구성될 수 있다.
디코더(30)는 인코딩된 픽처 데이터(21)를 수신하고 디코딩된 픽처 데이터(31) 또는 디코딩된 픽처(31)를 제공하도록 구성된다(세부사항은, 예컨대, 도 3 또는 도 5에 기초하여, 아래에서 더 설명된다). 예에서, 디코더(30)는 실시예 1 내지 실시예 3을 구현하도록 구성될 수 있다.
목적지 디바이스(14)의 후처리기(post-processor)(32)는 디코딩된 픽처 데이터(31)(재구성된 픽처 데이터라고도 지칭된다), 예컨대, 디코딩된 픽처(131)를 후처리하여, 후처리된 픽처(33)와 같은 후처리된 픽처 데이터(33)를 획득하도록 구성된다. 후처리 유닛(32)에 의해 수행되는 후처리는, 예컨대, 색상 포맷 전환(예컨대, YCbCr로부터 RGB로의 전환), 색상 보정, 트리밍, 또는 리샘플링, 또는, 예컨대, 표시 디바이스(34)에 의해 표시하기 위해 디코딩된 픽처 데이터(31)를 준비하기 위한 임의의 다른 처리를 포함할 수 있다.
목적지 디바이스(14)의 표시 디바이스(34)는 후처리된 픽처 데이터(33)를 수신하여, 사용자, 시청자 등에게 픽처를 표시하도록 구성된다. 표시 디바이스(34)는 재구성된 픽처를 제시하기 위한 임의의 유형의 디스플레이, 예컨대, 통합된 또는 외부 디스플레이 또는 모니터일 수 있거나 이를 포함할 수 있다. 예컨대, 디스플레이는 액정 디스플레이(liquid crystal display, LCD), 유기 발광 다이오드(organic light emitting diode, OLED) 디스플레이, 플라즈마 디스플레이, 프로젝터, 마이크로 LED 디스플레이, 실리콘 위의 액정(liquid crystal on silicon, LCoS), 디지털 광 처리기(digital light processor, DLP), 또는 임의의 유형의 다른 디스플레이를 포함할 수 있다.
도 1a는 소스 디바이스(12) 및 목적지 디바이스(14)를 별개의 디바이스로서 묘사하지만, 디바이스 실시예는 대안적으로 소스 디바이스(12)와 목적지 디바이스(14) 모두 또는 소스 디바이스(12)와 목적지 디바이스(14) 모두의 기능, 즉, 소스 디바이스(12) 또는 대응하는 기능과 목적지 디바이스(14) 또는 대응하는 기능을 포함할 수 있다. 이러한 실시예에서, 소스 디바이스(12) 또는 대응하는 기능과 목적지 디바이스(14) 또는 대응하는 기능은 동일한 하드웨어 및/또는 소프트웨어, 별도의 하드웨어 및/또는 소프트웨어, 또는 이들의 임의의 조합을 사용함으로써 구현될 수 있다.
설명에 기초하여 당업자에게 명백해질 것처럼, 상이한 유닛의 기능 또는 도 1a에 나타낸 소스 디바이스(12) 및/또는 목적지 디바이스(14)의 기능의 (정확한) 분할은 실제 디바이스 및 애플리케이션에 따라 달라질 수 있다.
인코더(20)(예컨대, 비디오 인코더(20)) 및 디코더(30)(예컨대, 비디오 디코더(30))는 다양한 적절한 회로 중 임의의 하나, 예컨대, 하나 이상의 마이크로프로세서, 디지털 신호 처리기(digital signal processor, DSP), ASIC(application-specific integrated circuit), FPGA(field-programmable gate array), 이산 로직, 하드웨어, 또는 이들의 조합으로서 구현될 수 있다. 기술이 소프트웨어를 사용하여 부분적으로 구현되는 경우, 디바이스는 적절한 비 일시적 컴퓨터 판독 가능 저장 매체에 소프트웨어 명령을 저장할 수 있고 하나 이상의 프로세서와 같은 하드웨어를 사용함으로써 명령을 실행하여 본 개시의 기술을 수행할 수 있다. 전술한 내용(하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등을 포함한다) 중 어느 하나는 하나 이상의 프로세서로서 간주될 수 있다. 비디오 인코더(20) 및 비디오 디코더(30)는 각각 하나 이상의 인코더 또는 디코더에 포함될 수 있고, 인코더 또는 디코더는 대응하는 장치에서의 결합된 인코더/디코더(코덱)의 일부에 통합될 수 있다.
소스 디바이스(12)는 비디오 인코딩 디바이스 또는 비디오 인코딩 장치라고 지칭될 수 있다. 목적지 디바이스(14)는 비디오 디코딩 디바이스 또는 비디오 디코딩 장치라고 지칭될 수 있다. 소스 디바이스(12) 및 목적지 디바이스(14)는 비디오 인코딩 디바이스 또는 비디오 인코딩 장치의 예일 수 있다.
소스 디바이스(12) 및 목적지 디바이스(14)는 임의의 유형의 휴대용 또는 고정 디바이스, 예컨대, 노트북 또는 랩톱 컴퓨터, 휴대폰, 스마트폰, 태블릿 또는 태블릿 컴퓨터, 카메라, 데스크톱 컴퓨터, 셋톱박스, 텔레비전, 표시 디바이스, 디지털 미디어 플레이어, 비디오 게임 콘솔, (콘텐츠 서비스 서버 또는 콘텐츠 전달 서버와 같은) 비디오 스트리밍 디바이스, 방송 수신 디바이스, 또는 방송 송신 디바이스를 포함하는 광범위한 디바이스 중 임의의 것을 포함할 수 있고, 임의의 유형의 운영 체제를 사용하거나 사용하지 않을 수 있다.
일부 경우에, 소스 디바이스(12) 및 목적지 디바이스(14)는 무선 통신을 위해 장착될 수 있다. 따라서, 소스 디바이스(12) 및 목적지 디바이스(14)는 무선 통신 디바이스일 수 있다.
일부 경우에, 도 1a에 나타낸 비디오 코딩 시스템(10)은 단지 예일 뿐이고, 본 출원의 기술은 인코딩 디바이스와 디코딩 디바이스 사이의 임의의 데이터 통신을 반드시 포함하지는 않는 비디오 코딩 설정(예컨대, 비디오 인코딩 또는 비디오 디코딩)에 적용 가능하다. 다른 예에서, 데이터는 로컬 메모리로부터 회수되거나, 네트워크를 통해 스트리밍되거나 할 수 있다. 비디오 인코딩 디바이스는 데이터를 인코딩하고 데이터를 메모리에 저장할 수 있고, 또한/또는 비디오 디코딩 디바이스는 메모리로부터 데이터를 회수하고 데이터를 디코딩할 수 있다. 일부 예에서, 인코딩 및 디코딩은 서로 통신하지 않고 단순히 데이터를 메모리에 인코딩하고 또한/또는 메모리로부터 데이터를 회수하고 데이터를 디코딩하는 디바이스에 의해 수행된다.
비디오 인코더(20)를 참조하여 설명된 전술한 예의 각각에 대해, 비디오 디코더(30)는 역 처리를 수행하도록 구성될 수 있음이 이해되어야 한다. 시그널링 구문 요소와 관련하여, 비디오 디코더(30)는 이들 구문 요소를 수신 및 파싱하고 그에 따라 관련 비디오 데이터를 디코딩하도록 구성될 수 있다. 일부 예에서, 비디오 인코더(20)는 구문 요소를 인코딩된 비디오 비트스트림으로 엔트로피 인코딩할 수 있다. 이러한 예에서, 비디오 디코더(30)는 이들 구문 요소를 파싱하고 그에 따라 연관된 비디오 데이터를 디코딩할 수 있다.
도 1b는 예시적인 실시예에 따른 도 2의 인코더(20) 및/또는 도 3의 디코더(30)를 포함하는 비디오 코딩 시스템(40)의 예의 예시적인 도면이다. 시스템(40)은 본 출원의 다양한 기술의 조합을 구현할 수 있다. 도시된 구현에서, 비디오 코딩 시스템(40)은 이미징 디바이스(41), 비디오 인코더(20), 비디오 디코더(30)(및/또는 처리 유닛(46)의 로직 회로(47)에 의해 구현된 비디오 인코더/디코더), 안테나(42), 하나 이상의 프로세서(43), 하나 이상의 메모리(44), 및/또는 표시 디바이스(45)를 포함할 수 있다.
도면에 나타낸 바와 같이, 이미징 디바이스(41), 안테나(42), 처리 유닛(46), 로직 회로(47), 비디오 인코더(20), 비디오 디코더(30), 프로세서(43), 메모리(44), 및/또는 표시 디바이스(45)는 서로 통신할 수 있다. 설명된 바와 같이, 비디오 코딩 시스템(40)은 비디오 인코더(20) 및 비디오 디코더(30)를 사용함으로써 예시되었지만, 다른 상이한 예에서, 비디오 코딩 시스템(40)은 비디오 인코더(20)만을 포함하거나 비디오 디코더(30)만을 포함할 수 있다.
일부 예에서, 도면에 나타낸 바와 같이, 비디오 코딩 시스템(40)은 안테나(42)를 포함할 수 있다. 예컨대, 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 송신 또는 수신하도록 구성될 수 있다. 또한, 일부 예에서, 비디오 코딩 시스템(40)은 표시 디바이스(45)를 포함할 수 있다. 표시 디바이스(45)는 비디오 데이터를 제시하도록 구성될 수 있다. 일부 예에서, 도면에 나타낸 바와 같이, 로직 회로(47)는 처리 유닛(46)에 의해 구현될 수 있다. 처리 유닛(46)은 ASIC(application-specific integrated circuit) 로직, 그래픽 프로세서, 범용 프로세서 등을 포함할 수 있다. 비디오 코딩 시스템(40)은 선택적 프로세서(43)를 포함할 수도 있다. 선택적 프로세서(43)는 유사하게 ASIC(application-specific integrated circuit) 로직, 그래픽 프로세서, 범용 프로세서 등을 포함할 수 있다. 일부 예에서, 로직 회로(47)는 하드웨어, 예컨대, 비디오 코딩 전용 하드웨어에 의해 구현될 수 있고, 프로세서(43)는 범용 소프트웨어, 운영 체제 등에 의해 구현될 수 있다. 또한, 메모리(44)는 임의의 유형의 메모리, 예컨대, 휘발성 메모리(예컨대, SRAM(Static Random Access Memory) 또는 DRAM(Dynamic Random Access Memory)), 또는 비 휘발성 메모리(예컨대, 플래시 메모리)일 수 있다. 비 제한적인 예에서, 메모리(44)는 캐시 메모리에 의해 구현될 수 있다. 일부 예에서, 로직 회로(47)는 (예컨대, 픽처 버퍼의 구현을 위한) 메모리(44)에 액세스할 수 있다. 다른 예에서, 로직 회로(47) 및/또는 처리 유닛(46)은 픽처 버퍼 등의 구현을 위한 메모리(예컨대, 캐시)를 포함할 수 있다.
일부 예에서, 로직 회로에 의해 구현되는 비디오 인코더(20)는 픽처 버퍼(예컨대, 처리 유닛(46) 또는 메모리(44)에 의해 구현된다) 및 그래픽 처리 유닛(예컨대, 처리 유닛(46)에 의해 구현된다)을 포함할 수 있다. 그래픽 처리 유닛은 픽처 버퍼에 통신 가능하게 연결될 수 있다. 그래픽 처리 유닛은 로직 회로(47)에 의해 구현된 비디오 인코더(20)를 포함하여, 도 2를 참조하여 설명되는 다양한 모듈 및/또는 본 명세서에 설명된 임의의 다른 인코더 시스템 또는 서브시스템을 구현할 수 있다. 로직 회로는 본 명세서에 설명된 다양한 동작을 수행하도록 구성될 수 있다.
비디오 디코더(30)는 로직 회로(47)에 의해 구현되는 것과 유사한 방식으로 구현되어 도 3의 디코더(30)에 대해 논의된 바와 같은 다양한 모듈 및/또는 본 명세서에 설명된 임의의 다른 디코더 시스템 또는 서브시스템을 구현할 수 있다. 일부 예에서, 로직 회로에 의해 구현되는 비디오 디코더(30)는 픽처 버퍼(예컨대, 처리 유닛(2820) 또는 메모리(44)에 의해 구현된다) 및 그래픽 처리 유닛(예컨대, 처리 유닛(46)에 의해 구현된다)을 포함할 수 있다. 그래픽 처리 유닛은 픽처 버퍼에 통신 가능하게 연결될 수 있다. 그래픽 처리 유닛은 로직 회로(47)에 의해 구현된 비디오 디코더(30)를 포함하여, 도 3을 참조하여 설명되는 다양한 모듈 및/또는 본 명세서에 설명된 임의의 다른 디코더 시스템 또는 서브시스템을 구현할 수 있다.
일부 예에서, 비디오 코딩 시스템(40)의 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 수신하도록 구성될 수 있다. 설명된 바와 같이, 인코딩된 비트스트림은 비디오 프레임 인코딩과 관련되고 본 명세서에서 설명되는 데이터, 표시자, 인덱스 값, 모드 선택 데이터 등, 예컨대, 코딩 분할과 관련된 데이터(예컨대, 변환 계수 또는 양자화된 변환 계수, (설명된) 선택적 표시자, 및/또는 코딩 분할을 정의하는 데이터)를 포함할 수 있다. 비디오 코딩 시스템(40)은 안테나(42)에 연결되고 인코딩된 비트스트림을 디코딩하도록 구성되는 비디오 디코더(30)를 더 포함할 수 있다. 표시 디바이스(45)는 비디오 프레임을 제시하도록 구성된다.
인코더 및 인코딩 방법
도 2는 본 출원에서 (개시된) 기술을 구현하도록 구성된 비디오 인코더(20)의 예의 개략적/개념적 블록도이다. 도 2의 예에서, 비디오 인코더(20)는 잔여 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 역양자화 유닛(210), 역변환 처리 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터 유닛(220), 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230), 예측 처리 유닛(260), 및 엔트로피 인코딩 유닛(270)을 포함한다. 예측 처리 유닛(260)은 인터 예측 유닛(244), 인트라 예측 유닛(254), 및 모드 선택 유닛(262)을 포함할 수 있다. 인터 예측 유닛(244)은 움직임 추정 유닛 및 움직임 보상 유닛(도면에 나타내지 않음)을 포함할 수 있다. 도 2에 나타낸 비디오 인코더(20)는 하이브리드 비디오 인코더 또는 하이브리드 비디오 코덱에 기초한 비디오 인코더라고 지칭될 수도 있다.
예컨대, 잔여 계산 유닛(204), 변환 처리 유닛(206), 양자화 유닛(208), 예측 처리 유닛(260), 및 엔트로피 인코딩 유닛(270)은 인코더(20)의 순방향 신호 경로를 형성하는 반면, 예컨대, 역양자화 유닛(210), 역변환 처리 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터(220), 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230), 및 예측 처리 유닛(260)은 인코더의 역방향 신호 경로를 형성하고, 여기서 비디오 인코더의 역방향 신호 경로는 디코더(도 3의 디코더(30)를 참조하라)의 신호 경로에 대응한다.
인코더(20)는, 예컨대, 입력(202)을 통해, 픽처(201) 또는 픽처(201)의 블록(203), 예컨대, 비디오 또는 비디오 시퀀스를 형성하는 픽처의 시퀀스에서의 픽처를 수신한다. 픽처 블록(203)은 현재 픽처 블록 또는 인코딩될 픽처 블록이라고 지칭될 수도 있고, 픽처(201)는 (특히 비디오 코딩에서, 현재 픽처를 다른 픽처, 예컨대, 동일한 비디오 시퀀스, 즉, 현재 픽처도 포함하는 비디오 시퀀스에서의 이전에 인코딩된 또한/또는 디코딩된 픽처로부터 구별하기 위해) 현재 픽처 또는 인코딩될 픽처라고 지칭될 수 있다.
분할
실시예에서, 인코더(20)는 픽처(201)를 블록(203)과 같은 복수의 블록으로 분할하도록 구성된 분할 유닛(도 2에 묘사되지 않음)을 포함할 수 있다. 픽처(201)는 일반적으로 복수의 중첩되지 않는 블록으로 분할된다. 분할 유닛은 비디오 시퀀스의 모든 픽처에 대한 동일한 블록 크기 및 블록 크기를 정의하는 대응하는 그리드를 사용하거나, 픽처 또는 픽처의 부분집합 또는 그룹 사이의 블록 크기를 변경하고 각 픽처를 대응하는 블록으로 분할하도록 구성될 수 있다.
예에서, 비디오 인코더(20)의 예측 처리 유닛(260)은 전술한 분할 기술의 임의의 조합을 수행하도록 구성될 수 있다.
픽처(201)와 같이, 블록(203)은 루마 값(샘플 값)을 갖는 샘플의 2차원 배열 또는 매트릭스이거나 이로 간주될 수 있지만, 블록(203)의 크기는 픽처(201)의 크기보다 작다. 다시 말해서, 블록(203)은, 예컨대, 하나의 샘플 배열(예컨대, 단색 픽처(201)의 경우에 루마 배열), 3개의 샘플 배열(예컨대, 컬러 픽처의 경우에 하나의 루마 배열 및 두 개의 크로마 배열), 또는 적용된 색상 포맷에 따라 임의의 다른 수량 및/또는 유형의 배열을 포함할 수 있다. 블록(203)의 수평 및 수직 방향(또는 축)에서의 샘플의 수는 블록(203)의 크기를 정의한다.
도 2에 나타낸 인코더(20)는 블록 단위로 픽처(201)를 인코딩하도록, 예컨대, 각각의 블록(203)을 인코딩 및 예측하도록 구성된다.
잔여 계산
잔여 계산 유닛(204)은, 예컨대, 샘플 영역에서 잔여 블록(205)을 획득하기 위해 샘플 단위로(픽셀 단위로) 픽처 블록(203)의 샘플 값으로부터 예측 블록(265)의 샘플 값을 감산함으로써, 픽처 블록(203) 및 예측 블록(265)(예측 블록(265)에 관한 세부사항은 아래에 더 제공된다)에 기초하여 잔여 블록(205)을 계산하도록 구성된다.
변환
변환 처리 유닛(206)은, 잔여 블록(205)의 값을 샘플링하여 변환 영역에서 변환 계수(207)를 획득하기 위해, 변환, 예컨대, 이산 코사인 변환(discrete cosine transform, DCT) 또는 이산 사인 변환(discrete sine transform, DST)을 적용하도록 구성된다. 변환 계수(207)는 변환 잔여 계수라고 지칭될 수도 있고 변환 영역에서 잔여 블록(205)을 표현할 수 있다.
변환 처리 유닛(206)은 HEVC/H.265에 규정된 변환과 같은 DCT/DST의 정수 근사를 적용하도록 구성될 수 있다. 직교 DCT 변환과 비교할 때, 이러한 정수 근사는 일반적으로 특정한 인자(specific factor)에 의해 스케일링된다. 순변환 및 역변환을 사용함으로써 처리되는 잔여 블록의 놈(norm)을 보존하기 위해, 변환 처리의 일부로서 추가 스케일링 인자가 적용된다. 스케일링 인자는 일반적으로 몇 가지 제약에 기초하여 선택된다. 예컨대, 스케일링 인자는 시프트 연산에 대한 2의 거듭제곱, 변환 계수의 비트 심도, 및 정확도와 구현 비용 사이의 트레이드오프이다. 예컨대, 특정한 스케일링 인자가, 예컨대, 디코더(30) 측에 있는 역변환 처리 유닛(212)에 의한 역변환(및 예컨대, 인코더(20) 측에 있는 역변환 처리 유닛(212)에 의한 대응하는 역변환)에 대해 규정되고, 그에 따라, 대응하는 스케일 인자가 인코더(20) 측에 있는 변환 처리 유닛(206)에 의한 순변환에 대해 규정될 수 있다.
양자화
양자화 유닛(208)은, 예컨대, 스칼라 양자화 또는 벡터 양자화를 적용함으로써, 양자화된 변환 계수(209)를 획득하기 위해 변환 계수(207)를 양자화하도록 구성된다. 양자화된 변환 계수(209)는 양자화된 잔여 계수(209)라고 지칭될 수도 있다. 양자화 처리는 변환 계수(207)의 일부 또는 전부와 관련된 비트 심도를 줄일 수 있다. 예컨대, n비트 변환 계수는 양자화 중에 m비트 변환 계수로 버림(round down) 될 수 있고, 여기서 n은 m보다 크다. 양자화 파라미터(quantization parameter, QP)를 조정함으로써 양자화 정도가 변경될 수 있다. 예컨대, 스칼라 양자화의 경우, 더 미세하거나 거친 양자화를 달성하기 위해 상이한 스케일링이 적용될 수 있다. 더 작은 양자화 스텝 크기는 더 미세한 양자화에 대응하고, 더 큰 양자화 스텝 크기는 더 거친 양자화에 대응한다. 적절한 양자화 스텝 크기는 양자화 파라미터(quantization parameter, QP)에 의해 나타내어질 수 있다. 예컨대, 양자화 파라미터는 적절한 양자화 스텝 크기의 미리 정의된 집합에 대한 인덱스일 수 있다. 예컨대, 더 작은 양자화 파라미터는 더 미세한 양자화(더 작은 양자화 스텝 크기)에 대응할 수 있고, 더 큰 양자화 파라미터는 더 거친 양자화(더 큰 양자화 스텝 크기)에 대응할 수 있고, 그 반대의 경우도 가능하다. 양자화는 양자화 스텝 크기에 의한 분할 및 대응하는 양자화 또는, 예컨대, 역양자화 유닛(210)에 의해 수행되는 역양자화를 포함할 수 있고, 양자화 스텝 크기에 의한 곱셈을 포함할 수 있다. HEVC와 같은 일부 표준에 따른 실시예는 양자화 스텝 크기를 결정하기 위해 양자화 파라미터를 사용할 수 있다. 일반적으로, 양자화 스텝 크기는 나눗셈을 포함하는 방정식의 부동점 근사(fixed point approximation)를 사용함으로써 양자화 파라미터에 기초하여 계산될 수 있다. 잔여 블록의 놈을 복원하기 위해 양자화 및 역양자화에 추가 스케일링 인자가 도입될 수 있고, 이는 양자화 스텝 크기 및 양자화 파라미터에 대한 방정식의 부동점 근사에 사용되는 스케일링 때문에 수정될 수 있다. 하나의 예시적인 구현에서, 역변환 및 역양자화의 스케일링이 결합될 수 있다. 대안적으로, 맞춤형 양자화 테이블이 사용되어, 예컨대, 비트스트림으로 인코더로부터 디코더로 시그널링될 수 있다. 양자화는 손실이 있는 연산이고, 양자화 스텝 크기가 증가함에 따라 손실이 증가한다.
역양자화 유닛(210)은 역양자화된 계수(211)를 획득하기 위해 양자화된 계수에 양자화 유닛(208)의 역양자화를 적용하도록, 예컨대, 양자화 유닛(208)과 동일한 양자화 스텝 크기에 기초하여 또는 이를 사용함으로써, 양자화 유닛(208)에 의해 적용된 양자화 방식의 역을 적용하도록 구성된다. 역양자화된 계수(211)는 역양자화된 잔여 계수(211)라고 지칭될 수도 있고, 일반적으로 양자화에 의해 초래되는 손실로 인해 변환 계수와 동일하지는 않지만 변환 계수(207)에 대응한다.
역변환 처리 유닛(212)은 변환 처리 유닛(206)에 의해 적용된 변환의 역변환, 예컨대, 역 이산 코사인 변환(discrete cosine transform, DCT) 또는 역 이산 사인 변환(discrete sine transform, DST)을 적용하여 샘플 영역에서 역변환 블록(213)을 획득하도록 구성된다. 역변환 블록(213)은 역변환 역양자화된 블록(213) 또는 역변환 잔여 블록(213)이라고 지칭될 수도 있다.
재구성 유닛(214)(예컨대, 가산기(214))은, 예컨대, 재구성된 잔여 블록(213)의 샘플 값과 예측 블록(265)의 샘플 값을 가산함으로써, 역변환 블록(213)(즉, 재구성된 잔여 블록(213))을 예측 블록(265)에 추가하여, 샘플 영역에서 재구성된 블록(215)을 획득하도록 구성된다.
선택적으로, 예컨대, 라인 버퍼(216)의 버퍼 유닛(216)(또는 줄여서 "버퍼"(216))은, 예컨대, 인트라 예측을 위해, 재구성된 블록(215) 및 대응하는 샘플 값을 버퍼링하거나 저장하도록 구성된다. 다른 실시예에서, 인코더는 임의의 유형의 추정 및/또는 예측, 예컨대, 인트라 예측을 위해 버퍼 유닛(216)에 저장된 필터링되지 않은 재구성된 블록 및/또는 대응하는 샘플 값을 사용하도록 구성될 수 있다.
예컨대, 실시예에서, 인코더(20)는 버퍼 유닛(216)이 인트라 예측(254)을 위한 재구성된 블록(215)을 저장하는 데 사용될 뿐만 아니라 루프 필터 유닛(220)(도 2에 나타내지 않음)에도 사용되도록, 또한/또는, 예컨대, 버퍼 유닛(216) 및 디코딩된 픽처 버퍼 유닛(230)이 하나의 버퍼를 형성하도록 구성될 수 있다. 다른 실시예에서, 필터링된 블록(221) 및/또는 디코딩된 픽처 버퍼(230)로부터의 블록 또는 샘플(블록 또는 샘플은 도 2에 나타내어지지 않음)은 인트라 예측(254)을 위한 입력 또는 기초로서 사용된다.
루프 필터 유닛(220)(또는 줄여서 "루프 필터"(220))은 재구성된 블록(215)을 필터링하여 필터링된 블록(221)을 획득하여, 픽셀 전환을 평활화하거나 비디오 품질을 향상시키도록 구성된다. 루프 필터 유닛(220)은 디블로킹 필터, 샘플 적응 오프셋(sample-adaptive offset, SAO) 필터, 또는 양방향 필터, 적응 루프 필터(adaptive loop filter, ALF), 샤프닝 또는 스무딩 필터, 또는 협업 필터와 같은 다른 필터와 같은 하나 이상의 루프 필터를 표현하도록 의도된다. 루프 필터 유닛(220)은 도 2에서 인 루프 필터(in-loop filter)로서 나타내어졌지만, 다른 구성에서, 루프 필터 유닛(220)은 포스트 루프 필터로서 구현될 수 있다. 필터링된 블록(221)은 필터링된 재구성된 블록(221)이라고 지칭될 수도 있다. 디코딩된 픽처 버퍼(230)는 루프 필터 유닛(220)이 재구성된 인코딩된 블록에 필터링 동작을 수행한 후에 재구성된 인코딩된 블록을 저장할 수 있다.
실시예에서, 인코더(20)(상응하게, 루프 필터 유닛(220))는, 예컨대, 직접 또는 엔트로피 인코딩 유닛(270) 또는 임의의 다른 엔트로피 인코딩 유닛에 의해 수행된 엔트로피 인코딩 후에 (샘플 적응 오프셋 정보와 같은) 루프 필터 파라미터를 출력하도록 구성될 수 있어서, 예컨대, 디코더(30)는 동일한 루프 필터 파라미터를 수신하고 디코딩을 위해 동일한 루프 필터 파라미터를 적용할 수 있다.
디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230)는 비디오 인코더(20)에 의한 비디오 데이터 인코딩에 사용하기 위한 참조 픽처 데이터를 저장하는 참조 픽처 메모리일 수 있다. DPB(230)는 DRAM(dynamic random access memory)(SDRAM(synchronous DRAM), MRAM(magnetoresistive RAM), RRAM(resistive RAM)을 포함한다), 또는 다른 유형의 메모리 디바이스와 같은 다양한 메모리 디바이스 중 어느 하나에 의해 형성될 수 있다. DPB(230) 및 버퍼(216)는 동일한 메모리 디바이스 또는 별도의 메모리 디바이스에 의해 제공될 수 있다. 예에서, 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230)는 필터링된 블록(221)을 저장하도록 구성된다. 디코딩된 픽처 버퍼(230)는 다른 이전에 필터링된 블록, 예컨대, 동일한 현재 픽처 또는 상이한 픽처, 예컨대, 이전에 재구성된 픽처의 이전에 재구성되고 필터링된 블록(221)을 저장하도록 더 구성될 수 있고, 예컨대, 인터 예측을 위해, 완전한 이전에 재구성된, 즉, 디코딩된 픽처(및 대응하는 참조 블록 및 샘플) 및/또는 부분적으로 재구성된 현재 픽처(및 대응하는 참조 블록 및 샘플)를 제공할 수 있다. 예에서, 재구성된 블록(215)이 인 루프 필터링 없이 재구성되는 경우, 디코딩된 픽처 버퍼(decoded picture buffer, DPB)(230)는 재구성된 블록(215)을 저장하도록 구성된다.
블록 예측 처리 유닛(260)이라고도 지칭되는 예측 처리 유닛(260)은 픽처 블록(203)(현재 픽처(201)의 현재 블록(203)) 및 재구성된 픽처 데이터, 예컨대, 버퍼(216)로부터의 동일한 (현재) 픽처의 참조 샘플 및/또는 디코딩된 픽처 버퍼(230)로부터의 하나 이상의 이전에 디코딩된 픽처의 참조 픽처 데이터(231)를 수신하거나 획득하고, 예측을 위해 이러한 데이터를 처리하도록, 구체적으로, 인터 예측 블록(245) 또는 인트라 예측 블록(255)일 수 있는 예측 블록(265)을 제공하도록 구성된다.
모드 선택 유닛(262)은, 잔여 블록(205)의 계산 및 재구성된 블록(215)의 재구성을 위해, 예측 모드(예컨대, 인트라 또는 인터 예측 모드) 및/또는 예측 블록(265)으로서 사용될 대응하는 예측 블록(245 또는 255)을 선택하도록 구성될 수 있다.
실시예에서, 모드 선택 유닛(262)은 (예컨대, 예측 처리 유닛(260)에 의해 지원되는 예측 모드로부터) 예측 모드를 선택하도록 구성될 수 있다. 예측 모드는 최고의 일치(best match) 또는 다시 말해서 최소 잔여(최소 잔여는 송신 또는 저장을 위한 더 나은 압축을 의미한다)를 제공하거나, 최소 시그널링 오버헤드(최소 시그널링 오버헤드는 송신 또는 저장을 위한 더 나은 압축을 의미한다)를 제공하거나, 고려하거나 균형을 유지한다. 모드 선택 유닛(262)은 레이트 왜곡 최적화(rate distortion optimization, RDO)에 기초하여 예측 모드를 결정하도록, 즉, 최소 레이트 왜곡 최적화를 제공하는 예측 모드를 선택하거나 관련된 레이트 왜곡이 적어도 예측 모드 선택 기준을 만족하는 예측 모드를 선택하도록 구성될 수 있다.
이하에서는, 인코더(20)의 예에 의해 (예컨대, 예측 처리 유닛(260)을 사용함으로써) 수행되는 예측 처리 및 인코더(20)의 예에 의해 (예컨대, 모드 선택 유닛(262)을 사용함으로써) 수행되는 모드 선택이 보다 상세하게 설명된다.
위에서 설명된 바와 같이, 인코더(20)는 (미리 결정된) 예측 모드의 집합으로부터 최고 예측 모드 또는 최적 예측 모드를 결정 또는 선택하도록 구성된다. 예측 모드의 집합은, 예컨대, 인트라 예측 모드 및/또는 인터 예측 모드를 포함할 수 있다.
인트라 예측 모드 집합은 35개의 상이한 인트라 예측 모드를 포함할 수 있거나, 67개의 상이한 인트라 예측 모드를 포함할 수 있거나, 개발 중인 H.266에서 정의되는 인트라 예측 모드를 포함할 수 있다.
인터 예측 모드의 집합은, 예컨대, 가장 일치하는 참조 블록을 검색하기 위해, 전체 참조 픽처가 사용되는지 또는 참조 픽처의 일부만, 예컨대, 현재 블록의 영역 주변의 검색 창 영역만 사용되는지 여부에 따라, 또한/또는, 예컨대, 1/2 픽셀 및/또는 1/4 픽셀 보간과 같은 픽셀 보간이 적용되는지 여부에 따라, 이용 가능한 참조 픽처(즉, DBP(230)에 저장된 디코딩된 픽처의 적어도 일부) 및 다른 인터 예측 파라미터에 의존한다.
상기 예측 모드 외에, 스킵 모드 및/또는 다이렉트 모드가 적용될 수 있다.
예측 처리 유닛(260)은, 예컨대, 쿼드트리(quad-tree, QT) 분할, 이진 트리(binary-tree, BT) 분할, 삼진(ternary) 트리(triple-tree, TT) 분할, 또는 이들의 임의의 조합을 반복적으로 사용함으로써, 블록(203)을 더 작은 블록 분할 또는 서브블록으로 분할하도록, 그리고, 예컨대, 블록 분할 또는 서브블록의 각각에 대한 예측을 수행하도록 더 구성될 수 있다. 모드 선택은 분할된 블록(203)의 트리 구조의 선택 및 블록 분할 또는 서브블록의 각각에 적용되는 예측 모드의 선택을 포함한다.
인터 예측 유닛(244)은 움직임 추정(motion estimation, ME) 유닛(도 2에 나타내지 않음) 및 움직임 보상(motion compensation, MC) 유닛(도 2에 나타내지 않음)을 포함할 수 있다. 움직임 추정 유닛은, 움직임 추정을 위해, 픽처 블록(203)(현재 픽처(201)의 현재 픽처 블록(203)) 및 디코딩된 픽처(231), 또는 적어도 하나 이상의 이전에 재구성된 블록, 예컨대, 다른/상이한 이전에 디코딩된 픽처(231)의 하나 이상의 재구성된 블록을 수신하거나 획득하도록 구성된다. 예컨대, 비디오 시퀀스는 현재 픽처 및 이전에 디코딩된 픽처(31)를 포함할 수 있다. 다시 말해서, 현재 픽처 및 이전에 디코딩된 픽처(31)는 비디오 시퀀스를 형성하는 픽처의 시퀀스의 일부이거나 비디오 시퀀스를 형성하는 픽처의 시퀀스를 형성할 수 있다.
예컨대, 인코더(20)는 복수의 다른 픽처의 동일한 픽처 또는 상이한 픽처의 복수의 참조 블록으로부터 참조 블록을 선택하고 참조 픽처 및/또는 인터 예측 파라미터로서의 참조 블록의 위치(좌표 X 및 Y)와 현재 블록의 위치 사이의 오프셋(공간적 오프셋)을 움직임 추정 유닛(도 2에 나타내지 않음)에 제공하도록 구성될 수 있다. 이 오프셋은 움직임 벡터(motion vector, MV)라고도 지칭된다.
움직임 보상 유닛은 인터 예측 파라미터를 획득, 예컨대, 수신하고 인터 예측 파라미터에 기초하여 또는 인터 예측 파라미터를 사용함으로써 인터 예측을 수행하여 인터 예측 블록(245)을 획득하도록 구성된다. 움직임 보상 유닛(도 2에 나타내지 않음)에 의해 수행되는 움직임 보상은 (경우에 따라 서브픽셀 정밀도로 보간을 수행함으로써) 움직임 추정을 통해 결정된 움직임/블록 벡터에 기초하여 예측 블록을 가져오거나 생성하는 것을 포함할 수 있다. 보간 필터링은 알려진 픽셀 샘플로부터 추가 픽셀 샘플을 생성할 수 있고, 이에 따라 픽처 블록을 코딩하는 데 사용될 수 있는 후보 예측 블록의 양을 잠재적으로 증가시킨다. 현재 픽처 블록의 PU에 대한 움직임 벡터를 수신하면, 움직임 보상 유닛(246)은 참조 픽처 목록 중 하나에서 움직임 벡터가 가리키는 예측 블록을 찾을 수 있다. 움직임 보상 유닛(246)은 비디오 조각의 픽처 블록을 디코딩함에 있어서 비디오 디코더(30)에 의한 사용을 위해 블록 및 비디오 조각과 연관된 구문 요소를 생성할 수도 있다.
인트라 예측 유닛(254)은 인트라 추정을 위해 픽처 블록(203)(현재 픽처 블록) 및 동일한 픽처의 하나 이상의 이전에 재구성된 블록, 예컨대, 재구성된 이웃 블록을 획득, 예컨대, 수신하도록 구성된다. 인코더(20)는, 예컨대, 복수의 (미리 결정된) 인트라 예측 모드로부터 인트라 예측 모드를 선택하도록 구성될 수 있다.
실시예에서, 인코더(20)는 최적화 기준에 기초하여, 예컨대, 최소 잔여(예컨대, 현재 픽처 블록(203)과 가장 유사한 예측 블록(255)을 제공하는 인트라 예측 모드) 또는 최소 레이트 왜곡에 기초하여 인트라 예측 모드를 선택하도록 구성될 수 있다.
인트라 예측 유닛(254)은, 예컨대, 선택된 인트라 예측 모드에서의 인트라 예측 파라미터에 기초하여 인트라 예측 블록(255)을 결정하도록 더 구성된다. 어떤 경우에도, 블록의 인트라 예측 모드를 선택한 후, 인트라 예측 유닛(254)은 인트라 예측 파라미터, 즉, 블록의 선택된 인트라 예측 모드를 나타내는 정보를 엔트로피 인코딩 유닛(270)에 제공하도록 더 구성된다. 예에서, 인트라 예측 유닛(254)은 아래에 설명되는 인트라 예측 기술의 임의의 조합을 수행하도록 구성될 수 있다.
엔트로피 인코딩 유닛(270)은, 예컨대, 인코딩된 비트스트림(21)의 형태로 출력(272)을 통해 출력될 수 있는 인코딩된 픽처 데이터(21)를 획득하기 위해, 엔트로피 인코딩 알고리즘 또는 방식(예컨대, 가변 길이 코딩(variable length coding, VLC) 방식, 상황 적응 VLC(context adaptive VLC, CAVLC) 방식, 산술 코딩 방식, 상황 적응 이진 산술 코딩(context adaptive binary arithmetic coding, CABAC), 구문 기반 상황 적응 이진 산술 코딩(syntax-based context-adaptive binary arithmetic coding, SBAC), 확률 간격 분할 엔트로피(probability interval partitioning entropy, PIPE) 코딩, 또는 다른 엔트로피 인코딩 방법론 또는 기술)을 양자화된 잔여 계수(209), 인터 예측 파라미터, 인트라 예측 파라미터, 및/또는 루프 필터 파라미터 중 하나 또는 모두에 적용하도록(또는 적용하지 않도록) 구성된다. 인코딩된 비트스트림은 비디오 디코더(30)에 송신되거나, 비디오 디코더(30)에 의한 이후의 송신 또는 회수를 위해 보관될 수 있다. 엔트로피 인코딩 유닛(270)은 인코딩되고 있는 현재 비디오 조각에 대한 다른 구문 요소를 엔트로피 인코딩하도록 더 구성될 수 있다.
비디오 인코더(20)의 다른 구조적 변형이 비디오 스트림을 인코딩하기 위해 사용될 수 있다. 예컨대, 비 변환 기반 인코더(20)는 일부 블록 또는 프레임에 대해 변환 처리 유닛(206) 없이 직접 잔여 신호를 양자화할 수 있다. 다른 구현에서, 인코더(20)는 단일 유닛으로 결합된 양자화 유닛(208) 및 역양자화 유닛(210)을 가질 수 있다.
도 3은 본 출원의 기술을 구현하도록 구성된 비디오 디코더(30)의 예를 나타낸다. 비디오 디코더(30)는, 예컨대, 인코더(20)에 의해 인코딩된 인코딩된 픽처 데이터(예컨대, 인코딩된 비트스트림)(21)를 수신하여 디코딩된 픽처(231)를 획득하도록 구성된다. 디코딩 처리에서, 비디오 디코더(30)는 비디오 인코더(20)로부터 비디오 데이터, 예컨대, 인코딩된 비디오 조각의 픽처 블록 및 관련된 구문 요소를 표현하는 인코딩된 비디오 비트스트림을 수신한다.
도 3의 예에서, 디코더(30)는 엔트로피 디코딩 유닛(304), 역양자화 유닛(310), 역변환 처리 유닛(312), 재구성 유닛(314)(예컨대, 가산기(314)), 버퍼(316), 루프 필터(320), 디코딩된 픽처 버퍼(330), 및 예측 처리 유닛(360)을 포함한다. 예측 처리 유닛(360)은 인터 예측 유닛(344), 인트라 예측 유닛(354), 및 모드 선택 유닛(362)을 포함할 수 있다. 일부 예에서, 비디오 디코더(30)는 도 2의 비디오 인코더(20)를 참조하여 설명된 인코딩 단계에 대하여 일반적으로 역인 디코딩 단계를 수행할 수 있다.
엔트로피 디코딩 유닛(304)은 인코딩된 픽처 데이터(21)에 대해 엔트로피 디코딩을 수행하여, 예컨대, 양자화된 계수(309) 및/또는 디코딩된 코딩 파라미터(도 3에 나타내지 않음), 예컨대, 인터 예측 파라미터, 인트라 예측 파라미터, 루프 필터 파라미터, 및/또는 (디코딩되는) 다른 구문 요소 중 임의의 하나 또는 모두를 획득하도록 구성된다. 엔트로피 디코딩 유닛(304)은 인터 예측 파라미터, 인트라 예측 파라미터, 및/또는 다른 구문 요소를 예측 처리 유닛(360)에 포워딩하도록 더 구성된다. 비디오 디코더(30)는 비디오 조각 레벨 및/또는 비디오 블록 레벨에서 구문 요소를 수신할 수 있다.
역양자화 유닛(310)은 역양자화 유닛(110)과 동일한 기능을 가질 수 있고, 역변환 처리 유닛(312)은 역변환 처리 유닛(212)과 동일한 기능을 가질 수 있고, 재구성 유닛(314)은 재구성 유닛(214)과 동일한 기능을 가질 수 있고, 버퍼(316)는 버퍼(216)와 동일한 기능을 가질 수 있고, 루프 필터(320)는 루프 필터(220)와 동일한 기능을 가질 수 있고, 디코딩된 픽처 버퍼(330)는 디코딩된 픽처 버퍼(230)와 동일한 기능을 가질 수 있다.
예측 처리 유닛(360)은 인터 예측 유닛(344) 및 인트라 예측 유닛(354)을 포함할 수 있다. 인터 예측 유닛(344)은 기능에서 인터 예측 유닛(244)과 유사할 수 있고, 인트라 예측 유닛(354)은 기능에서 인트라 예측 유닛(254)과 유사할 수 있다. 예측 처리 유닛(360)은 일반적으로 블록 예측을 수행하고 또한/또는 인코딩된 데이터(21)로부터 예측 블록(365)을 획득하고, 예컨대, 엔트로피 디코딩 유닛(304)으로부터 예측 관련 파라미터 및/또는 선택된 예측 모드에 관한 정보를 (명시적 또는 암시적으로) 수신하거나 획득하도록 구성된다.
비디오 조각이 인트라 코딩된(I) 조각으로서 코딩되는 경우, 예측 처리 유닛(360)의 인트라 예측 유닛(354)은 시그널링된 인트라 예측 모드 및 현재 프레임 또는 픽처의 이전에 디코딩된 블록으로부터의 데이터에 기초하여 현재 비디오 조각의 픽처 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 비디오 프레임이 인터 코딩된(즉, B 또는 P) 슬라이스로서 코딩되는 경우, 예측 처리 유닛(360)의 인터 예측 유닛(344)(예컨대, 움직임 보상 유닛)은 움직임 벡터 및 엔트로피 디코딩 유닛(304)으로부터 수신된 다른 구문 요소에 기초하여 현재 비디오 조각의 비디오 블록에 대한 예측 블록(365)을 생성하도록 구성된다. 인터 예측의 경우, 참조 픽처 목록 중 하나의 참조 픽처 중 하나로부터 예측 블록이 생성될 수 있다. 비디오 디코더(30)는 DPB(330)에 저장된 참조 픽처에 기초하여 디폴트 구성 기술을 사용함으로써 참조 프레임 목록인 목록 0 및 목록 1을 구성할 수 있다.
예측 처리 유닛(360)은 움직임 벡터 및 다른 구문 요소를 파싱함으로써 현재 비디오 조각의 비디오 블록에 대한 예측 정보를 결정하고, 예측 정보를 사용하여 디코딩되고 있는 현재 비디오 블록에 대한 예측 블록을 생성하도록 구성된다. 예컨대, 예측 처리 유닛(360)은 수신된 구문 요소 중 일부를 사용하여 비디오 조각의 비디오 블록을 코딩하는 데 사용되는 예측 모드(예컨대, 인트라 또는 인터 예측), 인터 예측 조각 유형(예컨대, B 조각, P 조각, 또는 GPB 조각), 조각에 대한 참조 픽처 목록 중 하나 이상에 대한 구성 정보, 조각의 각 인터 인코딩된 비디오 블록에 대한 움직임 벡터, 조각의 각 인터 코딩된 비디오 블록에 대한 인터 예측 상태, 및 현재 비디오 조각의 비디오 블록을 디코딩하기 위한 다른 정보를 결정한다.
역양자화 유닛(310)은 비트스트림으로 제공되고 엔트로피 디코딩 유닛(304)에 의해 디코딩된 양자화된 변환 계수를 역양자화(즉, de-quantize)하도록 구성될 수 있다. 역양자화 처리는 비디오 조각의 각 비디오 블록에 대해 비디오 인코더(20)에 의해 계산된 양자화 파라미터를 사용하여, 적용되어야 하는 양자화 정도 및, 마찬가지로, 적용되어야 하는 역양자화 정도를 결정하는 것을 포함할 수 있다.
역변환 처리 유닛(312)은 픽셀 영역에서 잔여 블록을 생성하기 위해, 역변환(예컨대, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역변환 처리)을 적용하여 계수를 변환하도록 구성된다.
재구성 유닛(314)(예컨대, 가산기(314))은, 예컨대, 재구성된 잔여 블록(313)의 샘플 값과 예측 블록(365)의 샘플 값을 가산함으로써 예측 블록(365)에 역변환 블록(313)(즉, 재구성된 잔여 블록(313))을 추가하여, 샘플 영역에서 재구성된 블록(315)을 획득하도록 구성된다.
(코딩 루프의 또는 코딩 루프 이후의) 루프 필터 유닛(320)은, 픽셀 전환을 평활화하거나 비디오 품질을 향상시키기 위해, 재구성된 블록(315)을 필터링하여 필터링된 블록(321)을 획득하도록 구성된다. 예에서, 루프 필터 유닛(320)은 아래에 설명된 필터링 기술의 임의의 조합을 수행하도록 구성될 수 있다. 루프 필터 유닛(320)은 디블로킹 필터, 샘플 적응 오프셋(sample-adaptive offset, SAO) 필터, 또는 양방향 필터, 적응 루프 필터(adaptive loop filter, ALF), 샤프닝 또는 스무딩 필터, 또는 협업 필터와 같은 다른 필터와 같은 하나 이상의 루프 필터를 표현하도록 의도된다. 루프 필터 유닛(320)은 도 3에서 인 루프 필터로서 나타내어졌지만, 다른 구성에서, 루프 필터 유닛(320)은 포스트 루프 필터로서 구현될 수 있다.
주어진 프레임 또는 픽처에서의 디코딩된 비디오 블록(321)은 이후의 움직임 보상을 위해 사용되는 참조 픽처를 저장하는 디코딩된 픽처 버퍼(330)에 저장된다.
디코더(30)는, 예컨대, 사용자에 대한 제시나 사용자에 의한 시청을 위해, 출력(332)을 통해 디코딩된 픽처(31)를 출력하도록 구성된다.
비디오 디코더(30)의 다른 변형은 압축된 비트스트림을 디코딩하도록 구성될 수 있다. 예컨대, 디코더(30)는 루프 필터 유닛(320) 없이 출력 비디오 스트림을 생성할 수 있다. 예컨대, 비 변환 기반 디코더(30)는 일부 블록 또는 프레임에 대해 역변환 처리 유닛(312) 없이 직접 잔여 신호를 역양자화할 수 있다. 다른 구현에서, 비디오 디코더(30)는 단일 유닛으로 결합된 역양자화 유닛(310) 및 역변환 처리 유닛(312)을 가질 수 있다.
도 4는 본 발명의 실시예에 따른 비디오 코딩 디바이스(400)(예컨대, 비디오 인코딩 디바이스(400) 또는 비디오 디코딩 디바이스(400))의 개략적인 구조도이다. 비디오 코딩 디바이스(400)는 본 명세서에서 설명된 실시예를 구현하는 데 적합하다. 실시예에서, 비디오 코딩 디바이스(400)는 비디오 디코더(예컨대, 도 1a의 비디오 디코더(30)) 또는 비디오 인코더(예컨대, 도 1a의 비디오 인코더(20))일 수 있다. 다른 실시예에서, 비디오 코딩 디바이스(400)는 도 1a의 비디오 디코더(30) 또는 도 1a의 비디오 인코더(20)의 하나 이상의 구성요소일 수 있다.
비디오 코딩 디바이스(400)는 데이터를 수신하기 위한 진입 포트(410) 및 수신기 유닛(Rx)(420)과, 데이터를 처리하기 위한 프로세서, 로직 유닛, 또는 중앙 처리 유닛(CPU)(430)과, 데이터를 송신하기 위한 송신기 유닛(Tx)(440) 및 진출 포트(450)와, 데이터를 저장하기 위한 메모리(460)를 포함한다. 비디오 코딩 디바이스(400)는, 광학적 또는 전기적 신호의 진출 또는 진입을 위해, 진입 포트(410), 수신기 유닛(420), 송신기 유닛(440), 및 진출 포트(450)에 연결되는 광-전기 구성요소 및 전기-광(EO) 구성요소를 포함할 수도 있다.
프로세서(430)는 하드웨어 및 소프트웨어에 의해 구현된다. 프로세서(430)는 하나 이상의 CPU 칩, 코어(예컨대, 멀티 코어 프로세서), FPGA, ASIC, 및 DSP로서 구현될 수 있다. 프로세서(430)는 진입 포트(410), 수신기 유닛(420), 송신기 유닛(440), 진출 포트(450), 및 메모리(460)와 통신한다. 프로세서(430)는 코딩 모듈(470)(예컨대, 인코딩 모듈(470) 또는 디코딩 모듈(470))을 포함한다. 인코딩/디코딩 모듈(470)은 전술한 개시된 실시예를 구현한다. 예컨대, 인코딩/디코딩 모듈(470)은 다양한 코딩 동작을 수행, 처리, 또는 제공한다. 따라서, 인코딩/디코딩 모듈(470)은 비디오 코딩 디바이스(400)의 기능에 실질적인 개선을 제공하고 비디오 코딩 디바이스(400)의 상이한 상태로의 변환에 영향을 미친다. 대안적으로, 인코딩/디코딩 모듈(470)은 메모리(460)에 저장되고 프로세서(430)에 의해 실행되는 명령으로서 구현된다.
메모리(460)는 하나 이상의 디스크, 테이프 드라이브, 및 솔리드 스테이트 드라이브를 포함하고, 프로그램이 실행을 위해 선택되면 이들 프로그램을 저장하고 프로그램 실행 중에 읽히는 명령 및 데이터를 저장하기 위해, 오버플로 데이터 저장 디바이스로서 사용될 수 있다. 메모리(460)는 휘발성 및/또는 비 휘발성일 수 있고, ROM(read-only memory), RAM(random access memory), TCAM(ternary content-addressable memory), 및/또는 SRAM(static random access memory)일 수 있다.
도 5는 예시적인 실시예에 따른 도 1a의 소스 디바이스(12) 및 목적지 디바이스(14) 중 하나 또는 둘로서 사용될 수 있는 장치(500)의 단순화된 블록도이다. 장치(500)는 본 출원의 기술을 구현할 수 있다. 픽처 분할을 구현하기 위한 장치(500)는 복수의 컴퓨팅 디바이스를 포함하는 컴퓨팅 시스템의 형태, 또는 휴대폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 또는 데스크톱 컴퓨터와 같은 단일 컴퓨팅 디바이스의 형태일 수 있다.
장치(500)의 프로세서(502)는 중앙 처리 유닛일 수 있다. 대안적으로, 프로세서(502)는 정보를 제어 또는 처리할 수 있고 현존하거나 미래에 개발될 임의의 다른 유형의 디바이스 또는 복수의 디바이스일 수 있다. 도면에 나타낸 바와 같이, 개시된 구현은 프로세서(502)와 같은 단일 프로세서로 실행될 수 있지만, 속도 및 효율에 있어서의 이점은 하나보다 많은 프로세서를 사용함으로써 달성될 수 있다.
구현에서, 장치(500)의 메모리(504)는 ROM(Read Only Memory) 디바이스 또는 RAM(random access memory) 디바이스일 수 있다. 임의의 다른 적절한 유형의 저장 디바이스가 메모리(504)로서 사용될 수 있다. 메모리(504)는 버스(512)를 사용함으로써 프로세서(502)에 의해 액세스되는 코드 및 데이터(506)를 포함할 수 있다. 메모리(504)는 운영 체제(508) 및 애플리케이션 프로그램(510)을 더 포함할 수 있다. 애플리케이션 프로그램(510)은 프로세서(502)가 본 명세서에 설명된 방법을 수행할 수 있게 하는 적어도 하나의 프로그램을 포함한다. 예컨대, 애플리케이션 프로그램(510)은 애플리케이션 1 내지 N을 포함할 수 있고, 애플리케이션 1 내지 N은 본 명세서에 설명된 방법을 수행하는 비디오 코딩 애플리케이션을 더 포함한다. 장치(500)는 보조 저장소(514)의 형태의 추가 메모리를 포함할 수도 있다. 보조 저장소(514)는, 예컨대, 모바일 컴퓨팅 디바이스와 함께 사용되는 메모리 카드일 수 있다. 비디오 통신 세션은 많은 양의 정보를 포함할 수 있기 때문에, 이러한 정보는 전체적으로 또는 부분적으로 보조 저장소(514)에 저장되고 처리를 위해 필요에 따라 메모리(504)에 로드될 수 있다.
장치(500)는 디스플레이(518)와 같은 하나 이상의 출력 디바이스를 포함할 수도 있다. 예에서, 디스플레이(518)는 터치 입력을 감지하도록 동작 가능한 터치 감지 요소와 디스플레이를 결합하는 터치 감지 디스플레이일 수 있다. 디스플레이(518)는 버스(512)를 사용함으로써 프로세서(502)에 연결될 수 있다. 사용자가 장치(500)를 프로그래밍하거나 다른 방식으로 사용할 수 있게 하는 다른 출력 디바이스가 디스플레이(518)에 추가로 또는 대안으로서 제공될 수 있다. 출력 디바이스가 디스플레이이거나 디스플레이를 포함하는 경우, 디스플레이는 LCD(liquid crystal display), CRT(cathode-ray tube) 디스플레이, 플라즈마 디스플레이 또는 OLED(organic LED) 디스플레이와 같은 LED(light emitting diode) 디스플레이를 포함하는 상이한 방식으로 구현될 수 있다.
장치(500)는 픽처 감지 디바이스(520)를 포함하거나 이에 연결될 수도 있다. 픽처 감지 디바이스(520)는, 예컨대, 픽처를 감지할 수 있고 현존하거나 미래에 개발될 수 있는 카메라 또는 임의의 다른 픽처 감지 디바이스(520)이다. 픽처는, 예컨대, 장치(500)를 작동시키는 사용자의 픽처이다. 픽처 감지 디바이스(520)는 장치(500)를 작동시키는 사용자를 직접 향하여 배치될 수 있다. 예에서, 픽처 감지 디바이스(520)의 시야가 디스플레이(518)에 가깝게 인접한 영역을 포함하고 디스플레이(518)가 영역으로부터 보일 수 있도록 픽처 감지 디바이스(520)의 위치 및 광축이 구성될 수 있다.
장치(500)는 소리 감지 디바이스(522), 예컨대, 마이크 또는 현존하거나 미래에 개발될 것이고 장치(500) 근처에서 소리를 감지할 수 있는 임의의 다른 소리 감지 디바이스를 포함하거나 그와 통신할 수도 있다. 소리 감지 디바이스(522)는 장치(500)를 동작시키는 사용자를 직접 향하여 배치될 수 있고, 소리, 예컨대, 목소리 또는 장치(500)를 동작시킬 때 사용자가 내는 다른 소리를 수신하도록 구성될 수 있다.
도 5는 장치(500)의 프로세서(502) 및 메모리(504)가 단일 유닛으로 통합되는 것으로 묘사하지만, 다른 구성이 활용될 수 있다. 프로세서(502)의 동작은 직접 연결되거나 로컬 영역 또는 다른 네트워크에 분산될 수 있는 복수의 머신(각 머신은 하나 이상의 프로세서를 포함한다)에 분산될 수 있다. 메모리(504)는 네트워크 기반 메모리 또는 장치(500)가 동작되는 복수의 머신 내의 메모리와 같은 복수의 머신에 걸쳐 분산될 수 있다. 여기서는 단일 버스로서 묘사되지만, 장치(500)의 버스(512)는 복수의 버스를 포함할 수 있다. 또한, 보조 저장소(514)는 장치(500)의 다른 구성요소에 직접 연결될 수 있거나 네트워크를 통해 액세스될 수 있고 메모리 카드와 같은 단일 통합 유닛 또는 복수의 메모리 카드와 같은 복수의 유닛을 포함할 수 있다. 따라서 장치(500)는 매우 다양한 구성으로 구현될 수 있다.
본 출원에서 위에서 설명된 바와 같이, 루마(Y) 성분을 포함하는 것 외에도, 컬러 비디오는 크로마 성분(U, V)을 더 포함한다. 따라서, 루마 성분에 대한 인코딩 외에도, 크로마 성분도 인코딩되어야 한다. 컬러 비디오의 루마 성분 및 크로마 성분을 샘플링하는 상이한 방법에 따르면, 일반적으로 YUV 4:4:4, YUV 4:2:2, 및 YUV 4:2:0이 있다. 도 6에 나타낸 바와 같이, × 표시는 루마 성분의 샘플을 표현하고, 원은 크로마 성분의 샘플을 표현한다.
- 4:4:4 포맷은 크로마 성분이 다운샘플링되지 않음을 나타낸다.
- 4:2:2 포맷은, 루마 성분에 비해, 2:1 수평 다운샘플링이 크로마 성분에 대해 수행되고, 수직 다운샘플링이 크로마 성분에 대해 수행되지 않음을 나타낸다. 두 개의 U 샘플 또는 V 샘플마다, 각 행은 네 개의 Y 샘플을 포함한다.
- 4:2:0 포맷은, 루마 성분에 비해, 2:1 수평 다운샘플링이 크로마 성분에 대해 수행되고, 2:1 수직 다운샘플링이 크로마 성분에 대해 수행됨을 나타낸다.
비디오 디코더는 각 심도에서 허용되는 다섯 개의 상이한 분할 유형을 사용함으로써 세 개의 상이한 분할 구조(QT, BT, 및 TT)에 따라 비디오 블록을 분할하도록 구성될 수 있다. 분할 유형은, 도 7a 내지 도 7e에 나타낸 바와 같이, 쿼드트리 분할(QT 분할 구조), 수평 이진 트리 분할(BT 분할 구조), 수직 이진 트리 분할(BT 분할 구조), 및 수평 중앙-측면 삼진 트리 분할(TT 분할 구조), 및 수직 중앙-측면 삼진 트리 분할(TT 분할 구조)을 포함한다.
다섯 개의 분할 유형은 이하와 같이 정의된다. 정사각형은 직사각형의 특별한 사례로서 간주된다는 것에 유의해야 한다.
쿼드트리(Quad-tree, QT) 분할 : 블록은 동일한 크기의 네 개의 직사각형 블록으로 더 분할된다. 도 7a는 쿼드트리 분할의 예를 나타낸다. 쿼드트리 QT에 기초한 CTU 분할 방법에 따르면, CTU는 쿼드트리의 루트 노드(root)로서 사용된다. CTU는 쿼드트리 분할 모드에 기초하여 여러 잎새 노드(leaf node)로 재귀적으로 분할된다. 하나의 노드는 하나의 픽처 영역에 대응한다. 노드가 분할되지 않는 경우, 그 노드는 잎새 노드라고 지칭되고, 그 노드에 대응하는 픽처 영역은 CU가 된다. 노드가 분할되는 경우, 그 노드에 대응하는 픽처 영역은 동일한 크기의 네 개의 픽처 영역으로 분할되고(네 개의 영역의 길이 및 폭은 각각 분할 영역의 길이 및 폭의 절반이다), 각 영역은 하나의 노드에 대응한다. 이러한 노드가 더 분할되는지 여부는 별도로 결정되어야 한다. 노드가 분할될지 여부는 비트스트림에 있고 노드에 대응하는 분할 플래그 split_cu_flag에 의해 나타내어진다. 루트 노드의 쿼드트리 심도(qtDepth)는 0이고, 자식 노드의 쿼드트리 심도는 부모 노드의 쿼드트리 심도에 1을 더한 값이다. 설명의 간결함을 위해, 본 출원에서의 노드의 크기 및 모양은 노드에 대응하는 픽처 영역의 크기 및 모양이다. 즉, 노드는 픽처에서 직사각형 영역이다. 코딩 트리에서 노드(node)를 분할함으로써 획득되는 노드는 노드의 자식 노드(child node)라고 지칭될 수 있고, 줄여서 자식 노드이다.
보다 구체적으로, (쿼드트리 심도가 0인) 64×64 CTU 노드는 CTU 노드에 대응하는 split_cu_flag에 기초하여 분할되지 않고 64×64 CU가 될 수 있거나, 또는 (쿼드트리 심도가 1인) 네 개의 32×32 노드로 분할될 수 있다. 네 개의 32×32 노드의 각각은 노드에 대응하는 split_cu_flag에 기초하여 더 분할되거나 더 분할되지 않을 수 있다. 32×32 노드가 계속 분할되면, (쿼드트리 심도가 2인) 네 개의 16×16 노드가 생성된다. 나머지는 노드가 더 분할되지 않을 때까지 유추에 의해 추론될 수 있다. 이러한 방식으로, 하나의 CTU가 하나의 CU 그룹으로 분할된다. 최소 CU 크기(size)는 SPS에 규정된다. 예컨대, 8×8은 최소 CU 크기이다. 전술한 재귀적 분할 처리에서, 노드의 크기가 최소 CU 크기(minimum CU size)와 같으면, 노드는 기본적으로 더 분할되지 않고, 노드의 분할 플래그는 비트스트림에 포함될 필요가 없다.
파싱을 통해, 노드가 잎새 노드이고 잎새 노드가 CU인 것을 알게 된 후, CU에 대응하는 (예측 모드 및 CU의 변환 계수, 예컨대, H.266에서의 구문 구조 coding_unit()과 같은 정보를 포함하는) 코딩 정보가 더 파싱된다. 그리고, 코딩 정보에 기초하여 CU에 대해 예측, 역양자화, 역변환, 및 루프 필터링과 같은 디코딩 처리가 수행되어, CU에 대응하는 재구성된 이미지를 생성한다. 쿼드트리(Quadtree, QT) 구조에서, CTU는 로컬 픽처 특징에 기초하여 적절한 크기의 CU 그룹으로 분할될 수 있다. 예컨대, 평탄한 영역은 더 큰 CU로 분할되고, 풍부한 텍스처 영역은 더 작은 CU로 분할된다.
CTU를 CU 그룹으로 분할하는 모드는 코딩 트리(coding tree)에 대응한다. CTU에 의해 사용되어야 하는 특정한 코딩 트리는 일반적으로 인코더의 레이트 왜곡 최적화(rate distortion optimization, RDO) 기술을 사용함으로써 결정된다. 인코더는 복수의 CTU 분할 모드를 시도하고, 각 분할 모드는 하나의 레이트 왜곡 비용(RD cost)에 대응한다. 인코더는, CTU의 실제 코딩을 위해, CTU의 최적 분할 모드로서 최소 RD 비용을 갖는 분할 모드를 찾기 위해, 시도되는 분할 모드의 RD 비용을 비교한다. CTU 분할 모드가 디코더에 의해 올바르게 식별될 수 있도록, 인코더에 의해 시도되는 CTU 분할 모드는 모두 디코더에 의해 규정된 분할 규칙을 준수해야 한다.
수직 이진 트리(binary tree, BT) 분할 : 블록은 동일한 크기의 두 개의 직사각형 블록으로 수직 분할된다. 도 7d는 수직 이진 트리 분할의 예이다.
수평 이진 트리 분할 : 블록은 동일한 크기의 두 개의 직사각형 블록으로 수평 분할된다. 도 7b는 수평 이진 트리 분할의 예이다.
수직 중앙-측면 삼진 트리(TT) 분할 : 블록은 세 개의 직사각형 블록으로 수직 분할되고, 두 개의 측면 블록은 동일한 크기이고 중앙 블록의 크기는 두 개의 측면 블록의 크기의 합이다. 도 7e는 수직 중앙-측면 삼진 트리 분할의 예이다.
수평 중앙-측면 삼진 트리 분할 : 블록은 세 개의 직사각형 블록으로 수평 분할되고, 두 개의 측면 블록은 동일한 크기이고 중앙 블록의 크기는 두 개의 측면 블록의 크기의 합이다. 도 7c는 수평 중앙-측면 삼진 트리 분할의 예이다.
도 7b 내지 도 7e의 특정한 분할 방법은 도 7a의 설명과 유사하고, 세부사항은 여기서 다시 설명되지 않는다. 또한, QT 및 BT/TT를 캐스케이딩하는 분할 모드가 사용될 수 있고, 이는 줄여서 QT-BTT이다. 즉, 레벨 1 코딩 트리의 노드는 QT를 통해서만 자식 노드로 분할될 수 있고, 레벨 1 코딩 트리의 잎새 노드는 레벨 2 코딩 트리의 루트 노드이고, 레벨 2 코딩 트리의 노드는 수평 이진 분할, 수직 이진 분할, 수평 삼진 분할, 및 수직 삼진 분할의 네 개의 분할 모드 중 하나를 사용함으로써 자식 노드로 분할될 수 있고, 레벨 2 코딩 트리의 잎새 노드는 코딩 유닛이다. 구체적으로, 이진 트리 분할 및 쿼드트리 분할은 캐스케이딩 방식으로 수행되고, 이는 줄여서 QTBT 분할 모드일 수 있다. 예컨대, 도 8에 나타낸 바와 같이, CTU가 먼저 QT를 통해 분할되고, QT 잎새 노드가 BT를 통해 계속 분할되도록 허용된다. 도 8의 우측 부분에서, 각 종점은 하나의 노드를 표현한다. 네 개의 실선에 연결된 하나의 노드는 쿼드트리 분할을 표현하고, 두 개의 파선에 연결된 하나의 노드는 이진 트리 분할을 표현한다. 분할 후 획득된 노드는 노드의 자식 노드라고 지칭될 수 있고, 이는 줄여서 자식 노드이다. 자식 노드 중, a 내지 m은 13개의 잎새 노드이고, 각 잎새 노드는 하나의 CU를 표현한다. 이진 트리 노드에서, 1은 수직 분할을 표현하고, 0은 수평 분할을 표현한다. CTU는, 도 8의 좌측 부분에 나타낸 바와 같이, a 내지 m의 13개의 CU로 분할된다. QTBT 분할 모드에서, 각 CU는 QT 심도(Quad-tree depth, QT depth) 및 BT 심도(Binary tree depth, BT depth)를 갖는다. QT 심도는 CU가 속하는 QT 잎새 노드의 QT 심도를 표현하고, BT 심도는 CU가 속하는 BT 잎새 노드의 BT 심도를 표현한다. 예컨대, 도 8에서, a 및 b의 QT 심도는 1이고, a 및 b의 BT 심도는 2이고, c, d, 및 e의 QT 심도는 1이고, c, d, 및 e의 BT 심도는 1이고, f, k, 및 l의 QT 심도는 2이고, f, k, 및 l의 BT 심도는 1이고, i 및 j의 QT 심도는 2이고, i 및 j의 BT 심도는 0이고, g 및 h의 QT 심도는 2이고, g 및 h의 BT 심도는 2이고, m의 QT 심도는 1이고, m의 BT 심도는 0이다. CTU가 하나의 CU로만 분할되는 경우, CU의 QT 심도는 0이고, CU의 BT 심도는 0이다.
특정한 심도와 연관된 블록에 대해, 인코더(20)는 어떤 분할 유형(추가 분할 없음을 포함한다)이 사용되는지 결정하고, 결정된 분할 유형을 명시적으로 또는 암시적으로(예컨대, 분할 유형은 미리 결정된 규칙으로부터 유도될 수 있다) 디코더(30)에 시그널링한다. 인코더(20)는 블록에 대한 상이한 분할 유형을 체크하기 위한 레이트 왜곡 비용에 기초하여 사용될 분할 유형을 결정할 수 있다.
2×M 크로마 블록, 특히 2×2, 2×4, 또는 2×8 크로마 블록이 노드를 분할함으로써 생성되는 경우, 크로마 인코딩 및 디코딩 효율이 비교적 낮고, 하드웨어 디코더의 처리 비용이 비교적 높다. 이것은 하드웨어 디코더의 구현에 불리하다. 현재 노드의 크로마 블록이 더 분할되지 않는 경우, 본 출원의 본 실시예에서는, 현재 노드의 루마 블록만이 분할될 수 있으므로, 인코딩 및 디코딩 효율이 향상되고, 코덱의 최대 처리량이 감소되고, 코덱의 구현이 용이하게 된다. 구체적으로, 본 출원의 본 실시예에서, 분할 모드를 사용함으로써 노드를 분할함으로써 생성된 자식 노드가, 제 1 임계치인 측면 길이를 갖는 크로마 블록을 포함하는(또는 제 2 임계치보다 작은 측면 길이를 갖는 크로마 블록을 포함하는) 경우, 노드에 포함된 루마 블록은 이 분할 모드를 사용함으로써 분할되고, 노드에 포함된 크로마 블록은 더 분할되지 않는다. 이 모드는 제 1 임계치인 측면 길이를 갖는(또는 제 2 임계치보다 작은 측면 길이를 갖는) 크로마 블록의 생성을 방지할 수 있다. 특정한 구현에서, 제 1 임계치는 2일 수 있고, 제 2 임계치는 4일 수 있다. 이하에서는 실시예 1 내지 실시예 3을 참조하여 상세한 설명을 제공한다. 본 출원의 본 실시예에서, YUV 4:2:0의 비디오 데이터 포맷을 사용함으로써 설명이 제공되고, 유사한 방식이 YUV 4:2:2 데이터에 사용될 수 있다.
인트라 블록 사본(Intra Block Copy, IBC) 코딩 툴은 HEVC의 확장된 표준 SCC에 채택되고, 주로 화면 콘텐츠 비디오의 코딩 효율을 향상시키기 위해 사용된다. IBC 모드는 블록 레벨 코딩 모드이다. 인코더 측에서는, 각 CU에 대한 최적의 블록 벡터(block vector) 또는 움직임 벡터(motion vector)를 찾기 위해 블록 매칭(block matching, BM) 방법이 사용된다. 여기서 움직임 벡터는 주로 현재 블록으로부터 참조 블록까지의 변위를 표현하기 위해 사용되고, 변위 벡터(displacement vector)라고도 지칭된다. 참조 블록은 현재 픽처에서의 재구성된 블록이다. IBC 모드는 인트라 예측 모드 또는 인터 예측 모드 외의 제 3 예측 모드로서 간주될 수 있다. 저장 공간을 절약하고 디코더의 복잡함을 줄이기 위해, VTM4에서의 IBC 모드는 현재 CTU의 미리 정의된 영역의 재구성된 부분만이 예측에 사용될 수 있게 한다.
VTM에서는, CU 레벨에서, IBC 모드가 현재 CU에 사용되는지 여부를 나타내기 위해 플래그가 사용된다. IBC 모드는 IBC AMVP 모드, IBC 스킵 모드, 또는 IBC 병합 모드로 분류된다.
실시예 1
도 9는 본 발명의 실시예 1에 따른 방법(900)의 흐름도이다.
스텝 901 : 현재 노드가 분할되어야 하는지 여부를 결정한다. 여기서 현재 노드는 루마 블록 및 크로마 블록을 포함한다.
현재 노드가 자식 노드로 더 분할되지 않는 경우, 현재 노드는 코딩 유닛(coding unit, CU)이고, 파싱을 통해 코딩 유닛에 관한 정보를 획득하기 위해 스텝 910이 수행되고, 현재 노드가 분할되어야 하는 경우, 스텝 902가 수행된다.
본 발명의 실시예 1은 비디오 디코딩 장치, 구체적으로, 도 3 내지 도 5 중 어느 하나에 설명된 장치에 의해 구현될 수 있다.
본 발명의 실시예 1은 대안적으로 비디오 인코딩 장치, 구체적으로, 도 2, 도 4, 및 도 5 중 어느 하나에 설명된 장치에 의해 구현될 수 있다.
실시예 1이 비디오 디코딩 장치에 의해 구현되는 경우, 스텝 902에서, 비디오 디코딩 장치는 현재 노드의 분할 모드를 결정하기 위해 비트스트림을 파싱한다. 현재 노드의 분할 모드는 쿼드 분할(QT), 수평 이진 분할(horizontal BT), 수평 삼진 분할(horizontal TT), 수직 이진 분할(Vertical BT), 및 수직 삼진 분할(Vertical TT) 중 적어도 하나일 수 있고, 또는 다른 분할 모드일 수 있다. 이것은 본 발명의 본 실시예에서 제한되지 않는다. 현재 노드의 분할 모드에 관한 정보는 일반적으로 비트스트림으로 송신되고, 현재 노드의 분할 모드는 비트스트림에서 대응하는 구문 요소를 파싱함으로써 획득될 수 있다.
실시예 1이 비디오 인코딩 장치에 의해 구현되는 경우, 스텝 902에서, 현재 노드를 분할하기 위한 방법을 결정한다.
스텝 904 : 현재 노드의 분할 모드 및 현재 노드의 크기에 기초하여, 현재 노드의 크로마 블록이 분할되어야 하는지 여부를 결정하고, 현재 노드의 크로마 블록이 더 분할되지 않는 경우, 스텝 906을 수행하고, 현재 노드의 크로마 블록이 분할되어야 하는 경우, 스텝 908을 수행한다.
구체적으로, 구현에서, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 1 임계치인 측면 길이를 갖는 크로마 블록(또는 제 2 임계치보다 작은 측면 길이를 갖는 크로마 블록)이 생성되는지 여부가 결정될 수 있다. 현재 노드를 분할함으로써 생성된 자식 노드가, 제 1 임계치인 측면 길이를 갖는 크로마 블록을 포함한다고(또는 제 2 임계치보다 작은 측면 길이를 갖는 크로마 블록을 포함한다고) 결정되는 경우, 현재 노드의 크로마 블록은 더 분할되지 않는다. 예컨대, 제 1 임계치는 2일 수 있고, 제 2 임계치는 4일 수 있다.
본 발명의 본 실시예에서, 제 1 임계치인 측면 길이를 갖는 크로마 블록은 제 1 임계치인 폭 또는 높이를 갖는 크로마 블록이다.
다른 구현에서, 예컨대, 조건 1 내지 조건 5 중 어느 하나가 참이면, 현재 노드의 크로마 블록이 더 분할되지 않는다고 결정될 수 있고, 그렇지 않으면, 현재 노드의 크로마 블록이 분할되어야 한다고 결정된다.
조건 1 : 현재 노드의 폭이 제 2 임계치의 두 배와 같고, 현재 노드의 분할 모드가 수직 이진 분할이다.
조건 2 : 현재 노드의 높이가 제 2 임계치의 두 배와 같고, 현재 노드의 분할 모드가 수평 이진 분할이다.
조건 3 : 현재 노드의 폭이 제 2 임계치의 네 배와 같고, 현재 노드의 분할 모드가 수직 삼진 분할이다.
조건 4 : 현재 노드의 높이가 제 2 임계치의 네 배와 같고, 현재 노드의 분할 모드가 수평 삼진 분할이다.
조건 5 : 현재 노드의 폭이 제 2 임계치의 두 배와 같고, 현재 노드의 분할 모드가 쿼드 분할이다.
일반적으로, 현재 노드의 폭은 현재 노드에 대응하는 루마 블록의 폭이고, 현재 노드의 높이는 현재 노드에 대응하는 루마 블록의 높이이다. 특정한 구현에서, 예컨대, 제 2 임계치는 4일 수 있다.
제 3 구현에서, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 1 임계치인 폭을 갖는 크로마 블록(또는 제 2 임계치보다 작은 폭을 갖는 크로마 블록)이 생성되는지 여부가 결정될 수 있다. 현재 노드를 분할함으로써 생성된 자식 노드가, 제 1 임계치인 폭을 갖는 크로마 블록을 포함한다고(또는 제 2 임계치보다 작은 폭을 갖는 크로마 블록을 포함한다고) 결정되는 경우, 현재 노드의 크로마 블록은 더 분할되지 않는다. 예컨대, 제 1 임계치는 2일 수 있고, 제 2 임계치는 4일 수 있다.
제 4 구현에서, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 3 임계치보다 작은 크로마 샘플의 양을 갖는 크로마 블록이 생성되는지 여부가 결정될 수 있다. 현재 노드를 분할함으로써 생성된 자식 노드가, 제 3 임계치보다 작은 크로마 샘플의 양을 갖는 크로마 블록을 포함한다고 결정되는 경우, 현재 노드의 크로마 블록은 더 분할되지 않는다. 예컨대, 제 3 임계치는 16일 수 있다. 이 경우, 16보다 작은 크로마 샘플의 양을 갖는 크로마 블록은 2×2 크로마 블록, 2×4 크로마 블록, 및 4×2 크로마 블록을 포함하지만 이에 제한되지 않는다. 제 3 임계치는 8일 수 있다. 이 경우, 8보다 작은 크로마 샘플의 양을 갖는 크로마 블록은 2×2 크로마 블록을 포함하지만 이에 제한되지 않는다.
구체적으로, 조건 1 또는 조건 2가 참이면, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 3 임계치보다 작은 크로마 샘플의 양을 갖는 크로마 블록이 생성된다고 결정될 수 있고, 그렇지 않으면, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 3 임계치보다 작은 크로마 샘플의 양을 갖는 크로마 블록이 생성되지 않는다고 결정될 수 있다.
조건 1 : 현재 노드의 폭과 높이의 곱이 128보다 작고, 현재 노드의 분할 모드가 수직 이진 분할 또는 수평 이진 분할이다.
조건 2 : 현재 노드의 폭과 높이의 곱이 256보다 작고, 현재 노드의 분할 모드가 수직 삼진 분할, 수평 삼진 분할, 또는 쿼드 분할이다.
구체적으로, 다른 구현에서, 조건 3 또는 조건 4가 참이면, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 3 임계치보다 작은 크로마 샘플의 양을 갖는 크로마 블록이 생성된다고 결정될 수 있고, 그렇지 않으면, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 3 임계치보다 작은 크로마 샘플의 양을 갖는 크로마 블록이 생성되지 않는다고 결정될 수 있다.
조건 3 : 현재 노드의 폭과 높이의 곱이 64와 같고, 현재 노드의 분할 모드가 수직 이진 분할, 수평 이진 분할, 쿼드 분할, 수평 삼진 분할, 또는 수직 삼진 분할이다.
조건 4 : 현재 노드의 폭과 높이의 곱이 128과 같고, 현재 노드의 분할 모드가 수직 삼진 분할 또는 수평 삼진 분할이다.
제 5 구현에서, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 1 임계치인 높이를 갖는 크로마 블록(또는 제 2 임계치보다 작은 높이를 갖는 크로마 블록)이 생성되는지 여부가 결정될 수 있다. 현재 노드를 분할함으로써 생성된 자식 노드가, 제 1 임계치인 높이를 갖는 크로마 블록(또는 제 2 임계치보다 작은 높이를 갖는 크로마 블록)을 포함한다고 결정되는 경우, 현재 노드의 크로마 블록은 더 분할되지 않는다. 예컨대, 제 1 임계치는 2일 수 있고, 제 2 임계치는 4일 수 있다.
스텝 906 : 현재 노드의 분할 모드에 기초하여 현재 노드의 루마 블록(luma block)을 분할하여, 현재 노드의 자식 노드(루마 블록의 자식 노드라고도 지칭될 수 있고, 줄여서 루마 노드)를 획득한다. 각 자식 노드는 루마 블록만 포함한다. 현재 노드의 크로마 블록(chroma block)은 더 분할되지 않고, 크로마 블록만을 포함하는 코딩 유닛이 된다.
선택적으로, 도 10에 나타낸 바와 같이, 스텝 906은 스텝 9062를 더 포함할 수 있다. 스텝 9062에서는, 현재 노드의 루마 블록을 파싱하여, 현재 노드의 루마 블록에서의 하위 영역의 각각의 예측 정보 및 잔여 정보를 획득하고, 여기서 각 하위 영역은 하나의 자식 노드에 대응한다.
구체적으로, 스텝 9062는 이하의 방법 중 어느 하나를 사용함으로써 구현될 수 있다.
방법 1 : 기본적으로 루마 블록의 각 자식 노드를 더 분할하지 않고(즉, 각 루마 노드는 코딩 유닛이고, 루마 블록의 하나의 자식 노드는 루마 블록만을 포함하는 하나의 코딩 유닛에 대응한다), 루마 블록의 자식 노드에 대한 코딩 유닛 데이터를 순차적으로 파싱하여, 각 루마 블록의 예측 정보 및 잔여 정보를 획득한다. 루마 노드의 루마 블록은 현재 노드의 루마 블록에서의 하위 영역이고, 루마 노드의 루마 블록은 현재 노드의 루마 블록을 구성한다.
방법 2 : 루마 블록의 자식 노드가 순차적으로 계속 더 분할되어야 하는지 여부를 결정하고, 자식 노드가 더 분할되어야 하는 경우, 자식 노드의 분할 모드 및 대응하는 코딩 유닛 데이터를 파싱한다. 보다 구체적으로, 루마 노드가 더 분할되지 않는 경우, 루마 노드에 대응하는 코딩 유닛 데이터가 파싱되어, 루마 노드의 루마 블록에 대응하는 예측 정보 및 잔여 정보를 획득하고, 루마 노드가 계속 분할되는 경우, 루마 노드의 자식 노드(자식 노드는 여전히 루마 블록만 포함한다는 것에 유의해야 함)가 분할되어야 하는지 여부가 현재 노드의 루마 블록의 하위 영역의 각각의 예측 정보 및 잔여 정보가 결정될 때까지 계속 결정된다.
예측 정보는 예측 모드(인트라 예측 모드 또는 인터 예측 모드를 나타냄), 인트라 예측 모드, 움직임 정보, 및/또는 기타를 포함하지만 이에 제한되지 않는다. 루마 블록의 인트라 예측 모드는 평면 모드(Planar Mode), 직류 모드(DC 모드), 각도 모드(angular Mode), 크로마 유도 모드(chroma derived mode, DM) 중 하나일 수 있다. 움직임 정보는 예측 방향(순방향, 역방향, 또는 양방향), 참조 인덱스(reference index), 및/또는 움직임 벡터(motion vector)와 같은 정보를 포함할 수 있다.
잔여 정보는 코딩된 블록 플래그(coded block flag, CBF), 변환 계수, 및/또는 변환 유형(예컨대, DCT-2, DST-7, 또는 DCT-8) 등을 포함한다.
선택적으로, 도 10에 나타낸 바와 같이, 스텝 906은 스텝 9064를 더 포함할 수 있다. 스텝 9064에서, 크로마 블록의 예측 정보 및/또는 잔여 정보를 획득한다.
구체적으로, 스텝 9064는 스텝 90642 및 스텝 90644를 포함할 수 있다. 스텝 90642는 스텝 90642A 또는 스텝 90642B일 수 있다.
스텝 90642A는 구체적으로 이하를 포함한다.
현재 노드의 크로마 블록의 예측 모드로서 현재 노드의 루마 블록의 미리 설정된 위치에 대한 예측 모드를 획득한다. 현재 노드의 루마 블록의 좌측 상단 코너의 위치는 (x0, y0)으로서 표현될 수 있고, 크기는 W×H이다. 이 경우, 미리 설정된 위치는 루마 블록의 좌측 상단 코너, 우측 하단 코너(x0+W-1, y0+H-1), 중앙(x0+W/2, y0+H/2), (x0+W/2, 0), 또는 (0, y0+H/2) 등을 포함하지만 이에 제한되지 않는다. 예측 모드는 미리 설정된 위치에서의 픽셀, 예컨대, HEVC에서의 구문 요소 pred_mode_flag에 의해 나타내어지는 정보에 대해 인트라 예측 또는 인터 예측이 수행되는지 여부를 나타낸다. 예컨대, VTM에서, 미리 설정된 위치에 대한 예측 모드가 IBC 모드인지 여부는 구문 요소 pred_mode_ibc_flag에 의해 나타내어지는 정보에 기초하여 결정될 수 있다.
미리 설정된 위치에 대한 예측 모드가 인터 예측인 경우, 크로마 블록의 예측 모드를 결정하기 위해 이하의 방법 중 하나가 사용된다.
방법 1 : 크로마 블록에 대해 인터 예측을 수행하여 크로마 블록의 움직임 정보로서 미리 설정된 위치에 대한 움직임 정보를 획득한다.
방법 2 : 크로마 블록에 대해 인터 예측을 수행하고, 크로마 블록을 크로마 예측 서브블록으로 분할하고(여기서 크로마 예측 서브블록의 크기는, 예컨대, 폭에서 두 개의 크로마 샘플 및 높이에서 두 개의 크로마 샘플이다), 이하의 방식으로 크로마 예측 서브블록의 움직임 정보를 획득한다.
크로마 예측 서브블록에 대응하는 루마 픽처 위치에서의 루마 블록에 대해 인터 예측이 수행되는 경우, 크로마 예측 서브블록에 대응하는 루마 픽처 위치의 움직임 정보가 크로마 예측 서브블록의 움직임 정보로서 사용되고, 그렇지 않으면, 미리 설정된 위치에 대한 움직임 정보가 크로마 예측 서브블록의 움직임 정보로서 획득된다.
YUV 4:2:0 픽처의 경우, 크로마 픽처에서의 크로마 예측 서브블록의 좌표는 (xC, yC)로서 나타내어진다. 이 경우, 크로마 예측 서브블록에 대응하는 루마 픽처 위치의 좌표는 (xC≪1, yC≪1)이다.
방법 3 : 플래그 pred_mode_flag를 파싱하여, 인트라 예측 또는 인터 예측이 크로마 블록에 대해 수행되는지 여부를 결정하고, 크로마 블록에 대해 인트라 예측이 수행되는 경우, 비트스트림으로부터 인트라 예측 모드를 크로마 블록의 인트라 예측 모드로서 파싱하고, 크로마 블록에 대해 인터 예측이 수행되는 경우, 미리 설정된 위치에 대한 움직임 정보를 크로마 블록의 움직임 정보로서 획득한다.
방법 4 : 플래그 pred_mode_flag를 파싱하여, 크로마 블록에 대해 인트라 예측 또는 인터 예측이 수행되는지 여부를 결정하고, 크로마 블록에 대해 인트라 예측이 수행되는 경우, 비트스트림으로부터 인트라 예측 모드를 크로마 블록의 인트라 예측 모드로서 파싱하고, 여기서 인트라 예측 모드는 교차 성분 선형 모델 모드 및 DM 모드 중 하나일 수 있고, DM 모드에 대응하는 루마 인트라 예측 모드는 평면 모드로 설정되고, 크로마 블록에 대해 인터 예측이 수행되는 경우, 크로마 블록을 크로마 예측 서브블록으로 분할하고, 여기서 크로마 예측 서브블록의 움직임 정보는 이하의 방식으로 획득된다.
크로마 예측 서브블록에 대응하는 루마 픽처 위치에서의 루마 블록에 대해 인터 예측이 수행되는 경우, 크로마 예측 서브블록에 대응하는 루마 픽처 위치의 움직임 정보가 크로마 예측 서브블록의 움직임 정보로서 사용되고, 그렇지 않으면, 미리 설정된 위치에 대한 움직임 정보가 크로마 예측 서브블록의 움직임 정보로서 획득된다.
플래그 pred_mode_flag를 파싱하기 위해 사용되는 상황 모델은, 예컨대, 모델 번호가 2인 미리 설정된 모델이다.
미리 설정된 위치에 대한 예측 모드가 인트라 예측인 경우, 크로마 블록에 대해 인트라 예측이 수행되고, 크로마 블록의 인트라 예측 모드로서 비트스트림으로부터 인트라 예측 모드가 파싱된다. 대안적으로, 크로마 블록의 인트라 예측 모드가 직류 모드, 평면 모드, 각도 모드, 교차 성분 선형 모델 모드, 또는 DM 모드 중 하나인 것으로 직접 결정된다.
미리 설정된 위치에 대한 예측 모드가 IBC 모드인 경우, IBC 모드에서 크로마 블록이 예측되어, 크로마 블록의 변위 벡터 정보로서 미리 설정된 위치에 대한 변위 벡터(displacement vector) 정보를 획득하고,
미리 설정된 위치에 대한 예측 모드가 IBC 모드인 경우, 크로마 블록의 예측 모드는 플래그 pred_mode_ibc_flag에 기초하여 결정된다.
1) pred_mode_ibc_flag가 1인 경우, 크로마 블록에 IBC 모드가 사용되고, 보다 구체적으로, 크로마 블록에 대한 IBC를 예측하는 방법은 VTM 4.0에서의 방법일 수 있다. 즉, 크로마 블록은 2×2 서브블록으로 분할되고, 각 서브블록의 변위 벡터는 서브블록에 대응하는 루마 영역의 변위 벡터와 같다.
2) pred_mode_ibc_flag가 0인 경우, 크로마 블록에 인트라 예측 모드 또는 인터 예측 모드가 사용된다.
인트라 예측 모드가 사용되는 경우, 크로마 인트라 예측 모드를 결정하기 위해 비트스트림으로부터 구문 요소가 파싱된다. 대안적으로, 크로마 블록의 인트라 예측 모드가 크로마 인트라 예측 모드 집합에 속한다고 직접 결정된다. 크로마 인트라 예측 모드 집합은 직류 모드, 평면 모드, 각도 모드, 교차 성분 선형 모델, 및 DM 모드를 포함한다.
인터 예측 모드가 사용되는 경우, 크로마 블록의 움직임 정보로서 미리 설정된 위치에 대한 움직임 정보가 획득될 수 있다.
비트스트림에 pred_mode_ibc_flag가 없으면, 현재 노드가 위치하는 픽처의 유형이 I 프레임/I 조각이고 IBC 모드 사용이 허용되는 경우, pred_mode_ibc_flag는 기본적으로 1이고, 즉, 기본적으로 크로마 블록에 IBC 모드가 사용되고, 현재 노드가 위치하는 픽처의 유형이 P/B 프레임/조각인 경우, pred_mode_ibc_flag는 기본적으로 0임에 유의해야 한다.
VTM에서, 미리 설정된 위치에 대한 예측 모드가 IBC 모드인지 여부는 구문 요소 pred_mode_ibc_flag에 의해 나타내어지는 정보에 기초하여 결정될 수 있다. 예컨대, pred_mode_ibc_flag가 1인 경우, IBC 예측 모드가 사용되는 것을 나타내고, pred_mode_ibc_flag가 0인 경우, IBC 모드가 사용되지 않는 것을 나타낸다. 비트스트림에 pred_mode_ibc_flag가 없으면, I 프레임/I 조각의 경우, pred_mode_ibc_flag의 값은 sps_ibc_enabled_flag의 값과 같고, P 프레임/조각 또는 B 프레임/조각의 경우, pred_mode_ibc_flag는 0이다. sps_ibc_enabled_flag가 1이면, 현재 픽처를 디코딩하는 처리에서 현재 픽처가 참조 픽처로서 사용되도록 허용되는 것을 나타내고, sps_ibc_enabled_flag가 0이면, 현재 픽처를 디코딩하는 처리에서 현재 픽처가 참조 픽처로서 사용되도록 허용되지 않는 것을 나타낸다.
크로마 블록의 인트라 예측 모드는 직류 모드, 평면 모드, 각도 모드, 교차 성분 선형 모델(cross-component linear model, CCLM) 모드, 및 크로마 유도 모드(chroma derived mode, DM) 중 하나, 예컨대, DC 모드, 평면 모드, 각도 모드, 교차 성분 선형 모델 모드, 및 VTM에서의 크로마 유도 모드일 수 있다.
스텝 90642B는 구체적으로 이하를 포함한다.
현재 노드의 복수의 루마 블록에 대한 예측 모드를 획득하고, 이하의 방법을 사용함으로써 현재 노드에 대응하는 크로마 블록의 예측 모드를 결정한다.
복수의 루마 블록 모두에 대해 인트라 예측이 수행되는 경우, 크로마 블록에 대해 인트라 예측이 수행되고, 크로마 블록의 인트라 예측 모드로서 비트스트림으로부터 인트라 예측 모드가 파싱된다.
복수의 루마 블록 모두에 대해 인터 예측이 수행되는 경우, 크로마 예측 모드를 결정하기 위해 이하의 방법 중 하나가 사용된다.
방법 1 : 크로마 블록에 대해 인터 예측을 수행하여 크로마 블록의 움직임 정보로서 미리 설정된 위치에 대한 움직임 정보를 획득한다. 미리 설정된 위치는 실시예 1에서와 동일한 의미를 갖는다.
방법 2 : 플래그 pred_mode_flag를 파싱하여 크로마 블록에 대해 인트라 예측이 수행되는지 또는 인터 예측이 수행되는지 여부를 결정하고, 크로마 블록에 대해 인트라 예측이 수행되는 경우, 크로마 블록의 인트라 예측 모드로서 비트스트림으로부터 인트라 예측 모드를 파싱하고, 크로마 블록에 대해 인터 예측이 수행되는 경우, 크로마 블록의 움직임 정보로서 미리 설정된 위치에 대한 움직임 정보를 획득한다.
복수의 루마 블록에 대한 인터 예측 및 인트라 예측이 포함되는 경우, 크로마 블록의 모드 정보는 이하의 방식 중 하나로 결정될 수 있다.
⑴ 미리 설정된 위치에 대한 예측 모드가 인터 예측인 경우, 크로마 블록에 대해 인터 예측이 수행되어 크로마 블록의 움직임 정보로서 미리 설정된 위치에 대한 움직임 정보를 획득한다.
⑵ 미리 설정된 위치에 대한 예측 모드가 인트라 예측인 경우, 크로마 블록에 대해 인트라 예측이 수행되고, 크로마 블록의 인트라 예측 모드로서 비트스트림으로부터 인트라 예측 모드가 파싱되고, 또는 크로마 블록의 인트라 예측 모드가 직류 모드, 평면 모드, 각도 모드, 교차 성분 선형 모델 모드, 또는 DM 모드 중 하나라고 직접 결정된다.
⑶ 미리 설정된 위치에 대한 예측 모드가 IBC 모드인 경우, 크로마 블록이 IBC 모드에서 예측되어, 크로마 블록의 변위 벡터 정보로서 미리 설정된 위치에 대한 변위 벡터 정보를 획득한다.
⑷ 크로마 예측 모드는 모드 집합에서의 하나의 모드로서 직접 지정되고, 여기서 모드 집합은 AMVP 모드, IBC 모드, 스킵 모드, 직류 모드, 평면 모드, 각도 모드, 교차 성분 선형 모델 모드, 및 DM 모드를 포함한다.
스텝 90644 : 크로마 블록의 잔여 정보를 파싱한다. 크로마 블록의 잔여 정보는 변환 유닛에 포함된다. 변환 유형은 기본적으로 DCT-2일 수 있다.
스텝 908 : 현재 노드를 자식 노드로 분할하고, 여기서 각 자식 노드는 루마 블록 및 크로마 블록을 포함한다. 스텝 901은 각 자식 노드에서 수행되고, 자식 노드의 분할 모드에 대해 파싱이 계속 수행되어, 자식 노드(노드라고도 지칭됨)가 더 분할되어야 하는지 여부를 결정한다.
루마 블록의 하위 영역 분할 모드와 하위 영역의 각각의 예측 정보 및 잔여 정보가 획득된 후, 하위 영역의 대응하는 예측 모드에 기초하여 각 하위 영역에 대해 인터 예측 처리 또는 인트라 예측 처리가 수행되어, 하위 영역의 인터 예측된 픽처 또는 인트라 예측된 픽처를 획득할 수 있다. 그리고, 하위 영역의 각각의 잔여 정보에 기초하여 변환 계수에 대해 역양자화 및 역변환 처리가 수행되어 잔여 픽처를 획득하고, 잔여 픽처가 대응하는 하위 영역에서의 예측된 픽처에 중첩되어, 루마 블록의 재구성된 픽처를 생성한다.
크로마 블록의 예측 정보 및 잔여 정보가 획득된 후, 크로마 블록의 예측 모드에 기초하여 크로마 블록에 대해 인터 예측 처리 또는 인트라 예측 처리가 수행되어, 크로마 블록의 인터 예측된 픽처 또는 인트라 예측된 픽처를 획득할 수 있다. 그리고, 크로마 블록의 잔여 정보에 기초하여 변환 계수에 대해 역양자화 및 역변환 처리가 수행되어 잔여 픽처를 획득하고, 잔여 픽처가 크로마 블록의 예측된 픽처에 중첩되어 크로마 블록의 재구성된 픽처를 생성한다.
본 발명의 실시예 1에서, 현재 노드의 크로마 블록이 더 분할되지 않는 경우, 방법은 현재 노드의 루마 블록만을 분할하기 위해 사용될 수 있으므로, 인코딩 및 디코딩 효율이 향상되고, 코덱의 최대 처리량이 감소되고, 코덱의 구현이 용이하게 된다.
실시예 2
실시예 1과 비교하여, 스텝 9062에 이하의 제약이 추가된다. 루마 노드(즉, 루마 블록의 자식 노드)에 동일한 예측 모드가 사용된다. 즉, 각 루마 노드에 대해 인트라 예측 또는 인터 예측이 수행된다. 다른 스텝은 실시예 1과 유사하고, 세부사항은 다시 설명되지 않는다.
루마 노드에 대해 동일한 예측 모드를 사용하기 위해 이하의 방법 중 어느 하나가 사용될 수 있다.
방법 1 : 현재 프레임이 I 프레임인 경우, 기본적으로 현재 노드의 모든 자식 노드에 대해 인트라 예측이 수행되고, 현재 프레임이 P 프레임 또는 B 프레임인 경우, 파싱 처리가 수행되는 첫 번째 노드(줄여서 첫 번째 자식 노드일 수 있음)가 파싱되어 첫 번째 노드의 예측 모드를 획득하고, 나머지 자식 노드(줄여서 루마 노드)의 예측 모드는 기본적으로 파싱 처리가 수행되는 첫 번째 노드의 예측 모드이다.
방법 2 : 현재 프레임이 I 프레임인 경우, 기본적으로 현재 노드의 모든 자식 노드에 대해 인트라 예측이 수행되고, 현재 프레임이 P 프레임 또는 B 프레임인 경우, 기본적으로 현재 노드의 모든 자식 노드에 대해 인터 예측이 수행된다.
실시예 3
도 11은 본 발명의 실시예 3에 따른 방법의 흐름도(1100)이다. 실시예 3은 스텝 1104를 제외하고 실시예 1과 유사하다.
스텝 1104 : 현재 노드의 분할 모드, 현재 노드의 크기, 및 현재 노드에서 파싱 처리가 수행되는 첫 번째 노드(줄여서 첫 번째 자식 노드일 수 있음)의 예측 모드에 기초하여, 현재 노드의 크로마 블록이 분할되는지 여부를 결정하고, 여기서 첫 번째 자식 노드는 루마 블록만 포함한다. 현재 노드의 복수의 자식 노드에 대해 동일한 예측 모드가 수행된다. 각 자식 노드는 루마 블록만 포함한다.
현재 노드의 분할 모드 및 현재 노드의 크기가 먼저 결정되는지 또는 첫 번째 자식 노드의 예측 모드가 먼저 결정되는지 여부는 본 발명의 본 실시예에서 제한되지 않는다.
실시예 1 또는 실시예 2에 기초하여, 실시예 3에서, 현재 노드의 크로마 블록의 분할 모드, 대응하는 예측 정보 파싱 모드, 및 대응하는 잔여 정보 파싱 모드가 현재 노드의 첫 번째 자식 노드의 예측 모드를 참조하여 결정된다.
구현에서, 현재 노드의 분할 모드 및 현재 노드의 크기에 기초하여, 현재 노드를 분할함으로써 생성된 자식 노드가, 제 1 임계치와 같은 측면 길이를 갖는 또는 제 2 임계치보다 작은 측면 길이를 갖는 크로마 블록을 포함하고 첫 번째 자식 노드의 예측 모드가 인트라 예측이라고 결정되고, 이 경우, 현재 노드의 크로마 블록은 더 분할되지 않는다. 실시예 1과 유사하게, 예컨대, 제 1 임계치는 2일 수 있고, 제 2 임계치는 4일 수 있다.
본 발명의 본 실시예에서, 제 1 임계치인 측면 길이를 갖는 크로마 블록은 제 1 임계치인 폭 또는 높이을 갖는 크로마 블록이다.
다른 구현에서, 첫 번째 자식 노드의 예측 모드가 인트라 예측이고, 조건 1 내지 조건 5 중 어느 하나가 참이면, 현재 노드의 크로마 블록이 더 분할되지 않는다.
조건 1 : 현재 노드의 폭이 제 2 임계치의 두 배와 같고, 현재 노드의 분할 모드가 수직 이진 분할이다.
조건 2 : 현재 노드의 높이가 제 2 임계치의 두 배와 같고, 현재 노드의 분할 모드가 수평 이진 분할이다.
조건 3 : 현재 노드의 폭이 제 2 임계치의 네 배와 같고, 현재 노드의 분할 모드가 수직 삼진 분할이다.
조건 4 : 현재 노드의 높이가 제 2 임계치의 네 배와 같고, 현재 노드의 분할 모드가 수평 삼진 분할이다.
조건 5 : 현재 노드의 폭이 제 2 임계치의 두 배와 같고 현재 노드의 분할 모드가 쿼드 분할이다.
일반적으로, 현재 노드의 폭은 현재 노드에 대응하는 루마 블록의 폭이고, 현재 노드의 높이는 현재 노드에 대응하는 루마 블록의 높이이다. 특정한 구현에서, 예컨대, 제 2 임계치는 4일 수 있다.
첫 번째 자식 노드의 예측 모드가 인트라 예측인 경우, 제 1 실시예와 유사하게, 제 3 구현에서, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 1 임계치인 폭을 갖는 크로마 블록(또는 제 2 임계치보다 작은 폭을 갖는 크로마 블록)이 생성되는지 여부가 결정될 수 있다. 현재 노드를 분할함으로써 생성된 자식 노드가, 제 1 임계치인 폭을 갖는 크로마 블록(또는 제 2 임계치보다 작은 폭을 갖는 크로마 블록)을 포함하고, 첫 번째 자식 노드의 예측 모드가 인트라 예측이라고 결정되는 경우, 현재 노드의 크로마 블록은 더 분할되지 않는다. 예컨대, 제 1 임계치는 2일 수 있고, 제 2 임계치는 4일 수 있다.
첫 번째 자식 노드의 예측 모드가 인트라 예측인 경우, 제 1 실시예와 유사하게, 제 4 구현에서, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 3 임계치보다 작은 크로마 샘플의 양을 갖는 크로마 블록이 생성되는지 여부가 결정될 수 있다. 현재 노드를 분할함으로써 생성된 자식 노드가 제 3 임계치보다 작은 크로마 샘플의 양을 갖는 크로마 블록을 포함하고, 첫 번째 자식 노드의 예측 모드가 인트라 예측인 경우, 현재 노드의 크로마 블록은 더 분할되지 않는다. 예컨대, 제 3 임계치는 16일 수 있다. 이 경우, 16보다 작은 크로마 샘플의 양을 갖는 크로마 블록은 2×2 크로마 블록, 2×4 크로마 블록, 및 4×2 크로마 블록을 포함하지만 이에 제한되지 않는다. 제 3 임계치는 8일 수 있다. 이 경우, 8보다 작은 크로마 샘플의 양을 갖는 크로마 블록은 2×2 크로마 블록을 포함하지만 이에 제한되지 않는다.
구체적으로, 조건 1 또는 조건 2가 참이면, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 3 임계치보다 작은 크로마 샘플의 양을 갖는 크로마 블록이 생성된다고 결정될 수 있고, 그렇지 않으면, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 3 임계치보다 작은 크로마 샘플의 양을 갖는 크로마 블록이 생성되지 않는다고 결정될 수 있다.
조건 1 : 현재 노드의 폭과 높이의 곱이 128보다 작고, 현재 노드의 분할 모드가 수직 이진 분할 또는 수평 이진 분할이다.
조건 2 : 현재 노드의 폭과 높이의 곱이 256보다 작고, 현재 노드의 분할 모드가 수직 삼진 분할, 수평 삼진 분할, 또는 쿼드 분할이다.
구체적으로, 다른 구현에서, 조건 3 또는 조건 4가 참이면, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 3 임계치보다 작은 크로마 샘플의 양을 갖는 크로마 블록이 생성된다고 결정될 수 있고, 그렇지 않으면, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 3 임계치보다 작은 크로마 샘플의 양을 갖는 크로마 블록이 생성되지 않는다고 결정될 수 있다.
조건 3 : 현재 노드의 폭과 높이의 곱이 64와 같고, 현재 노드의 분할 모드가 수직 이진 분할, 수평 이진 분할, 쿼드 분할, 수평 삼진 분할, 또는 수직 삼진 분할이다.
조건 4 : 현재 노드의 폭과 높이의 곱이 128과 같고, 현재 노드의 분할 모드가 수직 삼진 분할 또는 수평 삼진 분할이다.
첫 번째 자식 노드의 예측 모드가 인트라 예측인 경우, 제 1 실시예와 유사하게, 제 5 구현에서, 현재 노드의 분할 모드에 기초하여 현재 노드를 분할함으로써 제 1 임계치인 높이를 갖는 크로마 블록(또는 제 2 임계치보다 작은 높이를 갖는 크로마 블록)이 생성되는지 여부가 결정될 수 있다. 현재 노드를 분할함으로써 생성된 자식 노드가, 제 1 임계치인 높이를 갖는 크로마 블록(또는 제 2 임계치보다 작은 높이를 갖는 크로마 블록)을 포함하고, 첫 번째 자식 노드의 예측 모드가 인트라 예측이라고 결정되는 경우, 현재 노드의 크로마 블록은 더 분할되지 않는다. 예컨대, 제 1 임계치는 2일 수 있고, 제 2 임계치는 4일 수 있다.
현재 노드의 크로마 블록이 더 분할되지 않는 경우, 현재 노드의 크로마 블록은 크로마 블록만을 포함하는 코딩 유닛이 된다. 방법(1100)은 크로마 블록의 예측 정보 및/또는 잔여 정보를 획득하는 단계를 더 포함할 수 있다.
다른 구현에서, 현재 노드의 분할 모드 및 현재 노드의 크기에 기초하여, 현재 노드를 분할함으로써 생성된 자식 노드가 임계치보다 작은 측면 길이를 갖는 크로마 블록을 포함한다고 결정된다. 첫 번째 자식 노드의 예측 모드가 인터 예측인 경우, 현재 노드의 분할 모드에 기초하여 현재 노드의 크로마 블록이 분할된다. 선택적으로, 크로마 블록의 대응하는 자식 노드의 움직임 정보는 현재 노드의 자식 노드의 움직임 정보에 기초하여 결정된다. 예컨대, 현재 노드의 크로마 블록의 자식 노드의 움직임 정보는 대응하는 루마 노드의 움직임 정보로서 설정될 수 있다(즉, 크로마 블록의 각 자식 노드의 움직임 정보는 비트스트림으로부터 파싱될 필요가 없다). 크로마 블록의 자식 노드가 파싱되어 크로마 블록의 자식 노드의 잔여 정보를 획득한다.
첫 번째 자식 노드의 예측 모드가 인터 예측이고, 이하의 조건 중 어느 하나가 참인 경우, 현재 노드의 크로마 블록은 여전히 분할되어야 한다.
조건 1 : 현재 노드의 폭이 제 2 임계치의 두 배와 같고, 현재 노드의 분할 모드가 수직 이진 분할이다.
조건 2 : 현재 노드의 높이가 제 2 임계치의 두 배와 같고, 현재 노드의 분할 모드가 수평 이진 분할이다.
조건 3 : 현재 노드의 폭이 제 2 임계치의 네 배와 같고, 현재 노드의 분할 모드가 수직 삼진 분할이다.
조건 4 : 현재 노드의 높이가 제 2 임계치의 네 배와 같고, 현재 노드의 분할 모드가 수평 삼진 분할이다.
조건 5 : 현재 노드의 폭이 제 2 임계치의 두 배와 같고 현재 노드의 분할 모드가 쿼드 분할이다.
일반적으로, 현재 노드의 폭은 현재 노드에 대응하는 루마 블록의 폭이고, 현재 노드의 높이는 현재 노드에 대응하는 루마 블록의 높이이다. 특정한 구현에서, 예컨대, 제 2 임계치는 4일 수 있다.
실시예 3에서, 크로마 블록 분할 모드, 대응하는 예측 정보 파싱 모드, 및 대응하는 잔여 정보 파싱 모드는 루마 노드의 예측 모드에 기초하여 결정될 수도 있다. 이러한 방식으로, 더 높은 유연성이 달성됩니다. 또한, 루마 노드의 예측 모드가 인트라 예측인 경우, 현재 노드의 크로마 블록은 더 분할되지 않으므로, 크로마 인코딩 및 디코딩 효율이 향상되고, 코덱의 최대 처리량이 감소되고, 코덱의 구현이 용이하게 된다.
CU 레벨에서의 일부 구문 구조가 표 1에 나타날 수 있다. 현재 노드가 자식 노드로 더 분할되지 않는 경우, 현재 노드는 코딩 유닛이고, 코딩 유닛의 예측 블록은 이하의 구문 구조에 따라 파싱된다.
skip_flag는 스킵 모드를 표현하는 플래그이다. skip_flag의 값이 1인 경우, 현재 CU에 스킵 모드가 사용되는 것을 나타내고, skip_flag의 값이 0인 경우, 현재 CU에 스킵 모드가 사용되지 않는 것을 나타낸다.
merge_flag는 직접 모드를 표현하는 플래그이다. merge_flag의 값이 1인 경우, 현재 CU에 병합 모드가 사용되는 것을 나타내고, merge_flag의 값이 0인 경우, 병합 모드가 사용되지 않는 것을 나타낸다.
cu_pred_mode는 코딩 유닛의 예측 모드를 표현하는 플래그이다. cu_pred_mode의 값이 1인 경우, 현재 코딩 유닛에 인트라 예측 모드가 사용되는 것을 나타내고, cu_pred_mode의 값이 0인 경우, 현재 코딩 유닛에 공통 인터 예측 모드가 사용되는 것을 나타낸다.
coding_unit( x0, y0, uiDepth, uiWidth, uiHeight ) { |
... |
skip_flag |
... |
if ( ! skipFlag ) { |
merge_flag |
... |
} |
if ( ! mergeFlag ) |
cu_pred_mode |
... |
} |
CU 레벨에서의 일부 구문 파싱이 표 2에 나타날 수 있다. 표 2는 단지 예일 뿐이다. 표 2에서, skip_flag의 의미는 표 1의 skip_flag의 의미와 동일하고, pred_mode_flag의 의미는 표 1의 cu_pred_mode의 의미와 동일하다.cu_skip_flag는 스킵 모드를 표현하는 플래그이다. cu_skip_flag의 값이 1인 경우, 현재 CU에 스킵 모드가 사용되는 것을 나타내고, cu_skip_flag의 값이 0인 경우, 현재 CU에 스킵 모드가 사용되지 않는 것을 나타낸다.
merge_flag는 직접 모드를 표현하는 플래그이다. merge_flag의 값이 1인 경우, 현재 CU에 병합 모드가 사용되는 것을 나타내고, merge_flag의 값이 0인 경우, 병합 모드가 사용되지 않는 것을 나타낸다.
pred_mode_flag는 코딩 유닛의 예측 모드를 표현하는 플래그이다. pred_mode_flag의 값이 1인 경우, 현재 예측 유닛에 인트라 예측 모드가 사용되는 것을 나타내고, pred_mode_flag의 값이 0인 경우, 현재 예측 유닛에 공통 인터 예측 모드가 사용되는 것을 나타낸다. pred_mode_flag의 값이 1인 경우, CuPredMode[x0][y0]의 값은 MODE_INTRA이고, pred_mode_flag의 값이 0인 경우, CuPredMode[x0][y0]의 값은 MODE_INTER이다.
coding_unit(x0, y0, cbWidth, cbHeight, treeType) { | Descriptor |
if(tile_group_type != I | | sps_ibc_enabled_flag) { | |
if(treeType != DUAL_TREE_CHROMA) | |
cu_skip_flag[x0][y0] | ae(v) |
if(cu_skip_flag[x0][y0] = = 0 && tile_group_type != I) | |
pred_mode_flag | ae(v) |
... | |
} | |
if(CuPredMode[x0][y0] = = MODE_INTRA ) { | |
... | |
} else if(treeType != DUAL_TREE_CHROMA) {/* MODE_INTER or MODE_IBC */ | |
if(cu_skip_flag[x0][y0] = = 0) | |
merge_flag[x0][y0] | ae(v) |
... | |
} | |
} |
크기가 8×M(또는 M×8)인 노드는 수직 이진 분할(또는 수평 이진 분할) 모드에서 크기가 4×M(또는 M×4)인 두 개의 자식 노드로 분할된다. 유사하게, 크기가 16×M(또는 M×16)인 노드는 수직 확장 쿼드 분할(또는 수평 확장 쿼드 분할) 모드에서 크기가 4×M(또는 M×4)인 네 개의 자식 노드와 크기가 8×N(또는 N×8)인 하나의 자식 노드로 분할된다. 유사하게, 크기가 16×M(또는 M×16)인 노드는 수직 삼진 분할(또는 수평 삼진 분할) 모드에서 분할되어 크기가 4×M(또는 M×4)인 두 개의 자식 노드와 크기가 8×M(또는 M×8)인 하나의 자식 노드를 생성한다. YUV 4:2:0의 데이터 포맷의 경우, 크로마 성분의 해상도는 루마 성분의 1/2이다. 즉, 4×M 노드는 하나의 4×M 루마 블록과 두 개의 2×(M/2) 크로마 블록을 포함한다. 하드웨어 디코더의 경우, (특히 크기가 2×2, 2×4, 및 2×8인) 작은 블록의 처리 비용이 비교적 높다. 그러나, 이 분할 모드에서는, 크기가 2×2, 2×4 등인 작은 블록이 생성되어, 하드웨어 디코더의 구현에 불리하다. 하드웨어 디코더의 경우, 작은 블록의 처리 복잡함이 비교적 높고, 이는 이하의 세 가지 측면에서 구체적으로 구체화된다.⑴ 인트라 예측에서의 문제점 : 하드웨어 설계에서, 처리 속도를 높이기 위해, 인트라 예측을 위해 일반적으로 16개의 픽셀이 동시에 한 번에 처리되고, 크기가 2×2, 2×4, 4×2 등인 작은 블록은 16개의 픽셀 미만을 포함하여, 인트라 예측 처리 성능이 저하된다.
⑵ 계수 코딩에서의 문제점 : HEVC에서, 변환 계수 코딩은 16개의 계수를 포함하는 계수 그룹(coefficient group, CG)을 기반으로 하지만, 크기가 2×2, 2×4, 4×2 등인 작은 블록은 4개 또는 8개의 변환 계수를 포함한다. 결과적으로, 4개의 계수와 8개의 계수를 포함하는 계수 그룹이 이러한 작은 블록의 계수 인코딩을 지원하기 위해 추가되어야 하고, 따라서, 구현 복잡함이 증가된다.
⑶ 인터 예측에서의 문제점 : 작은 블록에 대한 인터 예측은 데이터 대역폭에 대한 비교적 높은 요구사항을 제기하고, 디코딩 처리 속도에도 영향을 미친다.
분할 모드에 기초하여 노드가 더 분할되고, 생성된 자식 노드 중 하나가 측면 길이가 2인 크로마 블록을 포함하는 경우, 이 분할 모드에서 자식 노드에 포함된 루마 블록이 계속 더 분할되고, 자식 노드에 포함된 크로마 블록은 더 분할되지 않는다. 이 모드는 측면 길이가 2인 크로마 블록의 생성을 방지하고, 디코더의 최대 처리량을 줄이고, 디코더의 구현을 용이하게 한다. 또한, 루마 블록 예측 모드에 기초하여 크로마 블록 예측 모드를 결정하는 방법이 제안되어, 코딩 효율을 효과적으로 향상시킬 수 있다.
본 발명에서 제공되는 방법은 전술한 실시예에서의 비디오 코덱에 적용될 수 있다.
실시예 4
본 실시예는 비디오 디코딩에서의 블록 분할 모드에 관한 것이다. 본 실시예에서의 비디오 데이터 포맷은 YUV 4:2:0 포맷이다. 유사한 모드가 YUV 4:2:2 데이터에 사용될 수 있다.
스텝 1 : 노드 A의 분할 모드 S를 파싱한다. 여기서 노드 A가 계속 분할되는 경우, 스텝 2가 수행되고, 현재 노드가 자식 노드로 더 분할되지 않는 경우, 현재 노드는 하나의 코딩 유닛에 대응하고, 코딩 유닛에 관한 정보가 파싱을 통해 획득된다.
노드 A의 분할 모드는 쿼드트리 분할, 수직 이진 분할, 수평 이진 분할, 수직 삼진 분할, 및 수평 삼진 분할 중 적어도 하나일 수 있거나, 다른 분할 모드일 수 있다. 노드 A의 분할 모드는 본 발명에서 제한되지 않는다. 현재 노드의 분할 모드 정보는 비트스트림으로 송신될 수 있고, 현재 노드의 분할 모드는 비트스트림에서의 대응하는 구문 요소를 파싱함으로써 획득될 수 있다. 현재 노드의 분할 모드는 미리 설정된 규칙에 따라 대안적으로 결정될 수 있고, 본 발명에서 제한되지 않는다.
스텝 2 : 분할 모드 S에 기초하여 노드 A를 분할함으로써 획득된 자식 노드에서의 적어도 하나의 자식 노드 B의 크로마 블록이 작은 블록인지 여부(또는 노드 A의 폭, 높이, 및/또는 분할 모드, 및/또는 노드 B의 폭 및 높이가 조건 중 적어도 하나를 충족하는지 여부)를 결정한다. 노드 A를 분할함으로써 획득된 자식 노드에서의 적어도 하나의 자식 노드 B의 크로마 블록이 작은 블록인 경우, 스텝 3 내지 스텝 6이 수행된다.
구체적으로, 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록이 서브블록인지 여부를 결정하기 위해 이하의 방법 중 하나가 사용될 수 있다.
⑴ 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록이 2×2, 2×4, 또는 4×2의 크기를 갖는 경우, 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록은 작은 블록이다.
⑵ 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록의 폭 또는 높이가 2인 경우, 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록은 작은 블록이다.
⑶ 노드 A가 128개의 루마 샘플을 포함하고 노드 A에 대해 삼진 트리 분할이 수행되거나, 노드 A가 64개의 루마 샘플을 포함하고 노드 A에 대해 이진 트리 분할, 쿼드트리 분할, 또는 삼진 트리 분할이 수행되는 경우, 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록은 작은 블록이다.
⑷ 노드 A가 256개의 루마 샘플을 포함하고 노드가 삼진 트리 분할 모드 또는 쿼드트리 분할 모드로 분할되거나, 노드 A가 128개의 루마 샘플을 포함하고 노드가 이진 트리 분할 모드로 분할되는 경우, 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록은 작은 블록이다.
⑸ 노드 A가 N1개의 루마 샘플을 포함하고 노드 A에 대해 삼진 트리 분할이 수행되는 경우. 여기서 N1은 64, 128, 또는 256이다.
⑹ 노드 A가 N2개의 루마 샘플을 포함하고 노드 A에 대해 쿼드트리 분할이 수행되는 경우. 여기서 N2는 64 또는 256이다.
⑺ 노드 A가 N3개의 루마 샘플을 포함하고 노드 A가 이진 트리 분할 모드로 분할되는 경우. 여기서 N3은 64, 128, 또는 256이다.
노드 A가 128개의 루마 샘플을 포함한다는 것은 현재 노드의 면적이 128이거나, 노드 A의 폭과 높이의 곱이 128인 것으로 설명될 수도 있다는 것에 유의해야 한다. 세부사항은 여기에 설명되지 않는다.
스텝 3 : 노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 대해 인트라 예측 또는 인터 예측이 수행되도록 제한한다. 모든 코딩 유닛에 대한 인트라 예측 및 인터 예측의 경우, 작은 블록에 대한 병렬 처리가 하드웨어에 의해 구현될 수 있으므로, 인코딩 및 디코딩 성능이 향상된다.
노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 대해 인트라 예측 또는 인터 예측을 수행하도록 결정하기 위해 이하의 방법 중 하나가 사용될 수 있다.
방법 1 : 구문 표에서의 플래그에 기초하여 결정이 수행된다.
분할 모드 S에 기초하여 노드 A를 분할함으로써 획득된 적어도 하나의 자식 노드 B의 크로마 블록이 작은 블록인(그리고 노드 A의 크로마 블록이 작은 블록이 아닌) 경우, 플래그 cons_pred_mode_flag가 비트스트림으로부터 파싱된다. cons_pred_mode_flag의 값이 0인 경우, 노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 대해 인터 예측이 수행되는 것을 나타내고, cons_pred_mode_flag의 값이 1인 경우, 노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 대해 인트라 예측이 수행되는 것을 나타낸다. cons_pred_mode_flag는 블록 분할 처리에서 파싱되어야 하는 구문 요소일 수 있다. 구문 요소가 파싱되면, 노드 A의 커버리지 영역에 있는 코딩 유닛의 cu_pred_mode는 더 이상 파싱되지 않을 수 있고, cu_pred_mode의 값은 cons_pred_mode_flag의 값에 대응하는 기본값이다.
노드 A의 자식 노드에 인트라 예측 모드만이 사용될 수 있는 경우, 예컨대, 노드 A가 인트라 픽처에 있거나(즉, 노드 A가 위치하는 픽처의 유형은 인트라 유형 또는 I 유형임), 또는 노드 A가 인트라 픽처에 있고 IBC 기술이 시퀀스에 사용되지 않고, cons_pred_mode_flag의 값이 기본적으로 1이고, cons_pred_mode_flag가 비트스트림에 존재하지 않는 것에 유의해야 한다. IBC 기술은 인터 예측에 속하거나, 인트라 예측에 속할 수 있다.
방법 2 : 노드 A의 영역에서 첫 번째 노드의 예측 모드에 기초하여 결정이 수행된다.
노드 A의 영역에서의 첫 번째 코딩 유닛 B0의 예측 모드(제 1 코딩 유닛 B0의 예측 모드는 제한되지 않음)가 파싱된다. B0의 예측 모드가 인트라 예측인 경우, 노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 대해 인트라 예측이 수행되고, B0의 예측 모드가 인터 예측인 경우, 노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 대해 인터 예측이 수행된다.
스텝 4 : 노드 A의 커버리지 영역에 있는 코딩 유닛에 사용되는 예측 모드에 기초하여 노드 A의 크로마 블록 분할 모드 및 루마 블록 분할 모드를 결정한다.
노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 대해 인트라 예측 모드가 사용되는 경우, 노드 A의 루마 블록이 분할 모드 S에 기초하여 분할되어, N개의 루마 코딩 트리 노드를 획득하고, 노드 A의 크로마 블록은 분할되지 않고, 하나의 크로마 코딩 블록(줄여서 크로마 CB)에 대응한다. N개의 루마 코딩 트리 노드는 더 분할되지 않도록 제한되거나, 제한되지 않을 수 있다. 루마 자식 노드가 계속 분할되는 경우, 루마 자식 노드의 분할 모드가 파싱되어, 재귀 분할을 수행한다. 루마 코딩 트리 노드가 더 분할되지 않는 경우, 루마 코딩 트리 노드는 루마 코딩 블록(줄여서 루마 CB)에 대응한다. 크로마 CB에 대응하는 크로마 변환 블록과 크로마 코딩 블록은 동일한 크기를 갖고, 크로마 예측 블록과 크로마 코딩 블록은 동일한 크기를 갖는다.
노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 인터 예측 모드가 사용되는 경우, 노드 A의 루마 블록 및 크로마 블록은 분할 모드 S에 기초하여 루마 블록 및 크로마 블록을 포함하는 N개의 코딩 트리 노드로 더 분할되고, N개의 코딩 트리 노드는 계속 분할되거나 분할되지 않을 수 있고, 루마 블록 및 크로마 블록을 포함하는 코딩 유닛에 대응한다.
스텝 5 : 노드 A를 분할함으로써 획득된 CU의 예측 정보 및 잔여 정보를 파싱한다.
예측 정보는 예측 모드(인트라 예측 모드 또는 비 인트라 예측 모드를 나타냄), 인트라 예측 모드, 인터 예측 모드, 움직임 정보 등을 포함한다. 움직임 정보는 예측 방향(순방향, 역방향, 또는 양방향), 참조 인덱스(reference index), 및 움직짐 벡터(motion vector)와 같은 정보를 포함할 수 있다.
잔여 정보는 코딩된 블록 플래그(coded block flag, CBF), 변환 계수, 변환 유형(예컨대, DCT-2, DST-7, DCT-8) 등을 포함한다. 변환 유형은 기본적으로 DCT-2일 수 있다.
노드 A를 분할함으로써 획득된 각 CU에 대해 인트라 예측만 수행될 수 있는 것으로 제한되는 경우, 노드 A를 분할함으로서 획득된 루마 CB의 예측 블록의 파싱은 skip_flag, merge_flag, 및 cu_pred_mode가 각각 0, 0 및 1로 설정되거나(즉, skip_flag, merge_flag, 및 cu_pred_mode 중 어느 것도 비트스트림에 존재하지 않음), skip_flag 및 cu_pred_mode가 각각 기본적으로 0 및 1로 설정되고(즉, skip_flag 및 cu_pred_mode 중 어느 것도 비트스트림에 존재하지 않음), 루마 CB의 인트라 예측 모드 정보가 파싱되는 것을 포함하고, 노드 A를 분할함으로써 획득된 크로마 CB의 예측 블록의 파싱은 크로마 CB의 인트라 예측 모드를 파싱하는 것을 포함한다. 크로마 CB의 인트라 예측 모드를 파싱하는 방법은 ⑴ 크로마 CB의 인트라 예측 모드를 획득하기 위해 비트스트림으로부터 구문 요소를 파싱하는 것과, ⑵ 크로마 CB의 인트라 예측 모드를 크로마 인트라 예측 모드 집합에서의 하나의 예측 모드, 예컨대, 교차 성분 선형 모델 모드, DM 모드(chroma derived mode, DM), 또는 IBC 모드 중 하나로 직접 설정하는 것일 수 있다.
노드 A를 분할함으로써 획득된 각 CU에 대해 인터 예측만 수행될 수 있는 것으로 제한되는 경우, 노드 A를 분할함으로써 획득된 CU의 예측 모드의 파싱은 skip_flag 또는/및 merge_flag를 파싱하는 것과, cu_pred_mode를 기본적으로 0으로 설정하는 것과, 병합 인덱스(merge index), 인터 예측 방향(inter dir), 참조 인덱스(reference index), 움직임 벡터 예측자 인덱스(motion vector predictor index), 및 움직임 벡터 차이(motion vector difference)와 같은 인터 예측 블록을 파싱을 통해 획득하는 것을 포함한다.
skip_flag는 스킵 모드를 표현하는 플래그이다. skip_flag의 값이 1인 경우, 현재 CU에 스킵 모드가 사용되는 것을 나타내고, skip_flag 값이 0인 경우, 현재 CU에 스킵 모드가 사용되지 않는 것을 나타낸다. merge_flag는 병합 모드를 표현하는 플래그이다. merge_flag의 값이 1인 경우, 현재 CU에 병합 모드가 사용되는 것을 나타내고, merge_flag의 값이 0인 경우, 병합 모드가 사용되지 않는 것을 나타낸다. cu_pred_mode는 코딩 유닛의 예측 모드를 표현하는 플래그이다. cu_pred_mode의 값이 1인 경우, 현재 예측 유닛에 대해 인트라 예측이 수행되는 것을 나타내고, cu_pred_mode의 값이 0인 경우, 현재 예측 유닛에 대해 공통 인터 예측이 수행되는 것을 나타낸다(인터 예측 방향, 참조 인덱스, 움직임 벡터 예측자 인덱스, 및 움직임 벡터 차이 성분과 같은 정보가 비트스트림에서 식별됨).
본 실시예에서, 인트라 예측 모드는 코딩 블록이 위치하는 픽처의 공간적 참조 픽셀을 사용함으로써 코딩 블록의 예측자를 생성하기 위한 예측 모드, 예컨대, 직류 모드(direct current mode, DC mode), 평면 모드(Planar mode), 또는 각도 모드(angular mode)이거나, 템플릿 매칭 모드(template matching mode) 및 IBC 모드를 포함할 수 있음에 유의해야 한다.
인터 예측 모드는 코딩 블록의 참조 픽처에서의 시간적 참조 픽셀을 사용함으로써 코딩 블록의 예측자를 생성하기 위한 예측 모드, 예컨대, 스킵 모드(Skip mode), 병합 모드(Merge mode), AMVP(advanced motion vector prediction) 모드 또는 공통 인터 모드, 또는 IBC 모드이다.
스텝 6 : 노드 A에 대응하는 픽처 블록의 재구성된 신호를 획득하기 위해 각 CU를 디코딩한다.
예컨대, 각 CU의 예측 블록은 CU에 대해 인터 예측 처리 또는 인트라 예측 처리를 수행하여, CU의 인터 예측된 픽처 또는 인트라 예측된 픽처를 획득한다. 그리고, 각 CU의 잔여 정보에 기초하여 변환 계수에 대해 역양자화 및 역변환 처리가 수행되어 잔여 픽처를 획득하고, 잔여 픽처가 대응하는 영역에서의 예측된 픽처에 중첩되어 재구성된 픽처를 생성한다.
실시예 4의 분할 모드에 따르면, 인트라 예측이 수행되는 작은 크로마 블록이 생성되지 않으므로, 작은 블록의 인트라 예측에 있어서의 문제점을 해결한다.
실시예 5
본 실시예의 스텝 1, 스텝 2, 스텝 3, 및 스텝 6은 실시예 4의 것과 동일하다.
스텝 4 : 노드 A의 크로마 블록 분할 모드 및 루마 블록 분할 모드를 결정한다.
노드 A의 루마 블록이 분할 모드 S에 기초하여 계속 분할되어, N개의 루마 코딩 트리 노드를 생성한다. 노드 A의 크로마 블록은 더 분할되지 않고, 하나의 크로마 코딩 블록(chroma CB)에 대응한다. 크로마 CB에 대응하는 크로마 변환 블록과 크로마 코드 블록은 동일한 크기를 갖는다. [참고 : 실시예 4와 비교하여, 본 실시예에서는, 인터 예측 모드가 사용되는지 또는 인트라 예측 모드가 사용되는지 여부에 관계없이, 크로마 블록은 항상 분할되지 않고, 노드 A의 커버리지 영역에 대한 예측 모드에 관계없이 루마 블록이 항상 분할 모드 S에 기초하여 분할된다.]
스텝 5 : 노드 A를 분할함으로써 획득된 CU의 예측 블록 및 잔여 정보를 파싱한다.
노드 A를 분할함으로써 획득된 각 CU에 대해 인트라 예측만 수행될 수 있는 것으로 제한되는 경우, 처리는 실시예 4와 동일하다.
노드 A를 분할함으로써 획득된 각 CU에 대해 인터 예측만 수행될 수 있는 것으로 제한되는 경우, 노드 A를 분할함으로써 획득된 루마 CB의 예측 모드의 파싱은 skip_flag 또는/및 merge_flag를 파싱하는 것과, cu_pred_mode를 기본적으로 0으로 설정하는 것과, 병합 인덱스(merge index), 인터 예측 방향(inter dir), 참조 인덱스(reference index), 움직임 벡터 예측자 인덱스(motion vector predictor index), 및 움직임 벡터 차이(motion vector difference)와 같은 인터 예측 블록을 파싱을 통해 획득하는 것을 포함한다. 루마 CB에서의 각 4×4 서브블록의 움직임 정보는 파싱을 통해 획득된 인터 예측 블록으로부터 유도된다.
노드 A를 분할함으로써 획득된 각 CU에 대해 인터 예측만 수행될 수 있는 것으로 제한되는 경우, 노드 A를 분할함으로써 획득된 크로마 CB의 예측 블록은 파싱될 필요가 없고, 크로마 CB가 2×2 크로마 서브블록으로 분할된다(여기서 분할 모드는 분할 모드 S일 수 있음). 각 2×2 크로마 서브블록의 움직임 정보는 2×2 크로마 서브블록에 대응하는 4×4 루마 영역의 움직임 정보이다.
실시예 5의 분할 모드에 따르면, 인트라 예측이 수행되는 작은 크로마 블록도 생성되지 않고 16픽셀 미만의 변환 블록도 생성되지 않는다. 따라서, 인트라 예측 및 계수 코딩에 있어서의 전술한 문제점은 실시예 5에서 해결된다.
실시예 6
본 실시예에서의 스텝 1, 스텝 2, 스텝 3, 스텝 4, 및 스텝 6은 실시예 5의 것과 동일하다.
스텝 5 : 노드 A를 분할함으로써 획득된 CU의 예측 블록 및 잔여 정보를 파싱한다.
노드 A를 분할함으로써 획득된 각 CU에 대해 인트라 예측만 수행될 수 있는 것으로 제한되는 경우, 처리는 실시예 5와 동일하다.
노드 A를 분할함으로서 획득된 각 CU에 대해 인터 예측만 수행될 수 있는 것으로 제한되는 경우, 노드 A를 분할함으로써 획득된 루마 CB의 예측 블록의 파싱은 실시예 5와 동일하다.
노드 A를 분할함으로써 획득된 각 CU에 대해 인터 예측만 수행될 수 있는 것으로 제한되는 경우, 노드 A를 분할함으로써 획득된 크로마 CB의 예측 블록은 파싱될 필요가 없고, 크로마 예측 블록과 크로마 코딩 블록은 동일한 크기를 갖고, 크로마 CB의 움직임 정보는 크로마 CB에 대응하는 루마 영역(예컨대, 루마 영역의 중앙, 우측 하단 코너, 또는 좌측 상단 코너)에서의 특정한 미리 설정된 위치에 대한 움직임 정보이다.
실시예 6의 분할 모드에 따르면, 인트라 예측이 수행되는 작은 크로마 블록, 작은 블록의 변환 블록, 및 인터 예측이 생성되는 작은 크로마 블록 중 어느 것도 생성되지 않는다.
실시예 7
스텝 1 : 스텝 1은 실시예 4의 스텝 1과 동일하다.
스텝 2 : 분할 모드 S에 기초하여 노드 A를 분할함으로써 획득된 자식 노드에서의 적어도 하나의 자식 블록 B의 루마 블록이 4×4 루마 블록인지 여부(노드 A의 폭, 높이, 및/또는 분할 모드, 및/또는 노드 B의 폭 및 높이가 사례 1의 조건 중 적어도 하나를 충족하는지 여부)를 결정한다.
노드 A의 크기(즉, 폭 및 높이) 및/또는 분할 모드 S가 사례 1의 조건 중 적어도 하나를 충족하는 경우, 노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 대해 인트라 예측이 수행되는 것으로 제한되고, 그렇지 않으면, 분할 모드 S에 기초하여 노드 A를 분할함으로써 획득된 자식 노드에서의 적어도 하나의 자식 노드 B의 크로마 블록이 작은 블록인지 여부(노드 A의 크기 및/또는 분할 모드 S, 및/또는 노드 B의 폭 및 높이가 사례 2의 조건 중 적어도 하나를 충족하는지 여부)가 결정되고, 만약 그렇다면, 스텝 3 내지 스텝 6이 수행된다.
구체적으로, 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록이 작은 블록이라고 결정하는 방법에는 이하의 두 가지 사례가 있다.
사례 1
이하의 미리 설정된 조건 중 하나 이상이 참이면, 노드 A는 4×4 루마 블록을 획득하기 위해 분할 모드 S에 기초하여 분할된다.
⑴ 노드 A가 M1개의 픽셀을 포함하고, 노드 A의 분할 모드가 쿼드트리 분할이다. 예컨대, M1은 64이다.
⑵ 노드 A가 M2개의 픽셀을 포함하고, 노드 A의 분할 모드가 삼진 트리 분할이다. 예컨대, M2는 64이다.
⑶ 노드 A가 M3개의 픽셀을 포함하고, 노드 A의 분할 모드가 이진 트리 분할이다. 예컨대, M3은 32이다.
⑷ 노드 A의 폭이 제 2 임계치의 네 배와 같고, 노드 A의 높이가 제 2 임계치와 같고, 노드 A의 분할 모드가 수직 삼진 트리 분할이다.
⑸ 노드 A의 폭이 제 2 임계치와 같고, 노드 A의 높이가 제 2 임계치의 네 배와 같고, 노드 A의 분할 모드가 수평 삼진 트리 분할이다.
⑹ 노드 A의 폭이 제 2 임계치의 두 배와 같고, 노드 A의 높이가 제 2 임계치와 같고, 현재 노드의 분할 모드가 수직 이진 분할이다.
⑺ 노드 A의 높이가 제 2 임계치의 두 배와 같고, 노드 A의 폭이 제 2 임계치와 같고, 현재 노드의 분할 모드가 수평 이진 분할이다.
⑻ 노드 A의 폭 또는/및 높이가 제 2 임계치의 두 배이고, 노드 A의 분할 모드가 쿼드트리 분할이다.
크기는 노드 A에 대응하는 픽처 영역의 폭 및 높이, 또는 노드 A에 대응하는 픽처 영역에 포함된 루마 샘플의 양, 또는 노드 A에 대응하는 픽처 영역의 면적일 수 있다.
일반적으로, 현재 노드의 폭은 현재 노드에 대응하는 루마 블록의 폭이고, 현재 노드의 높이는 현재 노드에 대응하는 루마 블록의 높이이다. 특정한 구현에서, 예컨대, 제 2 임계치는 4일 수 있다.
사례 2
⑴ 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록이 2×4 또는 4×2의 크기를 갖는다.
⑵ 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록의 폭 또는 높이가 2이다.
⑶ 노드 A가 128개의 루마 샘플을 포함하고 노드 A에 대해 삼진 트리 분할이 수행되거나, 노드 A가 64개의 루마 샘플을 포함하고 노드 A에 대해 이진 트리 분할, 쿼드트리 분할, 또는 삼진 트리 분할이 수행된다.
⑷ 노드 A가 256개의 루마 샘플을 포함하고 노드에 대해 삼진 트리 분할 또는 쿼드트리 분할이 수행되거나, 노드 A가 128개의 루마 샘플을 포함하고 노드에 대해 이진 트리 분할이 수행된다.
⑸ 노드 A가 N1개의 루마 샘플을 포함하고 노드 A에 대해 삼진 트리 분할이 수행된다. 여기서 N1은 64, 128, 또는 256이다.
⑹ 노드 A가 N2개의 루마 샘플을 포함하고 노드 A에 대해 쿼드트리 분할이 수행된다. 여기서 N2는 64 또는 256이다.
⑺ 노드 A가 N3개의 루마 샘플을 포함하고 노드 A에 대해 이진 트리 분할이 수행된다. 여기서 N3은 64, 128, 또는 256이다.
노드 A가 128개의 루마 샘플을 포함한다는 것은 현재 노드의 면적이 128이거나, 노드 A의 폭과 높이의 곱이 128이라고 설명될 수도 있음에 유의해야 한다. 세부사항은 여기에 설명되지 않는다.
스텝 3 : 스텝 3은 실시예 4의 스텝 3과 동일하다.
스텝 4 : 노드 A의 커버리지 영역에 있는 코딩 유닛에 사용되는 예측 모드에 기초하여 노드 A의 크로마 블록 분할 모드 및 루마 블록 분할 모드를 결정한다.
노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 인터 예측 모드가 사용되는 경우, 노드 A의 루마 블록 및 크로마 블록이 분할 모드 S에 기초하여 분할되어, 노드 A의 자식 노드 및/또는 노드 A의 커버리지 영역에 있는 자식 노드를 획득한다. 노드 A의 자식 노드 및/또는 노드 A의 커버리지 영역에 있는 자식 노드의 분할 모드에 기초하여 4×4 루마 블록이 생성되는 경우, 자식 노드의 분할 모드가 허용되지 않거나 자식 노드가 계속 분할될 수 없다. 예컨대, 노드 A가 8×8의 크기를 갖고 두 개의 8×4(또는 두 개의 4×8) 노드가 수평 이진 트리 분할(또는 수직 이진 트리 분할) 모드에서 노드 A를 분할함으로써 생성되는 경우, 8×4(또는 4×8) 노드가 계속해서 4×4 블록으로 분할되고, 이 경우, 8×4(또는 4×8) 노드가 계속 분할될 수 없다.
노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 인트라 예측 모드가 사용되는 경우, 실시예 4, 실시예 5, 및 실시예 6의 방법이 구현 방법으로서 사용될 수 있고, 세부사항은 여기서 다시 설명되지 않는다. 예컨대, 노드 A의 루마 블록이 분할되고, 노드 A의 크로마 블록은 분할되지 않는다.
스텝 5 : 노드 A를 분할함으로써 획득된 CU의 예측 블록 및 잔여 정보를 파싱한다.
이 스텝은 실시예 4의 스텝 5와 동일하고, 세부사항은 여기서 다시 설명되지 않는다.
스텝 6 : 노드 A에 대응하는 픽처 블록의 재구성된 신호를 획득하기 위해 각 CU를 디코딩한다.
스텝 6은 실시예 4의 스텝 6의 방식으로 구현될 수 있고, 여기서 더 설명되지 않는다.
실시예 8
스텝 1 : 스텝 1은 실시예 4의 스텝 1과 동일하다.
스텝 2 : 분할 모드 S에 기초하여 노드 A를 분할함으로써 획득된 자식 노드에서의 적어도 하나의 자식 블록 B의 루마 블록이 4×4 루마 블록인지 여부(노드 A의 폭, 높이, 및/또는 분할 모드, 및/또는 노드 B의 폭 및 높이가 사례 1의 조건 중 적어도 하나를 충족하는지 여부)를 결정한다. 노드 A의 크기(즉, 폭 및 높이) 및/또는 분할 모드 S가 사례 1의 조건 중 적어도 하나를 충족하는 경우, 노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 대해 인트라 예측이 수행되는 것으로 제한되거나, 또는
분할 모드 S에 기초하여 노드 A를 분할함으로써 획득된 자식 노드에서의 적어도 하나의 자식 노드 B의 크로마 블록이 작은 블록인지 여부(또는 노드 A의 크기 및/또는 분할 모드 S, 및/또는 노드 B의 폭 및 높이가 사례 2의 조건 중 적어도 하나를 충족하는지 여부)가 결정되고, 스텝 3 내지 스텝 6이 수행된다.
구체적으로, 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록이 작은 블록이라고 결정하는 방법에는 이하의 두 가지 사례가 있다.
사례 1
이하의 미리 설정된 조건 중 하나 이상이 참이면, 4×4 루마 블록을 획득하기 위해 분할 모드 S에 기초하여 노드 A가 분할된다.
⑴ 노드 A가 M1개의 픽셀을 포함하고, 노드 A의 분할 모드가 쿼드트리 분할이다. 예컨대, M1은 64이다.
⑵ 노드 A가 M2개의 픽셀을 포함하고, 노드 A의 분할 모드가 삼진 트리 분할이다. 예컨대, M2는 128이다.
⑶ 노드 A가 M3개의 픽셀을 포함하고, 노드 A의 분할 모드가 이진 트리 분할이다. 예컨대, M3은 32이다.
⑷ 노드 A의 폭이 제 2 임계치의 네 배와 같고, 노드 A의 높이가 제 2 임계치와 같고, 노드 A의 분할 모드가 수직 삼진 트리 분할이다.
⑸ 노드 A의 폭이 제 2 임계치와 같고, 노드 A의 높이가 제 2 임계치의 네 배와 같고, 노드 A의 분할 모드가 수평 삼진 트리 분할이다.
⑹ 노드 A의 폭이 제 2 임계치의 두 배와 같고, 노드 A의 높이가 제 2 임계치와 같고, 현재 노드의 분할 모드가 수직 이진 분할이다.
⑺ 노드 A의 높이가 제 2 임계치의 두 배와 같고, 노드 A의 폭이 제 2 임계치와 같고, 현재 노드의 분할 모드가 수평 이진 분할이다.
⑻ 노드 A의 폭 또는/및 높이가 제 2 임계치의 두 배이고, 노드 A의 분할 모드가 쿼드트리 분할이다.
크기는 노드 A에 대응하는 픽처 영역의 폭 및 높이, 또는 노드 A에 대응하는 픽처 영역에 포함된 루마 샘플의 양, 또는 노드 A에 대응하는 픽처 영역의 면적일 수 있다.
일반적으로, 현재 노드의 폭은 현재 노드에 대응하는 루마 블록의 폭이고, 현재 노드의 높이는 현재 노드에 대응하는 루마 블록의 높이이다. 특정한 구현에서, 예컨대, 제 2 임계치는 4일 수 있다.
사례 2
⑴ 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록이 2×4 또는 4×2의 크기를 갖는다.
⑵ 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록의 폭 또는 높이가 2이다.
⑶ 노드 A가 128개의 루마 샘플을 포함하고 노드 A에 대해 삼진 트리 분할이 수행되거나, 노드 A가 64개의 루마 샘플을 포함하고 노드 A에 대해 이진 트리 분할, 쿼드트리 분할, 또는 삼진 트리 분할이 수행된다.
⑷ 노드 A가 256개의 루마 샘플을 포함하고 노드에 대해 삼진 트리 분할 또는 쿼드트리 분할이 수행되거나, 노드 A가 128개의 루마 샘플을 포함하고 노드에 대해 이진 트리 분할이 수행된다.
⑸ 노드 A가 N1개의 루마 샘플을 포함하고 노드 A에 대해 삼진 트리 분할이 수행된다. 여기서 N1은 64, 128, 또는 256이다.
⑹ 노드 A가 N2개의 루마 샘플을 포함하고 노드 A에 대해 쿼드트리 분할이 수행된다. 여기서 N2는 64 또는 256이다.
⑺ 노드 A가 N3개의 루마 샘플을 포함하고 노드 A에 대해 이진 트리 분할이 수행된다. 여기서 N3은 64, 128, 또는 256이다.
노드 A가 128개의 루마 샘플을 포함한다는 것은 현재 노드의 면적이 128이거나, 노드 A의 폭과 높이의 곱이 128이라고 설명될 수도 있음에 유의해야 한다. 세부사항은 여기에 설명되지 않는다.
스텝 3 : 스텝 3은 실시예 4의 스텝 3과 동일하다.
스텝 4 : 노드 A의 커버리지 영역에 있는 코딩 유닛에 사용되는 예측 모드에 기초하여 노드 A의 크로마 블록 분할 모드 및 루마 블록 분할 모드를 결정한다.
노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 인터 예측 모드가 사용되는 경우, 노드 A의 루마 블록 및 크로마 블록이 분할 모드 S에 기초하여 분할되어, 노드 A의 자식 노드 및/또는 노드 A의 커버리지 영역에 있는 자식 노드를 획득한다. 노드 A의 자식 노드 및/또는 노드 A의 커버리지 영역에 있는 자식 노드의 분할 모드에 기초하여 4×4 루마 블록이 생성되는 경우, 자식 노드의 분할 모드가 허용되지 않거나 자식 노드가 계속 분할될 수 없다. 예컨대, 노드 A가 8×8의 크기를 갖고 두 개의 8×4(또는 두 개의 4×8) 노드가 수평 이진 트리 분할(또는 수직 이진 트리 분할) 모드에서 노드 A를 분할함으로써 생성되는 경우, 8×4(또는 4×8) 노드가 계속해서 4×4 블록으로 분할되고, 이 경우, 8×4(또는 4×8) 노드는 계속 분할될 수 없다.
노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 인트라 예측 모드가 사용되는 경우, 실시예 4, 실시예 5, 및 실시예 6의 방법이 구현 방법으로서 사용될 수 있고, 세부사항은 여기서 다시 설명되지 않는다. 예컨대, 노드 A의 루마 블록이 분할되고, 노드 A의 크로마 블록은 분할되지 않는다.
스텝 5 : 노드 A를 분할함으로써 획득된 CU의 예측 블록 및 잔여 정보를 파싱한다.
이 스텝은 실시예 4의 스텝 5와 동일하고, 세부사항은 여기서 다시 설명되지 않는다.
스텝 6 : 노드 A에 대응하는 픽처 블록의 재구성된 신호를 획득하기 위해 각 CU를 디코딩한다.
스텝 6은 실시예 4의 스텝 6의 방식으로 구현될 수 있고, 여기서 더 설명되지 않는다.
실시예 9
4×4 루마 블록을 생성하기 위해 현재 영역이 1회 분할되는(예컨대, 64개의 루마 샘플이 QT 모드에서 분할되거나, 128개의 루마 샘플이 TT 모드에서 분할되는) 경우, 기본적으로 현재 영역에 인트라 모드만 사용될 수 있는 것으로 제한되고,
그렇지 않으면, 현재 영역에 인터 모드만 또는 인트라 모드만 사용될 수 있음을 나타내는 플래그가 전송된다.
현재 영역에 인터 모드만 사용될 수 있는 것으로 제한되는 경우, 루마 및 크로마는 공동으로 분할된다. 4×4 루마 블록을 생성하기 위해 현재 영역에서의 노드가 분할되는 경우, 이 분할은 허용되지 않는다. 예컨대, 현재 노드가 8×8인 경우, 이는 HBT(또는 VBT) 모드에서 두 개의 8×4 노드를 생성하도록 분할된다. 그러나, 이러한 노드가 계속 분할되어 4×4 CU를 생성하는 경우, 이러한 8×4 노드는 계속 분할될 수 없다.
영역에 인트라 모드만 사용될 수 있는 것으로 제한되는 경우, 이 구현은 원래의 구현과 동일하다(루마는 분할되지만, 크로마는 분할되지 않음).
본 발명의 본 실시예는 비교적 작은 면적을 갖는 크로마 블록에 인트라 예측 모드가 사용되는 것을 방지하기 위한 블록 분할 방법을 제공하고, 하드웨어의 파이프라인 처리 및 디코더의 구현을 용이하게 한다. 또한, 인터 예측에서는, 일부 예측 모드에 대한 구문 요소를 파싱하는 처리가 생략될 수 있으므로, 인코딩 복잡함이 감소된다.
이러한 방식으로, 계수 코딩에 있어서의 문제점이 해결되고, 코딩 복잡함이 감소된다.
블록 분할 방법은 이하와 같을 수 있다.
노드 A의 분할 모드가 파싱된다.
분할 모드 S에 기초하여 노드 A가 분할된 후 적어도 하나의 자식 노드 B의 크로마 블록이 작은 블록으로서 획득되는지 여부가 결정된다. (노드 A의 폭, 높이, 및/또는 분할 모드, 및/또는 노드 B의 폭 및 높이가 전술한 조건 중 적어도 하나를 충족하는지 여부가 결정된다.)
분할 모드 S에 기초하여 노드 A가 분할된 후 적어도 하나의 자식 노드 B의 크로마 블록이 작은 블록으로서 획득된다고 결정되는 경우, 노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 인트라 예측 모드 또는 인터 예측 모드가 사용된다.
노드 A의 크로마 블록 및 루마 블록을 계속 분할할지 여부가 결정된다.
노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 인트라 예측이 수행되는 경우, 노드 A의 루마 블록이 분할 모드 S에 기초하여 계속 분할되고, 노드 A의 크로마 블록은 더 분할되지 않는다. 노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 인터 예측이 수행되는 경우, 노드 A의 루마 블록 및 크로마 블록이 분할 모드 S에 기초하여 루마 블록 및 크로마 블록을 포함하는 N개의 코딩 트리 노드로 계속 분할된다.
노드 A의 루마 블록은 분할 모드 S에 기초하여 계속 분할되고, 노드 A의 크로마 블록은 더 분할되지 않는다. 크로마 변환 블록과 크로마 코딩 블록은 동일한 크기를 갖는다.
노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 인트라 예측이 수행되는 경우, 크로마 예측 블록과 크로마 코딩 블록은 동일한 크기를 갖고, 노드 A의 커버리지 영역에 있는 모든 코딩 유닛에 인터 예측이 수행되는 경우, 크로마 예측 블록은 서브블록(여기서 서브블록은 크로마 코딩 블록보다 작다)으로 분할되고, 각 서브블록의 움직임 벡터는 서브블록에 대응하는 루마 영역에서의 움직임 벡터이다.
노드 A의 루마 블록은 분할 모드 S에 기초하여 더 분할된다. 노드 A의 크로마 블록은 더 분할되지 않는다. 크로마 코딩 블록에 대응하는 크로마 변환 블록과 크로마 코딩 블록은 동일한 크기를 갖고, 크로마 예측 블록과 크로마 코딩 블록은 동일한 크기를 갖고, 크로마 CB의 움직임 정보는 크로마 CB에 대응하는 루마 영역에서의 특정한 미리 설정된 위치에 대한 움직임 정보이다.
예컨대, 설명된 방법과 관련하여 개시된 내용은 방법을 수행하도록 구성된 대응하는 디바이스 또는 시스템에 대해서도 유효할 수 있고 그 반대의 경우도 가능한 것이 이해되어야 한다. 예컨대, 하나 이상의 특정한 방법 스텝이 설명되는 경우, 대응하는 디바이스는, 비록 하나 이상의 유닛이 첨부된 도면에 명시적으로 설명되거나 도시되지 않더라도, 설명된 하나 이상의 방법 스텝을 수행하기 위한 기능 유닛과 같은 그러한 하나 이상의 유닛(예컨대, 하나 이상의 스텝을 수행하는 하나의 유닛, 또는 복수의 스텝 중 하나 이상을 각각 수행하는 복수의 유닛)을 포함할 수 있다. 또한, 예컨대, 특정한 장치가 기능 유닛과 같은 하나 이상의 유닛에 기초하여 설명되는 경우, 대응하는 방법은, 비록 하나 이상의 스텝이 첨부된 도면에 명시적으로 설명되거나 도시되지 않더라도, 하나 이상의 유닛의 기능을 수행하기 위한 그러한 하나 이상의 스텝(예컨대, 하나 이상의 유닛의 기능을 수행하기 위한 하나의 스텝, 또는 복수의 유닛 중 하나 이상의 기능을 수행하기 위해 각각이 사용되는 복수의 스텝)을 포함할 수 있다. 또한, 본 명세서에 설명된 예시적인 실시예 및/또는 측면의 특징은, 특별히 달리 언급되지 않는 한, 서로 결합될 수 있음이 이해되어야 한다.
하나 이상의 예에서, 설명된 기능은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능은 하나 이상의 명령 또는 코드로서 컴퓨터 판독 가능 매체에 저장되거나 컴퓨터 판독 가능 매체를 통해 송신될 수 있고 하드웨어 기반의 처리 유닛에 의해 실행될 수 있다. 컴퓨터 판독 가능 매체는 데이터 저장 매체와 같은 유형의 매체에 대응하는 컴퓨터 판독 가능 저장 매체, 또는, 예컨대, 통신 프로토콜에 따라 컴퓨터 프로그램을 한 장소에서 다른 장소로 전송하는 것을 가능하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터 판독 가능 매체는 일반적으로 ⑴ 비 일시적 유형의 컴퓨터 판독 가능 저장 매체 또는 ⑵ 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 발명에 설명된 기술의 구현을 위한 명령, 코드, 및/또는 데이터 구조를 회수하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체를 포함할 수 있다.
제한이 아닌 예로서, 이러한 유형의 컴퓨터 판독 가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스, 플래시 메모리, 또는 명령 또는 데이터 구조의 형태로 원하는 프로그램 코드를 저장하기 위해 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 연결은 적절하게 컴퓨터 판독 가능 매체라고 지칭된다. 예컨대, 동축 케이블, 광섬유 케이블, 트위스티드 페어(twisted pair), DSL(digital subscriber line), 또는 적외선, 무선통신, 및 마이크로파와 같은 무선 기술을 사용함으로써 웹사이트, 서버, 또는 다른 원격 소스로부터 명령이 송신되는 경우, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 무선통신, 및 마이크로파와 같은 무선 기술은 매체의 정의에 포함된다. 그러나, 컴퓨터 판독 가능 저장 매체 및 데이터 저장 매체는 연결, 반송파, 신호, 또는 다른 일시적인 매체를 포함하지 않고, 실제로 비 일시적 유형의 저장 매체에 대한 것임이 이해되어야 한다. 본 명세서에서 사용되는, 디스크 및 광 디스크는 CD(compact disc), 레이저 디스크, 광 디스크, DVD(digital versatile disc), 소프트 디스크, 및 블루레이 디스크를 포함한다. 디스크는 일반적으로 데이터를 자기적으로 재생하는 반면, 광 디스크는 레이저로 데이터를 광학적으로 재생한다. 위의 조합도 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
명령은 하나 이상의 DSP(digital signal processor), 범용 마이크로프로세서, ASIC(application specific integrated circuit), FPGA(field programmable gate array), 또는 다른 동등한 통합된 또는 개별 로직 회로와 같은 하나 이상의 프로세서에 의해 실행될 수 있다. 따라서, 본 명세서에서 사용되는 "프로세서"라는 용어는 본 명세서에서 설명되는 기술을 구현하기 위해 적용 가능한 전술한 구조 중 어느 하나 또는 다른 구조를 표현할 수 있다. 또한, 일부 측면에서, 본 명세서에 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공되거나, 결합된 코덱에 통합될 수 있다. 또한, 기술은 모두 하나 이상의 회로 또는 로직 요소에서 구현될 수 있다.
본 개시의 기술은 무선 핸드셋, 집적 회로(integrated circuit, IC), 또는 IC의 집합(예컨대, 칩셋)을 포함하는 매우 다양한 디바이스 또는 장치에서 구현될 수 있다. 개시된 기술을 수행하도록 구성된 디바이스의 기능적 측면을 강조하기 위해 다양한 구성요소, 모듈, 또는 유닛이 본 개시에서 설명되지만, 반드시 상이한 하드웨어 유닛에 의한 달성을 요구하지는 않는다. 정확하게, 위에서 설명된 바와 같이, 유닛은, 적절한 소프트웨어 및/또는 펌웨어와 함께, 코덱 하드웨어 유닛에 결합되거나 위에서 설명된 바와 같이 하나 이상의 프로세서를 포함하는 상호운용 하드웨어 유닛의 집합에 의해 제공될 수 있다.
Claims (45)
- 비디오 코딩에서의 사용을 위한 픽처 분할 방법으로서,
루마(luma) 블록 및 크로마(chroma) 블록을 포함하는 현재 노드의 분할 모드를 결정하는 단계와,
상기 현재 노드의 상기 분할 모드 및 상기 현재 노드의 크기에 기초하여, 상기 현재 노드의 상기 크로마 블록이 더 분할되지 않는다고 결정하는 단계와,
상기 현재 노드의 상기 분할 모드에 기초하여 상기 현재 노드의 상기 루마 블록을 분할하는 단계를 포함하되,
상기 현재 노드의 폭이 임계치의 두 배와 같고 상기 현재 노드의 상기 분할 모드가 수직 이진 분할(vertical binary split)인 경우, 또는
상기 현재 노드의 높이가 임계치의 두 배와 같고 상기 현재 노드의 상기 분할 모드가 수평 이진 분할(horizontal binary split)인 경우, 또는
상기 현재 노드의 폭이 임계치의 네 배와 같고 상기 현재 노드의 상기 분할 모드가 수직 삼진 분할(vertical ternary split)인 경우, 또는
상기 현재 노드의 높이가 임계치의 네 배와 같고 상기 현재 노드의 상기 분할 모드가 수평 삼진 분할(horizontal ternary split)인 경우,
상기 현재 노드의 상기 크로마 블록은 더 분할되지 않는
방법.
- 제 1 항에 있어서,
상기 현재 노드의 상기 크로마 블록이 더 분할되지 않는다고 결정하는 단계는,
상기 현재 노드의 상기 분할 모드 및 상기 현재 노드의 상기 크기에 기초하여, 상기 현재 노드를 분할함으로써 생성된 자식 노드(child node)가 임계치보다 작은 측면 길이를 갖는 크로마 블록을 포함한다고 결정하면, 상기 현재 노드의 상기 크로마 블록이 더 분할되지 않는 것을 포함하는
방법.
- 제 1 항 또는 제 2 항에 있어서,
상기 현재 노드의 상기 루마 블록은 상기 현재 노드의 상기 분할 모드에 기초하여 분할되어, 상기 현재 노드의 자식 노드를 획득하고, 각 자식 노드는 루마 블록만을 포함하는
방법.
- 제 3 항에 있어서,
상기 방법은,
상기 루마 블록에서의 하위 영역 각각의 예측 정보 및 잔여 정보를 획득하기 위해, 상기 현재 노드의 상기 루마 블록의 정보를 파싱(parsing)하는 단계를 더 포함하고, 상기 하위 영역은 상기 자식 노드에 일대일로 대응하는
방법.
- 제 3 항에 있어서,
상기 자식 노드는 디폴트(default)로 더 분할되지 않고, 각 자식 노드는 루마 블록만을 포함하는 하나의 코딩 유닛에 대응하는
방법.
- 제 1 항 또는 제 2 항에 있어서,
상기 방법은,
상기 현재 노드의 상기 크로마 블록이 더 분할되지 않는 경우, 상기 크로마 블록의 예측 모드를 획득하는 단계를 더 포함하는
방법.
- 제 6 항에 있어서,
상기 현재 노드의 상기 크로마 블록의 상기 예측 모드는 상기 현재 노드의 미리 설정된 위치에서의 루마 블록의 예측 모드에 기초하여 결정되는
방법.
- 제 7 항에 있어서,
상기 미리 설정된 위치에서의 상기 루마 블록에 사용되는 상기 예측 모드가 인터 예측 모드인 경우,
상기 인터 예측 모드는 상기 현재 노드의 상기 크로마 블록에 사용되거나, 또는
제 1 플래그가 파싱되어 상기 제 1 플래그에 기초하여 상기 크로마 블록의 상기 예측 모드를 결정되는
방법.
- 제 8 항에 있어서,
상기 인터 예측 모드가 상기 현재 노드의 상기 크로마 블록에 사용되는 경우,
상기 미리 설정된 위치에서의 상기 루마 블록의 움직임 정보가 상기 크로마 블록의 움직임 정보로서 획득되거나, 또는
상기 크로마 블록이 크로마 예측 서브블록으로 분할되고, 상기 크로마 예측 서브블록의 움직임 정보가 획득되는
방법.
- 제 8 항에 있어서,
상기 제 1 플래그에 기초하여, 인트라 예측 모드가 상기 크로마 블록에 사용된다고 결정되는 경우, 인트라 예측 모드가 비트스트림으로부터 파싱되어 상기 크로마 블록의 상기 인트라 예측 모드로서 사용되고,
상기 제 1 플래그에 기초하여, 상기 인터 예측 모드가 상기 크로마 블록에 사용된다고 결정되는 경우, 상기 미리 설정된 위치에서의 상기 루마 블록의 움직임 정보가 상기 크로마 블록의 움직임 정보로서 획득되거나, 또는
상기 제 1 플래그에 기초하여, 상기 인터 예측 모드가 상기 크로마 블록에 사용된다고 결정되는 경우, 상기 크로마 블록이 크로마 예측 서브블록으로 분할되고, 상기 크로마 예측 서브블록의 움직임 정보가 획득되는
방법.
- 제 9 항에 있어서,
상기 크로마 예측 서브블록의 상기 움직임 정보가 획득되는 것은,
상기 크로마 예측 서브블록에 대응하는 루마 픽처 위치에서의 루마 블록에 대해 인터 예측이 수행되는 경우, 상기 크로마 예측 서브블록에 대응하는 상기 루마 픽처 위치에서의 움직임 정보가 상기 크로마 예측 서브블록의 상기 움직임 정보로서 사용되고,
그렇지 않은 경우, 상기 미리 설정된 위치에서의 움직임 정보가 상기 크로마 예측 서브블록의 상기 움직임 정보로서 사용되는
방법.
- 제 7 항에 있어서,
상기 미리 설정된 위치에서의 상기 루마 블록에 사용되는 상기 예측 모드가 인트라 예측 모드인 경우, 상기 인트라 예측 모드는 상기 현재 노드의 상기 크로마 블록에 사용되는
방법.
- 제 12 항에 있어서,
상기 현재 노드의 상기 크로마 블록의 상기 인트라 예측 모드로서 비트스트림으로부터 인트라 예측 모드가 파싱되거나, 또는
상기 현재 노드의 상기 크로마 블록의 상기 인트라 예측 모드는 직류 모드, 평면 모드, 각도(angular) 모드, 교차 성분 선형 모델 모드, 또는 크로마 유도 DM 모드 중 하나인
방법.
- 제 7 항에 있어서,
상기 미리 설정된 위치에서의 상기 루마 블록에 사용되는 상기 예측 모드가 인트라 블록 사본(IBC) 예측 모드인 경우,
상기 IBC 예측 모드가 상기 현재 노드의 상기 크로마 블록에 사용되거나, 또는
제 2 플래그에 기초하여 상기 크로마 블록의 상기 예측 모드를 결정하기 위해 상기 제 2 플래그가 파싱되는
방법.
- 제 14 항에 있어서,
상기 현재 노드의 상기 크로마 블록에 상기 IBC 예측 모드가 사용되는 경우, 상기 방법은 상기 미리 설정된 위치에서의 상기 루마 블록의 변위 벡터 정보를 상기 현재 노드의 상기 크로마 블록의 변위 벡터 정보로서 획득하는 단계를 더 포함하는
방법.
- 제 14 항에 있어서,
상기 제 2 플래그의 값이 제 1 값인 경우에 상기 IBC 예측 모드가 상기 크로마 블록에 사용되고,
상기 제 2 플래그의 값이 제 2 값인 경우에 인트라 예측 모드 또는 인터 예측 모드가 상기 크로마 블록에 사용되는
방법.
- 제 6 항에 있어서,
상기 방법은,
분할을 통해 획득된 복수의 루마 블록의 예측 모드를 획득하는 단계와,
분할을 통해 획득된 상기 복수의 루마 블록의 상기 예측 모드에 기초하여 상기 현재 노드의 상기 크로마 블록의 상기 예측 모드를 결정하는 단계를 더 포함하는
방법.
- 제 17 항에 있어서,
상기 복수의 루마 블록에 사용되는 상기 예측 모드가 인트라 예측 모드인 경우, 상기 인트라 예측 모드는 상기 현재 노드의 상기 크로마 블록에 사용되는
방법.
- 제 17 항에 있어서,
상기 복수의 루마 블록에 사용되는 상기 예측 모드가 인터 예측 모드인 경우, 상기 인터 예측 모드가 상기 현재 노드의 상기 크로마 블록에 사용될 때 상기 현재 노드의 상기 크로마 블록의 움직임 정보로서 미리 설정된 위치에서의 루마 블록의 움직임 정보가 사용되거나, 또는
상기 복수의 루마 블록에 사용되는 상기 예측 모드가 인터 예측 모드인 경우, 제 1 플래그에 기초하여 상기 크로마 블록의 상기 예측 모드를 결정하기 위해 상기 제 1 플래그가 파싱되는
방법.
- 제 19 항에 있어서,
상기 제 1 플래그에 기초하여, 상기 크로마 블록에 인트라 예측 모드가 사용된다고 결정되는 경우, 인트라 예측 모드가 비트스트림으로부터 파싱되어 상기 크로마 블록의 상기 인트라 예측 모드로서 사용되거나, 또는
상기 제 1 플래그에 기초하여, 상기 크로마 블록에 상기 인터 예측 모드가 사용된다고 결정되는 경우, 미리 설정된 위치에서의 루마 블록의 움직임 정보가 상기 크로마 블록의 움직임 정보로서 획득되는
방법.
- 제 17 항에 있어서,
상기 복수의 루마 블록에 사용되는 상기 예측 모드가 인터 예측 모드 및 인트라 예측 모드를 포함하는 경우, 상기 현재 노드의 미리 설정된 위치에서의 루마 블록의 예측 모드가 상기 현재 노드의 상기 크로마 블록의 상기 예측 모드로서 획득되는
방법.
- 제 1 항 또는 제 2 항에 있어서,
상기 현재 노드가 위치하는 픽처의 유형이 I 프레임인 경우, 상기 현재 노드의 각 자식 노드에 인트라 예측 모드가 사용되고, 상기 현재 노드가 위치하는 픽처의 유형이 P 프레임 또는 B 프레임인 경우, 첫 번째 자식 노드의 예측 모드를 획득하기 위해 상기 첫 번째 자식 노드가 파싱되고, 나머지 자식 노드의 예측 모드는 상기 첫 번째 자식 노드의 상기 예측 모드와 동일하고, 상기 첫 번째 자식 노드는 처음으로 파싱되는 노드인
방법.
- 제 1 항 또는 제 2 항에 있어서,
상기 현재 노드가 위치하는 픽처의 유형이 I 프레임인 경우, 상기 현재 노드의 각 자식 노드에 인트라 예측 모드가 사용되고, 상기 현재 노드가 위치하는 픽처의 유형이 P 프레임 또는 B 프레임인 경우, 상기 현재 노드의 각 자식 노드에 인터 예측 모드가 사용되는
방법.
- 제 1 항 또는 제 2 항에 있어서,
상기 현재 노드의 상기 분할 모드, 상기 현재 노드의 상기 크기, 및 상기 현재 노드의 첫 번째 자식 노드의 예측 모드에 기초하여, 상기 현재 노드의 상기 크로마 블록이 더 분할되지 않는다고 결정하고, 상기 첫 번째 자식 노드는 루마 블록만을 포함하고, 상기 첫 번째 자식 노드는 처음으로 파싱되는 노드인
방법.
- 제 24 항에 있어서,
상기 현재 노드의 상기 분할 모드 및 상기 현재 노드의 상기 크기에 기초하여, 상기 현재 노드를 분할함으로써 생성된 자식 노드가 임계치보다 작은 측면 길이를 갖는 크로마 블록을 포함하고 상기 첫 번째 자식 노드의 상기 예측 모드는 인트라 예측 모드라고 결정되는 경우, 상기 현재 노드의 상기 크로마 블록은 더 분할되지 않는
방법.
- 제 1 항 또는 제 2 항에 있어서,
상기 현재 노드의 상기 분할 모드 및 상기 현재 노드의 상기 크기에 기초하여, 상기 현재 노드를 분할함으로써 생성된 자식 노드가 임계치보다 작은 측면 길이를 갖는 크로마 블록을 포함한다고 결정하고, 첫 번째 자식 노드의 예측 모드가 인터 예측인 경우, 상기 현재 노드의 상기 크로마 블록은 상기 현재 노드의 상기 분할 모드에 기초하여 분할되고, 상기 첫 번째 자식 노드는 처음으로 파싱되는 노드인
방법.
- 제 26 항에 있어서,
상기 방법은,
상기 현재 노드의 상기 자식 노드의 움직임 정보에 기초하여 상기 크로마 블록의 대응하는 자식 노드의 움직임 정보를 결정하는 단계를 더 포함하는
방법.
- 제 1 항 또는 제 2 항에 있어서,
상기 현재 노드의 상기 분할 모드 및 상기 현재 노드의 상기 크기에 기초하여, 상기 현재 노드를 분할함으로써 생성된 자식 노드가 임계치보다 작은 폭을 갖는 크로마 블록을 포함한다고 결정하는 경우, 상기 현재 노드의 상기 크로마 블록은 더 분할되지 않는
방법.
- 제 1 항 또는 제 2 항에 있어서,
상기 현재 노드의 상기 분할 모드 및 상기 현재 노드의 상기 크기에 기초하여, 상기 현재 노드를 분할함으로써 생성된 자식 노드가 16보다 작은 크로마 샘플의 양을 갖는 크로마 블록을 포함한다고 결정하는 경우, 상기 현재 노드의 상기 크로마 블록은 더 분할되지 않는
방법.
- 제 29 항에 있어서,
상기 현재 노드의 폭과 높이의 곱(product)이 128보다 작고 상기 현재 노드의 상기 분할 모드가 수직 이진 분할 또는 수평 이진 분할인 경우, 또는
상기 현재 노드의 폭과 높이의 곱이 256보다 작고 상기 현재 노드의 상기 분할 모드가 수직 삼진 분할, 수평 삼진 분할, 또는 쿼드 분할인 경우, 또는
상기 현재 노드의 폭과 높이의 곱이 64와 같고 상기 현재 노드의 상기 분할 모드가 수직 이진 분할, 수평 이진 분할, 쿼드 분할, 수평 삼진 분할, 또는 수직 삼진 분할인 경우, 또는
상기 현재 노드의 폭과 높이의 곱이 128과 같고 상기 현재 노드의 상기 분할 모드가 수직 삼진 분할 또는 수평 삼진 분할인 경우,
상기 현재 노드의 상기 크로마 블록은 더 분할되지 않는
방법.
- 제 1 항 또는 제 2 항에 있어서,
상기 임계치는 4인
방법.
- 제 1 항 또는 제 2 항에 있어서,
상기 현재 노드의 상기 분할 모드는 쿼드 분할(QT), 수평 이진 분할(horizontal BT), 수평 삼진 분할(horizontal TT), 수직 이진 분할(Vertical BT), 및 수직 삼진 분할(Vertical TT) 중 적어도 하나를 포함하는
방법.
- 제 1 항에 있어서,
상기 현재 노드의 폭과 높이의 곱이 64와 같고 상기 현재 노드의 상기 분할 모드가 쿼드트리 분할 또는 삼진 트리 분할인 경우, 또는
상기 현재 노드의 폭과 높이의 곱이 32와 같고 상기 현재 노드의 상기 분할 모드가 이진 트리 분할인 경우,
상기 현재 노드의 상기 크로마 블록은 더 분할되지 않는
방법.
- 제 1 항에 있어서,
상기 현재 노드는 I 조각에 속하고,
상기 현재 노드의 폭과 높이의 곱이 64와 같고 상기 현재 노드의 상기 분할 모드가 이진 트리 분할인 경우, 또는
상기 현재 노드의 폭과 높이의 곱이 128과 같고 상기 현재 노드의 상기 분할 모드가 삼진 트리 분할인 경우,
상기 현재 노드의 상기 크로마 블록은 더 분할되지 않는
방법.
- 제 1 항, 제 2 항, 제 33 항 및 제 34 항 중 어느 한 항에 있어서,
상기 현재 노드의 상기 크로마 블록이 분할되어야 하는지 여부는 상기 현재 노드의 상기 분할 모드, 상기 현재 노드의 상기 크기, 및 노드 예측 모드 식별자(cons_pred_mode_flag)에 기초하여 결정되는
방법.
- 제 35 항에 있어서,
상기 현재 노드는 P 또는 B 조각에 속하고,
상기 현재 노드의 폭과 높이의 곱이 64와 같고 상기 현재 노드의 상기 분할 모드가 상기 이진 트리 분할이거나, 또는 상기 현재 노드의 폭과 높이의 곱이 128과 같고 상기 현재 노드의 상기 분할 모드가 상기 삼진 트리 분할인 경우와,
상기 노드 예측 모드 식별자가 상기 현재 노드를 분할함으로써 획득된 코딩 블록(coding block)에 대해 인터 예측이 수행되지 않는 것을 나타내는 경우,
상기 현재 노드의 상기 크로마 블록은 더 분할되지 않는
방법.
- 제 1 항, 제 2 항, 제 33 항 및 제 34 항 중 어느 한 항에 있어서,
상기 현재 노드의 데이터 포맷, 상기 현재 노드의 상기 분할 모드, 및 상기 현재 노드의 상기 크기에 기초하여, 상기 현재 노드의 상기 크로마 블록이 더 분할되는지 여부를 결정하는
방법.
- 제 37 항에 있어서,
상기 현재 노드의 상기 데이터 포맷은 YUV 4:2:0 또는 YUV 4:2:2인
방법.
- 제 37 항에 있어서,
상기 현재 노드의 커버리지 영역에 있는 모든 코딩 유닛에 대해 인트라 예측 또는 인터 예측이 수행되는
방법.
- 비디오 스트림 디코딩 장치로서,
프로세서 및 메모리를 포함하고, 상기 메모리는 명령을 저장하고, 상기 명령은 상기 프로세서가 제 1 항, 제 2 항, 제 33 항 및 제 34 항 중 어느 한 항에 기재된 방법을 수행하도록 하는
비디오 스트림 디코딩 장치.
- 비디오 스트림 인코딩 장치로서,
프로세서 및 메모리를 포함하고, 상기 메모리는 명령을 저장하고, 상기 명령은 상기 프로세서가 제 1 항, 제 2 항, 제 33 항 및 제 34 항 중 어느 한 항에 기재된 방법을 수행하도록 하는
비디오 스트림 인코딩 장치.
- 디코딩 디바이스로서,
서로 연결되는 비 휘발성 메모리 및 프로세서를 포함하고, 상기 메모리는 프로그램 명령을 저장하도록 구성되고, 상기 프로그램 명령은 상기 프로세서가 제 1 항, 제 2 항, 제 33 항 및 제 34 항 중 어느 한 항에 기재된 방법을 수행하도록 하는
디코딩 디바이스.
- 인코딩 디바이스로서,
서로 연결되는 비 휘발성 메모리 및 프로세서를 포함하고, 상기 메모리는 프로그램 명령을 저장하도록 구성되고, 상기 프로그램 명령은 상기 프로세서가 제 1 항, 제 2 항, 제 33 항 및 제 34 항 중 어느 한 항에 기재된 방법을 수행하도록 하는
인코딩 디바이스. - 삭제
- 삭제
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020247003066A KR20240017109A (ko) | 2018-08-28 | 2019-08-28 | 픽처 분할 방법 및 장치 |
Applications Claiming Priority (15)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810990466.9 | 2018-08-28 | ||
CN201810990466 | 2018-08-28 | ||
CN201811116761.8 | 2018-09-25 | ||
CN201811116761 | 2018-09-25 | ||
CN201910173454.1 | 2019-03-07 | ||
CN201910173454 | 2019-03-07 | ||
CN201910183731 | 2019-03-11 | ||
CN201910183731.7 | 2019-03-11 | ||
CN201910191131.5A CN110868590B (zh) | 2018-08-28 | 2019-03-13 | 图像划分方法及装置 |
CN201910191131.5 | 2019-03-13 | ||
CN201910219440 | 2019-03-21 | ||
CN201910219440.9 | 2019-03-21 | ||
CN201910696741.0A CN111669583A (zh) | 2019-03-07 | 2019-07-30 | 图像预测方法、装置、设备、系统及存储介质 |
CN201910696741.0 | 2019-07-30 | ||
PCT/CN2019/103094 WO2020043136A1 (zh) | 2018-08-28 | 2019-08-28 | 图像划分方法及装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020247003066A Division KR20240017109A (ko) | 2018-08-28 | 2019-08-28 | 픽처 분할 방법 및 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210046723A KR20210046723A (ko) | 2021-04-28 |
KR102631517B1 true KR102631517B1 (ko) | 2024-01-30 |
Family
ID=74865503
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217008065A KR102631517B1 (ko) | 2018-08-28 | 2019-08-28 | 픽처 분할 방법 및 장치 |
KR1020247003066A KR20240017109A (ko) | 2018-08-28 | 2019-08-28 | 픽처 분할 방법 및 장치 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020247003066A KR20240017109A (ko) | 2018-08-28 | 2019-08-28 | 픽처 분할 방법 및 장치 |
Country Status (17)
Country | Link |
---|---|
US (3) | US11323708B2 (ko) |
EP (2) | EP4387224A1 (ko) |
JP (2) | JP7204891B2 (ko) |
KR (2) | KR102631517B1 (ko) |
AU (2) | AU2019333452B2 (ko) |
BR (1) | BR112021003269A2 (ko) |
CA (1) | CA3110477C (ko) |
CL (1) | CL2021000494A1 (ko) |
ES (1) | ES2966509T3 (ko) |
HU (1) | HUE064218T2 (ko) |
IL (1) | IL281144B1 (ko) |
MX (2) | MX2021002396A (ko) |
NZ (1) | NZ773632A (ko) |
PH (1) | PH12021550378A1 (ko) |
PT (1) | PT3836542T (ko) |
UA (1) | UA128232C2 (ko) |
ZA (1) | ZA202101354B (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2018233042B2 (en) * | 2018-09-21 | 2024-06-13 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding a tree of blocks of video samples |
CN116193131B (zh) * | 2019-08-15 | 2023-10-31 | 北京达佳互联信息技术有限公司 | 一种用于视频编码的方法、电子装置及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017034331A1 (ko) * | 2015-08-27 | 2017-03-02 | 엘지전자 주식회사 | 영상 코딩 시스템에서 크로마 샘플 인트라 예측 방법 및 장치 |
JP6929647B2 (ja) | 2014-06-20 | 2021-09-01 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | ブロック適応色空間コンバージョンコーディング |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100553339C (zh) | 2002-07-15 | 2009-10-21 | 株式会社日立制作所 | 动态图像解码方法 |
CN100525454C (zh) | 2004-09-14 | 2009-08-05 | 华为技术有限公司 | 帧间预测模式的选择方法 |
JP4921239B2 (ja) | 2007-05-09 | 2012-04-25 | キヤノン株式会社 | 画像処理装置およびその方法 |
CN101394565B (zh) | 2008-10-20 | 2011-08-17 | 成都九洲电子信息系统有限责任公司 | 一种帧内预测方法 |
KR101712156B1 (ko) | 2010-12-06 | 2017-03-06 | 에스케이 텔레콤주식회사 | 임의의 형태의 블록을 이용한 인터예측에 의한 영상의 부호화/복호화 방법 및 장치 |
US9848197B2 (en) * | 2011-03-10 | 2017-12-19 | Qualcomm Incorporated | Transforms in video coding |
MY164898A (en) | 2011-09-29 | 2018-01-30 | Sharp Kk | Image decoding device, image decoding method, and image encoding device |
JP2013077899A (ja) * | 2011-09-29 | 2013-04-25 | Jvc Kenwood Corp | 画像復号装置、画像復号方法及び画像復号プログラム |
US9807401B2 (en) | 2011-11-01 | 2017-10-31 | Qualcomm Incorporated | Transform unit partitioning for chroma components in video coding |
US9462275B2 (en) | 2012-01-30 | 2016-10-04 | Qualcomm Incorporated | Residual quad tree (RQT) coding for video coding |
US9674533B2 (en) | 2013-04-05 | 2017-06-06 | Qualcomm Incorporated | Picture alignments in multi-layer video coding |
CN103237216B (zh) | 2013-04-12 | 2017-09-12 | 华为技术有限公司 | 深度图像的编解码方法和编解码装置 |
CA2928753C (en) | 2013-11-14 | 2019-09-17 | Mediatek Singapore Pte. Ltd. | Method of video coding using prediction based on intra picture block copy |
KR101737861B1 (ko) | 2014-01-20 | 2017-05-19 | 한국전자통신연구원 | 변환 깊이 기반 dct 사이즈 결정 장치 및 방법 |
CN110278437B (zh) | 2014-06-20 | 2022-03-08 | 寰发股份有限公司 | 一种视频数据块的编码方法 |
CN104202602B (zh) | 2014-08-18 | 2018-03-02 | 三星电子(中国)研发中心 | 执行视频编码的装置及方法 |
WO2016074147A1 (en) | 2014-11-11 | 2016-05-19 | Mediatek Singapore Pte. Ltd. | Separated coding tree for luma and chroma |
KR102539009B1 (ko) * | 2015-06-08 | 2023-05-31 | 브이아이디 스케일, 인크. | 스크린 콘텐츠 코딩을 위한 인트라 블록 카피 모드 |
JPWO2016203981A1 (ja) | 2015-06-16 | 2018-04-05 | シャープ株式会社 | 画像復号装置及び画像符号化装置 |
US10212444B2 (en) | 2016-01-15 | 2019-02-19 | Qualcomm Incorporated | Multi-type-tree framework for video coding |
US10623774B2 (en) | 2016-03-22 | 2020-04-14 | Qualcomm Incorporated | Constrained block-level optimization and signaling for video coding tools |
US11102495B2 (en) | 2016-05-17 | 2021-08-24 | Qualcomm Incorporated | Methods and systems for generating and processing content color volume messages for video |
RU2710667C1 (ru) * | 2016-05-28 | 2019-12-30 | МедиаТек Инк. | Способ и устройство привязки к текущему изображению для кодирования видео |
CN116781903A (zh) | 2016-06-24 | 2023-09-19 | 世宗大学校产学协力团 | 视频信号解码和编码方法、比特流的传输方法 |
WO2018037853A1 (ja) * | 2016-08-26 | 2018-03-01 | シャープ株式会社 | 画像復号装置及び画像符号化装置 |
WO2018047952A1 (ja) | 2016-09-12 | 2018-03-15 | 日本電気株式会社 | イントラ予測モード決定方法、イントラ予測モード決定装置およびイントラ予測モード決定プログラムを記憶する記憶媒体 |
CN116614647A (zh) | 2016-11-08 | 2023-08-18 | 株式会社Kt | 对视频进行解码和编码的方法、发送压缩数据的方法 |
EP3813375A1 (en) | 2017-01-31 | 2021-04-28 | Sharp Kabushiki Kaisha | Systems and methods for partitioning a picture into video blocks for video coding |
EP3577899A4 (en) | 2017-01-31 | 2020-06-17 | Sharp Kabushiki Kaisha | SYSTEMS AND METHODS FOR SCALING TRANSFORM COEFFICIENT LEVEL VALUES |
US10820017B2 (en) | 2017-03-15 | 2020-10-27 | Mediatek Inc. | Method and apparatus of video coding |
CN108668136A (zh) | 2017-03-28 | 2018-10-16 | 华为技术有限公司 | 图像编/解码方法、视频编/解码器及视频编解码系统 |
CN109151477B (zh) | 2017-06-28 | 2020-08-07 | 华为技术有限公司 | 一种图像数据的编码、解码方法及装置 |
CN112601085A (zh) | 2017-06-28 | 2021-04-02 | 华为技术有限公司 | 一种图像数据的编码、解码方法及装置 |
CN111527751A (zh) | 2017-12-29 | 2020-08-11 | 夏普株式会社 | 用于在用于视频编码的图片的边界处划分视频块的系统和方法 |
US10687071B2 (en) | 2018-02-05 | 2020-06-16 | Tencent America LLC | Method and apparatus for video coding |
US11012715B2 (en) | 2018-02-08 | 2021-05-18 | Qualcomm Incorporated | Intra block copy for video coding |
WO2019194496A1 (ko) | 2018-04-01 | 2019-10-10 | 엘지전자 주식회사 | 비디오 신호의 컬러 컴포넌트에 대한 병렬 처리 방법 및 이를 위한 장치 |
EP3785433A4 (en) * | 2018-04-30 | 2022-02-23 | MediaTek Inc. | SYNTAX INTERLACE METHOD AND APPARATUS FOR A SEPARATE CODING TREE IN A VIDEO CODING SYSTEM |
CN110636299B (zh) * | 2018-06-21 | 2022-06-14 | 北京字节跳动网络技术有限公司 | 用于处理视频数据的方法、装置及计算机可读记录介质 |
CN112567750A (zh) | 2018-08-17 | 2021-03-26 | 联发科技股份有限公司 | 用于视频编解码的简化合并候选列表的方法和装置 |
WO2020056757A1 (en) | 2018-09-21 | 2020-03-26 | Alibaba Group Holding Limited | Method, apparatus, and computer-readable storage medium for block partitioning tree separation under separation node |
AU2018233042B2 (en) | 2018-09-21 | 2024-06-13 | Canon Kabushiki Kaisha | Method, apparatus and system for encoding and decoding a tree of blocks of video samples |
-
2019
- 2019-08-28 KR KR1020217008065A patent/KR102631517B1/ko active IP Right Grant
- 2019-08-28 ES ES19855934T patent/ES2966509T3/es active Active
- 2019-08-28 PT PT198559346T patent/PT3836542T/pt unknown
- 2019-08-28 JP JP2021510741A patent/JP7204891B2/ja active Active
- 2019-08-28 IL IL281144A patent/IL281144B1/en unknown
- 2019-08-28 KR KR1020247003066A patent/KR20240017109A/ko not_active Application Discontinuation
- 2019-08-28 CA CA3110477A patent/CA3110477C/en active Active
- 2019-08-28 EP EP23200770.8A patent/EP4387224A1/en active Pending
- 2019-08-28 AU AU2019333452A patent/AU2019333452B2/en active Active
- 2019-08-28 HU HUE19855934A patent/HUE064218T2/hu unknown
- 2019-08-28 UA UAA202101567A patent/UA128232C2/uk unknown
- 2019-08-28 MX MX2021002396A patent/MX2021002396A/es unknown
- 2019-08-28 BR BR112021003269-0A patent/BR112021003269A2/pt unknown
- 2019-08-28 EP EP19855934.6A patent/EP3836542B1/en active Active
- 2019-08-28 NZ NZ773632A patent/NZ773632A/en unknown
-
2021
- 2021-02-22 PH PH12021550378A patent/PH12021550378A1/en unknown
- 2021-02-26 MX MX2024009253A patent/MX2024009253A/es unknown
- 2021-02-26 US US17/187,184 patent/US11323708B2/en active Active
- 2021-02-26 CL CL2021000494A patent/CL2021000494A1/es unknown
- 2021-02-26 ZA ZA2021/01354A patent/ZA202101354B/en unknown
-
2022
- 2022-05-02 US US17/734,829 patent/US11758134B2/en active Active
- 2022-12-28 JP JP2022212121A patent/JP7528188B2/ja active Active
-
2023
- 2023-07-27 US US18/360,639 patent/US20230370597A1/en active Pending
- 2023-09-15 AU AU2023229600A patent/AU2023229600A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6929647B2 (ja) | 2014-06-20 | 2021-09-01 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | ブロック適応色空間コンバージョンコーディング |
WO2017034331A1 (ko) * | 2015-08-27 | 2017-03-02 | 엘지전자 주식회사 | 영상 코딩 시스템에서 크로마 샘플 인트라 예측 방법 및 장치 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11431997B2 (en) | Video decoding method and video decoder | |
KR102616713B1 (ko) | 이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체 | |
US20220094947A1 (en) | Method for constructing mpm list, method for obtaining intra prediction mode of chroma block, and apparatus | |
US20230370597A1 (en) | Picture partitioning method and apparatus | |
WO2020038378A1 (zh) | 色度块预测方法及装置 | |
WO2020259353A1 (zh) | 语法元素的熵编码/解码方法、装置以及编解码器 | |
WO2020143684A1 (zh) | 图像预测方法、装置、设备、系统及存储介质 | |
CN110876061B (zh) | 色度块预测方法及装置 | |
WO2020135371A1 (zh) | 一种标志位的上下文建模方法及装置 | |
WO2020073882A1 (en) | Video decoder and corresponding methods | |
RU2786626C2 (ru) | Способ и устройство для разделения изображения | |
JP2024149512A (ja) | ピクチャパーティショニング方法及び機器 | |
JP2024019425A (ja) | ピクチャのブロックのイントラ予測の方法 | |
EP3841752A1 (en) | Method and apparatus for hierarchical signaling of enabling and disabling prediction mechanisms for video coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
X091 | Application refused [patent] | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |