KR20210107131A - 이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체 - Google Patents

이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체 Download PDF

Info

Publication number
KR20210107131A
KR20210107131A KR1020217025090A KR20217025090A KR20210107131A KR 20210107131 A KR20210107131 A KR 20210107131A KR 1020217025090 A KR1020217025090 A KR 1020217025090A KR 20217025090 A KR20217025090 A KR 20217025090A KR 20210107131 A KR20210107131 A KR 20210107131A
Authority
KR
South Korea
Prior art keywords
current node
block
prediction
mode
node
Prior art date
Application number
KR1020217025090A
Other languages
English (en)
Other versions
KR102616713B1 (ko
Inventor
인 자오
하이타오 양
장러 천
롄 장
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from CN201910696741.0A external-priority patent/CN111669583A/zh
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Priority to KR1020237043658A priority Critical patent/KR20240005108A/ko
Priority claimed from PCT/CN2020/070976 external-priority patent/WO2020143684A1/zh
Publication of KR20210107131A publication Critical patent/KR20210107131A/ko
Application granted granted Critical
Publication of KR102616713B1 publication Critical patent/KR102616713B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/109Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Abstract

이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체가 제공된다. 방법은: 현재 노드의 분할 모드를 획득하는 단계(401) - 상기 현재 노드는 현재 이미지의 코딩 트리 단위(coding tree unit)의 이미지 블록임 - ; 상기 현재 노드의 분할 모드 및 상기 현재 노드의 크기에 기초하여, 상기 현재 노드가 제1 조건을 만족하는지를 결정하는 단계(402); 및 상기 현재 노드가 제1 조건을 만족한다고 결정될 때, 상기 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하여 상기 현재 노드에 속하는 모든 코딩 블록의 예측자를 획득하는 단계(403)를 포함한다. 전술한 방법에 따르면, 현재 블록의 모든 코딩 블록에 대해 인트라 예측이 수행되어, 현재 노드의 모든 코딩 블록에 대한 병렬 처리가 구현될 수 있다. 이것은 이미지 예측의 처리 성능을 향상시키고 코딩 처리 속도를 높인다.

Description

이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체
본 출원은 2019년 1월 8일 중국 특허청에 출원되고 발명의 명칭이 "비디오 코딩 방법 및 비디오 디코더"인 중국 특허 출원 번호 201910016466.3, 2019년 3월 7일 중국 특허청에 출원되고 발명의 명칭이 "비디오 인코더, 비디오 디코더 및 대응 방법"인 중국 특허 출원 번호 201910173454.1, 2019년 3월 21일에 출원되고 발명의 명칭이 "비디오 인코더, 비디오 디코더, 및 대응 방법"인 중국 특허 출원 번호 201910219440.9 및 2019년 7월 30일에 중국 특허청에 출원되고 발명의 명칭이 "이미지 예측 방법, 장치, 및 시스템, 디바이스, 및 저장 매체"인 중국 특허 출원 번호 201910696741.0에 대한 우선권을 주장하며, 상기 문헌들은 그 전문이 참조로 여기에 포함된다.
본 출원의 실시예는 비디오 코딩 기술 분야에 관한 것이며, 특히 이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체에 관한 것이다.
디지털 비디오 기능은 다양한 장치에 통합될 수 있는데, 이러한 장치로는 디지털 텔레비전, 디지털 라이브 방송 시스템, 무선 방송 시스템, 개인 휴대 정보 단말기(PDA), 랩톱 또는 데스크탑 컴퓨터, 태블릿 컴퓨터, 전자책 리더, 디지털 카메라, 디지털 기록 장치, 디지털 미디어 플레이어, 비디오 게임 장치, 비디오 게임 콘솔, 셀룰러 또는 위성 무선 전화("스마트폰"이라고도 함), 화상 회의 장치, 비디오 스트리밍 장치 등을 들 수 있다. 디지털 비디오 장치는 비디오 압축 기술, 예를 들어 MPEG-2, MPEG-4, ITU-T H.263 및 ITU-T H.264/MPEG-4 part 10 고급 비디오 코딩(AVC), 비디오 코딩 표준 H.265/고효율 비디오 코딩(HEVC) 표준 및 이러한 표준의 확장에 의해 정의된 표준에 설명된 비디오 압축 기술을 구현한다. 비디오 장치는 비디오 압축 기술을 구현함으로써 디지털 비디오 정보를 보다 효율적으로 전송, 수신, 인코딩, 디코딩 및/또는 저장할 수 있다.
정보 기술의 발달로 고화질 텔레비전, 웹 회의, IPTV, 3D 텔레비전과 같은 영상 서비스가 급속히 발전하고 있다. 영상 신호는 직관성, 고효율성 등의 장점으로 인해 사람들의 일상 생활에서 가장 중요한 정보 획득 수단이 되었다. 비디오 신호는 많은 양의 데이터를 포함하므로 많은 전송 대역폭과 저장 공간을 차지한다. 비디오 신호를 효과적으로 전송하고 저장하려면 비디오 신호를 압축하고 인코딩해야 한다. 비디오 압축 기술은 비디오 응용 분야에서 점점 더 없어서는 안 될 핵심 기술이 되었다.
인코딩 과정은 다음의 스테이지: 주로 인트라 예측(Intra Prediction), 인터 예측(Inter Prediction), 변환(Transform), 양자화(Quantization), 엔트로피 인코딩(Entropy encode), 인-루프 필터링(in-loop filtering)(이것은 주로 디블로킹 필터링, 디블로킹 필터링) 등을 포함한다. 이미지가 코딩 블록으로 분할된 후 인트라 예측 또는 인터 예측이 수행된다. 그런 다음, 잔여를 구한 후 변환 및 양자화를 수행한다. 마지막으로 엔트로피 인코딩을 수행하여 비트스트림을 출력한다. 여기서, 코딩 블록은 M×N 픽셀(M은 N과 같거나 같지 않을 수 있음) 크기의 어레이이다. 또한, 각 픽셀 위치에서의 픽셀 값은 알려져 있다. 비디오 디코딩은 비디오 인코딩의 역 과정이다. 예를 들어, 엔트로피 디코딩, 역양자화 및 역변환이 먼저 수행되어 잔여 정보를 획득하고 현재 블록에 대해 인트라 예측 또는 인터 예측이 수행되는지는 비트스트림을 디코딩하여 결정된다. 인트라 부호화를 수행하는 경우, 인트라 예측 방법을 이용하여 현재 영상 주변의 복원된 영역의 픽셀 값에 기초하여 예측 블록을 구성한다. 인터 인코딩을 수행하는 경우, 파싱을 통해 모션 정보를 획득해야 하며, 파싱을 통해 획득된 모션 정보를 기반으로 복원 영상에서 참조 블록을 결정하고, 참조 블록 내 픽셀의 픽셀 값을 예측 블록으로 사용한다(이러한 과정을 모션 보상(Motion compensation, MC)이라고 한다). 예측 블록과 잔여 정보를 추가하고 필터링을 수행하여 복원 정보를 얻는다.
현재, 8×M(또는 M×8) 크기의 노드를 수직 이진 트리 분할(또는 수평 이진 트리 분할)을 통해 분할하여 각각 4×M(또는 M×4) 크기의 2개의 자식 노드를 생성한다. 마찬가지로 16×M(또는 M×16) 크기의 노드를 수직 삼항 트리 분할(또는 수평 삼항 트리 분할)을 통해 분할하여 4×M(또는 M×4) 크기의 자식 노드 2개와 8×M(또는 N×8) 크기의 자식 노드 1개를 생성한다. YUV 4:2:0의 데이터 포맷에서 크로마 성분의 해상도는 루마 성분의 1/2이다. 즉, 하나의 4×M 노드는 하나의 4×M 루마 블록과 2개의 2×(M/2) 크로마 블록을 포함한다. 따라서, 미리 설정된 분할 모드로 현재 노드를 분할하여 2×2, 2×4, 4×2와 같은 크기의 작은 크로마 블록을 생성할 수 있다. 하드웨어 디코더가 작은 크로마 블록을 처리하는 것은 비교적 복잡하다. 복잡성은 다음 세 가지 측면에서 구체적으로 반영된다.
(1) 인트라 예측: 처리 속도를 높이기 위해 하드웨어는 일반적으로 인트라 예측 시 한 번에 16개의 픽셀을 처리하도록 설계된다. 그러나 2x2, 2x4, 4x2와 같은 크기의 작은 크로마 블록은 16개 미만의 픽셀을 포함한다. 그 결과, 인트라 예측의 처리 성능이 저하된다.
(2) 계수 코딩: HEVC에서 변환 계수 코딩은 16개의 계수를 포함하는 계수 그룹(coefficient group, CG)을 기반으로 수행된다. 그러나 2×2, 2×4, 4×2와 같은 크기의 작은 크로마 블록은 4개 또는 8개의 변환 계수를 포함한다. 결과적으로, 이러한 작은 블록에 대한 계수 코딩을 지원하려면 4개의 계수 또는 8개의 계수를 포함하는 계수 그룹을 추가해야 한다. 결과적으로 구현 복잡성이 증가한다.
(3) 인터 예측: 작은 크로마 블록에 대한 인터 예측은 데이터 대역폭에 대한 요구사항이 비교적 높다. 결과적으로 디코딩 처리 속도가 영향을 받는다.
본 출원은 이미지 예측의 처리 성능을 개선하고 코딩 처리 속도를 증가시키기 위한 이미지 예측 방법, 장치, 시스템, 디바이스 및 저장 매체를 제공한다.
본 출원의 제1 관점은 이미지 예측 방법을 제공한다. 방법은:
현재 노드의 분할 모드를 획득하는 단계; 및 루마 블록 또는 크로마 블록을 포함하는 현재 노드의 분할 모드에서 현재 노드를 분할하여 미리 설정된 크기의 이미지 블록이 획득되는지를 판단하는 단계; 및 현재 노드의 분할 모드에서 현재 노드를 분할하여 미리 설정된 크기의 영상 블록이 획득된 것으로 판단되면, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계를 포함한다.
선택적으로, 미리 설정된 크기를 갖는 이미지 블록은 임계값보다 작은 크기를 갖는 루마 블록일 수 있다. 임계값은 128, 64 또는 32와 같은 루마 샘플의 양 또는 32, 16 또는 8과 같은 크로마 샘플의 양일 수 있다. 현재 노드의 크기는 임계값보다 크거나 같을 수 있다.
선택적으로, 인트라 예측을 수행하는 것은 공통 인트라 예측 모드(인트라 모드) 또는 인트라 블록 복사(intra block copy, IBC) 모드를 사용하여 예측을 수행할 수 있다.
선택적으로, 현재 노드에 의해 커버되는 모든 코딩 블록은 현재 노드에 대응하는 영역에 위치한 모든 코딩 블록이다. 코딩 블록은 대안적으로 코딩 단위(coding unit)일 수 있다.
선택적으로, 현재 노드가 위치한 슬라이스의 유형(슬라이스 유형)이 인트라(Intra) 유형인 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측 대신 인트라 예측을 수행한다.
본 출원의 실시예의 유익한 효과는 다음과 같다: 본 출원에서, 현재 노드에 대응하는 이미지 블록을 분할함으로써 미리 설정된 크기의 루마 블록 또는 크로마 블록이 획득되는 것으로 고려된다. 위와 같은 경우가 존재하는 경우, 인코더 측 또는 디코더 측에서는 루트 노드의 역할을 하는 현재 노드를 분할하거나 분할하지 않음으로써 획득되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하여 루마 블록 또는 크로마 블록에 대한 병렬 처리를 구현한다. 미리 설정된 크기로 이것은 이미지 예측의 처리 성능을 향상시키고 코딩 성능을 더욱 향상시킨다.
선택적으로, 다음의 두 가지 경우가 사전 설정된 크기를 갖는 이미지 블록에 관한 것이다: 제1 사전 설정된 크기를 갖는 루마 블록 및 제2 사전 설정된 크기를 갖는 크로마 블록. 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계는: 현재 노드를 분할 모드로 분할하여 미리 설정된 제1 크기의 루마 블록이 획득되는지를 결정하는 단계; 및 분할 모드에서 현재 노드를 분할하여 미리 설정된 제1 크기의 루마 블록이 획득된 것으로 결정되면, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행하거나, 또는 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기의 루마 블록이 획득되지 않은 것으로 판단되는 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계를 포함한다.
선택적으로, 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기의 루마 블록이 획득되지 않은 것으로 결정되는 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계는: 분할 모드에서 현재 노드를 분할하여 미리 설정된 제1 크기의 루마 블록이 획득되지 않은 것으로 결정되는 경우, 현재 노드의 예측 모드 상태 플래그를 파싱하는 단계; 및 예측 모드 상태 플래그의 값이 제1 값인 경우, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측을 수행하거나, 또는 예측 모드 상태 플래그의 값이 제2 값인 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계를 포함한다.
제1 관점을 참조하면, 제1 관점의 가능한 제1 구현에서, 사전 설정된 크기를 갖는 이미지 블록은 제1 사전 설정된 크기를 갖는 루마 블록을 포함하고, 분할 모드에서 현재 노드를 분할함으로써 사전 설정된 크기를 갖는 이미지 블록이 획득되는지를 결정하는 단계는: 현재 노드의 크기 및 현재 노드의 분할 모드에 기초하여 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기의 루마 블록이 획득되는지를 결정하는 단계를 포함한다.
선택적으로, 제1 미리 설정된 크기를 갖는 루마 블록은 4x4 또는 8x8의 픽셀 크기를 갖는 루마 블록 또는 16 픽셀 또는 32 픽셀의 면적을 갖는 루마 블록일 수 있다.
선택적으로, 제1 미리 설정된 크기를 갖는 루마 블록이 4×4의 픽셀 크기 또는 16 픽셀의 영역을 갖는 루마 블록인 경우, 현재 노드의 크기 및 현재 노드의 분할 모드에 기초하여 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기의 루마 블록이 획득되는지를 결정하는 단계는 다음 조건:
현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 쿼드 트리 분할이다;
현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 삼항 트리 분할이다; 또는
현재 노드의 루마 블록의 샘플 수는 32이고 분할 모드는 이진 트리 분할이다
중 하나에 기반하여 수행될 수 있다.
제1 관점의 가능한 제1 구현을 참조하여, 선택적으로, 현재 노드의 분할 모드에서 현재 노드를 분할함으로써 미리 설정된 크기를 갖는 이미지 블록이 획득되는 것으로 결정될 때, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계는: 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기를 갖는 루마 블록이 획득되었다고 결정되는 경우, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계를 포함한다.
제1 관점의 제1 가능한 구현을 참조하여, 선택적으로, 분할 모드에서 현재 노드를 분할함으로써 제1 사전 설정된 크기를 갖는 루마 블록이 획득되지 않은 것으로 결정될 때, 방법은: 분할 모드에서 현재 노드를 분할함으로써 제2 미리 설정된 크기의 크로마 블록이 획득되는지를 결정하는 단계; 및 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록이 획득된 것으로 판단되면, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계를 포함한다.
결론적으로, 전술한 제1 구현에서는 루트 노드로서 기능하는 현재 노드를 분할하거나 분할하지 않음으로써 획득되는 모든 코딩 블록에 대해 인트라 또는 인터 예측을 수행하는 것으로 결정되므로, 미리 설정된 크기의 루마 블록 또는 크로마 블록에 대한 병렬 처리를 구현할 수 있다. 이것은 이미지 예측의 처리 성능을 향상시키고 코딩 성능을 더욱 향상시킨다.
선택적으로, 제1 미리 설정된 크기를 갖는 루마 블록은 4×4 루마 블록 또는 16 픽셀의 영역을 갖는 루마 블록일 수 있다. 제1 미리 설정된 크기의 루마 블록이 4×4 루마 블록인 경우, 제2 미리 설정된 크기의 크로마 블록은 픽셀 크기가 2×4 또는 4×2인 크로마 블록 또는 영역이 8 픽셀인 크로마 블록일 수 있으며, 여기서 픽셀 크기가 2×2인 크로마 블록 또는 영역이 4 픽셀인 크로마 블록은 제외된다.
선택적으로, 제1 미리 설정된 크기를 갖는 루마 블록은 4×4 루마 블록 또는 16 픽셀의 영역을 갖는 루마 블록일 수 있다. 제1 미리 설정된 크기의 루마 블록이 4×4 루마 블록인 경우, 제2 미리 설정된 크기의 크로마 블록은 픽셀 크기가 4x8 또는 8x4인 루마 블록 또는 면적이 32 픽셀인 루마 블록일 수 있으며, 여기서 픽셀 크기가 4×4이거나 16픽셀 영역의 루마 블록은 제외된다.
선택적으로, 제2 미리 설정된 크기를 갖는 크로마 블록이 2×4 또는 4×2의 픽셀 크기를 갖는 크로마 블록 또는 8 픽셀의 면적을 갖는 크로마 블록, 또는 4×8 또는 8×4 또는 32 픽셀의 면적을 갖는 루마 블록에서, 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기를 갖는 크로마 블록을 획득하는지를 판단하는 것은 다음 조건 중 하나에 기초하여 수행될 수 있다:
(1) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 이진 트리 분할이다; 또는
(2) 현재 노드의 루마 블록의 샘플 수는 128이고 분할 모드는 삼항 트리 분할이다.
제1 관점을 참조하면, 제1 관점의 제2 가능한 구현에서, 사전 설정된 크기를 갖는 이미지 블록은 제2 사전 설정된 크기를 갖는 크로마 블록을 포함하고, 사전 설정된 크기를 갖는 이미지 블록이 분할 모드에서 현재 노드를 분할하여 획득되는지를 결정하는 단계는 현재 노드의 크기 및 현재 노드의 분할 모드에 기초하여 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록을 획득하는지를 결정하는 단계를 포함한다.
선택적으로, 제2 미리 설정된 크기를 갖는 크로마 블록은 2x2, 2x4 또는 4x2의 픽셀 크기를 갖는 크로마 블록, 또는 4 픽셀 또는 8픽셀의 면적을 갖는 크로마 블록일 수 있다.
선택적으로, 현재 노드의 크기 및 현재 노드의 분할 모드에 기초하여, 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록을 획득하는지를 결정하는 단계는: 현재 노드의 크기와 현재 노드의 분할 모드에 기초하여 분할 모드에서 현재 노드를 분할하여 미리 설정된 세 번째 크기의 루마 블록이 획득되는지를 결정하는 단계를 포함할 수 있다.
선택적으로, 제3 미리 설정된 크기를 갖는 루마 블록은 4x4, 4x8 또는 8x4의 픽셀 크기를 갖는 루마 블록 또는 16 픽셀 또는 32픽셀의 면적을 갖는 루마 블록일 수 있다.
선택적으로, 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기를 갖는 크로마 블록을 획득하는지를 결정하는 단계는 다음 조건 중 하나에 기초하여 수행될 수 있다:
(1) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 쿼드 트리 분할이다;
(2) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 삼항 트리 분할이다;
(3) 현재 노드의 루마 블록의 샘플 수는 32이고 분할 모드는 이진 트리 분할이다;
(4) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 이진 트리 분할이다; 또는
(5) 현재 노드의 루마 블록의 샘플 수는 128이고 분할 모드는 삼항 트리 분할이다
선택적으로, 제2 미리 설정된 크기의 크로마 블록은 2×4 또는 4×2의 픽셀 크기를 갖는 크로마 블록 또는 4 픽셀 영역의 크로마 블록일 수 있으며, 여기서 2×2의 픽셀 크기를 갖는 크로마 블록 또는 4픽셀의 영역을 갖는 크로마 블록은 제외한다. 유사하게, 제3 미리 설정된 크기의 크로마 블록은 4×8 또는 8×4의 픽셀 크기를 갖는 루마 블록 또는 32 픽셀 영역의 루마 블록일 수 있으며, 여기서 4×4의 픽셀 크기를 갖는 크로마 블록 또는 16픽셀의 영역을 갖는 크로마 블록은 제외한다. 이에 대응하여, 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록이 획득되었는지를 판단하는 단계는 다음 조건 중 하나에 기초하여 수행될 수 있다:
(1) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 이진 트리 분할이다; 또는
(2) 현재 노드의 루마 블록의 샘플 수는 128이고 분할 모드는 삼항 트리 분할이다.
제1 구현 또는 제2 구현을 참조하면, 분할 모드에서 현재 노드를 분할하여 미리 설정된 제2 크기의 크로마 블록이 획득된 것으로 판단되면, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계는: 현재 노드의 예측 모드 상태 플래그를 파싱하는 단계; 및 예측 모드 상태 플래그의 값이 제1 값인 경우, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측을 수행하거나, 또는 예측 모드 상태 플래그의 값이 제2 값인 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계를 포함한다. 이 구현은 비디오 디코더에 사용된다. 루트 노드의 역할을 하는 현재 노드가 분할되거나 분할되지 않은 모든 코딩 블록에 사용되는 예측 모드는 비트스트림에서 예측 모드 상태 플래그를 파싱하여 결정된다. 기존 기술에 비해 파싱을 한 번만 수행하면 되므로 비디오 디코딩의 처리 속도가 빨라진다.
선택적으로, 현재 노드가 위치한 슬라이스의 유형(slice type)은 인트라(Intra) 유형이 아니다.
제1 구현 또는 제2 구현을 참조하면, 분할 모드에서 현재 노드를 분할하여 미리 설정된 제2 크기의 크로마 블록이 획득된 것으로 판단되면, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계는: 현재 노드에 의해 커버되는 임의의 코딩 블록에 사용되는 예측 모드가 인터 예측인 경우, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측을 수행하는 단계; 또는 현재 노드에 의해 커버되는 임의의 코딩 블록에 사용되는 예측 모드가 인트라 예측인 경우, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계를 포함한다. 선택적으로, 임의의 코딩 블록은 디코딩 순서에서 현재 노드에 의해 커버되는 모든 코딩 블록의 제1 코딩 블록이다. 이 구현은 비디오 디코더에 사용된다. 비트스트림에서 현재 노드의 임의의 코딩 블록에 사용되는 예측 모드를 파싱하고, 파싱을 통해 얻은 예측 모드를 루트 노드의 역할을 하는 현재 노드를 분할하거나 분할하지 않음으로써 획득되는 모든 코딩 블록의 예측에 사용한다. 기존 기술에 비해 파싱을 한 번만 수행하면 되므로 비디오 디코딩의 처리 속도가 빨라진다.
제2 구현을 참조하면, 선택적으로, 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기를 갖는 크로마 블록이 획득된 것으로 결정되는 경우, 현재 노드에 의해 커버된 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계는: 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기를 갖는 루마 블록이 획득되는지를 결정하는 단계; 및 분할 모드에서 현재 노드를 분할하여 미리 설정된 제1 크기의 루마 블록이 획득된 것으로 결정되면, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계를 포함한다. 이 구현에서, 루트 노드 역할을 하는 현재 노드를 분할하거나 분할하지 않음으로써 획득되는 모든 코딩 블록에 대해 인트라 예측이 수행되어 제1 미리 설정된 크기를 갖는 루마 블록 및 제2 미리 설정된 크기를 갖는 크로마 블록에 대한 병렬 처리가 수행되도록 결정한다. 제2 미리 설정된 크기의 블록을 구현할 수 있다. 이것은 이미지 예측의 처리 성능을 향상시키고 코딩 성능을 더욱 향상시킨다.
선택적으로, 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기의 루마 블록이 획득되지 않은 것으로 결정되는 경우, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계는: 현재 노드의 예측 모드 상태 플래그를 파싱하는 단계; 및 예측 모드 상태 플래그의 값이 제1 값인 경우, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측을 수행하는 단계; 또는 예측 모드 상태 플래그의 값이 제2 값인 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계를 포함한다. 이 구현은 비디오 디코더에 사용된다. 루트 노드의 역할을 하는 현재 노드를 분할하거나 분할하지 않음으로써 획득되는 모든 코딩 블록에 사용되는 예측 모드는 비트스트림에서 예측 모드 상태 플래그를 파싱하여 결정된다. 기존 기술에 비해 파싱을 한 번만 수행하면 되므로 비디오 디코딩의 처리 속도가 빨라진다.
선택적으로, 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기를 갖는 루마 블록이 획득되지 않은 것으로 결정되는 경우, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계는: 현재 노드가 커버하는 임의의 코딩 블록에 사용되는 예측 모드가 인터 예측인 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측을 수행하는 단계; 또는 현재 노드에 의해 커버되는 임의의 코딩 블록에 사용되는 예측 모드가 인트라 예측인 경우, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계를 포함한다. 이 구현은 비디오 디코더에 사용된다. 비트스트림에서 현재 노드의 임의의 코딩 블록에 사용되는 예측 모드를 파싱하고, 파싱을 통해 얻은 예측 모드를 루트 노드의 역할을 하는 현재 노드를 분할하거나 분할하지 않음으로써 획득되는 모든 코딩 블록의 예측에 사용한다. 기존 기술에 비해 파싱을 한 번만 수행하면 되므로 비디오 디코딩의 처리 속도가 빨라진다.
선택적으로, 임의의 코딩 블록은 디코딩 순서에서 현재 노드에 의해 커버되는 모든 코딩 블록의 제1 코딩 블록이다.
제1 관점 또는 제1 관점의 가능한 구현 중 어느 하나를 참조하여, 제1 관점의 제3 가능한 구현에서, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계는: 분할 모드에서, 현재 노드에 포함된 루마 블록을 분할하여 분할을 통해 얻은 루마 블록을 획득하고, 분할을 통해 얻은 루마 블록에 대해 인트라 예측을 수행하고, 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하는 단계, 및 크로마 코딩 블록에 대해 인트라 예측을 수행하는 단계; 또는 분할 모드에서, 현재 노드에 포함된 루마 블록을 분할하여 분할을 통해 얻은 루마 블록을 획득하고, 분할을 통해 획득된 루마 블록에 대해 인터 예측을 수행하고, 분할 모드에서, 현재 노드에 포함된 크로마 블록을 분할하여 분할을 통해 획득한 크로마 블록을 획득하고, 분할을 통해 얻은 크로마 블록에 대해 인터 예측을 수행하는 단계를 포함한다. 이 구현에서, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측이 수행되는지에 관계없이 현재 노드의 루마 블록은 항상 분할되며; 현재 노드의 크로마 블록은 인터 예측 모드의 경우 분할될 수 있지만, 현재 노드의 크로마 블록은 인트라 예측 모드의 경우 분할되지 않는다. 이 구현에서, 인트라 예측이 수행되는 제2 미리 설정된 크기의 크로마 블록은 생성되지 않으므로, 작은 크로마 블록에 대해 인트라 예측이 수행되는 경우를 회피한다. 이것은 비디오 코딩의 처리 속도를 증가시킨다.
제1 관점 또는 제1 관점의 가능한 구현 중 어느 하나를 참조하여, 제1 관점의 제4 가능한 구현에서, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계는: 분할 모드에서, 현재 노드에 포함된 루마 블록을 분할하여 분할을 통해 얻은 루마 블록을 획득하고, 분할을 통해 얻은 루마 블록에 대해 인트라 예측을 수행하고, 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하며, 및 크로마 코딩 블록에 대해 인트라 예측을 수행하는 단계; 또는 분할 모드에서, 현재 노드에 포함된 루마 블록을 분할하여 분할을 통해 얻은 루마 블록을 획득하고, 분할을 통해 얻은 루마 블록에 대해 인터 예측을 수행하고, 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하며, 크로마 코딩 블록에 대해 인터 예측을 수행하는 단계를 포함한다. 이 구현에서, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측이 수행되는지에 관계없이 현재 노드의 크로마 블록은 분할되지 않고 루마 블록은 루마 블록의 분할 모드에서 분할된다. 이 구현에서는 인트라 예측이 수행되는 제2 미리 설정된 크기의 크로마 블록이 생성되지 않으므로 작은 크로마 블록에 대해 인트라 예측이 수행되는 경우를 피한다. 이것은 비디오 코딩의 처리 속도를 증가시킨다.
제1 관점 또는 제1 관점의 가능한 구현 중 어느 하나를 참조하여, 제1 관점의 제5 가능한 구현에서, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측이 수행될 때, 현재 노드에 의해 커버된 모든 코딩 블록에 대해 인터 예측을 수행하는 단계는:
현재 노드의 분할 모드에서 현재 노드를 분할하여 현재 노드의 자식 노드를 획득하는 단계; 현재 노드의 자식 노드의 크기에 기초하여, 현재 노드의 자식 노드에 허용되지 않는 분할 모드를 결정하는 단계; 현재 노드의 자식 노드에 허용되지 않는 분할 모드에 기초하여 현재 노드의 자식 노드에 대한 블록 분할 정책을 결정하는 단계; 및 현재 노드의 자식 노드의 블록 분할 정책에 따라 현재 노드의 자식 노드에 대응하는 코딩 블록을 획득하고, 대응하는 코딩 블록에 대해 인터 예측을 수행하는 단계를 포함한다. 이 구현에서, 인터 예측의 경우 제1 사전 설정된 크기를 갖는 루마 블록은 생성되지 않는다.
자식 노드는 현재 노드를 한 번 분할하여 얻을 수 있거나 현재 노드를 N 번 분할하여 얻을 수 있으며, 여기서 N은 1보다 큰 정수이다.
분할 정책은 분할을 수행하지 않거나, 분할을 한 번 수행하거나, N 번 동안 분할을 수행하는 것을 포함할 수 있으며, 여기서 N은 1보다 큰 정수이다.
본 출원의 제2 관점은 영상 예측 장치를 제공한다. 장치는:
현재 노드의 분할 모드를 획득하도록 구성된 획득 모듈;
미리 설정된 크기의 이미지 블록이 루마 블록 또는 크로마 블록을 포함하는 분할 모드에서 현재 노드를 분할함으로써 획득되는지를 결정하도록 구성된 판정 모듈; 및
현재 노드를 분할 모드로 분할하여 미리 설정된 크기의 이미지 블록이 획득된 것으로 결정되는 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하도록 구성된 실행 모듈
을 포함한다.
본 출원의 제3 관점은 프로세서 및 프로세서의 실행 가능한 명령어를 저장하도록 구성된 메모리를 포함하는 비디오 인코딩 장치를 제공한다. 프로세서는 본 출원의 제1 관점에 따라 방법을 수행한다.
본 출원의 제4 관점은 프로세서 및 프로세서의 실행 가능한 명령을 저장하도록 구성된 메모리를 포함하는 비디오 디코딩 디바이스를 제공한다. 프로세서는 본 출원의 제1 관점에 따라 방법을 수행한다.
본 출원의 제5 관점은 비디오 수집 디바이스, 본 출원의 제3 관점에 따른 비디오 인코딩 디바이스, 본 출원의 제4 관점에 따른 비디오 디코딩 디바이스, 및 디스플레이 디바이스를 포함하는 이미지 예측 시스템을 제공한다. 비디오 인코딩 디바이스는 비디오 수집 디바이스와 비디오 디코딩 디바이스 모두에 연결된다. 비디오 디코딩 디바이스는 디스플레이 디바이스에 연결된다.
본 출원의 제6 관점은 컴퓨터 판독가능 저장 매체를 제공한다. 컴퓨터 판독 가능 저장 매체는 컴퓨터 프로그램을 저장하고, 컴퓨터 프로그램은 본 출원의 제1 관점에 따른 방법을 구현하기 위해 프로세서에 의해 실행된다.
본 출원의 제7 관점은 이미지 예측 방법을 제공한다. 방법은: 현재 영상의 코딩 트리 단위(coding tree unit)의 영상 블록인 현재 노드의 분할 모드를 획득하는 단계; 현재 노드의 분할 모드 및 현재 노드의 크기에 기초하여, 현재 노드가 제1 조건을 만족하는지를 결정하는 단계; 및 현재 노드가 제1 조건을 만족한다고 판단되면, 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하여 현재 노드에 속하는 모든 코딩 블록의 예측자를 획득하는 단계를 포함한다.
현재 노드의 크기는 현재 노드에 대응하는 코딩 트리 노드의 크기 및 현재 노드를 획득하기 위해 사용되는 분할 모드에 기초하여 결정된다.
현재 노드가 위치한 슬라이스(slice)의 종류는 B형 또는 P형이다. 현재 노드가 위치한 슬라이스(slice)의 유형이 I 유형인 경우, 디폴트로 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측이 수행되어야 함을 이해해야 한다.
선택적으로, 현재 노드의 분할 모드 및 현재 노드의 크기에 기초하여, 현재 노드가 제1 조건을 만족하는지를 결정하는 단계는 현재 노드의 크기가 미리 설정된 크기의 상한보다 작거나 같을 때 수행될 수 있다. 미리 설정된 크기의 상한은 256, 128 또는 64일 수 있다.
제1 조건은 다음을 포함할 수 있다:
(1) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 쿼드 트리 분할이다;
(2) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 삼항 트리 분할이다; 또는
(3) 현재 노드의 루마 블록의 샘플 수는 32이고 분할 모드는 이진 트리 분할이다.
제7 관점을 참조하면, 제7 관점의 가능한 제1 구현에서, 현재 노드가 제1 조건을 만족하지 않는다고 결정될 때, 방법은: 현재 노드의 분할 모드 및 현재 노드의 크기에 기초하여 현재 노드가 제2 조건을 만족하는지를 결정하는 단계; 및 현재 노드가 제2 조건을 만족한다고 판단되면, 동일한 예측 모드를 사용하여 현재 노드에 속하는 모든 코딩 블록에 대해 예측을 수행하여 현재 노드에 속하는 모든 코딩 블록의 예측자를 획득하는 단계를 포함하며, 기서 예측 모드는 인트라 예측 또는 인터 예측이다.
현재 노드의 분할 모드 및 현재 노드의 크기에 기초하여, 현재 노드가 제2 조건을 만족하는지를 결정하는 단계는: 현재 노드의 분할 모드, 현재 노드의 크기 및 현재 크로마 포맷(Chroma format)에 기초하여 현재 노드가 제2 조건을 만족하는지를 결정하는 단계를 포함할 수 있다.
제2 조건은 다음을 포함할 수 있다:
(1) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 이진 트리 분할이다;
(2) 현재 노드의 루마 블록의 샘플 수는 128이고 분할 모드는 삼항 트리 분할이다;
(3) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 이진 트리 분할이며 크로마 포맷은 4:2:0이다;
(4) 현재 노드의 루마 블록의 샘플 수는 128이고 분할 모드는 삼항 트리 분할이며 크로마 포맷은 4:2:0이다; 또는
(5) 현재 노드의 자식 노드의 크로마 블록의 폭은 2이다.
제7 관점의 가능한 제1 구현을 참조하여, 제7 관점의 가능한 제2 구현에서, 동일한 예측 모드를 사용하여 현재 노드에 속하는 모든 코딩 블록에 대해 예측을 수행하는 단계는: 현재 노드의 예측 모드 상태 플래그; 및 예측 모드 상태 플래그의 값이 제1 값인 경우, 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측을 수행하는 단계; 또는 예측 모드 상태 플래그의 값이 제2 값인 경우, 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계를 포함한다.
예측 모드 상태 플래그는 블록 분할 시 파싱된 신택스 요소, 즉 코딩 트리(coding tree) 분할 시 파싱된 신택스 요소일 수 있다. 신택스 요소가 파싱될 때, 현재 노드의 커버리지 영역에서 부호화 단위의 부호화 단위 예측 모드 상태 플래그(cu_pred_mode)는 파싱되지 않을 수 있으며, 부호화 단위 예측 모드 상태 플래그의 값은 예측 모드 상태 플래그의 값 대응하는 디폴트 값이다.
제7 관점의 제1 또는 제2 가능한 구현을 참조하여, 제7 관점의 제3 가능한 구현에서, 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측을 수행하는 단계는: 현재 노드의 자식 노드를 얻기 위해 현재 노드의 분할 모드; 현재 노드의 자식 노드의 크기에 기초하여, 현재 노드의 자식 노드에 허용되지 않는 분할 모드를 결정하는 단계; 현재 노드의 자식 노드에 허용되지 않는 분할 모드에 기초하여 현재 노드의 자식 노드에 대한 블록 분할 정책을 결정하는 단계; 및 현재 노드의 자식 노드의 블록 분할 정책에 따라 현재 노드의 자식 노드에 대응하는 코딩 블록을 획득하고, 대응하는 코딩 블록에 대해 인터 예측을 수행하는 단계를 포함한다.
자식 노드에 대해 인터 예측만 수행하도록 제한되고 자식 노드의 루마 샘플의 수가 32(또는 노드의 폭과 높이의 곱이 32)인 경우 이진 트리 분할 (수평 이진 트리 분할 또는 수직 이진 트리 분할 포함)은 자식 노드에 허용되지 않는다. 자식 노드에 대해 인터 예측만 수행하도록 제한되어 있고 자식 노드의 루마 샘플 수가 64개(또는 노드의 폭과 높이의 곱이 64개)인 경우 삼항 트리 분할(수평 포함 삼항 트리 분할 또는 수직 삼항 트리 분할)은 자식 노드에 대해 허용되지 않는다. 이러한 판단 방법은 YUV 4:2:0 및 YUV 4:2:2의 비디오 데이터 포맷 모두에 적용 가능하다.
예를 들어, 현재 노드의 크기가 8×8이고 수평 이진 트리 분할(또는 수직 이진 트리 분할)을 통해 2개의 8×4(또는 4×8) 노드가 생성되면 4×4 블록이 생성된다. 8×4(또는 4×8) 노드가 더 분할되는 경우. 이 경우 수직 이진 트리 분할(또는 수평 이진 트리 분할)은 8×4(또는 4×8) 노드에 대해 허용되지 않거나 8×4(또는 4×8) 노드에 대해 추가 분할이 허용되지 않는다. 다른 예로, 현재 노드의 루마 블록의 샘플 개수가 128개이고 분할 모드가 수평 삼항 트리 분할 또는 수직 삼항 트리 분할인 경우, 루마 블록의 샘플 개수는 64를 얻을 수 있다. 그러나 64개의 샘플 수를 갖는 루마 노드에 대해 자식 노드에 대한 수평 삼항 트리 분할 또는 수직 삼항 트리 분할을 사용하면 4×4 루마 블록이 얻어진다. 따라서 인터 예측만 수행하도록 제한하는 경우 샘플 수량이 64개인 노드 또는 샘플 수량이 64개인 노드에 대해 수평 삼항 트리 분할 또는 수직 삼항 트리 분할이 추가 분할되도록 허용되지 않는다.
제7 관점 또는 제7 관점의 전술한 가능한 구현 중 어느 하나를 참조하여, 제7 관점의 제4 가능한 구현에서, 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계는: 분할 모드에서 현재 노드에 포함된 루마 블록은 분할을 통해 획득한 루마 블록을 획득하고, 분할을 통해 획득된 루마 블록에 대해 인트라 예측을 수행하는 단계; 및 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 크로마 코딩 블록에 대한 인트라 예측을 수행하는 단계를 포함한다.
본 출원의 제8 관점은 이미지 예측 방법을 제공한다. 방법은: 현재 노드의 분할 모드를 획득하는 단계 - 현재 노드는 현재 이미지의 코딩 트리 단위(coding tree unit)의 이미지 블록임 -; 현재 노드의 분할 모드 및 현재 노드의 크기에 기초하여, 현재 노드가 미리 설정된 조건을 만족하는지를 결정하는 단계; 및 현재 노드가 미리 설정된 조건을 만족한다고 판단되면, 동일한 예측 모드를 사용하여 현재 노드에 속하는 모든 코딩 블록에 대해 예측을 수행하여 현재 노드에 속하는 모든 코딩 블록의 예측자를 획득하는 단계를 포함하고, 여기서 예측 모드는 인트라 예측 또는 인터 예측이다.
현재 노드의 크기는 현재 노드에 대응하는 코딩 트리 노드의 크기 및 현재 노드를 획득하기 위해 사용되는 분할 모드에 기초하여 결정될 수 있다.
현재 노드의 분할 모드 및 현재 노드의 크기에 기초하여, 현재 노드가 미리 설정된 조건을 만족하는지를 결정하는 단계는: 현재 노드의 분할 모드, 현재 노드의 크기 및 현재 크로마 포맷(Chroma format)에 기초하여 현재 노드가 미리 설정된 조건을 만족하는지를 결정하는 단계를 포함할 수 있다.
미리 설정된 조건은 다음을 포함할 수 있다:
(1) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 이진 트리 분할이다; 또는
(2) 현재 노드의 루마 블록의 샘플 수는 128이고 분할 모드는 삼항 트리 분할이다.
제8 관점을 참조하면, 제8 관점의 가능한 제1 구현에서, 동일한 예측 모드를 사용하여 현재 노드에 속하는 모든 코딩 블록에 대해 예측을 수행하는 단계는: 현재 노드의 예측 모드 상태 플래그를 파싱하는 단계; 및 예측 모드 상태 플래그의 값이 제1 값인 경우, 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측을 수행하거나, 또는 예측 모드 상태 플래그의 값이 제2 값인 경우, 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계를 포함한다.
제8 관점 또는 제8 관점의 가능한 제1 구현을 참조하여, 제8 관점의 제2 가능한 구현에서, 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측을 수행하는 단계는: 현재 노드의 분할 모드의 현재 노드를 분할하여 현재 노드의 자식 노드를 획득하는 단계; 현재 노드의 자식 노드의 크기에 기초하여, 현재 노드의 자식 노드에 허용되지 않는 분할 모드를 결정하는 단계; 현재 노드의 자식 노드에 허용되지 않는 분할 모드에 기초하여 현재 노드의 자식 노드에 대한 블록 분할 정책을 결정하는 단계; 및 현재 노드의 자식 노드의 블록 분할 정책에 따라 현재 노드의 자식 노드에 대응하는 코딩 블록을 획득하고, 대응하는 코딩 블록에 대해 인터 예측을 수행하는 단계를 포함한다.
자식 노드에 대해 인터 예측만 수행하도록 제한되고 자식 노드의 루마 샘플의 수가 32(또는 노드의 폭과 높이의 곱이 32)인 경우 이진 트리 분할 (수평 이진 트리 분할 또는 수직 이진 트리 분할 포함) 자식 노드에 허용되지 않는다. 자식 노드에 대해 인터 예측만 수행하도록 제한되어 있고 자식 노드의 루마 샘플 수가 64개(또는 노드의 폭과 높이의 곱이 64개)인 경우 삼항 트리 분할(수평 포함 삼항 트리 분할 또는 수직 삼항 트리 분할)은 자식 노드에 대해 허용되지 않는다. 이러한 판단 방법은 YUV 4:2:0 및 YUV 4:2:2의 비디오 데이터 포맷 모두에 적용 가능하다.
예를 들어, 현재 노드의 크기가 8×8이고 수평 이진 트리 분할(또는 수직 이진 트리 분할)을 통해 2개의 8×4(또는 4×8) 노드가 생성되면 4×4 블록이 생성된다. 8×4(또는 4×8) 노드가 더 분할되는 경우. 이 경우 수직 이진 트리 분할(또는 수평 이진 트리 분할)은 8×4(또는 4×8) 노드에 대해 허용되지 않거나 8×4(또는 4×8) 노드에 대해 추가 분할이 허용되지 않는다. 다른 예로, 현재 노드의 루마 블록의 샘플 개수가 128개이고 분할 모드가 수평 삼항 트리 분할 또는 수직 삼항 트리 분할인 경우, 루마 블록의 샘플 개수는 64를 얻을 수 있다. 그러나 64개의 샘플 수를 갖는 루마 노드에 대해 자식 노드에 대한 수평 삼항 트리 분할 또는 수직 삼항 트리 분할을 사용하면 4×4 루마 블록이 얻어진다. 따라서 인터 예측만 수행하도록 제한하는 경우 샘플 수량이 64개인 노드 또는 샘플 수량이 64개인 노드에 대해 수평 삼항 트리 분할 또는 수직 삼항 트리 분할이 추가 분할되도록 허용되지 않는다.
본 출원의 제9 관점은 이미지 예측 방법을 제공한다. 방법은: 현재 노드의 크기 및 현재 노드의 예측 모드에 기초하여 현재 노드에 허용되지 않는 분할 모드를 결정하는 단계- 여기서 현재 노드는 현재 이미지에서 코딩 트리 단위(coding tree unit)의 이미지 블록임 - ; 현재 노드에 허용되지 않는 분할 모드에 기초하여 현재 노드의 블록 분할 정책을 결정하는 단계; 및 현재 노드의 블록 분할 정책에 따라 현재 노드에 대응하는 코딩 블록을 획득하고, 대응하는 코딩 블록에 대해 인터 예측을 수행하는 단계를 포함한다.
현재 노드의 크기는 현재 노드에 대응하는 코딩 트리 노드의 크기 및 현재 노드를 획득하기 위해 사용되는 분할 모드에 기초하여 결정될 수 있다.
제9 관점을 참조하면, 제9 관점의 가능한 제1 구현에서, 현재 노드의 크기 및 현재 노드의 예측 모드에 기초하여, 현재 노드에 대해 허용되지 않는 분할 모드를 결정하는 단계는: 현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만 사용되는지를 결정하고, 현재 노드의 루마 블록의 샘플 수가 32인지를 결정하는 단계; 및 현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만이 사용되는 것으로 결정되고 현재 노드의 루마 블록의 샘플의 수가 32인 것으로 결정될 때, 현재 노드에 허용되지 않는 분할 모드가 이진 트리 분할인 것으로 결정하는 단계를 포함한다.
제9 관점 또는 제9 관점의 제1 가능한 구현을 참조하여, 제9 관점의 제2 가능한 구현에서, 현재 노드의 크기 및 현재 노드의 예측 모드에 기초하여, 현재 노드에 허용되지 않는 분할 모드를 결정하는 단계는: 현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만 사용되는지를 결정하고, 현재 노드의 루마 블록의 샘플 수가 64인지를 결정하는 단계; 및 현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만이 사용되는 것으로 결정되고 현재 노드의 루마 블록의 샘플의 수가 64라고 결정될 때, 현재 노드에 허용되지 않는 분할 모드가 상항 트리 분할인 것으로 결정하는 단계를 포함한다.
본 출원의 제10 관점은 이미지 예측 장치를 제공한다. 장치:
현재 노드의 분할 모드를 획득하도록 구성된 획득 모듈 - 현재 노드는 현재 이미지의 코딩 트리 단위(coding tree unit)의 이미지 블록임 - ;
현재 노드의 분할 모드 및 현재 노드의 크기에 기초하여 현재 노드가 제1 조건을 만족하는지를 결정하도록 구성된 판정 모듈; 및
현재 노드가 제1 조건을 만족한다고 결정되면, 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하여 현재 노드에 속하는 모든 코딩 블록의 예측자를 획득하도록 구성된 실행 모듈
을 포함한다.
제10 관점을 참조하면, 제10 관점의 가능한 제1 구현에서, 판정 모듈은: 현재 노드가 제1 조건을 만족하지 않는다고 결정될 때, 현재 노드의 크기 및 현재 노드의 크기에 기초하여 현재 노드가 제2 조건을 만족하는지를 결정하도록 더 구성되고; 그리고
실행 모듈은: 현재 노드가 제2 조건을 만족한다고 결정되면 동일한 예측 모드를 사용하여 현재 노드에 속하는 모든 코딩 블록에 대해 예측을 수행하여 모든 코딩 블록의 예측자를 획득하도록 추가로 구성되며, 여기서 예측 모드는 인트라 예측 또는 인터 예측인 현재 노드에 속하는다.
판정 모듈은 현재 노드의 분할 모드, 현재 노드의 크기 및 현재 크로마 포맷(Chroma format)에 기초하여, 현재 노드가 제2 조건을 만족하는지를 결정하도록 구성될 수 있다.
제10 관점의 제1 가능한 구현을 참조하여, 제10 관점의 제2 가능한 구현에서, 실행 모듈은:
현재 노드의 예측 모드 상태 플래그를 구문 분석하고; 그리고
예측 모드 상태 플래그의 값이 제1 값인 경우 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측을 수행하거나; 또는 예측 모드 상태 플래그의 값이 제2 값인 경우, 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하도록 구성된다.
제10 관점의 제1 또는 제2 가능한 구현을 참조하여, 제10 관점의 제3 가능한 구현에서, 실행 모듈은:
현재 노드의 분할 모드에서 현재 노드를 분할하여 현재 노드의 자식 노드를 획득하고;
현재 노드의 자식 노드의 크기에 기초하여 현재 노드의 자식 노드에 허용되지 않는 분할 모드를 결정하고;
현재 노드의 자식 노드에 대해 허용되지 않는 분할 모드에 기초하여 현재 노드의 자식 노드의 블록 분할 정책을 결정하고; 그리고
현재 노드의 자식 노드의 블록 분할 정책에 따라 현재 노드의 자식 노드에 대응하는 코딩 블록을 획득하고 대응하는 코딩 블록에 대해 인터 예측을 수행하도록 구성된다.
제10 관점 또는 제10 관점의 가능한 구현 중 어느 하나를 참조하여, 제10 관점의 제4 가능한 구현에서, 실행 모듈은:
분할 모드에서, 현재 노드에 포함된 루마 블록을 분할하여 분할을 통해 얻은 루마 블록을 획득하고, 분할을 통해 얻은 루마 블록에 대해 인트라 예측을 수행하고; 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 크로마 코딩 블록에 대해 인트라 예측을 수행하도록 구성된다.
본 출원의 제11 관점은 이미지 예측 장치를 제공한다. 장치는: 현재 노드의 분할 모드를 획득하도록 구성된 획득 모듈 - 현재 노드는 현재 이미지의 코딩 트리 유닛(코딩 트리 유닛)의 이미지 블록임 -; 현재 노드의 분할 모드 및 현재 노드의 크기에 기초하여 현재 노드가 미리 설정된 조건을 충족하는지를 결정하도록 구성된 판정 모듈; 및 현재 노드가 미리 설정된 조건을 만족한다고 결정되면 동일한 예측 모드를 사용하여 현재 노드에 속하는 모든 코딩 블록에 대해 예측을 수행하여 현재 노드에 속하는 모든 코딩 블록의 예측자를 획득하도록 구성된 실행 모듈을 포함하며, 여기서 예측 모드는 인트라 예측 또는 인터 예측이다.
판정 모듈은 현재 노드의 분할 모드, 현재 노드의 크기 및 현재 크로마 포맷(Chroma format)에 기초하여, 현재 노드가 미리 설정된 조건을 만족하는지를 결정하도록 구성될 수 있다.
제11 관점을 참조하면, 제11 관점의 가능한 제1 구현에서, 실행 모듈은:
현재 노드의 예측 모드 상태 플래그를 구문 분석하고; 그리고
예측 모드 상태 플래그의 값이 제1 값인 경우 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측을 수행하거나; 또는 예측 모드 상태 플래그의 값이 제2 값인 경우, 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하도록 구성된다.
제11 관점 또는 제11 관점의 가능한 제1 구현을 참조하여, 제11 관점의 제2 가능한 구현에서, 실행 모듈은: 현재 노드의 분할 모드에서 현재 노드를 분할하여, 현재 노드의 자식 노드를 획득하고; 현재 노드의 자식 노드의 크기에 기초하여 현재 노드의 자식 노드에 허용되지 않는 분할 모드를 결정하고; 현재 노드의 자식 노드에 대해 허용되지 않는 분할 모드에 기초하여 현재 노드의 자식 노드의 블록 분할 정책을 결정하고; 현재 노드의 자식 노드의 블록 분할 정책에 따라 현재 노드의 자식 노드에 대응하는 코딩 블록을 획득하고, 대응하는 코딩 블록에 대해 인터 예측을 수행하도록 구성된다.
본 출원의 제12 관점은 이미지 예측 장치를 제공한다. 장치는: 현재 노드의 크기 및 현재 노드의 예측 모드에 기초하여, 현재 노드에 대해 허용되지 않는 분할 모드를 결정하도록 구성된 결정 유닛 - 여기서 현재 노드는 현재 이미지의 코딩 트리 유닛(coding tree unit)의 이미지 블록이며, 결정 유닛은 현재 노드에 대해 허용되지 않는 분할 모드에 기초하여 현재 노드의 블록 분할 정책을 결정하도록 추가로 구성됨 - ; 및 현재 노드의 블록 분할 정책에 따라 현재 노드에 대응하는 코딩 블록을 획득하고, 대응하는 코딩 블록에 대해 인터 예측을 수행하도록 구성된 예측 유닛을 포함한다.
제12 관점을 참조하여, 제12 관점의 제1 가능한 구현에서, 결정 유닛은:
현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만이 사용되는지를 결정하고, 현재 노드의 루마 블록의 샘플 수가 32인지를 결정하고; 그리고
현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만 사용되는 것으로 결정되고 현재 노드의 루마 블록의 샘플 수가 32라고 결정되는 경우, 현재 노드에 허용되지 않는 분할 모드가 이진 트리 분할인 것으로 결정하도록 구성된다.
제12 관점 또는 제12 관점의 가능한 제1 구현을 참조하여, 제12 관점의 가능한 제2 구현에서, 결정 유닛은:
현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만 사용되는지를 결정하고 현재 노드의 루마 블록의 샘플 수가 64인지를 결정하고; 그리고
현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만이 사용되는 것으로 결정되고 현재 노드의 루마 블록의 샘플의 수가 64라고 결정될 때, 현재 노드에 허용되지 않는 분할 모드가 삼항 트리 분할인 것으로 결정하도록 구성된다.
본 출원의 제7 관점, 제8 관점 및 제9 관점의 특징 및 구현에 대해, 제1 관점의 방법의 특징 및 구현을 참조한다.
본 출원의 제7 관점의 방법은 본 출원의 제10 관점의 장치에 의해 수행될 수 있다. 본 출원의 제11 관점에서의 장치의 기능 및 장치의 다른 구현에 대해서는, 본 출원의 제7 관점에서의 방법의 특징 및 구현을 참조한다.
본 출원의 제8 관점의 방법은 본 출원의 제11 관점의 장치에 의해 수행될 수 있다. 본 출원의 제11 관점에 있는 장치의 기능 및 장치의 다른 구현에 대해서는, 본 출원의 제8 관점에 있는 방법의 특징 및 구현을 참조한다.
본 출원의 제9 관점의 방법은 본 출원의 제12 관점의 장치에 의해 수행될 수 있다. 본 출원의 제12 관점에서 장치의 기능 및 장치의 다른 구현에 대해서는, 본 출원의 제9 관점에서 방법의 특징 및 구현을 참조한다.
본 출원의 제13 관점은 프로세서 및 메모리를 포함하는 비디오 스트림 디코딩 장치를 제공한다. 메모리는 명령어를 저장하고, 명령어는 프로세서가 제7 관점, 제8 관점 또는 제9 관점에 따른 방법을 수행할 수 있게 한다.
본 출원의 제14 관점은 프로세서 및 메모리를 포함하는 비디오 스트림 인코딩 장치를 제공한다. 메모리는 명령어를 저장하고, 명령어는 프로세서가 제7 관점, 제8 관점 또는 제9 관점에 따른 방법을 수행할 수 있게 한다.
본 출원의 제15 관점은 컴퓨터 판독 가능형 저장 매체를 제공한다. 컴퓨터 판독 가능형 저장 매체는 명령어를 저장하고, 명령어가 실행되면 하나 이상의 프로세서가 비디오 데이터를 인코딩할 수 있다. 명령어는 하나 이상의 프로세서가 제7 관점, 제8 관점, 제9 관점, 또는 제7 관점, 제8 관점 또는 제9 관점의 가능한 구현 중 어느 하나를 수행할 수 있게 한다.
본 출원의 제16 관점은 프로그램 코드를 포함하는 컴퓨터 프로그램을 제공한다. 프로그램 코드가 컴퓨터에서 실행될 때, 제7 관점, 제8 관점, 제9 관점, 또는 제7 관점, 제8 관점, 또는 제9 관점의 가능한 구현 중 어느 하나의 방법이 수행된다.
본 출원의 제17 관점은 컴퓨터 판독 가능형 저장 매체를 제공한다. 컴퓨터 판독 가능형 저장 매체는 비트스트림을 저장하고, 비트스트림은 현재 코딩 트리의 현재 노드의 예측 모드 상태 플래그를 실어 전달한다. 예측 모드 상태 플래그의 값이 제1 값인 경우 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측 모드가 사용됨을 나타내거나, 또는 예측 모드 상태 플래그의 값이 제2 값인 경우 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측 모드가 사용됨을 나타낸다.
본 출원의 제2 관점 내지 제17 관점의 기술적 솔루션은 본 출원의 제1 관점의 기술적 솔루션과 일치하고, 관점 및 상응하는 실현 가능한 구현에 의해 달성되는 유익한 효과는 유사하다는 것을 이해해야 한다. 자세한 내용은 다시 설명하지 않는다.
하나 이상의 실시예의 자세한 내용은 첨부 도면 및 다음 설명에서 설명된다. 다른 특징, 목적 및 이점은 명세서, 도면 및 청구범위에 따라 명확한다.
본 출원은 이미지 예측 방법, 장치 및 시스템, 장치, 및 저장 매체를 제공한다. 방법은: 현재 노드의 분할 모드를 획득하는 단계, 및 현재 노드의 분할 모드에서 현재 노드를 분할하여 미리 설정된 크기의 이미지 블록이 획득되는지를 결정하는 단계를 포함하며, 여기서 이미지 블록은 루마 블록 또는 크로마 블록을 포함한다. 현재 노드의 분할 모드에서 현재 노드를 분할하여 미리 설정된 크기의 영상 블록을 얻은 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행한다. 전술한 방법에 따르면 현재 노드의 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행함으로써 현재 노드의 모든 코딩 블록에 대한 병렬 처리를 구현할 수 있다. 이것은 영상 예측의 처리 성능을 향상시키고 코딩 처리 속도를 증가시킨다.
도 1a는 본 출원의 실시예를 구현하기 위한 비디오 코딩 시스템(10)의 예의 블록도이다.
도 1b는 본 출원의 실시예를 구현하기 위한 비디오 코딩 시스템(40)의 예의 블록도이다.
도 2는 본 출원의 실시예를 구현하기 위한 인코더(20)의 예시적인 구조의 블록도이다.
도 3은 본 출원의 실시예를 구현하기 위한 디코더(30)의 예시적인 구조의 블록도이다.
도 4는 본 출원의 실시예를 구현하기 위한 비디오 코딩 디바이스(400)의 예의 블록도이다.
도 5는 본 출원의 실시예를 구현하기 위한 인코딩 장치 또는 디코딩 장치의 다른 예의 블록도이다.
도 6(a) 내지 도 6(g)는 본 출원의 실시예를 구현하기 위한 블록 분할 모드의 개략적인 블록도이다.
도 7은 본 출원의 실시예를 구현하기 위한 인트라 예측의 개략적인 블록도이다.
도 8은 본 출원의 실시예를 구현하기 위한 비디오 통신 시스템의 개략적인 블록도이다.
도 9는 본 출원의 실시예에 따른 제1 이미지 예측 방법의 개략적인 흐름도이다.
도 10은 본 출원의 실시예에 따른 제2 이미지 예측 방법의 개략적인 흐름도이다.
도 11은 본 출원의 실시예에 따른 제3 이미지 예측 방법의 개략적인 흐름도이다.
도 12는 본 출원의 실시예에 따른 제4 이미지 예측 방법의 개략적인 흐름도이다.
도 13은 본 출원의 실시예에 따른 제5 이미지 예측 방법의 개략적인 흐름도이다.
도 14는 본 출원의 실시예에 따른 제6 이미지 예측 방법의 개략적인 흐름도이다.
도 15는 본 출원의 실시예에 따른 이미지 예측 장치의 기능의 개략적인 구조도이다.
도 16은 본 출원의 실시예에 따른 비디오 인코딩 장치의 하드웨어의 개략적인 구조도이다.
도 17은 본 출원의 실시예에 따른 비디오 디코딩 장치의 하드웨어의 개략적인 구조도이다.
도 18은 본 출원의 실시예에 따른 이미지 예측 시스템의 개략적인 구조도이다.
다음은 본 출원의 실시예에서 첨부된 도면을 참조하여 본 출원의 실시예를 설명한다. 다음의 설명에서, 본 개시의 일부를 형성하고 예시로서, 본 출원의 실시예들의 특정 관점들 또는 본 출원의 실시예들이 사용될 수 있는 특정 관점들을 보여주는 첨부 도면들을 참조한다. 본 출원의 실시예는 다른 측면에서 사용될 수 있고, 첨부된 도면에 도시되지 않은 구조적 또는 논리적 변경을 포함할 수 있다는 것을 이해해야 한다. 따라서, 다음의 상세한 설명은 제한적인 의미로 받아들여지지 않을 것이며, 본 출원의 범위는 첨부된 청구 범위에 의해 정의된다. 예를 들어, 설명된 방법과 관련된 개시는 방법을 수행하도록 구성된 대응하는 장치 또는 시스템에 대해서도 참일 수 있고 그 반대의 경우도 마찬가지라는 것을 이해해야 한다. 예를 들어, 하나 이상의 특정 방법 단계가 설명된 경우, 해당 장치는 설명된 하나 이상의 방법 단계를 수행하기 위해 기능 유닛과 같은 하나 이상의 유닛을 포함할 수 있으며(예를 들어, 하나 이상의 단계를 수행하는 하나의 유닛; 또는 복수의 단계 중 하나 이상을 각각 수행하는 복수의 유닛), 비록 그러한 하나 이상의 유닛이 첨부된 도면에 명시적으로 설명되거나 도시되지 않더라도 그러하다. 반면에, 예를 들어, 기능 유닛과 같은 하나 이상의 유닛을 기반으로 특정 장치를 기술하는 경우, 해당 방법은 하나 이상의 유닛의 기능을 수행하는 데 사용되는 하나의 단계를 포함하며(예를 들어, 하나 이상의 유닛의 기능을 수행하는 데 사용되는 하나의 단계, 또는 복수의 유닛 중 하나 이상의 유닛의 기능을 수행하는 데 각각 사용되는 복수의 단계), 비록 그러한 하나 이상의 단계가 첨부 도면에 명시적으로 설명되거나 도시되지 않은 경우에도 그러하다. 또한, 달리 언급하지 않는 한, 본 명세서에 설명된 다양한 예시적인 실시예들 및/또는 측면들의 특징들은 서로 결합될 수 있음을 이해해야 한다.
비디오 코딩은 통상적으로 비디오 또는 비디오 시퀀스를 형성하는 영상 시퀀스의 처리를 의미한다. 비디오 코딩 분야에서는 "영상(picture)", "프레임(frame)" 또는 "이미지(image)"라는 용어가 동의어로 사용될 수 있다. 이 명세서에서 비디오 코딩은 비디오 인코딩 또는 비디오 디코딩을 나타낸다. 비디오 코딩은 소스 측에서 수행되며, 일반적으로보다 효율적인 저장 및/또는 전송을 위해 비디오 영상을 표현하는 데 필요한 데이터의 양을 줄이기 위해 원본 비디오 영상을 처리(예를 들어, 압축)하는 것을 포함한다. 비디오 디코딩은 목적지 측에서 수행되며 일반적으로 비디오 영상을 재구성하기 위해 인코더와 비교하여 역 처리를 포함한다. 실시예에서 비디오 영상의 "코딩"은 비디오 시퀀스의 "인코딩" 또는 "디코딩"으로 이해되어야 한다. 인코딩 유닛과 디코딩 유닛의 조합을 CODEC(코덱, 인코딩 및 디코딩)이라고도 한다.
비디오 시퀀스는 일련의 이미지(영상)를 포함하고, 이미지는 슬라이스(sliced)로 더 분할되고, 슬라이스는 블록(block)으로 더 분할된다. 비디오 코딩 처리는 블록 단위로 수행된다. 일부 새로운 비디오 코딩 표준에서는 "블록"이라는 개념이 더 확장된다. 예를 들어, 매크로블록은 예측 코딩을 위해 복수의 예측 블록(파티션)으로 더 분할될 수 있다. 대안으로, 코딩 단위(coding unit, CU), 예측 단위(prediction unit, PU), 변환 단위(transform unit, TU)와 같은 기본 개념을 사용하고, 기능 분할을 통해 복수의 블록 단위를 구하고, 완전히 새로운 트리 기반 구조가 설명에 사용된다. 예를 들어, CU는 쿼드트리 분할을 통해 더 작은 CU로 분할될 수 있고, 더 작은 CU는 쿼드트리 구조를 형성하기 위해 더 분할될 수 있다. CU는 코딩 영상의 분할 및 코딩을 위한 기본 단위이다. PU 및 TU의 경우에도 유사한 트리 구조가 있을 수 있다. PU는 예측 블록에 대응할 수 있으며, 예측 코딩의 기본 단위이다. CU는 분할 모드에서 복수의 PU로 더 분할된다. TU는 변환 블록에 대응할 수 있으며, 예측 잔여를 변환하기 위한 기본 단위이다. 그러나 CU, PU, TU는 모두 본질적으로 블록(또는 이미지 블록)의 개념이다.
CTU는 코딩 트리로 표현되는 쿼드 트리 구조를 사용하여 복수의 CU로 분할된다. 인터 영상(시간적) 또는 인트라 영상(공간적) 예측을 사용하여 영상 영역을 인코딩할지는 CU 레벨에서 결정된다. 각각의 CU는 PU 분할 패턴에 기초하여 1 개, 2 개 또는 4 개의 PU로 추가로 분할될 수 있다. 하나의 PU 내부에서는 동일한 예측 프로세스가 적용되고 관련 정보가 PU 단위로 디코더로 전송된다. PU 분할 패턴을 기반으로 예측 과정을 적용하여 잔여 블록을 획득한 후 CU는 CU에 사용되는 코딩 트리와 유사한 다른 쿼드 트리 구조를 기반으로 변환 단위(transform unit, TU)로 분할될 수 있다. 최근 비디오 압축 기술의 발전에서 쿼드 트리와 이진 트리(quad tree and binary tree, QTBT) 파티션 프레임은 코딩 블록을 분할하는 데 사용된다. QTBT 블록 구조에서 CU는 정사각형 또는 직사각형일 수 있다.
본 명세서에서는 설명과 이해의 편의를 위해 현재 코딩된 영상에서 코딩될 영상 블록을 현재 블록이라고 할 수 있다. 예를 들어, 인코딩에서 현재 블록은 현재 인코딩중인 블록이다. 디코딩에서 현재 블록은 현재 디코딩되고 있는 블록이다. 참조 영상에서 현재 블록을 예측하기 위해 사용되는 디코딩된 영상 블록을 참조 블록이라고 한다. 즉, 참조 블록은 현재 블록에 대한 참조 신호를 제공하는 블록이다. 참조 신호는 영상 블록의 픽셀 값을 나타낸다. 참조 영상에서 현재 블록에 대한 예측 신호를 제공하는 블록을 예측 블록이라고 할 수 있다. 예측 신호는 예측 블록에서 픽셀 값, 샘플링 값 또는 샘플링 신호를 나타낸다. 예를 들어, 복수의 참조 블록을 순회한 후 최적의 참조 블록을 찾고, 최적의 참조 블록은 현재 블록에 대한 예측을 제공하고, 이 블록을 예측 블록이라고 한다.
무손실 비디오 코딩의 경우, 원본 비디오 영상이 재구성될 수 있다. 즉, 재구성된 비디오 영상은 원본 비디오 영상과 동일한 품질을 갖는다(저장 또는 전송 중에 전송 손실 또는 기타 데이터 손실이 발생하지 않는다고 가정). 손실 비디오 코딩의 경우, 비디오 영상을 표현하는 데 필요한 데이터의 양을 줄이기 위해 예를 들어 양자화를 통해 추가 압축이 수행되며, 비디오 영상은 디코더 측에서 완전히 재구성될 수 없다. 즉, 재구성된 비디오 영상의 품질이 원본 비디오 영상의 품질보다 낮거나 나쁘다.
여러 H.261 비디오 코딩 표준은 "손실 하이브리드 비디오 코덱"을 위한 것이다(즉, 샘플 도메인의 공간 및 시간적 예측은 변환 도메인에서 양자화를 적용하기 위해 2D 변환 코딩과 결합된다). 비디오 시퀀스의 각 영상은 일반적으로 겹치지 않는 블록 세트로 분할되고 코딩은 일반적으로 블록-레벨에서 수행된다. 즉, 인코더 측에서 비디오는 일반적으로 블록(비디오 블록) 수준에서 처리, 즉 인코딩된다. 예를 들어 공간(인트라 영상) 예측과 시간적(인터 영상) 예측을 통해 예측 블록을 생성하고, 현재 블록(현재 처리 중이거나 처리중인 블록)에서 예측 블록을 빼서 잔여 블록을 구하며, 전송(압축)될 데이터의 양을 줄이기 위해 변환 도메인에서 잔여 블록이 변환되고 양자화된다. 디코더 측에서, 인코더와 비교되는 역 처리가 인코딩되거나 압축된 블록에 적용되어 표현을 위해 현재 블록을 재구성한다. 더욱이, 인코더는 디코더 프로세싱 루프를 복제하여 인코더와 디코더가 동일한 예측(예를 들어, 인트라 예측 및 인터 예측) 및/또는 프로세싱을 위한, 즉 후속 블록을 코딩하기 위한 재구성을 생성하도록 한다.
다음은 본 출원의 실시예들에 적용 가능한 시스템 아키텍처를 설명한다. 도 1a는 본 출원의 실시예가 적용 가능한 비디오 코딩 시스템(10)의 예의 개략적인 블록도이다. 도 1a에 도시된 바와 같이, 비디오 인코딩 및 디코딩 시스템(10)은 소스 장치(12) 및 목적지 장치(14)를 포함할 수 있다. 소스 장치(12)는 인코딩된 비디오 데이터를 생성하기 때문에, 소스 장치(12)는 비디오 인코딩 장치로 지칭될 수 있다. 목적지 장치(14)는 소스 장치(12)에 의해 생성된 인코딩된 비디오 데이터를 디코딩할 수 있으며, 따라서 목적지 장치(14)는 비디오 디코딩 장치로 지칭될 수 있다. 다양한 구현 솔루션에서, 소스 장치(12), 목적지 장치(14) 또는 소스 장치(12) 및 목적지 장치(14) 모두는 하나 이상의 프로세서 및 하나 이상의 프로세서에 결합된 메모리를 포함할 수 있다. 이 명세서에 설명된 바와 같이 메모리는 RAM, ROM, EEPROM, 플래시 메모리, 또는 컴퓨터에 액세스할 수 있는 데이터 구조 또는 명령어의 형태로 원하는 프로그램 코드를 저장하는 데 사용될 수 있는 임의의 다른 매체를 포함할 수 있지만 이에 제한되지 않는다. 소스 장치(12) 및 목적지 장치(14)는 데스크톱 컴퓨터, 모바일 컴퓨팅 장치, 노트북(예를 들어, 랩톱) 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 다음과 같은 전화 핸드셋을 포함한 다양한 장치를 포함할 수 있으며, "스마트" 전화, 텔레비전, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 차량 내 컴퓨터, 무선 통신 장치, 또는 유사한 장치를 예로 들 수 있다.
도 1a는 소스 장치(12) 및 목적지 장치(14)를 별개의 장치로 도시하고 있지만, 장치 실시예는 대안적으로 소스 장치(12)와 목적지 장치(14) 모두 또는 소스 장치(12) 및 목적지 장치(14)의 기능, 즉 소스 장치(12) 또는 대응하는 기능 및 목적지 장치(14) 또는 대응하는 기능을 포함할 수 있다. 이러한 실시예에서, 소스 장치(12) 또는 대응하는 기능 및 목적지 장치(14) 또는 대응하는 기능은 동일한 하드웨어 및/또는 소프트웨어, 별도의 하드웨어 및/또는 소프트웨어, 또는 이들의 임의의 조합을 사용하여 구현될 수 있다.
소스 장치(12)와 목적지 장치(14) 간의 통신 연결은 링크(13)를 통해 구현될 수 있으며, 목적지 장치(14)는 링크(13)를 통해 소스 장치(12)로부터 인코딩된 비디오 데이터를 수신할 수 있다. 링크(13)는 소스 장치(12)로부터 목적지 장치(14)로 그 인코딩된 비디오 데이터를 전송할 수 있는 하나 이상의 미디어 또는 장치를 포함할 수 있다. 예에서, 링크(13)는 소스 장치(12)가 인코딩된 비디오 데이터를 실시간으로 목적지 장치(14)에 직접 전송할 수 있게 하는 하나 이상의 통신 매체를 포함할 수 있다. 이 예에서, 소스 장치(12)는 통신 표준(예를 들어, 무선 통신 프로토콜)에 따라 그 인코딩된 비디오 데이터를 변조할 수 있고 변조된 비디오 데이터를 목적지 장치(14)로 전송할 수 있다. 하나 이상의 통신 매체는 무선 통신 매체 및/또는 유선 통신 매체, 예를 들어 무선 주파수(RF) 스펙트럼 또는 하나 이상의 물리적 전송 케이블을 포함할 수 있다. 하나 이상의 통신 매체는 패킷 기반 네트워크의 일부일 수 있고, 패킷 기반 네트워크는 예를 들어 근거리 통신망, 광역 통신망 또는 글로벌 네트워크(예를 들어, 인터넷)일 수 있다. 하나 이상의 통신 매체는 라우터, 스위치, 기지국, 또는 소스 장치(12)로부터 목적지 장치(14)로의 통신을 용이하게 하는 다른 장치를 포함할 수 있다.
소스 장치(12)는 인코더(20)를 포함한다. 선택적으로, 소스 장치(12)는 영상 소스(16), 영상 프리프로세서(18) 및 통신 인터페이스(22)를 더 포함할 수 있다. 특정 구현에서, 인코더(20), 영상 소스(16) 영상 프리프로세서(18) 및 통신 인터페이스(22)는 소스 장치(12)의 하드웨어 구성 요소이거나 소스 장치(12)의 소프트웨어 프로그램일 수 있다. 설명은 다음과 같이 별도로 제공된다.
영상 소스(16)는 예를 들어 현실 세계의 화상을 캡처하도록 구성된 임의의 유형의 화상 캡처 장치를 포함할 수 있거나; 및/또는 영상 또는 주석을 생성하기 위한 임의의 유형의 장치(화면 콘텐츠 인코딩의 경우, 화면의 일부 텍스트도 인코딩될 영상 또는 이미지의 일부로 간주된다), 예를 들어 컴퓨터 애니메이션 영상을 생성하도록 구성된 컴퓨터 그래픽 프로세서; 또는 실제 영상 또는 컴퓨터 애니메이션 영상(예를 들어, 스크린 콘텐츠 또는 가상 현실(vitual reality, VR) 영상)를 획득 및/또는 제공하도록 구성된 임의의 유형의 장치; 및/또는 이들의 임의의 조합(예를 들어, 증강 현실(augmented reality, AR) 영상)일 수 있다. 영상 소스(16)는 영상을 캡처하도록 구성된 카메라 또는 영상을 저장하도록 구성된 메모리일 수 있다. 영상 소스(16)는 이전에 캡처되거나 생성된 영상이 저장되고 및/또는 영상이 획득되거나 수신되는 임의의 유형의(내부 또는 외부) 인터페이스를 더 포함할 수 있다. 영상 소스(16)가 카메라일 때, 영상 소스(16)는 예를 들어 로컬 카메라 또는 소스 장치에 통합된 통합 카메라일 수 있다. 영상 소스(16)가 메모리일 때, 영상 소스(16)는 로컬 메모리 또는 예를 들어 소스 장치에 통합된 통합 메모리일 수 있다. 영상 소스(16)가 인터페이스를 포함하는 경우, 인터페이스는 예를 들어 외부 비디오 소스로부터 화상을 수신하기 위한 외부 인터페이스일 수 있다. 외부 비디오 소스는 예를 들어 카메라, 외부 메모리 또는 외부 영상 생성 장치와 같은 외부 영상 캡처 장치이다. 외부 화상 생성 장치는 예를 들어 외부 컴퓨터 그래픽 프로세서, 컴퓨터 또는 서버이다. 인터페이스는 임의의 독점적 또는 표준화된 인터페이스 프로토콜에 따라 유선 또는 무선 인터페이스 또는 광학 인터페이스와 같은 모든 유형의 인터페이스일 수 있다.
영상은 픽셀 요소(영상 요소)의 2 차원 어레이 또는 매트릭스로 간주될 수 있다. 어레이의 픽셀 요소는 샘플이라고도 한다. 배열 또는 영상의 수평 및 수직 방향(또는 축)에 있는 샘플의 양은 그림의 크기 및/또는 해상도를 정의한다. 색상 표현을 위해 일반적으로 세 가지 색상 구성 요소가 사용되며, 구체적으로 영상은 세 개의 샘플 어레이로 표현되거나 이를 포함할 수 있다. 예를 들어, RBG 포맷 또는 색 공간에서 그림에는 해당하는 빨강, 녹색 및 파랑 샘플 배열이 포함된다. 그러나 비디오 코딩에서 각 픽셀은 일반적으로 루마/크로마 포맷 또는 색 공간으로 표시된다. 예를 들어 YUV 포맷의 영상에는 Y(때로는 L로 표시됨)로 표시되는 루마 성분과 U 및 V로 표시되는 두 개의 크로마 성분이 포함된다. 루마(루마) 성분 Y는 밝기 또는 그레이 레벨 강도(예를 들어, 둘 다 회색조 영상에서 동일함) 두 크로마) 성분 U 및 V는 크로마 또는 색상 정보 성분을 나타낸다. 이에 따라 YUV 포맷의 그림에는 루마 샘플 값(Y)의 루마 샘플 어레이와 크로마 값(U 및 V)의 두 크로마 샘플 어레이가 포함된다. RGB 포맷의 영상은 YUV 포맷으로 변환하거나 변환할 수 있으며 그 반대의 경우도 마찬가지이다. 이 프로세스를 색상 변환 또는 변형이라고도 한다. 그림이 단색인 경우 그림에는 루마 샘플 어레이만 포함될 수 있다. 본 출원의 이 실시예에서, 영상 소스(16)에 의해 화상 프로세서로 전송된 영상은 또한 원시 영상 데이터(17)로 지칭될 수 있다.
영상 프리프로세서(18)는 원시 영상 데이터(17)를 수신하고 원시 영상 데이터(17)에 대해 프리프로세싱을 수행하여 프리프로세싱된 영상(19) 또는 프리프로세싱된 영상 데이터(19)를 획득하도록 구성된다. 예를 들어, 영상 프리프로세서(18)에 의해 수행되는 프리프로세싱은 트리밍, 색상 포맷 변환(예를 들어, RGB 포맷에서 YUV 포맷으로), 색상 보정 또는 노이즈 제거를 포함할 수 있다.
인코더(20)(또는 비디오 인코더(20)라고 함)는 프리프로세싱된 영상 데이터(19)를 수신하고, 관련 예측 모드(예를 들어, 본 명세서의 각 실시예의 예측 모드)를 사용하여, 인코딩된 영상 데이터(21)를 제공하기 위해 프리프로세싱된 영상 데이터(19)를 처리하도록 구성된다(인코더(20)의 구조적 자세한 내용은 도 2, 도 4 또는 도 5에 기초하여 아래에서 더 설명된다). 일부 실시예에서, 인코더(20)는 본 출원에서 설명된 크로마 블록 예측 방법의 인코더 측 애플리케이션을 구현하기 위해 아래 설명된 각 실시예를 수행하도록 구성될 수 있다.
통신 인터페이스(22)는 인코딩된 영상 데이터(21)를 수신하고, 인코딩된 영상 데이터(21)를 저장 또는 재구성을 위해 직접 링크(13)를 통해 목적지 장치(14) 또는 임의의 다른 장치(예를 들어, 메모리)로 전송하도록 구성될 수 있다. 다른 장치는 디코딩 또는 저장에 사용되는 임의의 장치일 수 있다. 통신 인터페이스(22)는 예를 들어, 링크(13)를 통한 전송을 위해 인코딩된 영상 데이터(21)를 적절한 포맷, 예를 들어 데이터 패킷으로 패키징하도록 구성될 수 있다.
목적지 장치(14)는 디코더(30)를 포함한다. 선택적으로, 목적지 장치(14)는 통신 인터페이스(28), 영상 포스트프로세서(32) 및 디스플레이 장치(34)를 더 포함할 수 있다. 설명은 다음과 같이 별도로 제공된다.
통신 인터페이스(28)는 소스 장치(12) 또는 임의의 다른 소스로부터 인코딩된 영상 데이터(21)를 수신하도록 구성될 수 있다. 다른 소스는 예를 들어 저장 장치이다. 저장 장치는 예를 들어 인코딩된 영상 데이터 저장 장치이다. 통신 인터페이스(28)는 소스 장치(12)와 목적지 장치(14) 사이의 링크(13)를 통해 또는 임의의 유형의 네트워크를 통해 인코딩된 영상 데이터(21)를 송신 또는 수신하도록 구성될 수 있다. 링크(13)는 예를 들어 직접 유선 또는 무선 연결이다. 임의의 유형의 네트워크는 예를 들어 유선 또는 무선 네트워크 또는 이들의 임의의 조합, 또는 임의의 유형의 사설 또는 공용 네트워크, 또는 이들의 임의의 조합이다. 통신 인터페이스(28)는 예를 들어, 인코딩된 영상 데이터(21)를 얻기 위해 통신 인터페이스(22)를 통해 전송된 데이터 패킷을 디 패키징하도록 구성될 수 있다.
통신 인터페이스(28) 및 통신 인터페이스(22) 모두는 단방향 통신 인터페이스 또는 양방향 통신 인터페이스로 구성될 수 있으며, 예를 들어 연결을 설정하기 위해 메시지를 송수신하고 통신 링크 및/또는 인코딩된 영상 데이터 전송과 같은 데이터 전송과 관련된 다른 정보를 확인 및 교환하도록 구성될 수 있다.
디코더(30)(또는 디코더(30)로 지칭됨)는 인코딩된 영상 데이터(21)를 수신하고 디코딩된 영상 데이터(31) 또는 디코딩된 영상(31)을 제공하도록 구성된다(디코더(30)의 구조적 자세한 내용은 도 2, 도 3 및 도 5에 기초하여 아래에서 더 설명된다). 일부 실시예에서, 디코더(30)는 본 출원에서 설명된 크로마 블록 예측 방법의 디코더 측 애플리케이션을 구현하기 위해 아래 설명된 각 실시예를 수행하도록 구성될 수 있다.
영상 포스트프로세서(32)는 디코딩 영상 데이터(31)(재구성 영상 데이터라고도 함)를 포스트프로세싱하여 포스트프로세싱 영상 데이터(33)를 획득하도록 구성된다. 영상 포스트프로세서(32)에 의해 수행되는 포스트프로세싱 색상 포맷 변환(예를 들어, YUV 포맷에서 RGB 포맷으로), 색상 보정, 트리밍, 리샘플링 또는 기타 처리가 포함될 수 있다. 영상 포스트프로세서(32)는 포스트프로세싱된 영상 데이터(33)를 디스플레이 장치(34)로 전송하도록 더 구성될 수 있다.
디스플레이 장치(34)는 예를 들어 사용자 또는 시청자에게 영상을 디스플레이하기 위해 포스트프로세싱된 영상 데이터(33)를 수신하도록 구성된다. 디스플레이 장치(34)는 재구성된 영상을 제공하기 위한 임의의 유형의 디스플레이, 예를 들어 통합 또는 외부 디스플레이 또는 모니터일 수 있거나 이를 포함할 수 있다. 예를 들어, 이것은 액정 디스플레이(liquid crystal display, LCD), 유기 발광 다이오드(organic light emitting diode, OLED) 디스플레이, 플라즈마 디스플레이, 프로젝터, 마이크로 LED 디스플레이, 액정 온 실리콘(liquid crystal on silicon, LCoS), 디지털 조명 프로세서(digital light processor, DLP) 또는 기타 모든 유형의 디스플레이를 포함할 수 있다.
도 1a는 소스 장치(12) 및 목적지 장치(14)를 별개의 장치로 도시하고 있지만, 장치 실시예는 대안적으로 소스 장치(12)와 목적지 장치(14) 또는 소스 장치(12) 및 목적지 장치(14)의 기능, 즉 소스 장치(12) 또는 대응하는 기능 및 목적지 장치(14) 또는 대응하는 기능을 포함할 수 있다. 이러한 실시예에서, 소스 장치(12) 또는 대응하는 기능 및 목적지 장치(14) 또는 대응하는 기능은 동일한 하드웨어 및/또는 소프트웨어, 별도의 하드웨어 및/또는 소프트웨어, 또는 이들의 임의의 조합을 사용하여 구현될 수 있다.
당업자는 도 1a에 도시된 소스 장치(12) 및/또는 목적지 장치(14)의 상이한 유닛 또는 기능의 설명, 존재 및(정확한) 분할은 실제 장치 및 애플리케이션에 따라 다를 수 있다는 것을 학습할 수 있다. 소스 장치(12) 및 목적지 장치(14)는 임의의 유형의 핸드헬드 또는 고정 장치를 포함하는 임의의 다양한 장치를 포함할 수 있으며, 예를 들어 노트북 또는 랩톱 컴퓨터, 휴대폰, 스마트 폰, 태블릿 또는 태블릿 컴퓨터, 비디오 카메라, 데스크톱 컴퓨터, 셋톱 박스, 텔레비전, 카메라, 차량 탑재 장치, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 장치(예를 들어, 콘텐츠 서비스 서버 또는 콘텐츠 전송 서버), 방송 수신 장치 또는 방송 송신기 장치를 포함하며, 모든 유형의 운영 체제를 사용하거나 사용하지 않을 수 있다.
인코더(20) 및 디코더(30)는 각각 다양한 적절한 회로, 예를 들어 하나 이상의 마이크로프로세서, 디지털 신호 프로세서(digital signal processor, DSP), 주문형 집적 회로(application-specific integrated circuit, ASIC), 필드 프로그래머블 게이트 어레이(field programmable gate array, FPGA), 이산 로직, 하드웨어 또는 이들의 조합 중 어느 하나로 구현될 수 있다. 기술이 소프트웨어를 사용하여 부분적으로 구현되는 경우, 장치는 적절한 비 일시적 컴퓨터 판독 가능 저장 매체에 소프트웨어 명령을 저장하고 하나 이상의 프로세서와 같은 하드웨어를 사용하여 명령을 실행하여 본 개시의 기술을 수행할 수 있다. 전술한 내용(하드웨어, 소프트웨어, 하드웨어와 소프트웨어의 조합 등 포함)은 하나 이상의 프로세서로 간주될 수 있다.
일부 경우에, 도 1a에 도시된 비디오 인코딩 및 디코딩 시스템(10)은 단지 예일 뿐이며, 본 출원의 기술은 인코딩 장치와 디코딩 장치 간의 데이터 통신을 반드시 포함하지 않는 비디오 코딩 설정(예를 들어, 비디오 인코딩 또는 비디오 디코딩)에 적용할 수 있다. 다른 예에서, 데이터는 로컬 메모리로부터 검색되거나, 네트워크 등을 통해 스트리밍될 수 있다. 비디오 인코딩 장치는 데이터를 인코딩하고 데이터를 메모리에 저장할 수 있고 및/또는 비디오 디코딩 장치는 메모리로부터 데이터를 검색하고 데이터를 디코딩할 수 있다. 일부 예에서, 인코딩 및 디코딩은 서로 통신하지 않고 단순히 메모리로 데이터를 인코딩하고 및/또는 메모리에서 데이터를 검색하고 데이터를 디코딩하는 장치에 의해 수행된다.
도 1b는 예시적인 실시예에 따라 도 2의 인코더(20) 및/또는 도 3의 디코더(30)를 포함하는 비디오 코딩 시스템(40)의 예를 예시하는 도면이다. 비디오 코딩 시스템(40)은 본 출원의 실시예에서 다양한 기술의 조합을 구현할 수 있다. 예시된 구현에서, 비디오 코딩 시스템(40)은 이미징 장치(41), 인코더(20), 디코더(30)(및/또는 프로세싱 유닛(46)의 논리 회로(47)에 의해 구현된 비디오 인코더/디코더), 안테나(42), 하나 이상의 프로세서(43), 하나 이상의 메모리(44) 및/또는 디스플레이 장치(45)를 포함할 수 있다.
도 1b에 도시된 바와 같이, 이미징 장치(41), 안테나(42), 프로세싱 유닛(46), 논리 회로(47), 인코더(20), 디코더(30), 프로세서(43), 메모리(44) 및/또는 디스플레이 장치(45)는 서로 통신할 수 있다. 설명된 바와 같이, 비디오 코딩 시스템(40)이 인코더(20) 및 디코더(30) 모두로 예시되었지만, 다른 예에서, 비디오 코딩 시스템(40)은 인코더(20)만을 포함하거나 디코더(30)만을 포함할 수 있다.
일부 예들에서, 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 송신 또는 수신하도록 구성될 수 있다. 또한, 일부 예들에서, 디스플레이 장치(45)는 비디오 데이터를 제공하도록 구성될 수 있다. 일부 예들에서, 논리 회로(47)는 프로세싱 유닛(46)에 의해 구현될 수 있다. 프로세싱 유닛(46)은 주문형 집적 회로(application-specific integrated circuit, ASIC) 로직, 그래픽 프로세서, 범용 프로세서 등을 포함할 수 있다. 비디오 코딩 시스템(40)은 또한 선택적 프로세서(43)를 포함할 수 있다. 마찬가지로, 선택적 프로세서(43)는 주문형 집적 회로(application-specific integrated circuit, ASIC) 로직, 그래픽 프로세서, 범용 프로세서 등을 포함할 수 있다. 일부 예들에서, 논리 회로(47)는 하드웨어, 예를 들어 비디오 코딩 전용 하드웨어에 의해 구현될 수 있고, 프로세서(43)는 범용 소프트웨어, 운영 체제 등을 사용하여 구현될 수 있다. 또한, 메모리(44)는 임의의 유형의 메모리, 예를 들어, 휘발성 메모리(예를 들어, 정적 랜덤 액세스 메모리(Static Random Access Memory, SRAM) 또는 동적 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM))와 같은 임의의 유형의 메모리일 수 있다) 또는 비 휘발성 메모리(예를 들어, 플래시 메모리)일 수 있다. 비 제한적인 예에서, 메모리(44)는 캐시 메모리에 의해 구현될 수 있다. 일부 예들에서, 논리 회로(47)는 (예를 들어, 영상 버퍼의 구현을 위해) 메모리(44)에 액세스할 수 있다. 다른 예에서, 논리 회로(47) 및/또는 프로세싱 유닛(46)은 영상 버퍼 등의 구현을 위한 메모리(예를 들어, 캐시)를 포함할 수 있다.
일부 예들에서, 논리 회로에 의해 구현되는 인코더(20)는 영상 버퍼(예를 들어, 프로세싱 유닛(46) 또는 메모리(44)에 의해 구현됨) 및 그래픽 프로세싱 유닛(예를 들어, 프로세싱 유닛(46)에 의해 구현됨)을 포함할 수 있다)을 포함할 수 있다. 그래픽 프로세싱 유닛은 영상 버퍼에 통신 가능하게 결합될 수 있다. 그래픽 프로세싱 유닛은 도 2를 참조하여 설명된 다양한 모듈 및/또는 본 명세서에 설명된 임의의 다른 인코더 시스템 또는 서브 시스템을 구현하기 위해 논리 회로(47)에 의해 구현된 인코더(20)를 포함할 수 있다. 논리 회로는 본 명세서에서 설명하는 다양한 동작을 수행하도록 구성될 수 있다.
일부 예들에서, 디코더(30)는 도 3의 디코더(30)를 참조하여 설명된 다양한 모듈 및/또는 본 명세서에 설명된 다른 디코더 시스템 또는 서브 시스템을 구현하기 위해 유사한 방식으로 논리 회로(47)에 의해 구현될 수 있다. 일부 예들에서, 논리 회로에 의해 구현되는 디코더(30)는 영상 버퍼(예를 들어, 프로세싱 유닛(2820 또는 메모리(44)에 의해 구현됨)) 및 그래픽 프로세싱 유닛(예를 들어, 프로세싱 유닛(46)에 의해 구현됨)을 포함할 수 있다. 그래픽 프로세싱 유닛은 영상 버퍼에 통신 가능하게 결합될 수 있다. 그래픽 처리 장치는 도 3을 참조하여 설명된 다양한 모듈 및/또는 본 명세서에 설명된 다른 디코더 시스템 또는 서브 시스템을 구현하기 위해 논리 회로(47)에 의해 구현된 디코더(30)를 포함할 수 있다.
일부 예들에서, 안테나(42)는 비디오 데이터의 인코딩된 비트스트림을 수신하도록 구성될 수 있다. 전술한 바와 같이 인코딩된 비트스트림은 본 명세서에서 설명하는 비디오 프레임 인코딩과 관련된 데이터, 인디케이터, 인덱스 값, 모드 선택 데이터 등을 포함할 수 있으며, 예를 들어, 코딩 분할과 관련된 데이터(예를 들어, 변환 계수 또는 양자화된 변환 계수, (설명된 바와 같이) 선택적 인디케이터, 및/또는 코딩 분할을 정의하는 데이터)를 포함할 수 있다. 비디오 코딩 시스템(40)은 안테나(42)에 결합되고 인코딩된 비트스트림을 디코딩하도록 구성된 디코더(30)를 더 포함할 수 있다. 디스플레이 장치(45)는 비디오 프레임을 제공하도록 구성된다.
본 출원의 이 실시예에서, 인코더(20)를 참조하여 설명된 예에서, 디코더(30)는 역 프로세스를 수행하도록 구성될 수 있다는 것을 이해해야 한다. 신택스 요소를 시그널링하는 것과 관련하여, 디코더(30)는 그러한 신택스 요소를 수신 및 파싱하고 상응하는 관련 비디오 데이터를 디코딩하도록 구성될 수 있다. 일부 예들에서, 인코더(20)는 인코딩된 비디오 비트스트림에서 신택스 요소를 엔트로피 인코딩할 수 있다. 그러한 예들에서, 디코더(30)는 신택스 요소를 파싱하고 상응하는 관련 비디오 데이터를 디코딩할 수 있다.
본 출원의 실시예에서 설명된 디코딩 방법은 디코딩 프로세스에서 주로 사용된다. 이 프로세스는 인코더(20) 및 디코더(30) 모두에 존재한다는 것에 유의해야 한다.
도 2는 본 출원의 실시예를 구현하기 위한 인코더(20)의 예의 개략적/개념적 블록도이다. 도 2의 예에서, 인코더(20)는 잔여 계산 유닛(204), 변환 프로세싱 유닛(206), 양자화 유닛(208), 역 양자화 유닛(210), 역변환 프로세싱 유닛(212), 재구성 유닛(214), 버퍼(216), 루프 필터 유닛(220), 디코딩 영상 버퍼(decoding picture buffer, DPB)(230), 예측 프로세싱 유닛(260) 및 엔트로피 인코딩 유닛(270)을 포함한다. 예측 프로세싱 유닛(260)은 인터 예측 유닛(244), 인트라 예측 유닛(254) 및 모드 선택 유닛(262)을 포함할 수 있다. 인터 예측 유닛(244)은 모션 추정 유닛 및 모션 보상 유닛(도시되지 않음)을 포함할 수 있다. 도 2에 도시된 인코더(20)는 하이브리드 비디오 인코더 또는 하이브리드 비디오 코덱에 따른 비디오 인코더로 지칭될 수도 있다.
예를 들어, 잔여 계산 유닛(204), 변환 프로세싱 유닛(206), 양자화 유닛(208), 예측 프로세싱 유닛(260) 및 엔트로피 인코딩 유닛(270)은 인코더(20)의 순방향 신호 경로를 형성하지만, 예를 들어, 역 양자화 유닛(210), 역변환 프로세싱 유닛(212), 재구성 부(214), 버퍼(216), 루프 필터(220), 디코딩된 영상 버퍼(decoding picture buffer, DPB)(230) 및 예측 프로세싱 유닛(260)은 역방향 신호 경로를 형성한다 인코더의. 인코더의 역방향 신호 경로는 디코더(도 3의 디코더(30) 참조)의 신호 경로에 대응한다.
인코더(20)는 예를 들어 입력(202)을 통해, 영상(201) 또는 영상(201)의 영상 블록(203), 예를 들어 비디오 또는 비디오 시퀀스를 형성하는 영상 시퀀스 내의 영상을 수신한다. 영상 블록(203)은 또한 현재 영상 블록 또는 인코딩될 영상 블록으로 지칭될 수 있다. 영상(201)은 현재 영상 또는 인코딩될 영상으로 지칭될 수 있다(특히, 현재 영상을 다른 영상, 예를 들어 동일한 비디오 시퀀스, 즉, 현재 영상도 포함하는 비디오 시퀀스의 이전에 인코딩 및/또는 디코딩된 영상과 구별하기 위한 비디오 코딩에서).
인코더(20)의 실시예는 영상(201)을 영상 블록(203)과 같은 복수의 블록으로 분할하도록 구성된 분할 유닛(도 2에 도시되지 않음)을 포함할 수 있다. 영상(201)은 일반적으로 복수의 비 중첩 블록으로 분할된다. 분할 유닛은 비디오 시퀀스의 모든 영상에 대해 동일한 블록 크기와 블록 크기를 정의하는 대응하는 그리드를 사용하거나, 영상 또는 서브 세트 또는 영상 그룹 간의 블록 크기를 변경하고, 각 영상을 대응하는 블록으로 분할하도록 구성될 수 있다.
일 예에서, 인코더(20)의 예측 프로세싱 유닛(260)은 전술한 분할 기술의 임의의 조합을 수행하도록 구성될 수 있다.
영상 블록(203)의 크기는 영상(201)의 크기보다 작지만, 영상 블록(203)은 영상 블록(203)과 마찬가지로 샘플 값을 갖는 2 차원 어레이 또는 샘플 매트릭스로 간주되거나 고려될 수 있다. 다시 말해, 영상 블록(203)은 예를 들어, 하나의 샘플 어레이(예를 들어, 모노크롬 영상(201)의 경우 루마 어레이), 3 개의 샘플 어레이(예를 들어, 컬러 영상의 경우 하나의 루마 어레이 및 두 개의 크로마 어레이) 또는 적용된 색상 포맷에 따라 다른 수량 및/또는 배열 유형을 포함할 수 있다. 영상 블록(203)의 수평 및 수직 방향(또는 축)의 샘플 수량은 영상 블록(203)의 크기를 정의한다.
도 2에 도시된 인코더(20)는 영상(201)을 블록 단위로 인코딩하도록 구성된다. 예를 들어, 인코딩 및 예측은 영상 블록(203)마다 수행된다.
잔여 계산 유닛(204)은 샘플 도메인에서 잔여 블록(205)을 획득하기 위해, 예를 들어, 예측 블록(265)의 샘플 값을 영상 블록(203)의 샘플 값에서 샘플 단위(픽셀 단위)로 감산함으로써, 영상 블록(203) 및 예측 블록(265)에 기초하여 잔여 블록(205)을 계산하도록 구성된다. (예측 블록(265)에 대한 추가 자세한 내용은 아래에 제공된다).
변환 프로세싱 유닛(206)은 변환, 예를 들어 이산 코사인 변환(discrete cosine transform, DCT) 또는 이산 사인 변환(discrete sine transform, DST)을 잔여 블록(205)의 샘플 값에 적용하여 변환 도메인에서 변환 계수(207)를 획득하도록 구성된다. 변환 계수(207)는 또한 변환 잔여 계수로 지칭될 수 있고 변환 도메인에서 잔여 블록(205)을 나타낸다.
변환 프로세싱 유닛(206)은 HEVC/H.265에 지정된 변환과 같은 DCT/DST의 정수 근사치를 적용하도록 구성될 수 있다. 직교 DCT 변환과 비교할 때 이러한 정수 근사는 일반적으로 요인을 기반으로 조정된다. 순방향 변환 및 역변환을 사용하여 처리되는 잔여 블록의 표준(norm)을 보존하기 위해 변환 프로세스의 일부로서 추가 스케일 팩터가 적용된다. 스케일 팩터는 일반적으로 몇 가지 제약 조건을 기반으로 선택되는데, 예를 들어 스케일 팩터는 시프트 연산에 대한 2의 거듭제곱, 변환 계수의 비트 깊이, 정확도와 구현 비용 간의 절충이다. 예를 들어, 특정 스케일 팩터는 예를 들어 디코더 측(30)의 역변환 프로세싱 유닛(212)에 의한 역변환 (및 예를 들어 인코더 측의 역변환 프로세싱 유닛(212)에 의해 대응하는 역변환)에 대해 지정되고, 이에 대응하여 인코더 측(20)에서 변환 프로세싱 유닛(206)에 의해 순방향 변환에 대해 대응하는 스케일 팩터가 지정될 수 있다.
양자화 유닛(208)은, 예를 들어 스칼라 양자화 또는 벡터 양자화를 적용함으로써 양자화된 변환 계수(209)를 얻기 위해 변환 계수(207)를 양자화하도록 구성된다. 양자화된 변환 계수(209)는 양자화된 잔여 계수(209)라고도 지칭될 수 있다. 양자화 프로세스는 변환 계수(207)의 일부 또는 전부와 관련된 비트 심도를 감소시킬 수 있다. 예를 들어, n-비트 변환 계수는 양자화 중에 m 비트 변환 계수로 반올림될 수 있고, 여기서 n은 m보다 크다. 양자화 파라미터(quantization parameter, QP)를 조정하여 양자화 정도를 수정할 수 있다. 예를 들어, 스칼라 양자화의 경우, 더 미세하거나 거친 양자화를 달성하기 위해 다른 스케일이 적용될 수 있다. 더 작은 양자화 단계 크기는 더 미세한 양자화에 대응하고 더 큰 양자화 단계 크기는 더 거친 양자화에 대응한다. 적절한 양자화 단계 크기는 양자화 파라미터(quantization parameter, QP)에 의해 표시될 수 있다. 예를 들어, 양자화 파라미터는 적절한 양자화 단계 크기의 미리 정의된 세트에 대한 인덱스일 수 있다. 예를 들어, 더 작은 양자화 파라미터는 더 미세한 양자화(더 작은 양자화 단계 크기)에 대응할 수 있고 더 큰 양자화 파라미터는 더 거친 양자화(더 큰 양자화 단계 크기)에 대응하거나 그 반대일 수도 있다. 양자화는 양자화 스텝 크기 및 대응하는 양자화에 의한 분할 또는 예를 들어 역 양자화 유닛(210)에 의한 역 양자화를 포함할 수 있거나, 또는 양자화 스텝 크기에 의한 곱셈을 포함할 수 있다. HEVC와 같은 일부 표준에 따른 실시예에서, 양자화 단계 크기를 결정하기 위해 양자화 파라미터가 사용될 수 있다. 일반적으로 양자화 스텝 크기는 나눗셈을 포함한 방정식의 고정 소수점 근사(fixed point approximation)를 사용하여 양자화 파라미터를 기반으로 계산할 수 있다. 잔여 블록의 표준을 재구성하기 위해 양자화 및 역 양자화에 추가 스케일 팩터가 도입될 수 있으며, 여기서 잔류 블록의 표준은 양자화 단계 크기 및 양자화 파라미터에 대한 방정식의 고정 소수점 근사에 사용된 스케일로 인해 수정될 수 있다. 예시적인 구현에서, 역변환의 스케일은 역 양자화의 스케일과 결합될 수 있다. 대안으로, 맞춤형 양자화 테이블이 사용되어 인코더로부터 디코더로, 예를 들어 비트스트림으로 시그널링될 수 있다. 양자화는 손실이 있는 연산이며, 여기서 양자화 단계 크기가 증가함에 따라 손실이 증가한다.
역 양자화 유닛(210)은 양자화 유닛(208)의 역 양자화를 양자화 계수에 적용하여, 예를 들어 양자화 유닛과 동일한 양자화 스텝 크기에 기초하여 또는 이를 사용함으로써 양자화 유닛(208)에 의해 적용된 양자화 방식의 역을 적용하여, 역 양자화 계수(211)를 획득하도록 구성된다. 역 양자화된 계수(211)는 일반적으로 양자화로 야기되는 손실로 인한 변환 계수와 다르지만 역 양자화된 계수(211)는 역 양자화된 잔여 계수(211)라고도 할 수 있으며, 변환 계수(207)에 대응한다.
역 변환 프로세싱 유닛(212)은 변환 프로세싱 유닛(206)에 의해 적용된 변환의 역 변환, 예를 들어 역 이산 코사인 변환(discrete cosine transform, DCT) 또는 역 이산 사인 변환(discrete sine transform, DST))을 적용하여, 샘플 도메인에서 역변환 블록(213)을 획득하도록 구성된다. 역변환 블록(213)은 또한 역변환 역 양자화 블록(213) 또는 역변환 잔여 블록(213)으로 지칭될 수 있다.
재구성 유닛(214)(예를 들어, 합산기(214))는 예를 들어, 재구성된 잔여블록(213)의 샘플 값 및 예측 블록(265)의 샘플 값을 가산함으로써 예측 블록(265)에 역 변환 블록(213)(즉, 재구성된 잔여 블록(213))을 추가하여 샘플 도메인에서 재구성된 블록(215)을 획득하도록 구성된다.
선택적으로, 예를 들어, 라인 버퍼(216)의 버퍼 유닛(216)("버퍼"(216)로 약칭)은 재구성된 블록(215) 및 예를 들어 인트라 예측을 위해 대응하는 샘플 값을 버퍼링하거나 저장하도록 구성된다. 다른 실시예에서, 인코더는 임의의 유형의 추정 및/또는 예측, 예를 들어 인트라 예측을 수행하기 위해 버퍼 유닛(216)에 저장된 필터링되지 않은 재구성된 블록 및/또는 대응하는 샘플 값을 사용하도록 구성될 수 있다.
예를 들어, 일 실시예에서, 인코더(20)는 버퍼 유닛(216)이 인트라 예측 유닛(254)을 위해 사용될 뿐만 아니라 루프 필터 유닛(220)을 위해 사용되는 재구성된 블록(215)을 저장하도록 구성될 수 있다. 예를 들어, 버퍼 유닛(216) 및 디코딩된 영상 버퍼 유닛(230)은 하나의 버퍼를 형성하도록 한다. 다른 실시예에서, 디코딩된 영상 버퍼(230)로부터의 필터링된 블록(221) 및/또는 블록 또는 샘플(도 2에 도시되지 않음)은 인트라 예측 유닛(254)에 대한 입력 또는 기초로서 사용된다.
루프 필터 유닛(220)(줄여서 "루프 필터"(220))는 재구성된 블록(215)을 필터링하여 필터링된 블록(221)을 얻거나, 픽셀 전환을 부드럽게 하거나 비디오 품질을 향상시키도록 구성된다. 루프 필터 유닛(220)은 디 블로킹 필터, 샘플 적응 오프셋(sample adaptive offset, SAO) 필터와 같은 하나 이상의 루프 필터, 또는 다른 필터, 예를 들어, 양방향 필터, 적응 루프 필터(adaptive loop filter, ALF), 선명하게 하기 또는 평활화 필터 또는 협업 필터를 나타내기 위한 것이다. 루프 필터 유닛(220)은 도 2에서 인-루프 필터로 도시되어 있지만. 다른 구현에서, 루프 필터 유닛(220)은 포스트-루프 필터로 구현될 수 있다. 필터링된 블록(221)은 필터링된 재구성 블록(221)으로도 지칭될 수 있다. 디코딩 영상 버퍼(230)는 루프 필터 유닛(220)이 재구성된 인코딩된 블록에 대해 필터링 동작을 수행한 후 재구성된 인코딩된 블록을 저장할 수 있다.
일 실시예에서, 인코더(20)(대응하여, 루프 필터 유닛(220))는 루프 필터 파라미터(예를 들어, 샘플 적응 오프셋 정보)를, 예를 들어 직접 또는 엔트로피 인코딩 유닛(270) 또는 임의의 다른 엔트로피 인코딩 유닛에 의해 수행되는 엔트로피 인코딩 후에 출력하도록 구성될 수 있으므로, 디코더(30)는 디코딩을 위해 동일한 루프 필터 파라미터를 수신하고 적용할 수 있다.
디코딩된 영상 버퍼(디코딩된 영상 버퍼, DPB)(230)는 인코더(20)에 의한 비디오 데이터 인코딩에 사용하기 위한 참조 영상 데이터를 저장하는 참조 영상 메모리일 수 있다. DPB(230)는 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM)(동기 DRAM(synchronous DRAM, SDRAM), 자기 저항 RAM(magnetoresistive RAM, MRAM), 저항 RAM(resistive RAM, RRAM) 포함)와 같은 저장 장치, 또는 다른 유형의 저장 장치와 같은 다양한 저장 장치 중 어느 하나에 의해 형성될 수 있다. DPB(230) 및 버퍼(216)는 동일한 저장 장치 또는 별도의 저장 장치에 의해 제공될 수 있다. 예에서, 디코딩된 영상 버퍼(decoded picture buffer, DPB)(230)는 필터링된 블록(221)을 저장하도록 구성된다. 디코딩된 영상 버퍼(230)는 다른 이전에 필터링된 블록, 예를 들어 동일한 현재 영상 또는 상이한 영상, 예를 들어 이전에 재구성된 영상의 이전에 재구성되고 필터링된 블록(221)을 저장하고, 예를 들어 인터 예측을 위해, 이전에 재구성된, 즉 디코딩된 영상(및 대응하는 참조 블록 및 샘플) 및/또는 부분적으로 재구성된 현재 영상(및 대응하는 참조 블록 및 샘플)을 제공하도록 구성될 수 있다). 예에서, 재구성된 블록(215)이 인-루프 필터링없이 재구성되는 경우, 디코딩된 영상 버퍼(디코딩된 영상 버퍼, DPB)(230)는 재구성된 블록(215)을 저장하도록 구성된다.
블록 예측 프로세싱 유닛(260)이라고도 하는 예측 프로세싱 유닛(260)은 예를 들어, 버퍼(26)로부터 영상 블록(203)(현재 영상(201)의 현재 영상 블록(203)) 및 재구성된 영상 데이터, 예를 들어 를 동일한(현재) 영상의 참조 샘플을 수신하거나 획득하며, 및/또는 디코딩된 영상 버퍼(230)로부터의 하나 이상의 이전에 디코딩된 영상의 참조 영상 데이터(231)를 수신하거나 획득하며, 예측을 위해 이러한 데이터를 처리, 즉 인터 예측 블록(245) 또는 인트라 예측 블록(255)일 수 있는 예측 블록(265)을 제공하도록 구성될 수 있다.
모드 선택 유닛(262)은 잔여 블록(205)의 계산 및 재구성된 블록(215)의 재구성을 위해, 예측 모드(예를 들어, 인트라 또는 인터 예측 모드) 및/또는 예측 블록(265)으로 사용될 해당 예측 블록(245 또는 255)을 선택하도록 구성될 수 있다.
일 실시예에서, 모드 선택 유닛(262)은(예를 들어, 예측 프로세싱 유닛(260)에 의해 지원되는 예측 모드들로부터) 예측 모드를 선택하도록 구성될 수 있으며, 여기서 예측 모드는 최상의 매칭을 제공하거나, 다시 말해 최소 잔여(최소 잔여는 전송 또는 저장을 위한 더 나은 압축을 의미한다)를 제공하거나, 또는 최소 신호 오버헤드를 제공하거나(최소 신호 처리 오버헤드는 전송 또는 저장을 위한 더 나은 압축을 의미한다), 둘 다를 고려하거나 균형을 잡는다. 모드 선택 유닛(262)은 왜곡률 최적화(rate distortion optimization, RDO)에 기초하여 예측 모드를 결정하도록, 즉, 최소 왜곡률 최적화를 제공하는 예측 모드를 선택하거나 관련 왜곡률이 예측 모드 선택 기준을 적어도 만족하는 예측 모드를 선택하도록 구성될 수 있다.
이하에서는, 인코더(20)의 예에 의해 수행되는 예측 처리(예를 들어, 예측 프로세싱 유닛(260)에 의해 수행됨) 및 모드 선택(예를 들어, 모드 선택 부(262)에 의해 수행됨)에 대해 상세히 설명한다.
전술한 바와 같이, 인코더(20)는 (미리 결정된) 예측 모드들의 세트로부터 최상의 또는 최적 예측 모드를 결정하거나 선택하도록 구성된다. 예측 모드의 세트는 예를 들어 인트라 예측 모드 및/또는 인터 예측 모드를 포함할 수 있다.
인트라 예측 모드의 세트는 35 개의 서로 다른 인트라 예측 모드, 예를 들어 DC(또는 평균) 모드 및 평면 모드와 같은 비 방향 모드, 또는 H.265에 정의된 것과 같은 방향 모드를 포함할 수 있거나, 또는 67 개의 다른 인트라 예측 모드, 예를 들어 DC(또는 평균) 모드 및 평면 모드와 같은 비 방향 모드 또는 개발 중인 H.266에서 정의된 것과 같은 방향 모드를 포함할 수 있다.
가능한 구현에서, 인터 예측 모드의 세트는 이용 가능한 참조 영상(즉, 전술한 바와 같이 DBP(230))에 저장된 적어도 부분적으로 디코딩된 영상)에 의존하고, 예를 들어 다른 인터 예측 파라미터는 의존한다. 전체 참조 영상 또는 참조 영상의 일부(예를 들어, 현재 블록 영역 주변의 검색 창 영역)가 가장 일치하는 참조 블록을 검색하는 데 사용되는지 여부 및/또는 예를 들어 하프-펠 및/또는 1/4- 픽셀 보간과 같은 픽셀 보간이 적용된다. 인터 예측 모드의 세트는 예를 들어 스킵(skip) 모드 및 병합(merge) 모드를 포함할 수 있다. 특정 구현에서, 인터 예측 모드의 세트는 본 출원의 실시예에서 스킵 기반 삼각형 예측 단위(triangle prediction unit, Triangle PU) 모드, 병합 기반 삼각형 PU 모드, 스킵 기반의 모션 벡터 차이가 있는 병합 모드(merge mode with motion vector difference, MMVD), 또는 병합 기반 MMVD를 포함할 수 있다. 일 예에서, 인트라 예측 유닛(254)은 후술되는 인터 예측 기술의 임의의 조합을 수행하도록 구성될 수 있다.
전술한 예측 모드에 추가하여, 스킵 모드 및/또는 직접 모드가 또한 본 출원의 실시예에서 적용될 수 있다.
예측 프로세싱 유닛(260)은 예를 들어, 쿼드 트리(quad-tree, QT) 파티셔닝, 이진 트리(binary-tree, BT) 파티셔닝, 터너리 트리(triple-tree, TT) 파티셔닝, 또는 이들의 임의의 조합을 반복적으로 사용함으로써, 영상 블록(203)을 더 작은 블록 파티션 또는 서브블록으로 분할하고, 예를 들어 각각의 블록 파티션 또는 서브블록을 예측하도록 더 구성될 수 있다. 모드 선택은 분할된 영상 블록(203)의 트리 구조의 선택 및 각 블록 파티션 또는 서브블록에 적용되는 예측 모드의 선택을 포함한다.
인터 예측 유닛(244)은 모션 추정(motion estimation, ME) 유닛(도 2에 도시되지 않음) 및 모션 보상(motion compensation, MC) 유닛(도 2에 도시되지 않음)을 포함할 수 있다. 모션 추정 유닛은 모션 추정을 위해, 영상 블록(203)(현재 영상(201)의 현재 영상 블록(203)) 및 디코딩된 영상(231) 또는 적어도 하나 이상의 이전에 재구성된 블록, 예를 들어 다른/상이한 이전에 디코딩된 화상(231)의 하나 이상의 재구성된 블록을 수신하거나 획득하도록 구성된다. 예를 들어, 비디오 시퀀스는 현재 영상과 이전에 디코딩된 영상(31)을 포함할 수 있다. 다시 말해, 현재 영상과 이전에 디코딩된 영상(31)은 비디오 시퀀스를 형성하는 영상들의 일부이거나 시퀀스를 형성할 수 있다.
예를 들어, 인코더(20)는 동일한 영상의 복수의 참조 블록 또는 복수의 다른 영상의 상이한 영상으로부터 참조 블록을 선택하고, 참조 블록의 위치(X, Y 좌표)와 현재 블록의 위치 사이의 참조 영상 및/또는 오프셋(공간 오프셋) 인터 예측 파라미터로서 모션 추정 유닛(도 2에 도시되지 않음)에 제공하도록 구성될 수 있다. 이 오프셋을 모션 벡터(모션 벡터, MV)라고도 한다.
모션 보상 유닛은 인터 예측 파라미터를 획득하고 인터 예측 파라미터에 기초하여 또는 인터 예측 파라미터를 사용하여 인터 예측을 수행하여 인터 예측 블록(245)을 획득하도록 구성된다. 모션 보상 유닛에 의해 수행되는 모션 보상(도 2에 도시되지 않음)은 모션 추정을 통해 결정된 모션/블록 벡터를 기반으로 예측 블록을 가져 오거나 생성하는 것을 포함할 수 있다(서브 픽셀 정밀도로 보간을 수행할 가능성이 있다). 보간 필터링은 알려진 픽셀 샘플로부터 추가 픽셀 샘플을 생성할 수 있다. 이것은 영상 블록을 코딩하는데 사용될 수 있는 후보 예측 블록의 양을 잠재적으로 증가시킨다. 모션 보상 유닛(246)은 현재 영상 블록의 PU에 대한 모션 벡터를 수신하면 참조 영상 목록 중 하나에서 모션 벡터가 가리키는 예측 블록을 찾을 수 있다. 모션 보상 유닛(246)은 또한 블록 및 비디오 슬라이스와 연관된 신택스 요소를 생성할 수 있어서, 디코더(30)는 신택스 요소를 사용하여 비디오 슬라이스의 영상 블록을 디코딩한다.
구체적으로, 인터 예측 유닛(244)은 신택스 요소를 엔트로피 인코딩 유닛(270)으로 전송할 수 있다. 신택스 요소는 인터 예측 파라미터(예를 들어, 복수의 인터 예측 모드가 횡단된 후 현재 블록의 예측에 사용되는 인터 예측 모드 선택 지시 정보)를 포함한다. 가능한 적용 시나리오에서 인터 예측 모드가 하나만 있는 경우 인터 예측 파라미터는 신택스 요소에 포함되지 않을 수 있다. 이 경우, 디코더 측(30)은 디폴트 예측 모드를 사용하여 직접 디코딩을 수행할 수 있다. 인터 예측 유닛(244)은 인터 예측 기술의 임의의 조합을 수행하도록 구성될 수 있음을 이해할 수 있다.
인트라 예측 유닛(254)은, 예를 들어, 인트라 추정을 위해 동일한 영상의 영상 블록(203)(현재 영상 블록) 및 하나 이상의 이전에 재구성된 블록, 예를 들어 재구성된 이웃 블록을 획득하도록 구성된다. 예를 들어, 인코더(20)는 복수의(미리 결정된) 인트라 예측 모드 중에서 인트라 예측 모드를 선택하도록 구성될 수 있다.
일 실시예에서, 인코더(20)는 최적화 기준에 따라, 예를 들어, 최소 잔여(예를 들어, 현재 영상 블록(203)에 가장 유사한 예측 블록(255)을 제공하는 인트라 예측 모드) 또는 최소 왜곡률에 기초하여 인트라 예측 모드를 선택하도록 구성될 수 있다.
인트라 예측 유닛(254)은 예를 들어 선택된 인트라 예측 모드에서의 인트라 예측 파라미터에 기초하여 인트라 예측 블록(255)을 결정하도록 추가로 구성된다. 어느 경우이든, 블록에 대한 인트라 예측 모드를 선택한 후, 인트라 예측 유닛(254)은 또한 인트라 예측 파라미터, 즉 블록에 대해 선택된 인트라 예측 모드를 나타내는 정보를 엔트로피 인코딩 유닛(270)에 제공하도록 구성된다. 일 예에서, 인트라 예측 유닛(254)은 인트라 예측 기술의 임의의 조합을 수행하도록 구성될 수 있다.
구체적으로, 인트라 예측 유닛(254)은 신택스 요소를 엔트로피 인코딩 유닛(270)으로 전송할 수 있다. 신택스 요소는 인트라 예측 파라미터(예를 들어, 복수의 인트라 예측 모드가 통과된 후 현재 블록의 예측에 사용되는 인트라 예측 모드의 선택 지시 정보)를 포함한다. 가능한 응용 시나리오에서 인트라 예측 모드가 하나만 있는 경우 인트라 예측 파라미터는 신택스 요소에 포함되지 않을 수 있다. 이 경우, 디코더 측(30)은 디폴트 예측 모드를 사용하여 직접 디코딩을 수행할 수 있다.
엔트로피 인코딩 유닛(270)은 엔트로피 인코딩 알고리즘 또는 방식(예를 들어, 가변 길이 코딩(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), 인터 예측 파라미터, 인트라 예측 파라미터 및/또는 루프 필터 파라미터에 적용하여, 예를 들어, 인코딩된 비트스트림(21)의 형태로 출력(272)을 통해 출력될 수 있는 인코딩된 영상 데이터(21)를 획득하도록 구성된다. 인코딩된 비트스트림은 비디오 디코더(30)에 전송될 수 있거나, 또는 비디오 디코더(30)에 의해 후속 전송을 위해 저장되거나 검색될 수 있다. 엔트로피 인코딩 유닛(270)은 인코딩되고 있는 현재 비디오 슬라이스에 대한 다른 신택스 요소를 엔트로피 인코딩하도록 더 구성될 수 있다.
비디오 인코더(20)의 다른 구조적 변형이 비디오 스트림을 인코딩하기 위해 사용될 수 있다. 예를 들어, 비 변환 기반 인코더(20)는 일부 블록 또는 프레임에 대해 변환 프로세싱 유닛(206) 없이 직접 잔류 신호를 양자화할 수 있다. 다른 구현에서, 인코더(20)는 단일 유닛으로 결합된 양자화 유닛(208) 및 역 양자화 유닛(210)을 가질 수 있다.
구체적으로, 본 출원의 이 실시예에서, 인코더(20)는 다음 실시예에서 설명되는 비디오 영상 인코딩 방법을 구현하도록 구성될 수 있다.
비디오 인코더(20)의 다른 구조적 변형이 비디오 스트림을 인코딩하기 위해 사용될 수 있다는 것을 이해해야 한다. 예를 들어, 일부 영상 블록 또는 영상 프레임에 대해, 비디오 인코더(20)는 잔여 신호를 직접 양자화할 수 있다. 이 경우, 변환 프로세싱 유닛(206)에 의한 처리는 필요하지 않으며, 이에 대응하여 역변환 프로세싱 유닛(212)에 의한 처리도 필요하지 않다. 대안적으로, 일부 화상 블록 또는 화상 프레임에 대해, 비디오 인코더(20)는 잔여 데이터를 생성하지 않는다. 이에 대응하여 이 경우, 변환 프로세싱 유닛(206), 양자화 유닛(208), 역 양자화 유닛(210) 및 역변환 프로세싱 유닛(212)에 의한 처리는 필요하지 않다. 대안적으로, 비디오 인코더(20)는 재구성된 영상 블록을 참조 블록으로 직접 저장할 수 있다. 이 경우 필터(220)에 의한 처리는 필요하지 않다. 대안적으로, 비디오 인코더(20) 내의 양자화 유닛(208) 및 역 양자화 유닛(210)이 결합될 수 있다. 루프 필터(220)는 선택 사항이다. 또한, 무손실 압축 코딩의 경우, 변환 프로세싱 유닛(206), 양자화 유닛(208), 역 양자화 유닛(210) 및 역 변환 프로세싱 유닛(212)도 선택 사항이다. 상이한 애플리케이션 시나리오에서, 인터 예측 유닛(244) 및 인트라 예측 유닛(254)은 선택적으로 사용될 수 있다는 것을 이해해야 한다.
도 3은 본 출원의 실시예를 구현하기 위한 디코더(30)의 예의 개략적/개념적 블록도이다. 비디오 디코더(30)는 예를 들어 인코더(20)에 의해 인코딩을 통해 획득된 인코딩된 영상 데이터(예를 들어, 인코딩된 비트스트림)(21)를 수신하여 디코딩된 영상(231)을 획득하도록 구성된다. 디코딩 프로세스에서, 비디오 디코더(30)는, 비디오 인코더(20)로부터, 비디오 데이터, 예를 들어 인코딩된 비디오 슬라이스 및 관련 신택스 요소에서 영상 블록을 나타내는 인코딩된 비디오 비트스트림을 수신한다.
도 3의 예에서, 디코더(30)는 엔트로피 디코딩 유닛(304), 역 양자화 유닛(310), 역 변환 프로세싱 유닛(312), 재구성 유닛(314)(예를 들어, 합산기(314)), 버퍼(316), 루프 필터(320), 디코딩된 영상을 포함한다. 예측 프로세싱 유닛(360)은 인터 예측 유닛(344), 인트라 예측 유닛(354) 및 모드 선택 부(362)를 포함할 수 있다. 일부 예들에서, 비디오 디코더(30)는 도 2의 비디오 인코더(20)를 참조하여 설명된 인코딩 패스에 일반적으로 역인 디코딩 패스(decoding pass)를 수행할 수 있다.
엔트로피 디코딩 유닛(304)은 예를 들어, 양자화된 계수(309) 및/또는 디코딩된 인코딩 파라미터(도 3에 도시되지 않음), 예를 들어, (디코딩되는) 인터 예측 파라미터, 인트라 예측 파라미터, 루프 필터 파라미터, 및/또는 다른 신택스 요소 중 하나 또는 모두를 획득하기 위해 인코딩된 영상 데이터(21)를 엔트로피 디코딩하도록 구성된다. 엔트로피 디코딩 유닛(304)은 또한 인터 예측 파라미터, 인트라 예측 파라미터 및/또는 다른 신택스 요소를 예측 프로세싱 유닛(360)으로 포워딩하도록 구성된다. 비디오 디코더(30)는 비디오 슬라이스 레벨 및/또는 영상 블록 레벨에서 신택스 요소를 수신할 수 있다.
역 양자화 유닛(310)은 역 양자화 유닛(110)과 기능면에서 동일할 수 있고, 역변환 프로세싱 유닛(312)은 역변환 프로세싱 유닛(212)과 기능면에서 동일할 수 있으며, 재구성 유닛(314)은 기능면에서 동일할 수 있다. 재구성 유닛(214)에서 버퍼(316)는 버퍼(216)와 기능면에서 동일할 수 있고, 루프 필터(320)는 루프 필터(220)와 기능면에서 동일할 수 있으며, 디코딩된 영상 버퍼(330)는 디코딩된 영상 버퍼(230)와 기능면에서 동일할 수 있다.
예측 프로세싱 유닛(360)은 인터 예측 유닛(344) 및 인트라 예측 유닛(354)을 포함할 수 있다. 인터 예측 유닛(344)은 기능면에서 인터 예측 유닛(244)과 유사할 수 있고, 인트라 예측 유닛(354)은 기능면에서 유사할 수 있다. 예측 프로세싱 유닛(360)은 일반적으로 블록 예측을 수행하고 및/또는 인코딩된 데이터(21)로부터 예측 블록(365)을 획득하고, 예를 들어, 엔트로피 디코딩 유닛(304)으로부터 예측 관련 파라미터 및/또는 선택된 예측 모드에 관한 정보를(명시적으로 또는 묵시적으로) 수신하거나 획득하도록 구성된다.
비디오 슬라이스가 인트라 인코딩된(I) 슬라이스로 인코딩될 때, 예측 프로세싱 유닛(360)의 인트라 예측 유닛(354)은 시그널링된 인트라 예측 모드 및 현재 프레임 또는 영상의 이전에 디코딩된 블록의 데이터에 기초하여 현재 비디오 슬라이스의 영상 블록의 예측 블록(365)을 생성하도록 구성된다. 비디오 프레임이 인터 인코딩된(즉, B 또는 P) 슬라이스로 인코딩될 때, 예측 프로세싱 유닛(360)의 인터 예측 유닛(344)(예를 들어, 모션 보상 유닛)은 엔트로피 디코딩 유닛(304)으로부터 수신되는 모션 벡터 및 다른 신택스 요소에 기초하여 현재 비디오 슬라이스의 블록 비디오의 예측 블록(365)을 생성하도록 구성된다. 인터 예측에서, 참조 영상 목록의 참조 영상으로부터 예측 블록이 생성될 수 있다. 비디오 디코더(30)는 디폴트 구성 기술을 이용하고 DPB(330)에 저장된 참조 영상에 기초하여 참조 프레임 목록, 목록 0 및 목록 1을 구축할 수 있다.
예측 프로세싱 유닛(360)은 모션 벡터 및 다른 신택스 요소를 파싱하여 현재 비디오 슬라이스에서 비디오 블록의 예측 정보를 결정하고, 예측 정보를 사용하여 디코딩되는 현재 비디오 블록의 예측 블록을 생성하도록 구성된다. 본 출원의 예에서, 예측 프로세싱 유닛(360)은 일부 수신된 신택스 요소를 사용함으로써, 비디오 슬라이스의 비디오 블록을 인코딩하기 위한 예측 모드(예를 들어, 인트라 예측 또는 인터 예측), 인터 예측 슬라이스 유형(예를 들어, B 슬라이스, P 슬라이스 또는 GPB 슬라이스), 슬라이스에 대한 참조 영상 목록 중 하나 이상의 목록의 구성 정보, 슬라이스의 각 인터 인코딩된 비디오 블록의 모션 벡터, 슬라이스의 각 인터 인코딩된 비디오 블록의 인터 예측 상태, 및 기타 정보를 결정하여 현재 비디오 블록을 디코딩한다. 본 개시의 다른 예에서, 비트스트림으로부터 비디오 디코더(30)에 의해 수신된 신택스 요소는 적응적 파라미터 세트(adaptive parameter set, APS), 시퀀스 파라미터 세트(sequence parameter set, SPS), 영상 파라미터 세트(picture parameter set, PPS) 또는 슬라이스 헤더 중 하나 이상의 신택스 요소를 포함한다.
역 양자화 유닛(310)은 비트스트림에 제공되고 엔트로피 디코딩 유닛(304)에 의해 디코딩된 양자화된 변환 계수에 대해 역 양자화(즉, 역 양자화)를 수행하도록 구성될 수 있다. 역 양자화 프로세스는 계산된 양자화 파라미터의 사용을 포함할 수 있다. 비디오 슬라이스의 각 비디오 블록에 대해 비디오 인코더(20)에 의해 적용되어야 하는 양자화 정도 및 마찬가지로 적용되어야 하는 역 양자화 정도를 결정한다.
역 변환 프로세싱 유닛(312)은 역 변환(예를 들어, 역 DCT, 역 정수 변환 또는 개념적으로 유사한 역 변환 프로세스)을 변환 계수에 적용하여 픽셀 도메인에서 잔여 블록을 생성하도록 구성된다.
재구성 유닛(314)(예를 들어, 합산기(314))은 예측 블록(365)에 역 변환 블록(313)(즉, 재구성된 잔여 블록(313))을 추가하여, 예를 들어, 재구성된 잔여 블록(313)의 샘플 값 및 예측 블록(365)의 샘플 값을 추가함으로써 샘플 도메인에서 재구성된 블록(315)을 획득하도록 구성된다.
루프 필터 유닛(320)(코딩 루프 동안 또는 코딩 루프 이후)은 재구성된 블록(315)을 필터링하여 필터링된 블록(321)을 획득하고, 픽셀 전환을 평활화하거나 비디오 품질을 개선하도록 구성된다. 예에서, 루프 필터 유닛(320)은 아래에 설명된 필터링 기술의 임의의 조합을 수행하도록 구성될 수 있다. 루프 필터 유닛(320)은 디 블로킹 필터, 샘플 적응 오프셋(sample adaptive offset, SAO) 필터 또는 다른 필터, 예를 들어, 양방향 필터, 적응 루프 필터(adaptive loop filter, ALF), 선명하게 하기 또는 평활화 필터 또는 협업 필터와 같은 하나 이상의 루프 필터를 나타내기 위한 것이다. 루프 필터 유닛(320)은 도 3에서 인-루프 필터로 도시되어 있지만, 다른 구현에서 루프 필터 유닛(320)은 포스트-루프 필터로 구현될 수 있다.
주어진 프레임 또는 영상의 디코딩된 비디오 블록(321)은 그런 다음 후속 모션 보상을 위해 사용되는 참조 영상을 저장하는 디코딩된 영상 버퍼(330)에 저장된다.
디코더(30)는 예를 들어, 출력(332)을 통해 디코딩된 영상(31)을 출력하도록 구성되어, 사용자에게 제공하거나 볼 수 있다.
비디오 디코더(30)의 다른 변형이 압축된 비트스트림을 디코딩하는 데 사용될 수 있다. 예를 들어, 디코더(30)는 루프 필터 유닛(320) 없이 출력 비디오 스트림을 생성할 수 있다. 예를 들어, 비 변환 기반 디코더(30)는 일부 블록 또는 프레임에 대해 역변환 프로세싱 유닛(312) 없이 직접 잔여 신호를 역 양자화할 수 있다. 다른 구현에서, 비디오 디코더(30)는 역 양자화 유닛(310) 및 역변환 프로세싱 유닛(312)이 단일 유닛으로 결합될 수 있다.
구체적으로, 본 출원의 이 실시예에서, 디코더(30)는 다음의 실시예에서 설명되는 비디오 영상 디코딩 방법을 구현하도록 구성될 수 있다.
블록 분할 연산은 예측 프로세싱 유닛(360) 또는 독립 유닛(도면에 도시되지 않음)에 의해 수행될 수 있다는 것을 이해해야 한다. 예측 프로세싱 유닛(360)은 예를 들어 쿼드트리(quad-tree, QT) 파티셔닝, 이진 트리(binary tree, BT) 파티셔닝, 트리플 트리(triple tree, TT) 파티셔닝, 확장 쿼드 트리(Extended Quad-Tree, EQT) 파티셔닝, 또는 이들의 임의의 조합을 반복적으로 사용함으로써 이미지 블록(203)을 파티션 또는 서브블록으로 파티셔닝하여, 예를 들어, 각각의 블록 파티션 또는 서브블록에 대해 예측을 수행하며, 여기서 파티셔닝 모드는 사전 설정된 규칙에 따라 결정되거나 분할 모드를 나타내는 데 사용되는 파싱된 신택스 요소에 따라 결정될 수 있으며; 예를 들어, 각 블록 파티션 또는 서브블록을 예측하도록 구성된다. 모드 선택은 분할된 영상 블록(203)의 트리 구조의 선택 및 블록 파티션 또는 서브블록 각각에 적용되는 예측 모드의 선택을 포함한다.
비디오 디코더(30)의 다른 구조적 변형이 인코딩된 비디오 비트스트림을 디코딩하도록 구성될 수도 있다는 것을 이해해야 한다. 예를 들어, 비디오 디코더(30)는 필터(320)에 의한 처리 없이 출력 비디오 스트림을 생성할 수 있다. 대안으로, 일부 이미지 블록 또는 이미지 프레임에 대해, 비디오 디코더(30)의 엔트로피 디코딩 유닛(304)은 디코딩을 통해 양자화된 계수를 획득하지 않고, 따라서, 역양자화 유닛(310) 및 역변환 프로세싱 유닛(312)은 처리를 수행할 필요가 없다. 루프 필터(320)는 선택적이다. 무손실 압축의 경우, 역양자화 유닛(310) 및 역변환 프로세싱 유닛(312)은 선택사항이다. 상이한 적용 시나리오에 따라, 인터 예측 유닛 및 인트라 예측 유닛이 선택적으로 인에이블될 수 있음을 이해해야 한다.
본 출원의 인코더(20) 및 디코더(30)에서, 한 단계에 대한 처리 결과가 추가 처리된 후에 다음 단계로 출력될 수 있다는 것을 이해해야 한다. 예를 들어, 보간 필터링, 모션 벡터 유도, 루프 필터링과 같은 단계 이후에 대응 단계의 처리 결과에 대해 클립 또는 쉬프트 쉬프트와 같은 연산이 더 수행된다.
예를 들어, 현재 영상 블록의 제어 포인트이면서 이웃 아핀 코딩 블록의 모션 벡터에 기초하여 도출되는 모션 벡터 또는 현재 영상 블록의 서브블록이면서 이웃 아핀 코딩 블록의 모션 벡터에 기초하여 도출 모션 벡터는 더 처리될 수 있다. 이것은 이 출원에 제한되지 않는다. 예를 들어, 모션 벡터의 값은 특정 비트 폭 범위 내에 있도록 제한된다. 모션 벡터의 허용된 비트 폭이 bitDepth라고 가정하면 모션 벡터의 값은 -2^(bitDepth-1) 내지 2^(bitDepth-1)-1이고, 여기서 기호 "^"는 지수를 나타낸다. bitDepth가 16이면 값의 범위는 -32768 내지 32767이다. bitDepth가 18이면 값의 범위는 -131072 내지 131071이다. 다른 예를 들어, 모션 벡터(예를 들어, 하나의 8x8 영상 블록 내에서의 4 개의 4x4 서브블록의 모션 벡터 MV)의 값은 4 개의 4x4 서브블록의 MV의 정수 부분 간의 최대 차이가 N 개의 픽셀을 초과하지 않도록, 예를 들어, 1 픽셀을 초과하지 않도록 제한된다.
다음 두 가지 방식을 사용하여 모션 벡터가 특정 비트 폭 내에 있도록 제한할 수 있다:
방식 1: 모션 벡터의 오버플로 최상위 비트가 제거된다:
ux=(vx+2bitDepth) % 2bitDepth
vx=(ux >= 2bitDepth-1) ? (ux-2bitDepth) : ux
uy=(vy+2bitDepth) % 2bitDepth
vy=(uy >= 2bitDepth-1) ? (uy-2bitDepth) : uy
vx는 영상 블록 또는 영상 블록의 서브블록의 모션 벡터의 수평 성분이고, vy는 영상 블록 또는 영상 블록의 서브블록의 수직 성분이고, ux와 uy는 중간 값이며, bitDepth는 비트 폭을 나타낸다.
예를 들어, vx의 값은 -32769이고, 전술한 식에 따라 얻은 32767이다. 값은 이진 보조 코드 형태로 컴퓨터에 저장되고, 이진 보조 코드 -32769는 1,0111,1111,1111,1111(17 비트)이며 오버플로가 발생하면 컴퓨터는 최상위 비트를 버린다. 따라서 vx의 값은 0111,1111,1111,1111, 즉 32767이며 이것은 식에 따라 얻은 결과와 일치한다.
방식 2: 클리핑은 다음 식에 표시된 것처럼 모션 벡터에 대해 수행된다:
vx=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vx)
vy=Clip3(-2bitDepth-1, 2bitDepth-1 -1, vy)
vx는 영상 블록 또는 영상 블록의 서브블록의 모션 벡터의 수평 성분이고, vy는 영상 블록 또는 영상 블록의 모션 벡터의 수직 성분이고, x, y, z MV 클램핑 프로세스 Clip3의 세 입력 값에 대응하고, Clip3은 z 값을 [x, y] 범위로 클리핑하는 것을 나타낸다.
Clip3(x, y, z ) =
Figure pct00001
도 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)를 포함한다. 수신 유닛(420)은 또한 수신기(420) 또는 수신기 유닛(420)으로 지칭될 수 있다. 송신기 유닛(440)은 또한 간단히 송신기(440)로 지칭될 수 있다. 비디오 코딩 장치(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)는 휘발성 및/또는 비 휘발성일 수 있고, 리드-온리 메모리(read-only memory, ROM), 랜덤 액세스 메모리(random access memory, RAM), 터너리 콘텐츠 주소 지정 가능 메모리(ternary contents addressable memory, TCAM) 및/또는 정적 랜덤 액세스 메모리(SRAM)일 수 있다.
도 5는 예시적인 실시예에 따라 도 1a에서의 소스 장치(12) 및 목적지 장치(14) 중 하나 또는 둘 모두로서 사용될 수 있는 장치(500)의 단순화된 블록도이다. 장치(500)는 본 출원의 기술을 구현할 수 있다. 다시 말해, 도 5는 본 출원의 실시예에 따른 인코딩 장치 또는 디코딩 장치(줄여서 코딩 장치(500)로 지칭됨)의 구현의 개략적인 블록도이다. 코딩 장치(500)는 프로세서(510), 메모리(530) 및 버스 시스템(550)을 포함할 수 있다. 프로세서와 메모리는 버스 시스템을 통해 연결된다. 메모리는 명령어를 저장하도록 구성된다. 프로세서는 메모리에 저장된 명령을 실행하도록 구성된다. 코딩 장치의 메모리는 프로그램 코드를 저장한다. 프로세서는 메모리에 저장된 프로그램 코드를 호출하여본 출원에 설명된 다양한 비디오 영상 인코딩 또는 디코딩 방법을 수행할 수 있다. 반복을 피하기 위해 여기에서는 자세한 내용을 설명하지 않는다.
본 출원의 이 실시예에서, 프로세서(510)는 중앙 처리 장치(Central Processing Unit, 줄여서 "CPU")일 수 있다. 대안적으로, 프로세서(510)는 다른 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래밍 가능 게이트 어레이(FPGA) 또는 다른 프로그래밍 가능 논리 장치, 개별 게이트 또는 트랜지스터 논리 장치, 개별 하드웨어 구성 요소 등이 될 수 있다. 범용 프로세서는 마이크로 프로세서, 임의의 통상적인 프로세서 등일 수 있다.
메모리(530)는 ROM(read-only memory) 장치 또는 RAM(random access memory) 장치를 포함할 수 있다. 임의의 다른 적절한 유형의 저장 장치가 대안적으로 메모리(530)로 사용될 수 있다. 메모리(530)는 버스(550)를 통해 프로세서(510)에 의해 액세스되는 코드 및 데이터(531)를 포함할 수 있다. 메모리(530)는 운영 체제(533) 및 애플리케이션 프로그램(535)을 더 포함할 수 있다. 응용 프로그램(535)은 프로세서(510)가 본 출원에서 설명하는 비디오 인코딩 또는 디코딩 방법(특히 본 출원에서 설명하는 비디오 영상 인코딩 또는 디코딩 방법)을 수행할 수 있도록 하는 적어도 하나의 프로그램을 포함한다. 예를 들어, 애플리케이션 프로그램(535)은 애플리케이션 1 내지 N을 포함할 수 있다. 애플리케이션은 본 출원에서 설명된 비디오 인코딩 또는 디코딩 방법을 수행하는 비디오 인코딩 또는 디코딩 애플리케이션(줄여서 비디오 코딩 애플리케이션이라고 함)을 더 포함한다.
버스 시스템(550)은 데이터 버스를 포함할 뿐만 아니라 전원 버스, 제어 버스, 상태 신호 버스 등을 포함할 수 있다. 다만, 명확한 설명을 위해 도면에서 다양한 형태의 버스를 버스시스템(550)으로 표기하였다.
선택적으로, 코딩 장치(500)는 하나 이상의 출력 장치, 예를 들어, 디스플레이(570)를 더 포함할 수 있다. 예에서, 디스플레이(570)는 디스플레이와 터치 감지 요소를 결합하는 터치 감지 디스플레이일 수 있다. 작동 가능하게 터치 입력을 감지한다. 디스플레이(570)는 버스(550)를 통해 프로세서(510)와 연결될 수 있다.
다음은 본 출원의 실시예에서 솔루션을 상세히 설명한다.
비디오 코딩 표준에서, 이미지의 프레임은 서로 중첩되지 않는 코딩 트리 단위(CTU)로 분할된다. CTU의 크기는 64x64로 설정될 수 있다(CTU의 크기는 대안적으로 다른 값으로 설정될 수 있다, 예를 들어, CTU의 크기는 128x128 또는 256x256으로 증가될 수 있다). 64×64 CTU는 64행을 갖는 직사각형 픽셀 매트릭스이며, 각 행은 64픽셀을 포함하고, 각 픽셀은 루마 성분 또는/및 크로마 성분을 포함한다. CTU는 코딩 트리 단위(coding tree unit)를 나타낸다. 하나의 이미지는 복수의 CTU를 포함하며, 하나의 CTU는 일반적으로 하나의 정사각형 이미지 영역에 대응하며, 이미지 영역에 루마 픽셀과 크로마 픽셀(또는 루마 픽셀만 포함할 수도 있고, 크로마 픽셀만 포함할 수도 있음)을 포함한다. CTU는 신택스 요소를 더 포함한다. 이러한 신택스 요소는 CTU를 적어도 하나의 코딩 단위(coding unit, CU)로 분할하는 방법 및 복원된 영상을 획득하기 위해 각 코딩 단위를 디코딩하는 방법을 나타낸다.
CU는 코딩 단위를 나타낸다. CU는 일반적으로 A×B 직사각형 영역에 대응하고, A×B 루마 픽셀 및 A×B 루마 픽셀에 대응하는 크로마 픽셀을 포함한다. A는 직사각형의 폭을 나타내고 B는 직사각형의 높이를 나타내며 A와 B는 같거나 다를 수 있다. A 및 B의 값은 일반적으로 2를 정수의 거듭제곱, 예를 들어 256, 128, 64, 32, 16, 8 및 4로 제곱한 것이다. 디코딩 처리는 코딩 단위에 대해 수행되어 복원된 이미지를 얻을 수 있다. A×B 직사각형 영역. 디코딩 처리는 일반적으로 예측 이미지 및 레지듀얼을 생성하기 위해 예측, 역양자화 및 역변환과 같은 처리를 포함한다. 예측 영상과 잔여를 더하여 복원 영상을 얻는다.
쿼드트리(QT, Quad-Tree)는 트리 구조이다. 하나의 노드는 4개의 자식 노드로 분할될 수 있다. 비디오 코딩 표준에서는 쿼드트리 기반의 CTU 분할 모드가 사용된다. CTU는 루트 노드 역할을 하며 각 노드는 정사각형 영역에 대응한다. 구체적으로, 정사각형 영역을 동일한 크기의 정사각형 영역 4개로 분할한다(분할을 통해 얻은 정사각형 영역의 길이 및 폭은 각각 분할 전 영역 길이 및 폭의 절반이다). 각 영역은 도 6a에 도시된 바와 같이 하나의 노드에 대응한다. 노드가 더 분할되지 않거나(이 경우 노드에 대응하는 영역이 CU이다), 노드가 QT, BT, TT 또는 EQT를 통해 하위 노드로 더 분할될 수 있다.
이진 트리(BT, Binary Tree)는 트리 구조이다. 하나의 노드는 두 개의 자식 노드로 분할될 수 있다. 두 개의 자식 노드로의 분할은 다음 두 가지 방식 중 하나로 수행될 수 있다: (1) 수평 이진 트리 분할: 노드에 대응하는 영역을 동일한 크기의 두 영역: 상위 영역과 하위 영역으로 분할하며, 여기서 각각의 영역은 도 6d에 도시된 바와 같이 하나의 노드에 대응한다; 또는 (2) 수직 이진 트리 분할: 노드에 대응하는 영역을 동일한 크기의 두 영역: 왼쪽 영역 및 오른쪽 영역으로 분할하며, 각각의 영역은 도 6c에 도시된 바와 같이 하나의 노드에 대응한다. 이진 트리 분할 코딩 방식에서 이진 트리 구조의 노드는 분할되지 않거나(이 경우 노드에 대응하는 영역은 CU이다), 노드는 BT, TT, 또는 EQT를 통해 더 낮은 수준의 노드로 분할된다.
삼항 트리(Ternary Tree, TT로 약칭)는 트리 구조이다. 하나의 노드는 세 개의 자식 노드로 분할될 수 있다. 기존의 삼항 트리 기반 코딩 방식에서는 삼항 트리 구조에서 노드가 분할되지 않거나 노드가 3개의 하위 노드로 분할될 수 있다. 3개의 노드로의 분할은 다음 두 가지 방식 중 하나로 수행될 수 있다: (1) 수평 삼항 트리 분할: 노드에 대응하는 영역을 상위 영역, 중간 영역 및 하위 영역의 3개 영역으로 분할하며, 여기서 각각 영역은 하나의 노드에 대응하며, 6d에 도시된 바와 같이 세 영역의 높이는 각각 노드 높이의 1/4, 1/2, 1/4이다; 또는 (2) 수직 삼항 트리 분할: 노드에 대응하는 영역을 왼쪽 영역, 중간 영역 및 오른쪽 영역의 세 영역으로 분할하며, 여기서 각 영역은 하나의 노드에 대응하고 6e에 도시된 바와 같이 세 영역의 폭은 각각 노드 높이의 1/4, 1/2, 1/4이다. 삼항 트리 분할 코딩 방식에서, 삼항 트리 구조에서 노드는 분할되지 않을 수 있거나(이 경우 노드에 대응하는 영역은 CU이다), 노드는 BT, TT, 또는 EQT를 통해 하위 레벨 노드로 더 분할될 수 있다.
확장 쿼드트리(EQT, Extended Quad-Tree)는 "I" 모양의 분할 구조이다. 하나의 노드는 4개의 자식 노드로 분할될 수 있다. 세 개의 노드로의 분할은 다음 두 가지 방식 중 하나로 수행될 수 있다: (1) 수평 쿼드 트리 분할: 노드에 대응하는 영역을 상위 영역, 중간 영역, 하위 영역의 세 영역으로 분할하며, 6f에 도시된 바와 같이 각 영역은 하나의 노드에 대응하며, 위쪽 영역, 왼쪽 중간 영역, 오른쪽 중간 영역, 아래쪽 영역의 세 영역의 높이는 각각 노드의 높이의 1/4, 1/2, 1/2, 1/4이고, 왼쪽 중간 영역의 폭 및 오른쪽 중간 영역의 폭은 각각 노드 높이의 1/2 및 1/2이고; 또는 (2) 수직 쿼드 트리 분할: 노드에 대응하는 영역을 왼쪽 영역, 위쪽 중간 영역, 아래쪽 중간 영역 및 오른쪽 영역의 세 영역으로 분할하며, 같이 각 영역은 하나의 노드에 대응하며, 왼쪽 영역, 중간 영역 및 오른쪽 영역의 세 영역은 각각 노드 높이의 1/4, 1/2, 1/2 및 1/4이고, 상단 중간 영역 및 하단 중간 영역의 폭은 도 6g에 도시된 바와 같이 노드 높이의 각각 1/2 및 1/2이다. 확장 쿼드트리 코딩 방식에서 확장 쿼드트리 구조의 노드는 분할되지 않거나 BT, TT 또는 EQT를 통해 노드가 하위 노드로 더 분할될 수 있다.
비디오 디코딩(video decoding)은 특정 신택스 규칙 및 처리 방법에 따라 비디오 비트스트림을 복원된 이미지로 복원하는 처리 프로세스이다.
비디오 인코딩(video encoding)은 이미지 시퀀스를 비트스트림으로 압축하는 처리 프로세스이다.
비디오 코딩(video coding)은 비디오 인코딩 및 비디오 디코딩의 포괄적인 용어이다. 비디오 코딩의 중국어 번역은 비디오 인코딩의 중국어 번역과 동일하다.
VTM은 JVET에 의해 개발된 새로운 코덱 참조 소프트웨어이다.
비디오 코딩 표준에서, 이미지의 프레임은 서로 겹치지 않는 코딩 트리 단위(CTU)로 분할된다. CTU의 크기는 64x64로 설정될 수 있다(CTU의 크기는 대안적으로 다른 값으로 설정될 수 있다, 예를 들어, CTU의 크기는 128x128 또는 256x256으로 증가될 수 있다). 64×64 CTU는 64행을 갖는 직사각형 픽셀 매트릭스이며, 각 행은 64픽셀을 포함하고, 각 픽셀은 루마 성분 또는/및 크로마 성분을 포함한다.
쿼드트리(quad-tree, QT로 약칭) 기반 CTU 분할 방법이 사용되며, CTU는 쿼드트리의 루트(root) 노드 역할을 하고 CTU는 여러 리프 노드(leaf node)로 재귀적으로 분할된다. 쿼드트리 분할 모드에서 하나의 노드는 하나의 이미지 영역에 대응한다. 노드가 분할되지 않은 경우 노드를 리프 노드라고 하며 해당 노드에 대응하는 이미지 영역이 하나의 CU를 형성한다. 노드를 더 분할하면 해당 노드에 대응하는 이미지 영역을 동일한 크기의 4개 영역으로 분할하고(4개 영역의 길이와 폭은 각각 분할 전 영역의 길이와 폭의 절반이 된다), 각 영역은 하나의 노드에 대응한다. 이러한 노드가 더 분할되는지는 별도로 결정해야 한다. 노드가 더 분할되는지는 비트스트림에 있고 노드에 대응하는 분할 플래그 split_cu_flag에 의해 표시된다. 루트 노드의 쿼드트리 깊이(qtDepth)는 0이고, 자식 노드의 쿼드트리 깊이는 부모 노드의 쿼드트리 깊이에 1을 더한 값이다. 설명의 편의를 위해 이하에서 노드의 크기와 모양은 노드에 대응하는 이미지 영역의 크기 및 모양과 같다.
보다 구체적으로, 64×64 CTU 노드(쿼드트리 깊이는 0이다)에 대해, 64×64 CTU 노드는 64×64 CTU 노드에 대응하는 split_cu_flag에 기초하여 분할되지 않을 수 있고, CTU 노드는 하나의 64×64CU를 형성하거나; 또는 64×64 CTU 노드는 4개의 32×32 노드로 분할된다(쿼드트리 깊이는 1이다). 4개의 32×32 노드 각각은 해당 노드에 대응하는 split_cu_flag를 기반으로 더 분할되거나 분할되지 않을 수 있다. 하나의 32×32 노드가 더 분할되면 4개의 16×16 노드가 생성된다(쿼드트리 깊이는 2이다). 유추하여 모든 노드가 더 이상 분할되지 않을 때까지 분할이 종료되고 이러한 CTU는 CU 그룹으로 분할된다. CU의 최소 크기(size)는 SPS에서 식별되며, 예를 들어 8×8은 CU의 최소 크기를 나타낸다. 전술한 재귀적 분할 과정에서 노드의 크기가 최소 CU 크기(최소 CU 크기)와 같으면 노드는 디폴트에 의해 더 이상 분할되지 않으며 노드의 분할 플래그는 비트스트림에 포함될 필요가 없다.
파싱을 통해 노드는 리프 노드이고, 리프 노드는 CU이고, CU에 대응하는 코딩 정보(CU의 예측 모드 및 변환 계수와 같은 정보, 예를 들어, coding_unit() 신택스 구조를 포함)가 추가로 파싱된다는 것이 학습된 후, 그런 다음 코딩 정보에 기초하여 CU에 대해 예측, 역양자화, 역변환 및 루프 필터링과 같은 디코딩 처리가 수행되어 CU에 대응하는 복원 이미지를 생성한다. CTU는 쿼드트리 구조를 이용하여 로컬 이미지 특징을 기반으로 적절한 크기의 CU 그룹으로 분할될 수 있다. 예를 들어 부드러운 영역은 더 큰 CU로 분할되고 질감이 풍부한 영역은 더 작은 CU로 분할된다.
CTU가 CU의 그룹으로 분할되는 분할 모드는 코딩 트리(coding tree)에 대응한다. CTU에 사용해야 하는 특정 코딩 트리는 일반적으로 인코더의 비율 왜곡 최적화(Rate Distortion Optimization, RDO) 기술을 기반으로 결정된다. 인코더는 복수의 CTU 분할 모드를 사용하려고 시도하며, 여기서 각 분할 모드는 하나의 비율 왜곡 비용(RD 비용)에 대응한다. 인코더는 사용을 시도한 다양한 분할 모드의 RD 비용을 비교하고, 실제 CTU의 코딩을 위한 최적의 분할 모드로 RD 비용이 가장 작은 분할 모드를 사용한다. 인코더가 사용하려고 시도한 CTU 분할 모드는 디코더가 CTU 분할 모드를 올바르게 식별할 수 있도록 디코더가 지정한 분할 규칙을 준수해야 한다.
화면 콘텐츠 비디오에서 이미지는 일반적으로 동일한 콘텐츠를 포함한다. 예를 들어, 숫자 또는 그래픽을 포함하는 이미지에서, 도 7에 도시된 바와 같이 현재 블록 주변에서 동일한 숫자 또는 동일한 그래픽이 발견될 수 있다. 따라서 현재 블록의 코딩 과정에서 현재 블록 주변에서 참조 가능한 블록을 찾을 수 있다면 해당 블록의 복원 픽셀을 직접 참조한다. 이러한 방식으로 코딩 압축률이 크게 증가한다. 인트라 블록 카피(Intra Block Copy, IBC) 기술은 현재 화면 콘텐츠에서 동일한 블록을 검색하는 인트라 예측 기술이다. 예를 들어, 표 2의 신택스 요소 pred_mode_ibc_flag는 현재 코딩 단위에 대해 IBC 예측 모드가 사용되는지를 나타내기 위해 사용될 수 있다.
쿼드트리 분할에 기초하여, 이진 트리(binary tree, BT로 약칭) 분할 모드 및 확장된 쿼드트리(Extended Quad-Tree, EQT로 약칭) 분할 모드가 추가로 사용될 수 있다.
하나의 노드는 이진 트리 분할을 통해 두 개의 자식 노드로 분할된다. 특히 두 가지 이진 트리 분할 모드가 있다.
(1) 수평 이진 트리 분할: 노드에 대응하는 영역을 동일한 크기의 두 영역으로 분할하며(즉, 폭은 변경되지 않고 높이는 분할 전 영역 높이의 절반이 된다), 여기서 도 6b에 도시된 바와 같이 각 영역은 노드에 대응한다; 그리고
(2) 수직 이진 트리 분할: 도 6c에 도시된 바와 같이 노드에 대응하는 영역을 같은 크기의 두 영역: 왼쪽 영역과 오른쪽 영역으로 분할된다(즉, 높이는 변경되지 않고, 폭은 분할 전 영역 폭의 절반이 된다).
하나의 노드는 확장 쿼드트리 분할을 통해 4개의 자식 노드로 분할된다. 특히 두 가지 확장된 쿼드트리 분할 모드가 있다:
(1) 수평 쿼드 트리 분할: 노드에 대응하는 영역을 상위 영역, 중간 영역 및 하위 영역의 세 영역으로 분할한다. 각 영역은 하나의 노드에 대응하며 상위 영역의 높이, 왼쪽 중간 영역, 오른쪽 중간 영역 및 아래쪽 영역은 각각 노드 높이의 1/4, 1/2, 1/2 및 1/4이고 왼쪽 중간 영역의 폭과 오른쪽 중간 폭 영역은 도 6f에 도시된 바와 같이 노드 높이의 각각 1/2 및 1/2이다; 그리고
(2) 수직 쿼드 트리 분할: 노드에 대응하는 영역을 왼쪽 영역, 위쪽 중간 영역, 아래쪽 중간 영역 및 오른쪽 영역의 세 영역으로 분할하며 각 영역은 하나의 노드에 대응하고 왼쪽 영역의 폭 영역, 중간 영역 및 오른쪽 영역은 각각 노드 높이의 1/4, 1/2, 1/2 및 1/4이며, 상단 중간 영역의 폭과 하단 중간 폭 영역은 도 6g에 도시된 바와 같이 노드 높이의 각각 1/2 및 1/2이다.
QT plus BT/EQT 분할 모드는 제1-레벨 코딩 트리의 노드가 QT를 통해서만 자식 노드로 분할될 수 있고 제1-레벨 코딩 트리의 리프 노드가 제2-레벨 코딩 트리의 루트 노드임을 의미하며, 제2-레벨 코딩 트리의 노드는 BT 또는 EQT를 통해 자식 노드로 분할될 수 있으며, 제2-레벨 코딩 트리의 리프 노드는 코딩 단위이다. BT 또는 EQT 분할 모드가 리프 노드에 사용되는 경우 BT 또는 EQT 분할 모드만 리프 노드에 사용되지만 QT 분할 모드는 리프 노드에 사용할 수 없다.
대안적으로, 쿼드트리 분할에 기초하여, 이진 트리(이진 트리, 약칭 BT) 분할 모드 및 삼항 트리(ternary tree, TT로 약칭) 분할 모드가 더 사용될 수 있다.
하나의 노드는 이진 트리 분할을 통해 두 개의 자식 노드로 분할된다. 특히 두 가지 이진 트리 분할 모드가 있다:
(1) 수평 이진 트리 분할: 노드에 대응하는 영역을 동일한 크기의 두 영역으로 분할하며(즉, 폭은 변경되지 않고 높이는 분할 전 영역 높이의 절반이 된다), 여기서 각 영역은 도 6b에 도시된 바와 같이 하나의 노드에 대응한다; 그리고
(2) 수직 이진 트리 분할: 도 6c에 도시된 바와 같이 노드에 대응하는 영역을 동일한 크기의 두 영역: 왼쪽 영역과 오른쪽 영역으로 분할한다(즉, 높이는 변경되지 않고 폭은 분할 전 영역 폭의 절반이 된다).
하나의 노드는 삼항 트리 분할을 통해 두 개의 자식 노드로 분할된다. 구체적으로, 두 가지 이진 트리 분할 모드가 있다.
(1) 수평 삼항 트리 분할: 노드에 대응하는 영역을 상위 영역, 중간 영역, 하위 영역의 세 영역으로 분할하며, 각 영역은 하나의 노드에 대응하고 상위 영역의 높이는 중간 영역에 대응한다. 영역 및 아래쪽 영역은 각각 도 6d에 도시된 바와 같이 노드 높이의 1/4, 1/2 및 1/4이다; 그리고
(2) 수직 삼항 트리 분할: 노드에 대응하는 영역을 왼쪽 영역, 중간 영역, 오른쪽 영역의 세 영역으로 분할하며, 도 6e에 도시된 바와 같이 각 영역은 하나의 노드에 대응하고 왼쪽 영역의 폭은 중간 영역 영역과 오른쪽 영역은 각각 노드 높이의 1/4, 1/2, 1/4이다.
간략히 QT-BTT라고 하는 QT plus BT/TT 분할 모드는 제1-레벨 코딩 트리의 노드가 QT를 통해서만 자식 노드로 분할될 수 있으며; 제1-레벨 코딩 트리의 리프 노드는 제2-레벨 코딩 트리의 루트 노드이고; 제2-레벨 코딩 트리의 노드는 4개의 분할 모드: 수평 이진 트리 분할, 수직 이진 트리 분할, 수평 삼항 트리 분할 및 수직 삼항 트리 분할 중 하나를 통해 자식 노드로 분할될 수 있으며, 그리고 제2-레벨 코딩 트리의 리프 노드는 코딩 단위임을 의미한다.
CU 레벨 신택스 구조의 일부는 표 1과 같을 수 있다. 현재 노드가 더 이상 자식 노드로 분할되지 않는 경우, 현재 노드는 코딩 단위이고, 코딩 단위의 예측 블록은 다음의 신택스 구조에 기초하여 파싱된다.
skip_flag는 스킵 모드의 플래그를 나타낸다. skip_flag의 값이 1이면 현재 CU에 대해 스킵 모드를 사용하고 있음을 나타내고, skip_flag의 값이 0이면 현재 CU에 대해 스킵 모드를 사용하지 않음을 나타낸다.
merge_flag는 다이렉트 모드의 플래그를 나타낸다. merge_flag의 값이 1이면 현재 CU에 대해 병합 모드가 사용됨을 나타내고, merge_flag의 값이 0이면 현재 CU에 대해 병합 모드를 사용하지 않음을 나타낸다.
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의 cu_skip_flag의 의미는 표 1의 skip_flag의 의미와 동일하고, 표 2의 pred_mode_flag의 의미는 표 1의 cu_pred_mode의 의미와 동일하다.
cu_skip_flag는 스킵 모드의 플래그를 나타낸다. cu_skip_flag의 값이 1이면 현재 CU에 대해 스킵 모드를 사용하고 있음을 나타내고, cu_skip_flag의 값이 0이면 현재 CU에 대해 스킵 모드를 사용하지 않음을 나타낸다.
general_merge_flag는 병합 모드의 플래그를 나타낸다. general_merge_flag의 값이 1이면 현재 CU에 대해 병합 모드가 사용됨을 나타내고, general_merge_flag의 값이 0이면 현재 CU에 대해 병합 모드를 사용하지 않음을 나타낸다.
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이다.
pred_mode_ibc_flag의 값이 1이면 현재 코딩 단위에 대해 IBC 예측 모드가 사용됨을 나타내고, pred_mode_ibc_flag의 값이 0이면 현재 코딩 단위에 대해 IBC 예측 모드가 사용되지 않음을 나타낸다. pred_mode_ibc_flag의 값이 1이면 CuPredMode[x0][y0]는 MODE_IBC이다.
CuPredMode[x0][y0]은 현재 코딩 단위의 예측 모드를 나타내고, (x0, y0)은 현재 영상에서 현재 코딩 단위의 위치를 나타낸다.
coding_unit(x0,y0,cbWidth,cbHeight,treeType) { 설명자
if(slice_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 && slice_type != I )
pred_mode_flag ae(v)
if( ( ( slice_type == I && cu_skip_flag[x0][y0] ==0 ) || ( slice_type != I && ( CuPredMode[x0][y0] != MODE_INTRA ||
( cbWidth == 4 && cbHeight == 4 && cu_skip_flag[x0][y0] == 0 ) ) ) ) &&
sps_ibc_enabled_flag && ( cbWidth != 128 || cbHeight != 128 ) )
pred_mode_ibc_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 )
general_merge_flag [x0][y0] ae(v)
...
}
}
수직 이진 트리 분할(또는 수평 이진 트리 분할)을 통해 크기가 8×M(또는 M×8)인 노드를 분할함으로써 각각 크기가 4×M(또는 M×4)인 2개의 자식 노드가 생성된다. 마찬가지로 수직 확장 쿼드트리 분할(또는 수평 확장 쿼드트리 분할)을 통해 16×M(또는 M×16) 크기의 노드를 분할하여 4×M(또는 M×4) 크기의 자식 노드 4개와 8×N(또는 N×8) 크기의 자식 노드 1개를 생성한다. 마찬가지로 수직 삼항 트리 분할(또는 수평 삼항 트리 분할)을 통해 16×M(또는 M×16) 크기의 노드를 분할하여 4×M(또는 M×4) 크기의 자식 노드 2개와 8×M(또는 N×8) 크기의 자식 노드 1개를 생성한다. YUV 4:2:0의 데이터 포맷에서 크로마 성분의 해상도는 루마 성분의 1/2이다. 다시 말해, 하나의 4×M 노드는 하나의 4×M 루마 블록과 2개의 2×(M/2) 크로마 블록을 포함한다. 하드웨어 디코더의 경우 작은 블록(특히 2x2, 2x4 또는 2x8 크기의 작은 블록)을 처리하는 비용이 상대적으로 높다. 그러나 이러한 분할 모드에서는 2×2 또는 2×4 크기의 작은 블록이 생성된다. 이것은 하드웨어 디코더의 구현에 불리하다. 하드웨어 디코더가 작은 블록을 처리하는 것은 비교적 복잡하다. 복잡성은 다음 세 가지 측면에서 구체적으로 반영된다.
(1) 인트라 예측: 처리 속도를 높이기 위해 하드웨어는 일반적으로 인트라 예측 동안 한 번에 16픽셀을 처리하도록 설계된다. 그러나 2x2, 2x4 또는 4x2와 같은 크기의 작은 블록은 16개 미만의 픽셀을 포함한다. 그 결과, 인트라 예측의 처리 성능이 저하된다.
(2) 계수 코딩: HEVC에서 변환 계수 코딩은 16개의 계수를 포함하는 계수 그룹(coefficient group, CG)에 기초하여 수행된다. 그러나 2×2, 2×4, 4×2와 같은 크기의 작은 블록은 4개 또는 8개의 변환 계수를 포함한다. 결과적으로, 이러한 작은 블록에 대한 계수 코딩을 지원하려면 4개의 계수 또는 8개의 계수를 포함하는 계수 그룹을 추가해야 한다. 결과적으로 구현 복잡성이 증가한다.
(3) 인터 예측: 작은 블록에 대한 인터 예측은 데이터 대역폭에 대한 요구사항이 비교적 높다. 결과적으로 디코딩 처리 속도가 영향을 받는다.
자식 노드가 분할 모드에서 노드를 더 분할하여 생성된 자식 노드에서 변의 길이가 2인 크로마 블록을 포함하는 경우, 자식 노드에 포함된 루마 블록은 분할 모드에서 더 분할되고, 자식 노드에 포함된 크로마 블록은 더 이상 분할되지 않는다. 이와 같이 한 변의 길이가 2인 크로마 블록은 생성되지 않는다. 이것은 디코더의 최대 처리율을 감소시키고 디코더의 구현에 유리하다. 또한, 루마 블록 예측 모드에 기초하여 크로마 블록 예측 모드를 결정하는 방법을 제공하여 코딩 효율을 효과적으로 향상시킨다.
본 출원에서 제공되는 이미지 예측 방법은 도 8에 도시된 비디오 인코더(18) 또는 비디오 디코더(24)에 사용될 수 있다. 다음 몇 가지 실시예에서 하나 이상의 단계는 비디오 디코더(24)에서만 수행되고, 특히 다음의 해당 부분에서 설명된다는 점에 유의해야 한다.
다음은 특정 실시예를 사용하여 본 출원에서의 이미지 예측 방법을 상세히 설명한다. 이하의 몇 가지 특정 실시예는 서로 결합될 수 있으며, 동일하거나 유사한 내용은 다른 실시예에서 반복적으로 설명되지 않는다는 점에 유의해야 한다.
도 9는 본 출원의 실시예에 따른 제1 이미지 예측 방법의 개략적인 흐름도이다. 도 4를 참조하면. 도 9에 도시된 바와 같이, 본 실시예에서 제공되는 이미지 예측 방법은 다음 단계를 포함한다.
단계 101: 현재 노드의 분할 모드를 획득한다.
이 실시예에서, 현재 노드의 분할 정보가 먼저 파싱되고, 여기서 분할 정보는 현재 노드를 분할할지를 나타내기 위해 사용된다. 분할 정보가 현재 노드를 분할하도록 지시하면 현재 노드의 분할 모드를 획득한다. 현재 노드의 분할 모드는 쿼드 트리 분할, 수직 이진 트리 분할, 수평 이진 트리 분할, 수직 삼항 트리 분할 및 수평 삼항 트리 분할 중 적어도 하나를 포함한다. 물론 다른 분할 모드가 있을 수 있다. 이것은 본 실시예에서 특별히 제한되지 않는다.
현재 노드의 분할 정보는 비트스트림으로 전송될 수 있다. 현재 노드의 분할 정보는 비트스트림의 해당 신택스 요소로부터 파싱되어 특정 분할 모드가 결정될 수 있다. 현재 노드의 분할 모드는 다른 미리 설정된 규칙에 따라 선택적으로 결정될 수 있다. 이것은 본 실시예에서 특별히 제한되지 않는다.
이 실시예에서, 현재 노드에 대한 것이고 파싱을 통해 획득된 분할 정보가 현재 노드를 분할하는 것을 나타내는 데 사용되는 경우, 분할 정보는 구체적으로 현재 노드에 포함된 루마 블록의 분할 모드 및/또는 현재 노드에 포함된 크로마 블록의 분할 모드를 포함한다. 현재 노드에 포함된 루마 블록의 분할 모드는 현재 노드에 포함된 크로마 블록의 분할 모드와 동일하거나 상이할 수 있다. 이것은 본 실시예에서 특별히 제한되지 않는다. 예를 들어, 분할 정보는 쿼드트리 분할이 현재 노드의 루마 블록과 크로마 블록 모두에 사용됨을 나타내는 데 사용된다. 대안으로, 분할 정보는 현재 노드의 루마 블록에 대해 쿼드 트리 분할이 사용되고 현재 노드의 크로마 블록에 대해 수직 이진 트리 분할이 사용됨을 나타내기 위해 사용된다.
단계 102: 분할 모드에서 현재 노드를 분할하여 미리 설정된 크기의 이미지 블록이 획득되는지를 결정한다.
미리 설정된 크기를 갖는 이미지 블록은 임계값보다 작은 크기를 갖는 루마 블록일 수 있다. 임계값은 128, 64 또는 32와 같은 루마 샘플의 수 또는 32, 16 또는 8과 같은 크로마 샘플의 수일 수 있다. 현재 노드의 크기는 임계값보다 크거나 같을 수 있다.
분할 모드에서 현재 노드를 분할하여 미리 설정된 크기를 갖는 이미지 블록이 획득된 것으로 결정되면, 단계 103이 수행된다. 분할 모드에서 현재 노드를 분할하여 미리 설정된 크기의 이미지 블록이 획득되지 않은 것으로 결정되면, 단계 104가 수행된다.
단계 103: 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행한다.
이 실시예에서 현재 노드는 처리될 노드 또는 분할될 노드에 대응하는 이미지 영역 또는 이미지 블록으로 이해될 수 있다는 점에 유의해야 한다. 현재 노드가 커버하는 모든 코딩 블록은 현재 노드에 대응하는 영역에 위치한 모든 코딩 블록으로 이해될 수 있다. 이 실시예의 모든 코딩 블록은 현재 노드를 분할하거나 분할하지 않은 것에 의해 획득된 루마 코딩 블록 및 크로마 코딩 블록을 포함한다. 코딩 블록은 대안적으로 코딩 단위(coding unit)일 수 있다.
선택적으로, 수행된 인트라 예측은 공통 인트라 예측 모드(인트라 모드) 또는 인트라 블록 복사(intra block copy, IBC) 모드일 수 있다.
선택적으로, 현재 노드가 위치한 슬라이스의 유형(슬라이스 유형)이 인트라(Intra) 유형인 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측 대신 인트라 예측이 수행된다.
구현에서, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계는:
분할 모드에서, 현재 노드에 포함된 루마 블록을 분할하여 분할된 루마 블록을 획득하고, 분할을 통해 획득된 루마 블록에 대해 인트라 예측을 수행하는 단계; 및 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 크로마 코딩 블록에 대한 인트라 예측을 수행하는 단계
를 포함할 수 있다.
다시 말해, 현재 노드의 모든 코딩 블록에 대해 인트라 예측이 수행되는 것으로 결정되면, 현재 노드의 루마 블록을 루마 블록의 분할 모드에서 분할하여 N 개의 루마 코딩 트리 노드를 획득하고; 현재 노드의 크로마 블록은 분할되지 않아 하나의 크로마 코딩 블록(크로마 CB로 약칭)을 획득한다.
N 개의 루마 코딩 트리 노드가 더 이상 분할되지 않거나 제한되지 않는 것이 제한될 수 있다. 루마 코딩 트리 노드가 더 분할되면, 루마 코딩 트리 노드의 분할 모드가 재귀 분할을 위해 파싱된다. 루마 코딩 트리 노드가 더 분할되지 않을 때, 루마 코딩 트리 노드는 하나의 루마 코딩 블록(루마 CB로 약칭)에 대응한다. 인트라 예측은 루마 CB에 대해 수행되어 루마 CB에 대응하는 루마 예측 블록을 획득한다.
크로마 CB에 대응하는 크로마 예측 블록을 획득하기 위해 크로마 CB에 대해 인트라 예측이 수행된다. 크로마 예측 블록과 크로마 CB는 동일한 크기를 갖는다.
구현에서, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측을 수행하는 단계는:
분할 모드에서, 현재 노드에 포함된 루마 블록을 분할하여 분할된 루마 블록을 획득하고, 분할을 통해 획득된 루마 블록에 대해 인터 예측을 수행하는 단계; 및 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 크로마 코딩 블록에 대해 인터 예측을 수행하는 단계
를 포함한다.
다시 말해, 현재 노드의 모든 코딩 블록에 대해 인터 예측이 수행되는 것으로 결정되면, 현재 노드의 루마 블록은 루마 블록의 분할 모드에서 분할되어 N 개의 루마 코딩 트리 노드를 획득하고; 현재 노드의 크로마 블록은 분할되지 않아 하나의 크로마 코딩 블록(크로마 CB로 약칭)을 획득한다.
본 실시예에서, 현재 노드의 모든 코딩 블록에 대해 인트라 예측이 수행되는 것으로 결정되거나, 현재 노드의 모든 코딩 블록에 대해 인터 예측이 수행되는 것으로 결정되는 경우, 포함된 루마 블록은 현재 노드의 크로마 블록은 현재 노드의 분할 모드에서 분할되고 현재 노드의 크로마 블록은 더 이상 분할되지 않는다. 전술한 방법에 따르면 인트라 예측이 수행되는 작은 크로마 블록이 생성되지 않으므로 작은 크로마 블록에 대해 인트라 예측이 수행되는 경우를 피할 수 있다.
구현에서, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측을 수행하는 단계는:
분할 모드에서, 현재 노드에 포함된 루마 블록을 분할하여 분할된 루마 블록을 획득하고, 분할을 통해 획득된 루마 블록에 대해 인터 예측을 수행하는 단계; 및 분할 모드에서, 현재 노드에 포함된 크로마 블록을 분할하여 분할된 크로마 블록을 획득하고, 분할을 통해 획득된 크로마 블록에 대해 인터 예측을 수행하는 단계
를 포함할 수 있다.
다시 말해, 현재 노드의 모든 코딩 블록에 대해 인터 예측이 수행되는 것으로 결정되면, 현재 노드의 루마 블록은 루마 블록의 분할 모드에서 분할되어 N 개의 루마 코딩 트리 노드를 획득하고; 현재 노드의 크로마 블록은 크로마 블록의 분할 모드에서 분할되어 M 개의 크로마 코딩 트리 노드를 획득한다. N 및 M은 양의 정수이고, N 및 M은 동일하거나 상이할 수 있다. N 개의 루마 코딩 트리 노드와 M 개의 크로마 코딩 트리 노드가 더 분할되지 않거나 제한되지 않는 것이 제한될 수 있다. 더 이상의 분할이 수행되지 않을 때, N 개의 루마 코딩 트리 노드는 현재 노드의 N 개의 루마 CB에 대응하고 M 크로마 코딩 트리 노드는 현재 노드의 M 크로마 CB에 대응한다. N 개의 루마 CB에 대해 인터 예측을 수행하여 대응하는 루마 예측 블록을 획득하고, M 개의 크로마 CB에 대해 인터 예측을 수행하여 대응하는 크로마 예측 블록을 획득한다.
선택적으로, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측이 수행될 때, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측을 수행하는 단계는:
현재 노드의 자식 노드의 분할 서브-모드를 획득하는 단계 - 여기서 자식 노드는 루마 블록 및 크로마 블록을 포함함 - ; 분할 서브-모드에서 현재 노드의 자식 노드를 분할하여 미리 설정된 제1 크기의 루마 블록이 획득되는지를 결정하는 단계; 및 분할 서브-모드에서 현재 노드의 자식 노드를 분할하여 미리 설정된 제1 크기의 루마 블록이 획득된 것으로 결정되면, 분할 서브-모드가 아닌 분할 모드에서 현재 노드의 자식 노드를 분할하여, 대응하는 코딩 블록을 획득하고, 대응하는 코딩 블록에 대해 인터 예측을 수행하는 단계; 또는 현재 노드의 자식 노드를 코딩 블록으로 사용하여 현재 노드의 자식 노드에 대해 인터 예측을 수행하는 단계
를 포함할 수 있다.
다시 말해, 분할 서브-모드에서 현재 노드의 자식 노드를 분할하여 제1 미리 설정된 크기(4x4)를 갖는 루마 블록이 생성되는 경우, 자식 노드의 분할 서브-모드는 허용되거나 자식 노드가 더 이상 분할될 수 없거나 자식 노드가 분할 서브-모드가 아닌 분할 모드에서 분할된다. 예를 들어, 현재 노드의 크기가 8×8이고 수평 이진 트리 분할(또는 수직 이진 트리 분할)을 통해 2개의 8×4(또는 4×8) 노드가 생성되면 ×4(또는 4×8) 노드가 더 분할된다. 이 경우 8×4(또는 4×8) 노드는 더 이상 분할할 수 없다.
단계 104: 현재 노드에 의해 커버되는 모든 코딩 블록에 사용되는 예측 모드가 제한되지 않는 현재 노드의 분할 모드에서 현재 노드를 분할한다.
구체적으로, 현재 노드의 루마 블록은 현재 노드의 루마 블록의 분할 모드에서 분할되고, 현재 노드의 크로마 블록은 현재 노드의 크로마 블록의 분할 모드에서 분할된다.
단계 104에서 "현재 노드에 의해 커버되는 모든 코딩 블록에 사용되는 예측 모드는 제한되지 않음"은 다음과 같이 이해될 수 있다는 점에 유의해야 한다: 현재 노드에 의해 커버되는 모든 코딩 블록은 동일한 예측 모드에서 예측되지 않을 수 있으며, 즉 각 코딩 블록의 예측 모드를 파싱하고, 각 코딩 블록은 파싱된 예측 모드로 예측한다.
선택적으로, 단계 103 또는 단계 104 후에, 방법은 다음을 추가로 포함한다:
단계 105: 현재 노드에 의해 커버되는 모든 코딩 블록의 예측 블록 및 잔여 정보를 파싱한다.
단계 106: 각 코딩 블록을 디코딩하여 현재 노드에 대응하는 이미지 블록의 복원 신호를 획득한다.
전술한 두 단계는 도 8에 도시된 비디오 디코더(24)에 대해 사용될 수 있음을 주목해야 한다.
예측 블록은 예측 모드(인트라 예측 모드 또는 비인트라 예측 모드를 나타냄), 인트라 예측 모드, 인터 예측 모드, 모션 정보 등을 포함한다. 모션 정보는 예측 방향(순방향, 역방향 또는 양방향), 참조 프레임 인덱스(참조 인덱스), 모션 벡터(모션 벡터) 등의 정보를 포함할 수 있다.
잔여 정보는 코딩된 블록 플래그(코딩된 블록 플래그, cbf), 변환 계수, 변환 유형(예를 들어, DCT-2, DST-7 또는 DCT-8) 등을 포함한다. 변환 유형은 디폴트로 DCT-2일 수 있다.
현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측만 수행되는 것으로 제한되는 경우, 현재 노드를 분할하여 획득된 루마 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의 인트라 예측 모드에 대한 정보를 파싱하는 단계를 포함한다. 현재 노드를 분할하여 획득된 크로마 CB의 예측 블록을 파싱하는 단계는 크로마 CB의 인트라 예측 모드를 파싱하는 것을 포함한다. 크로마 CB의 인트라 예측 모드는 다음 방법에 따라 파싱될 수 있다: (1) 인트라 예측 모드를 획득하기 위해 비트스트림의 신택스 요소를 파싱하는 단계; 또는 (2) 선형 모델 모드, DM 모드(크로마 유도 모드, DM), IBC 모드 등과 같은 크로마 인트라 예측 모드의 집합에서 인트라 예측 모드를 하나의 인트라 예측 모드로 직접 설정하는 단계.
현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측만 수행되는 것으로 제한되는 경우, 현재 노드를 분할하여 획득된 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에 대해 병합 모드를 사용하지 않음을 나타낸다. cu_pred_mode는 코딩 단위 예측 모드 플래그를 나타낸다. cu_pred_mode의 값이 1이면 현재 예측 단위에 대해 인트라 예측이 수행됨을 나타내고, cu_pred_mode의 값이 0이면 공통 인터 예측(인터 방향, 참조 인덱스, 모션 벡터 예측자 인덱스 및 비트스트림에서의 모션 벡터 차이)는 현재 예측 단위에 대해 수행된다.
선택적으로, 현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측만 수행되는 것으로 제한되는 경우, 현재 노드를 분할하여 획득된 루마 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 서브블록의 모션 정보는 파싱을 통해 획득된 인터 예측 블록을 기반으로 유도된다. 현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측만 수행하도록 제한하면 현재 노드를 분할한 크로마 CB의 예측 블록을 파싱할 필요가 없다. 크로마 CB는 2×2 크로마 서브블록으로 분할된다(분할 모드는 분할 모드 S일 수 있다). 각 2×2 크로마 서브블록의 모션 정보는 각 2×2 크로마 서브블록에 대응하는 4×4 루마 영역의 모션 정보이다. 전술한 분할 모드에서는 인트라 예측이 수행되는 작은 크로마 블록이 생성되지 않고, 16 픽셀보다 작은 크기의 변환 블록도 생성되지 않는다. 따라서, 전술한 인터 예측에서의 문제점 및 계수 코딩에서의 문제점이 극복된다.
선택적으로, 현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측만 수행되는 것으로 제한되는 경우, 현재 노드를 분할한 크로마 CB의 예측 블록을 파싱할 필요가 없다. 크로마 예측 블록과 크로마 코딩 블록은 동일한 크기를 갖는다. 크로마 CB의 모션 정보는 크로마 CB에 대응하는 루마 영역(예를 들어, 루마 영역의 중앙, 우측 하단 또는 좌측 상단)에서 미리 설정된 위치의 모션 정보이다. 전술한 분할 모드에서는 인트라 예측이 수행되는 작은 크로마 블록이 생성되지 않고, 작은 변환 블록이 생성되지 않으며, 인터 예측이 수행되는 작은 크로마 블록도 생성되지 않는다.
본 실시예에서, 인트라 예측 모드는 코딩 블록이 위치하는 이미지의 공간 도메인 참조 픽셀을 사용하여 코딩 블록의 예측자가 생성되는 예측 모드임을 주목해야 한다. 예를 들어, 인트라 예측 모드는 직류 모드(direction current mode, DC mode), 평면 모드(Planar mode), 각도 모드(Angular mode), 템플릿 매칭 모드(template matching mode) 또는 IBC 모드이다. 인터 예측 모드는 코딩 블록의 참조 영상에서 시간 영역 참조 픽셀을 이용하여 코딩 블록의 예측자를 생성하는 예측 모드이다. 예를 들어, 인터 예측 모드는 스킵 모드(Skip mode), 머지 모드(Merge mode) 또는 고급 모션 벡터 예측(advanced motion vector prediction, AMVP) 모드(커먼 인터 모드라고도 함)이다.
코딩 블록의 예측 블록에 기초하여 각 코딩 블록에 대해 인터 예측 또는 인트라 예측을 수행하여, 코딩 블록의 인터 예측 영상 ??또는 인트라 예측 영상을 획득한다. 그런 다음, 각 코딩 블록의 잔여 정보를 기반으로 변환 계수에 대해 역양자화 및 역변환 처리를 수행하여 잔여 영상을 획득하고, 해당 영역의 예측 영상에 잔여 영상을 더하여 복원 영상을 생성한다.
선택적으로, 가능한 구현에서, 사전 설정된 크기를 갖는 이미지 블록은 제1 사전 설정된 크기를 갖는 루마 블록을 포함하고, 따라서 단계 102는 다음을 포함한다:
현재 노드의 루마 블록의 분할 모드에서 현재 노드를 분할함으로써 제1 미리 설정된 크기의 루마 블록이 획득되는지를 결정하는 단계 - 여기서, 제1 미리 설정된 크기의 루마 블록은 픽셀 크기가 4x4인 루마 블록이다.
현재 노드의 루마 블록의 분할 모드에서 현재 노드의 루마 블록을 분할함으로써 제1 사전 설정된 크기를 갖는 루마 블록이 획득될 때, 따라서, 단계 103은: 현재 노드에 의해 커버된 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계를 포함한다,
현재 노드의 루마 블록의 분할 모드에서 현재 노드의 루마 블록을 분할함으로써 제1 미리 설정된 크기를 갖는 루마 블록이 획득되지 않은 경우, 따라서, 단계 104는: 현재 노드의 루마 블록의 분할 모드에서 현재 노드의 루마 블록을 분할하고, 현재 노드의 크로마 블록의 분할 모드에서 현재 노드의 크로마 블록을 분할하는 단계를 포함하며, 여기서 현재 노드에 의해 커버된 모든 코딩 블록에 대해 사용된 예측 모드는 제한되지 않는다.
선택적으로, 다른 가능한 구현에서, 사전 설정된 크기를 갖는 이미지 블록은 제2 사전 설정된 크기를 갖는 크로마 블록을 포함하고, 따라서 단계 102는 다음을 포함한다:
현재 노드의 크로마 블록의 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록이 획득되는지를 결정하는 단계, 여기서, 제2 미리 설정된 크기의 크로마 블록은 픽셀 크기가 2x2, 2×4 또는 4×2인 크로마 블록이다.
현재 노드의 크로마 블록의 분할 모드에서 현재 노드의 크로마 블록을 분할함으로써 제2 미리 설정된 크기를 갖는 크로마 블록이 획득될 때, 따라서, 단계 103은: 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하는 단계를 포함한다.
현재 노드의 크로마 블록의 분할 모드에서 현재 노드의 크로마 블록을 분할함으로써 제2 미리 설정된 크기를 갖는 크로마 블록이 획득되지 않은 경우, 단계 104는: 현재 노드의 크로마 블록의 분할 모드에서 현재 노드의 루마 블록을 분할하고, 현재 노드의 루마 블록의 분할 모드에서 현재 노드의 루마 블록을 분할하는 단계를 포함하며, 여기서 현재 노드에 의해 커버된 모든 코딩 블록에 대해 사용된 예측 모드는 제한되지 않는다.
본 실시예에서 제공되는 이미지 예측 방법에 따르면, 현재 노드의 분할 모드가 획득되고, 현재 노드의 분할 모드에서 현재 노드를 분할함으로써 미리 설정된 크기의 이미지 블록이 획득되는지가 결정된다. 노드에서 이미지 블록은 루마 블록 또는 크로마 블록을 포함한다. 현재 노드의 분할 모드에서 현재 노드를 분할하여 미리 설정된 크기의 영상 블록을 얻은 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행한다. 전술한 방법에 따르면 현재 노드의 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행함으로써 현재 노드의 모든 코딩 블록에 대한 병렬 처리를 구현할 수 있다. 이것은 영상 예측의 처리 성능을 향상시키고 코딩 처리 속도를 증가시킨다.
도 9에 도시된 실시예에 기초하여, 다음 실시예에서 제공되는 영상 예측 방법에 따라 현재 노드의 루마 블록의 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기의 루마 블록이 획득되는지를 결정하는 프로세스가 상세히 설명된다. 제1 사전 설정된 크기를 갖는 루마 블록이 획득되는지를 결정하기 위한 조건 세트가 구체적으로 개시된다.
도 10은 본 출원의 실시예에 따른 제2 이미지 예측 방법의 개략적인 흐름도이다. 도 10에 도시된 바와 같이, 본 실시예에서 제공되는 이미지 예측 방법은 다음 단계를 포함한다.
단계 201: 현재 노드의 분할 모드를 획득한다.
구체적으로, 현재 노드의 분할 정보를 파싱한다. 분할 정보가 현재 노드의 루마 블록을 분할하는 것을 지시하는 경우, 현재 노드의 루마 블록의 분할 모드가 더 결정된다. 루마 블록의 분할 모드는 쿼드 트리 분할, 수직 이진 트리 분할, 수평 이진 트리 분할, 수직 삼항 트리 분할 및 수평 삼항 트리 분할 중 적어도 하나를 포함한다. 물론 다른 분할 모드가 있을 수 있다. 이것은 본 실시예에서 특별히 제한되지 않는다.
단계 202: 현재 노드의 크기 및 현재 노드의 분할 모드에 기초하여, 분할 모드에서 현재 노드를 분할함으로써 제1 사전 설정된 크기를 갖는 루마 블록이 획득되는지를 결정한다.
제1 미리 설정된 크기를 갖는 루마 블록은 4x4 또는 8x8의 픽셀 크기를 갖는 루마 블록일 수 있다.
분할 모드에서 현재 노드를 분할함으로써 제1 미리 설정된 크기를 갖는 루마 블록이 획득되었다고 결정되면, 단계 203이 수행된다. 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기의 루마 블록이 획득되지 않은 것으로 결정되면, 단계 204가 수행된다.
구체적으로, 현재 노드의 크기 및 현재 노드의 루마 블록의 분할 모드에 기초하여, 루마 블록의 분할 모드에서 현재 노드를 분할함으로써 제1 사전 설정된 크기를 갖는 루마 블록이 획득되는지가 결정된다.
본 실시예에서, 현재 노드의 크기는 현재 노드에 대응하는 이미지 블록의 픽셀 크기로 이해될 수 있다. 현재 노드의 크기는 현재 노드에 대응하는 이미지 블록의 폭과 높이에 따라 결정되거나, 현재 노드에 대응하는 이미지 블록의 면적에 따라 결정되거나, 현재 노드에 대응하는 이미지 블록의 루마 픽셀의 수에 따라 결정될 수 있다. 예를 들어, 현재 노드가 128 루마 픽셀을 포함한다는 것은 현재 노드의 면적이 128인 것으로 기술될 수 있거나, 현재 노드의 폭과 높이의 곱이 128인 것으로 기술될 수 있다.
현재 노드의 크기 및 현재 노드의 루마 블록의 분할 모드에 기초하여, 루마 블록의 분할 모드에서 현재 노드를 분할함으로써 제1 사전 설정된 크기를 갖는 루마 블록을 결정하는 단계는 다음 제1 세트의 하나 이상의 조건을 기반으로 수행된다.
(1) 현재 노드는 M1 픽셀을 포함하고 현재 노드의 분할 모드는 쿼드 트리 분할이다. 예를 들어 M1은 64이다;
(2) 현재 노드는 M2 픽셀을 포함하고 현재 노드의 분할 모드는 삼항 트리 분할이다. 여기서 예를 들어 M2는 64이다;
(3) 현재 노드는 M3 픽셀을 포함하고 현재 노드의 분할 모드는 이진 트리 분할이다. 여기서 예를 들어 M3은 32이다;
(4) 현재 노드는 64 루마 픽셀을 포함하고 삼항 트리 분할(수직 삼항 트리 분할 또는 수평 삼항 트리 분할) 또는 쿼드 트리 분할이 현재 노드에 사용되거나; 또는 현재 노드가 32 루마 픽셀을 포함하고 이진 트리 분할(수직 이진 트리 분할 또는 수평 이진 트리 분할)이 현재 노드에 사용된다;
(5) 현재 노드의 폭은 제2 임계값의 4배이고 현재 노드의 높이는 제2 임계값과 동일하며 현재 노드의 분할 모드는 수직 삼항 트리 분할이다;
(6) 현재 노드의 폭은 제2 임계값과 같고 현재 노드의 높이는 제2 임계값의 4배이며 현재 노드의 분할 모드는 수평 삼항 트리 분할이다;
(7) 현재 노드의 폭은 제2 임계값의 두 배이고 현재 노드의 높이는 제2 임계값과 동일하며 현재 노드의 분할 모드는 수직 이진 트리 분할이다;
(8) 현재 노드의 높이는 제2 임계값의 두 배이고 현재 노드의 폭은 제2 임계값과 동일하며 현재 노드의 분할 모드는 수평 이진 트리 분할이다; 또는
(9) 현재 노드의 폭 또는 높이는 제2 임계값의 두 배이고 현재 노드의 분할 모드는 쿼드 트리 분할이다.
전술한 제1 세트에서, 현재 노드의 폭은 현재 노드에 대응하는 루마 블록의 폭이고, 현재 노드의 높이는 현재 노드에 대응하는 루마 블록의 높이이다. 특정 구현에서, 예를 들어, 제2 임계값은 4일 수 있다.
전술한 제1 세트는 YUV 4:2:0 또는 YUV 4:2:2의 비디오 데이터 포맷에 적용 가능하다.
선택적으로, 제1 미리 설정된 크기를 갖는 루마 블록이 4×4의 픽셀 크기를 갖는 루마 블록일 때, 현재 노드의 크기 및 현재 노드의 분할 모드에 기초하여 루마가 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기를 갖는 블록은 다음 조건 중 하나에 따라 수행될 수 있다:
(1) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 쿼드 트리 분할이다;
(2) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 삼항 트리 분할이다; 또는
(3) 현재 노드의 루마 블록의 샘플 수는 32이고 분할 모드는 이진 트리 분할이다.
현재 노드의 루마 블록의 샘플 수는 현재 노드에 대응하는 이미지 블록의 루마 픽셀의 수(픽셀 크기)이다.
단계 203: 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행한다.
단계 203의 대안적인 방식에서, 인트라 예측은 제1 미리 설정된 크기를 갖는 루마 블록의 코딩 블록에 대해서만 수행될 수 있고, 현재 노드에 의해 커버되는 다른 코딩 블록에 대한 예측 모드는 제한되지 않는다.
현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계는:
분할 모드에서, 현재 노드에 포함된 루마 블록을 분할하여 분할된 루마 블록을 획득하고, 분할을 통해 획득된 루마 블록에 대해 인트라 예측을 수행하는 단계; 및 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 크로마 코딩 블록에 대한 인트라 예측을 수행하는 단계
를 포함할 수 있다.
다시 말해, 현재 노드의 모든 코딩 블록에 대해 인트라 예측이 수행되는 것으로 결정되면, 현재 노드의 루마 블록은 루마 블록의 분할 모드에서 분할되어 N 개의 루마 코딩 트리 노드를 획득하며; 현재 노드의 크로마 블록은 분할되지 않아 하나의 크로마 코딩 블록(크로마 CB로 약칭)을 획득한다.
N 개의 루마 코딩 트리 노드가 더 이상 분할되지 않거나 제한되지 않는 것이 제한될 수 있다. 루마 코딩 트리 노드가 더 분할되면, 루마 코딩 트리 노드의 분할 모드가 재귀 분할을 위해 파싱된다. 루마 코딩 트리 노드가 더 분할되지 않을 때, 루마 코딩 트리 노드는 하나의 루마 코딩 블록(루마 CB로 약칭)에 대응한다. 인트라 예측은 루마 CB에 대해 수행되어 루마 CB에 대응하는 루마 예측 블록을 획득한다.
크로마 CB에 대응하는 크로마 예측 블록을 획득하기 위해 크로마 CB에 대해 인트라 예측이 수행된다. 크로마 예측 블록과 크로마 CB는 동일한 크기를 갖는다.
선택적으로, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계는:
현재 노드에 포함된 루마 블록을 루마 코딩 블록으로 사용하고, 루마 코딩 블록에 대해 인트라 예측을 수행하는 단계; 및 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 크로마 코딩 블록에 대한 인트라 예측을 수행하는 단계를 포함할 수 있다. 다시 말해, 현재 노드의 루마 블록과 크로마 블록 모두 더 이상 분할되지 않을 수 있다.
단계 204: 현재 노드의 분할 모드에서 현재 노드를 분할하며, 여기서 현재 노드에 의해 커버되는 모든 코딩 블록에 사용되는 예측 모드는 제한되지 않는다.
이 실시예의 단계 204는 도 9에 도시된 실시예의 단계 104와 동일하다. 자세한 내용은 전술한 실시예를 참조한다. 자세한 내용은 여기에서 다시 설명되지 않는다.
선택적으로, 단계 203 또는 단계 204 후에, 방법은 다음을 추가로 포함한다:
단계 205: 현재 노드에 의해 커버되는 모든 코딩 블록의 예측 블록 및 잔여 정보를 파싱한다.
단계 206: 각 코딩 블록을 디코딩하여 현재 노드에 대응하는 이미지 블록의 복원 신호를 획득한다.
이 실시예의 단계 205 및 단계 206은 도 9에 도시된 실시예의 단계 105 및 단계 106과 동일하다. 자세한 내용은 전술한 실시예를 참조한다. 자세한 내용은 여기에서 다시 설명되지 않는다.
이 실시예에서 제공되는 이미지 예측 방법에 따르면, 현재 노드의 분할 모드가 획득되고; 루마 블록의 분할 모드에서 현재 노드를 분할하여 미리 설정된 제1 크기를 갖는 루마 블록이 획득되는지는 현재 노드의 크기 및 루마 블록의 분할 모드에 기초하여 결정되고; 루마 블록의 분할 모드에서 현재 노드를 분할하여 미리 설정된 제1 크기의 루마 블록이 획득된 것으로 결정되면, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측이 수행된다. 전술한 방법에 따르면, 현재 노드의 모든 코딩 블록에 대해 인트라 예측을 수행함으로써, 현재 노드의 모든 코딩 블록에 대한 병렬 처리가 구현될 수 있다. 이것은 영상 예측의 처리 성능을 향상시키고 코딩 처리 속도를 증가시킨다.
도 11은 본 출원의 실시예에 따른 제3 이미지 예측 방법의 개략적인 흐름도이다. 도 10에 도시된 실시예에 기초해서, 도 11에 도시된 바와 같이, 도 11에 도시된 솔루션이 YUV 4:2:0 또는 YUV 4:2:2의 비디오 데이터 포맷의 경우 또는 YUV 4:2:0만의 비디오 데이터 포맷의 경우에 사용되는 솔루션일 수 있다는 것에 유의해야 한다. 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기의 루마 블록이 획득되지 않은 것으로 결정되는 경우, 단계 204는 다음 단계를 포함할 수 있다.
단계 2041: 분할 모드에서 현재 노드를 분할함으로써 제2 미리 설정된 크기를 갖는 크로마 블록이 획득되는지를 결정한다.
분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기를 갖는 크로마 블록이 획득된 것으로 결정되면, 단계 2042가 수행된다. 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록이 획득되지 않은 것으로 결정되면, 단계 2043을 수행한다.
구체적으로, 단계 2041은: 현재 노드의 크기 및 크로마 블록의 분할 모드에 기초하여, 크로마 블록의 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기를 갖는 크로마 블록이 획득되는지를 결정하는 단계를 포함한다. 제2 미리 설정된 크기의 크로마 블록은 픽셀 크기가 2×2, 2×4, 또는 4×2인 크로마 블록일 수 있다.
현재 노드의 크기 및 크로마 블록의 분할 모드에 기초하여, 크로마 블록의 분할 모드에서 현재 노드를 분할함으로써 제2 미리 설정된 크기를 갖는 크로마 블록을 결정하는 것은 다음 제2 세트의 하나 이상의 조건에 기초하여 수행된다.
비디오 데이터 포맷이 YUV 4:2:2일 때, 제2 세트는 다음을 포함한다:
(1) 현재 노드의 적어도 하나의 자식 노드의 크로마 블록의 크기는 2x2, 2x4 또는 4x2이다;
(2) 현재 노드의 적어도 하나의 자식 노드의 크로마 블록의 폭 또는 높이가 2이다;
(3) 현재 노드는 64 루마 픽셀을 포함하고 현재 노드의 분할 모드는 삼항 트리 분할 또는 쿼드 트리 분할이다;
(4) 현재 노드는 32 루마 픽셀을 포함하고 현재 노드의 분할 모드는 이진 트리 분할 또는 삼항 트리 분할이다; 또는
(5) 현재 노드의 면적(또는 폭과 높이의 곱)이 S이고, 여기서 S/2 < th1이고, 현재 노드의 분할 모드는 수직 이진 트리 분할 또는 수평 이진 트리 분할이거나; 또는 현재 노드의 면적(또는 폭과 높이의 곱)이 S이고, 여기서 S/4 < th1이고 현재 노드의 분할 모드는 수직 삼항 트리 분할, 수평 삼항 트리 분할 또는 쿼드 트리 분할이다. 임계값 th1은 32이다.
비디오 데이터 포맷이 YUV 4:2:0일 때, 제2 세트는 다음을 포함한다:
(1) 현재 노드의 적어도 하나의 자식 노드의 크로마 블록의 크기는 2x2, 2x4 또는 4x2이다;
(2) 현재 노드의 적어도 하나의 자식 노드의 크로마 블록의 폭 또는 높이가 2이다;
(3) 현재 노드는 128 루마 픽셀을 포함하고 현재 노드에 대해 삼항 트리 분할이 사용되거나; 또는 현재 노드가 64 루마 픽셀을 포함하고 이진 트리 분할, 쿼드 트리 분할 또는 삼항 트리 분할이 현재 노드에 사용된다.
(4) 현재 노드는 256 루마 픽셀을 포함하고 노드에 대해 삼항 트리 분할 또는 쿼드 트리 분할이 사용되거나; 또는 현재 노드가 128 루마 픽셀을 포함하고 이진 트리 분할이 노드에 사용된다.
(5) 현재 노드는 N1 루마 픽셀을 포함하고, 삼항 트리 분할은 현재 노드에 사용되며, 여기서 N1은 64, 128 또는 256이다.
(6) 현재 노드는 N2 루마 픽셀을 포함하고 쿼드트리 분할은 현재 노드에 사용되며, 여기서 N2는 64 또는 256이다.
(7) 현재 노드는 N3 루마 픽셀을 포함하고 이진 트리 분할은 현재 노드에 사용되며, 여기서 N3은 64, 128 또는 256이다; 또는
(8) 현재 노드의 면적(또는 폭과 높이의 곱)은 S이고, 여기서 S/2 < th1이고, 현재 노드의 분할 모드는 수직 이진 트리 분할 또는 수평 이진 트리 분할이거나; 또는 현재 노드의 면적(또는 폭과 높이의 곱)이 S이고, 여기서 S/4 < th1이고 현재 노드의 분할 모드는 수직 삼항 트리 분할, 수평 삼항 트리 분할 또는 쿼드 트리 분할이다. 임계값 th1은 64이다.
선택적으로, 제1 미리 설정된 크기를 갖는 루마 블록은 4×4 루마 블록일 수 있다. 제1 미리 설정된 크기를 갖는 루마 블록이 4×4 루마 블록인 경우, 제2 미리 설정된 크기를 갖는 크로마 블록은 2×2 크로마 블록을 제외한 2x4 크로마 블록의 픽셀 크기 또는 4x2 크로마 블록의 픽셀 크기일 수 있다.
선택적으로, 제1 미리 설정된 크기를 갖는 루마 블록은 4x4 루마 블록일 수 있다. 제1 미리 설정된 크기의 루마 블록이 4x4 루마 블록인 경우, 제2 미리 설정된 크기의 크로마 블록은 4x4 루마 블록을 제외한 4x8 루마 블록 또는 8x4 루마 블록일 수 있다.
선택적으로, 제2 미리 설정된 크기를 갖는 크로마 블록이 2x4 크로마 블록, 4x2 크로마 블록, 4x8 루마 블록 또는 8x4 루마 블록인 경우, 크로마 블록이 분할 모드에서 현재 노드를 분할하여 획득된 제2 미리 설정된 크기는 다음 조건 중 하나에 따라 수행될 수 있다:
(1) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 이진 트리 분할이다; 또는
(2) 현재 노드의 루마 블록의 샘플 수는 128이고 분할 모드는 삼항 트리 분할이다.
단계 2042: 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행한다.
현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측이 수행되는지는 다음과 같은 방법에 따라 결정될 수 있다.
방법 1: 현재 노드의 예측 모드 상태 플래그를 파싱한다. 예측 모드 상태 플래그의 값이 제1 값일 때, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측을 수행하거나; 또는 예측 모드 상태 플래그의 값이 제2 값일 때, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행한다.
이 방법에서, 현재 노드에 의해 커버되는 모든 코딩 블록에 사용되는 예측 모드는 실제로 신택스 테이블의 플래그에 기초하여 결정된다. 구체적으로, 예측 모드 상태 플래그 cons_pred_mode_flag는 비트스트림으로부터 파싱된다. cons_pred_mode_flag의 제1 값이 0으로 설정되면 현재 노드를 분할하거나 분할하지 않음으로써 획득되는 모든 코딩 블록에 대해 인터 예측이 수행됨을 나타내고, cons_pred_mode_flag의 제2 값이 1로 설정되면 현재 노드를 분할하거나 분할하지 않음으로써 획득되는 모든 코딩 블록에 대해 인트라 예측이 수행됨을 나타낸다. 선택적으로, cons_pred_mode_flag의 제1 값이 1로 설정되면 현재 노드를 분할하거나 분할하지 않음으로써 획득되는 모든 코딩 블록에 대해 인터 예측이 수행됨을 나타내고, cons_pred_mode_flag의 제2 값이 0으로 설정되면 현재 노드를 분할하거나 분할하지 않음으로써 획득되는 모든 코딩 블록에 대해 인트라 예측이 수행됨을 나타낸다. cons_pred_mode_flag의 의미는 대안적으로 다른 플래그(예를 들어, mode_cons_flag)에 의해 지시될 수 있다. 이것은 이 실시예에서 제한되지 않는다.
cons_pred_mode_flag는 블록 분할 동안 파싱되어야 하는 신택스 요소일 수 있다. 신택스 요소가 파싱될 때, 현재 노드의 커버리지 영역 내 코딩 단위의 코딩 단위 예측 모드 플래그 cu_pred_mode는 더 이상 파싱되지 않을 수 있으며, cu_pred_mode의 값은 cons_pred_mode_flag의 값에 대응하는 디폴트 값이다.
신택스 요소 cons_pred_mode_flag는 다음과 같이 의미론적으로 설명된다: cons_pred_mode_flag의 값이 0일 때, 그것은 현재 노드에 의해 커버되는 코딩 단위에 대해 인터 예측만이 수행됨을 나타내거나; 또는 cons_pred_mode_flag의 값이 1일 때, 그것은 현재 노드가 커버하는 코딩 블록에 대해 인트라 예측만 수행됨을 나타낸다.
현재 노드가 인트라 이미지 영역에 위치하고(즉, 현재 노드가 위치한 이미지 또는 슬라이스(slice_type)의 유형이 인트라 유형 또는 I 유형이다), IBC 모드 사용이 허용되면, cu_pred_mode의 값은 1로 유도되고, cu_pred_mode의 값은 비트스트림을 파싱할 필요 없이 획득된다. 현재 노드가 인트라 이미지 영역에 있지만 IBC 모드를 사용할 수 없으면, cu_pred_mode의 값은 1로 유도되고, cu_skip_flag의 값은 0이며, cu_pred_mode의 값은 비트스트림을 파싱할 필요 없이 얻어진다.
현재 노드가 인터 이미지 영역에 위치하면(즉, 현재 노드가 위치한 이미지 또는 슬라이스(slice_type)의 유형이 인터 유형 또는 B 유형인 경우), cu_pred_mode의 값은 는 0으로 유도되고, cu_pred_mode의 값은 비트스트림을 파싱할 필요 없이 획득된다.
IBC 예측 모드는 IBC 예측의 참조 픽셀이 현재 영상에서 복원된 픽셀이기 때문에 인트라 예측 모드로 간주될 수 있다. 따라서, 본 출원의 이 실시예에서, 인트라 예측은 IBC 모드를 포함할 수 있다. 다시 말해, 본 출원의 이 실시예에서, IBC 모드, 공통 인트라 예측 모드, 또는 IBC 모드 + 공통 인트라 예측 모드가 인트라 예측에 사용될 수 있다. 따라서, 본 출원의 본 실시예에서는 인트라 예측이 논인터 예측인 것으로 결론적으로 이해될 수 있다.
선택적으로, 현재 노드가 위치한 슬라이스의 유형(슬라이스 유형)은 인트라(Intra) 유형이 아니다.
방법 2: 현재 노드에 의해 커버되는 임의의 코딩 블록에 사용되는 예측 모드가 인터 예측인 경우, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측이 수행되거나; 또는 현재 노드에 의해 커버되는 임의의 코딩 블록에 사용되는 예측 모드가 인트라 예측인 경우, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측이 수행된다.
이 방법에서, 현재 노드에 의해 커버되는 모든 코딩 블록에 사용되는 예측 모드는 현재 노드에 의해 커버되는 임의의 코딩 블록에 대해 사용되는 예측 모드에 기초하여 실제로 결정된다.
선택적으로, 임의의 코딩 블록은 디코딩 순서에서 현재 노드에 의해 커버되는 모든 코딩 블록의 제1 코딩 블록이다. 구체적으로, 현재 노드의 영역에서 제1 코딩 블록(B0)의 예측 모드가 파싱되고, 제1 코딩 블록(B0)의 예측 모드가 본 실시예에서 제한되지 않는다. 파싱을 통해 코딩 블록 B0의 예측 모드가 인트라 예측임을 알게 되면 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측을 수행한다. 파싱을 통해 코딩 블록(B0)의 예측 모드가 인터 예측임을 알게 되면 현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측을 수행한다.
전술한 방법 1 및 방법 2에 따라 수행되는 단계들은 도 8에 도시된 비디오 디코더(24)에 대해 사용될 수 있음을 주목해야 한다.
단계 2043: 현재 노드에 의해 커버되는 모든 코딩 블록에 사용되는 예측 모드가 제한되지 않는 현재 노드의 분할 모드에서 현재 노드를 분할한다.
선택적으로, 단계 203 또는 단계 2042 또는 단계 2043 후에, 방법은 다음 단계를 더 포함한다.
단계 205: 현재 노드에 의해 커버되는 모든 코딩 블록의 예측 블록 및 잔여 정보를 파싱한다.
단계 206: 각 코딩 블록을 디코딩하여 현재 노드에 대응하는 이미지 블록의 복원 신호를 획득한다.
이 실시예의 단계 205 및 단계 206은 도 9에 도시된 실시예의 단계 105 및 단계 106과 동일하다. 자세한 내용은 전술한 실시예를 참조한다. 자세한 내용은 여기에서 다시 설명되지 않는다.
이 실시예에서 제공되는 이미지 예측 방법에 따르면, 현재 노드의 분할 모드가 획득되고; 루마 블록의 분할 모드에서 현재 노드를 분할하여 미리 설정된 제1 크기를 갖는 루마 블록이 획득되는지는 현재 노드의 크기 및 루마 블록의 분할 모드에 기초하여 결정되고; 제1 미리 설정된 크기의 루마 블록이 루마 블록의 분할 모드에서 현재 노드를 분할하여 획득된 것으로 결정되면, 크로마 블록의 분할 모드에서 현재 노드를 분할하여 미리 설정된 제2 크기를 갖는 크로마 블록이 획득되는지가 추가로 결정되고, 크로마 블록의 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록이 획득된 것으로 결정되면, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행한다. 전술한 방법에 따르면 현재 노드의 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행함으로써 현재 노드의 모든 코딩 블록에 대한 병렬 처리를 구현할 수 있다. 이것은 영상 예측의 처리 성능을 향상시키고 코딩 처리 속도를 증가시킨다.
다음은 2개의 특정 예를 참조하여, 도 11에 도시된 실시예에서 제공되는 이미지 예측 방법을 설명한다.
제1 예는 YUV 4:2:0 또는 YUV 4:2:2의 비디오 데이터 포맷에 적용할 수 있거나 YUV 4:2:0의 비디오 데이터 포맷에만 적용할 수 있다.
이 예에서의 이미지 예측 방법은 다음 단계를 포함한다.
단계 1: 현재 노드의 분할 모드를 획득한다.
단계 2: 현재 노드의 영역과 현재 노드의 분할 모드가 다음 조건 A 중 적어도 하나의 조건을 만족하는지를 결정한다.
(1) 현재 노드의 면적은 32이고 현재 노드의 분할 모드는 수직 이진 트리 분할 또는 수평 이진 트리 분할이다; 또는
(2) 현재 노드의 면적은 64이고 현재 노드의 분할 모드는 수직 삼항 트리 분할, 수평 삼항 트리 분할 또는 쿼드 트리 분할이다.
현재 노드의 면적과 현재 노드의 분할 모드가 조건 A 중 적어도 하나의 조건을 만족하는 경우, 단계 3이 수행된다.
단계 3: 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측이 수행되도록 제한한다.
선택적으로, cons_pred_mode_flag의 값은 1로 설정된다.
현재 노드의 면적과 현재 노드의 분할 모드가 조건 A를 만족하지 않으면 4단계로 진행한다.
단계 4: 현재 노드의 영역과 현재 노드의 분할 모드가 다음 조건 B 중 적어도 하나의 조건을 만족하는지를 결정한다.
(1) 현재 노드의 영역 S는 S/2 < th1을 만족하고 현재 노드의 분할 모드는 수직 이진 트리 분할 또는 수평 이진 트리 분할이다; 또는
(2) 현재 노드의 영역 S는 S/4 < th1을 만족하고, 현재 노드의 분할 모드는 수직 삼항 트리 분할, 수평 삼항 트리 분할 또는 쿼드 트리 분할이다.
임계값 th1은 비디오 데이터 포맷과 관련된다. 예를 들어, 비디오 데이터 포맷이 YUV 4:2:0인 경우 임계값 th1은 64이거나; 또는 비디오 데이터 포맷이 YUV 4:2:2인 경우 임계값 th1은 32이다.
현재 노드의 영역과 현재 노드의 분할 모드가 조건 B 중 적어도 하나의 조건을 만족하는 경우, 단계 5가 수행된다.
단계 5: 비트스트림으로부터 플래그 cons_pred_mode_flag를 파싱하고, cons_pred_mode_flag의 값에 기초하여, 인터 예측 또는 인트라 예측이 현재 노드의 커버리지 영역의 모든 코딩 단위에 대해 수행되는지 결정한다.
현재 노드의 면적과 현재 노드의 분할 모드가 조건 B를 만족하지 않는 경우, 단계 6이 수행된다.
단계 6: 현재 노드에 의해 커버되는 모든 코딩 블록에 사용되는 예측 모드가 제한되지 않는 현재 노드의 분할 모드에서 현재 노드를 분할한다.
선택적으로, 단계 6 이후에, 방법은 다음 단계를 더 포함한다.
단계 7: 현재 노드에 의해 커버되는 모든 코딩 블록의 예측 블록 및 잔여 정보를 파싱한다.
단계 8: 각 코딩 블록을 디코딩하여 현재 노드에 대응하는 이미지 블록의 복원 신호를 획득한다.
제2 예는 YUV 4:2:0의 비디오 데이터 포맷에 적용할 수 있다.
이 예에서 이미지 예측 방법은 다음 단계를 포함한다.
단계 1: 현재 노드의 분할 모드를 획득한다.
단계 2: 현재 노드의 영역과 현재 노드의 분할 모드가 조건 C를 만족하는지를 결정한다.
현재 노드의 면적은 64이고 현재 노드의 분할 모드는 수평 삼항 트리 분할, 수직 삼항 트리 분할 또는 쿼드 트리 분할이다.
현재 노드의 면적과 현재 노드의 분할 모드가 조건 C를 만족하는 경우, 단계 3이 수행된다.
단계 3: 현재 노드의 커버리지 영역에 있는 모든 코딩 단위에 대해 인트라 예측이 수행된다.
선택적으로, cons_pred_mode_flag의 값은 1로 설정된다.
현재 노드의 면적과 현재 노드의 분할 모드가 조건 C를 만족하지 않으면 4단계로 진행한다.
단계 4: 현재 노드의 영역과 현재 노드의 분할 모드가 다음 조건 D 중 적어도 하나의 조건을 만족하는지를 결정한다.
(1) 현재 노드의 면적은 64이고 현재 노드의 분할 모드는 수평 이진 트리 분할 또는 수직 이진 트리 분할이다; 또는
(2) 현재 노드의 면적은 128이고, 현재 노드의 분할 모드는 수평 삼항 트리 분할 또는 수직 삼항 트리 분할이다.
현재 노드의 면적 및 현재 노드의 분할 모드가 조건 D 중 적어도 하나의 조건을 만족하는 경우, 단계 5가 수행된다.
단계 5: 비트스트림으로부터 플래그 cons_pred_mode_flag를 파싱하고, cons_pred_mode_flag의 값에 기초하여, 인터 예측 또는 인트라 예측이 현재 노드의 커버리지 영역 내의 모든 코딩 단위에 대해 수행되는지 결정한다.
현재 노드의 면적과 현재 노드의 분할 모드가 조건 D를 만족하지 않으면 6단계로 진행한다.
단계 6: 현재 노드에 의해 커버되는 모든 코딩 블록에 사용되는 예측 모드가 제한되지 않는 현재 노드의 분할 모드에서 현재 노드를 분할한다.
선택적으로, 단계 6 이후에, 방법은 다음 단계를 더 포함한다.
단계 7: 현재 노드에 의해 커버되는 모든 코딩 블록의 예측 블록 및 잔여 정보를 파싱한다.
단계 8: 각 코딩 블록을 디코딩하여 현재 노드에 대응하는 이미지 블록의 복원 신호를 획득한다.
도 12는 본 출원의 실시예에 따른 제4 이미지 예측 방법의 개략적인 흐름도이다. 도 12에 도시된 바와 같이, 본 실시예에서 제공되는 이미지 예측 방법은 다음 단계를 포함한다.
단계 301: 현재 노드의 분할 모드를 획득한다.
구체적으로, 현재 노드의 분할 정보를 파싱한다. 분할 정보가 현재 노드의 크로마 블록을 분할하도록 지시하는 경우, 현재 노드의 크로마 블록의 분할 모드가 더 결정된다. 크로마 블록의 분할 모드는 쿼드 트리 분할, 수직 이진 트리 분할, 수평 이진 트리 분할, 수직 삼항 트리 분할 및 수평 삼항 트리 분할 중 적어도 하나를 포함한다. 물론 다른 분할 모드가 있을 수 있다. 이것은 본 실시예에서 특별히 제한되지 않는다.
단계 302: 현재 노드의 크기 및 현재 노드의 분할 모드에 기초하여, 분할 모드에서 현재 노드를 분할함으로써 제2 미리 설정된 크기를 갖는 크로마 블록이 획득되는지를 결정한다.
분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록이 획득된 것으로 결정되면, 단계 303이 수행된다. 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록이 획득되지 않은 것으로 결정되면, 단계 304가 수행된다.
이 실시예의 단계 302는 도 11에 도시된 실시예의 단계 2041과 동일하다. 자세한 내용은 전술한 실시예를 참조한다. 자세한 내용은 여기에서 다시 설명되지 않는다.
선택적으로, 단계 302는 현재 노드의 크기 및 현재 노드의 분할 모드에 기초하여, 분할 모드에서 현재 노드를 분할함으로써 제3 사전 설정된 크기를 갖는 루마 블록이 획득되는지를 결정하는 단계를 포함할 수 있다.
선택적으로, 제3 미리 설정된 크기를 갖는 루마 블록은 4x4, 4x8, 또는 8x4 루마 블록일 수 있다.
선택적으로, 분할 모드에서 현재 노드를 분할함으로써 제2 미리 설정된 크기를 갖는 크로마 블록이 획득되는지를 결정하는 것은 다음 조건 중 하나에 기초하여 수행될 수 있다:
(1) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 쿼드 트리 분할이다.
(2) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 삼항 트리 분할이다.
(3) 현재 노드의 루마 블록의 샘플 수는 32이고 분할 모드는 이진 트리 분할이다.
(4) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 이진 트리 분할이다; 또는
(5) 현재 노드의 루마 블록의 샘플 수는 128이고 분할 모드는 삼항 트리 분할이다.
선택적으로, 제2 미리 설정된 크기를 갖는 크로마 블록은 2x2의 픽셀 크기를 갖는 크로마 블록을 제외하고 2x4 또는 4x2의 픽셀 크기를 갖는 크로마 블록일 수 있다. 유사하게, 제3 미리 설정된 크기를 갖는 루마 블록은 4x4의 픽셀 크기를 갖는 루마 블록을 제외하고 4x8 또는 8x4의 픽셀 크기를 갖는 루마 블록일 수 있다. 이에 대응하여, 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록을 획득하는지를 결정하는 것은 다음 조건 중 하나에 기초하여 수행될 수 있다.
(1) 현재 노드의 루마 블록의 샘플 수는 64이고 분할 모드는 이진 트리 분할이다; 또는
(2) 현재 노드의 루마 블록의 샘플 수는 128이고 분할 모드는 삼항 트리 분할이다.
단계 303: 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행한다.
현재 노드에 의해 커버되는 모든 코딩 블록들에 대해 인트라 예측 또는 인터 예측이 수행되는지는 도 11에 도시된 실시예의 단계 2042에 기초하여 결정될 수 있다. 자세한 내용은 전술한 실시예를 참조한다. 자세한 내용은 여기에서 다시 설명되지 않는다.
단계 304: 현재 노드의 분할 모드에서 현재 노드를 분할하며, 여기서 현재 노드에 의해 커버되는 모든 코딩 블록에 사용되는 예측 모드는 제한되지 않는다.
이 실시예의 단계 304는 도 9에 도시된 실시예의 단계 104와 동일하다. 자세한 내용은 전술한 실시예를 참조한다. 자세한 내용은 여기에서 다시 설명되지 않는다.
선택적으로, 단계 303 또는 단계 304 후에, 방법은 다음 단계를 더 포함한다.
단계 305: 현재 노드에 의해 커버되는 모든 코딩 블록의 예측 블록 및 잔여 정보를 파싱한다.
단계 306: 각 코딩 블록을 디코딩하여 현재 노드에 대응하는 이미지 블록의 복원 신호를 획득한다.
이 실시예의 단계 305 및 단계 306은 도 9에 도시된 실시예의 단계 105 및 단계 106과 동일하다. 자세한 내용은 전술한 실시예를 참조한다. 자세한 내용은 여기에서 다시 설명되지 않는다.
본 실시예에서 제공되는 이미지 예측 방법에 따르면, 현재 노드의 분할 모드가 획득되고, 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기를 갖는 크로마 블록이 획득되는지는 현재 노드의 크기 및 현재 노드의 분할 모드에 기초하여 결정되며; 그리고 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록이 획득된 것으로 결정되면, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행한다. 전술한 방법에 따르면 현재 노드의 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행함으로써 현재 노드의 모든 코딩 블록에 대한 병렬 처리를 구현할 수 있다. 이것은 영상 예측의 처리 성능을 향상시키고 코딩 처리 속도를 증가시킨다.
도 13은 본 출원의 실시예에 따른 제5 이미지 예측 방법의 개략적인 흐름도이다. 도 12에 도시된 실시예를 기반으로, 도 13에 도시된 바와 같이, 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록이 획득된 것으로 결정되면, 단계 304는 다음 단계를 포함할 수 있다.
단계 3041: 분할 모드에서 현재 노드를 분할함으로써 제1 미리 설정된 크기를 갖는 루마 블록이 획득되는지를 결정한다.
분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기를 갖는 루마 블록이 획득된 것으로 결정되면, 단계 3042가 수행된다. 분할 모드에서 현재 노드를 분할하여 미리 설정된 제1 크기의 루마 블록이 획득되지 않은 것으로 결정되면, 단계 3043이 수행된다.
구체적으로, 현재 노드의 크기 및 루마 블록의 분할 모드에 기초하여, 제1 미리 설정된 크기를 갖는 루마 블록이 루마 블록의 분할 모드에서 현재 노드를 분할함으로써 획득되는지가 결정된다. 제1 미리 설정된 크기를 갖는 루마 블록은 4×4의 픽셀 크기를 갖는 루마 블록이다. 구체적인 결정 과정은 도 10에 도시된 실시예의 단계 202와 동일하고, 전술한 실시예를 참조할 수 있다. 자세한 내용은 여기에서 다시 설명되지 않는다.
단계 3042: 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행한다.
단계 3043: 현재 노드에 의해 커버되는 모든 코딩 블록에 사용되는 예측 모드가 제한되지 않는 현재 노드의 분할 모드에서 현재 노드를 분할한다.
선택적으로, 단계 303 또는 단계 3042 또는 단계 3043 후에, 방법은 다음 단계를 더 포함한다.
단계 305: 현재 노드에 의해 커버되는 모든 코딩 블록의 예측 블록 및 잔여 정보를 파싱한다.
단계 306: 각 코딩 블록을 디코딩하여 현재 노드에 대응하는 이미지 블록의 복원 신호를 획득한다.
이 실시예의 단계 305 및 단계 306은 도 9에 도시된 실시예의 단계 105 및 단계 106과 동일하다. 자세한 내용은 전술한 실시예를 참조한다. 자세한 내용은 여기에서 다시 설명되지 않는다.
이 실시예에서 제공되는 이미지 예측 방법에 따르면, 현재 노드의 분할 모드가 획득되고; 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록을 획득하는지는 현재 노드의 크기 및 현재 노드의 분할 모드에 기초하여 결정되고; 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기를 갖는 크로마 블록이 획득되지 않은 것으로 결정되는 경우, 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기를 갖는 루마 블록이 획득되는지를 추가로 결정하고; 분할 모드에서 현재 노드를 분할하여 미리 설정된 제1 크기의 루마 블록이 획득된 것으로 결정되는 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측이 수행된다. 전술한 방법에 따르면 현재 노드의 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행함으로써 현재 노드의 모든 코딩 블록에 대한 병렬 처리를 구현할 수 있다. 이것은 영상 예측의 처리 성능을 향상시키고 코딩 처리 속도를 증가시킨다.
도 14는 본 출원의 일 실시예에 따른 제6 이미지 예측 방법의 개략적인 흐름도이다. 본 실시예에서 제공되는 이미지 예측 방법은 도 8에 도시된 바와 같은 비디오 인코더(18)에 사용된다. 도 14에 도시된 바와 같이, 이 실시예의 방법은 다음 단계를 포함한다.
단계 401: 현재 노드의 분할 모드를 획득한다.
현재 노드가 위치한 슬라이스(slice)의 종류는 B형 또는 P형이다. 현재 노드가 위치한 슬라이스(slice)의 유형이 I 유형인 경우, 디폴트로 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측이 수행되어야 함을 이해해야 한다.
디코더 측은 비트스트림을 파싱하거나 획득된 파라미터에 기초하여 현재 노드의 분할 모드를 획득할 수 있다.
인코더 측에서는 일반적으로 먼저 현재 노드에 허용되는 분할 모드를 결정한 다음, 비율 왜곡 최적화(Rate-distortion Optimization, RDO) 방법에 따라 현재 노드의 분할 모드로 최적 분할 모드를 결정한다. 이 단계는 종래 기술에 속하므로 여기서는 상세한 설명을 생략한다.
단계 402: 현재 노드의 크기 및 현재 노드의 분할 모드가 제1 미리 설정된 조건 중 하나의 조건을 만족하는지를 결정한다.
제1 미리 설정된 조건은 다음을 포함할 수 있다:
(1) 현재 노드의 루마 블록의 샘플 수는 64이고 현재 노드의 분할 모드는 쿼드 트리 분할이다;
(2) 현재 노드의 루마 블록의 샘플 수는 64이고 현재 노드의 분할 모드는 삼항 트리 분할이다; 또는
(3) 현재 노드의 루마 블록의 샘플 수는 32이고 현재 노드의 분할 모드는 이진 트리 분할이다.
현재 노드의 루마 블록의 샘플의 수량은 현재 노드에 대응하는 이미지 블록의 루마 픽셀의 수량(픽셀 크기)이다. 샘플의 수량은 현재 노드의 폭과 높이의 곱으로 얻을 수 있다.
다른 구현에서, 제1 사전설정 조건은 다음 조건(4)을 더 포함한다:
(4) 분할 모드에서 현재 노드를 분할하여 미리 설정된 크기의 루마 블록을 획득한다. 여기서 미리 설정된 크기는 4×4 또는 8×8이다.
하나의 조건이 제1 미리 설정된 조건이 만족된다.
이 단계에서, 현재 노드의 크기 및 현재 노드의 분할 모드가 제1 미리 설정된 조건 중 하나의 조건을 만족하는 경우, 단계 403이 수행된다. 현재 노드의 크기 및 현재 노드의 분할 모드가 제1 미리 설정된 조건 중 어느 것도 만족하지 않는 경우, 단계 404가 수행된다.
단계 403: 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행한다.
선택적으로, 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측이 수행되는 것으로 결정될 때, mode_constraint_flag의 값은 비트스트림에 기록될 필요가 없고, mode_constraint_flag의 값은 1로 설정될 수 있다. 상응하게, 디코더 측도 동일한 방법에 따라 mode_constraint_flag의 값이 1임을 유도할 수 있다.
단계 404: 현재 노드의 크기 및 현재 노드의 분할 모드가 제2 미리 설정된 조건 중 하나의 조건을 만족하는지를 결정한다.
제2 미리 설정된 조건은 다음을 포함한다:
(1) 현재 노드의 루마 블록의 샘플 수는 64이고 현재 노드의 분할 모드는 수직 이진 트리 분할 또는 수평 이진 트리 분할이다; 또는
(2) 현재 노드의 루마 블록의 샘플 수는 128이고 현재 노드의 분할 모드는 수직 삼항 트리 분할 또는 수평 삼항 트리 분할이다.
다른 구현에서, 제2 미리 설정된 조건은 다음 조건 (3)을 더 포함한다:
(3) 분할 모드에서 현재 노드를 분할하여 미리 설정된 크기의 크로마 블록을 획득한다. 여기서 미리 설정된 크기는 2×4 또는 4×2이다.
이 단계에서, 현재 노드의 크기 및 현재 노드의 분할 모드가 제2 미리 설정된 조건 중 하나의 조건을 만족하는 경우, 단계 405가 수행된다. 현재 노드의 크기 및 현재 노드의 분할 모드가 제2 미리 설정된 조건 중 어느 것도 만족하지 않는 경우, 단계 406이 수행된다.
단계 405: 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행한다.
이 실시예에서, 현재 노드의 모든 코딩 블록에 사용되는 예측 모드는 다음 몇 가지 방식으로 결정될 수 있다.
구현에서, 현재 노드가 위치한 영상 또는 슬라이스(slice)의 유형이 I 유형인 경우, 인코더 또는 인코더 측에서는 인트라 예측(논인터 예측)만 적용 가능하다고 결정한다. 현재 노드의 모든 코딩 블록에 선택적으로 인코더 또는 인코더 측에서는 mode_constraint_flag를 비트스트림에 기록할 필요가 없으며 mode_constraint_flag의 값을 1로 설정할 수 있다.
현재 노드가 위치한 영상 또는 슬라이스(slice)의 유형이 I 유형이 아닌 경우, 인코더 또는 인코더 측에서는 비율 왜곡 최적화(Rate-distortion Optimization, RDO) 방법 또는 다른 방법에 따라 mode_constraint_flag의 값을 결정한다.
RDO 방법은 구체적으로 다음과 같다: 인코더는 현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측 및 인트라 예측을 수행하는 경우에 발생하는 비율 왜곡 비용(RD 비용)을 별도로 계산하고, 두 가지 예측 모드의 경우에 발생하는 비율 왜곡 비용의 값을 비교하며, 비율-왜곡 비용이 더 적은 예측 모드를 최종 예측 모드로 결정한다. 비율 왜곡 비용이 더 적은 예측 모드가 인트라 예측이면 인코더는 mode_constraint_flag의 값을 1로 설정하고, 비율 왜곡 비용이 더 적은 예측 모드가 인터 예측이면 인코더는 mode_constraint_flag의 값을 0으로 설정하고, 그리고 mode_constraint_flag의 값을 비트스트림에 기록한다.
예를 들어, 인코더는 현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측을 수행하는 경우에 발생하는 RD 비용을 먼저 계산한 다음, 인트라 예측을 수행하는 경우에 발생하는 RD 비용을 계산한다. 현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측을 수행한 경우(예를 들어, 스킵 모드를 사용하는 경우) 잔여가 없다면, 인코더는 현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측이 수행되는 것으로 결정하고, node, mode_constraint_flag의 값을 0으로 설정하고, 인트라 예측의 경우에 발생하는 RD 비용을 계산할 필요가 없다. 인코더는 대안적으로 현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측을 수행하는 경우에 생성된 RD 비용을 먼저 계산한 다음 인터 예측을 수행하는 경우에 생성된 RD 비용을 계산하고 더 작은 RD 비용을 갖는 예측 모드를 최종 예측 모드로서 결정할 수 있다.
현재 노드가 인트라 이미지 영역에 위치하고(즉, 현재 노드가 위치한 이미지 또는 슬라이스(slice_type)의 유형이 인트라 유형 또는 I 유형이고), IBC 모드 사용이 허용되면, pred_mode_flag의 값은 디폴트로 1이다. 현재 노드가 인트라 이미지 영역에 있지만 IBC 모드를 사용할 수 없는 경우, pred_mode_flag의 값은 디폴트로 1이고 cu_skip_flag의 값은 디폴트로 0이다(현재 블록의 경우 스킵 모드를 사용하지 않음을 나타냄). 현재 노드가 인트라 이미지 영역에 위치하는 경우(즉, 현재 노드가 위치하는 이미지 또는 슬라이스(slice_type)의 유형이 인트라 유형 또는 I 유형인 경우), mode_constraint_flag의 값은 디폴트로 1이다.
구현에서, 디코더 측 또는 디코더는 현재 노드의 예측 모드 상태 플래그(mode_constraint_flag)를 파싱할 수 있고; 예측 모드 상태 플래그의 값이 제1 값일 때 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측을 수행하거나; 또는 예측 모드 상태 플래그의 값이 제2 값일 때 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행한다.
단계 406: 현재 노드의 분할 모드에서 현재 노드를 분할하며, 여기서 현재 노드에 의해 커버되는 모든 코딩 블록에 사용되는 예측 모드는 제한되지 않는다.
선택적으로, 단계 403, 단계 405 또는 단계 406 후에, 방법은 다음 단계를 더 포함할 수 있다.
단계 407: 현재 노드의 예측 모드에 기초하여, 현재 노드의 루마 블록과 크로마 블록이 더 분할되는지를 결정한다.
현재 노드의 모든 코딩 블록에 대해 인트라 예측만 수행되는 것으로 결정되면, 현재 노드에 포함된 루마 블록을 분할 모드로 분할하여 분할을 통해 획득된 루마 블록을 획득하고, 인트라 예측은 분할을 통해 얻은 루마 블록에 대해 수행된다. 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 크로마 코딩 블록에 대해 인트라 예측을 수행한다. 다시 말해, 현재 노드의 모든 코딩 블록에 대해 인트라 예측이 수행되는 것으로 결정되면, 현재 노드의 루마 블록을 루마 블록의 분할 모드로 분할하여 N 개의 루마 코딩 트리 노드를 획득하고; 현재 노드의 크로마 블록은 분할되지 않아 하나의 크로마 코딩 블록(크로마 CB로 약칭)을 획득한다. N 개의 루마 코딩 트리 노드가 더 분할되지 않거나 제한되지 않는 것이 제한될 수 있다. 루마 코딩 트리 노드가 더 분할되면, 루마 코딩 트리 노드의 분할 모드가 재귀 분할을 위해 파싱된다. 루마 코딩 트리 노드가 더 분할되지 않을 때, 루마 코딩 트리 노드는 하나의 루마 코딩 블록(루마 CB로 약칭)에 대응한다. 인트라 예측은 루마 CB에 대해 수행되어 루마 CB에 대응하는 루마 예측 블록을 획득한다. 크로마 CB에 대해 인트라 예측을 수행하여 크로마 CB에 대응하는 크로마 예측 블록을 얻는다. 크로마 예측 블록과 크로마 CB는 동일한 크기를 갖는다.
현재 노드의 모든 코딩 블록에 대해 인트라 예측만이 수행되는 것으로 결정될 때, 다른 구현에서, 현재 노드에 포함된 루마 블록 및 크로마 블록은 분할 모드에서 분할되어 분할을 통해 얻은 노드를 획득한다. 코딩 트리 노드가 더 분할되지 않는 경우, 코딩 트리 노드는 하나의 코딩 단위에 대응하며 루마 코딩 단위 및 크로마 코딩 단위를 포함한다. 인트라 예측은 루마 코딩 단위 및 크로마 코딩 단위에 대해 수행되며, 여기서 루마 코딩 단위 및 크로마 코딩 단위는 분할을 통해 획득된다.
현재 노드의 모든 코딩 블록에 대해 인터 예측만 수행되는 것으로 결정되는 경우, 구현에서 현재 노드에 포함된 루마 블록을 분할 모드에서 분할하여 분할을 통해 획득된 루마 블록을 획득하고, 분할을 통해 획득된 루마 블록에 대해 인터 예측이 수행되고; 현재 노드에 포함된 크로마 블록을 분할 모드로 분할하여 분할을 통해 얻은 크로마 블록을 획득하고, 분할을 통해 얻은 크로마 블록에 대해 인터 예측을 수행한다. 다시 말해, 현재 노드의 모든 코딩 블록에 대해 인터 예측이 수행되는 것으로 결정되면, 현재 노드의 루마 블록을 루마 블록의 분할 모드로 분할하여 N 개의 루마 코딩 트리 노드를 획득하고; 현재 노드의 크로마 블록은 크로마 블록의 분할 모드에서 분할되어 M 개의 크로마 코딩 트리 노드를 획득한다. N 및 M은 양의 정수이고, N 및 M은 동일하거나 상이할 수 있다. N 개의 루마 코딩 트리 노드와 M 개의 크로마 코딩 트리 노드가 더 분할되지 않거나 제한되지 않는 것이 제한될 수 있다. 더 이상의 분할이 수행되지 않을 때, N 개의 루마 코딩 트리 노드는 현재 노드의 N 개의 루마 CB에 대응하고 M 크로마 코딩 트리 노드는 현재 노드의 M 크로마 CB에 대응한다. N 개의 루마 CB에 대해 인터 예측을 수행하여 대응하는 루마 예측 블록을 획득하고, M 개의 크로마 CB에 대해 인터 예측을 수행하여 대응하는 크로마 예측 블록을 획득한다.
현재 노드의 모든 코딩 블록에 대해 인터 예측만 수행되는 것으로 결정되는 경우, 구현에서 현재 노드에 포함된 루마 블록을 분할 모드에서 분할하여 분할을 통해 획득된 루마 블록을 획득하고, 분할을 통해 획득된 루마 블록에 대해 인터 예측이 수행되고; 현재 노드에 포함된 크로마 블록을 분할 모드로 분할하여 분할을 통해 얻은 크로마 블록을 획득하고, 분할을 통해 얻은 크로마 블록에 대해 인터 예측을 수행한다. 다시 말해, 현재 노드의 모든 코딩 블록에 대해 인터 예측이 수행되는 것으로 결정되면, 현재 노드의 루마 블록을 루마 블록의 분할 모드로 분할하여 N 개의 루마 코딩 트리 노드를 획득하고; 현재 노드의 크로마 블록은 크로마 블록의 분할 모드에서 분할되어 M 개의 크로마 코딩 트리 노드를 획득한다. N 및 M은 양의 정수이고, N 및 M은 동일하거나 상이할 수 있다. N 개의 루마 코딩 트리 노드와 M 개의 크로마 코딩 트리 노드가 더 분할되지 않거나 제한되지 않는 것이 제한될 수 있다. 더 이상의 분할이 수행되지 않을 때, N 개의 루마 코딩 트리 노드는 현재 노드의 N 개의 루마 CB에 대응하고 M 크로마 코딩 트리 노드는 현재 노드의 M 크로마 CB에 대응한다. N 개의 루마 CB에 대해 인터 예측을 수행하여 대응하는 루마 예측 블록을 획득하고, M 개의 크로마 CB에 대해 인터 예측을 수행하여 대응하는 크로마 예측 블록을 획득한다.
특히, 현재 노드의 모든 코딩 블록에 대해 인터 예측만 수행되는 경우, 분할 모드에서 현재 노드를 분할하여 자식 노드를 획득하고, 자식 노드를 더 분할해야 하며, 미리 설정된 크기는 자식 노드의 분할 모드에서 분할을 통해 획득한다. 예를 들어 미리 설정된 크기가 4×4(즉, 폭과 높이가 모두 4)인 경우 자식 노드의 분할 모드는 허용되지 않거나 또는 자식 노드는 더 이상 분할할 수 없다. 구체적으로, 노드에 대해 인터 예측만 수행하도록 제한하고 노드의 루마 샘플 수가 32개(또는 노드의 폭과 높이의 곱이 32개)인 경우 이진 트리 분할(수평 포함 이진 트리 분할 또는 수직 이진 트리 분할)은 노드에 허용되지 않는다. 노드에 대해 인터 예측만 수행하도록 제한되고 노드의 루마 샘플 수가 64개(또는 노드의 폭과 높이의 곱이 64개)인 경우 삼항 트리 분할(수평 삼항 트리 포함) 분할 또는 수직 삼항 트리 분할)은 노드에 허용되지 않는다. 이러한 결정 방법은 YUV 4:2:0 및 YUV 4:2:2의 비디오 데이터 포맷 모두에 적용 가능하다.
예를 들어, 현재 노드의 크기가 8x8이고 수평 이진 트리 분할(또는 수직 이진 트리 분할)을 통해 2개의 8x4(또는 4x8) 노드가 생성되면 8×4(또는 4×8) 노드가 더 분할되는 경우 4x4 블록이 생성된다. 이 경우 수직 이진 트리 분할(또는 수평 이진 트리 분할)은 8×4(또는 4×8) 노드에 대해 허용되지 않거나 8×4(또는 4×8) 노드에 대해 추가 분할이 허용되지 않는다. 다른 예로, 현재 노드의 루마 블록의 샘플 개수가 128개이고 분할 모드가 수평 삼항 트리 분할 또는 수직 삼항 트리 분할인 경우, 루마 블록의 샘플 개수는 64를 얻을 수 있다. 그러나 64개의 샘플 수를 갖는 루마 노드에 대해 자식 노드에 대한 수평 삼항 트리 분할 또는 수직 삼항 트리 분할을 사용하면 4×4 루마 블록이 얻어진다. 따라서 인터 예측만 수행하도록 제한하는 경우 샘플 수량이 64개인 노드에 대해 수평 삼항 트리 분할 또는 수직 삼항 트리 분할이 허용되지 않거나 또는 샘플 수량이 64개인 노드는 추가 분할되도록 허용되지 않는다.
단계 408: 현재 노드를 분할함으로써 획득된 CU의 코딩 블록을 예측하여 코딩 블록의 예측자를 획득한다.
현재 노드의 모든 코딩 블록에 대해 인트라 예측만 수행되는 경우 인코더 또는 인코더 측에서는 비율 왜곡 최적화(Rate-distortion Optimization, RDO) 방법 또는 다른 방법에 따라 최적의 인트라를 결정한다. 현재 코딩 블록에 사용되는 예측 모드; 현재 블록의 예측자를 획득하기 위해 대응하는 인트라 예측 모드를 사용하여 현재 코딩 블록을 예측한다.
현재 노드의 모든 코딩 블록에 대해 인터 예측만 수행되는 경우, 인코더 또는 인코더 측은 비율 왜곡 최적화 방법 또는 다른 방법에 따라 현재 코딩 블록에 사용되는 최적 인터 예측 모드를 결정하며; 현재 블록의 예측자를 획득하기 위해 대응하는 인터 예측 모드를 사용하여 현재 코딩 블록을 예측한다.
또한, 인코더는 CU 깊이 관련 신택스 요소에 값을 할당하고, CU 레벨 신택스 정의에 대한 기준에 따라 각 신택스 요소의 값을 비트스트림에 기록한다. 예를 들어, 현재 노드의 모든 코딩 블록에 대해 인트라 예측만 수행된다면 pred_mode_flag의 값은 1로 설정되고 pred_mode_flag는 비트스트림에 기록되지 않는다. 다시 말해, pred_mode_flag가 비트스트림에 존재하지 않는다. 현재 노드의 모든 코딩 블록에 대해 인트라 예측만 수행하고 IBC 모드를 사용하지 않는 것으로 결정되면 cu_skip_flag(또는 skip_flag)의 값은 0이고 cu_skip_flag는 비트스트림에 기록되지 않는다. 그렇지 않으면 cu_skip_flag의 값이 결정된 후 cu_skip_flag를 비트스트림에 기록하여 디코더 측에 전송해야 한다.
현재 노드의 모든 코딩 블록에 대해 인터 예측만 수행된다면 pred_mode_flag의 값은 0으로 설정되고 pred_mode_flag는 비트스트림에 기록되지 않는다. 즉, pred_mode_flag가 비트스트림에 존재하지 않는다. pred_mode_ibc_flag의 값이 0으로 설정되면 pred_mode_ibc_flag가 비트스트림에 기록되지 않고, 즉 pred_mode_ibc_flag가 비트스트림에 존재하지 않는다.
현재 노드의 모든 코딩 블록에 대해 인트라 예측만 수행되는 경우, 디코더 또는 디코더 측은 비트스트림을 파싱하거나 획득한 파라미터에 기초하여 현재 코딩 블록에 사용되는 최적의 인트라 예측 모드를 결정할 수 있고; 현재 블록의 예측자를 획득하기 위해 대응하는 인트라 예측 모드를 사용하여 현재 코딩 블록을 예측하도록 구성된다.
현재 노드의 모든 코딩 블록에 대해 인터 예측만 수행되는 경우, 디코더 또는 디코더 측은 비트스트림을 파싱하거나 획득한 파라미터에 기초하여 현재 코딩 블록에 사용되는 최적 인터 예측 모드를 결정할 수 있고; 현재 블록의 예측자를 획득하기 위해 대응하는 인터 예측 모드를 사용하여 현재 코딩 블록을 예측하도록 구성된다.
단계 409: 현재 노드에서 이미지 블록의 복원 신호를 획득한다.
인트라 예측 또는 인터 예측을 통해 예측 정보를 획득한 후, 인코더 또는 인코더 측에서는 현재 코딩 블록의 픽셀의 픽셀 값에서 해당 예측 정보(또는 예측자)를 빼서 잔여 정보를 획득하고 잔여를 변환한다. 이산 코사인 변환(Discrete Cosine Transformation, DCT)과 같은 방법을 사용하여 정보를 양자화 및 엔트로피 인코딩을 통해 비트스트림을 획득하고 나머지 정보를 디코더 측으로 전송한다. 예측 신호와 재구성된 잔여 신호를 추가한 후, 인코더 측에서는 필터링 동작을 더 수행하여 복원 신호를 획득하고 복원 신호를 후속 인코딩을 위한 참조 신호로 사용할 필요가 있다. 특히, 코딩 블록에 대해 스킵 모드를 사용하는 경우, 잔여 정보가 없고 인코더 측에서 예측자가 최종 재구성 값인 변환을 수행할 필요가 없다.
예측 신호 및 재구성된 잔여 신호를 추가한 후, 디코더 또는 디코더 측에서는 복원 신호를 획득하기 위해 필터링 동작을 더 수행할 필요가 있다. 또한, 디코더 측에서는 획득한 복원 신호를 후속 인코딩을 위한 참조 신호로 사용한다. 특히, 코딩 블록에 대해 스킵 모드를 사용하는 경우, 잔여 정보가 존재하지 않고, 디코더나 디코더 측에서 예측자가 최종 복원값인 변환을 수행할 필요가 없다.
예를 들어, 인터 예측 처리 또는 인트라 예측 처리는 CU의 예측 블록에 기초하여 각 CU에 대해 수행되어, CU의 인터 예측 이미지 또는 인트라 예측 이미지를 획득한다. 그런 다음, 각 CU의 잔여 정보를 기반으로 변환 계수에 대해 역양자화 및 역변환 처리를 수행하여 잔여 영상을 획득하고, 해당 영역의 예측 영상에 잔여 영상을 더하여 복원 영상을 생성한다.
이 실시예에서, 영상 예측 방법은 비디오 디코더 측의 관점에서 설명된다. 비디오 디코더는 현재 노드의 크기 및 현재 노드의 분할 모드에 기초하여 현재 노드의 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행할지를 결정하여 현재 노드를 구현할 수 있다. 이것은 영상 예측의 처리 성능을 향상시키고 디코딩 처리 속도를 증가시킨다.
실시예에서 제공되는 이미지 예측 방법은 도 8에 도시된 비디오 인코더(18) 및/또는 비디오 디코더(24)에 사용된다. 본 실시예는 다음 단계를 포함한다.
단계 501: 현재 노드의 분할 모드를 획득한다.
이 실시예의 단계 501은 도 9에 도시된 바와 같은 실시예의 단계 101과 동일하고, 자세한 내용은 여기서 다시 설명되지 않는다.
단계 502: 다음 방법에 따라 변수 modeTypeCondition의 값을 유도한다.
다음 제1 미리 설정된 조건 중 하나 이상의 조건이 참인 경우 modeTypeCondition의 값은 제1 값, 예를 들어 0이다.
(1) 현재 노드가 위치한 이미지 또는 슬라이스(Slice)의 유형은 I 유형(slice_type == I)이고, qtbtt_dual_tree_intra_flag의 값은 1이다;
(2) 현재 노드의 예측 모드 유형이 인트라 예측 또는 인터 예측, 즉 인터 예측 또는 인트라 예측(논-인터 예측)만 수행되는 것으로 제한되거나; 또는
(3) 크로마 포맷은 모노크롬(Monochrome) 포맷 또는 4:4:4 포맷이며, 예를 들어 chroma_format_idc의 값은 0 또는 3이다.
다른 구현에서, 제1 미리 설정된 조건은 다음 조건 (4)를 더 포함한다:
(4) 크로마 포맷은 모노크롬(Monochrome) 포맷, 4:4:4 포맷 또는 4:2:2 포맷이며, 예를 들어 chroma_format_idc의 값은 0, 3 또는 2이다.
그렇지 않고, 다음 제2 미리 설정된 조건 중 하나 이상의 조건이 참이면 modeTypeCondition의 값은 제2 값, 예를 들어 1이다.
(1) 현재 노드의 루마 블록의 폭과 높이의 곱은 64이고 현재 노드의 분할 모드는 쿼드 트리 분할이다;
(2) 현재 노드의 루마 블록의 폭과 높이의 곱은 64이고 현재 노드의 분할 모드는 수평 삼항 트리 분할 또는 수직 삼항 트리 분할이다; 또는
(3) 현재 노드의 루마 블록의 폭과 높이의 곱은 32이고, 현재 노드의 분할 모드는 수평 이진 트리 분할 또는 수직 이진 트리 분할이다.
그렇지 않고, 다음의 미리 설정된 제3 조건의 하나 이상의 조건이 참이고 크로마 포맷이 4:2:0 포맷이면(chroma_format_idc의 값은 1이다), modeTypeCondition의 값은 다음 식에 따라 유도된다: 공식: 1 + (slice_type != I? 1:0):
(1) 현재 노드의 루마 블록의 폭과 높이의 곱은 64이고 현재 노드의 분할 모드는 수평 이진 트리 분할 또는 수직 이진 트리 분할이다; 또는
(2) 현재 노드의 루마 블록의 폭과 높이의 곱은 128이고, 현재 노드의 분할 모드는 수평 삼항 트리 분할 또는 수직 삼항 트리 분할이다.
표 3은 크로마 포맷과 chroma_format_idc 사이의 대응 관계를 보여준다.
chroma_format_idc separate_colour_plane_flag 크로마 포맷 SubWidthC SubHeightC
0 0 모노크롬 1 1
1 0 4:2:0 2 2
2 0 4:2:2 2 1
3 0 4:4:4 1 1
3 1 4:4:4 1 1
모노크롬(Monochrome) 샘플링에서는 크로마 성분 포맷이 없고 루마 성분의 시퀀스만 있다.
4:2:0 샘플링에서, 2개의 크로마 성분의 폭은 대응하는 루마 성분의 폭의 절반이고, 크로마 성분의 높이는 루마 성분 높이의 절반이다.
4:2:2 샘플링에서, 2개의 크로마 성분의 높이는 대응하는 루마 성분의 높이와 동일하고, 크로마 성분의 폭은 대응하는 루마 성분의 폭의 절반이다.
4:4:4 샘플링에서, 2개의 크로마 성분의 높이 및 폭은 separator_colour_plane_flag의 값에 의존한다. Separate_colour_plane_flag의 값이 0이면 두 크로마 성분의 폭 및 높이는 해당 루마 성분의 폭 및 높이와 각각 동일하다. 그렇지 않으면(separate_colour_plane_flag의 값이 1이다), 3개의 구성 요소가 모노크롬 샘플 이미지로 별도로 코딩된다.
1과 동일한 separate_colour_plane_flag는 4:4:4 크로마 포맷의 3가지 색상 성분이 별도로 코딩됨을 지정한다. 0과 동일한 separator_colour_plane_flag는 색상 구성 요소가 별도로 코딩되지 않음을 지정한다.
1과 동일한 qtbtt_dual_tree_intra_flag는 I 슬라이스에 대해, 각 CTU가 암시적 쿼드트리 분할을 사용하여 64x64 루마 샘플을 갖는 코딩 단위로 분할되고 이러한 코딩 단위가 루마 및 크로마에 대한 2개의 개별 coding_tree 신택스 구조의 루트임을 지정한다. 0과 동일한 qtbtt_dual_tree_intra_flag는 I 슬라이스에 대해 별도의 coding_tree 신택스 구조가 사용되지 않음을 지정한다. qtbtt_dual_tree_intra_flag가 존재하지 않는 경우, 0과 동일한 것으로 유추된다.
단계 503: modeTypeCondition의 값에 기초하여 현재 노드의 모든 코딩 단위의 예측 모드 유형을 결정한다.
구체적으로, modeTypeCondition의 값이 1인 경우, 현재 노드의 모든 코딩 단위에 대해 인트라 예측(MODE_INTRA)을 수행하도록 제한된다. modeTypeCondition의 값이 2인 경우, 신택스 요소 mode_constraint_flag의 값은 비트스트림에서 파싱된다. mode_constraint_flag의 값이 0이면 현재 노드의 모든 코딩 단위에 대해 인터 예측(MODE_INTER)이 수행된다. mode_constraint_flag 값이 1이면 현재 노드의 모든 코딩 단위에 대해 인트라 예측(논인터 예측/MODE_INTRA)을 수행한다.
그렇지 않으면, 현재 노드의 모든 코딩 단위의 예측 모드 유형은 제한되지 않고, 현재 노드의 예측 모드 유형과 동일하다.
단계 504: 현재 노드에 대응하는 크로마 블록 및 루마 블록이 추가로 분할되어 크로마 코딩 단위 및 루마 코딩 단위를 획득하는지를 결정한다.
(단계 504는 단계 407과 동일하다).
현재 노드의 모든 코딩 블록에 대해 인트라 예측만 수행되는 것으로 결정되면, 현재 노드에 포함된 루마 블록을 분할 모드로 분할하여 분할을 통해 획득된 루마 블록을 획득하고, 인트라 예측은 분할을 통해 얻은 루마 블록에 대해 수행된다. 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 크로마 코딩 블록에 대해 인트라 예측을 수행한다. 다시 말해, 현재 노드의 모든 코딩 블록에 대해 인트라 예측이 수행되는 것으로 결정되면, 현재 노드의 루마 블록을 루마 블록의 분할 모드로 분할하여 N 개의 루마 코딩 트리 노드를 획득하고; 현재 노드의 크로마 블록은 분할되지 않아 하나의 크로마 코딩 블록(크로마 CB로 약칭)을 획득한다. N 개의 루마 코딩 트리 노드가 더 이상 분할되지 않거나 제한되지 않는 것이 제한될 수 있다. 루마 코딩 트리 노드가 더 분할되면, 루마 코딩 트리 노드의 분할 모드가 재귀 분할을 위해 파싱된다. 루마 코딩 트리 노드가 더 분할되지 않을 때, 루마 코딩 트리 노드는 하나의 루마 코딩 블록(루마 CB로 약칭)에 대응한다. 인트라 예측은 루마 CB에 대해 수행되어 루마 CB에 대응하는 루마 예측 블록을 획득한다. 크로마 CB에 대해 인트라 예측을 수행하여 크로마 CB에 대응하는 크로마 예측 블록을 얻는다. 크로마 예측 블록과 크로마 CB는 동일한 크기를 갖는다.
현재 노드의 모든 코딩 블록에 대해 인트라 예측만이 수행되는 것으로 결정될 때, 다른 구현에서, 현재 노드에 포함된 루마 블록 및 크로마 블록은 분할 모드에서 분할되어 분할을 통해 얻은 노드를 획득한다. 코딩 트리 노드가 더 분할되지 않는 경우, 코딩 트리 노드는 하나의 코딩 단위에 대응하며 루마 코딩 단위 및 크로마 코딩 단위를 포함한다. 인트라 예측은 루마 코딩 단위 및 크로마 코딩 단위에 대해 수행되며, 여기서 루마 코딩 단위 및 크로마 코딩 단위는 분할을 통해 획득된다.
현재 노드의 모든 코딩 블록에 대해 인터 예측만이 수행되는 것으로 결정될 때, 구현에서, 현재 노드에 포함된 루마 블록은 분할을 통해 획득된 루마 블록을 획득하기 위해 분할 모드에서 분할되고, 분할을 통해 획득된 루마 블록에 대해 인터 예측이 수행되고; 현재 노드에 포함된 크로마 블록을 분할 모드로 분할하여 분할을 통해 얻은 크로마 블록을 획득하고, 분할을 통해 얻은 크로마 블록에 대해 인터 예측을 수행한다. 다시 말해, 현재 노드의 모든 코딩 블록에 대해 인터 예측이 수행되는 것으로 결정되면, 현재 노드의 루마 블록을 루마 블록의 분할 모드로 분할하여 N 개의 루마 코딩 트리 노드를 획득하고; 현재 노드의 크로마 블록은 크로마 블록의 분할 모드에서 분할되어 M 개의 크로마 코딩 트리 노드를 획득한다. N 및 M은 양의 정수이고, N 및 M은 동일하거나 상이할 수 있다. N 개의 루마 코딩 트리 노드와 M 개의 크로마 코딩 트리 노드가 더 분할되지 않거나 제한되지 않는 것이 제한될 수 있다. 더 이상의 분할이 수행되지 않을 때, N 개의 루마 코딩 트리 노드는 현재 노드의 N 개의 루마 CB에 대응하고 M 크로마 코딩 트리 노드는 현재 노드의 M 크로마 CB에 대응한다. N 개의 루마 CB에 대해 인터 예측을 수행하여 대응하는 루마 예측 블록을 획득하고, M 개의 크로마 CB에 대해 인터 예측을 수행하여 대응하는 크로마 예측 블록을 획득한다.
현재 노드의 모든 코딩 블록에 대해 인터 예측만이 수행되는 것으로 결정될 때, 구현에서, 현재 노드에 포함된 루마 블록은 분할을 통해 획득된 루마 블록을 획득하기 위해 분할 모드에서 분할되고, 분할을 통해 획득된 루마 블록에 대해 인터 예측이 수행되고; 현재 노드에 포함된 크로마 블록을 분할 모드로 분할하여 분할을 통해 얻은 크로마 블록을 획득하고, 분할을 통해 얻은 크로마 블록에 대해 인터 예측을 수행한다. 다시 말해, 현재 노드의 모든 코딩 블록에 대해 인터 예측이 수행되는 것으로 결정되면, 현재 노드의 루마 블록을 루마 블록의 분할 모드로 분할하여 N 개의 루마 코딩 트리 노드를 획득하고; 현재 노드의 크로마 블록은 크로마 블록의 분할 모드에서 분할되어 M 개의 크로마 코딩 트리 노드를 획득한다. N 및 M은 양의 정수이고, N 및 M은 동일하거나 상이할 수 있다. N 개의 루마 코딩 트리 노드와 M 개의 크로마 코딩 트리 노드가 더 분할되지 않거나 제한되지 않는 것이 제한될 수 있다. 더 이상의 분할이 수행되지 않을 때, N 개의 루마 코딩 트리 노드는 현재 노드의 N 개의 루마 CB에 대응하고 M 크로마 코딩 트리 노드는 현재 노드의 M 크로마 CB에 대응한다. N 개의 루마 CB에 대해 인터 예측을 수행하여 대응하는 루마 예측 블록을 획득하고, M 개의 크로마 CB에 대해 인터 예측을 수행하여 대응하는 크로마 예측 블록을 획득한다.
특히, 현재 노드의 모든 코딩 블록에 대해 인터 예측만 수행되는 경우, 분할 모드에서 현재 노드를 분할하여 자식 노드를 획득하고, 자식 노드를 더 분할해야 하며, 미리 설정된 크기는 자식 노드의 분할 모드에서 분할을 통해 획득한다. 예를 들어 미리 설정된 크기가 4×4(즉, 폭과 높이가 모두 4)인 경우 자식 노드의 분할 모드는 허용되지 않거나 또는 자식 노드는 더 이상 분할할 수 없다. 구체적으로, 노드에 대해 인터 예측만 수행하도록 제한하고 노드의 루마 샘플 수가 32개(또는 노드의 폭과 높이의 곱이 32개)인 경우 이진 트리 분할(수평 포함 이진 트리 분할 또는 수직 이진 트리 분할)은 노드에 허용되지 않는다. 노드에 대해 인터 예측만 수행하도록 제한되고 노드의 루마 샘플 수가 64개(또는 노드의 폭과 높이의 곱이 64개)인 경우 삼항 트리 분할(수평 삼항 트리 포함) 분할 또는 수직 삼항 트리 분할)은 노드에 허용되지 않는다. 이러한 결정 방법은 YUV 4:2:0 및 YUV 4:2:2의 비디오 데이터 포맷 모두에 적용 가능하다.
예를 들어, 현재 노드의 크기가 8x8이고 수평 이진 트리 분할(또는 수직 이진 트리 분할)을 통해 2개의 8x4(또는 4x8) 노드가 생성되면 8×4(또는 4×8) 노드가 더 분할되는 경우 4x4 블록이 생성된다. 이 경우 수직 이진 트리 분할(또는 수평 이진 트리 분할)은 8×4(또는 4×8) 노드에 대해 허용되지 않거나 8×4(또는 4×8) 노드에 대해 추가 분할이 허용되지 않는다. 다른 예로, 현재 노드의 루마 블록의 샘플 개수가 128개이고 분할 모드가 수평 삼항 트리 분할 또는 수직 삼항 트리 분할인 경우, 루마 블록의 샘플 개수는 64를 얻을 수 있다. 그러나 64개의 샘플 수를 갖는 루마 노드에 대해 자식 노드에 대한 수평 삼항 트리 분할 또는 수직 삼항 트리 분할을 사용하면 4×4 루마 블록이 얻어진다. 따라서 인터 예측만 수행하도록 제한하는 경우 샘플 수량이 64개인 노드 또는 샘플 수량이 64개인 노드에 대해 수평 삼항 트리 분할이 허용되지 않거나 또는 수직 삼항 트리 분할이 추가로 분할되도록 허용되지 않는다.
단계 505: 예측 모드 정보를 획득하기 위해 코딩 단위를 파싱한다.
인트라 예측 또는 인터 예측과 관련된 신택스 요소는 코딩 단위의 예측 모드의 종류에 기초하여 파싱되어, 코딩 단위의 최종 예측 모드를 획득한다. 해당 예측 모드에서 예측을 수행하여 예측자를 획득한다.
현재 노드가 인트라 이미지 영역(즉, 현재 노드가 위치한 이미지 또는 슬라이스(slice_type)의 유형이 인트라 유형 또는 I 유형인 경우)에 위치하고 IBC 모드 사용이 허용되면, cu_pred_mode의 값은 1로 유도되고 cu_pred_mode의 값은 비트스트림을 파싱할 필요 없이 획득된다. 현재 노드가 인트라 이미지 영역에 있지만 IBC 모드를 사용할 수 없는 경우 cu_pred_mode의 값은 1로 유도되고 cu_skip_flag의 값은 0이며 cu_pred_mode의 값은 비트스트림으로부터 파싱할 필요 없이 얻어진다.
현재 노드가 인터 이미지 영역에 위치하는 경우(즉, 현재 노드가 위치한 이미지 또는 슬라이스(slice_type)의 유형이 인터 유형 또는 B 유형인 경우), cu_pred_mode의 값은 는 0으로 유도되고, cu_pred_mode의 값은 비트스트림을 파싱할 필요 없이 획득된다.
단계 506: 각 코딩 블록을 디코딩하여 현재 노드에 대응하는 이미지 블록의 복원 신호를 획득한다.
예를 들어, 인터 예측 처리 또는 인트라 예측 처리는 CU의 예측 블록에 기초하여 각 CU에 대해 수행되어, CU의 인터 예측 이미지 또는 인트라 예측 이미지를 획득한다. 그런 다음, 각 CU의 잔여 정보를 기반으로 변환 계수에 대해 역양자화 및 역변환 처리를 수행하여 잔여 영상을 획득하고, 해당 영역의 예측 영상에 잔여 영상을 더하여 복원 영상을 생성한다.
인코더 측에 대응하는 방법:
실시예에서 제공되는 이미지 예측 방법은 도 8에 도시된 비디오 인코더(18)에 사용된다. 본 실시예는 다음 단계를 포함한다.
단계 601: 현재 노드의 분할 모드를 획득한다.
이 실시예의 단계 601은 단계 501과 동일하며, 자세한 내용은 여기에서 다시 설명되지 않는다.
단계 602: 다음 방법에 따라 변수 modeTypeCondition의 값을 유도한다.
다음의 제1 미리 설정된 조건 중 하나 이상의 조건이 참인 경우 modeTypeCondition의 값은 제1 값(예를 들어, 0)이다.
(1) 현재 노드가 위치한 이미지 또는 슬라이스(Slice)의 유형은 I 유형(slice_type == I)이고, qtbtt_dual_tree_intra_flag의 값은 1이다;
(2) 현재 노드의 예측 모드 유형이 인트라 예측 또는 인터 예측, 즉 인터 예측 또는 인트라 예측(논인터 예측)만 수행되는 것으로 제한된다; 또는
(3) 크로마 포맷은 모노크롬(Monochrome) 포맷 또는 4:4:4 포맷이며, 예를 들어 chroma_format_idc의 값은 0 또는 3이다.
다른 구현에서, 제1 미리 설정된 조건은 다음 조건 (4)를 더 포함한다:
(4) 크로마 포맷은 모노크롬(Monochrome) 포맷, 4:4:4 포맷 또는 4:2:2 포맷이며, 예를 들어 chroma_format_idc의 값은 0, 3 또는 2이다.
그렇지 않고, 다음 제2 미리 설정된 조건 중 하나 이상의 조건이 참이면 modeTypeCondition의 값은 제2 값, 예를 들어 1이다:
(1) 현재 노드의 루마 블록의 폭과 높이의 곱은 64이고 현재 노드의 분할 모드는 쿼드 트리 분할이다;
(2) 현재 노드의 루마 블록의 폭과 높이의 곱은 64이고 현재 노드의 분할 모드는 수평 삼항 트리 분할 또는 수직 삼항 트리 분할이다; 또는
(3) 현재 노드의 루마 블록의 폭과 높이의 곱은 32이고, 현재 노드의 분할 모드는 수평 이진 트리 분할 또는 수직 이진 트리 분할이다.
그렇지 않고, 다음의 미리 설정된 제3 조건의 하나 이상의 조건이 참이고 크로마 포맷이 4:2:0 포맷(chroma_format_idc의 값은 1임)인 경우, modeTypeCondition의 값은 다음과 같이 유도된다: 공식: 1 + (slice_type != I? 1:0):
(1) 현재 노드의 루마 블록의 폭과 높이의 곱은 64이고 현재 노드의 분할 모드는 수평 이진 트리 분할 또는 수직 이진 트리 분할이다; 또는
(2) 현재 노드의 루마 블록의 폭과 높이의 곱은 128이고, 현재 노드의 분할 모드는 수평 삼항 트리 분할 또는 수직 삼항 트리 분할이다.
단계 603: modeTypeCondition의 값에 기초하여 현재 노드의 모든 코딩 단위의 예측 모드 유형을 결정한다.
구체적으로, modeTypeCondition의 값이 1인 경우, 현재 노드의 모든 코딩 단위에 대해 인트라 예측(MODE_INTRA)을 수행하도록 제한된다. 선택적으로 mode_constraint_flag의 값은 1로 설정된다.
modeTypeCondition의 값이 2인 경우, 신택스 요소 mode_constraint_flag의 값은 RDO 방법을 사용하여 결정된다. 예를 들어, 현재 노드의 모든 코딩 단위에 대해 인터 예측을 수행하는 경우에 발생하는 RD 비용이 먼저 계산되고; 그런 다음, 인트라 예측을 수행하는 경우에 발생하는 RD 비용을 계산하고; 현재 노드의 모든 코딩 단위에 대해 인터 예측을 수행하는 경우(예를 들어, 스킵 모드가 사용되는 경우) 잔여가 없는 경우, 현재 노드의 모든 코딩 단위에 대해 인터 예측이 수행되는 것으로 결정하며, mode_constraint_flag의 값은 0으로 설정되고, 인트라 예측의 경우에 발생하는 RD 비용은 계산될 필요가 없다. 대안으로, 현재 노드의 모든 코딩 단위에 대해 인트라 예측을 수행하는 경우에 발생하는 RD 비용이 먼저 계산될 수 있고; 그런 다음, 인터 예측을 수행하는 경우에 발생하는 RD 비용이 계산되고; RD 비용이 더 작은 예측 모드가 최종 예측 모드로 결정된다.
그렇지 않고, 현재 노드의 모든 코딩 단위의 예측 모드 유형은 제한되지 않고, 현재 노드의 예측 모드 유형과 동일하다.
특히, 현재 노드가 인트라 이미지 영역에 위치하고(즉, 현재 노드가 인트라 유형 또는 I 유형인 이미지 또는 슬라이스(slice_type)의 유형) IBC 모드가 사용이 허용되는 경우 pred_mode_flag의 값은 디폴트로 1이다. 현재 노드가 인트라 이미지 영역에 있지만 IBC 모드를 사용할 수 없는 경우 pred_mode_flag의 값은 디폴트로 1이고 cu_skip_flag의 값은 0이다.
단계 604: 크로마 코딩 단위 및 루마 코딩 단위를 획득하기 위해 현재 노드에 대응하는 크로마 블록의 분할 모드 및 루마 블록의 분할 모드를 결정한다.
(단계 604는 단계 504와 동일하다).
단계 605: 현재 노드를 분할함으로써 획득된 CU의 코딩 블록을 예측하여 코딩 블록의 예측자를 획득한다.
현재 노드의 모든 코딩 블록에 대해 인트라 예측만 수행되는 경우, 인코더 측에서는 비율 왜곡 최적화(Rate-Distortion Optimization, RDO) 방법 또는 다른 방법에 따라 사용되는 최적 인트라 예측 모드를 현재 코딩 블록에 대해 결정하고; 현재 블록의 예측자를 획득하기 위해 대응하는 인트라 예측 모드를 사용하여 현재 코딩 블록을 예측한다.
현재 노드의 모든 코딩 블록에 대해 인터 예측만 수행되는 경우, 인코더 측은 비율 왜곡 최적화 방법 또는 다른 방법에 따라 현재 코딩 블록에 사용되는 최적 인터 예측 모드를 결정하고; 현재 블록의 예측자를 획득하기 위해 대응하는 인터 예측 모드를 사용하여 현재 코딩 블록을 예측한다.
또한, 인코더는 CU 깊이 관련 신택스 요소에 값을 할당하고 CU 레벨 신택스 정의에 대한 기준에 따라 각 신택스 요소의 값을 비트스트림에 기록한다. 예를 들어, 현재 노드의 모든 코딩 블록에 대해 인트라 예측만 수행된다면 pred_mode_flag의 값은 1로 설정되고 pred_mode_flag는 비트스트림에 기록되지 않는다. 즉, pred_mode_flag가 비트스트림에 존재하지 않는다. 현재 노드의 모든 코딩 블록에 대해 인트라 예측만 수행하고 IBC 모드를 사용하지 않는 것으로 결정되면 cu_skip_flag(또는 skip_flag)의 값은 0이고 cu_skip_flag는 비트스트림에 기록되지 않는다. 그렇지 않으면 cu_skip_flag의 값이 결정된 후 비트스트림에 cu_skip_flag를 기록하여 디코더 측에 전송해야 한다.
현재 노드의 모든 코딩 블록에 대해 인터 예측만 수행된다면 pred_mode_flag의 값은 0으로 설정되고 pred_mode_flag는 비트스트림에 기록되지 않으며, 즉, pred_mode_flag는 비트스트림에 존재하지 않는다. pred_mode_ibc_flag의 값이 0으로 설정되면 pred_mode_ibc_flag가 비트스트림에 기록되지 않고, 즉 pred_mode_ibc_flag가 비트스트림에 존재하지 않는다.
단계 606: 현재 노드에서 이미지 블록의 복원 신호를 획득한다.
인트라 예측 또는 인터 예측을 통해 예측 정보를 획득한 후, 인코더 측은 현재 코딩 블록에 있는 픽셀의 픽셀 값에서 대응하는 예측 정보(또는 예측자)를 감산하여 잔여 정보를 획득하고, 다음을 사용하여 잔여 정보를 변환한다. 이산 코사인 변환(Discrete Cosine Transformation, DCT)과 같은 방법으로 양자화 및 엔트로피 인코딩을 통해 비트스트림을 획득하고 나머지 정보를 디코더 측으로 전송한다. 예측 신호와 재구성된 잔여 신호를 추가한 후, 인코더 측에서는 필터링 동작을 더 수행하여 복원 신호를 획득하고 복원 신호를 후속 인코딩을 위한 참조 신호로 사용할 필요가 있다. 특히, 코딩 블록에 대해 스킵 모드를 사용하는 경우, 잔여 정보가 없고 인코더 측에서 예측자가 최종 재구성 값인 변환을 수행할 필요가 없다.
도 15는 본 출원의 실시예에 따른 영상 예측 장치의 기능의 개략적인 구조도이다. 도 15에 도시된 바와 같이, 본 실시예에서 제공되는 영상 예측 장치(40)는 다음을 포함한다:
현재 노드의 분할 모드를 획득하도록 구성된 획득 모듈(41);
미리 설정된 크기의 이미지 블록이 루마 블록 또는 크로마 블록을 포함하는 분할 모드에서 현재 노드를 분할함으로써 획득되는지를 결정하도록 구성된 판정 모듈(42); 및
분할 모드에서 현재 노드를 분할하여 미리 설정된 크기의 이미지 블록이 획득되었다고 결정되면 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하도록 구성된 실행 모듈(43)
을 포함한다.
선택적으로, 미리 설정된 크기를 갖는 이미지 블록은 제1 미리 설정된 크기를 갖는 루마 블록을 포함하고, 판정 모듈(42)은 구체적으로, 현재 노드의 크기 및 현재 노드의 분할 모드에 기초하여, 분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기의 루마 블록이 획득되는지를 결정하도록 구성된다.
선택적으로, 분할 모드에서 현재 노드를 분할함으로써 제1 사전 설정된 크기를 갖는 루마 블록이 획득되었다고 결정될 때, 실행 모듈(43)은 구체적으로 다음과 같이 구성된다:
현재 노드가 커버하는 모든 코딩 블록에 대해 인트라 예측을 수행한다.
선택적으로, 제1 사전 설정된 크기를 갖는 루마 블록이 분할 모드에서 현재 노드를 분할함으로써 획득되지 않은 경우, 판정 모듈(42)은: 제2 사전 설정된 크기를 갖는 크로마 블록이 분할 모드의 현재 노드에서 분할에 의해 획득되는지를 결정하도록 추가로 구성되고; 그리고
분할 모드에서 현재 노드를 분할함으로써 제2 미리 설정된 크기를 갖는 크로마 블록이 획득되었다고 결정될 때, 실행 모듈(43)은 구체적으로: 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측 또는 인터 예측을 수행하도록 구성된다.
선택적으로, 사전 설정된 크기를 갖는 이미지 블록은 제2 사전 설정된 크기를 갖는 크로마 블록을 포함하고, 판정 모듈(42)은 구체적으로: 현재 노드의 크기 및 현재 노드의 분할 모드에 기초하여, 분할 모드에서 현재 노드를 분할하여 제2 미리 설정된 크기의 크로마 블록을 획득하는지를 결정하도록 구성된다
선택적으로, 제2 사전 설정된 크기를 갖는 크로마 블록이 분할 모드에서 현재 노드를 분할함으로써 획득되는 것으로 결정될 때, 실행 모듈(43)은 구체적으로 다음과 같이 구성된다:
현재 노드의 예측 모드 상태 플래그를 파싱하고; 그리고
예측 모드 상태 플래그의 값이 제1 값일 때 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측을 수행하거나; 또는 예측 모드 상태 플래그의 값이 제2 값일 때, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행한다.
선택적으로, 분할 모드에서 현재 노드를 분할함으로써 제2 미리 설정된 크기를 갖는 크로마 블록이 획득된 것으로 결정되면 실행 모듈(43)은 구체적으로: 현재 노드가 인터 예측인 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측을 수행하거나; 또는 현재 노드에 의해 커버되는 임의의 코딩 블록에 사용되는 예측 모드가 인트라 예측인 경우, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행하도록 구성된다.
선택적으로, 임의의 코딩 블록은 디코딩 순서에서 현재 노드에 의해 커버되는 모든 코딩 블록의 제1 코딩 블록이다.
선택적으로, 분할 모드에서 현재 노드를 분할함으로써 제2 미리 설정된 크기를 갖는 크로마 블록이 획득되는 것으로 결정될 때, 실행 모듈(43)은 구체적으로 다음과 같이 구성된다:
분할 모드에서 현재 노드를 분할함으로써 제1 사전 설정된 크기를 갖는 루마 블록이 획득되는지를 결정하고; 그리고
분할 모드에서 현재 노드를 분할하여 제1 미리 설정된 크기를 갖는 루마 블록이 획득되었다고 결정되면, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행한다.
선택적으로, 분할 모드에서 현재 노드를 분할함으로써 제1 미리 설정된 크기를 갖는 루마 블록이 획득되지 않은 것으로 결정될 때, 실행 모듈(43)은 구체적으로 다음과 같이 구성된다:
현재 노드의 예측 모드 상태 플래그를 파싱하고; 그리고
예측 모드 상태 플래그의 값이 제1 값일 때 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측을 수행하거나; 또는 예측 모드 상태 플래그의 값이 제2 값일 때, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행한다.
선택적으로, 분할 모드에서 현재 노드를 분할함으로써 제1 사전 설정된 크기를 갖는 루마 블록이 획득되지 않은 것으로 결정되는 경우, 실행 모듈(43)은 구체적으로: 현재 노드가 인터 예측인 경우, 현재 노드가 커버하는 모든 코딩 블록에 대해 인터 예측을 수행하거나; 또는 현재 노드에 의해 커버되는 임의의 코딩 블록에 사용되는 예측 모드가 인트라 예측인 경우, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인트라 예측을 수행하도록 구성된다.
선택적으로, 실행 모듈(43)은 구체적으로 다음과 같이 구성된다:
분할 모드에서, 현재 노드에 포함된 루마 블록을 분할하여 분할을 통해 획득된 루마 블록을 획득하고, 분할을 통해 획득된 루마 블록에 대해 인트라 예측을 수행하고; 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고 크로마 코딩 블록에 대해 인트라 예측을 수행하거나; 또는
분할 모드에서, 현재 노드에 포함된 루마 블록을 분할하여 분할을 통해 획득된 루마 블록을 획득하고, 분할을 통해 획득된 루마 블록에 대해 인터 예측을 수행하고; 분할 모드에서 현재 노드에 포함된 크로마 블록을 분할하여 분할을 통해 얻은 크로마 블록을 획득하고 분할을 통해 얻은 크로마 블록에 대해 인터 예측을 수행한다.
선택적으로, 실행 모듈(43)은 구체적으로 다음과 같이 구성된다:
분할 모드에서, 현재 노드에 포함된 루마 블록을 분할하여 분할을 통해 획득된 루마 블록을 획득하고, 분할을 통해 획득된 루마 블록에 대해 인트라 예측을 수행하고; 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고 크로마 코딩 블록에 대해 인트라 예측을 수행하거나; 또는
분할 모드에서, 현재 노드에 포함된 루마 블록을 분할하여 분할을 통해 얻은 루마 블록을 획득하고, 분할을 통해 얻은 루마 블록에 대해 인터 예측을 수행하고; 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 크로마 코딩 블록에 대해 인터 예측을 수행한다.
선택적으로, 현재 노드에 의해 커버되는 모든 코딩 블록에 대해 인터 예측이 수행될 때, 획득 모듈(41)은 현재 노드의 자식 노드의 분할 서브-모드를 획득하도록 더 구성되며, 여기서 자식 노드는 루마 블록 및 크로마 블록을 포함하며; 그리고
판정 모듈(42)은 분할 서브-모드에서 현재 노드의 자식 노드를 분할함으로써 제1 미리 설정된 크기를 갖는 루마 블록이 획득되는지를 결정하도록 더 구성되며; 그리고
분할 서브-모드에서 현재 노드의 자식 노드를 분할함으로써 제1 미리 설정된 크기를 갖는 루마 블록이 획득되었다고 결정될 때, 실행 모듈(43)은 구체적으로: 분할 서브-모드 이외의 분할 모드에서 현재 노드의 자식 노드를 분할하여, 대응하는 코딩 블록을 획득하고, 대응하는 코딩 블록에 대해 인터 예측을 수행하거나; 또는 현재 노드의 자식 노드를 코딩 블록으로 사용하고 코딩 블록에 대해 인터 예측을 수행하도록 구성된다
본 출원의 이 실시예에서 제공되는 이미지 예측 장치는 전술한 방법 실시예에서 기술적 솔루션을 수행할 수 있다. 구현 원리 및 기술적 효과는 유사하며 여기서 다시 자세한 내용을 설명하지 않는다.
도 16은 본 출원의 실시예에 따른 비디오 인코딩 장치의 하드웨어의 개략적인 구조도이다. 도 16에 도시된 바와 같이, 본 실시예에서 제공되는 비디오 인코딩 디바이스(50)는 프로세서(51) 및 프로세서(51)의 실행 가능한 명령을 저장하도록 구성된 메모리(52)를 포함한다. 프로세서(51)는 전술한 비디오 인코딩 장치에 대응하는 방법 실시예에서의 이미지 예측 방법을 수행할 수 있다. 구현 원리 및 기술적 효과는 유사하며 여기서 다시 자세한 내용을 설명하지 않는다.
선택적으로, 메모리(52)는 독립적일 수 있거나 프로세서(51)와 통합될 수 있다.
메모리(52)가 프로세서(51)와 독립적인 구성 요소인 경우, 비디오 인코딩 디바이스(50)는 메모리(52)와 프로세서(51)를 연결하도록 구성된 버스(53)를 더 포함한다.
도 17은 본 출원의 실시예에 따른 비디오 디코딩 장치의 하드웨어의 개략적인 구조도이다. 도 17에 도시된 바와 같이, 본 실시예에서 제공되는 비디오 디코딩 디바이스(60)는 프로세서(61) 및 프로세서(61)의 실행 가능한 명령을 저장하도록 구성된 메모리(62)를 포함한다. 프로세서(61)는 전술한 방법 실시예에서의 비디오 디코딩 장치에 대응하는 이미지 예측 방법을 수행할 수 있다. 구현 원리 및 기술적 효과는 유사하며 여기서 다시 자세한 내용을 설명하지 않는다.
선택적으로, 메모리(62)는 독립적일 수 있거나 프로세서(61)와 통합될 수 있다.
메모리(62)가 프로세서(61)와 독립적인 구성 요소인 경우, 비디오 디코딩 디바이스(60)는 메모리(62)와 프로세서(61)를 연결하도록 구성된 버스(63)를 더 포함한다.
도 18은 본 출원의 실시예에 따른 이미지 예측 시스템의 개략적인 구조도이다. 도 18에 도시된 바와 같이, 본 실시예에서 제공되는 이미지 예측 시스템은 비디오 수집 디바이스(70), 도 16에 도시된 실시예에서 비디오 인코딩 디바이스(50), 도 17에 도시된 실시예의 비디오 디코딩 디바이스(60), 및 디스플레이 디바이스(80)를 포함한다.
비디오 인코딩 디바이스(50)는 비디오 수집 디바이스(70) 및 비디오 디코딩 디바이스(60) 모두에 연결되고, 비디오 디코딩 디바이스(60)는 디스플레이 장치(80)에 연결된다.
구체적으로, 비디오 인코딩 디바이스(50)는 비디오 수집 디바이스(70)에 의해 전송된 비디오 또는 이미지 정보를 수신한다. 비디오 인코딩 디바이스(50)는 전술한 방법 실시예의 비디오 인코딩 디바이스(50)에 대응하는 이미지 예측 방법을 수행할 수 있다. 비디오 인코딩 디바이스(50)는 인코딩된 비디오 또는 이미지 정보를 비디오 디코딩 디바이스(60)로 전송한다. 비디오 디코딩 디바이스(60)는 전술한 방법 실시예의 비디오 디코딩 디바이스(60)에 대응하는 이미지 예측 방법을 수행할 수 있다. 비디오 디코딩 디바이스(60)는 디코딩된 비디오 또는 이미지 정보를 디스플레이 장치(80)에 전송하여 표시한다.
본 출원의 이 실시예에서 제공되는 이미지 예측 시스템은 전술한 방법 실시예를 수행할 수 있는 비디오 인코딩 장치 및 전술한 방법 실시예를 수행할 수 있는 비디오 디코딩 장치를 포함한다. 구현 원리 및 기술적 효과는 유사하며 여기서 다시 자세한 내용을 설명하지 않는다.
본 출원의 실시예는 컴퓨터 판독 가능 저장 매체를 더 제공한다. 컴퓨터 판독 가능 저장 매체는 컴퓨터 프로그램을 저장하고, 컴퓨터 프로그램은 프로세서에 의해 실행되어 전술한 방법 실시예의 단계를 구현한다.
본 출원의 실시예는 비디오 디코딩 방법을 추가로 제공하며, 이 방법은:
루마 블록 및 크로마 블록을 포함하는 현재 노드의 분할 모드를 획득하는 단계;
현재 노드의 분할 모드에서 현재 노드를 더 분할하여 작은 크로마 블록이 획득되는지를 결정하는 단계 - 여기서 작은 크로마 블록은 픽셀 양이 제1 미리 설정된 값 이하인 크로마 블록 또는 작은 크로마 블록 픽셀 수량이 제2 사전 설정된 값 이하인 블록 단위의 크로마 블록임 - ; 및
현재 노드의 분할 모드에서 현재 노드를 더 분할하여 작은 크로마 블록을 획득하면, 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대해 인터 예측 또는 인트라 예측을 수행하여 분할을 통해 얻은 코딩 블록의 예측 정보를 획득하는 단계
를 포함한다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대해 인터 예측을 수행하는 단계는: 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 모든 코딩 블록(coding block)에 대해 인터 예측을 수행하는 단계를 포함거나; 또는
루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록(coding block)에 대한 인트라 예측을 수행하는 단계는: 루트 노드의 역할을 하는 현재 노드를 분할하여 획득된 모든 코딩 블록(coding block)에 대한 인트라 예측을 수행하는 단계를 포함한다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할한 코딩 블록(coding block)에 대한 인터 예측을 수행하는 단계는: 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 모든 작은 크로마 블록에 대해 인터 예측을 수행하는 단계를 포함하거나; 또는
루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록(coding block)에 대한 인트라 예측을 수행하는 단계는: 루트 노드의 역할을 하는 현재 노드를 분할하여 획득된 모든 작은 크로마 블록에 대한 인트라 예측을 수행하는 단계를 포함한다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득한 코딩 블록(coding block)에 대한 인터 예측을 수행하는 단계는: 루트 노드 역할을 하는 현재 노드를 분할한 코딩 단위(coding unit)에 대해 인터 예측을 수행하는 단계를 포함하거나; 또는
루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록(coding block)에 대한 인트라 예측을 수행하는 단계는: 루트 노드의 역할을 하는 현재 노드를 분할한 코딩 단위(coding unit)에 대한 인트라 예측을 수행하는 단계를 포함한다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대해 인터 예측 또는 인트라 예측을 수행하는 단계는:
현재 노드의 노드 예측 모드 플래그(cons_pred_mode_flag)를 파싱하는 단계; 및
노드 예측 모드 플래그의 값이 제1 값일 때, 루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록(coding block)에 대해 인터 예측을 수행하는 단계; 또는
노드 예측 모드 플래그의 값이 제2 값일 때, 루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록(coding block)에 대해 인트라 예측을 수행하는 단계
를 포함한다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대해 인터 예측 또는 인트라 예측을 수행하는 단계는:
루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록에 사용되는 예측 모드가 인터 예측인 경우, 루트 노드의 역할을 하는 현재 노드가 분할된 코딩 블록(coding block)에 대해 인터 예측을 수행하는 단계; 또는
루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록에 사용되는 예측 모드가 인트라 예측인 경우, 루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록(coding block)에 대해 인트라 예측을 수행하는 단계
를 포함한다.
선택적으로, 제1 사전 설정된 값은 2 또는 4이거나, 제2 사전 설정된 값은 16, 8 또는 32이다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대한 인트라 예측을 수행하는 단계는:
노드의 분할 모드에서 현재 노드에 포함된 루마 블록을 분할하여 루마 코딩 블록을 획득하는 단계;
루마 코딩 블록에 대해 인트라 예측을 수행하는 단계; 및
현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 크로마 코딩 블록에 대한 인트라 예측을 수행하는 단계
를 포함한다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대해 인터 예측 또는 인트라 예측을 수행하는 단계는:
노드의 분할 모드에서 현재 노드에 포함된 루마 블록을 분할하여 루마 코딩 블록을 획득하는 단계;
루마 코딩 블록에 대해 인터 예측 또는 인트라 예측을 수행하는 단계; 및
현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 크로마 코딩 블록에 대해 인터 예측 또는 인트라 예측을 수행하는 단계
를 포함한다.
선택적으로, 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고 크로마 코딩 블록에 대해 인터 예측 또는 인트라 예측을 수행하는 단계는:
크로마 코딩 블록을 크로마 예측 블록으로 사용하고, 크로마 예측 블록에 대해 인트라 예측을 수행하는 단계; 또는
크로마 코딩 블록을 분할하여 크로마 예측 블록을 획득하고, 분할을 통해 획득된 크로마 예측 블록에 대해 인터 예측을 수행하는 단계
를 포함한다.
본 출원의 실시예는 비디오 디코딩 방법을 추가로 제공하며, 여기서 방법은 다음:
루마 블록 및 크로마 블록을 포함하는 현재 노드의 분할 모드를 획득하는 단계;
현재 노드의 분할 모드에서 현재 노드를 더 분할하여 미리 설정된 크기의 루마 블록을 획득하는지 결정하는 단계; 및
현재 노드의 분할 모드에서 현재 노드를 더 분할하여 미리 설정된 크기의 루마 블록을 얻은 경우 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 모든 코딩 블록(coding block)에 대해 인트라 예측을 수행하여 분할을 통해 얻은 코딩 블록의 예측 블록을 획득하는 단계
를 포함한다.
선택적으로, 방법은:
현재 노드의 분할 모드에서 현재 노드를 더 분할하여 미리 설정된 크기의 루마 블록이 획득되지 않은 경우, 현재 노드의 분할 모드에서 현재 노드를 추가로 분할하여 작은 크로마 블록이 획득되는지를 결정하는 단계 - 여기서, 작은 크로마 블록은 픽셀 양이 제1 사전 설정된 값 이하인 크로마 블록이거나, 작은 크로마 블록은 블록 단위로 제2 사전 설정된 값 이하의 픽셀 수량을 갖는 크로마 블록이고; 및
현재 노드의 분할 모드에서 현재 노드를 더 분할하여 작은 크로마 블록을 얻은 경우 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대해 인터 예측 또는 인트라 예측을 수행하여 분할을 통해 얻은 코딩 블록의 예측 블록을 획득하는 단계
를 포함한다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대해 인터 예측을 수행하는 단계는: 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 모든 코딩 블록(coding block)에 대해 인터 예측을 수행하는 단계를 포함하거나; 또는
루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록(coding block)에 대한 인트라 예측을 수행하는 단계는: 루트 노드의 역할을 하는 현재 노드를 분할하여 획득된 모든 코딩 블록(coding block)에 대한 인트라 예측을 수행하는 단계를 포함한다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득한 코딩 블록(coding block)에 대해 인터 예측을 수행하는 단계는: 루트 노드 역할을 하는 현재 노드를 분할하여 획득한 모든 작은 크로마 블록에 대해 인터 예측을 수행하는 단계를 포함하거나; 또는
루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록(coding block)에 대한 인트라 예측을 수행하는 단계는: 루트 노드의 역할을 하는 현재 노드를 분할하여 획득된 모든 작은 크로마 블록에 대한 인트라 예측을 수행하는 단계를 포함한다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대한 인터 예측을 수행하는 단계는: 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 단위(coding unit)에 대해 인터 예측을 수행하는 단계를 포함하거나; 또는
루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록(coding block)에 대한 인트라 예측을 수행하는 단계는: 루트 노드의 역할을 하는 현재 노드를 분할한 코딩 단위(coding unit)에 대한 인트라 예측을 수행하는 단계를 포함한다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대해 인터 예측 또는 인트라 예측을 수행하는 단계는:
현재 노드의 노드 예측 모드 플래그(cons_pred_mode_flag)를 파싱하는 단계; 및
노드 예측 모드 플래그의 값이 제1 값일 때, 루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록(coding block)에 대해 인터 예측을 수행하는 단계; 및
노드 예측 모드 플래그의 값이 제2 값일 때, 루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록(coding block)에 대해 인트라 예측을 수행하는 단계
를 포함한다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대해 인터 예측 또는 인트라 예측을 수행하는 단계는:
루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록에 사용되는 예측 모드가 인터 예측인 경우, 루트 노드의 역할을 하는 현재 노드가 분할된 코딩 블록(coding block)에 대해 인터 예측을 수행하는 단계; 및
루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록에 사용되는 예측 모드가 인트라 예측인 경우, 루트 노드의 역할을 하는 현재 노드를 분할한 코딩 블록(coding block)에 대해 인트라 예측을 수행하는 단계
를 포함한다.
선택적으로, 제1 사전 설정된 값은 2 또는 4이거나 제2 사전 설정된 값은 16, 8 또는 32이다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대한 인트라 예측을 수행하는 단계는:
노드의 분할 모드에서 현재 노드에 포함된 루마 블록을 분할하여 루마 코딩 블록을 획득하는 단계;
루마 코딩 블록에 대해 인트라 예측을 수행하는 단계; 및
및 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 크로마 코딩 블록에 대한 인트라 예측을 수행하는 단계
를 포함한다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대해 인터 예측 또는 인트라 예측을 수행하는 단계는:
노드의 분할 모드에서 현재 노드에 포함된 루마 블록을 분할하여 루마 코딩 블록을 획득하는 단계;
루마 코딩 블록에 대해 인터 예측 또는 인트라 예측을 수행하는 단계; 및
현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 크로마 코딩 블록에 대해 인터 예측 또는 인트라 예측을 수행하는 단계
를 포함한다.
선택적으로, 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고 크로마 코딩 블록에 대해 인터 예측 또는 인트라 예측을 수행하는 단계는:
크로마 코딩 블록을 크로마 예측 블록으로 사용하고, 크로마 예측 블록에 대해 인트라 예측을 수행하는 단계; 또는
크로마 코딩 블록을 분할하여 크로마 예측 블록을 획득하고, 분할을 통해 획득된 크로마 예측 블록에 대해 인터 예측을 수행하는 단계
를 포함한다.
선택적으로, 루트 노드 역할을 하는 현재 노드를 분할하여 획득된 코딩 블록(coding block)에 대한 인터 예측을 수행하는 단계는:
현재 노드의 분할 모드에서 현재 노드를 분할하여 현재 노드의 자식 노드를 획득하는 단계;
현재 노드의 자식 노드의 분할 서브-모드를 획득하는 단계 - 자식 노드는 루마 블록 및 크로마 블록을 포함함 - ;
분할 서브-모드에서 현재 노드의 자식 노드를 더 분할하여 미리 설정된 크기의 루마 블록을 획득하는지 결정하는 단계; 및
분할 서브-모드에서 현재 노드의 자식 노드를 더 분할하여 미리 설정된 크기의 루마 블록을 얻은 경우, 분할 서브-모드가 아닌 분할 모드에서 현재 노드의 자식 노드를 분할하여 대응하는 코딩 단위 및 대응하는 코딩 단위에 대해 인터 예측을 수행하거나, 또는 현재 노드의 자식 노드를 코딩 단위로 사용하여, 코딩 단위에 대해 인터 예측을 수행하는 단계
를 포함한다.
선택적으로, 미리 설정된 크기는 4x4, 4x8, 8x4, 2x4 또는 4x2일 수 있다.
본 출원의 실시예는 비디오 디코딩 방법을 더 제공하며, 이 방법은:
루마 블록 및 크로마 블록을 포함하는 현재 노드의 분할 모드를 획득하는 단계;
루트 노드의 역할을 하는 현재 노드를 분할하여 획득된 모든 코딩 블록(coding block)에 사용되는 예측 모드가 인터 예측 모드인 경우 현재 노드를 현재 노드의 분할 모드로 분할하여 현재 노드의 자식 노드를 획득하는 단계;
현재 노드의 자식 노드의 분할 서브-모드를 획득하는 단계 - 자식 노드는 루마 블록 및 크로마 블록을 포함함 - ;
분할 서브-모드에서 현재 노드의 자식 노드를 더 분할하여 미리 설정된 크기의 루마 블록을 획득하는지 결정하는 단계; 및
분할 서브-모드에서 현재 노드의 자식 노드를 더 분할하여 미리 설정된 크기의 루마 블록을 얻은 경우, 분할 서브-모드가 아닌 분할 모드에서 현재 노드의 자식 노드를 분할하여 대응하는 코딩 단위 및 대응하는 코딩 단위에 대해 인터 예측을 수행하거나, 또는 현재 노드의 자식 노드를 코딩 단위로 사용하여, 코딩 단위에 대해 인터 예측을 수행하는 단계
를 포함한다.
본 출원의 이 실시예에서 제공되는 제1 비디오 디코딩 방법은 비디오 디코딩에서의 블록 분할 모드에 관한 것이다. 본 실시예의 비디오 데이터 포맷은 YUV 4:2:0 포맷이다. 유사한 방식이 YUV 4:2:2 포맷의 데이터에 사용될 수 있다.
단계 1: 노드 A의 분할 모드 S를 파싱한다. 노드 A가 더 분할되면 단계 2가 수행된다. 현재 노드가 더 이상 자식 노드로 분할되지 않는다면, 현재 노드는 하나의 코딩 단위에 대응하고, 그 코딩 단위에 대한 정보를 파싱한다.
노드 A의 분할 모드는 쿼드 트리 분할, 수직 이진 트리 분할, 수평 이진 트리 분할, 수직 삼항 트리 분할 및 수평 삼항 트리 분할 중 적어도 하나일 수 있다. 분할 모드는 또 다른 분할 모드일 수 있다. 이것은 이 응용 프로그램에서 제한되지 않는다. 현재 노드의 분할 모드에 대한 정보는 비트스트림으로 전송될 수 있다. 현재 노드의 분할 모드는 비트스트림에서 해당 신택스 요소를 파싱하여 획득할 수 있다. 현재 노드의 분할 모드는 미리 설정된 규칙에 따라 선택적으로 결정될 수 있다. 이것은 이 응용 프로그램에서 제한되지 않는다.
단계 2: 분할 모드 S에서 노드 A를 분할하여 획득된 자식 노드에서 적어도 하나의 자식 노드 B의 크로마 블록이 작은 블록인지를 결정한다(노드 A의 폭과 높이, 및/또는 노드 A의 분할 모드 및/또는 노드 B의 폭 및 높이가 다음 조건 중 적어도 하나의 조건을 만족하는지를 결정함으로써). 노드 A를 분할하여 획득된 자식 노드 중 적어도 하나의 자식 노드 B의 크로마 블록이 소형 블록이면 3단계 내지 6단계를 수행한다.
구체적으로, 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록이 소형 블록인지는 다음 방법 중 하나에 따라 결정될 수 있다:
(1) 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록의 크기가 2×2, 2×4 또는 4×2인 경우, 노드의 적어도 하나의 자식 노드 B의 크로마 블록 A는 작은 블록이다.;
(2) 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록의 폭 또는 높이가 2인 경우, 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록은 작은 블록이다;
(3) 노드 A가 128개의 루마 픽셀을 포함하고 노드 A에 대해 삼항 트리 분할이 사용되거나 노드 A가 64개의 루마 픽셀을 포함하고 이진 트리 분할, 쿼드 트리 분할 또는 삼항 트리 분할이 노드 A에 사용되는 경우, 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록은 작은 블록이다;
(4) 노드 A가 256개의 루마 픽셀을 포함하고 노드 A에 대해 삼항 트리 분할 또는 쿼드 트리 분할이 사용되거나 노드 A가 128개의 루마 픽셀을 포함하고 이진 트리 분할이 노드 A에 사용되는 경우 노드 A의 크로마 블록 노드 A의 적어도 하나의 자식 노드 B는 작은 블록이다.
(5) 노드 A가 N1 루마 픽셀을 포함하고 노드 A에 대해 삼항 트리 분할이 사용되는 경우(여기서 N1은 64, 128 또는 256), 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록은 소형 블록이다;
(6) 노드 A가 N2 루마 픽셀을 포함하고 쿼드트리 분할이 노드 A에 대해 사용되는 경우(여기서 N2는 64 또는 256임), 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록은 작은 블록이다; 또는
(7) 노드 A가 N3 루마 픽셀을 포함하고 이진 트리 분할이 노드 A에 사용되는 경우(여기서 N3은 64, 128 또는 256), 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록은 소형 블록이다.
노드 A는 128개의 루마 픽셀을 포함하고 있으며, 현재 노드의 면적이 128이거나 노드 A의 폭과 높이의 곱이 128이라고 설명할 수도 있다. 자세한 내용은 여기에 설명되지 않는다.
단계 3: 노드 A의 커버리지 영역에 있는 모든 코딩 단위에 대해 인트라 예측이 수행되도록 제한하거나, 노드 A의 커버리지 영역에 있는 모든 코딩 단위에 대해 인터 예측이 수행되도록 제한한다. 인트라 예측 또는 인터 예측 노드 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의 영역에서 제1 노드의 예측 모드에 기초하여 인트라 예측 또는 인터 예측이 수행되는지를 결정한다.
노드 A의 영역에서 제1 코딩 단위 B0의 예측 모드(제1 코딩 단위 B0의 예측 모드는 제한되지 않음)가 파싱된다. 제1 코딩 단위(B0)의 예측 모드가 인트라 예측이면 노드 A의 커버리지 영역의 모든 코딩 단위에 대해 인트라 예측이 수행되고, 제1 코딩 단위(B0)의 예측 모드가 인터 예측이면 노드 A의 커버리지 영역에 있는 모든 코딩 단위에 대해 인터 예측이 수행된다.
단계 4: 노드 A의 커버리지 영역에서 코딩 단위에 사용된 예측 모드에 기초하여 노드 A의 루마 블록의 분할 모드 및 크로마 블록의 분할 모드를 결정한다.
인트라 예측 모드가 노드 A의 커버리지 영역 내의 모든 코딩 단위에 대해 사용되는 경우, 노드 A의 루마 블록은 N 개의 루마 코딩 트리 노드를 획득하기 위해 분할 모드 S에서 분할된다. 노드 A의 크로마 블록은 더 이상 분할되지 않으며, 하나의 크로마 코딩 블록(크로마 CB로 약칭)에 대응한다. N 개의 루마 코딩 트리 노드가 더 이상 분할되지 않거나 제한되지 않는 것이 제한될 수 있다. 루마 자식 노드가 더 분할되면 루마 자식 노드의 분할 모드가 재귀 분할을 위해 파싱된다. 루마 코딩 트리 노드가 더 분할되지 않을 때, 루마 코딩 트리 노드는 하나의 루마 코딩 블록(루마 CB로 약칭)에 대응한다. 크로마 CB에 대응하는 크로마 변환 블록과 크로마 코딩 블록은 동일한 크기를 가지며, 크로마 예측 블록과 크로마 코딩 블록은 동일한 크기를 갖는다.
인터 예측 모드가 노드 A의 커버리지 영역의 모든 코딩 단위에 대해 사용되는 경우, 노드 A의 루마 블록 및 크로마 블록은 분할 모드 S에서 루마 블록과 크로마 블록을 포함하는 N 개의 코딩 트리 노드로 더 분할된다. N 개의 코딩 트리 노드는 더 분할되거나 분할되지 않을 수 있다. 더 이상의 분할이 없는 경우, N 개의 코딩 트리 노드는 루마 블록 및 크로마 블록을 포함하는 코딩 단위에 대응한다.
단계 5: 노드 A를 분할하여 획득된 CU의 예측 정보 및 잔여 정보를 파싱한다.
예측 정보는 예측 모드(인트라 예측 모드 또는 비인트라 예측 모드를 나타냄), 인트라 예측 모드, 인터 예측 모드, 모션 정보 등을 포함한다. 모션 정보는 예측 방향(순방향, 역방향 또는 양방향), 참조 인덱스(참조 인덱스), 모션 벡터(모션 벡터) 등의 정보를 포함할 수 있다.
잔여 정보는 코딩된 블록 플래그(코딩된 블록 플래그, 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의 인트라 예측 모드는 다음 방법에 따라 파싱될 수 있다: (1) 인트라 예측 모드를 획득하기 위해 비트스트림의 신택스 요소를 파싱하는 단계; 또는 (2) 선형 모델 모드, DM 모드(크로마 유도 모드, 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에 대해 병합 모드를 사용하지 않음을 나타낸다. cu_pred_mode는 코딩 단위 예측 모드 플래그를 나타낸다. cu_pred_mode의 값이 1이면 현재 예측 단위에 대해 인트라 예측이 수행됨을 나타내고, cu_pred_mode의 값이 0이면 공통 인터 예측(인터 방향, 참조 인덱스, 모션 벡터 예측자 인덱스 및 비트스트림에서의 모션 벡터 차이)은 현재 예측 단위에 대해 수행된다.
본 실시예에서, 인트라 예측 모드는 코딩 블록이 위치한 영상의 공간 영역 참조 픽셀을 이용하여 코딩 블록의 예측자가 생성되는 예측 모드임을 유의해야 한다. 예를 들어, 인트라 예측 모드는 직류 모드(direct current mode, DC 모드), 평면 모드(Planar mode), 각도 모드(Angular mode), 템플릿 매칭 모드(template matching mode) 또는 IBC 모드이다.
인터 예측 모드는 코딩 블록의 참조 영상에서 시간 영역 참조 픽셀을 이용하여 코딩 블록의 예측자를 생성하는 예측 모드이다. 예를 들어, 인터 예측 모드는 스킵 모드(Skip mode), 머지 모드(Merge mode), AMVP(advanced motion vector prediction) 모드(커먼 인터 모드라고도 함) 또는 IBC 모드이다.
단계 6: 각 CU를 디코딩하여 노드 A에 대응하는 이미지 블록의 복원 신호를 획득한다.
예를 들어, 인터 예측 처리 또는 인트라 예측 처리는 CU의 예측 정보에 기초하여 각 CU에 대해 수행되어, CU의 인터 예측 이미지 또는 인트라 예측 이미지를 획득한다. 그리고 각 CU의 잔여 정보를 기반으로 변환 계수에 대해 역양자화 및 역변환 처리를 수행하여 잔여 영상을 획득하고, 대응하는 영역의 예측 영상에 잔여 영상을 더하여 복원 영상을 생성한다.
본 실시예의 분할 모드에서는 인트라 예측이 수행되는 작은 크로마 블록이 생성되지 않으므로, 작은 크로마 블록에 대해 인트라 예측이 수행되는 경우가 회피된다.
본 출원의 실시예에서 제공되는 제2 비디오 디코딩 방법에서, 단계 1, 단계 2, 단계 3, 및 단계 6은 각각 제1 디코딩 방법에서의 단계 1, 단계 2, 단계 3 및 단계 6과 동일하다. 차이점은 다음과 같다.
단계 4: 노드 A의 크로마 블록의 분할 모드 및 루마 블록의 분할 모드를 결정한다.
노드 A의 루마 블록은 분할 모드 S에서 추가로 분할되어 N 개의 루마 코딩 트리 노드를 생성한다. 노드 A의 크로마 블록은 더 이상 분할되지 않으며, 하나의 크로마 코딩 블록(크로마 CB)에 대응한다. 크로마 CB에 대응하는 크로마 변환 블록과 크로마 코딩 블록은 동일한 크기를 갖는다. [참고: 제1 실시예와 비교하여, 본 실시예에서는 인터 예측 모드 또는 인트라 예측 모드를 사용하는 것이 제한되는지에 관계없이 크로마 블록이 더 분할되지 않고, 루마 블록이 분할 모드 S에서 항상 분할된다. 이것은 노드 A의 커버리지 영역의 예측 모드와 관련이 없다.]
단계 5: 노드 A를 분할하여 획득된 CU의 예측 정보 및 잔여 정보를 파싱한다.
노드 A를 분할하여 획득된 모든 CU에 대해 인트라 예측만 수행하는 것으로 제한되는 경우 처리는 제1 실시예의 처리와 동일하다.
노드 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 루마 영역의 모션 정보이다.
본 실시예의 분할 모드에서는 인트라 예측이 수행되는 작은 크로마 블록이 생성되지 않고, 16 픽셀 미만의 크기를 갖는 변환 블록도 생성되지 않는다. 따라서, 인트라 예측 및 계수 코딩에서 전술한 처리 복잡성이 회피된다.
본 출원의 실시예에서 제공되는 제3 비디오 디코딩 방법에서, 단계 1, 단계 2, 단계 3, 단계 4, 및 단계 6은 제2 디코딩 방법에서의 단계 1, 단계 2, 단계 3, 단계 4 및 단계 6과 동일하다. 차이점은 다음과 같다.
단계 5: 노드 A를 분할하여 획득된 CU의 예측 정보 및 잔여 정보를 파싱한다.
노드 A를 분할하여 획득된 모든 CU에 대해 인트라 예측만 수행하는 것으로 제한되는 경우 처리는 제2 실시예에서의 처리와 동일하다.
노드 A를 분할한 모든 CU에 대해 인터 예측만 수행하도록 제한하는 경우, 노드 A를 분할하여 획득된 루마 CB의 예측 정보의 파싱은 제2 실시예의 파싱과 동일하다.
노드 A를 분할한 모든 CU에 대해 인터 예측만 수행하도록 제한하면 노드 A가 분할된 크로마 CB의 예측 정보를 파싱할 필요가 없다. 크로마 예측 블록과 크로마 코딩 블록은 동일한 크기를 갖는다. 크로마 CB의 모션 정보는 크로마 CB에 대응하는 루마 영역(예를 들어, 루마 영역의 중앙, 우측 하단 또는 좌측 상단)에서 미리 설정된 위치의 모션 정보이다.
본 실시예의 분할 모드에서, 인트라 예측이 수행되는 작은 크로마 블록이 생성되지 않고, 작은 변환 블록이 생성되지 않으며, 인터 예측이 수행되는 작은 크로마 블록도 생성되지 않는다.
본 출원의 실시예는 제4 비디오 디코딩 방법을 제공하며, 이 방법은 다음 단계를 포함한다.
단계 1: 이 단계는 전술한 제1 비디오 디코딩 방법의 단계 1과 동일하다.
단계 2: 분할 모드 S에서 노드 A를 분할함으로써 획득된 자식 노드에 적어도 하나의 자식 노드 B의 4x4 루마 블록이 있는지를 결정한다(노드 A의 폭과 높이, 및/또는 노드 A의 분할 모드, 및/또는 노드 B의 폭 및 높이가 사례 1에서 적어도 하나의 조건을 만족하는지를 결정함으로써).
노드 A의 크기(폭 및 높이) 및/또는 분할 모드 S가 사례 1에서 적어도 하나의 조건을 만족하는 경우, 노드 A의 커버리지 영역의 모든 코딩 단위에 대해 인트라 예측을 수행하는 것이 제한된다. 그렇지 않고, 분할 모드 S에서 노드 A를 분할하여 획득된 자식 노드에서 적어도 하나의 자식 노드 B의 크로마 블록이 소형 블록인지 결정되면(노드 A의 크기 및/또는 노드 A의 분할 모드 S, 및/또는 노드 B의 폭 및 높이가 사례 2에서 적어도 하나의 조건을 만족하는지를 결정함으로써), 단계 3 내지 단계 6이 수행된다.
구체적으로, 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록이 작은 블록이라고 결정하는 방법에 대해 다음 두 가지 경우가 있다.
사례 1:
다음의 제1 미리 설정된 조건 중 하나 이상의 조건이 참인 경우, 분할 모드 S에서 노드 A를 분할함으로써 4x4 루마 블록이 획득된다.
(1) 노드 A는 M1 픽셀을 포함하고 노드 A의 분할 모드는 쿼드 트리 분할이다. 여기서 예를 들어 M1은 64이다;
(2) 노드 A는 M2 픽셀을 포함하고 노드 A의 분할 모드는 삼항 트리 분할이며, 여기서 예를 들어 M2는 64이다;
(3) 노드 A는 M3 픽셀을 포함하고 노드 A의 분할 모드는 이진 트리 분할이며, 여기서 예를 들어 M3은 32이다;
(4) 노드 A의 폭은 제2 임계값의 4배이고 노드 A의 높이는 제2 임계값과 동일하며 노드 A의 분할 모드는 수직 삼항 트리 분할이다;
(5) 노드 A의 폭은 제2 임계값과 같고 노드 A의 높이는 제2 임계값의 4배이며 노드 A의 분할 모드는 수평 삼항 트리 분할이다;
(6) 노드 A의 폭은 제2 임계값의 두 배이고 노드 A의 높이는 제2 임계값과 동일하며 현재 노드의 분할 모드는 수직 이진 트리 분할이다;
(7) 노드 A의 높이는 제2 임계값의 두 배이고 노드 A의 폭은 제2 임계값과 동일하며 현재 노드의 분할 모드는 수평 이진 트리 분할이다; 또는
(8) 노드 A의 폭 또는/및 높이는 제2 임계값의 두 배이고 노드 A의 분할 모드는 쿼드 트리 분할이다.
크기는 노드 A에 대응하는 이미지 영역의 폭과 높이, 노드 A에 대응하는 이미지 영역에 포함된 루마 픽셀의 수량, 또는 노드 A에 대응하는 이미지 영역의 면적일 수 있다.
일반적으로, 현재 노드의 폭은 현재 노드에 대응하는 루마 블록의 폭이고, 현재 노드의 높이는 현재 노드에 대응하는 루마 블록의 높이이다. 특정 구현에서, 예를 들어, 제2 임계값은 4일 수 있다.
사례 2:
(1) 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록의 크기는 2×4 또는 4×2이다;
(2) 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록의 폭 또는 높이는 2이다;
(3) 노드 A는 128 루마 픽셀을 포함하고 노드 A에 대해 삼항 트리 분할이 사용되거나, 또는 노드 A가 64 루마 픽셀을 포함하고 이진 트리 분할, 쿼드 트리 분할 또는 삼항 트리 분할이 노드 A에 사용된다;
(4) 노드 A는 256개의 루마 픽셀을 포함하고 노드 A에 대해 삼항 트리 분할 또는 쿼드 트리 분할이 사용되거나 노드 A는 128개의 루마 픽셀을 포함하고 이진 트리 분할은 노드 A에 사용된다;
(5) 노드 A는 N1 루마 픽셀을 포함하고 삼항 트리 분할은 노드 A에 사용되며, 여기서 N1은 64, 128 또는 256이다;
(6) 노드 A는 N2 루마 픽셀을 포함하고 쿼드트리 분할은 노드 A에 사용된다. 여기서 N2는 64 또는 256이다; 또는
(7) 노드 A는 N3 루마 픽셀을 포함하고 이진 트리 분할은 노드 A에 사용된다. 여기서 N3은 64, 128 또는 256이다.
노드 A는 128개의 루마 픽셀을 포함하고 있으며, 현재 노드의 면적이 128이거나 노드 A의 폭과 높이의 곱이 128인 것으로 설명될 수도 있다. 자세한 내용은 여기에 설명되지 않는다.
단계 3: 이 단계는 전술한 제1 비디오 디코딩 방법의 단계 3과 동일하다.
단계 4: 노드 A의 커버리지 영역에서 코딩 단위에 사용된 예측 모드에 기초하여 노드 A의 루마 블록의 분할 모드 및 크로마 블록의 분할 모드를 결정한다.
인터 예측 모드가 노드 A의 커버리지 영역의 모든 코딩 단위에 대해 사용되는 경우, 노드 A의 루마 블록 및 크로마 블록은 분할 모드 S에서 분할되어, 노드 A 또는/및 노드 A의 커버리지 영역에서 노드 A의 자식 노드를 획득한다. 노드 A의 자식 노드의 분할 모드 또는/및 노드 A의 커버리지 영역에서 4x4 루마 블록이 생성되면 분할 모드 자식 노드가 허용되지 않거나 자식 노드를 더 이상 분할할 수 없다. 예를 들어, 노드 A의 크기가 8×8이고 수평 이진 트리 분할(또는 수직 이진 트리 분할)을 통해 2개의 8×4(또는 4×8) 노드가 생성되면 ×4(또는 4×8) 노드가 더 분할된다. 이 경우 8×4(또는 4×8) 노드는 더 이상 분할할 수 없다.
노드 A의 커버리지 영역의 모든 코딩 단위에 대해 인트라 예측 모드가 사용되는 경우, 전술한 제1, 제2 또는 제3 비디오 디코딩 방법이 구현을 위해 사용될 수 있다. 자세한 내용은 여기에서 다시 설명되지 않는다. 예를 들어, 노드 A의 루마 블록이 분할되고 노드 A의 크로마 블록이 분할되지 않는다.
단계 5: 노드 A를 분할하여 획득된 CU의 예측 블록 및 잔여 정보를 파싱한다.
이 단계는 전술한 제1 비디오 디코딩 방법의 단계 5와 동일하며, 여기서 다시 자세한 내용을 설명하지 않는다.
단계 6: 각 CU를 디코딩하여 노드 A에 대응하는 이미지 블록의 복원 신호를 획득한다.
이 단계는 전술한 제1 비디오 디코딩 방법에서 단계 6의 방식으로 수행될 수 있으며, 자세한 내용은 여기에서 다시 설명되지 않는다.
본 출원의 실시예는 제5 비디오 디코딩 방법을 제공하며, 이 방법은 다음 단계를 포함한다.
단계 1: 이 단계는 전술한 제1 비디오 디코딩 방법의 단계 1과 동일하다.
단계 2: 분할 모드 S에서 노드 A를 분할함으로써 획득된 자식 노드에 적어도 하나의 자식 노드 B의 4x4 루마 블록이 있는지를 결정한다(노드 A의 폭과 높이, 및/또는 노드 A의 분할 모드, 및/또는 노드 B의 폭 및 높이가 사례 1에서의 적어도 하나의 조건을 만족하는지를 결정함으로써). 노드 A의 크기(폭 및 높이) 및/또는 분할 모드 S가 사례 1의 적어도 하나의 조건을 만족하는 경우, 인트라 예측은 노드 A의 커버리지 영역에서의 모든 코딩 단위에 대해 수행되는 것이 제한된다.
대안으로, 분할 모드 S에서 노드 A를 분할하여 획득된 자식 노드 중 적어도 하나의 자식 노드 B의 크로마 블록이 소형 블록인지 결정되면(노드 A의 크기, 및/또는 노드 A의 분할 모드 S, 및/또는 노드 B의 폭 및 높이가 사례 2에서의 적어도 하나의 조건을 만족하는지를 결정함으로써), 단계 3 내지 단계 6가 수행된다.
구체적으로, 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록이 작은 블록이라고 결정하는 방법에 대한 다음 두 가지 경우가 있다.
사례 1:
다음의 제1 사전설정된 조건의 하나 이상의 조건이 참이면, 분할 모드 S에서 노드 A를 분할함으로써 4×4 루마 블록이 획득된다:
(1) 노드 A는 M1 픽셀을 포함하고 노드 A의 분할 모드는 쿼드 트리 분할이다. 여기서 예를 들어 M1은 64이다;
(2) 노드 A는 M2 픽셀을 포함하고 노드 A의 분할 모드는 삼항 트리 분할이며, 여기서 예를 들어 M2는 64이다;
(3) 노드 A는 M3 픽셀을 포함하고 노드 A의 분할 모드는 이진 트리 분할이며, 여기서 예를 들어 M3은 32이다;
(4) 노드 A의 폭은 제2 임계값의 4배이고 노드 A의 높이는 제2 임계값과 동일하며 노드 A의 분할 모드는 수직 삼항 트리 분할이다;
(5) 노드 A의 폭은 제2 임계값과 같고 노드 A의 높이는 제2 임계값의 4배이며 노드 A의 분할 모드는 수평 삼항 트리 분할이다;
(6) 노드 A의 폭은 제2 임계값의 두 배이고 노드 A의 높이는 제2 임계값과 동일하며 현재 노드의 분할 모드는 수직 이진 트리 분할이다;
(7) 노드 A의 높이는 제2 임계값의 두 배이고 노드 A의 폭은 제2 임계값과 동일하며 현재 노드의 분할 모드는 수평 이진 트리 분할이다; 또는
(8) 노드 A의 폭 또는/및 높이는 제2 임계값의 두 배이고 노드 A의 분할 모드는 쿼드 트리 분할이다.
크기는 노드 A에 대응하는 이미지 영역의 폭과 높이, 노드 A에 대응하는 이미지 영역에 포함된 루마 픽셀의 양 또는 노드 A에 대응하는 이미지 영역의 면적일 수 있다.
일반적으로, 현재 노드의 폭은 현재 노드에 대응하는 루마 블록의 폭이고, 현재 노드의 높이는 현재 노드에 대응하는 루마 블록의 높이이다. 특정 구현에서, 예를 들어, 제2 임계값은 4일 수 있다.
사례 2:
(1) 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록의 크기는 2×4 또는 4×2이다;
(2) 노드 A의 적어도 하나의 자식 노드 B의 크로마 블록의 폭 또는 높이는 2이다;
(3) 노드 A는 128개의 루마 픽셀을 포함하고 노드 A에 대해 삼항 트리 분할이 사용되거나 노드 A는 64개의 루마 픽셀을 포함하고 이진 트리 분할, 쿼드 트리 분할 또는 삼항 트리 분할이 노드 A에 사용된다;
(4) 노드 A는 256개의 루마 픽셀을 포함하고 노드 A에 대해 삼항 트리 분할 또는 쿼드 트리 분할이 사용되거나 노드 A는 128개의 루마 픽셀을 포함하고 이진 트리 분할은 노드 A에 사용된다;
(5) 노드 A는 N1 루마 픽셀을 포함하고 삼항 트리 분할은 노드 A에 사용되며, 여기서 N1은 64, 128 또는 256이다;
(6) 노드 A는 N2 루마 픽셀을 포함하고 쿼드트리 분할은 노드 A에 사용되며, 여기서 N2는 64 또는 256이다; 또는
(7) 노드 A는 N3 루마 픽셀을 포함하고 이진 트리 분할은 노드 A에 사용되며, 여기서 N3은 64, 128 또는 256이다.
노드 A는 128 루마 픽셀을 포함하고 있으며, 현재 노드의 면적이 128이거나 노드 A의 폭과 높이의 곱이 128이라고 설명할 수도 있다. 자세한 내용은 여기에 설명되지 않는다.
단계 3: 이 단계는 전술한 제1 비디오 디코딩 방법의 단계 3과 동일하다.
단계 4: 노드 A의 커버리지 영역에서 코딩 단위에 사용되는 예측 모드에 기초하여 노드 A의 루마 블록의 분할 모드 및 크로마 블록의 분할 모드를 결정한다.
인터 예측 모드가 노드 A의 커버리지 영역에 있는 모든 코딩 단위에 대해 사용되는 경우, 노드 A의 루마 블록 및 크로마 블록은 분할 모드 S에서 분할되어, 노드 A 또는/및 노드 A의 커버리지 영역에서 노드 A의 자식 노드를 획득한다. 노드 A의 자식 노드의 분할 모드 또는/및 노드 A의 커버리지 영역에서 4x4 루마 블록이 생성되면 분할 모드 자식 노드가 허용되지 않거나 자식 노드를 더 이상 분할할 수 없다. 예를 들어, 노드 A의 크기가 8×8이고 수평 이진 트리 분할(또는 수직 이진 트리 분할)을 통해 2개의 8×4(또는 4×8) 노드가 생성되면 8×4(또는 4×8) 노드가 더 분할되는 경우 4×4 블록이 생성된다. 이 경우 8×4(또는 4×8) 노드는 더 이상 분할할 수 없다.
노드 A의 커버리지 영역의 모든 코딩 단위에 대해 인트라 예측 모드가 사용되는 경우, 전술한 제1, 제2, 또는 제3 비디오 디코딩 방법이 구현을 위해 사용될 수 있다. 자세한 내용은 여기에서 다시 설명되지 않는다. 예를 들어, 노드 A의 루마 블록이 분할되고 노드 A의 크로마 블록이 분할되지 않는다.
단계 5: 노드 A를 분할하여 획득된 CU의 예측 블록 및 잔여 정보를 파싱한다.
이 단계는 전술한 제1 비디오 디코딩 방법의 단계 5와 동일하며, 여기서 다시 자세한 내용을 설명하지 않는다.
단계 6: 각 CU를 디코딩하여 노드 A에 대응하는 이미지 블록의 복원 신호를 획득한다.
이 단계는 전술한 제1 비디오 디코딩 방법에서 단계 6의 방식으로 수행될 수 있으며, 자세한 내용은 여기에서 다시 설명되지 않는다.
일부 실시예에서, 현재 영역이 한 번 분할되면 4x4 루마 블록이 생성되며(예를 들어, QT 분할은 64 루마 픽셀을 가진 영역에 사용되거나 TT 분할은 128 루마 픽셀을 가진 영역에 사용된다), 디폴트로 현재 영역에 대해 인트라 예측 모드만 사용할 수 있도록 제한된다.
그렇지 않으면, 현재 영역에 대해 인터 예측 모드 또는 인트라 예측 모드만이 사용될 수 있음을 나타내기 위해 플래그가 전송된다.
현재 영역에 대해 인터 예측 모드만 사용하도록 제한되는 경우, 루마 블록과 크로마 블록이 모두 분할된다. 현재 영역의 노드를 분할하여 4x4 루마 블록을 생성하는 경우 이러한 분할은 허용되지 않는다. 예를 들어, 현재 노드가 8×8 노드이고 HBT(또는 VBT) 분할을 통해 2개의 8×4 노드가 생성된 경우, 이들 노드를 더 분할하면 4×4 CU가 생성된다. 이 경우 이러한 8×4 노드는 더 이상 분할할 수 없다.
영역에 대해 인트라 예측 모드만 사용하도록 제한되는 경우, 이 경우의 구현은 제1 실시예에서의 구현과 동일하다(즉, 루마 블록은 분할되고 크로마 블록은 분할되지 않는다).
본 출원의 기술 솔루션의 유익한 효과는 다음과 같다: 본 출원의 실시예에서 블록 분할 방법이 제공되며, 따라서 상대적으로 작은 영역을 갖는 크로마 블록에 사용되는 인트라 예측 모드가 회피된다. 이것은 하드웨어의 처리 및 디코더의 구현을 파이프라인화한다. 또한, 인터 예측에서 일부 예측 모드의 신택스 요소를 파싱하는 과정을 생략함으로써 코딩 복잡도를 감소시킬 수 있다. 계수 코딩에서 전술한 처리 복잡도가 회피되어 코딩 복잡도를 감소시킨다.
블록 분할 방법은 다음과 같을 수 있다.
노드 A의 분할 모드를 파싱하고;
노드 A를 분할 모드 S에서 분할하여 획득된 적어도 하나의 자식 노드 B의 크로마 블록이 소형 블록인지를 결정하고(노드 A의 폭 및 높이, 및/또는 노드 A의 분할 모드, 및/또는 노드 B의 폭 및 높이가 전술한 조건 중 적어도 하나의 조건을 만족하는지를 결정함으로써);
그렇다면, 노드 A의 커버리지 영역에 있는 모든 코딩 단위에 대해 인트라 예측 모드 또는 인터 예측 모드만이 사용되는 것이 제한되고; 그리고
노드 A의 크로마 블록과 루마 블록이 더 분할되는지를 결정한다.
노드 A의 커버리지 영역의 모든 코딩 단위에 대해 인트라 예측이 수행되는 경우, 노드 A의 루마 블록은 분할 모드 S에서 더 분할되고, 노드 A의 크로마 블록은 더 분할되지 않는다. 노드 A의 커버리지 영역의 모든 코딩 단위에 대해 인터 예측이 수행되는 경우, 노드 A의 루마 블록 및 크로마 블록은 분할 모드 S에서 루마 블록 및 크로마 블록을 포함하는 N 개의 코딩 트리 노드로 추가로 분할된다.
노드 A의 루마 블록은 분할 모드 S에서 더 분할되고, 노드 A의 크로마 블록은 더 분할되지 않는다. 크로마 변환 블록과 크로마 코딩 블록은 동일한 크기를 갖는다.
노드 A의 커버리지 영역의 모든 코딩 단위에 대해 인트라 예측을 수행하는 경우, 크로마 예측 블록과 크로마 코딩 블록은 동일한 크기를 갖는다. 노드 A의 커버리지 영역의 모든 코딩 단위에 대해 인터 예측이 수행되면, 크로마 예측 블록은 서브블록으로 분할되고(서브블록의 크기는 크로마 코딩 블록의 크기보다 작다), 각 서브블록의 모션 벡터는 서브블록에 대응하는 루마 영역의 모션 벡터이다.
노드 A의 루마 블록은 분할 모드 S에서 더 분할되고, 노드 A의 크로마 블록은 더 분할되지 않는다. 크로마 코딩 블록과 크로마 코딩 블록에 대응하는 크로마 변환 블록은 동일한 크기를 갖고, 크로마 예측 블록과 크로마 코딩 블록은 동일한 크기를 가지며, 크로마 CB의 모션 정보는 크로마 CB에 대응하는 루마 영역 내의 미리 설정된 위치의 모션 정보이다.
당업자는 본 명세서에 개시되고 설명된 다양한 예시적인 논리 블록, 모듈, 및 알고리즘 단계를 참조하여 설명된 기능이 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 구현될 수 있음을 이해할 수 있다. 소프트웨어에 의해 구현되는 경우, 예시적인 논리 블록, 모듈 및 단계를 참조하여 설명된 기능은 하나 이상의 명령 또는 코드로서 컴퓨터 판독 가능 매체에 저장되거나 이를 통해 전송되고 하드웨어 기반 처리 장치에 의해 실행될 수 있다. 컴퓨터 판독 가능형 매체는 데이터 저장 매체와 같은 유형의 매체에 대응하는 컴퓨터 판독 가능형 저장 매체, 또는 (예를 들어 통신 프로토콜에 따라) 컴퓨터 프로그램을 한 곳에서 다른 곳으로 쉽게 전달할 수 있는 모든 매체를 포함하는 통신 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터 판독가능 매체는 일반적으로: (1) 비일시적 유형의 컴퓨터 판독가능 저장 매체, 또는 (2) 신호 또는 캐리어와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 출원에 설명된 기술을 구현하기 위한 명령, 코드 및/또는 데이터 구조를 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 사용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체를 포함할 수 있다.
예를 들어, 하지만 이에 제한되지 않는 컴퓨터 판독 가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 콤팩트 디스크 저장 장치, 자기 디스크 저장 장치 또는 다른 자기 저장 장치를 포함할 수 있다. 플래시 메모리 또는 원하는 프로그램 코드를 명령어 또는 데이터 구조의 형태로 저장하는 데 사용할 수 있고 컴퓨터에서 액세스할 수 있는 기타 모든 매체. 또한 모든 연결을 컴퓨터 판독 가능 매체라고 한다. 예를 들어, 명령이 웹사이트, 서버 또는 다른 원격 소스에서 동축 케이블, 광섬유, 트위스트 페어, 디지털 가입자 회선(digital subscriber line, DSL) 또는 적외선, 라디오 및 기타 무선 기술과 같은 무선 기술을 통해 전송되는 경우 마이크로파, 동축 케이블, 광섬유 케이블, 트위스트 페어, DSL 또는 적외선, 라디오, 마이크로파와 같은 무선 기술이 매체의 정의에 포함된다. 그러나 컴퓨터 판독 가능한 저장 매체 및 데이터 저장 매체는 연결, 캐리어, 신호 또는 기타 일시적인 매체를 포함하지 않고 실제로는 비일시적인 유형의 저장 매체를 의미한다는 것을 이해해야 한다. 본 명세서에서 사용되는 디스크 및 디스크는 콤팩트 디스크(Compact Disc, CD), 레이저 디스크(Laser Disc), 광디스크(Optical Disc), 디지털 멀티미디어 디스크(Digital Multimedia Disc, DVD), 블루레이 디스크(Blu-ray Disc) 등이 있다. 디스크는 일반적으로 자기적으로 데이터를 재생하는 반면 디스크는 레이저를 사용하여 광학적으로 데이터를 재생한다. 이들의 조합도 컴퓨터 판독 가능형 매체의 범위에 포함되어야 한다.
명령은 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로프로세서, 주문형 집적 회로(ASIC), 필드 프로그램 가능 논리 어레이(FPGA) 또는 기타 동등물과 같은 하나 이상의 프로세서에 의해 실행될 수 있다. 집적 회로 또는 개별 논리 회로. 따라서, 본 명세서에서 사용되는 "프로세서"라는 용어는 전술한 구조 중 하나일 수 있으며, 본 명세서에서 설명하는 기술을 구현하기에 적합한 다른 구조일 수 있다. 또한, 일부 관점에서, 본 명세서에 설명된 예시적인 논리 블록, 모듈, 및 단계를 참조하여 설명된 기능은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈 내에 제공될 수 있거나 결합된 코덱에 통합될 수 있다. 또한, 기술은 하나 이상의 회로 또는 논리 소자에서 완전히 구현될 수 있다.
본 출원의 기술은 무선 핸드셋, 집적 회로(IC) 또는 IC 세트(예를 들어, 칩셋)를 포함하는 다양한 장치 또는 장치에서 구현될 수 있다. 개시된 기술을 수행하도록 구성된 장치의 기능적 측면을 강조하기 위해 다양한 구성 요소, 모듈 또는 유닛이 본 출원에서 설명되지만, 반드시 상이한 하드웨어 유닛에 의해 구현되는 것은 아니다. 실제로, 위에서 설명된 바와 같이, 다양한 유닛은 적절한 소프트웨어 및/또는 펌웨어와 조합하여 코덱 하드웨어 유닛으로 결합될 수 있거나, 상호 운용 가능한 하드웨어 유닛(위에서 설명된 하나 이상의 프로세서 포함)에 의해 제공될 수 있다.
전술한 실시예에서, 실시예의 설명은 각각의 초점을 갖는다. 실시예에서 구체적으로 설명되지 않은 부분에 대해서는 다른 실시예에서 관련된 설명을 참조한다.
전술한 설명은 단지 본 출원의 특정 구현일 뿐이지, 본 출원의 보호 범위를 제한하려는 것은 아니다. 본 출원에 개시된 기술적 범위 내에서 당업자에 의해 용이하게 파악된 변형 또는 대체는 본 출원의 보호 범위에 속할 것이다. 따라서 본 출원의 보호 범위는 청구 범위의 보호 범위에 따른다.

Claims (33)

  1. 이미지 예측 방법으로서,
    현재 노드의 분할 모드를 획득하는 단계 - 상기 현재 노드는 현재 이미지의 코딩 트리 단위(coding tree unit)의 이미지 블록임 - ;
    상기 현재 노드의 분할 모드 및 상기 현재 노드의 크기에 기초하여, 상기 현재 노드가 제1 조건을 만족하는지를 결정하는 단계; 및
    상기 현재 노드가 제1 조건을 만족한다고 결정될 때, 상기 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하여 상기 현재 노드에 속하는 모든 코딩 블록의 예측자를 획득하는 단계
    를 포함하는 이미지 예측 방법.
  2. 제1항에 있어서,
    상기 현재 노드가 제1 조건을 만족하지 않는 것으로 결정될 때, 상기 이미지 예측 방법은:
    상기 현재 노드의 분할 모드 및 상기 현재 노드의 크기에 기초하여, 상기 현재 노드가 제2 조건을 만족하는지를 결정하는 단계; 및
    상기 현재 노드가 제2 조건을 만족한다고 결정될 때, 상기 현재 노드에 속하는 모든 코딩 블록의 예측자를 획득하기 위해, 동일한 예측 모드를 사용하여 상기 현재 노드에 속하는 모든 코딩 블록에 대한 예측을 수행하는 단계 - 상기 예측 모드는 인트라 예측 또는 인터 예측임 -
    를 포함하는, 이미지 예측 방법.
  3. 제2항에 있어서,
    상기 현재 노드의 분할 모드 및 상기 현재 노드의 크기에 기초하여, 상기 현재 노드가 제2 조건을 만족하는지를 결정하는 단계는:
    상기 현재 노드의 분할 모드, 상기 현재 노드의 크기 및 현재 크로마 포맷(Chroma format)에 기초하여 상기 현재 노드가 상기 제2 조건을 만족하는지를 결정하는 단계
    를 포함하는, 이미지 예측 방법.
  4. 제2항 또는 제3항에 있어서,
    상기 동일한 예측 모드를 사용하여 상기 현재 노드에 속하는 모든 코딩 블록에 대한 예측을 수행하는 단계는:
    상기 현재 노드의 예측 모드 상태 플래그를 파싱하는 단계; 및
    상기 예측 모드 상태 플래그의 값이 제1 값일 때, 상기 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측을 수행하거나, 또는 상기 예측 모드 상태 플래그의 값이 제2 값일 때, 상기 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계
    를 포함하는, 이미지 예측 방법.
  5. 제2항 내지 제4항 중 어느 한 항에 있어서,
    상기 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측을 수행하는 단계는:
    상기 현재 노드의 분할 모드에서 상기 현재 노드를 분할하여 상기 현재 노드의 자식 노드를 획득하는 단계;
    상기 현재 노드의 자식 노드의 크기에 기초하여, 상기 현재 노드의 자식 노드에 허용되지 않는 분할 모드를 결정하는 단계;
    상기 현재 노드의 자식 노드에 허용되지 않는 분할 모드에 기초하여 상기 현재 노드의 자식 노드에 대한 블록 분할 정책을 결정하는 단계; 및
    상기 현재 노드의 자식 노드의 블록 분할 정책에 따라, 상기 현재 노드의 자식 노드에 대응하는 코딩 블록을 획득하고, 상기 대응하는 코딩 블록에 대해 인터 예측을 수행하는 단계
    를 포함하는, 이미지 예측 방법.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계는:
    상기 분할 모드에서, 상기 현재 노드에 포함된 루마 블록을 분할하여 분할을 통해 획득된 루마 블록을 획득하고, 분할을 통해 획득된 루마 블록에 대해 인트라 예측을 수행하는 단계; 및 상기 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 상기 크로마 코딩 블록에 대한 인트라 예측을 수행하는 단계
    를 포함하는, 이미지 예측 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 현재 노드의 크기는 상기 현재 노드에 대응하는 코딩 트리 노드의 크기 및 상기 현재 노드를 획득하기 위해 사용되는 분할 모드에 기초하여 결정되는, 이미지 예측 방법.
  8. 이미지 예측 방법으로서,
    현재 노드의 분할 모드를 획득하는 단계 - 상기 현재 노드는 현재 이미지의 코딩 트리 단위(coding tree unit)의 이미지 블록임 - ;
    상기 현재 노드의 분할 모드 및 상기 현재 노드의 크기에 기초하여, 상기 현재 노드가 미리 설정된 조건을 만족하는지를 결정하는 단계; 및
    상기 현재 노드가 미리 설정된 조건을 만족한다고 결정될 때, 상기 현재 노드에 속하는 모든 코딩 블록의 예측자를 획득하기 위해, 동일한 예측 모드를 사용하여 상기 현재 노드에 속하는 모든 코딩 블록에 대한 예측을 수행하는 단계 - 상기 예측 모드는 인트라 예측 또는 인터 예측임 -
    를 포함하는 이미지 예측 방법.
  9. 제8항에 있어서,
    상기 현재 노드의 분할 모드 및 상기 현재 노드의 크기에 기초하여, 상기 현재 노드가 미리 설정된 조건을 만족하는지를 결정하는 단계는:
    상기 현재 노드의 분할 모드, 상기 현재 노드의 크기 및 현재 크로마 포맷(Chroma 포맷)에 기초하여, 상기 현재 노드가 미리 설정된 조건을 만족하는지를 결정하는 단계
    를 포함하는, 이미지 예측 방법.
  10. 제8항 또는 제9항에 있어서,
    상기 동일한 예측 모드를 사용하여 상기 현재 노드에 속하는 모든 코딩 블록에 대한 예측을 수행하는 단계는:
    상기 현재 노드의 예측 모드 상태 플래그를 파싱하는 단계; 및
    상기 예측 모드 상태 플래그의 값이 제1 값일 때, 상기 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측을 수행하거나, 또는 상기 예측 모드 상태 플래그의 값이 제2 값일 때, 상기 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하는 단계
    를 포함하는, 이미지 예측 방법.
  11. 제8항 내지 제10항 중 어느 한 항에 있어서,
    상기 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측을 수행하는 단계는:
    상기 현재 노드의 분할 모드에서 상기 현재 노드를 분할하여 상기 현재 노드의 자식 노드를 획득하는 단계;
    상기 현재 노드의 자식 노드의 크기에 기초하여, 상기 현재 노드의 자식 노드에 허용되지 않는 분할 모드를 결정하는 단계;
    상기 현재 노드의 자식 노드에 허용되지 않는 분할 모드에 기초하여 상기 현재 노드의 자식 노드에 대한 블록 분할 정책을 결정하는 단계; 및
    상기 현재 노드의 자식 노드의 블록 분할 정책에 따라, 상기 현재 노드의 자식 노드에 대응하는 코딩 블록을 획득하고, 상기 대응하는 코딩 블록에 대해 인터 예측을 수행하는 단계
    를 포함하는, 이미지 예측 방법.
  12. 제8항 내지 제11항 중 어느 한 항에 있어서,
    상기 현재 노드의 크기는 상기 현재 노드에 대응하는 코딩 트리 노드의 크기 및 상기 현재 노드를 획득하기 위해 사용되는 분할 모드에 기초하여 결정되는, 이미지 예측 방법.
  13. 이미지 예측 방법으로서,
    현재 노드의 크기 및 현재 노드의 예측 모드에 기초하여, 상기 현재 노드에 허용되지 않는 분할 모드를 결정하는 단계 - 상기 현재 노드는 상기 현재 이미지의 코딩 트리 단위(coding tree unit)의 이미지 블록임 - ;
    상기 현재 노드에 허용되지 않는 분할 모드에 기초하여 상기 현재 노드의 블록 분할 정책을 결정하는 단계; 및
    상기 현재 노드의 블록 분할 정책에 따라, 상기 현재 노드에 대응하는 코딩 블록을 획득하고, 상기 대응하는 코딩 블록에 대해 인터 예측을 수행하는 단계
    를 포함하는 이미지 예측 방법.
  14. 제13항에 있어서,
    상기 현재 노드의 크기 및 현재 노드의 예측 모드에 기초하여, 상기 현재 노드에 허용되지 않는 분할 모드를 결정하는 단계는:
    상기 현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만 사용되는지를 결정하고, 상기 현재 노드의 루마 블록의 샘플 수가 32인지를 결정하는 단계; 및
    상기 현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만 사용되는 것으로 결정되고, 상기 현재 노드의 루마 블록의 샘플 수가 32인 것으로 결정될 때, 상기 현재 노드에 허용되지 않는 분할 모드가 이진 트리 분할(binary tree split)인 것으로 결정하는 단계
    를 포함하는, 이미지 예측 방법.
  15. 제13항 또는 제14항에 있어서,
    상기 현재 노드의 크기 및 현재 노드의 예측 모드에 기초하여, 상기 현재 노드에 허용되지 않는 분할 모드를 결정하는 단계는:
    상기 현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만 사용되는지를 결정하고, 상기 현재 노드의 루마 블록의 샘플 수가 64인지를 결정하는 단계; 및
    상기 현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만이 사용되는 것으로 결정되고, 상기 현재 노드의 루마 블록의 샘플 수가 64인 것으로 결정될 때, 상기 현재 노드에 허용되지 않는 분할 모드가 삼항 트리 분할(ternary tree split)인 것으로 결정하는 단계
    를 포함하는, 이미지 예측 방법.
  16. 제13항 내지 제15항 중 어느 한 항에 있어서,
    상기 현재 노드의 크기는 상기 현재 노드에 대응하는 코딩 트리 노드의 크기 및 상기 현재 노드를 획득하기 위해 사용되는 분할 모드에 기초하여 결정되는, 이미지 예측 방법.
  17. 이미지 예측 장치로서,
    현재 노드의 분할 모드를 획득하도록 구성되어 있는 획득 모듈 - 상기 현재 노드는 현재 이미지의 코딩 트리 단위(coding tree unit)의 이미지 블록임 - ;
    상기 현재 노드의 분할 모드 및 상기 현재 노드의 크기에 기초하여, 상기 현재 노드가 제1 조건을 만족하는지를 결정하도록 구성되어 있는 판정 모듈; 및
    상기 현재 노드가 제1 조건을 만족한다고 결정될 때, 상기 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하여 상기 현재 노드에 속하는 모든 코딩 블록의 예측자를 획득하도록 구성되어 있는 실행 모듈
    을 포함하는 이미지 예측 장치.
  18. 제17항에 있어서,
    상기 판정 모듈은: 상기 현재 노드가 제1 조건을 만족하지 않는 것으로 결정될 때, 상기 현재 노드의 분할 모드 및 상기 현재 노드의 크기에 기초하여, 상기 현재 노드가 제2 조건을 만족하는지를 결정하도록 추가로 구성되며; 그리고
    상기 실행 모듈은: 상기 현재 노드가 제2 조건을 만족한다고 결정될 때, 상기 현재 노드에 속하는 모든 코딩 블록의 예측자를 획득하기 위해, 동일한 예측 모드를 사용하여 상기 현재 노드에 속하는 모든 코딩 블록에 대한 예측을 수행하도록 추가로 구성되며, 상기 예측 모드는 인트라 예측 또는 인터 예측인, 이미지 예측 장치.
  19. 제18항에 있어서,
    상기 판정 모듈은: 상기 현재 노드의 분할 모드, 상기 현재 노드의 크기 및 현재 크로마 포맷(Chroma format)에 기초하여 상기 현재 노드가 상기 제2 조건을 만족하는지를 결정하도록 구성되어 있는, 이미지 예측 장치.
  20. 제18항 또는 제19항에 있어서,
    상기 실행 모듈은:
    상기 현재 노드의 예측 모드 상태 플래그를 파싱하고; 그리고
    상기 예측 모드 상태 플래그의 값이 제1 값일 때, 상기 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측을 수행하거나, 또는 상기 예측 모드 상태 플래그의 값이 제2 값일 때, 상기 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하도록 구성되어 있는, 이미지 예측 장치.
  21. 제18항 내지 제20항 중 어느 한 항에 있어서,
    상기 실행 모듈은:
    상기 현재 노드의 분할 모드에서 상기 현재 노드를 분할하여 상기 현재 노드의 자식 노드를 획득하고;
    상기 현재 노드의 자식 노드의 크기에 기초하여, 상기 현재 노드의 자식 노드에 허용되지 않는 분할 모드를 결정하고;
    상기 현재 노드의 자식 노드에 허용되지 않는 분할 모드에 기초하여 상기 현재 노드의 자식 노드에 대한 블록 분할 정책을 결정하며; 그리고
    상기 현재 노드의 자식 노드의 블록 분할 정책에 따라, 상기 현재 노드의 자식 노드에 대응하는 코딩 블록을 획득하고, 상기 대응하는 코딩 블록에 대해 인터 예측을 수행하도록 구성되어 있는, 이미지 예측 장치.
  22. 제17항 내지 제21항 중 어느 한 항에 있어서,
    상기 실행 모듈은:
    상기 분할 모드에서, 상기 현재 노드에 포함된 루마 블록을 분할하여 분할을 통해 획득된 루마 블록을 획득하고, 분할을 통해 획득된 루마 블록에 대해 인트라 예측을 수행하며; 그리고 상기 현재 노드에 포함된 크로마 블록을 크로마 코딩 블록으로 사용하고, 상기 크로마 코딩 블록에 대한 인트라 예측을 수행하도록 구성되어 있는, 이미지 예측 장치.
  23. 이미지 예측 장치로서,
    현재 노드의 분할 모드를 획득하도록 구성되어 있는 획득 모듈 - 상기 현재 노드는 현재 이미지의 코딩 트리 단위(coding tree unit)의 이미지 블록임 - ;
    상기 현재 노드의 분할 모드 및 상기 현재 노드의 크기에 기초하여, 상기 현재 노드가 미리 설정된 조건을 만족하는지를 결정하도록 구성되어 있는 판정 모듈; 및
    상기 현재 노드가 미리 설정된 조건을 만족한다고 결정될 때, 상기 현재 노드에 속하는 모든 코딩 블록의 예측자를 획득하기 위해, 동일한 예측 모드를 사용하여 상기 현재 노드에 속하는 모든 코딩 블록에 대한 예측을 수행하도록 구성되어 있는 실행 모듈 - 상기 예측 모드는 인트라 예측 또는 인터 예측임 -
    을 포함하는 이미지 예측 장치.
  24. 제23항에 있어서,
    상기 판정 모듈은:
    상기 현재 노드의 분할 모드, 상기 현재 노드의 크기 및 현재 크로마 포맷(Chroma 포맷)에 기초하여, 상기 현재 노드가 미리 설정된 조건을 만족하는지를 결정하도록 구성되어 있는, 이미지 예측 장치.
  25. 제23항 또는 제24항에 있어서,
    상기 실행 모듈은:
    상기 현재 노드의 예측 모드 상태 플래그를 파싱하며; 그리고
    상기 예측 모드 상태 플래그의 값이 제1 값일 때, 상기 현재 노드에 속하는 모든 코딩 블록에 대해 인터 예측을 수행하거나, 또는 상기 예측 모드 상태 플래그의 값이 제2 값일 때, 상기 현재 노드에 속하는 모든 코딩 블록에 대해 인트라 예측을 수행하도록 구성되어 있는, 이미지 예측 장치.
  26. 제23항 내지 제25항 중 어느 한 항에 있어서,
    상기 실행 모듈은:
    상기 현재 노드의 분할 모드에서 상기 현재 노드를 분할하여 상기 현재 노드의 자식 노드를 획득하고;
    상기 현재 노드의 자식 노드의 크기에 기초하여, 상기 현재 노드의 자식 노드에 허용되지 않는 분할 모드를 결정하고;
    상기 현재 노드의 자식 노드에 허용되지 않는 분할 모드에 기초하여 상기 현재 노드의 자식 노드에 대한 블록 분할 정책을 결정하며; 그리고
    상기 현재 노드의 자식 노드의 블록 분할 정책에 따라, 상기 현재 노드의 자식 노드에 대응하는 코딩 블록을 획득하고, 상기 대응하는 코딩 블록에 대해 인터 예측을 수행하도록 구성되어 있는, 이미지 예측 장치.
  27. 이미지 예측 장치로서,
    현재 노드의 크기 및 현재 노드의 예측 모드에 기초하여, 상기 현재 노드에 허용되지 않는 분할 모드를 결정하도록 구성되어 있는 결정 유닛 - 상기 현재 노드는 상기 현재 이미지의 코딩 트리 단위(coding tree unit)의 이미지 블록이며, 상기 결정 유닛은: 상기 현재 노드에 허용되지 않는 분할 모드에 기초하여 상기 현재 노드의 블록 분할 정책을 결정하도록 추가로 구성됨 - ; 및
    상기 현재 노드의 블록 분할 정책에 따라, 상기 현재 노드에 대응하는 코딩 블록을 획득하고, 상기 대응하는 코딩 블록에 대해 인터 예측을 수행하도록 구성되어 있는 예측 유닛
    을 포함하는 이미지 예측 장치.
  28. 제27항에 있어서,
    상기 결정 유닛은:
    상기 현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만 사용되는지를 결정하고, 상기 현재 노드의 루마 블록의 샘플 수가 32인지를 결정하며; 그리고
    상기 현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만 사용되는 것으로 결정되고, 상기 현재 노드의 루마 블록의 샘플 수가 32인 것으로 결정될 때, 상기 현재 노드에 허용되지 않는 분할 모드가 이진 트리 분할(binary tree split)인 것으로 결정하도록 구성되어 있는,이미지 예측 장치.
  29. 제27항 또는 제28항에 있어서,
    상기 결정 유닛은:
    상기 현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만 사용되는지를 결정하고, 상기 현재 노드의 루마 블록의 샘플 수가 64인지를 결정하는 단계; 및
    상기 현재 노드에 속하는 모든 코딩 블록의 예측을 위해 인터 예측 모드만이 사용되는 것으로 결정되고, 상기 현재 노드의 루마 블록의 샘플 수가 64인 것으로 결정될 때, 상기 현재 노드에 허용되지 않는 분할 모드가 삼항 트리 분할(ternary tree split)인 것으로 결정하도록 구성되어 있는, 이미지 예측 장치.
  30. 비디오 인코딩 디바이스로서,
    프로세서 및 상기 프로세서의 실행 명령을 저장하도록 구성된 메모리
    를 포함하며,
    상기 프로세서는 제1항 내지 제16항 중 어느 한 항에 따른 방법을 수행하는, 비디오 인코딩 디바이스.
  31. 비디오 디코딩 디바이스로서,
    프로세서 및 상기 프로세서의 실행 명령을 저장하도록 구성된 메모리
    를 포함하며,
    상기 프로세서는 제1항 내지 제16항 중 어느 한 항에 따른 방법을 수행하는, 비디오 디코딩 디바이스.
  32. 이미지 예측 시스템으로서,
    비디오 수집 디바이스, 제30항에 따른 비디오 인코딩 디바이스, 제31항에 따른 비디오 디코딩 디바이스, 디스플레이 디바이스
    를 포함하며,
    상기 비디오 인코딩 디바이스는 상기 비디오 수집 디바이스 및 상기 비디오 디코딩 디바이스에 모두에 연결되고, 상기 비디오 디코딩 디바이스는 상기 디스플레이 디바이스에 연결되는, 이미지 예측 시스템.
  33. 컴퓨터 판독 가능형 저장 매체로서,
    상기 컴퓨터 판독 가능형 저장 매체는 컴퓨터 프로그램을 저장하고, 상기 컴퓨터 프로그램은 제1항 내지 제16항 중 어느 한 항에 따른 방법을 구현하도록 프로세서에 의해 실행되는, 컴퓨터 판독 가능형 저장 매체.
KR1020217025090A 2019-01-08 2020-01-08 이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체 KR102616713B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020237043658A KR20240005108A (ko) 2019-01-08 2020-01-08 이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
CN201910016466 2019-01-08
CN201910016466.3 2019-01-08
CN201910173454 2019-03-07
CN201910173454.1 2019-03-07
CN201910219440.9 2019-03-21
CN201910219440 2019-03-21
CN201910696741.0A CN111669583A (zh) 2019-03-07 2019-07-30 图像预测方法、装置、设备、系统及存储介质
CN201910696741.0 2019-07-30
PCT/CN2020/070976 WO2020143684A1 (zh) 2019-01-08 2020-01-08 图像预测方法、装置、设备、系统及存储介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020237043658A Division KR20240005108A (ko) 2019-01-08 2020-01-08 이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체

Publications (2)

Publication Number Publication Date
KR20210107131A true KR20210107131A (ko) 2021-08-31
KR102616713B1 KR102616713B1 (ko) 2023-12-20

Family

ID=73655717

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217025090A KR102616713B1 (ko) 2019-01-08 2020-01-08 이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체
KR1020237043658A KR20240005108A (ko) 2019-01-08 2020-01-08 이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237043658A KR20240005108A (ko) 2019-01-08 2020-01-08 이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체

Country Status (9)

Country Link
US (3) US11388399B2 (ko)
EP (1) EP3907988A4 (ko)
JP (2) JP7317973B2 (ko)
KR (2) KR102616713B1 (ko)
CN (4) CN114173114B (ko)
AU (1) AU2020205376A1 (ko)
BR (1) BR112021013444A2 (ko)
CA (1) CA3125904A1 (ko)
MX (1) MX2021008340A (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114173114B (zh) * 2019-01-08 2022-09-23 华为技术有限公司 图像预测方法、装置、设备、系统及存储介质
US10958904B2 (en) 2019-02-01 2021-03-23 Tencent America LLC Method and apparatus for video coding
AU2019201649A1 (en) 2019-03-11 2020-10-01 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tree of blocks of video samples
KR20220024764A (ko) * 2019-07-19 2022-03-03 엘지전자 주식회사 Ibc를 이용한 영상 부호화/복호화 방법, 장치 및 비트스트림을 전송하는 방법
WO2021030747A1 (en) * 2019-08-15 2021-02-18 Beijing Dajia Internet Information Technology Co., Ltd. Small chroma block size restriction in video coding

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017034331A1 (ko) * 2015-08-27 2017-03-02 엘지전자 주식회사 영상 코딩 시스템에서 크로마 샘플 인트라 예측 방법 및 장치

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100525454C (zh) 2004-09-14 2009-08-05 华为技术有限公司 帧间预测模式的选择方法
JP4724061B2 (ja) * 2006-07-06 2011-07-13 株式会社東芝 動画像符号化装置
JP4921239B2 (ja) 2007-05-09 2012-04-25 キヤノン株式会社 画像処理装置およびその方法
CN101394565B (zh) 2008-10-20 2011-08-17 成都九洲电子信息系统有限责任公司 一种帧内预测方法
US8380860B2 (en) * 2010-11-09 2013-02-19 International Business Machines Corporation Reducing carbon footprint and providing power savings in session initiated protocol conferencing
US9848197B2 (en) 2011-03-10 2017-12-19 Qualcomm Incorporated Transforms in video coding
CN103748877B (zh) * 2011-08-17 2017-05-10 联发科技(新加坡)私人有限公司 帧内预测方法和装置
CN103828364B (zh) 2011-09-29 2018-06-12 夏普株式会社 图像解码装置、图像解码方法及图像编码装置
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
US9467701B2 (en) * 2012-04-05 2016-10-11 Qualcomm Incorporated Coded block flag coding
US9948939B2 (en) * 2012-12-07 2018-04-17 Qualcomm Incorporated Advanced residual prediction in scalable and multi-view video coding
EP2983360A4 (en) * 2013-04-05 2016-11-16 Mitsubishi Electric Corp COLOR IMAGE DEVICE, COLOR IMAGE DECODER, COLOR IMAGE PROCESS AND COLOR IMAGE DECODING METHOD
CN103237216B (zh) 2013-04-12 2017-09-12 华为技术有限公司 深度图像的编解码方法和编解码装置
CN103347187B (zh) * 2013-07-23 2016-08-10 北京师范大学 一种基于自适应方向预测离散小波变换的遥感影像压缩方法
CN103491369B (zh) 2013-09-18 2016-09-28 华为技术有限公司 一种帧间预测编码方法和编码器
CA3050482C (en) * 2013-11-14 2021-02-16 Hfi Innovation Inc. Method of video coding using prediction based on intra picture block copy
KR101737861B1 (ko) 2014-01-20 2017-05-19 한국전자통신연구원 변환 깊이 기반 dct 사이즈 결정 장치 및 방법
CN103914527B (zh) * 2014-03-28 2017-02-15 西安电子科技大学 一种基于新编码方式的遗传规划算法的图形图像识别与匹配方法
CN106716999B (zh) 2014-06-20 2019-08-09 寰发股份有限公司 用于视频编码的调色板预测器信令的方法
CN104202602B (zh) * 2014-08-18 2018-03-02 三星电子(中国)研发中心 执行视频编码的装置及方法
US10051277B2 (en) * 2014-11-06 2018-08-14 Mediatek Inc. Method for sub-block based palette coding
WO2016074147A1 (en) * 2014-11-11 2016-05-19 Mediatek Singapore Pte. Ltd. Separated coding tree for luma and chroma
WO2016154963A1 (en) 2015-04-01 2016-10-06 Mediatek Inc. Methods for chroma coding in video codec
US20180192076A1 (en) * 2015-06-16 2018-07-05 Sharp Kabushiki Kaisha Image decoding device image coding device
US10404992B2 (en) 2015-07-27 2019-09-03 Qualcomm Incorporated Methods and systems of restricting bi-prediction in video coding
WO2017030260A1 (ko) * 2015-08-19 2017-02-23 엘지전자(주) 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
US11223852B2 (en) 2016-03-21 2022-01-11 Qualcomm Incorporated Coding video data using a two-level multi-type-tree framework
US10623774B2 (en) * 2016-03-22 2020-04-14 Qualcomm Incorporated Constrained block-level optimization and signaling for video coding tools
US10284845B2 (en) * 2016-05-25 2019-05-07 Arris Enterprises Llc JVET quadtree plus binary tree (QTBT) structure with multiple asymmetrical partitioning
WO2017222331A1 (ko) 2016-06-24 2017-12-28 세종대학교 산학협력단 비디오 신호 처리 방법 및 장치
US10863186B2 (en) * 2016-08-26 2020-12-08 Sharp Kabushiki Kaisha Image decoding apparatus and image coding apparatus
JP6965887B2 (ja) 2016-09-12 2021-11-10 日本電気株式会社 イントラ予測モード決定方法、イントラ予測モード決定装置およびイントラ予測モード決定プログラム
CN116614647A (zh) 2016-11-08 2023-08-18 株式会社Kt 对视频进行解码和编码的方法、发送压缩数据的方法
MX2019008789A (es) * 2017-01-31 2019-09-11 Sharp Kk Sistemas y metodos para particionar una imagen en bloques de video para codificacion de video.
MX2019008641A (es) * 2017-01-31 2019-09-10 Sharp Kk Sistemas y metodos para escalar valores de nivel del coeficiente de transformada.
KR20180103733A (ko) * 2017-03-09 2018-09-19 주식회사 케이티 영상 부호화 또는 복호화 방법 및 장치
US10820017B2 (en) * 2017-03-15 2020-10-27 Mediatek Inc. Method and apparatus of video coding
CN108668136A (zh) * 2017-03-28 2018-10-16 华为技术有限公司 图像编/解码方法、视频编/解码器及视频编解码系统
JP6914722B2 (ja) 2017-05-11 2021-08-04 キヤノン株式会社 動画像符号化装置、動画像符号化方法及びプログラム
US20180367818A1 (en) * 2017-06-15 2018-12-20 Futurewei Technologies, Inc. Block Partition Structure in Video Compression
CN109151477B (zh) * 2017-06-28 2020-08-07 华为技术有限公司 一种图像数据的编码、解码方法及装置
CN112601084A (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 엘지전자 주식회사 비디오 신호의 컬러 컴포넌트에 대한 병렬 처리 방법 및 이를 위한 장치
CN112055964B (zh) 2018-04-30 2022-06-07 寰发股份有限公司 用于视频编解码中的独立编码树的语法交错方法和装置
WO2019244116A1 (en) 2018-06-21 2019-12-26 Beijing Bytedance Network Technology Co., Ltd. Border partition in video coding
CN112567750A (zh) * 2018-08-17 2021-03-26 联发科技股份有限公司 用于视频编解码的简化合并候选列表的方法和装置
AU2018233042A1 (en) * 2018-09-21 2020-04-09 Canon Kabushiki Kaisha Method, apparatus and system for encoding and decoding a tree of blocks of video samples
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
CN114173114B (zh) * 2019-01-08 2022-09-23 华为技术有限公司 图像预测方法、装置、设备、系统及存储介质
CN111416975B (zh) * 2019-01-08 2022-09-16 华为技术有限公司 预测模式确定方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017034331A1 (ko) * 2015-08-27 2017-03-02 엘지전자 주식회사 영상 코딩 시스템에서 크로마 샘플 인트라 예측 방법 및 장치

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
H. 265: High efficiency video coding. Recommendation ITU-T H.265, 2013.04.* *
Il-Koo Kim, et al., Block Partitioning Structure in the HEVC Standard, IEEE Tractions on Circuits and Systems for Video Technology, 2012.12.* *
Jackie Ma et al, Description of Core Experiment: Partitioning, JVET of ITU-T and ISO/IEC, JVET-J1021 version 6 (2018.06.19.) *

Also Published As

Publication number Publication date
KR102616713B1 (ko) 2023-12-20
CA3125904A1 (en) 2020-07-16
CN114157864B (zh) 2022-10-28
CN114157864A (zh) 2022-03-08
CN114173114A (zh) 2022-03-11
KR20240005108A (ko) 2024-01-11
US20240146909A1 (en) 2024-05-02
JP2023134742A (ja) 2023-09-27
BR112021013444A2 (pt) 2021-10-19
CN114245113A (zh) 2022-03-25
CN112075077B (zh) 2022-01-11
EP3907988A4 (en) 2022-06-29
CN112075077A (zh) 2020-12-11
US20210344910A1 (en) 2021-11-04
US11388399B2 (en) 2022-07-12
CN114173114B (zh) 2022-09-23
CN114245113B (zh) 2023-04-07
US20220329788A1 (en) 2022-10-13
US11849109B2 (en) 2023-12-19
AU2020205376A1 (en) 2021-08-12
EP3907988A1 (en) 2021-11-10
MX2021008340A (es) 2021-09-30
JP2022518378A (ja) 2022-03-15
JP7317973B2 (ja) 2023-07-31

Similar Documents

Publication Publication Date Title
KR102616713B1 (ko) 이미지 예측 방법, 장치 및 시스템, 디바이스 및 저장 매체
EP3852370A1 (en) Video image prediction method and apparatus
US11736706B2 (en) Video decoding method and apparatus, and decoding device
US11924438B2 (en) Picture reconstruction method and apparatus
US20220094947A1 (en) Method for constructing mpm list, method for obtaining intra prediction mode of chroma block, and apparatus
WO2020114394A1 (zh) 视频编解码方法、视频编码器和视频解码器
US20230370597A1 (en) Picture partitioning method and apparatus
KR20210095945A (ko) 비디오 픽처 디코딩 및 인코딩 방법 및 장치
WO2022166462A1 (zh) 编码、解码方法和相关设备
EP3890322A1 (en) Video coder-decoder and corresponding method
WO2020259353A1 (zh) 语法元素的熵编码/解码方法、装置以及编解码器
KR102603966B1 (ko) 비디오 인코더, 비디오 디코더 및 대응하는 방법
CN111327894A (zh) 块划分方法、视频编解码方法、视频编解码器
US11917203B2 (en) Non-separable transform method and device
WO2020143684A1 (zh) 图像预测方法、装置、设备、系统及存储介质
CN111669583A (zh) 图像预测方法、装置、设备、系统及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant