KR20230111254A - 인트라 예측 방법, 인코더, 디코더 및 저장 매체 - Google Patents

인트라 예측 방법, 인코더, 디코더 및 저장 매체 Download PDF

Info

Publication number
KR20230111254A
KR20230111254A KR1020237022402A KR20237022402A KR20230111254A KR 20230111254 A KR20230111254 A KR 20230111254A KR 1020237022402 A KR1020237022402 A KR 1020237022402A KR 20237022402 A KR20237022402 A KR 20237022402A KR 20230111254 A KR20230111254 A KR 20230111254A
Authority
KR
South Korea
Prior art keywords
mode
intra prediction
prediction mode
determining
current block
Prior art date
Application number
KR1020237022402A
Other languages
English (en)
Inventor
판 왕
Original Assignee
광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 filed Critical 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드
Publication of KR20230111254A publication Critical patent/KR20230111254A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/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/11Selection of coding mode or of prediction mode among a plurality of spatial 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • 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/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

Abstract

본 출원의 실시예는 인트라 예측 방법, 인코더, 디코더 및 저장 매체를 개시하고, 상기 인트라 예측 방법에 있어서, 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하고; 및 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정한다. 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 모드 리스트를 결정하고; 상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 및 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정한다.

Description

인트라 예측 방법, 인코더, 디코더 및 저장 매체
관련 출원의 상호 참조
본 출원은 출원 번호가 PCT/CN2020/133708이고, 출원일이 2020년 12월 3일인 국제 특허 출원에 기반하여 제출하였고, 상기 국제 특허 출원의 우선권을 주장하는 바, 상기 국제 특허 출원의 모든 내용은 참조로서 본 출원에 인용된다.
본 출원의 실시예는 이미지 처리 기술분야에 관한 것으로, 특히 인트라 예측 방법, 인코더, 디코더 및 저장 매체에 관한 것이다.
자연 비디오에서 나타나는 더욱 정교한 가장자리 방향을 포착하기 위해, 다기능 비디오 코딩(Versatile Video Coding, VVC)에서는 비디오 압축 표준(High Efficiency Video Coding, HEVC)에서 정의된 33가지 인트라 밝기 예측 각도 모드를 65가지로 확장하고, 또한 두가지 비각도 모드가 존재하며, 즉 번호가 0인 그라데이션 플랫 Planar 모드 및 번호가 1인 직류(Direct CUrrent, DC) 모드가 존재한다.
일반적인 인트라 예측은 DC, Planar, 이중 선형 필터링 Bilinear 등 모드를 포함하지만, 상기 모드들은 모두 간단한 무늬의 예측만 처리할 수 있고; 각도 모드가 갈수록 많아지더라도, 상기 모드들의 예측은 한 각도의 직선만을 따라 수행된다. 이로부터 알수 있다시피, 현재의 인트라 예측 모드는 간단한 무늬의 예측만 처리할 수 있다. 복잡한 무늬의 경우, 예측을 수행할 때 더욱 작은 블록으로 구획되어야 하기에, 복잡도가 비교적 높고, 상응하게, 인코딩 및 디코딩 과정에서 필요되는 저장 공간 및 전체 시간이 크게 증가함으로써, 인코딩 및 디코딩 효율이 저하된다.
본 출원의 실시예는 인트라 예측 방법, 인코더, 디코더 및 저장 매체를 제공함으로써, 인트라 예측 품질을 향상시키는 동시에, 복잡도를 저하시킬 수 있음으로써, 압축 성능을 향상시킨다.
본 출원의 실시예의 기술방안은 아래와 같이 구현될 수 있다.
제1 측면에 있어서, 본 출원의 실시예는 인트라 예측 방법을 제공하고, 인코더에 적용되고, 상기 인트라 예측 방법은,
현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하는 단계;
상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계;
상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하는 단계; 및
상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계를 포함한다.
제2 측면에 있어서, 본 출원의 실시예는 인트라 예측 방법을 제공하고, 인코더에 적용되고, 상기 인트라 예측 방법은,
현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 모드 리스트를 결정하는 단계;
상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계; 및
상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계를 포함한다.
제3 측면에 있어서, 본 출원의 실시예는 인트라 예측 방법을 제공하고, 디코더에 적용되고, 상기 인트라 예측 방법은,
코드 스트림을 해석하여, 현재 블록의 인트라 예측 모드 파라미터를 결정하는 단계;
상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하는 단계;
상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계;
상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하는 단계; 및
상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계를 포함한다.
제4 측면에 있어서, 본 출원의 실시예는 인트라 예측 방법을 제공하고, 디코더에 적용되고, 상기 인트라 예측 방법은,
코드 스트림을 해석하여, 현재 블록의 인트라 예측 모드 파라미터를 결정하는 단계;
상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 모드 리스트를 결정하는 단계;
상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계; 및
상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계를 포함한다.
제5 측면에 있어서, 본 출원의 실시예는 인코더를 제공하고, 상기 인코더는 제1 결정부를 포함하고,
상기 제1 결정부는, 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하고; 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하도록 구성되고;
상기 제1 결정부는 또한, 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 모드 리스트를 결정하고; 상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하도록 구성된다.
제6 측면에 있어서, 본 출원의 실시예는 인코더를 제공하고, 상기 인코더는 제1 프로세서, 상기 제1 프로세서가 실행 가능한 명령어가 저장된 제1 메모리를 포함하며, 상기 제1 프로세서에 의해 상기 명령어가 실행될 경우 위에서 전술한 인트라 예측 방법을 구현한다.
제7 측면에 있어서, 본 출원의 실시예는 디코더를 제공하고, 상기 디코더는 디코딩부, 제2 결정부를 포함하며,
상기 디코딩부는, 코드 스트림을 해석하도록 구성되고;
상기 제2 결정부는, 현재 블록의 인트라 예측 모드 파라미터를 결정하고; 상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하며; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하고; 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하도록 구성되고;
상기 제2 결정부는 또한, 현재 블록의 인트라 예측 모드 파라미터를 결정하고; 상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 모드 리스트를 결정하며; 상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하고; 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하도록 구성된다.
제8 측면에 있어서, 본 출원의 실시예는 디코더를 제공하고, 상기 디코더는 제2 프로세서, 상기 제2 프로세서가 실행 가능한 명령어가 저장된 제2 메모리를 포함하며, 상기 제2 프로세서에 의해 상기 명령어가 실행될 경우, 위에서 전술한 인트라 예측 방법을 구현한다.
제9 측면에 있어서, 본 출원의 실시예는 컴퓨터 저장 매체를 제공하고, 상기 컴퓨터 저장 매체에는 컴퓨터 프로그램이 저장되고, 상기 컴퓨터 프로그램이 제1 프로세서 및 제2 프로세서에 의해 실행될 경우, 위에서 전술한 인트라 예측 방법을 구현한다.
본 출원의 실시예는 인트라 예측 방법, 인코더, 디코더 및 저장 매체를 제공하고, 상기 인트라 예측 방법에 있어서, 한 측면으로, 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하고; 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정한다. 다른 한 측면으로, 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 모드 리스트를 결정하고; 상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정한다. 다시 말해, 본 출원의 실시예에 있어서, 인코더 및 디코더는 두가지 상이한 인트라 예측 모드를 통해 현재 블록의 두개의 상이한 예측 블록을 결정할 수 있고, 다양한 가중치 행렬을 조합하는 것을 통해, 최종적으로 더욱 복잡한 예측 블록을 얻을 수 있음으로써, 예측의 정확성을 향상시키는 동시에, 인코더 및 디코더는 또한 가중치 행렬과 예측 모드 간의 관련성을 통해 MPM 리스트의 구축을 수행할 수 있음으로써, 복잡도를 크게 저하시킬 수 있고, 다시 말해, 본 출원에서 제안한 인트라 예측 방법은, 인트라 예측 품질을 향상시키는 동시에, 복잡도를 저하시킬 수 있음으로써, 압축 성능을 향상시킨다.
도 1은 가중치 할당 예시도 1이다.
도 2는 가중치 할당 예시도 2이다.
도 3은 인트라 예측의 예시도 1이다.
도 4는 인트라 예측의 예시도 2이다.
도 5A 내지 5I는 인트라 예측의 예시도 3이다.
도 6은 인트라 예측 모드의 예시도 1이다.
도 7은 인트라 예측 모드의 예시도 2이다.
도 8은 인트라 예측 모드의 예시도 3이다.
도 9는 비디오 코딩 시스템의 구성 블록도이다.
도 10은 비디오 디코딩 시스템의 구성 블록도이다.
도 11은 인트라 예측 방법의 구현 흐름 예시도 1이다.
도 12는 SAWP 모드의 예시도이다.
도 13은 인트라 예측의 예시도 3이다.
도 14는 인접한 블록의 예시도이다.
도 15는 클러스터링 예시도이다.
도 16은 인트라 예측 모드 선택의 예시도이다.
도 17은 인트라 예측 방법의 구현 흐름 예시도 2이다.
도 18은 인트라 예측 방법의 구현 흐름 예시도 3이다.
도 19는 인트라 예측 방법의 구현 흐름 예시도 4이다.
도 20은 본 출원의 실시예에서 제안한 인코더의 구성 구조 예시도 1이다.
도 21은 본 출원의 실시예에서 제안한 인코더의 구성 구조 예시도 2이다.
도 22는 본 출원의 실시예에서 제안한 디코더의 구성 구조 예시도 1이다.
도 23은 본 출원의 실시예에서 제안한 디코더의 구성 구조 예시도 2이다.
아래에, 본 출원의 실시예에서의 도면을 결합하여 본 출원의 실시예에서의 기술방안을 명확하고 완전하게 설명한다. 이해할 수 있는 것은, 여기서 설명된 구체적인 실시예는 다만 관련 출원을 해석하기 위한 것이고, 상기 출원에 대한 한정이 아니다. 또한 설명해야 할 것은, 설명의 편의를 위해, 도면에는 연관 출원에 관련된 부분만 도시한다.
현재, 일반적인 비디오 인코딩 및 디코딩 표준은 블록 기반 하이브리드 코딩 프레임워크를 기반으로 한다. 비디오 이미지에서의 각 프레임은 동일한 크기(예를 들어 128×128, 64×64 등)의 정사각형인 최대 코딩 유닛(Largest Coding Unit, LCU)으로 분할되고, 각 최대 코딩 유닛은 또한 규칙에 따라 직사각형의 코딩 유닛(Coding Unit, CU)으로 구획될 수 있으며; 코딩 유닛은 또한 더욱 작은 예측 유닛(Prediction Unit, PU)으로 구획될 수 있다. 구체적으로, 하이브리드 코딩 프레임워크는 예측, 변환(Transform), 양자화(Quantization), 엔트로피 코딩(EntropyCoding), 루프 필터링(In Loop Filter)과 같은 모듈을 포함할 수 있고; 여기서, 예측 모듈은 인트라 예측(intraPrediction) 및 인터 예측(interPrediction)을 포함할 수 있고, 인터 예측은 모션 추정(motion estimation) 및 모션 보상(motion compensation)을 포함할 수 있다. 비디오 이미지의 한 프레임 내 인접한 픽셀 간은 매우 강한 관련성이 존재하기 때문에, 비디오 인코딩 및 디코딩 기술에서 인트라 예측 방식을 사용하면 인접한 픽셀 간의 공간 중복을 제거할 수 있지만; 비디오 이미지에서의 인접한 프레임 간도 매우 강한 유사성이 존재하기 때문에, 비디오 인코딩 및 디코딩 기술에서 인터 예측 방식을 사용하면 인접한 프레임 간의 시간 중복을 제거함으로써, 인코딩 및 디코딩 효율을 향상시킬 수 있다.
비디오 코덱의 기본 흐름은 다음과 같다. 인코딩단에서, 한 프레임 이미지를 블록으로 구획하고, 현재 블록에 대해 인트라 예측 또는 인터 예측을 사용하여 현재 블록의 예측 블록을 생성하고, 현재 블록의 원래 블록에서 예측 블록을 감하여 잔차 블록을 얻고, 잔차 블록에 대해 변환, 양자화를 수행하여, 양자화 계수 행렬을 얻으며, 양자화 계수 행렬에 대해 엔트로피 코딩을 수행하여 코드 스트림에 출력한다. 디코딩단에서, 현재 블록에 대해 인트라 예측 또는 인터 예측을 사용하여 현재 블록의 예측 블록을 생성하고, 다른 한 측면으로, 코드 스트림을 해석하여 양자화 계수 행렬을 얻으며, 양자화 계수 행렬에 대해 역양자화, 역변환을 수행하여 잔차 블록을 얻으며, 예측 블록 및 잔차 블록을 가하여 재구축된 블록을 얻는다. 재구축된 블록은 재구축된 이미지를 구성하고, 이미지 또는 블록에 기반하여 재구축된 이미지에 대해 루프 필터링를 수행하여 디코딩된 이미지를 얻는다. 인코딩단도 디코딩된 이미지를 획득하기 위해 디코딩단과 유사한 조작이 필요하다. 디코딩된 이미지는 후속 프레임을 위해 인터 예측의 참조 프레임으로 사용될 수 있다. 인코딩단에 의해 결정된 블록 구획 정보, 예측, 변환, 양자화, 엔트로피 코딩, 루프 필터링 등 모드 정보 또는 파라미터 정보는 필요한 경우 코드 스트림에 출력되어야 한다. 디코딩단은 해석 및 기존의 정보를 분석하는 것을 통해 인코딩단과 동일한 블록 구획 정보, 예측, 변환, 양자화, 엔트로피 코딩, 루프 필터링 등 모드 정보 또는 파라미터 정보를 결정함으로써, 인코딩단이 획득한 디코딩된 이미지 및 디코딩단이 획득한 디코딩된 이미지의 동일함을 보장한다. 인코딩단이 획득한 디코딩된 이미지는 일반적으로 재구축된 이미지로도 지칭된다. 예측을 수행하는 경우 현재 블록을 예측 유닛으로 구획할 수 있고, 변환을 수행하는 경우 현재 블록을 변환 유닛으로 구획할 수 있으며, 예측 유닛 및 변환 유닛의 구획은 상이할 수 있다. 위에서 전술한 내용은 블록에 기반한 하이브리드 코딩 프레임워크에서의 비디오 코덱의 기본 흐름이고, 기술의 발전에 따라, 상기 프레임워크 또는 흐름의 일부 모듈 또는 단계는 최적화될 수 있고, 본 출원의 실시예는 상기 블록에 기반한 하이브리드 코딩 프레임워크에서의 비디오 코덱의 기본 흐름에 적용되지만, 상기 프레임워크 및 흐름에 한정되지 않는다.
현재 블록(CUrrent block)은 현재 코딩 유닛(CU)이거나 현재 예측 유닛(PU) 등일 수 있다.
인터 예측은 디코딩된 또는 재구축된 이미지 또는 참조 프레임으로 지칭되는 정보를 사용하여 현재 블록에 대해 예측을 수행한다. 인터 예측은 모션 정보를 사용하여 참조 프레임에서 참조 블록을 찾고, 참조 블록에 따라 예측 블록을 생성한다. 모션 정보는 참조 프레임이 위치한 참조 프레임 리스트, 참조 프레임 인덱스 및 모션 벡터를 포함한다. 모션 벡터는 일체형 픽셀이거나 서브 픽셀일 수 있으며, 모션 벡터가 서브 픽셀이면, 참조 프레임에서 보간 필터링을 사용하여 필요되는 서브 픽셀의 블록을 생성해야 하고, 여기서 모션 벡터에 따라 찾은 참조 프레임에서의 일체형 픽셀 또는 서브 픽셀의 블록은 참조 블록으로 지칭된다. 일부 기술은 참조 블록을 예측 블록으로 직접 사용하고, 일부 기술은 참조 블록의 기초에서 재처리하여 예측 블록을 생성한다. 참조 블록의 기초에서 재처리하여 예측 블록을 생성하는 것은 참조 블록을 예측 블록으로 사용한 다음 예측 블록의 기초에서 처리하여 새로운 예측 블록을 생성하는 것으로 이해할 수 있다.
현재 제정 중인 다기능 비디오 코딩(Versatile Video Coding, VVC) 비디오 인코딩 및 디코딩 표준에는, 기하학적 구획 예측 모드(GeometricpartitioningMode, GPM)로 지칭되는 인터 예측 모드가 존재한다. 현재 제정 중인 비디오 인코딩 및 디코딩 표준(Audio Video coding Standard, AVS) 비디오 인코딩 및 디코딩 표준에는, 각도 가중 예측 모드(Angular Weightedprediction, AWP)로 지칭되는 인터 예측 모드가 존재한다. 이러한 두가지 모드는 명칭, 구체적인 구현 형태가 상이하지만, 원리적으로는 공통점이 존재한다.
설명해야 할 것은, 기존의 단방향 예측은 현재 블록과 동일한 크기인 하나의 참조 블록을 찾는 것인 반면, 기존의 양방향 예측은 현재 블록과 동일한 크기인 두개의 참조 블록을 사용하고, 예측 블록 내의 각 포인트의 픽셀값은 두개의 참조 블록의 대응 위치의 평균값이며, 즉 하나의 참조 블록의 모든 포인트는 모두 50%의 비율을 점유한다. 양방향 가중 예측은 두개의 참조 블록의 비율로 하여금 상이하도록 할 수 있고, 예를 들어 첫 번째 참조 블록에서 모든 포인트는 모두 75%의 비율을 점유하고, 두 번째 참조 블록에서 모든 포인트는 모두 25%의 비율을 점유한다. 그러나 동일한 참조 블록에서의 모든 포인트의 비율은 모두 동일하다. 디코딩단 모션 벡터 수정(Decoder sideMotion Vector Refinement, DMVR) 기술, 양방향 광학 흐름(Bi-directional Optical Flow, BIO)을 사용하는 것 등과 같은 다른 일부 최적화 방식은 참조 픽셀 또는 예측 픽셀로 하여금 일부 변화가 발생하도록 하고, GPM 또는 AWP는 현재 블록 크기와 동일한 두개의 참조 블록을 사용하지만, 일부 픽셀 위치는 첫 번째 참조 블록의 대응 위치의 픽셀값을 100%로 사용하고, 일부 픽셀 위치는 두 번째 참조 블록의 대응 위치의 픽셀값을 100%로 사용하며, 경계 영역에서, 일정한 비율에 따라 이 두개의 참조 블록의 대응 위치의 픽셀값을 사용한다. 이러한 가중치의 구체적인 할당 방법은, GPM 또는 AWP의 예측 모드에 의해 결정되거나, GPM 또는 AWP가 현재 블록 크기와 상이한 두개의 참조 블록을 사용하는 것으로도 간주할 수 있으며, 즉 각각 필요한 부분을 참조 블록으로 사용하는 것으로 간주할 수 있다. 즉 가중치가 0이 아닌 부분을 참조 블록으로 사용하고, 가중치가 0인 부분을 제거한다.
예시적으로, 도 1은 가중치 할당 예시도 1이고, 도 1에 도시된 바와 같이, 본 출원의 실시예에서 제공한 GPM이 64×64의 현재 블록에서의 여러가지 구획 모드의 가중치 할당 예시도를 도시하고, 여기서, GPM은 64가지 구획 모드가 존재한다. 도 2는 가중치 할당 예시도 2이고, 도 2에 도시된 바와 같이, 본 출원의 실시예에서 제공한 AWP가 64×64의 현재 블록에서의 여러가지 구획 모드의 가중치 할당 예시도를 도시하고, 여기서, AWP는 56가지 구획 모드가 존재한다. 도 2든 도 3이든, 각 구획 모드에서, 영역 2는 첫 번째 참조 블록의 대응 위치의 가중치 값이 0%임을 표시하고, 영역 1은 첫 번째 참조 블록의 대응 위치의 가중치 값이 100%임을 표시하고, 회색 영역은 색상 깊이의 상이함에 따라 첫 번째 참조 블록의 대응 위치의 가중치 값이 0%보다 크고 100%보다 작은 가중치 값이고, 두 번째 참조 블록의 대응 위치의 가중치 값은 100%에서 첫 번째 참조 블록의 대응 위치의 가중치 값을 감하는 것임을 표시한다 .
GPM 및 AWP의 가중치 도출 방법은 상이하다. GPM은 각 모드에 따라 각도 및 오프셋량을 결정한 다음, 각 모드의 가중치 행렬을 계산한다. AWP는 먼저 1차원 가중 라인을 만든 다음, 인트라 각도 예측과 유사한 방법을 사용하여 1차원 가중 라인을 전체 행렬에 분산시킨다.
이해해야 할 것은, 초기의 인코딩 및 디코딩 기술은 CU, PU 또는 변환 유닛(Transform Unit, TU)의 구획에 관계없이 직사격형 구획 방식만이 존재한다. GPM 또는 AWP는 모두 구획을 수획하지 않고 예측된 비직사각형의 구획 효과를 구현한다. GPM 및 AWP는 마스크(mask)를 사용하고, 위에서 전술한 가중치 도는, 두개의 참조 블록의 가중치이다. 이 마스크는 두개의 참조 블록이 예측 블록을 생성할 경우의 가중치를 결정하거나, 예측 블록의 일부분 위치가 첫 번째 참조 블록에서 오고, 일부분 위치가 두 번째 참조 블록에서 오는 것으로 간단히 이해할 수 있으며, 과도 영역(blending area)은 두개의 참조 블록의 대응 위치를 가중하여 얻음으로써, 과도로 하여금 더 평활해지도록 한다. GPM 및 AWP는 구획 라인을 따라 현재 블록을 두개의 CU 또는 PU를 구획하지 않으므로, 예측 후의 잔차의 변환, 양자화, 역변환, 역양자화 등도 현재 블록을 하나의 전체로 처리한다.
현재 블록에 사용되는 모션 정보는 저장할 수 있다. 현재 프레임의 후속 디코딩 및 인코딩되는 블록은 인접한 위치 관계에 따라 이전의 인코딩 및 디코딩된 블록을 사용할 수 있고, 예를 들어 인접한 블록의 모션 정보를 사용할 수 있다. 이는 공역에서의 관련성을 이용한 것이므로, 이러한 인코딩 및 디코딩된 모션 정보를 공역에서의 모션 정보로 지칭한다. 현재 프레임의 각 블록에 사용되는 모션 정보는 저장될 수 있다. 후속 인코딩 및 디코딩되는 프레임은 참조 관계에 따라 이전의 인코딩 및 디코딩된 프레임의 모션 정보를 사용할 수 있다. 이는 시간 도메인에서의 관련성을 이용한 것이므로, 이러한 인코딩 및 디코딩된 프레임의 모션 정보는 시간 도메인에서의 모션 정보로 지칭된다. 현재 프레임의 각 블록에 사용되는 모션 정보의 저장 방법은 일반적으로 4x4 행렬과 같은 하나의 고정된 크기의 행렬을, 하나의 최소 유닛으로 사용하고, 각 최소 유닛은 단독으로 한 그룹의 모션 정보를 저장한다. 이와 같이 하나의 블록을 인코딩 및 디코딩을 할 때마다, 해당 위치에 대응되는 이러한 최소 유닛은 이 블록의 모션 정보를 저장할 수 있다. 이와 같이 공역에서의 모션 정보 또는 시간 도메인에서의 모션 정보를 사용할 경우 직접 위치에 따라 상기 위치에 대응되는 모션 정보를 찾을 수 있다. 예를 들어 하나의 16x16의 블록이 기존의 단방향 예측을 사용하면, 이 블록에 대응되는 모든 4x4개의 최소 유닛은 모두 이 단방향 예측의 모션 정보를 저장한다. 하나의 블록이 GPM 또는 AWP를 사용하면, 이 블록에 대응되는 모든 최소 유닛은 GPM 또는 AWP의 모드, 첫 번째 모션 정보 및 두 번째 모션 정보 및 각 최소 유닛의 위치에 따라 각 최소 유닛에 의해 저장된 모션 정보를 결정한다. 일 방법은 하나의 최소 유닛에 대응되는 4x4의 픽셀이 모두 첫 번째 모션 정보로부터 온 것이면, 이 최소 유닛은 첫 번째 모션 정보를 저장하고, 하나의 최소 유닛에 대응되는 4x4의 픽셀이 모두 두 번째 모션 정보로부터 온 것이면, 이 최소 유닛은 두 번째 모션 정보를 저장한다. 하나의 최소 유닛에 대응되는 4x4의 픽셀이 첫 번째 모션 정보로부터 올 뿐만아니라 두 번째 모션 정보로부터로도 오면, AWP는 그중의 한 모션 정보를 선택하여 저장하고; GPM은 두개의 모션 정보가 상이한 참조 프레임 리스트를 지향하면, 그들을 양방향 모션 정보로 조합하여 저장하고, 그렇지 않으면 두 번째 모션 정보만을 저장한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, GPM 또는 AWP는 인터 예측 기술에 속하고, GPM 또는 AWP는 코드 스트림에서 하나의 GPM 또는 AWP가 사용되는지 여부를 나타내는 플래그(flag)를 전송해야 하고, 상기 flag는 현재 블록이 GPM 또는 AWP를 사용하는지 여부를 지시할 수 있다. GPM 또는 AWP를 사용하면, 인코더는 코드 스트림에서 구체적으로 사용되는 모드를 전송해야 하고, 즉 GPM의 64가지 구획 모드 중의 하나, 또는 AWP의 56가지 구획 모드 중의 하나 및 두개의 단방향 모션 정보의 인덱스 값을 전송해야 한다. 다시 말해, 현재 블록의 경우, 디코더는 코드 스트림을 해석하는 것을 통해 GPM 또는 AWP가 사용되는지 여부에 대한 정보를 얻을 수 있고, GPM 또는 AWP를 사용하는 것이 결정되면, 디코더는 GPM 또는 AWP의 예측 모드 파라미터 및 두개의 모션 정보 인덱스 값을 해석할 수 있고, 예를 들어 현재 블록이 두개의 파티션으로 구획될 수 있으면, 제1 파티션에 대응되는 제1 인덱스 값 및 제2 파티션에 대응되는 제2 인덱스 값을 해석할 수 있다.
구체적으로, GPM 모드의 경우, GPM을 사용하면, 코드 스트림에서 GPM에서의 GPM의 구체적인 구획 모드와 같은 예측 모드 파라미터가 전송되고; 일반적인 경우, GPM에는 64가지 구획 모드가 포함된다. 구체적으로, AWP 모드의 경우, AWP을 사용하면, 코드 스트림에서 AWP에서의 AWP의 구체적인 구획 모드와 같은 예측 모드 파라미터가 전송되고; 일반적인 경우, AWP에는 56가지 구획 모드가 포함된다.
인터 예측 모드에서, 예를 들어 GPM 및 AWP은 모두 두개의 단방향 모션 정보를 사용하여 두개의 참조 블록을 찾아야 한다. 현재의 구현 방식은 인코더측에서 현재 블록의 이전 인코딩/디코딩된 부분의 관련 정보를 이용하여 하나의 단방향 모션 정보 후보 리스트를 구축하고, 단방향 모션 정보 후보 리스트에서 단방향 모션 정보를 선택하며, 이 두개의 단방향 모션 정보가 단방향 모션 정보 후보 리스트에서의 인덱스 값(index)을 코드 스트림에 기입하는 것이다. 디코더측에서는 동일한 방식을 사용하고, 즉 현재 블록의 이전 디코딩된 부분의 관련 정보를 이용하여 하나의 단방향 모션 정보 후보 리스트를 구축하고, 이 단방향 모션 정보 후보 리스트와 인코더측에서 구축된 후보 리스트는 반드시 동일한 것이다. 이와 같이, 코드 스트림에서 두개의 단방향 모션 정보의 인덱스 값을 해석한 다음, 단방향 모션 정보 후보 리스트에서 이 두개의 단방향 모션 정보를 찾고 즉 현재 블록에 사용되어야 하는 두개의 단방향 모션 정보를 찾는다.
다시 말해, 본 출원에서 설명된 단방향 모션 정보는, (x, y)의 값이고 같은 모션 벡터 정보 및 참조 프레임 리스트 및 참조 프레임 리스트에서의 참조 프레임 인덱스 값과 같은 대응되는 참조 프레임 정보를 포함할 수 있다. 일 표시 방식은 두개의 참조 프레임 리스트의 참조 프레임 인덱스 값을 기록하는 것이고, 그중 하나의 참조 프레임 리스트에 대응되는 참조 프레임 인덱스 값은 0, 1, 2 등과 같이 유효하고; 다른 하나의 참조 프레임 리스트에 대응되는 참조 프레임 인덱스 값은 -1과 같이 무효하다. 참조 프레임 인덱스 값이 유효한 참조 프레임 리스트는 현재 블록의 모션 정보에 의해 사용되는 참조 프레임 리스트이고, 참조 프레임 인덱스 값에 따라 상기 참조 프레임 리스트에서 대응되는 참조 프레임을 찾을 수 있다. 각 참조 프레임 리스트는 모두 하나의 대응되는 모션 벡터가 존재하고, 유효한 참조 프레임 리스트에 대응되는 모션 벡터는 유효한 것이고, 무효한 참조 프레임 리스트에 대응되는 모션 벡터는 무효한 것이다. 디코더는 단방향 모션 정보에서의 참조 프레임 정보를 통해 필요되는 참조 프레임을 찾을 수 있고, 현재 블록의 위치 및 모션 벡터 즉 (x, y)의 값에 따라 참조 프레임에서 참조 블록을 찾을 수 있음으로써, 현재 블록의 인터 예측값을 결정한다.
인트라 예측 방법은 현재 블록 주변의 인코딩 및 디코딩된 재구축된 픽셀을 참조 픽셀로 사용하여 현재 블록에 대해 예측을 수행한다. 도 3은 인트라 예측의 예시도 1이고, 도 3에 도시된 바와 같이, 현재 블록의 크기는 4x4이고, 현재 블록의 왼쪽 일 행 및 위쪽 일 열의 픽셀은 현재 블록의 참조 픽셀이고, 인트라 예측은 이러한 참조 픽셀을 사용하여 현재 블록에 대해 예측을 수행한다. 이러한 참조 픽셀은 모두 얻은 것일 수 있고, 즉 모두 인코딩 및 디코딩 되었다. 일부분은 얻을 수 없을수도 있으며, 예를 들어 현재 블록이 전체 프레임의 가장 좌측에 위치하면, 현재 블록의 왼쪽의 참조 픽셀은 얻을 수 없다. 또는 현재 블록을 인코딩 및 디코딩하는 경우, 현재 블록의 왼쪽 아래의 부분이 아직 인코딩 및 디코딩되지 않으면, 왼쪽 아래의 참조 픽셀도 얻을 수 없다. 참조 픽셀을 얻을 수 없는 경우, 얻을 수 있는 참조 픽셀 또는 일부 값 또는 일부 방법을 사용하여 충진할 수 있거나 충진하지 않을 수 있다.
도 4는 인트라 예측의 예시도 2이고, 도 4에 도시된 바와 같이, 다중 참조 라인 인트라 예측 방법(Multiple reference line, MRL)은 더욱 많은 참조 픽셀을 사용할 수 있음으로써 인코딩 및 디코딩 효율을 향상시키고, 예를 들어, 4개의 참조 행/열을 현재 블록의 참조 픽셀로 사용할 수 있다.
더 나아가, 인트라 예측은 여러가지 예측 모드가 존재하고, 도 5A 내지 5I는 인트라 예측의 예시도 3이고, 도 5A 내지 5I에 도시된 바와 같이, H.264에서 4x4의 블록에 대해 인트라 예측을 수행하는 것은 주로 9가지 모드를 포함할 수 있다. 여기서, 도 5A에 도시된 모드 0은 현재 블록 위의 픽셀을 수직 방향에 따라 현재 블록에 복사하여 예측값으로 사용하고, 도 5B에 도시된 모드 1은 왼쪽의 참조 픽셀을 수평 방향에 따라 현재 블록에 복사하여 예측값으로 사용하며, 도 5C에 도시된 모드 2 직류 DC는 A 내지 D 및 I 내지 L 이 8개의 포인트의 평균값을 모든 포인트의 예측값으로 사용하고, 도 5D 내지 5I에 도시된 모드3 내지 8은 각각 특정된 각도에 따라 참조 픽셀을 현재 블록의 대응 위치에 복사하고, 현재 블록의 일부 위치가 참조 픽셀에 정확히 대응될 수 없기 때문에, 참조 픽셀의 가중 평균값을 사용해야 하거나, 또는 보간된 참조 픽셀의 서브 픽셀을 사용해야 한다.
이외에, Planar 모드 등이 있으며, 기술의 발전 및 블록의 확대에 따라, 각도 예측 모드도 갈수록 많아진다. 도 6은 인트라 예측 모드의 예시도 1이고, 도 6에 도시된 바와 같이, 예를 들어 HEVC에 의해 사용되 는 인트라 예측 모드는 Planar, DC 및 33가지 각도 모드 총 35가지 예측 모드가 존재한다. 도 7은 인트라 예측 모드의 예시도 2이고, 도 7에 도시된 바와 같이, VVC에 의해 사용되는 인트라 모드는 Planar, DC 및 65가지 각도 모드 총 67가지 예측 모드가 존재한다. 도 8은 인트라 예측 모드의 예시도 3이고, 도 8에 도시된 바와 같이, AVS3는 DC, Planar, Bilinear 및 63가지 각도 모드 총 66가지 예측 모드를 사용한다.
또한 일부 기술은 참조 픽셀의 서브 픽셀 보간 개선, 예측 픽셀에 대해 필터링을 수행하는 것 등과 같은 예측에 대해 개선을 수행하는 것이다. 예를 들어 AVS3에서의 다중 조합 인트라 예측 필터(multipleintraprediction filter, MIPF)는 상이한 블록 크기에 대해, 상이한 필터를 사용하여 예측값을 생성한다. 동일한 블록 내의 상이한 위치의 픽셀의 경우, 참조 픽셀과 비교적 가까운 픽셀에 필터를 사용하여 예측값을 생성하고, 참조 픽셀과 비교적 먼 픽셀에 다른 하나의 필터를 사용하여 예측값을 생성한다. AVS3에서의 인트라 예측 필터(intraprediction filter, IPF)와 같은 예측 픽셀에 대해 필터링을 수행하는 기술은, 예측값에 대해 참조 픽셀을 사용하여 필터링을 수행할 수 있다.
인트라 예측에서 가장 가능성이 높은 모드 리스트(MostprobableModes List, MPM)의 인트라 모드 인코딩 기술을 사용하여 인코딩 및 디코딩 효율을 향상시킬 수 있다. 주변의 인코딩 및 디코딩된 블록을 이용하는 인트라 예측 모드 및 인접한 모드와 같은 주변의 인코딩 및 디코딩된 블록의 인트라 예측 모드에 따라 도출된 인트라 예측 모드, DC, Planar, Bilinear 모드와 같은 일부 일반적으로 사용되거나 사용 확률이 비교적 높은 인트라 예측 모드는, 하나의 모드 리스트를 구성한다. 주변의 인코딩 및 디코딩된 블록을 참조하는 인트라 예측 모드는 공간에서의 관련성을 이용한다. 이는 무늬가 공간에서 일정한 연속성이 존재하기 때문이다. MPM은 인트라 예측 모드의 예측으로 사용할 수 있다. 다시 말해 현재 블록이 MPM을 사용할 확률이 MPM을 사용하지 않을 확률보다 높다고 간주한다. 따라서 이진화 수행 시에, MPM은 더우 적은 코드 워드를 사용함으로써, 오버헤드를 절약하고, 인코딩 및 디코딩의 효율을 향상시킨다.
AVS3의 텍스트에서는 predIntraPredMode0, predIntraPredMode1과 같은 변수(predIntraPredMode, 예측 모드의 예측값)로 MPM을 표시한다. 본 출원에서는 predIntraPredMode 예측 모드의 예측값을 MPM의 다른 이름의 지칭으로 사용할 수 있거나, 본 출원의 MPM의 발명 내용은 predIntraPredMode에 적용할 수도 있다고 간주할 수 있다.
AVS3에서 predIntraPredMode0, predIntraPredMode1의 구조 방법은 아래와 같다.
아래의 단계에 따라 현재 예측 블록 예측 모드의 예측값(predIntraPredMode)을 계산한다.
왼쪽 예측 블록 A가 “존재”하고 일반 인트라 예측 블록이면, A의 IntraLumaPredMode를 intraPredModeA에 할당하고; 그렇지 않을 경우 intraPredModeA는 0과 동일하다.
위의 예측 블록 B가 “존재”하고 일반 인트라 예측 블록이면, B의 IntraLumaPredMode를 intraPredModeB에 할당하고; 그렇지 않을 경우 intraPredModeB는 0과 동일하다.
intraPredModeA가 intraPredModeB와 동일하지 않으면, predIntraPredMode0은 Min(intraPredModeA, intraPredModeB)과 동일하고, predIntraPredMode1은 Max(intraPredModeA, intraPredModeB)와 동일하며; 그렇지 않을 경우:
intraPredModeA가 0과 동일하면, predIntraPredMode0은 0과 동일하고, predIntraPredMode1은 2와 동일하며;
intraPredModeA가 0과 동일하지 않으면, predIntraPredMode0은 0과 동일하고, predIntraPredMode1은 intraPredModeA와 동일하며;
여기서, 0은 DC 모드를 대표하고, 2는 Bilinear 모드를 대표한다.
비록 현재의 인트라 예측에는 DC, Planar, Bilinear 등 모드가 존재하지만, 상기 모드들은 모두 간단한 무늬의 예측만 처리할 수 있고; 각도 모드가 갈수록 많아지더라도, 예측은 한 각도의 직선만을 따라 수행된다. 이로부터 알수 있다시피, 현재의 인트라 예측 모드는 간단한 무늬의 예측만 처리할 수 있다. 복잡한 무늬의 경우, 예측을 수행하는 경우 더욱 작은 블록으로 구획되어야 하거나 더욱 많은 잔차에 대해 인코딩을 수행해야 하거나 비교적 큰 왜곡을 조성해야 한다.
이상의 문제에 대해, 본 출원의 실시예에 있어서, 인코더 및 디코더는 두가지 상이한 인트라 예측 모드를 통해 현재 블록의 두개의 상이한 예측 블록을 결정할 수 있고, 다양한 가중치 행렬을 조합하는 것을 통해, 최종적으로 더욱 복잡한 예측 블록을 얻을 수 있음으로써, 예측의 정확성을 향상시키는 동시에, 인코더 및 디코더는 또한 가중치 행렬과 예측 모드 간의 관련성을 통해 MPM 리스트의 구축을 수행할 수 있음으로써, 복잡도를 크게 저하시킬 수 있고, 다시 말해, 본 출원에서 제안한 인트라 예측 방법은, 인트라 예측 품질을 향상시키는 동시에, 복잡도를 저하시킬 수 있음으로써, 압축 성능을 향상시킨다.
도 9를 참조하면, 본 출원의 실시예의 비디오 코딩 시스템의 구성 블록도 예를 도시하고; 도 9에 도시된 바와 같이, 상기 비디오 코딩 시스템(10)은 변환 및 양자화 유닛(101), 인트라 추정 유닛(102), 인트라 예측 유닛(103), 모션 보상 유닛(104), 모션 추정 유닛(105), 역변환 및 역양자화 유닛(106), 필터 제어 분석 유닛(107), 필터링 유닛(108), 코딩 유닛(109) 및 디코딩된 이미지 버퍼링 유닛(110) 등을 포함하고, 여기서, 필터링 유닛(108)은 디블로킹 필터 및 샘플 적응 오프셋(Sample Adaptive 0ffset, SAO) 필터를 구현할 수 있고, 코딩 유닛(109)은 헤더 정보 인코딩 및 컨텍스트에 기반한 적응 이진 산술 코딩(Context-based Adaptive Binary Arithmatic Coding, CABAC)을 구현할 수 있다. 입력된 원래 비디오 신호의 경우, 코딩 트리 유닛(Coding Tree Unit, CTU)의 구획을 통해 하나의 비디오 코딩 블록을 얻을 수 있고, 다음 인트라 또는 인터 예측을 수행한 이후 얻은 잔차 픽셀 정보에 대해 변환 및 양자화 유닛(101)을 통해 상기 비디오 코딩 블록에 대해 변환을 수행하고, 상기 변환은 잔차 정보를 픽셀 도메인에서 변환 도메인으로 변환시키는 것을 포함하며, 얻은 변환 계수에 대해 양자화를 수행하여, 추가로 비트율을 줄이며; 인트라 추정 유닛(102) 및 인트라 예측 유닛(103)은 상기 비디오 코딩 블록에 대해 인트라 예측을 수행하기 위한 것이고; 명확히 말해, 인트라 추정 유닛(102) 및 인트라 예측 유닛(103)은 상기 비디오 코딩 블록을 코딩할 인트라 예측 모드를 결정하기 위한 것이고; 모션 보상 유닛(104) 및 모션 추정 유닛(105)은 수신된 비디오 코딩 블록이 하나 또는 복수 개의 참조 프레임에서의 하나 또는 복수 개의 블록에 대한 인터 예측 코딩을 실행하기 위한 것이고; 모션 추정 유닛(105)에 의해 실행되는 모션 추정은 모션 벡터를 생성하는 과정이고, 상기 모션 벡터는 상기 비디오 코딩 블록의 모션을 추정할 수 있고, 다음 모션 보상 유닛(104)이 모션 추정 유닛(105)에 기반하여 결정한 모션 벡터에 의해 모션 보상이 실행되고; 인트라 예측 모드를 결정한 이후, 인트라 예측 유닛(103)은 또한 인트라 예측 데이터도 코딩 유닛(109)에 제공하기 위한 것이고, 모션 추정 유닛(105)은 계산하여 결정한 모션 벡터 데이터를 코딩 유닛(109)에 송신하며; 또한, 역변환 및 역양자화 유닛(106)은 상기 비디오 코딩 블록을 재구축하기 위한 것이고, 픽셀 도메인에서 잔차 블록을 재구축하며, 상기 재구축된 잔차 블록은 필터 제어 분석 유닛(107) 및 필터링 유닛(108)을 통해, 블로킹 효과 아티팩트를 제거한 다음, 상기 재국축된 잔차 블록을 디코딩된 이미지 버퍼링 유닛(110)의 프레임에서의 하나의 예측성 블록에 첨가하여, 재구축이 수행된 비디오 코딩 블록을 생성하고; 코딩 유닛(109)은 각 코딩 파라미터 및 양자화된 변환 계수를 인코딩하기 위한 것이고, CABAC에 기반한 코딩 알고리즘에서, 컨텍스트 내용은 인접한 코딩 블록에 기반할 수 있고, 결정된 인트라 예측 모드의 정보를 인코딩 및 지시하여, 상기 비디오 신호의 코드 스트림을 출력하는데 사용될 수 있으며; 예측 참조를 위하여, 디코딩된 이미지 버퍼링 유닛(110)은 재구축된 비디오 코딩 블록을 저장하는데 사용된다. 비디오 이미지 코딩이 수행됨에 따라, 새로운 재구축된 비디오 코딩 블록이 계속하여 생성되고, 이러한 재구축된 비디오 코딩 블록은 모두 디코딩된 이미지 버퍼링 유닛(110)에 저장된다.
도 10을 참조하면, 본 출원의 실시예에서 제공한 비디오 디코딩 시스템의 구성 블록도 예를 도시하고; 도 10에 도시된 바와 같이, 상기 비디오 디코딩 시스템(20)은 디코딩 유닛(201), 역변환 및 역양자화 유닛(202), 인트라 예측 유닛(203), 모션 보상 유닛(204), 필터링 유닛(205) 및 디코딩된 이미지 버퍼링 유닛(206) 등을 포함하고, 여기서, 디코딩 유닛(201)은 헤더 정보의 디코딩 및 CABAC 디코딩을 구현할 수 있고, 필터링 유닛(205)은 디블로킹 필터 및 SAO 필터를 구현할 수 있다. 입력된 비디오 신호는 도 9의 코딩 처리를 거친 후, 상기 비디오 신호의 코드 스트림을 출력하고; 상기 코드 스트림은 비디오 디코딩 시스템(20)에 입력되고, 먼저 디코딩 유닛(201)을 거친 후, 디코딩된 변환 계수를 얻기 위한 것이고; 상기 변환 계수의 경우 역변환 및 역양자화 유닛(202)을 통해 처리를 수행하여, 픽셀 도메인에서 잔차 블록을 생성하고; 인트라 예측 유닛(203)은 결정된 인트라 예측 모드 및 현재 프레임 또는 사진의 이전 디코딩이 수행된 블록의 데이터에 기반하여 현재 비디오 디코딩 블록의 예측 데이터를 생성하는데 사용될 수 있고; 모션 보상 유닛(204)은 모션 벡터 및 다른 관련 문법 요소를 분석하는 것을 통해 비디오 디코딩 블록에 사용되는 예측 정보를 결정하고, 상기 예측 정보를 사용하여 디코딩되고 있는 비디오 디코딩 블록의 예측성 블록을 생성하고; 역변환 및 역양자화 유닛(202)으로부터 온 잔차 블록과 인트라 예측 유닛(203) 또는 모션 보상 유닛(204)에 의해 생성되는 대응 예측성 블록을 합산하여, 디코딩된 비디오 블록을 형성하고; 상기 디코딩된 비디오 신호는 필터링 유닛(205)을 통해 블로킹 효과 아티팩트를 제거함으로써, 비디오의 품질을 개선시킬 수 있고; 다음 디코딩이 수행된 블록을 디코딩된 이미지 버퍼링 유닛(206)에 저장하고, 디코딩된 이미지 버퍼링 유닛(206)은 후속 인트라 예측 또는 모션 보상에 사용되는 참조 이미지를 저장하는 동시에, 비디오 신호의 출력에도 사용되며, 즉 회복된 원래 비디오 신호를 얻는다.
본 출원의 실시예에서의 인트라 예측 방법은, 주로 도 9에 도시된 인트라 예측 유닛(103) 부분 및 도 10에 도시된 인트라 예측 유닛(203) 부분에 적용된다. 다시 말해, 본 출원의 실시예에 있어서, 인트라 예측 방법은, 비디오 코딩 시스템에 적용될 수 있을 뿐만 아니라, 비디오 디코딩 시스템에도 적용될 수 있으며, 심지어 동시에 비디오 코딩 시스템 및 비디오 디코딩 시스템에 적용될 수 있지만, 본 출원의 실시예는 이에 대해 구체적으로 한정하지 않는다. 더 설명해야 할 것은, 상기 인트라 예측 방법이 인트라 예측 유닛(103) 부분에 적용될 경우, “현재 블록”은 구체적으로 인트라 예측에서의 현재 코딩 블록을 의미하고; 상기 인트라 예측 방법이 인트라 예측 유닛(203) 부분에 적용될 경우, “현재 블록”은 구체적으로 인트라 예측에서의 현재 디코딩 블록을 의미한다.
아래에, 본 출원의 실시예에서의 도면을 결합하여 본 출원의 실시예에서의 기술방안을 명확하고 완전하게 설명한다.
본 출원의 일 실시예는 인트라 예측 방법을 제안하고, 인코더에 적용되며, 도 11은 인트라 예측 방법의 구현 흐름 예시도 1이고, 도 11에 도시된 바와 같이, 인코더가 인트라 예측을 수행하는 방법은 아래와 같은 단계를 포함할 수 있다.
단계 101에 있어서, 현재 블록이 SAWP 모드를 사용하여 현재 블록의 인트라 예측값을 결정하는 경우, 현재 블록의 가중치 행렬 도출 모드를 결정한다.
본 출원의 실시예에 있어서, 인코더는 먼저 현재 블록의 인트라 예측 모드 파라미터를 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시에서, 인트라 예측 모드 파라미터는 현재 블록이 공역 각도 가중 예측(Spatial Angular Weighted Prediction, SAWP) 코딩 모드를 사용할 수 있는지 여부를 지시할 수 있고, 즉 현재 블록이 두가지 상이한 예측 모드를 사용하여 예측 처리를 수행할 수 있는지 여부를 지시할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 인트라 예측 모드 파라미터는 SAWP 모드가 사용되는지 여부를 나타내는 플래그로 이해될 수 있다. 구체적으로, 인코더는 하나의 변수를 인트라 예측 모드 파라미터로 사용할 수 있음으로써, 상기 변수의 값을 설정하는 것을 통해 인트라 예측 모드 파라미터의 설정을 구현할 수 있다.
예시적으로, 본 출원에 있어서, 현재 블록이 SAWP 모드를 사용하면, 인코더는 인트라 예측 모드 파라미터의 값을 현재 블록이 SAWP 모드를 사용하도록 설정할 수 있고, 구체적으로, 인코더는 변수의 값을 1로 설정할 수 있다.
예시적으로, 본 출원에 있어서, 현재 블록이 SAWP 모드를 사용하지 않으면, 인코더는 인트라 예측 모드 파라미터의 값을 현재 블록이 SAWP 모드를 사용하지 않도록 설정할 수 있고, 구체적으로, 인코더는 변수의 값을 0으로 설정할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 인트라 예측 모드 파라미터에 대한 설정을 완료한 이후, 인트라 예측 모드 파라미터를 코드 스트림에 기입하여, 디코더로 전송할 수 있음으로써, 디코더로 하여금 코드 스트림을 해석한 이후 인트라 예측 모드 파라미터를 획득할 수 있도록 한다.
다시 말해, 본 출원의 실시예에 있어서, 인코더 측에서, 현재 블록에 대해 예측 코딩을 수행하고, 이 과정에서 현재 블록의 인트라 예측 모드 파라미터를 결정하고, 상응한 인트라 예측 모드 파라미터를 코드 스트림에 기입하며, 인코더에 의해 디코더로 전송될 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, SAWP 모드는 인트라 예측 방법으로서, 구체적으로, SAWP 모드는 현재 블록에 대해 두개의 상이한 인트라 예측 모드를 결정한 다음, 각각 이 두개의 상이한 인트라 예측 모드에 따라 두개의 예측 블록을 결정하고, 다음 가중치 행렬을 결정할 수 있으며, 두개의 예측 블록은 가중치 행렬에 따라 조합되어, 최종적으로 새로운 예측 블록을 얻을 수 있고, 즉 현재 블록의 예측 블록을 획득할 수 있다.
도 12는 SAWP 모드의 예시도이고, 도 12에 도시된 바와 같이, 현재 블록에 대해 인트라 예측을 수행하는 경우, 제1 인트라 예측 모드를 사용하여 현재 블록의 제1 예측 블록을 결정할 수 있고, 동시에 제2 인트라 예측 모드를 사용하여 현재 블록의 제2 예측 블록을 결정할 수 있으며, 다음 가중치 행렬을 이용하여 제1 예측 블록 및 제2 예측 블록을 조합 처리하여, 최종적으로 하나의 새로운 예측 블록을 획득할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 비디오 이미지는 복수 개의 이미지 블록으로 구획될 수 있고, 현재 블록은 각 현재 인코딩될 이미지 블록이고, 코딩 블록(Coding Block, CB)으로 지칭될 수 있다. 여기서, 각 코딩 블록은 제1 이미지 분량, 제2 이미지 분량 및 제3 이미지 분량을 포함할 수 있다. 구체적으로, 본 출원에 있어서, 제1 인트라 예측을 수행하고, 제1 이미지 분량을 밝기 분량, 즉 예측될 이미지 분량을 밝기 분량이라고 가정하면, 예측될 코딩 블록을 밝기 블록으로 지칭할 수 있고; 또는, 제2 인트라 예측을 수행하고, 제2 이미지 분량을 색도 분량, 즉 예측될 이미지 분량을 색도 분량이라고 가정하면, 예측될 코딩 블록을 색도 블록으로 지칭할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, SAWP 모드를 적용하는 경우, 현재 블록의 크기에 대해 제한할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에서 제안한 인트라 예측 방법은 각각 두개의 상이한 인트라 예측 모드를 사용하여 두개의 예측 블록을 생성해야 하고, 다음 가중치 행렬에 따라 가중을 수행하여 새로운 예측 블록을 얻는 것이기 때문에, 복잡도를 저하시키기 위해, 동시에 압축 성능 및 복잡도의 균형을 고려해야 하고, 본 출원의 실시예에 있어서, 일부 크기의 예측 블록에 대해 상기 SAWP 모드를 사용하지 않도록 제한할 수 있다. 따라서, 본 출원에 있어서, 인코더는 먼저 현재 블록의 크기 파라미터를 결정한 다음, 크기 파라미터에 따라 현재 블록이 SAWP 모드를 사용하는지 여부를 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 현재 블록의 크기 파라미터는 현재 블록의 높이 및 너비를 포함할 수 있고, 따라서, 인코더는 현재 블록의 높이 및 너비를 이용하여 SAWP 모드의 사용에 대해 제한할 수 있고, 즉 SAWP 모드를 사용할 수 있는 예측 블록의 크기를 제한한다.
예시적으로, 본 출원에 있어서, 너비가 제1 임계값보다 크고 높이가 제2 임계값보다 크면, 현재 블록이 SAWP 모드를 사용하는 것을 결정한다. 이로부터 알다시피, 일 가능한 제한은 다만 예측 블록의 너비가 제1 임계값(TH1)보다 크고(또는 크거나 같음), 예측 블록의 높이가 제2 임계값보다 큰(또는 크거나 같음) 경우에만 SAWP 모드를 사용하는 것이다. 여기서, 제1 임계값(TH1) 및 제2 임계값은 8, 16, 32 등일 수 있고, 제1 임계값은 제2 임계값과 동일할 수 있다.
예시적으로, 본 출원에 있어서, 너비가 제3 임계값보다 작고 높이가 제4 임계값보다 크면, 현재 블록이 SAWP 모드를 사용하는 것을 결정한다. 이로부터 알다시피, 일 가능한 제한은 다만 예측 블록의 너비가 제3 임계값보다 작고(또는 작거나 같음), 예측 블록의 높이가 제4 임계값보다 큰(또는 크거나 같음) 경우에만 SAWP 모드를 사용하는 것이다. 여기서, 제3 임계값 및 제4 임계값은 8, 16, 32 등일 수 있고, 제3 임계값은 제4 임계값과 동일할 수 있다.
다른 하나의 예에서, 본 출원에서, 너비가 제3 임계값보다 작고 높이가 제4 임계값보다 작으면, 현재 블록이 SWAP 모드를 사용하는 것을 결정한다. 이로부터 알다시피, 일 가능한 제한은 다만 예측 블록의 너비가 제3 임계값보다 작고(또는 작거나 같음), 예측 블록의 높이가 제4 임계값보다 작은(또는 작거나 같음) 경우에만 SWAP 모드를 사용하는 것이다. 여기서, 제3 임계값 및 제4 임계값은 8, 16, 32 등일 수 있고, 제3 임계값은 제4 임계값과 동일할 수 있다.
상기 예의 경우, 예측 블록의 너비가 8보다 크거나 같고, 예측 블록의 높이가 8보다 크거나 같고, 예측 블록의 너비가 32보다 작거나 같으며, 예측 블록의 높이가 32보다 작거나 같은 경우를 예로 들어 설명하고, 상응한 구현 과정을 제공한다.
If(SawpEnableFlag&& IntraCUFlag&&width>=SawpMinSize&& height>=SawpMinSize&& width<=SawpMaxSize&& height<=SawpMaxSize){
sawp_flag
}
if (DtEnableFlag && IntraCUFlag&&!SawpFlag) {
dt_split_flag
}
여기서 SawpMinSize는 8과 동일하고, SawpMaxSize는 32와 동일하다.
또한, 예측 블록의 너비가 8보다 크거나 같고, 예측 블록의 높이가 8보다 크거나 같고, 예측 블록의 너비가 16보다 작거나 같으며, 예측 블록의 높이가 16보다 작거나 같은 경우를 예로 들어 설명하고, 상응한 구현 과정을 제공한다.
If(SawpEnableFlag&& IntraCUFlag&&width>=SawpMinSize&& height>=SawpMinSize&& width<=SawpMaxSize&& height<=SawpMaxSize){
sawp_flag
}
if (DtEnableFlag && IntraCUFlag&&!SawpFlag) {
dt_split_flag
}
여기서 SawpMinSize는 8과 동일하고, SawpMaxSize는 16과 동일하다.
더 나아가, 본 출원의 실시예에 있어서, 또한 픽셀 파라미터에 대한 제한을 통해 SAWP 모드를 사용할 수 있는 예측 블록의 크기를 제한하는 것을 구현한다.
예시적으로, 본 출원에 있어서, 인코더는 먼저 현재 블록의 픽셀 파라미터를 결정한 다음, 픽셀 파라미터 및 제5 임계값에 따라 추가로 현재 블록이 SAWP 모드를 사용하는지 여부를 판단할 수 있다. 이로부터 알다시피, 일 가능한 제한은 다만 예측 블록의 픽셀 개수는 제5 임계값보다 큰(또는 크거나 같음) 경우에만 SAWP 모드를 사용하는 것이다. 여기서, 제5 임계값은 8, 16, 32 등일 수 있다.
다시 말해, 본 출원에서, 현재 블록의 크기 파라미터가 크기 요구의 조건을 만족하는 경우에만, 현재 블록은 SAWP 모드를 사용할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더가 현재 블록에 대해 인트라 예측을 수행하는 경우, 본 출원에서 제안한 SAWP 모드를 제외한 외에, 또한 사용 가능한 인트라 예측 모드는 직류(Direct CUrrent, DC) 모드, 평면(PLANAR) 모드 및 각도 모드 중의 임의의 한 인트라 코딩 모드를 포함한다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 인코더는 현재 블록에 대해 인트라 예측을 수행하기 전, 먼저 예측 모드 파라미터를 결정할 수 있고, 다음 예측 모드 파라미터를 통해 현재 블록의 코딩 모드가 구체적으로 어떠한 코딩 모드인지를 결정할 수 있다.
본 출원의 실시예에 있어서, 추가로, 인코더는 현재 블록의 예측 모드 파라미터를 결정하는 경우, 먼저 여러가지 상이한 예측 모드를 이용하여 각 현재 블록에 대해 예측 코딩을 수행한 다음, 여러가지 예측 모드에서 각 예측 모드에 대응되는 율 왜곡 코스트 결과를 계산할 수 있고; 마지막으로 계산하여 얻은 복수 개의 율 왜곡 코스트 결과에서 가장 작은 율 왜곡 코스트 결과를 선택하고, 가장 작은 율 왜곡 코스트 결과에 대응되는 예측 모드를 현재 블록의 예측 모드 파라미터로 결정할 수 있다.
다시 말해, 인코더측에서, 현재 블록에 대해 여러가지 예측 모드를 사용하여 예측될 이미지 분량에 대해 각각 인코딩을 수행할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 여러가지 예측 모드를 이용하여 각각 현재 블록에 대해 코딩을 수행한 이후, 각 예측 모드에 대응되는 율 왜곡 코스트 결과를 얻을 수 있고; 다음 얻은 복수 개의 율 왜곡 코스트 결과에서 가장 작은 율 왜곡 코스트 결과르 선택하고, 상기 가장 작은 율 왜곡 코스트 결과에 대응되는 예측 모드를 현재 블록의 현재 블록의 예측 모드 파라미터로 결정하며; 이와 같이, 결정된 예측 모드를 최종적으로 사용하여 현재 블록에 대해 코딩을 수행할 수 있고, 이러한 예측 모드에서, 예측 잔차로 하여금 작도록 하여, 인코딩 및 디코딩 효율을 향상시킬 수 있다.
본 출원의 실시예에 있어서, 추가로, 인코딩단에서, 인코더는 특정된 예측 블록에 대해 인트라 예측을 시도할 때, SAWP 모드에 따른 코딩 코스트도 시도한다. SAWP 모드에 따른 코딩 코스트를 시도하는 경우, 전부 또는 일부 가능한 경우의 코스트를 시도한 다음, 코스트가 가장 작은 하나를 선택하여 SAWP 모드 코딩 코스트로 사용한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 상기 전부 가능한 경우는, 현재 블록의 제1 인트라 예측 모드가 전부 가능한 예측 모드이고, 현재 블록의 제2 인트라 예측 모드가 전부 가능한 모드이며, 가중치 행렬 도출 모드가 전부 가능한 모드인 세가자 변화의 조합을 포함한다. 사용 가능한 전부 인트라 예측 모드가 66가지가 존재한다고 가정하면, 제1 인트라 예측 모드는 66가지 가능성이 존재하고, 제2 인트라 예측 모드와 제1 인트라 예측 모드는 동일하지 않기 때문에, 제2 인트라 예측 모드는 65가지가 존재하고, 가중치 행렬 도출 모드가 56가지 (예를 들어 AWP)가 존재한다고 가정하면, 본 출원의 사용 가능한 임의의 두가지 상이한 인트라 예측 모드 및 임의의 하나의 가중치 행렬 도출 모드는, 총 66×65×56가지 가능성이 존재한다. PCM과 같은 인트라 예측 모드를 사용하지 않는다고 가정하면, 총 65×64×56가지 가능성이 존재한다. 이로부터 알다시피, 본 출원에 있어서, 또한 선택 가능한 인트라 예측 모드 및 사용 가능한 가중치 행렬 도출 모드의 개수를 제한할 수 있으므로, 조합의 경우는 상응하게 줄어든다.
예를 들어, 제1 인트라 예측 모드가 선택 가능한 인트라 예측 모드 및 제2 인트라 예측 모드가 선택 가능한 인트라 예측 모드 중 적어도 하나에 대해 제한한다. 여기서, 인트라 예측 모드의 선택에 대해 제한하는 것은 즉 선택 가능한 인트라 예측 모드를 줄이는 것 및 사용 가능한 가중치 행렬 도출 모드에 대해 제한하는 것 중 적어도 하나임으로써, 본 출원의 임의의 두개의 상이한 인트라 예측 모드 및 임의의 하나의 가중치 행렬 도출 모드를 사용할 가능성을 줄임으로써, 상응한 플래그의 비트수를 줄인다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 모든 SAWP 모드의 가능한 경우에 대해 율-왜곡 최적화(Rate-Distortion Optimization, RDO)를 수행하여, 코스트가 가장 작은 하나의 조합을 결정할 수 있고, 여기서, 각 조합은 모두 제1 인트라 예측 모드, 제2 인트라 예측 모드, 가중치 행렬 도출 모드를 포함한 조합이다.
선택적으로, RDO의 시간 소비를 줄이기 위해, SAD 및 SATD 등을 유사한 코스트로 사용하여 초기 선택을 수행하는 것과 같은 상기 모든 SAWP 모드의 가능한 경우에 대해 초기 선택을 수행할 수 있고, 설정된 개수의 후보 제1 인트라 예측 모드, 제2 인트라 예측 모드, 가중치 행렬 도출 모드의 조합을 결정한 다음, RDO 엄선을 수행하여, 코스트가 가장 작은 하나의 제1 인트라 예측 모드, 제2 인트라 예측 모드, 가중치 행렬 도출 모드의 조합을 결정한다. 이로써 초기 선택에서 일부 빠른 알고리즘을 사용하여 시도 횟수를 줄일 수 있고, 예를 들어 인트라 각도 예측 모드가 코스트가 많이 드는 경우, 상기 인트라 각도 예측 모드와 인접한 인트라 예측 모드는 다시 시도하지 않는다.
이해할 수 있는 것은, 본 출원에 있어서, 전술한 초기 선택 및 엄선에 있어서, 코스트에는 제1 인트라 예측 모드, 제2 인트라 예측 모드, 가중치 행렬 도출 모드가 코드 스트림에서의 오버헤드 코딩 코스트가 포함될 수 있다. 초기 선택을 수행하는 경우 제1 인트라 예측 모드, 제2 인트라 예측 모드, 가중치 행렬 도출 모드가 코드 스트림에서의 오버헤드 추정 코스트를 사용할 수도 있다. 예를 들어 제1 또는 제2 인트라 예측 모드가 MPM인지 여부에 따라 비트수를 추정하거나, 인트라 예측 모드의 순서에 따라 제1 또는 제2 인트라 예측 모드의 비트수를 추정한다. RDO에서 비교적 정확한 시험 코딩을 통해 코스트를 획득할 수 있다. 상기 과정에서 본 출원의 구축 모드 리스트 또는 인트라 예측 모드에 대해 순서 배정을 수행하는 방법을 사용해야 한다.
이해할 수 있는 것은, 본 출원에 있어서, 상기 초기 선택 및 엄선을 수행하는 경우 제1 인트라 예측 모드에 따라 제1 예측 블록을 결정하고, 제2 인트라 예측 모드에 따라 제2 예측 블록을 결정하며, 가중치 행렬 도출 모드에 따라 가중치 행렬을 도출하고, 제1 예측 블록, 제2 예측 블록 및 가중치 행렬에 따라 본 출원의 예측 블록을 결정한다. SAD 및 SATD는 초기 선택의 경우 현재 블록 및 예측 블록을 사용하여 SAD 및 SATD를 결정한다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 먼저 현재 블록의 무늬를 분석할 수도 있고, 예를 들어 기울기를 사용하여 분석할 수 있다. 분석된 데이터를 사용하여 초기 선택을 돕는다. 예를 들어 현재 블록의 무늬에서 어느 방향의 무늬가 비교적 강하면, 상기 초기 선택을 수행하는 경우 유사한 방향의 인트라 예측 모드를 선택하여 시도한다. 예를 들어 현재 블록의 무늬에서 어느 방향의 무늬가 비교적 약하면, 상기 초기 선택을 수행하는 경우 유사한 방향의 인트라 예측 모드를 적게 선택하거나 선택하지 않고 시도한다.
설명해야 할 것은, 본 출원에 있어서, SAWP 모드에 따른 코딩 코스트에는 제1 인트라 예측 모드, 제2 인트라 예측 모드, 가중치 행렬 도출 모드가 코드 스트림에서 점유하는 코드 워드의 코스트, 변환, 양자화, 엔트로피 코딩 등을 위한 예측 잔차가 코드 스트림에서 전송해야 하는 각 플래그 및 양자화 계수의 코스트 및 재구축된 블록의 왜곡 코스트 등이 포함된다.
SAWP 모드에 따른 코딩 코스트가 결정된 이후, SAWP 모드에 따른 코딩 코스트가 다른 예측 모드의 코스트보다 작으면, 여기서, 다른 예측 모드는 다른 인트라 예측 모드 또는 인터 예측 모드 등을 포함할 수 있고, 인코더는 SAWP 모드를 현재 블록의 예측 모드로 선택하고, 그렇지 않을 경우 다른 특정된 예측 모드를 선택한다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 상이한 블록으로 구획된 코딩 코스트 등을 시도한다. 최종적으로 특정된 예측 블록이 SAWP 모드를 선택하면, SAWP 모드에서 요구되는 플래그 및 제1 인트라 예측 모드, 제2 인트라 예측 모드, 가중치 행렬 도출 모드의 정보를 문법(syntax)에 따라 코드 스트림에 기입하는 동시에, 이 예측 블록을 SAWP 모드의 방법에 따라 예측 및 후속 코딩 작업을 수행할 수 있다.
본 출원의 실시예에 있어서, 인코더는 현재 블록의 인트라 예측 모드 파라미터를 결정한 이후, 인트라 예측 모드 파라미터가 현재 블록이 SAWP 모드를 사용하여 현재 블록의 인트라 예측값을 결정하도록 지시하면, 인코더는 추가로 현재 블록의 가중치 행렬 도출 모드를 결정할 수 있다.
설명해야 할 것은, 본 출원에 있어서, 가중치 행렬 도출 모드는 현재 블록에 의해 사용되는 가중치 행렬을 결정하기 위한 것이다. 구체적으로, 가중치 행렬 도출 모드는 가중치 행렬을 도출하는 모드이다. 주어진 길이 및 너비의 예측 블록의 경우, 각 가중치 행렬 도출 모드는 하나의 가중치 행렬을 도출할 수 있고; 동일한 크기의 예측 블록의 경우, 상이한 가중치 행렬 도출 모드에 의해 도출되는 가중치 행렬은 상이하다.
예시적으로, 본 출원에 있어서, AVS3의 AWP에는 56가지 가중치 행렬 도출 모드가 존재하고, VVC의 GPM에는 64가지 가중치 행렬 도출 모드가 존재한다.
단계 102에 있어서, 가중치 행렬 도출 모드에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정한다.
본 출원의 실시예에 있어서, 인트라 예측 모드 파라미터가 현재 블록이 SAWP 모드를 사용하여 현재 블록의 인트라 예측값을 결정하도록 지시하면, 인코더는 현재 블록의 가중치 행렬 도출 모드를 결정한 이후, 먼저 가중치 행렬 도출 모드에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정할 수 있고, 동시에 가중치 행렬 도출 모드에 따라 현재 블록의 가중치 행렬을 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드는 모두 일반적인 임의의 인트라 예측 모드일 수 있고, DC, Planar, Bilinear 및 각도 예측 모드 등 인트라 예측 모드를 포함하지만 이에 한정되지 않는다.
선택적으로, 본 출원에 있어서, 여기서 인트라 예측 모드는 예측에 대해 개선하는 기술을 더 포함하고, 예를 들어 참조 픽셀의 서브 픽셀 보간 개선, MIPF, IPF 등과 같은 예측 픽셀에 대해 필터링을 수행하는 것을 더 포함한다.
상응하게, 본 출원에서, DC, Planar, Bilinear 및 각도 예측 모드 등 인트라 예측 모드를 기본 인트라 예측 모드로 지칭할 수 있고, MIPF, IPF 등과 같은 예측에 대해 개선하는 기술을 개선된 인트라 예측 모드로 지칭할 수 있다. 기본 인트라 예측 모드는 다른 인트라 예측 모드에 의존하지 않고 독립적으로 예측 블록을 생성하는 인트라 예측 모드이며, 즉 참조 픽셀 및 기본 인트라 예측 모드를 결정하면, 예측 블록을 결정할 수 있다. 개선된 인트라 예측 모드는 독립적으로 예측 블록을 생성할 수 없고, 기본 인트라 예측 모드에 의존해야만 예측 블록을 생설할 수 있다. 예를 들어 특정된 각도 예측 모드는 참조 픽셀에 따라 예측 블록을 생성할 수 있고, MIPF는 이 각도 예측 모드의 기초에서 상이한 위치의 픽셀에 대해 상이한 필터를 사용하여 예측 블록을 생성 또는 결정할 수 있다.
예시적으로, 본 출원에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드는 모두 기본 인트라 예측 모드일 수 있고, 즉 본 출원의 실시예는 두개의 상이한 기본 인트라 예측 모드를 사용한다. 이때 개선된 인트라 예측 모드의 경우, 각각 제1 인트라 예측 모드 및 제2 인트라 예측 모드와 조합되어, 제1 예측 블록 및 제2 예측 블록을 생성할 수 있다. 본 출원의 실시예는 “새로운 예측 블록”을 생성한 이후, 상기 “새로운 예측 블록”을 개선하여 업데이트된 예측 블록을 얻을 수 있다.
예시적으로, 본 출원에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드는 기본 인트라 예측 모드 및 개선된 인트라 예측 모드의 조합일 수 있고, 즉 본 출원의 실시예는 두개의 상이한 인트라 예측 모드 조합을 사용한다. 예를 들어 제1 인트라 예측 모드 및 제2 인트라 예측 모드는 모두 동일한 각도 예측 모드를 사용하지만, 제1 인트라 예측 모드는 IPF와 같은 특정된 개선된 인트라 예측 모드를 사용하지 않고; 제2 인트라 예측 모드는 IPF와 같은 개선된 인트라 예측 모드를 사용한다. 또는 제1 인트라 예측 모드 및 제2 인트라 예측 모드는 모두 특정된 각도 예측 모드를 사용하지만, 제1 인트라 예측 모드는 특정된 개선된 인트라 예측 모드의 특정된 선택을 사용하고; 제2 인트라 예측 모드는 이러한 개선된 인트라 예측 모드의 다른 한 선택을 사용한다. “새로운 예측 블록”을 얻은 이후, 여전히 개선된 인트라 예측 모드가 존재하여 “새로운 예측 블록”을 개선하여 업데이트된 예측 블록을 얻을 수 있다.
이로부터 알다시피, 본 출원의 실시예에서 제안한 인트라 예측 방법은, 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 현재 블록에 대해 두개의 완전히 상이한 예측 블록을 결정하고, 하나의 가중치 행렬을 결정하고, 두개의 예측 블록을 가중치 행렬에 따라 조합하여 새로운 예측 블록을 얻을 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 모든 가능한 가중치 행렬에서 각 가중치 행렬의 모든 포인트의 가중치는 모두 동일한 것은 아니다. 다시 말해, 적어도 한 가능한 가중치 행렬에는 적어도 두개의 상이한 가중치 값이 포함된다.
선택적으로, 본 출원에 있어서, 모든 가능한 가중치 행렬에는 적어도 두개의 상이한 가중치 값이 포함된다.
선택적으로, 본 출원에 있어서, 일부 가중치 행렬에는 적어도 두개의 상이한 가중치 값이 포함되고, 예를 들어, 본 출원에서, 최소 가중치 값이 0이고, 최대 가중치 값이 8이면, 하나의 가중치 행렬에서 어떠한 포인트는 0이고, 어떠한 포인트는 8이다. 상응하게, 일부 가중치 행렬에는 동일한 가중치 값만이 포함되고, 예를 들어, 본 출원에서, 하나의 가중치 행렬에서 모든 포인트는 모두 4이다.
선택적으로, 본 출원에 있어서, 하나의 가중치 행렬에는 두가지 가중치만이 존재하고, 그중 하나의 가중치는 대응 포인트의 예측값이 완전히 제1 예측 블록으로부터 온 대응 포인트의 값인 것을 표시하고, 다른 하나의 가중치는 대응 포인트의 예측값이 완전히 제2 예측 블록으로부터 온 대응 포인트의 값인 것을 표시한다. 예를 들어, 본 출원에서, 하나의 가중치 행렬에는 각각 0 및 1 두가지 가중치만이 존재한다.
선택적으로, 본 출원에 있어서, 하나의 가중치 행렬에는 여러가지 가중치가 존재할 수 있고, 여기서 최대값 및 최소값(예를 들어 0)은 각각 대응 포인트의 예측값이 완전히 제1 예측 블록으로부터 온 대응 포인트의 값이거나 제2 예측 블록으로부터 온 대응 포인트의 값인 것을 표시한다. 최대값 또는 최소값이 아닌 가중치 값은 대응 포인트의 예측값이 제1 예측 블록 및 제2 예측 블록으로부터 온 대응 포인트의 값의 가중치 평균을 표시한다. 이 최대값 또는 최소값의 가중치 값에 의해 구성된 영역을 과도 영역(blending area)으로 칭할 수 있다.
설명해야 할 것은, 본 출원에 있어서, 가중치 행렬에 두가지 가중치만이 존재하는 경우, 가중치 변화의 위치는 하나의 직선을 구성하거나, 가중치 행렬에 여러가지 가중치가 존재하는 경우, 과도 영역에서 가중치가 동일한 위치는 하나의 직선(라인 섹션)을 구성한다. 여기서, 상기 직선은 모두 수평 수직인 것일 수 있고, 모두 수평 수직이 아닌 것일 수도 있다.
선택적으로, 본 출원에 있어서, 가중치 행렬에 두가지 가중치만이 존재하는 경우, 가중치 변화의 위치는 하나의 곡선을 구성하거나, 가중치 행렬에 여러가지 가중치가 존재하는 경우, 과도 영역에서 가중치가 동일한 위치는 하나의 곡선(곡선 섹션)을 구성한다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 GPM 또는 AWP와 유사한 방법을 사용하여 가중치 행렬의 결정을 구현할 수 있다. 구체적으로, 동일한 인코딩 및 디코딩 표준 또는 인코더 및 디코더에서 GPM 또는 AWP을 사용하면, 상기 방법을 사용하여 가중치 행렬을 결정할 수 있음으로써, 일부 동일한 논리를 다중화할 수 있다. AVS3 인터 예측이 AWP를 사용하면, AVS3에서 AWP를 사용하는 방법으로 가중치 행렬을 결정할 수 있다. 물론 동일한 인코딩 및 디코딩 표준 또는 인코더 및 디코더에서의 GPM 또는 AWP와 상이한 방법을 사용할 수도 있고, 예를 들어 상이한 모드 개수, 또는 상이한 과도 영역 알고리즘을 사용하거나, 상이한 파라미터 등을 사용할 수 있다. 이는 인터 예측이 시간 도메인에서의 관련성을 이용하기 때문에, 참조 프레임에서 재구축된 이미지를 참조 블록으로 사용한다. 인트라 예측은 공역에서의 관련성을 이용하기 때문에, 현재 블록 주변의 재구축된 픽셀을 참조 픽셀로 사용한다. 공역에서 거리가 가까울수록 관련성이 강하고, 거리가 멀수록 관련성이 약하다. 따라서 특정된 가중치 행렬이 하나의 예측 블록에 의해 사용되는 픽셀 위치로 하여금 참조 픽셀로부터 멀리 떨어지도록 하면, 이 부분의 종래의 기술보다 더 적합한 예측값을 만들지 못할 수 있고, 이러한 가중치 행렬은 사용되지 않을 수 있고, 인터 예측에서 사용될 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 본 출원의 실시예는 두개의 인트라 예측 모드를 사용해야 하고, 일반적인 다른 인트라 예측 방법은 일반적으로 하나의 인트라 예측 모드만을 사용한다. 따라서, 본 출원의 실시예에서 사용되는 인트라 예측 모드의 코딩 방법은 일반적인 다른 인트라 예측 방법의 인트라 예측 모드의 코딩 방법과 상이할 수 있고, 상응하게, 본 출원의 실시예에서 사용되는 MPM 구축 방법은 일반적인 다른 인트라 예측 방법의 MPM 구축 방법과 상이할 수도 있다.
본 출원의 실시예에 있어서, 추가로, 본 출원의 실시예에서 제안한 인트라 예측 방법은 코드 스트림에서 가중치 행렬 도출 모드의 정보 및 두개의 인트라 예측 모드의 정보를 전송해야 하기 때문에, 가중치 행렬 도출 모드는 AVS3의 AWP를 예로 들면 56가지 모드가 존재하고, 이진화는 5 내지 6개의 비트가 필요하다. 인트라 예측 모드는 AVS3을 예로 들면 66가지 모드가 존재하고, 두개의 MPM을 사용한다. 인트라 예측 모드가 MPM이면, 이진화는 두개의 비트가 필요하고, 그렇지 않을 경우 이진화는 7개의 비트가 필요하다. 다시 말해 AVS3에 있어서, 상기 정보는 최대로 6+7+7인 20개의 비트의 오버헤드가 필요하다.
상기 정보의 이진화 오버헤드를 저하시키고, 코딩 성능을 향상시키기 위해, 본 출원의 실시예에 있어서, 인코더는 현재 블록의 인트라 예측 모드와 가중치 행렬 간의 관련성을 이용하여 상기 정보를 결정할 수 있다. 구체적으로, 현재 블록에 의해 사용되는 인트라 예측 모드와 가중치 행렬은 일정한 관련성이 존재하고, 이러한 관련성을 이용하여, 인코더는 인트라 예측 모드에 대해 코딩을 수행할 경우 가중치 행렬의 정보를 이용할 수 있고, 추가로, 인코더는 인트라 예측 모드에 대해 코딩을 수행하는 경우 가중치 행렬 도출 모드의 정보를 이용할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 가중치 행렬에 두가지 가중치가 포함되는 경우, 가중치 변화의 위치는 하나의 직선을 구성하거나, 가중치 행렬에 여러가지 가중치가 존재하는 경우, 과도 영역에서 가중치가 동일한 위치는 하나의 직선을 구성하고, 이 직선을 경계선이라고 지칭할 수 있다. 경계선 자체도 각도가 존재하며, 수평에서 오른쪽의 각도는 0이고, 각도는 시계 반대 방향에 따라 증가되도록 설정할 수 있다. 그러면 경계선은 0도, 수직 90도, 45도, 135도 및 다른 상이한 각도와 같은 기울기를 가질 수 있다. 하나의 예측 블록이 특정된 가중치 행렬을 사용하면, 대응되는 무늬는 경계선 양쪽에서 상이한 특성을 나타낼 수 있고, 예를 들어 경계선 양쪽은 두가지 상이한 각도의 무늬거나, 경계선의 한쪽은 각도의 무늬이고, 다른 한쪽은 비교적 평탄한 무늬이다. 경계선 자체는 각도가 존재하기 때문에, 하나의 포인트가 인트라 각도 예측을 통해 얻은 것이라고 가정할 수 있고, 이 포인트는 현재 블록의 일부 무늬와 가까울수 있기 때문에, 이 직선과 현재 블록의 두개의 인트라 예측 모드는 관련성이 존재한다.
구체적으로, 본 출원에서, 경계선은 하나의 포인트가 인트라 각도 예측을 통해 얻은 것이라고 가정하면, 적어도 하나의 인트라 각도 예측 모드를 찾을 수 있고, 이 인트라 각도 예측 모드는 근사적으로 경계선을 만들수 있다. 예를 들어, 수평 방향의 경계선은 AVS3에서의 모드24와 같이 수평 인트라 예측 모드에 매칭되고; 수직 방향의 경계선은 AVS3에서의 모드12와 같이 수직 인트라 예측 모드에 매칭되고; AVS3에서의 모드30과 같이 45도의 경계선은 왼쪽 아래에서 오른쪽 위로 45도의 인트라 예측 모드에 매칭될 수 있고; AVS3에서의 모드 6과 같이 오른쪽 위에서 왼쪽 아래로 225도의 인트라 예측 모드에 매칭될 수도 있다. 하나의 가중치 행렬에 가중치 값이 하나만 존재하는 경우, DC, Planar, Bilinear 등 현저한 각도가 존재하지 않는 모드에 매칭될 수 있다. 이로부터 알다시피, 가중치 행렬 도출 모드는 일부 인트라 예측 모드에 매칭될 수 있고, 따라서 가중치 행렬 도출 모드를 이용하여 인트라 예측 모드의 코딩을 어시스트 할 수 있다.
설명해야 할 것은, 본 출원에 있어서, 가중치 행렬 도출 모드는 가중치 행렬의 인덱스일 수도 있고, 예를 들어 AWP의 56가지 모드를 56가지 가중치 행렬 도출 모드로 간주할 수 있다.
예시적으로, 본 출원에 있어서, 하나의 맵핑 관계 테이블을 구축하여 추가로 가중치 행렬 도출 모드와 인트라 각도 예측 모드 간의 맵핑 관계를 표시할 수 있다. 구체적으로, AWP 및 GPM의 복수 개의 모드의 경계선은 모두 동일한 각도이고, 예를 들어 AVS3의 AWP는 8개 모드마다 경계선 각도가 동일하다. 56가지 AWP 모드는 7가지 경계선의 각도가 존재한다. 경계선 각도의 인덱스는 가중치 행렬 도출 모드의 모드 번호 Mod 8(%8)로 얻을 수 있다. 예를 들어, 표 1은 맵핑 관계 테이블이고, AVS3의 각도 모드를 예로 들면, 경계선 각도의 인덱스 0 및 1은 각각 오른쪽 상단 모서리에서 왼쪽 하단 모서리, 왼쪽 상단 모서리에서 오른쪽 하단 모서리로의 두개의 인트라 각도 예측 모드에 대응될 수 있다. 구체적인 구현의 경우, 다른 경계선 각도의 인덱스에 대해 근사적으로 대응되는 인트라 각도 예측 모드를 찾거나, 모든 경계선 각도의 인덱스는 하나의 인트라 각도 예측 모드에만 대응될 수 있다.
경계선 각도의 인덱스 0 1 2 3 4 5 6 7
대응되는 인트라 각도 예측 모드 6 27 24 21 18 15 12 9
30 3
더 나아가, 본 출원에 있어서, 일반적으로 현재 블록의 왼쪽 및 위쪽의 참조 픽셀을 사용하여 인트라 예측을 수행하고, 공간에서 픽셀의 거리가 가까울수록, 관련성이 강하고, 공간에서 픽셀의 거리가 멀수록, 관련성이 약하다. 따라서, 현재 블록의 일부분 픽셀만이 인트라 예측 모드에 의해 예측하여 얻은 것이면, 이 부분 픽셀이 위치한 위치는 이 부분에 의해 사용되는 인트라 예측 모드의 확률에 영향을 미친다. 즉 상기 경계선의 위치 및 각도는 경계선 양쪽의 두개의 인트라 예측 모드의 선택에 영향을 준다. 도 13은 인트라 예측의 예시도 3이고, 도 13에 도시된 바와 같이, 현재 블록의 영역 1 부분은 예측값이 제1 인트라 예측 모드로부터 온 것을 표시하고, 현재 블록의 영역 2 부분은 예측값이 모두 제2 인트라 예측 모드로부터 온 것을 표시하며, 영역 1 및 영역 2 중간의 과도 영역은 두개의 인트라 예측 모드의 예측값을 가중하여 얻은 것이다. 영역 1의 경우, 오른쪽 상단 부분의 참조 픽셀이 영역 1에 가장 가깝기 때문에, 오른쪽 상단에서 왼쪽 하단까지의 부채형 모양 각도 영역 내의 인트라 예측 모드(예를 들어 두꺼운 화살표)는 이러한 공간 관련성을 더 잘 이용할 수 있고, 사용 확률이 비교적 높다. 왼쪽 상단 모서리의 참조 픽셀과의 거리가 비교적 멀고, 왼쪽 상단에서 오른쪽 하단까지의 부채형 각도 영역 내의 인트라 예측 모드(예를 들어 얇은 화살표)는 이러한 공간 관련성을 더 잘 이용할 수 없으며, 사용 확률이 비교적 낮다.본 출원의 실시예에 있어서, 추가로, 인코더는 가중치 행렬 도출 모드에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 먼저 가중치 행렬 도출 모드를 이용하여 모드 리스트(MPM)를 결정할 수 있고; 다음 모드 리스트에 기반하여, 추가로 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정할 수 있다.구체적으로, 본 출원의 실시예에 있어서, 가중치 행렬과의 관련성을 이용하여 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 가중치 행렬 도출 모드를 이용하여 모드 리스트를 구축할 수 있거나, MPM을 구축할 경우 가중치 행렬 도출 모드의 정보를 이용할 수 있다. 여기서, 가중치 행렬 도출 모드는 적어도 하나의 인트라 예측 모드에 대응될 수 있고, 따라서 인코더는 현재 블록에 의해 결정된 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드를 모드 리스트에 추가할 수 있거나, 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드와 관련된 복수 개의 인트라 예측 모드를 모드 리스트에 추가할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 경우, 먼저 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 결정한 다음, 인접한 블록에 대응되는 인트라 예측 모드를 첨가될 모드로 결정할 수 있고; 첨가될 모드가 기설정된 첨가 조건을 만족하는 것을 결정한 이후, 인코더는 첨가될 모드를 모드 리스트에 첨가할 수 있고, 즉 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 모드 리스트에 첨가할 수 있으며; 다음, 이때 모드 리스트가 기설정된 리스트 길이를 만족하지 않으면, 인코더는 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 계속하여 결정한 다음, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 첨가될 모드로 결정할 수 있으며; 첨가될 모드가 기설정된 첨가 조건을 만족하는 것이 결정되면, 상기 첨가될 모드를 모드 리스트에 첨가하고, 즉 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더는 인접한 블록에 대응되는 인트라 예측 모드를 모드 리스트에 첨가하는 경우, 먼저 인접한 블록에 대응되는 순서 파라미터를 결정한 다음; 순서 파라미터에 따라, 인접한 블록에 대응되는 인트라 예측 모드를 순차적으로 모드 리스트에 첨가할 수 있다. 여기서, 인코더는 인접한 블록과 현재 블록 간의 공간 거리에 따라 대응되는 순서 파라미터를 결정할 수 있고, 예를 들어, 인접한 블록과 현재 블록 간의 공간 거리가 가까울수록, 양자의 관련성은 강하고, 첨가 처리가 먼저 수행되며, 즉 순서 파라미터가 작으며; 인접한 블록과 현재 블록 간의 공간 거리가 멀수록, 양자의 관련성은 약하고, 첨가 처리가 나중에 처리되며, 즉 순서 파라미터가 크다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 결정하는 경우, 먼저 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드를 결정한 다음, 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드에 기반하여, 제1 인덱스 간격에 따라, 관련 인트라 예측 모드를 결정할 수 있다.
예시적으로, 본 출원의 실시예에 있어서, 인코더는 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드와 관련된 복수 개의 인트라 예측 모드를 결정하는 경우, 제1 인덱스 간격에 따라 상기 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드의 인덱스 번호와 하나 또는 복수 개가 차이가 나는 모드를 선택할 수 있다. 예를 들어 1개의 인덱스 번호가 차이나거나, 2개의 인덱스 번호가 차이난다. 예를 들어, 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드의 인덱스가 10이고, 제1 인덱스 간격이 2라고 가정하면, 인덱스가 8 및 12인 두개의 인트라 예측 모드를 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드와 관련된 두개의 관련 인트라 예측 모드로 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더는 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 모드 리스트에 첨가한 이후, 또는, 인코더는 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가한 이후, 모드 리스트가 기설정된 리스트 길이를 만족하지 않으면, 즉 모드 리스트가 충만되지 않으면, 인코더는 계속하여 기설정된 예측 모드를 첨가될 모드로 결정할 수 있고; 다음 첨가될 모드가 기설정된 첨가 조건을 만족하는 것을 결정한 이후, 첨가될 모드를 모드 리스트에 첨가하고, 기설정된 예측 모드를 모드 리스트에 첨가한다.
이해할 수 있는 것은, 본 출원에 있어서, 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 등 여러가지 상이한 모드에서의 하나 또는 여러가지를 포함할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드, 기설정된 예측 모드를 각각 모드 리스트에 첨가한 이후, 모드 리스트가 여전히 기설정된 리스트 길이를 만족하지 않으면, 즉 모드 리스트가 여전히 충만되지 않으면, 인코더는 모드 리스트에서의 예측 모드를 사용하여 관련 인트라 예측 모드를 결정한 다음, 관련 인트라 예측 모드를 첨가될 모드로 결정하고, 첨가될 모드가 기설정된 첨가 조건을 만족하는 것을 결정한 이후, 첨가될 모드를 모드 리스트에 첨가할 수 있으며, 즉 모드 리스트에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가할 수 있다.
다시 말해, 본 출원에서, 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드 및 기설정된 예측 모드를 모드 리스트에 순차적으로 첨가한 이후, 모드 리스트가 여전히 충만되지 않으면, 인코더는 모드 리스트에 기반한 기존의 예측 모드를 선택하여, 대응되는 관련 인트라 예측 모드를 결정한 다음, 이러한 관련 인트라 예측 모드를 모드 리스트에 첨가할 수 있다.
예시적으로, 본 출원에 있어서, 인코더는 모드 리스트에서의 어느 한 예측 모드에 기반하여, 제2 인덱스 간격에 따라, 상기 어느 한 예측 모드와 관련된 관련 인트라 예측 모드를 순차적으로 결정할 수 있다. 여기서, 인코더는 제2 인덱스 간격에 따라 상기 어느 한 예측 모드의 인덱스 번호와 하나 또는 복수 개가 차이가 나는 모드를 선택할 수 있다. 예를 들어 1개의 인덱스 번호가 차이나거나, 2개의 인덱스 번호가 차이난다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 첨가될 모드로 사용하든, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 첨가될 모드로 사용하든, 또는 기설정된 예측 모드를 첨가될 모드로 사용하든, 또는 관련 인트라 예측 모드를 첨가될 모드로 사용하든, 인코더는 모두 첨가될 모드가 기설정된 첨가 조건을 만족하는지 여부를 판정해야 하고, 구체적으로, 첨가될 모드가 존재하고, 첨가될 모드와 모드 리스트에서의 예측 모드가 모두 상이하면, 첨가될 모드가 기설정된 첨가 조건을 만족한다고 결정할 수 있음으로써, 상기 첨가될 모드를 모드 리스트에 첨가할 수 있다.
상응하게, 첨가될 모드가 존재하지 않거나, 첨가될 모드와 모드 리스트에서의 하나의 예측 모드가 동일하면(중첩), 첨가될 모드가 기설정된 첨가 조건을 만족하지 않는 것을 결정할 수 있고, 따라서 상기 첨가될 모드를 모드 리스트에 첨가할 수 없고, 상기 첨가될 모드를 버린다.
이해할 수 있는 것은, 본 출원에 있어서, 현재 블록은 두개의 인트라 예측 모드를 사용하여 인트라 예측 처리를 수행해야 하기 때문에, MPM을 구축할 경우 더욱 많은 위치의 인트라 예측 모드를 참조하거나, 더욱 많은 인접한 블록의 인트라 예측 모드를 참조할 수 있다. 상응하게, 본 출원에서, 현재 블록에 의해 사용되는 모드 리스트의 길이는 다른 인트라 예측 모드의 모드 리스트 길이와 상이할 수 있고, 이는 MPM이 이진화 수행 시의 코드 워드가 다른 모드보다 짧기 때문에, 두개의 인트라 예측 모드가 각각 MPM일 확률을 증가하여, 인코딩 및 디코딩 효율을 향상시키는데 유리하다.
예시적으로, 본 출원의 실시예에 있어서, 현재 블록에 의해 사용되는 모드 리스트의 길이가 4라고 가정하면, 인코더는 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 경우, 구체적으로 아래와 같은 단계를 실행할 수 있다.
단계 201에 있어서, 인접한 블록의 인트라 예측 모드를 모드 리스트에 첨가한다.
본 출원의 실시예에 있어서, 인코더는 먼저 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 결정한 다음, 인접한 블록에 대응되는 인트라 예측 모드를 순차적으로 모드 리스트에 첨가한다.
도 14는 인접한 블록의 예시도이고, 도 14에 도시된 바와 같이, 현재 블록은 E이고, 인코더는 인접한 블록 F, G, C, A, B, D에 의해 사용되는 인트라 예측 모드를 모드 리스트가 충만될 때까지 순차적으로 모드 리스트에 삽입할 수 있다. F, G, C, A, B, D 중 특정된 위치에서 인트라 예측 모드를 사용하지 못하거나 사용하지 않으면 상기 위치를 건너뛴다.
이해할 수 있는 것은, 본 출원에 있어서, 복잡도가 허용되면, 더 오른쪽 및 더 아래쪽 블록의 인트라 예측 모드를 사용할 수 있다.
단계 202에 있어서, 모드 리스트가 충만되었는지 여부를 결정하고, 모드 리스트가 충만되지 않으면 단계 203을 실행하고, 그렇지 않을 경우 단계 208을 실행한다.
단계 203에 있어서, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가한다.
본 출원의 실시예에 있어서, 인접한 블록의 인트라 예측 모드를 모드 리스트에 첨가한 이후, 모드 리스트가 충만되지 않으면, 즉 모드 리스트의 길이가 4보다 작으면, 인코더는 계속하여 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드를 모드 리스트가 충만될 때까지 모드 리스트에 삽입할 수 있다.
설명해야 할 것은, 본 출원에 있어서, 인코더는 다만 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드를 모드 리스트에 첨가하는 것을 선택할 수 있고, 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드 및 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가하는 것을 선택할 수도 있다.
단계 204에 있어서, 모드 리스트가 충만되었는지 여부를 결정하고, 모드 리스트가 충만되지 않으면 단계 204를 실행하고, 그렇지 않을 경우 단계 208을 실행한다.
단계 205에 있어서, 기설정된 예측 모드를 모드 리스트에 첨가한다.
본 출원의 실시예에 있어서, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가한 이후, 모드 리스트가 충만되지 않으면, 즉 모드 리스트의 길이가 4보다 작으면, 인코더는 계속하여 기설정된 예측 모드를 모드 리스트가 충만될 때까지 모드 리스트에 첨가할 수 있다.
여기서, 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 등 여러가지 상이한 모드에서의 하나 또는 여러가지를 포함할 수 있다.
단계 206에 있어서, 모드 리스트가 충만되었는지 여부를 결정하고, 모드 리스트가 충만되지 않으면 단계 207을 실행하고, 그렇지 않을 경우 단계 208을 실행한다.
단계 207에 있어서, 모드 리스트에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가한다.
본 출원의 실시예에 있어서, 기설정된 예측 모드를 모드 리스트에 첨가한 이후, 모드 리스트가 충만되지 않으면, 즉 모드 리스트의 길이가 4보다 작으면, 인코더는 모드 리스트에 대응되는 관련 인트라 예측 모드를 결정할 수 있고, 다음 상기 관련 인트라 예측 모드를 순차적으로 모드 리스트에 첨가한다.
구체적으로, 모드 리스트가 충만되지 않으면, MPM에서의 첫 번째 인트라 예측 모드로부터 시작하여, 상기 인트라 예측 모드의 인덱스 번호와 1, -1, 2, -2, 3, -3이 차이나는 인트라 예측 모드를 모드 리스트가 충만될 때까지 MPM에 삽입할 수 있다. 1, -1, 2, -2, 3, -3이 차이나는 인트라 예측 모드에서의 특정된 인트라 예측 모드가 불법이고, 0보다 작거나 최대값보다 크면, 상기 불법 인트라 예측 모드를 버린다.
단계 208에 있어서, 모드 리스트를 도출한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 모드 리스트를 구축하는 과정에 있어서, 각 삽입될 인트라 예측 모드(첨가될 모드)는 모드 리스트에서 기존의 인트라 예측 모드와 모두 상이한 것을 보장해야만 모드 리스트에 삽입될 수 있고, 그렇지 않을 경우 버린다.
다시 말해, 본 출원에서, 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 인코더는 모드 리스트를 구축하는 과정에서, 모드 리스트에 매번 첨가된 인트라 예측 모드가 모드 리스트에서 기존의 인트라 예측 모드와 중복되지 않는 것을 보장해야 한다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 경우, 먼저 가중치 행렬 도출 모드에 대응되는 리스트 구축 정책을 결정할 수 있고; 다음 리스트 구축 정책에 따라, 추가로 모드 리스트를 결정할 수 있다.
다시 말해, 본 출원에서, 상이한 가중치 행렬의 경우, 즉 상이한 가중치 행렬 도출 모드의 경우, 인코더는 상이한 구축 정책을 사용하여 모드 리스트의 구축을 수행할 수 있다. 예를 들어, 구축 정책에 기반하여, 가중치 행렬의 경계선이 0도 또는 90도이면, 즉 수평 또는 수직이면, 인코더는 모드 리스트를 구축하는 경우 가중치 행렬에 대응되는 인트라 예측 모드를 고려할 수 있고, 다른 경우 가중치 행렬에 대응되는 인트라 예측 모드를 고려하지 않는다.
예시적으로, 본 출원에 있어서, 가중치 행렬의 경계선이 0도라고 가정하면, AWP의 2, 10 등 모드(0부터 카운팅)와 같은 모드 리스트를 구축하는 경우, 수평 인트라 예측 모드 24를 모드 리스트의 후보에 추가할 수 있고; 가중치 행렬의 경계선이 90도라고 가정하면, AWP의 6, 14 등 모드(0부터 카운팅)와 같은 모드 리스트를 구축하는 경우, 수직 인트라 예측 모드12를 모드 리스트 후보에 추가할 수 있다.
이해할 수 있는 것은, 본 출원에 있어서, 또한 가중치 행렬의 경계선이 0도에 가까운 범위 내에서, 수평 인트라 예측 모드 또는 수평 인트라 예측 모드 및 유사한 인트라 예측 모드를, 모드 리스트의 후보에 추가할 수 있고; 가중치 행렬의 경계선이 90도에 가까운 범위 내에서, 수직 인트라 예측 모드 또는 수평 인트라 예측 모드 및 유사한 인트라 예측 모드를, 모드 리스트 후보에 추가할 수 있다.
이해할 수 있는 것은, 본 출원에 있어서, 현재 블록이 인트라 예측을 수행하는 경우 사용하는 두개의 인트라 예측 모드가 상이하면, 즉 제1 인트라 예측 모드와 제2 인트라 예측 모드가 상이하면, 제2 인트라 예측 모드가 디코딩을 수행할 경우 제1 인트라 예측 모드의 가능성을 배제할 수 있다. 다시 말해 제2 인트라 예측 모드의 디코딩은 제1 인트라 예측 모드의 정보를 사용할 수 있다.
본 출원의 실시예에 있어서, 추가로, 인코더는 모드 리스트를 구축하는 과정에서, 또한 후보 인트라 예측 모드를 설정할 수 있다. 여기서, 후보 인트라 예측 모드와 모드 리스트에서의 인트라 예측 모드는 모두 상이하다.
구체적으로, 본 출원에서, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 제2 인트라 예측 모드의 결정은 제1 인트라 예측 모드에 의존할 수 있다. 여기서, 인코더는 모드 리스트에 기반하여, 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 모드 리스트에서의 하나의 예측 모드를 제1 인트라 예측 모드로 결정할 수 있고; 다음 제1 인트라 예측 모드 및 모드 리스트에 따라, 제2 인트라 예측 모드를 결정한다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 모드 리스트에서의 하나의 예측 모드를 제1 인트라 예측 모드로 결정한 이후, 모드 리스트에서 하나의 예측 모드를 삭제할 수 있고, 다음 후보 인트라 예측 모드를 모드 리스트에 첨가함으로써, 업데이트된 모드 리스트를 획득할 수 있고; 다음 상기 업데이트된 모드 리스트에서 하나의 예측 모드를 선택하여 상기 제2 인트라 예측 모드로 결정할 수 있으며, 여기서, 선택 방식은 임의일 수 있다.
다시 말해, 본 출원의 실시예에 있어서, 제1 인트라 예측 모드가 하나의 MPM을 선택하면, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 제2 인트라 예측 모드가 선택 가능한 MPM은 하나가 줄어들고, 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 선택 가능한 모드 리스트의 길이를 변경하지 않기 위해, 인코더는 제1 인트라 예측 모드를 결정한 이후, 하나의 MPM, 즉 기설정된 후보 인트라 예측 모드를 모드 리스트에 첨가할 수 있음으로써, 제2 인트라 예측 모드를 결정하는 경우 제1 인트라 예측 모드와 동일한 개수의 MPM을 계속 사용할 수 있다.
예시적으로, 본 출원에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 선택 가능한 MPM이 N개라고 가정하면, 모드 리스트를 구축하는 경우, 먼저 N개의 MPM 및 1개의 후보 MPM을 구축할 수 있고, 제1 인트라 예측 모드에 대해, 선택 가능한 MPM은 상기 N개의 MPM이다. 제1 인트라 예측 모드가 그중 하나의 MPM을 선택하면, 제2 인트라 예측 모드에 대해, 첫 번째 인트라 예측 모드에서 선택된 MPM을 제거하고, 후보 MPM이 모드 리스트에 추가됨으로써, 두 번째 인트라 예측 모드는 계속하여 N개의 MPM을 선택할 수 있다.
본 출원의 실시예에 있어서, 추가로, 인코더는 모드 리스트를 구축하는 과정에서, 또한 모드 리스트의 길이 파라미터를 (N+1)로 설정할 수 있고; 여기서, N은 양의 정수이다.
구체적으로, 본 출원에서, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 제2 인트라 예측 모드의 결정은 제1 인트라 예측 모드에 의존할 수 있다. 여기서, 인코더는 모드 리스트에 기반하여, 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 모드 리스트를 사용하여 제1 인트라 예측 모드를 결정하면, 모드 리스트의 상위 N개의 예측 모드에서의 하나의 예측 모드를 제1 인트라 예측 모드로 결정할 수 있고; 다음 제1 인트라 예측 모드 및 모드 리스트에 따라, 제2 인트라 예측 모드를 결정한다.
더 나아가, 본 출원의 실시예에 있어서, 모드 리스트를 사용하여 제1 인트라 예측 모드를 결정하면, 인코더는 모드 리스트의 상위 N개의 예측 모드에서의 하나의 예측 모드를 제1 인트라 예측 모드로 결정한 이후, 모드 리스트의, 제1 인트라 예측 모드 외의 다른 N개의 예측 모드를 이용하여 제2 인트라 예측 모드를 결정한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더는 모드 리스트에 기반하여, 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 모드 리스트를 사용하지 않고 제1 인트라 예측 모드를 결정하면, 인코더는 직접 모드 리스트의 상위 N개의 예측 모드에서의 하나의 예측 모드를 제2 인트라 예측 모드로 결정할 수 있다.
다시 말해, 본 출원의 실시예에 있어서, 인트라 예측 모드의 선택 가능한 MPM이 N개라고 가정하면, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 모드 리스트를 구축하는 경우, (N+1)개의 MPM을 구축할 수 있고, 제1 인트라 예측 모드에 대해, 선택 가능한 MPM은 모드 리스트에서의 상위 N개의 MPM이다. 제1 인트라 예측 모드가 MPM을 선택하지 않으면, 제2 인트라 예측 모드가 선택 가능한 MPM은 모드 리스트에서의 상위 N개의 MPM이다. 제1 인트라 예측 모드가 MPM을 선택하면, 제2 인트라 예측 모드가 선택 가능한 MPM은 모드 리스트에서의, 제1 인트라 예측 모드 외의 N개의 MPM이다.
예시적으로, 본 출원에 있어서, N을 4라고 가정하면, 인코더는 5개의 MPM이 포함된 모드 리스트를 구축할 수 있다. MPM[x]은 제(x+1) 번째 MPM을 표시하고, 즉 MPM[0]은 첫 번째 MPM을 표시하며, 이는 어레이의 카운트가 0부터 시작되기 때문이다. 제1 인트라 예측 모드는 mode0이고, 제2 인트라 예측 모드는 mode1이다. 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 모두 MPM이라고 가정하면, 제1 인트라 예측 모드가 선택 가능한 MPM에서의 인덱스 번호는 idx0이고, 제2 인트라 예측 모드가 선택 가능한 MPM에서의 인덱스 번호가 idx1이면,
mode0=MPM[idx0]
mode1=MPM[idx1<idx0?idx1:idx1+1]이다.
다시 말해, idx1<idx0이면, mode1=MPM[idx1]이고;
그렇지 않을 경우, mode1=MPM[idx1+1]이다.
이로부터 알다시피, idx0 및 idx1의 값의 범위는 모두 0 내지 3이고, mode1의 값은 idx1와 관련될 뿐만 아니라, idx0과도 관련된다.
선택적으로, 본 출원의 실시예에 있어서, 다만 현재 블록에 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이함만을 보장하고, 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 선택 가능한 MPM의 개수에 대해 제한하지 않으면, 인코더는 인트라 예측 모드를 다시 보충하는 설정을 수행하지 않거나, 모드 리스트 길이를 증가하는 처리를 수행하지 않을 수도 있으며, 이때, 인코더는 제2 인트라 예측 모드의 코딩 방법을 변경해야 한다. 다시 말해, 제1 인트라 예측 모드가 모드 리스트에서의 하나의 MPM을 선택한 이후, 제2 인트라 예측 모드가 선택 가능한 MPM은 하나가 부족하게 되고, 이때 제2 인트라 예측 모드가 선택 가능한 MPM이 줄어들었기 때문에, 제2 인트라 예측 모드의 코딩 방법을 변경해야 한다.
예시적으로, 본 출원에 있어서는, MPM의 개수 N이 4인 것을 예로 들고, 첫 번째 비트는 MPM인지 여부를 표시하고, 예를 들어 “1”은 MPM인 것을 표시하고, “0”은 MPM이 아닌 것을 표시한다. 제1 인트라 예측 모드가 MPM이면, 4개의 MPM이 존재하기 때문에, 2개의 비트로 어떠한 MPM인지를 표시하며, 즉 “00, 01, 10, 11”은 각각 첫 번째 MPM, 두 번째 MPM, 세 번째 MPM, 네 번째 MPM을 표시한다. 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 모두 MPM이면, 제2 인트라 예측 모드가 사용 가능한 MPM은 3개 뿐이며, 1 내지 2개의 비트로 어떠한 MPM인지를 표시하고, 예를 들어 “00, 01, 10”은 각각 나머지 첫 번째 MPM, 두 번째 MPM, 세 번째 MPM을 표시한다. 이로부터 알다시피, 하나의 가능성이 배제되었으므로, 오버헤드를 절약하기 위해 코딩 방법 또는 이진화 방법이 변경될 수 있다.
예시적으로, 본 출원에 있어서, N을 4라고 가정하면, 구축은 4개의 MPM의 모드 리스트를 포함한다. MPM[x]은 제(x+1) 번째 MPM을 표시하고, 즉 MPM[0]은 첫 번째 MPM을 표시하며, 이는 어레이의 카운트가 0부터 시작되기 때문이다. 제1 인트라 예측 모드는 mode0이고, 제2 인트라 예측 모드는 mode1이다. 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 모두 MPM이라고 가정하면, 제1 인트라 예측 모드가 선택 가능한 MPM에서의 인덱스 번호는 idx0이고, 제2 인트라 예측 모드가 선택 가능한 MPM에서의 인덱스 번호가 idx1이면,
mode0=MPM[idx0]
mode1=MPM[idx1<idx0?idx1:idx1+1]이다.
다시 말해, idx1<idx0이면, mode1=MPM[idx1]이고;
그렇지 않을 경우, mode1=MPM[idx1+1]이며;
이로부터 알다시피, idx0의 값의 범위는 0 내지 3이고, idx1의 값의 범위는 0 내지 2이며, mode1의 값은 idx1와 관련될 뿐만 아니라, idx0과도 관련된다. Idx0은 2비트 이진화를 사용할 수 있고, idx1은 1 내지 2비트 이진화를 사용한다.
본 출원의 실시예에 있어서, 추가로, 인코더는 가중치 행렬 도출 모드에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 또한 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드, 기설정된 예측 모드에 대해 순차적으로 순서 배정 처리를 수행할 수 있음으로써, 예측 모드의 후보 리스트를 획득할 수 있고; 여기서, 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 등 여러가지 예측 모드에서의 하나 또는 여러가지를 포함하며; 다음, 인코더는 예측 모드의 후보 리스트에 따라 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정할 수 있다.
구체적으로, 본 출원의 실시예에 있어서, 가중치 행렬과의 관련성을 이용하여 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 또한 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드 또는 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드와 관련된 복수 개의 인트라 예측 모드가 이진화를 수행하는 경우 일반 인트라 예측 모드보다 짧은 코드 워드를 부여할 수 있고, 또는 인트라 예측 모드에서 가장 긴 코드 워드보다 짧은 코드 워드를 부여할 수 있으며, 다시 말해 인트라 예측 모드의 코드 워드는 가장 길지 않다. 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드 또는 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드와 관련된 복수 개의 인트라 예측 모드가 다른 모드보다 선택될 확률이 높다고 간주할 수 있다.
다시 말해, 본 출원의 실시예에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드는 MPM을 사용하지 않을 수도 있으며, 인코더는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 사용 가능한 전부 인트라 예측 모드에 대해 순서 배정 처리를 수행하여, 예측 모드의 후보 리스트를 생성할 수 있음으로써, 이진화 수행 시 가변 길이 코딩이 사용되며, 예측 모드의 후보 리스트에서 순서가 앞쪽인 인트라 예측 모드에 비교적 짧은 코드 워드를 할당하고, 예측 모드의 후보 리스트에서 순서가 뒤쪽인 인트라 예측 모드에 비교적 긴 코드 워드를 할당한다. 여기서, 순서 배정 처리를 수행하는 경우 현재 블록의 인접한 블록의 인트라 예측 모드를 참조할 수 있고, 또한 현재 블록의 가중치 행렬 도출 모드를 참조할 수 있다.
예시적으로, 본 출원의 실시예에 있어서, 인코더가 가중치 행렬 도출 모드에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 방법은 아래와 같은 단계를 포함할 수 있다.
단계 301에 있어서, 인접한 블록의 인트라 예측 모드를 후보 리스트에 첨가한다.
본 출원의 실시예에 있어서, 인코더는 먼저 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 결정한 다음, 인접한 블록에 대응되는 인트라 예측 모드에 대해 순서 배정을 수행하고, 순서 배정을 수행한 이후 순차적으로 후보 리스트에 첨가한다.
현재 블록은 E이고, 인코더는 F, G, C, A, B, D의 순서에 따라, 인접한 블록 F, G, C, A, B, D에 의해 사용되는 인트라 예측 모드를 순차적으로 후보 리스트에 첨가한다. F, G, C, A, B, D 중 특정된 위치에서 인트라 예측 모드를 사용하지 못하거나 사용하지 않으면 상기 위치를 건너뛴다.
이해할 수 있는 것은, 본 출원에 있어서, 복잡도가 허용되면, 더 오른쪽 및 더 아래쪽 블록의 인트라 예측 모드를 사용할 수 있다.
단계 302에 있어서, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 후보 리스트에 첨가한다.
본 출원의 실시예에 있어서, 인접한 블록의 인트라 예측 모드를 후보 리스트에 첨가한 이후, 인코더는 계속하여 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드를 후보 리스트에 삽입한다.
설명해야 할 것은, 본 출원에 있어서, 인코더는 다만 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드를 후보 리스트에 첨가하는 것을 선택할 수 있고, 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드 및 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가하는 것을 선택할 수도 있다.
단계 303에 있어서, 기설정된 예측 모드를 후보 리스트에 첨가한다.
본 출원의 실시예에 있어서, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 후보 리스트에 첨가한 이후, 인코더는 계속하여 기설정된 예측 모드를 후보 리스트에 첨가할 수 있다.
여기서, 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 등 여러가지 상이한 모드에서의 하나 또는 여러가지를 포함할 수 있다.
단계 304에 있어서, 후보 리스트에 대응되는 관련 인트라 예측 모드를 후보 리스트에 첨가한다.
본 출원의 실시예에 있어서, 기설정된 예측 모드를 후보 리스트에 첨가한 이후, 인코더는 후보 리스트에 대응되는 관련 인트라 예측 모드를 결정한 다음, 상기 관련 인트라 예측 모드를 순차적으로 후보 리스트에 첨가할 수 있다.
구체적으로, 인코더는 후보 리스트에서의 첫 번째 인트라 예측 모드로부터 시작하여, 상기 인트라 예측 모드의 인덱스 번호와 1, -1, 2, -2, 3, -3이 차이나는 인트라 예측 모드를 후보 리스트에 삽입할 수 있다. 1, -1, 2, -2, 3, -3이 차이나는 인트라 예측 모드에서의 특정된 인트라 예측 모드가 불법이고, 0보다 작거나 최대값보다 크면, 상기 불법 인트라 예측 모드를 버린다.
단계 305에 있어서, 후보 리스트 외의 인트라 예측 모드를 후보 리스트에 첨가한다.
본 출원의 실시예에 있어서, 인코더는 또한 예측 모드의 인덱스 0으로부터 시작하여, 순서 배정되지 않은 인트라 예측 모드를 종료될 때까지 후보 리스트에 추가할 수 있다.
이로부터 알다시피, 가중치 행렬의 경계선의 각도 위치 등이 상이하기 때문에, 인트라 예측 모드의 확률은 상이하고, 제1 인트라 예측 모드 및 제2 인트라 예측 모드의 확률은 상이하다. 예를 들어 위의 도의 예에 있어서, 제1 인트라 예측 모드(흰색 블록에 대응)의 오른쪽 위에서 왼쪽 아래로의 각도 모드는 왼쪽 위에서 오른쪽 아래로의 각도 모드보다 확률이 크고, 제2 인트라 예측 모드(검은색 블록에 대응)의 오른쪽 위에서 왼쪽 아래로의 각도 모드는 왼쪽 위에서 오른쪽 아래로의 각도 모드보다 확률이 크지 않다. 따라서 각 가중치 행렬 도출 모드에 대한 제1 인트라 예측 모드 및 제2 인트라 예측 모드는 각각 각자의 확률 특징에 따라 순서 배정을 수행할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 가중치 행렬 도출 모드에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 또한 가중치 행렬 도출 모드에 대응되는 제1 인트라 예측 모드의 참조 집합을 구축하는 동시에, 가중치 행렬 도출 모드에 대응되는 제2 인트라 예측 모드의 참조 집합을 구출할 수 있고; 다음 제1 인트라 예측 모드의 참조 집합에 기반하여 제1 인트라 예측 모드를 결정할 수 있고; 동시에, 제2 인트라 예측 모드의 참조 집합에 기반하여 제2 인트라 예측 모드를 결정한다.
다시 말해, 본 출원의 실시예에 있어서, 현재 블록의 가중치 행렬 도출 모드의 경우, 인코더는 상기 가중치 행렬 도출 모드에 대응되는, 제1 인트라 예측 모드의 전부 가능한 인트라 예측 모드에 대해 순서 배정 처리를 수행하여, 제1 인트라 예측 모드의 참조 집합을 생성할 수 있는 동시에, 또한 상기 가중치 행렬 도출 모드에 대응되는, 제2 인트라 예측 모드의 전부 가능한 인트라 예측 모드에 대해 순서 배정 처리를 수행하여, 제2 인트라 예측 모드의 참조 집합을 생성할 수 있음으로써, 제1 인트라 예측 모드의 참조 집합에서 제1 인트라 예측 모드를 결정할 수 있고, 또한 제2 인트라 예측 모드의 참조 집합에서 제1 인트라 예측 모드를 결정할 수 있다.
예시적으로, 본 출원에 있어서, 인코더는 하나의 맵핑 테이블을 기설정하는 것을 통해 각 가중치 행렬 도출 모드와 제1 인트라 예측 모드 및 제2 인트라 예측 모드 간의 맵핑 관계를 결정할 수 있고, 표 2에 표시된 바와 같이, 하나의 가중치 행렬 도출 모드의 경우, 표 2를 통해 대응되는 제1 인트라 예측 모드의 모든 가능한 인트라 예측 모드의 순서, 대응되는 제2 인트라 예측 모드의 모든 가능한 인트라 예측 모드의 순서를 결정할 수 있다.
가중치 도출 모드 인트라 예측 모드 순서
0 0(제1 인트라 예측 모드) ……
1(제2 인트라 예측 모드) ……
1 0(제1 인트라 예측 모드) ……
1(제2 인트라 예측 모드) ……
2 0(제1 인트라 예측 모드) ……
1(제2 인트라 예측 모드) ……
…… …… ……
더 나아가, 본 출원의 실시예에 있어서, 복잡도를 저하시키기 위해, 인코더는 클러스터링 방법을 통해 상기 표 2와 같은 룩업 테이블을 축소할 수 있고, 예를 들어, 가중치 행렬 도출 모드를 분류 처리하여, 가중치 행렬 도출 모드에 대응되는 타입을 결정할 수 있고, 하나의 타입의 가중치 행렬 도출 모드의 경우, 동일한 제1 인트라 예측 모드의 모든 가능한 인트라 예측 모드의 순서에 대응되고, 동일한 제2 인트라 예측 모드의 모든 가능한 인트라 예측 모드의 순서에도 대응된다.더 나아가, 본 출원의 실시예에 있어서, 복잡도를 저하시키기 위해, 인코더는 클러스터링 방법을 통해 상기 표 2와 같은 룩업 테이블을 축소할 수 있고, 예를 들어, 또한 인트라 예측 모드를 분류 처리하여, 인트라 예측 모드에 대응되는 타입을 결정할 수 있으며, 예를 들어 DC, Planar, Bilinear 등 비각도 모드는 하나의 타입이고, 각도 모드는 일부 라디안의 범위에 따라 분류 처리를 수행할 수 있고, 예를 들어 45도마다, 즉 1/4원을 하나의 타입으로 하여 분류 처리를 수행할 수 있거나 22.5도마다, 즉 1/8원을 하나의 타입으로 하여 분류 처리를 수행할 수 있다. 구체적으로, 각도 모드는 복수 개의 동일하지 않은 구간으로 구획될 수도 있다.도 15는 클러스터링 예시도이고, 도 15에 도시된 바와 같이, 모든 각도 모드를 9개의 영역으로 나눌 수 있다. 각 영역 내부의 순서는 모드 번호 순서에 따라 순서 배정되거나, 또는 영역의 중심에서 양쪽으로 순서 배정될 수 있다.
이해할 수 있는 것은, 본 출원에 있어서, AVS3에서의 각도 모드의 각도는 연속적이지 않고, 앞의 3 내지 32번 모드는 큰 라디안 범위를 커버하지만 비교적 희소하고, 뒤의 34 내지 65번 모드는 비교적 미세하며, 분류할 경우 이 특성을 이용하여 33번 이전의 모드 및 이후의 모드를 상이한 카테고리로 분류할 수 있다.
본 출원의 실시예에 있어서, 추가로, 본 출원에서 제안한 인트라 예측 방법은, 두개의 상이한 인트라 예측 모드 및 하나의 가중치 행렬을 사용하여 현재 블록의 예측값을 결정해야 하기 때문에, 오버헤드를 저하시키기 위해, 본 출원에서, 인코더는 현재 블록의 두개의 인트라 예측 모드에 대해 제한하는 것을 통해 비트수를 저하시킬 수 있는 동시에, 인코더는 현재 블록의 가중치 행렬 도출 모드에 대해 제한하는 것을 통해 비트수를 저하시킬 수도 있다.
예시적으로, 본 출원에 있어서, AVS3의 이전 33개의 예측 모드는 거의 전체 각도 범위를 커버하기 때문에, AVS3에서 이전 33가지 예측 모드만 사용하면 더 나은 성능을 보장할 수 있고, 코딩할 경우 EIPM을 사용하지 않도록 조정하기만 하면 된다. 더 나아가, 인코더는 또한 현재 블록이 사용 가능한 인트라 예측 모드의 개수에 대해 추가로 압축 및 제한을 수행하여, 최종적으로 5개의 비트만을 사용하여 코딩을 수행하는 것을 구현함으로써, 추가로 오버헤드를 줄임으로써, 더 나은 성능을 달성할 수 있다.
선택적으로, 본 출원에 있어서, 인코더는 현재 블록이 사용 가능한 인트라 예측 모드 개수를 줄이는 것을 통해 두개의 인트라 예측 모드를 코딩하는 오버헤드를 저하시킬 수 있다. 예를 들어, AVS3에 있어서, 66가지 인트라 예측 모드를 사용하면, 하나의 인트라 예측 모드를 코딩하기 위해 최대로 7개의 비트가 필요하며, 33가지 인트라 예측 모드만을 사용하고, PCM 모드를 사용하지 않으면, 하나의 인트라 예측 모드를 코딩하기 위해 최대로 6개의 비트만이 필요하다.
더 나아가, 본 출원에서, 인트라 예측 모드가 일반적으로 DC, Planar, Bilinear 등과 같은 비각도 예측 모드 및 각도 예측 모드를 포함하는 것을 고려한다. 구현 과정에 있어서, 각 비각도 모드는 한 세트의 논리를 사용하고, 전부 각도 모드는 한 세트의 논리를 사용하며 또는 각도 모드는 여러 세트의 논리를 사용하며, 상이한 논리 간의 일부 회로는 다중화될 수 있고, 일부 회로는 다중화되지 않을 수 있다. 따라서, 현재 블록이 사용 가능한 인트라 예측 모드의 개수에 대한 한정은, 각도 예측 모드만을 선택하도록 한정할 수 있거나 비각도 예측 모드만을 선택하도록 한정할 수 있다.
아래는 제2 인트라 예측 모드의 사용 가능한 인트라 예측 모드에 대한 한정을 예로 들어 설명한다. 설명해야 할 것은, 상응한 한정은 제1 인트라 예측 모드의 한정에 적용될 수도 있다.
방식 1에 있어서, 제2 인트라 예측 모드는 비각도 예측 모드에서 지정한 인트라 예측 모드만을 사용할 수 있다.
예를 들어, 제2 인트라 예측 모드는 DC 모드만을 사용할 수 있거나 제2 인트라 예측 모드는 Bilinear 모드만을 사용할 수 있다. 제2 인트라 예측 모드는 한가지 선택만 가능하기 때문에, 본 발명의 블록이 인코딩 및 디코딩에 사용되는 경우 제2 인트라 예측 모드를 결정하는 과정이 필요없이 제2 인트라 예측 모드를 디폴트로 도출하여 현재 블록에 대해 예측을 수행할 수 있고, 코딩을 수행하는 경우 제2 인트라 예측 모드를 코드 스트림에 기입할 필요가 없고, 디코딩할 경우 코드 스트림에서 제2 인트라 예측 모드가 무엇인지 해석할 필요가 없다.
방식 2에 있어서, 제2 인트라 예측 모드는 비각도 모드거나 비각도 모드에서의 일부만 사용할 수 있다.
예를 들어, 제2 인트라 예측 모드는 DC 및 Bilinear 모드만을 사용할 수 있고, 제2 인트라 예측 모드는 2가지 가능한 선택만이 존재하기 때문에, 1개의 비트(intra_luma_pred_mode1)로 제2 인트라 예측 모드가 DC인지 Bilinear 모드인지를 표시할 수 있다. 코딩할 경우, 제2 인트라 예측 모드에 대해 DC 및 Bilinear 두가지 가능성만을 시도하면 되고, 제2 인트라 예측 모드가 어떠한 인트라 예측 모드인지 결정된 후, intra_luma_pred_mode1을 결정할 수 있다. 상응한 블록을 디코딩하는 과정에 있어서, DC 또는 Bilinear인지를 결정하기 위해 제2 인트라 예측 모드에 대해 1비트의 intra_luma_pred_mode1만을 해석하면 된다.
다른 실시예에 있어서, 제2 인트라 예측 모드는 비각도 모드만을 사용할 수 있고, 즉 제2 인트라 예측 모드는 세가지 가능한 선택만 존재하면, 2개의 비트(intra_luma_pred_mode1)로 제2 인트라 예측 모드가 어떠한 인트라 예측 모드인지를 표시할 수 있다.
방식 3에 있어서, 제2 인트라 예측 모드는 전부 각도 예측 모드 또는 일부 각도 예측 모드만을 사용할 수 있다.
제2 인트라 예측 모드가 선택 가능한 인트라 예측 모드가 줄어들기 때문에, 코드 스트림에서 제2 인트라 예측 모드를 나타내는 intra_luma_pred_mode1의 비트수도 줄어든다. 예를 들어 AVS3에서 제2 인트라 예측 모드는 전부 각도 모드만을 사용할 수 있다. AVS3에는 DC, Plane, Bilinear 3가지 비각도 모드가 존재한다. 다시 말해 AVS3에서, 제2 인트라 예측 모드는 0, 1, 2 외의 다른 모드만 사용할 수 있다.
하나의 구체적인 실시예에 있어서, 제2 인트라 예측 모드는 비각도 예측 모드 외의 모든 다른 인트라 예측 모드(즉 모든 각도 예측 모드를 사용할 수 있음)를 사용할 수 있다.
하나의 구체적인 실시예에 있어서, 제2 인트라 예측 모드는 모든 각도 예측 모드에서의 일부를 사용할 수 있다. 여기서, 일부 각도 예측 모드는 이전 33가지 각도 예측 모드이거나, 일부 각도 예측 모드는 예측된 간격에 따라 33가지 각도 예측 모드 또는 65가지 각도 예측 모드에서 선택된 일부 각도 예측 모드일 수 있으며, 예를 들어, 상기 기설정된 간격은 1, 2 또는 다른 양의 정수일 수 있다.
표 3에 표시된 바와 같이, 밝기 예측 블록의 인트라 예측 모드의 하나의 예이고 여기서, 모드 번호(IntraLumaPredMode)는 상응한 인트라 예측 모드에 대응된다. 0은 DC 모드를 대표하고, 1은 Plane 모드를 대표하며, 2는 이중 선형 Bilinear 모드를 대표하고, 12는 수직 모드를 대표하며, 24는 수평 모드를 대표하고, 33은 PCM 모드를 대표하고, 나머지는 수평 수직 외의 각도 모드이고, 구체적인 모드 번호가 대표하는 각도는 도 7을 참조할 수 있다.
밝기 예측 블록인트라 예측 모드
IntraLumaPredMode 인트라 예측 모드
0 Intra_Luma_DC
1 Intra_Luma_Plane
2 Intra_Luma_Bilinear
3 내지 11 Intra_Luma_Angular
12 Intra_Luma_Vertical
13 내지 23 Intra_Luma_Angular
24 Intra_Luma_Horizontal
25~32 Intra_Luma_Angular
33 Intra_Luma_PCM
34 내지 65 Intra_Luma_Angular
제2 인트라 예측 모드가 0, 1, 2 외의 다른 모드만 사용할 수 있는 것을 예로 들고, 제2 인트라 예측 모드가 선택 가능한 MPM 모드 리스트의 구축 과정을 제공한다.각 인트라 예측 모드가 4개의 MPM을 사용할 수 있는 것을 예로 든다. 길이가 8인 모드 리스트를 구축할 수 있고, 여기서 AVS3에는 3개의 비각도 예측 모드만이 존재하므로 비각도 예측 모드의 개수는 3보다 작거나 같아야 한다. 여기서 이전의 4개의 MPM은 제1 인트라 예측 모드에 의해 선택될 수 있다. 제2 인트라 예측 모드는 MPM 리스트에서 비 제1 인트라 예측 모드거나 비각도 모드인 이전의 4개의 MPM을 선택할 수 있다.도 16을 예로 들어 설명하면, 구축된 MPM 모드 리스트가 도에 도시된 바와 같다고 가정하면, 제1 인트라 예측 모드는 이전의 4개의 MPM에서 하나를 선택할 수 있고, 제1 인트라 예측 모드가 12를 사용한다고 가정하고, 즉 MPM 리스트에서의 첫 번째 MPM을 사용한다고 가정한다. 제2 인트라 예측 모드가 선택 가능한 MPM은 앞에서 뒤로 찾을 수 있고, 첫 번째 MPM(12)은 제1 인트라 예측 모드에 의해 사용되었기 때문에, 상기 첫 번째 MPM(12)은 사용하지 못한다. 두 번째 MPM(24)은 사용되지 않았고 사용 가능한 각도 모드이므로 사용할 수 있으며, 세 번째(0), 네 번째(2), 다섯 번째(1)에 대응되는 MPM은 사용되지 않았지만 비각도 모드이므로, 사용할 수 없다. 여섯 번째(6), 일곱 번째(8), 여덟 번째(10)의 MPM은 사용되고 사용 가능한 각도 모드이므로 사용할 수 있으며, 24, 6, 8, 10은 각각 제2 인트라 예측 모드 MPM 인덱스가 0, 1, 2, 3인 모드에 대응된다.
도 14에 도시된 블록을 예로 들면, MPM 리스트를 구축하는 예를 제공한다.
MPM 모드 리스트의 제1 부분의 리스트 길이를 8로 설정한다.
현재 블록은 E이고, F, G, C, A, B, D에 의해 사용되는 인트라 예측 모드를 MPM 모드가 충만될 때까지 순차적으로 MPM 모드 리스트에 삽입한다. F, G, C, A, B, D 중 특정된 위치에서 인트라 예측 모드를 사용하지 못하거나 사용하지 않으면 상기 위치를 건너뛴다. 여기서, 본 출원에서, 도 14에 도시된 블록에 대응되는 인트라 예측 모드를 사용할 수 있는 외에, 다른 블록에 대응되는 인트라 예측 모드를 사용할 수도 있으며, 예를 들어, 현재 블록의 우측 또는 아래측 블록에 대응되는 인트라 예측 모드를 사용할 수도 있다.
더 나아가, MPM 모드 리스트가 충만되지 않으면, 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드를 MPM 모드 리스트가 충만될 때까지 MPM 모드 리스트에 삽입한다.
MPM 모드 리스트가 충만되지 않으면, DC 모드, Bilinear 모드를 MPM 모드 리스트가 충만될 때까지 순차적으로 MPM 모드 리스트에 삽입한다.
MPM 모드 리스트가 충만되지 않으면, MPM 모드 리스트에서의 첫 번째 인트라 예측 모드로부터 시작하여, 상기 인트라 예측 모드와 1, -1, 2, -2, 3, -3이 차이 나는 인트라 예측 모드를 MPM 모드 리스트가 충만될 때까지 MPM 모드 리스트에 삽입한다. 1, -1, 2, -2, 3, -3이 차이나는 인트라 예측 모드에서의 특정된 인트라 예측 모드가 불법이고, 0보다 작거나 최대값보다 크거나, PCM이면 인트라 예측 모드를 버린다.
MPM 모드 리스트의 첫 번째 인트라 예측 모드의 모드 번호가 두 번째 인트라 예측 모드의 모드 번호보다 크면, 이 두개의 MPM을 교환한다.
MPM 모드 리스트를 삽입하는 조작에 있어서, 각 삽입될 인트라 예측 모드가 MPM 모드 리스트에서 기존의 인트라 예측 모드와 모두 상이해야만 MPM 모드 리스트에 삽입될 수 있고, 그렇지 않을 경우 버린다.
상기 모든 제2 인트라 예측 모드가 선택 가능한 인트라 예측 모드에 대해 제한하는 과정에 있어서, 도출되거나 결정된 제2 인트라 예측 모드가 불법 모드이면, 기설정된 대응 관계에 따라 수정해야 하고, 제2 인트라 예측 모드를 합법적인 모드로 수정해야 한다. 구체적으로, 제2 인트라 예측 모드를 각도 예측 모드로 한정한 경우, 얻은 제2 인트라 예측 모드가 0, 1, 2인 모드이면, 불법 모드(즉 사용할 수 없는 비각도 예측 모드를 한정함)가 나타나는 것을 방지하기 위해, 기설정된 대응 관계에 따라 하나 또는 여러가지 사용 가능한 각도 모드에 대응해야 한다. 예를 들어, 제2 인트라 예측 모드가 디코딩하여 0 모드를 얻으면, 기설정된 대응 관계에 따라 제2 인트라 예측 모드를 12 모드로 설정하고 즉 수직 모드로 설정하며, 제2 인트라 예측 모드가 디코딩하여 1 모드를 얻으면, 기설정된 대응 관계에 따라 제2 인트라 예측 모드를 18 모드로 설정하며, 즉 오른쪽 아래 45도의 모드로 설정하며; 제2 인트라 예측 모드가 디코딩하여 2 모드를 얻으면, 기설정된 대응 관계에 따라 제2 인트라 예측 모드를 24 모드로 설정하고 즉 수평 모드로 설정한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더는 인트라 예측 모드의 개수에 대해 제한을 수행하는 경우, 전부 예측 블록의 인트라 예측 모드의 개수에 대해 직접 제한 처리를 실행할 수 있을 뿐만 아니라, 또한 현재 블록의 크기 파라미터를 참조하여, 상이한 크기의 현재 블록에 대해 상이한 제한 방식을 사용할 수 있다.
예시적으로, 본 출원에 있어서, 64×64 또는 32×32 크기와 같은 크기 파라미터가 비교적 큰 예측 블록의 경우, 인코더는 전부 인트라 예측 모드를 사용하여 현재 블록의 두개의 인트라 예측 모드를 결정할 수 있고, 8x8 크기와 같은 예측 블록 크기 파라미터가 비교적 작은 예측 블록의 경우, 인코더는 일부 인트라 예측 모드를 사용하여 현재 블록의 두개의 인트라 예측 모드를 결정할 수 있으며, 즉 현재 블록이 사용 가능한 인트라 예측 모드의 개수에 대해 제한할 수 있으며, 이는 크기 파라미터가 비교적 작은 예측 블록의 경우, 미세한 각도의 차이가 미치는 영향은 명확하지 않기 때문이다.
이해할 수 있는 것은, 본 출원에 있어서, 먼저 제2 크기 임계값 같은 하나의 크기 임계값을 설정할 수 있고, 현재 블록의 크기 파라미터가 제2 크기 임계값보다 작으면, 미세한 각도의 차이는 비교적 큰 영향을 미치지 않는 것으로 간주할 수 있으며, 따라서 현재 블록이 선택할 수 있는 인트라 예측 모드의 개수를 제한할 수 있다. 구체적으로, 현재 블록의 두개의 인트라 예측 모드의 인덱스 번호에 대해 제한하는 것을 통해, 인트라 예측 모드의 개수에 대한 제한을 구현할 수 있다.
예시적으로, 본 출원에 있어서, 현재 블록의 크기 파라미터가 제2 크기 임계값보다 작으면, 인코더는 제2 모드 인덱스 범위에 따라 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정할 수 있고; 여기서, 제2 모드 인덱스 범위는 인트라 예측 모드의 인덱스 번호에 대해 제한하기 위한 것이다. 구체적으로, 제2 모드 인덱스 범위는 제2 하한 임계값 및 제2 상한 임계값을 포함할 수 있고, 인코더는 먼저 제1 인트라 예측 모드의 제1 인덱스 번호를 결정할 수 있고, 동시에 제2 인트라 예측 모드의 제2 인덱스 번호를 결정할 수 있으며; 다음 제1 인덱스 번호 및 제2 인덱스 번호를 모두 제2 하한 임계값보다 크게 설정하고; 제1 인덱스 번호 및 제2 인덱스 번호를 모두 제2 상한 임계값보다 작게 설정한다.
다시 말해, 본 출원에서, 제2 모드 인덱스 범위를 통해 현재 블록의 제1 인트라 예측 모드의 인덱스 번호 및 제2 인트라 예측 모드의 인덱스 번호를 제한할 수 있음으로써, 인트라 예측 모드 개수에 대한 제한을 완료한다.
예를 들어, AVS3에 있어서, 제2 모드 인덱스 범위는 0 내지 32일 수 있고, 즉 제2 모드 인덱스 범위를 통해 제1 인트라 예측 모드의 인덱스 번호 및 제2 인트라 예측 모드의 인덱스 번호를 0 내지 32 내에 제한할 수 있고, 따라서 현재 블록은 이전 33가지 예측 모드를 사용하는 것을 통해 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정할 수 있다.
이해할 수 있는 것은, 본 출원에 있어서, 제1 크기 임계값과 제2 크기 임계값은 동일하거나 상이할 수 있고; 제1 모드 인덱스 범위와 제2 모드 인덱스 범위는 동일하거나 상이할 수 있다.
더 나아가, 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 선택 가능한 인트라 예측 모드에 대해 모두 한정하지 않는 경우, 결정된 두개의 인트라 예측 모드의 예측 능력은 대응되고, 대응되는 가중치 행렬에 대해 처리를 수행할 필요가 없다. 그러나, 선택 가능한 인트라 예측 모드에 대해 한정한 이후, 2개의 인트라 예측 모드의 예측 능력은 변화가 생겼으므로, 상응하게 가중치 행렬도 조정해야 한다.
구체적으로, 도 2에 도시된 AWP 가중치 행렬에 있어서, 번호가 0인 오른쪽 하단 모서리 흰색 영역은 완전히 제1 인트라 예측 모드로부터 온 것이고, 왼쪽 상단 모서리 검은색 부분은 제2 인트라 예측 모드로부터 온 것이며, 회색 부분은 두가지 인트라 예측 모드를 가중하여 얻은 것이다. 왼쪽 상단 모서리가 DC 모드 예측을 사용하고, 오른쪽 하단 모서리가 수평 모드 예측을 사용하려면, 제1 인트라 예측 모드를 수평 모드로 설정하고, 제2 인트라 예측 모드를 DC 모드로 설정할 수 있다. 반대로, 왼쪽 상단 모서리가 수평 모드 예측을 사용하고, 오른쪽 하단 모서리가 DC 모드 예측을 사용하려면, 제1 인트라 예측 모드를 DC 모드로 설정하고, 제2 인트라 예측 모드를 수평 모드로 설정할 수 있다. 제2 인트라 예측 모드가 각도 모드만 사용할 수 있는 것과 같이 인트라 예측 모드 중 특정된 하나가 제한된 경우, 기존의 방법에 따르면, AWP 가중치 행렬이 0인 경우, 제2 인트라 예측 모드가 DC 모드를 사용할 수 없기 때문에 왼쪽 상단 모서리가 DC 모드 예측을 사용하는 것을 구현할 수 없다. 제2 인트라 예측 모드가 DC 모드만 사용할 수 있는 것과 같이 인트라 예측 모드 중 특정된 하나가 제한된 경우, 기존의 방법에 따르면, 상기 AWP 가중치 행렬에서 검은색 부분은 DC 모드 예측에 의해서만 얻는다. 다시 말해, 제2 인트라 예측 모드에 대한 제한은 예측 효과에 대해 명확하게 영향을 미친다.
따라서, 본 출원에 있어서, 일부 경우, 가중치 행렬에 대해 조정을 수행해야 하고, 즉 제1 인트라 예측 모드에 대응되는 가중치 행렬과 제2 인트라 예측 모드에 대응되는 가중치 행렬에 대해 스왑을 수행해야 한다.
방식 1에 있어서, 하나의 가중치 행렬 스왑 플래그를 증가하고, 이 플래그는 두개의 예측 블록의 가중치 행렬을 스왑할지 여부를 지시한다.
방식 2에 있어서, 가중치 행렬에 따라 두개의 예측 블록의 가중치를 스왑할지 여부를 결정한다.
구체적으로, 제1 인트라 예측 모드가 선택 가능한 인트라 예측 모드에 대해 한정하지 않는 경우, 제1 인트라 예측 모드가 선택 가능한 인트라 예측 모드가 비교적 많고, 예측 능력이 강하며, 제2 인트라 예측 모드는 선택 가능한 인트라 예측 모드에 대해 제한하였기 때문에, 사용 가능한 선택이 적고, 예측 능력이 약하며, 가중치 행렬에 따라 자동으로 가중치를 할당할 수 있다. 할당 결과에 따르면 최종 예측 블록에서는, 제1 인트라 예측 모드의 영향을 받는 포인트가 비교적 많고, 제2 인트라 예측 모드의 영향을 받는 포인트가 비교적 적다.
방식 3에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드 중 적어도 하나의 모드 번호에 따라 두개의 예측 블록의 가중치를 스왑할지 여부를 결정한다.
인접한 각도 예측 모드에서 사용되는 예측 각도는 논리적으로 일정한 차이가 있기 때문에, 보간 필터링 영향 및 블록 크기, 특히 비교적 작은 블록에서, 인접한 각도 예측 모드에 의해 만들어진 예측 블록 차이는 특별히 크지 않다. 따라서, 두개의 예측 블록의 가중치를 스왑할지 여부에 대한 논리는 인트라 예측 모드의 모드 번호에 설정되고, 예를 들어 특정된 인트라 예측 모드(제1 인트라 예측 모드 또는 제2 인트라 예측 모드)가 짝수 번호의 각도 예측 모드를 사용하여 두개의 예측 블록의 가중치를 스왑하지 않음을 표시하고, 상기 인트라 예측 모드는 홀수 번호의 각도 예측 모드를 사용하여 두개의 예측 블록의 가중치를 스왑함을 표시한다.
다른 하나의 실시예에 있어서, 제2 인트라 예측 모드에 대해 하나 또는 복수 개의 비각도 모드만을 사용할 수 있는 경우, 여기서 제2 인트라 예측 모드가 DC 모드만을 사용할 수 있는 것을 예로 들면, 제1 인트라 예측 모드의 모드 번호의 패리티를 사용하여 두개의 예측 블록의 가중치를 스왑하는지 여부를 판단할 수 있다. 제1 인트라 예측 모드의 모드 번호가 짝수이면, 두개의 예측 블록의 가중치는 스왑하지 않고, 그렇지 않을 경우(제1 인트라 예측 모드의 모드 번호는 홀수임) 두개의 예측 블록의 가중치를 스왑한다.
선택적으로, 본 출원에 있어서, 인코더는 현재 블록이 사용 가능한 가중치 행렬 도출 모드 개수를 줄이는 것을 통해 가중치 행렬 도출 모드를 코딩하는 오버헤드를 저하시킬 수 있다. 예를 들어, AVS3에 있어서, 56가지 가중치 행렬 도출 모드를 사용하면, 하나의 가중치 행렬 도출 모드를 코딩하기 위해 최대로 6개의 비트가 필요하고, 32가지 가중치 행렬 도출 모드만을 사용하면, 하나의 가중치 행렬 도출 모드를 코딩하기 위해 최대로 5개의 비트가 필요하다. 더 나아가, 인코더는 또한 현재 블록이 사용 가능한 가중치 행렬 도출 모드의 개수에 대해 추가로 압축 및 제한(더 적은 플래그로 어떠한 가중치 행렬을 선택할지를 식별하거나 가중치 행렬 도출 모드를 식별)할 수 있고, 예를 들어 16가지 가중치 행렬 도출 모드만을 사용하면, 최종적으로 4개의 비트만을 사용하여 코딩을 수행하는 것을 구현함으로써, 추가로 오버헤드를 줄임으로써, 더 나은 성능을 달성할 수 있다. 설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더는 가중치 행렬 도출 모드의 개수에 대해 제한을 수행하는 경우, 전부 예측 블록의 가중치 행렬 도출 모드의 개수에 대해 직접 제한 처리를 실행할 수 있을 뿐만 아니라, 또한 현재 블록의 크기 파라미터를 참조하여, 상이한 크기의 현재 블록에 대해 상이한 제한 방식을 사용할 수 있다.
예시적으로, 본 출원에 있어서, 64×64 또는 32×32 크기와 같은 크기 파라미터가 비교적 큰 예측 블록의 경우, 인코더는 전부 가중치 행렬 도출 모드를 사용하여 현재 블록의 가중치 행렬 도출 모드를 결정할 수 있고, 8x8 크기와 같은 예측 블록 크기 파라미터가 비교적 작은 예측 블록의 경우, 인코더는 일부 가중치 행렬 도출 모드를 사용하여 현재 블록의 가중치 행렬 도출 모드를 결정할 수 있으며, 즉 현재 블록이 사용 가능한 가중치 행렬 도출 모드의 개수에 대해 제한할 수 있으며, 이는 크기 파라미터가 비교적 작은 예측 블록의 경우, 미세한 각도의 차이가 미치는 영향은 명확하지 않기 때문이다.
이해할 수 있는 것은, 본 출원에 있어서, 먼저 제1 크기 임계값 같은 하나의 크기 임계값을 설정할 수 있고, 현재 블록의 크기 파라미터가 제1 크기 임계값보다 작으면, 미세한 각도의 차이는 비교적 큰 영향을 미치지 않는 것으로 간주할 수 있으며, 따라서 현재 블록이 선택할 수 있는 가중치 행렬 도출 모드의 개수를 제한할 수 있다. 구체적으로, 현재 블록의 가중치 행렬 도출 모드의 인덱스 번호에 대해 제한하는 것을 통해, 가중치 행렬 도출 모드의 개수에 대한 제한을 구현할 수 있다.
예시적으로, 본 출원에 있어서, 현재 블록의 크기 파라미터가 제1 크기 임계값보다 작으면, 인코더는 제1 모드 인덱스 범위에 따라 가중치 행렬 도출 모드를 결정할 수 있고; 여기서, 제1 모드 인덱스 범위는 가중치 행렬 도출 모드의 인덱스 번호에 대해 제한하기 위한 것이다. 구체적으로, 제1 모드 인덱스 범위는 제1 하한 임계값 및 제1 상한 임계값을 포함할 수 있고, 인코더는 가중치 행렬 도출 모드의 인덱스 번호를 각각 제1 하한 임계값 및 제1 상한 임계값과 비교할 수 있고, 가중치 행렬 도출 모드의 인덱스 번호가 제1 하한 임계값보다 작으면, 가중치 행렬 도출 모드의 인덱스 번호를 제1 하한 임계값으로 설정할 수 있고; 가중치 행렬 도출 모드의 인덱스 번호가 제1 상한 임계값보다 크면, 가중치 행렬 도출 모드의 인덱스 번호를 제1 상한 임계값으로 설정할 수 있다.
다시 말해, 본 출원에서, 제1 모드 인덱스 범위를 통해 현재 블록의 가중치 행렬 도출 모드의 인덱스 번호를 제한할 수 있음으로써, 가중치 행렬 도출 모드 개수에 대한 제한을 완료한다.
예를 들어, AVS3에 있어서, 제1 모드 인덱스 범위는 0 내지 32일 수 있고, 즉 제1 모드 인덱스 범위를 통해 가중치 행렬 도출 모드의 인덱스 번호를 0 내지 32 내에 제한할 수 있고, 따라서 현재 블록은 이전 33가지 가중치 행렬 도출 모드를 사용하는 것을 통해 현재 블록의 가중치 행렬 도출 모드를 결정할 수 있다.
예 1에 있어서,
AWP가 사용 가능한 가중치 행렬은 번호 0 내지 55에 대응되는 가중치 행렬을 포함하고, 구체적으로 도 2에 도시된 바와 같다. 본 출원에서, SAWP에서 32가지 가중치 행렬만을 사용하고, 즉 SAWP가 사용 가능한 가중치 행렬은 AWP의 가중치 행렬의 0 내지 7, 16 내지 23, 32 내지 39, 48 내지 55개의 가중치 행렬(도 2에서 대응되는 번호에 대응되는 가중치 행렬)에 대응된다. 즉 SAWP의 가중치 행렬 0 내지 7은 AWP의 가중치 행렬 0 내지 7에 대응되고, SAWP의 가중치 행렬 8 내지 15는 AWP의 가중치 행렬 16 내지 23에 대응되고, SAWP의 가중치 행렬 16 내지 23은 AWP의 가중치 행렬 32 내지 39에 대응되며, SAWP의 가중치 행렬 24 내지 31은 AWP의 가중치 행렬 48 내지 55에 대응되며, 이 32가지 가중치 행렬이 동일한 확률이라고 가정하면, 5개 비트의 플래그 sawp_idx가 필요하다.
하나의 구체적인 실시예에 있어서, sawp_idx의 값과 이진 심볼 열의 관계는 표 4에 표시된 바와 같다.
sawp_idx의 값 이진 심볼 열
0 0 0 0 0 0
1 1 0 0 0 0
2 0 1 0 0 0
3 1 1 0 0 0
4 0 0 1 0 0
28 0 0 1 1 1
29 1 0 1 1 1
30 0 1 1 1 1
31 1 1 1 1 1
binIdx 0 1 2 3 4
예 2에 있어서, 본 예에서, SAWP에서 24가지 가중치 행렬만을 사용하고, SAWP가 사용 가능한 가중치 행렬은 도 2에 도시된 AWP의 가중치 행렬의 8 내지 15, 24 내지 31, 40 내지 47의 가중치 행렬에 대응된다. 즉 SAWP의 가중치 행렬 0 내지 7은 AWP의 가중치 행렬 8 내지 15에 대응되고, SAWP의 가중치 행렬 8 내지 15는 AWP의 가중치 행렬 24 내지 31에 대응되며, SAWP의 가중치 행렬 16 내지 23은 AWP의 가중치 행렬 40 내지 47에 대응되고, 4 내지 5개 비트의 플래그 sawp_idx가 필요하다.sawp_idx의 값과 이진 심볼 열의 관계는 표 5에 표시된 바와 같다.
sawp_idx의 값 이진 심볼 열
0 1 0 0 0 0
1 1 0 0 0 1
2 1 0 0 1 0
3 1 0 0 1 1
4 1 0 1 0 0
5 1 0 1 0 1
6 1 0 1 1 0
7 1 0 1 1 1
8 0 0 0 0 -
9 0 0 0 1 -
10 0 0 1 0 -
11 0 0 1 1 -
12 0 1 0 0 -
13 0 1 0 1 -
14 0 1 1 0 -
15 0 1 1 1 -
16 1 1 0 0 0
17 1 1 0 0 1
18 1 1 0 1 0
19 1 1 0 1 1
20 1 1 1 0 0
21 1 1 1 0 1
22 1 1 1 1 0
23 1 1 1 1 1
binIdx 0 1 2 3 4
더 나아가, 상기 SAWP의 24가지 가중치 행렬에서의 10번 및 14번은, 각각 AWP의 56가지 가중치 행렬에서의 26 및 30번에 대응되고, 이는 이진 트리에에서BT를 수평 및 수직으로 구획하는 방식과 유사하므로, 실제로 선택될 확률이 비교적 낮고, 비교적 긴 이진 심볼 열을 가중치 행렬에 할당할 수 있고, 비교적 짧은 이진 심볼 열을 선택될 확률이 비교적 높은 가중치 행렬에 할당할 수 있다. 하나의 예에 있어서, 표 6에 표시된 바와 같이, SAWP의 24가지 모드에서의 2 및 10번의 이진 심볼 열을 스왑하고, 6 및 14번의 이진 심볼 열을 스왑한다.
sawp_idx의 값 이진 심볼 열
0 1 0 0 0 0
1 1 0 0 0 1
2 0 0 1 0 -
3 1 0 0 1 1
4 1 0 1 0 0
5 1 0 1 0 1
6 0 1 1 0 -
7 1 0 1 1 1
8 0 0 0 0 -
9 0 0 0 1 -
10 1 0 0 1 0
11 0 0 1 1 -
12 0 1 0 0 -
13 0 1 0 1 -
14 1 0 1 1 0
15 0 1 1 1 -
16 1 1 0 0 0
17 1 1 0 0 1
18 1 1 0 1 0
19 1 1 0 1 1
20 1 1 1 0 0
21 1 1 1 0 1
22 1 1 1 1 0
23 1 1 1 1 1
binIdx 0 1 2 3 4
단계 103에 있어서, 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 가중치 행렬에 기반하여, 현재 블록의 예측값을 결정한다.본 출원의 실시예에 있어서, 인코더는 가중치 행렬 도출 모드에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하고, 동시에 가중치 행렬 도출 모드에 따라 현재 블록의 가중치 행렬을 결정한 이후, 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 가중치 행렬에 기반하여, 추가로 현재 블록의 예측값을 결정할 수 있다.이해할 수 있는 것은, 본 출원의 실시예에 있어서, 인코더는 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 가중치 행렬에 기반하여, 현재 블록의 예측값을 결정하는 경우, 먼저 제1 인트라 예측 모드에 따라 현재 블록의 제1 예측값을 결정할 수 있고; 동시에 제2 인트라 예측 모드에 따라 현재 블록의 제2 예측값을 결정할 수 있으며; 다음 가중치 행렬을 이용하여 제1 예측값 및 제2 예측값에 대해 가중 평균 계산을 수행하여, 최종적으로 현재 블록의 예측값을 획득할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 현재 블록의 예측값을 결정한 이후, 또한 현재 블록의 실제값 및 예측값에 대해 차이값 연산을 수행하여, 실제값과 예측값 간의 차이값 결과를 획득할 수 있음으로써, 현재 블록의 예측 차이값 즉 잔차를 결정할 수 있다.
다시 말해, 본 출원에서, 인코더는 현재 블록의 실제값과 인트라 예측값 간의 차이값를 계산할 수 있음으로써, 잔차를 획득하고, 상기 잔차는 변환, 양자화, 엔트로피 코딩을 통해 코드 스트림에 기입되며, 디코딩측에 전송된다.
본 출원의 실시예에 있어서, 추가로, 인트라 예측 모드 파라미터가 현재 블록이 SAWP 모드를 사용하여 현재 블록의 인트라 예측값을 결정하도록 지시하면, 인코더가 코딩 처리를 수행하는 방법은 또한 아래와 같은 단계를 포함할 수 있다.
단계 401에 있어서, 모드 리스트에 따라 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정한다.
본 출원의 실시예에 있어서, 인코더는 현재 블록의 인트라 예측 모드 파라미터를 결정한 이후, 인트라 예측 모드 파라미터가 현재 블록이 SAWP 모드를 사용하여 현재 블록의 인트라 예측값을 결정하도록 지시하면, 인코더는 추가로 현재 블록에 의해 사용되는 모드 리스트(MPM 리스트)를 결정할 수 있다. 다음 모드 리스트에 따라 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정할 수 있다.
설명해야 할 것은, 본 출원에 있어서, 모드 리스트는 현재 블록에 의해 사용되는 인트라 예측 모드를 결정하기 위한 것이다. 구체적으로, 인코더는 사용될 확률이 비교적 큰 복수 개의 인트라 예측 모드를 이용하여 모드 리스트를 구축할 수 있음으로써, 모드 리스트에 기반하여 현재 블록의 두개의 인트라 예측 모드를 결정할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 인코더는 모드 리스트를 결정하는 경우, 인접한 블록의 예측 모드를 사용하여 MPM을 구축하는 것과 같은 일반적인 방식을 사용하여 가장 가능성이 높은 모드 리스트(MPM)를 구성할 수 있고, 본 출원에서 제안한 인트라 예측 방법과 관련된 모드 리스트의 구축 방법, 즉 현재 블록의 가중치 행렬 도출 모드를 이용하여 모드 리스트를 구축하는 방법을 사용할 수도 있다.
다시 말해, 본 출원에서, 모드 리스트의 구축 방법은 상기 실시예에서의 단계 102에서 제안한 모드 리스트 구축 방법을 사용할 수 있고, 다른 MPM 구축 방법을 사용할 수도 있으며, 본 발명은 이에 대해 구체적으로 한정하지 않는다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 현재 블록에 의해 사용되는 모드 리스트를 결정한 이후, 먼저 모드 리스트에 따라 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정할 수 있다.
예시적으로, 본 출원에 있어서, 인코더는 N개의 MPM이 포함된 모드 리스트를 구축하고, N이 2n이면, N개의 비트(mpm_idx)를 사용하여 모드 리스트에서의 어떠한 MPM이 선택되었는지를 표시하고, 즉 제1 초기 모드 및 제2 초기 모드를 결정한 다음, 하나의 비트를 사용하여 오프셋(offset_needed)이 필요한지 여부를 표시한다. 예를 들어, 4개의 MPM이 포힘된 모드 리스트를 구축하려면, 모드 리스트에서 인트라 예측 모드를 선택할 경우, 2개의 비트(mpm_idx)를 사용하여 모드 리스트에서의 어떠한 MPM을 초기 모드로 선택했는지를 표시해야 하고, 표 7에 표시된 mpm_idx의 값과 이진 심볼 열의 대응 관계는 예측 모드의 결정에 사용될 수 있다.
mpm_idx 이진 심볼 열
0 00
1 01
2 10
3 11
단계 402에 있어서, 오프셋 모드 파라미터를 결정하고, 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하는 경우, 현재 블록의 오프셋 파라미터를 결정한다.본 출원의 실시예에 있어서, 인코더는 또한 오프셋 모드 파라미터를 결정할 수 있고, 여기서, 오프셋 모드 파라미터는 오프셋을 수행해야 하는지 여부를 결정하기 위한 것이다. 구체적으로, 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하는 경우, 인코더는 추가로 현재 블록의 오프셋 파라미터를 결정할 수 있다.설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더는 하나의 비트를 사용하여 오프셋(offset_needed)이 필요한지 여부를 표시할 수 있고, 다시 말해, 인코더는 오프셋 모드 파라미터에 대해 설정하는 것을 통해, 추가로 현재 블록의 예측 모드(제1 초기 모드 또는 제2 초기 모드)가 오프셋이 필요한지 여부를 결정할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하면, 인코더는 추가로 현재 블록의 오프셋 파라미터를 결정할 수 있다. 여기서, 오프셋 파라미터는 오프셋 방식 및 오프셋량을 포함할 수 있고, 즉 오프셋 파라미터의 결정을 통해, 인코더는 현재 블록의 제1 초기 모드 또는 제2 초기 모드 중 어느 것에 대해 오프셋 처리를 수행할지를 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더는 코딩 비트를 사용하여 오프셋 파라미터에서의 오프셋 방식 및 오프셋량에 대해 지시할 수 있다. 예를 들어, 인코더는 하나의 비트(sign)를 사용하여 오프셋 방식이 “+”인지 “-”인지를 표시할 수 있고; 또한 일부 비트(offset)를 사용하여 오프셋량을 표시할 수 있다.
선택적으로, 본 출원에 있어서, 인코더는 오프셋 방식 및 오프셋량을 미리 설정할 수 있고, 예를 들어, 인코더는 1, 2 또는 4와 같은 특정된 량만 디폴트로 오프셋할 수 있다.
단계 403에 있어서, 제1 초기 모드 및 오프셋 파라미터에 따라, 현재 블록의 제1 인트라 예측 모드를 결정하고; 제2 초기 모드 및 오프셋 파라미터에 따라, 현재 블록의 제2 인트라 예측 모드를 결정한다.
본 출원의 실시예에 있어서, 인코더는 현재 블록의 오프셋 파라미터를 결정한 이후, 제1 초기 모드 및 오프셋 파라미터에 따라, 현재 블록의 제1 인트라 예측 모드를 결정할 수 있고; 동시에 제2 초기 모드 및 오프셋 파라미터에 따라, 현재 블록의 제2 인트라 예측 모드를 결정할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 모드 리스트 및 오프셋 파라미터에 따라, 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 오프셋 방식 및 오프셋량에 따라 제1 초기 모드에 대해 오프셋 처리를 수행할 수 있음으로써, 제1 인트라 예측 모드를 결정하고; 동시에 오프셋 방식 및 오프셋량에 따라 제2 초기 모드에 대해 오프셋 처리를 수행할 수 있음으로써, 제2 인트라 예측 모드를 결정한다.
다시 말해, 본 출원의 실시예에 있어서, 인코더는 먼저 복수 개의 비트를 사용하여 모드 리스트에서의 어떠한 예측 모드를 사용하는지를 결정할 수 있고, 즉 모드 리스트에서 초기 모드를 결정한 다음, 오프셋 파라미터에 따라 초기 모드에 대해 오프셋 처리를 수행하여, 최종적으로 현재 블록에 의해 사용되는 인트라 예측 모드를 결정할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 인코더는 제1 초기 모드 및 제2 초기 모드에 대해 동일한 오프셋 파라미터를 사용할 수 있고, 즉 제1 초기 모드 및 제2 초기 모드를 기반으로, 동일한 오프셋 방식 및 오프셋량에 따라 오프셋 처리를 수행할 수 있다. 상응하게, 인코더는 제1 초기 모드 및 제2 초기 모드에 대해 상이한 오프셋 파라미터를 사용할 수도 있으며, 제1 초기 모드를 기반으로 하나의 오프셋 방식을 사용하여 오프셋 처리를 수행하고, 동시에 제2 초기 모드를 기반으로 다른 하나의 오프셋 방식을 사용하여 오프셋 처리를 수행하며, 여기서, 여기서 두가지 오프셋 방식에 대응되는 오프셋 방식 및 오프셋량는 완전히 동일하지 않을 수 있다.
다시 말해, 본 출원에서, 제1 초기 모드에서의 오프셋 처리에 대응되는 오프셋 방식 및 오프셋량은 제2 초기 모드에서의 오프셋 처리에 대응되는 오프셋 방식 및 오프셋량은 동일하거나 상이할 수 있다.
선택적으로, 본 출원에 있어서, 제1 초기 모드에 대응되는 오프셋 모드 파라미터 및 제2 초기 모드에 대응되는 오프셋 모드 파라미터는 상이할 수도 있고, 즉 인코더는 제1 초기 모드 및 제2 초기 모드에 대해 각각 오프셋 모드 파라미터를 설정하는 것을 통해, 제1 초기 모드 및 제2 초기 모드에 대해 모두 오프셋 처리를 수행하거나, 제1 초기 모드 및 제2 초기 모드에 대해 모두 오프셋 처리를 수행하지 않거나, 제1 초기 모드에 대해 오프셋 처리를 수행하고, 동시에 제2 초기 모드에 대해 오프셋 처리를 수행하지 않거나, 제1 초기 모드에 대해 오프셋 처리를 수행하지 않고, 동시에 제2 초기 모드에 대해 오프셋 처리를 수행하는 것과 같은 여러가지 상이한 처리 방식을 구현한다.
더 나아가, 본 출원의 실시예에 있어서, 오프셋 모드 파라미터가 오프셋 처리를 수행하지 않는 것을 지시하면, 인코더는 직접 모드 리스트에 따라 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정할 수 있고, 즉 인코더는 직접 복수 개의 비트를 사용하여 모드 리스트에서의 어떠한 예측 모드를 사용하는지를 결정할 수 있다.
단계 404에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 현재 블록의 예측값을 결정한다.
본 출원의 실시예에 있어서, 인코더는 모드 리스트 및 오프셋 파라미터에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정한 이후, 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 추가로 현재 블록의 예측값을 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더는 현재 블록의 예측값을 결정하는 경우, 먼저 제1 인트라 예측 모드에 따라 현재 블록의 제1 예측값을 결정할 수 있고; 동시에 제2 인트라 예측 모드에 따라 현재 블록의 제2 예측값을 결정할 수 있으며; 다음 현재 블록의 가중치 행렬을 이용하여 제1 예측값 및 제2 예측값에 대해 가중 평균 계산을 수행하여, 최종적으로 현재 블록의 예측값을 획득할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 현재 블록의 예측값을 결정한 이후, 또한 현재 블록의 실제값 및 예측값에 대해 차이값 연산을 수행하여, 실제값과 예측값 간의 차이값 결과를 획득할 수 있음으로써, 현재 블록의 예측 차이값 즉 잔차를 결정할 수 있다.
다시 말해, 본 출원에서, 인코더는 현재 블록의 실제값과 인트라 예측값 간의 차이값를 계산할 수 있음으로써, 잔차를 획득하고, 상기 잔차는 변환, 양자화, 엔트로피 코딩을 통해 코드 스트림에 기입되며, 디코딩측에 전송된다.
본 출원의 실시예에 있어서, 추가로, 상기 단계 401 내지 단계 404에 도시된 인트라 예측 방법을 통해, 인코더는 먼저 모드 리스트에서 하나의 예측 모드를 선택한 다음, 상기 예측 모드의 기초에서 오프셋이 필요한지 여부를 결정하고, 오프셋이 필요하면, 추가로 오프셋 방식 및 오프셋량을 결정하고, 여기서, 오프셋량은 오프셋의 모드 인덱스 번호로 이해할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 모드 리스트에 대해 오프셋 처리를 수행한 이후 현재 블록의 예측 모드를 결정하는 방법은, 본 출원의 실시예의 SAWP 모드에 적용될 수 있을 뿐만 아니라, 다른 인트라 예측 모드에 적용될 수도 있으며, 또한 임의의 인터 예측 모드에 적용될 수 있고, 이에 대해 본 발명은 구체적으로 한정하지 않는다. 동시에, 또한 1개의 비트(offset_needed)를 사용하여 오프셋이 필요한지 여부를 표시할 수 있고, 예를 들어, 오프셋 모드 파라미터(offset_needed)의 값을 0으로 설정하는 것은, 오프셋 처리를 수행하지 않는 것으로 간주할 수 있고; 오프셋 모드 파라미터(offset_needed)의 값을 1로 설정하는 것은, 오프셋 처리를 수행하는 것으로 간주할 수 있다.
예시적으로, 본 출원에 있어서, 4개의 MPM을 구축하도록 규정하면, 2개의 비트를 사용하여 어떠한 예측 모드를 선택할지를 결정할 수 있고, 1개의 비트를 사용하여 오프셋 처리를 수행하는지 여부를 결정한다. 선택된 인트라 예측 모드가 MPM 중의 하나이면, 어떠한 MPM인지를 표시하기 위해 2개의 비트(mpm_idx)가 필요되고, 오프셋이 필요하지 않는 것을 표시하기 위해 1개의 비트(offset_needed)가 필요되며, 총 3개 비트기 필요된다.
더 나아가, 본 출원의 실시예에 있어서, 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하면, 추가로 오프셋 파라미터를 결정할 수 있고, 여기서, 오프셋 파라미터는 하나의 비트(sign)의 오프셋 방식을 포함할 수 있고, 또한 일부 비트(offset)의 오프셋량을 포함할 수 있다.
다시 말해, 본 출원에서, 오프셋이 필요하면, 하나의 비트(sign)로 오프셋 방식이 “+”인지 “-”인지를 표시할 수 있다. 더 나아가, 오프셋량을 설정하는 방법은 1, 2 또는 4와 같은 특정된 량만 디폴트로 오프셋하는 것일 수 있고, 또는, 일부 오버헤드를 사용하는 것을 통해 오프셋량을 표시할 수도 있다. 예를 들어, 선택 가능한 오프셋량이 2 및 4와 두가지가 존재하면, 하나의 비트를 사용하여 오프셋량이 2인지 4인지를 표시할 수 있다. 선택 가능한 오프셋량이 여러가지가 존재하면, 일부 비트(offset)를 통해 표시할 수 있으며, 표 8에 표시된 offset의 값과 이진 심볼 열의 대응 관계는 오프셋량의 결정에 사용될 수 있다.
offset 이진 심볼 열
1 0
2 10
4 110
8 1110
상기 실시예에 기반하여, 본 출원의 다른 일 실시예는 인트라 예측 방법을 제안하고, 인코더에 적용되며, 도 17은 인트라 예측 방법의 구현 흐름 예시도 2이고, 도 17에 도시된 바와 같이, 인코더가 인트라 예측을 수행하는 방법은 아래와 같은 단계를 포함할 수 있다.단계 501에 있어서, 현재 블록이 SAWP 모드를 사용하여 현재 블록의 인트라 예측값을 결정하는 경우, 현재 블록의 모드 리스트를 결정한다.본 출원의 실시예에 있어서, 인코더는 현재 블록이 SAWP 모드를 사용하여 현재 블록의 인트라 예측값을 결정하는 것을 결정한 이후, 먼저 현재 블록의 모드 리스트를 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, SAWP 모드는 인트라 예측 방법으로서, 구체적으로, SAWP 모드는 현재 블록에 대해 두개의 상이한 인트라 예측 모드를 결정한 다음, 각각 이 두개의 상이한 인트라 예측 모드에 따라 두개의 예측 블록을 결정하고, 다음 가중치 행렬을 결정할 수 있으며, 두개의 예측 블록은 가중치 행렬에 따라 조합되어, 최종적으로 새로운 예측 블록을 얻을 수 있고, 즉 현재 블록의 예측 블록을 획득할 수 있다.
선택적으로, 본 출원에 있어서, 디코더는 먼저 현재 블록의 크기 파라미터를 결정한 다음; 크기 파라미터에 따라 현재 블록이 SAWP 모드를 사용하는지 여부를 결정할 수 있다. 구체적으로, 너비가 제1 임계값보다 크고 높이가 제2 임계값보다 크면, 현재 블록이 SAWP 모드를 사용한다고 결정하고; 또는, 너비가 제3 임계값보다 작고 높이가 제4 임계값보다 크면, 현재 블록이 SAWP 모드를 사용한다고 결정한다.
선택적으로, 본 출원에 있어서, 디코더는 먼저 현재 블록의 픽셀 파라미터를 결정한 다음, 픽셀 파라미터 및 제5 임계값에 따라 현재 블록이 SAWP 모드를 사용하는지 여부를 판단할 수 있다.
선택적으로, 본 출원에 있어서, 디코더는 먼저 현재 블록의 인트라 예측 모드 파라미터를 결정한 다음; 인트라 예측 모드 파라미터에 따라 현재 블록이 SAWP 모드를 사용하는지 여부를 결정할 수 있다.
설명해야 할 것은, 본 출원에 있어서, 가중치 행렬 도출 모드는 현재 블록에 의해 사용되는 가중치 행렬을 결정하기 위한 것이다. 구체적으로, 가중치 행렬 도출 모드는 가중치 행렬을 도출하는 모드이다. 주어진 길이 및 너비의 예측 블록의 경우, 각 가중치 행렬 도출 모드는 하나의 가중치 행렬을 도출할 수 있고; 동일한 크기의 예측 블록의 경우, 상이한 가중치 행렬 도출 모드에 의해 도출되는 가중치 행렬은 상이하다.
예시적으로, 본 출원에 있어서, AVS3의 AWP에는 56가지 가중치 행렬 도출 모드가 존재하고, VVC의 GPM에는 64가지 가중치 행렬 도출 모드가 존재한다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 경우, 먼저 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 결정한 다음, 인접한 블록에 대응되는 인트라 예측 모드를 첨가될 모드로 결정할 수 있고; 첨가될 모드가 기설정된 첨가 조건을 만족하는 것을 결정한 이후, 인코더는 첨가될 모드를 모드 리스트에 첨가할 수 있고, 즉 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 모드 리스트에 첨가할 수 있으며; 다음, 이때 모드 리스트가 기설정된 리스트 길이를 만족하지 않으면, 인코더는 계속하여 현재 블록의 가중치 행렬 도출 모드를 결정하고, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 결정한 다음, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 첨가될 모드로 결정할 수 있으며; 첨가될 모드가 기설정된 첨가 조건을 만족하는 것이 결정되면, 상기 첨가될 모드를 모드 리스트에 첨가하고, 즉 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더는 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 모드 리스트에 첨가한 이후, 또는, 인코더는 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가한 이후, 모드 리스트가 기설정된 리스트 길이를 만족하지 않으면, 즉 모드 리스트가 충만되지 않으면, 인코더는 계속하여 기설정된 예측 모드를 첨가될 모드로 결정할 수 있고; 다음 첨가될 모드가 기설정된 첨가 조건을 만족하는 것을 결정한 이후, 첨가될 모드를 모드 리스트에 첨가하고, 기설정된 예측 모드를 모드 리스트에 첨가한다.
이해할 수 있는 것은, 본 출원에 있어서, 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 등 여러가지 상이한 모드에서의 하나 또는 여러가지를 포함할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드, 기설정된 예측 모드를 각각 모드 리스트에 첨가한 이후, 모드 리스트가 여전히 기설정된 리스트 길이를 만족하지 않으면, 즉 모드 리스트가 여전히 충만되지 않으면, 인코더는 모드 리스트에서의 예측 모드를 사용하여 관련 인트라 예측 모드를 결정한 다음, 관련 인트라 예측 모드를 첨가될 모드로 결정하고, 첨가될 모드가 기설정된 첨가 조건을 만족하는 것을 결정한 이후, 첨가될 모드를 모드 리스트에 첨가할 수 있으며, 즉 모드 리스트에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가할 수 있다.
다시 말해, 본 출원에서, 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드 및 기설정된 예측 모드를 모드 리스트에 순차적으로 첨가한 이후, 모드 리스트가 여전히 충만되지 않으면, 인코더는 모드 리스트에 기반한 기존의 예측 모드를 선택하여, 대응되는 관련 인트라 예측 모드를 결정한 다음, 이러한 관련 인트라 예측 모드를 모드 리스트에 첨가할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 첨가될 모드로 사용하든, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 첨가될 모드로 사용하든, 또는 기설정된 예측 모드를 첨가될 모드로 사용하든, 또는 관련 인트라 예측 모드를 첨가될 모드로 사용하든, 인코더는 모두 첨가될 모드가 기설정된 첨가 조건을 만족하는지 여부를 판정해야 하고, 구체적으로, 첨가될 모드가 존재하고, 첨가될 모드와 모드 리스트에서의 예측 모드가 모두 상이하면, 첨가될 모드가 기설정된 첨가 조건을 만족한다고 결정할 수 있음으로써, 상기 첨가될 모드를 모드 리스트에 첨가할 수 있다.
상응하게, 첨가될 모드가 존재하지 않거나, 첨가될 모드와 모드 리스트에서의 하나의 예측 모드가 동일하면(중첩), 첨가될 모드가 기설정된 첨가 조건을 만족하지 않는 것을 결정할 수 있고, 따라서 상기 첨가될 모드를 모드 리스트에 첨가할 수 없고, 상기 첨가될 모드를 버린다.
이해할 수 있는 것은, 본 출원에 있어서, 현재 블록은 두개의 인트라 예측 모드를 사용하여 인트라 예측 처리를 수행해야 하기 때문에, MPM을 구축할 경우 더욱 많은 위치의 인트라 예측 모드를 참조하거나, 더욱 많은 인접한 블록의 인트라 예측 모드를 참조할 수 있다. 상응하게, 본 출원에서, 현재 블록에 의해 사용되는 모드 리스트의 길이는 다른 인트라 예측 모드의 모드 리스트 길이와 상이할 수 있고, 이는 MPM이 이진화 수행 시의 코드 워드가 다른 모드보다 짧기 때문에, 두개의 인트라 예측 모드가 각각 MPM일 확률을 증가하여, 인코딩 및 디코딩 효율을 향상시키는데 유리하다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 경우, 먼저 가중치 행렬 도출 모드에 대응되는 리스트 구축 정책을 결정할 수 있고; 다음 리스트 구축 정책에 따라, 추가로 모드 리스트를 결정할 수 있다.
다시 말해, 본 출원에서, 상이한 가중치 행렬의 경우, 즉 상이한 가중치 행렬 도출 모드의 경우, 인코더는 상이한 구축 정책을 사용하여 모드 리스트의 구축을 수행할 수 있다. 예를 들어, 구축 정책에 기반하여, 가중치 행렬의 경계선이 0도 또는 90도이면, 즉 수평 또는 수직이면, 인코더는 모드 리스트를 구축하는 경우 가중치 행렬에 대응되는 인트라 예측 모드를 고려할 수 있고, 다른 경우 가중치 행렬에 대응되는 인트라 예측 모드를 고려하지 않는다.
단계 502에 있어서, 모드 리스트에 따라, 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정한다.
본 출원의 실시예에 있어서, 인코더는 현재 블록의 모드 리스트를 구축한 이후, 모드 리스트에 따라, 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정할 수 있다.
이해할 수 있는 것은, 본 출원에 있어서, 현재 블록이 인트라 예측을 수행하는 경우 사용하는 두개의 인트라 예측 모드가 상이하면, 즉 제1 인트라 예측 모드와 제2 인트라 예측 모드가 상이하면, 제2 인트라 예측 모드가 디코딩을 수행할 경우 제1 인트라 예측 모드의 가능성을 배제할 수 있다. 다시 말해 제2 인트라 예측 모드의 디코딩은 제1 인트라 예측 모드의 정보를 사용할 수 있다.
본 출원의 실시예에 있어서, 추가로, 인코더는 모드 리스트를 구축하는 과정에서, 또한 후보 인트라 예측 모드를 설정할 수 있다. 여기서, 후보 인트라 예측 모드와 모드 리스트에서의 인트라 예측 모드는 모두 상이하다.
구체적으로, 본 출원에서, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 제2 인트라 예측 모드의 결정은 제1 인트라 예측 모드에 의존할 수 있다. 여기서, 인코더는 모드 리스트에 기반하여, 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 모드 리스트에서의 하나의 예측 모드를 제1 인트라 예측 모드로 결정할 수 있고; 다음 제1 인트라 예측 모드 및 모드 리스트에 따라, 제2 인트라 예측 모드를 결정한다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 모드 리스트에서의 하나의 예측 모드를 제1 인트라 예측 모드로 결정한 이후, 모드 리스트에서 하나의 예측 모드를 삭제할 수 있고, 다음 후보 인트라 예측 모드를 모드 리스트에 첨가함으로써, 업데이트된 모드 리스트를 획득할 수 있고; 다음 상기 업데이트된 모드 리스트에서 하나의 예측 모드를 선택하여 상기 제2 인트라 예측 모드로 결정할 수 있으며, 여기서, 선택 방식은 임의일 수 있다.
예시적으로, 본 출원에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 선택 가능한 MPM이 N개라고 가정하면, 모드 리스트를 구축하는 경우, 먼저 N개의 MPM 및 1개의 후보 MPM을 구축할 수 있고, 제1 인트라 예측 모드에 대해, 선택 가능한 MPM은 상기 N개의 MPM이다. 제1 인트라 예측 모드가 그중 하나의 MPM을 선택하면, 제2 인트라 예측 모드에 대해, 첫 번째 인트라 예측 모드에서 선택된 MPM을 제거하고, 후보 MPM이 모드 리스트에 추가됨으로써, 두 번째 인트라 예측 모드는 계속하여 N개의 MPM을 선택할 수 있다.
본 출원의 실시예에 있어서, 추가로, 인코더는 모드 리스트를 구축하는 과정에서, 또한 모드 리스트의 길이 파라미터를 (N+1)로 설정할 수 있고; 여기서, N은 양의 정수이다.
구체적으로, 본 출원에서, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 제2 인트라 예측 모드의 결정은 제1 인트라 예측 모드에 의존할 수 있다. 여기서, 인코더는 모드 리스트에 기반하여, 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 모드 리스트를 사용하여 제1 인트라 예측 모드를 결정하면, 모드 리스트의 상위 N개의 예측 모드에서의 하나의 예측 모드를 제1 인트라 예측 모드로 결정할 수 있고; 다음 제1 인트라 예측 모드 및 모드 리스트에 따라, 제2 인트라 예측 모드를 결정한다.
더 나아가, 본 출원의 실시예에 있어서, 모드 리스트를 사용하여 제1 인트라 예측 모드를 결정하면, 인코더는 모드 리스트의 상위 N개의 예측 모드에서의 하나의 예측 모드를 제1 인트라 예측 모드로 결정한 이후, 모드 리스트의, 제1 인트라 예측 모드 외의 다른 N개의 예측 모드를 이용하여 제2 인트라 예측 모드를 결정한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더는 모드 리스트에 기반하여, 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 모드 리스트를 사용하지 않고 제1 인트라 예측 모드를 결정하면, 인코더는 직접 모드 리스트의 상위 N개의 예측 모드에서의 하나의 예측 모드를 제2 인트라 예측 모드로 결정할 수 있다.
선택적으로, 본 출원의 실시예에 있어서, 다만 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이함만을 보장하고, 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 선택 가능한 MPM의 개수에 대해 제한하지 않으면, 인코더는 인트라 예측 모드를 다시 보충하는 설정을 수행하지 않거나, 모드 리스트 길이를 증가하는 처리를 수행하지 않을 수도 있으며, 이때, 인코더는 제2 인트라 예측 모드의 코딩 방법을 변경해야 한다. 다시 말해, 제1 인트라 예측 모드가 모드 리스트에서의 하나의 MPM을 선택한 이후, 제2 인트라 예측 모드가 선택 가능한 MPM은 하나가 부족하게 되고, 이때 제2 인트라 예측 모드가 선택 가능한 MPM이 줄어들었기 때문에, 제2 인트라 예측 모드의 코딩 방법을 변경해야 한다.
예시적으로, 본 출원에 있어서는, MPM의 개수 N이 4인 것을 예로 들고, 첫 번째 비트는 MPM인지 여부를 표시하고, 예를 들어 “1”은 MPM인 것을 표시하고, “0”은 MPM이 아닌 것을 표시한다. 제1 인트라 예측 모드가 MPM이면, 4개의 MPM이 존재하기 때문에, 2개의 비트로 어떠한 MPM인지를 표시하며, 즉 “00, 01, 10, 11”은 각각 첫 번째 MPM, 두 번째 MPM, 세 번째 MPM, 네 번째 MPM을 표시한다. 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 모두 MPM이면, 제2 인트라 예측 모드가 사용 가능한 MPM은 3개 뿐이며, 1 내지 2개의 비트로 어떠한 MPM인지를 표시하고, 예를 들어 “00, 01, 10”은 각각 나머지 첫 번째 MPM, 두 번째 MPM, 세 번째 MPM을 표시한다. 이로부터 알다시피, 하나의 가능성이 배제되었으므로, 오버헤드를 절약하기 위해 코딩 방법 또는 이진화 방법이 변경될 수 있다.
단계 503에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 현재 블록의 예측값을 결정한다.
본 출원의 실시예에 있어서, 인코더는 모드 리스트에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정한 이후, 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 추가로 현재 블록의 예측값을 결정할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 인코더는 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 현재 블록의 예측값을 결정하는 경우, 먼저 제1 인트라 예측 모드에 따라 현재 블록의 제1 예측값을 결정할 수 있고; 동시에 제2 인트라 예측 모드에 따라 현재 블록의 제2 예측값을 결정할 수 있으며; 다음 제1 예측값 및 제2 예측값에 대해 가중 평균 계산을 수행하여, 최종적으로 현재 블록의 예측값을 획득할 수 있다. 예를 들어, 인코더는 가중치 행렬을 이용하여 제1 예측값 및 제2 예측값에 대해 가중 평균 계산을 수행하여, 현재 블록의 예측값을 획득할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 현재 블록의 예측값을 결정한 이후, 또한 현재 블록의 실제값 및 예측값에 대해 차이값 연산을 수행하여, 실제값과 예측값 간의 차이값 결과를 획득할 수 있음으로써, 현재 블록의 예측 차이값 즉 잔차를 결정할 수 있다.
다시 말해, 본 출원에서, 인코더는 현재 블록의 실제값과 인트라 예측값 간의 차이값를 계산할 수 있음으로써, 잔차를 획득하고, 상기 잔차는 변환, 양자화, 엔트로피 코딩을 통해 코드 스트림에 기입되며, 디코딩측에 전송된다.
본 출원의 실시예는 인트라 예측 방법을 제공하고, 인코더 및 디코더는 두가지 상이한 인트라 예측 모드를 통해 현재 블록의 두개의 상이한 예측 블록을 결정할 수 있고, 다양한 가중치 행렬을 조합하는 것을 통해, 최종적으로 더욱 복잡한 예측 블록을 얻을 수 있음으로써, 예측의 정확성을 향상시키는 동시에, 인코더 및 디코더는 또한 가중치 행렬과 예측 모드 간의 관련성을 통해 MPM 리스트의 구축을 수행할 수 있음으로써, 복잡도를 크게 저하시킬 수 있고, 다시 말해, 본 출원에서 제안한 인트라 예측 방법은, 인트라 예측 품질을 향상시키는 동시에, 복잡도를 저하시킬 수 있음으로써, 압축 성능을 향상시킨다.
본 출원의 실시예에 있어서, 추가로, 인코더는 현재 블록의 모드 리스트를 결정한 이후, 먼저 모드 리스트에 따라 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정하고; 다음 오프셋 모드 파라미터를 결정하고, 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하는 경우, 현재 블록의 오프셋 파라미터를 결정하며; 다음 제1 초기 모드 및 오프셋 파라미터에 따라, 현재 블록의 제1 인트라 예측 모드를 결정할 수 있고; 제2 초기 모드 및 오프셋 파라미터에 따라, 현재 블록의 제2 인트라 예측 모드를 결정하며; 마지막으로 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 현재 블록의 예측값을 결정할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 인코더는 모드 리스트를 결정하는 경우, 인접한 블록의 예측 모드를 사용하여 MPM을 구축하는 것과 같은 일반적인 방식을 사용하여 가장 가능성이 높은 모드 리스트(MPM)를 구성할 수 있고, 본 출원에서 제안한 인트라 예측 방법과 관련된 모드 리스트의 구축 방법, 즉 현재 블록의 가중치 행렬 도출 모드를 이용하여 모드 리스트를 구축하는 방법을 사용할 수도 있다.
다시 말해, 본 출원에서, 모드 리스트의 구축 방법은 상기 실시예에서서 제안한 모드 리스트 구축 방법을 사용할 수 있고, 다른 MPM 구축 방법을 사용할 수도 있으며, 본 발명은 이에 대해 구체적으로 한정하지 않는다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 현재 블록에 의해 사용되는 모드 리스트를 결정한 이후, 먼저 모드 리스트에 따라 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정할 수 있다.
예시적으로, 본 출원에 있어서, 인코더는 N개의 MPM이 포함된 모드 리스트를 구축하고, N이 2n이면, N개의 비트(mpm_idx)를 사용하여 모드 리스트에서의 어떠한 MPM이 선택되었는지를 표시하고, 즉 제1 초기 모드 및 제2 초기 모드를 결정한 다음, 하나의 비트를 사용하여 오프셋(offset_needed)이 필요한지 여부를 표시한다. 예를 들어, 4개의 MPM이 포힘된 모드 리스트를 구축하려면, 모드 리스트에서 인트라 예측 모드를 선택할 경우, 2개의 비트(mpm_idx)를 사용하여 모드 리스트에서의 어떠한 MPM을 초기 모드로 선택했는지를 표시해야 하고, 표 3에 표시된 mpm_idx의 값과 이진 심볼 열의 대응 관계는 예측 모드의 결정에 사용될 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더는 하나의 비트를 사용하여 오프셋(offset_needed)이 필요한지 여부를 표시할 수 있고, 다시 말해, 인코더는 오프셋 모드 파라미터에 대해 설정하는 것을 통해, 추가로 현재 블록의 예측 모드(제1 초기 모드 또는 제2 초기 모드)가 오프셋이 필요한지 여부를 결정할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하면, 인코더는 추가로 현재 블록의 오프셋 파라미터를 결정할 수 있다. 여기서, 오프셋 파라미터는 오프셋 방식 및 오프셋량을 포함할 수 있고, 즉 오프셋 파라미터의 결정을 통해, 인코더는 현재 블록의 제1 초기 모드 또는 제2 초기 모드 중 어느 것에 대해 오프셋 처리를 수행할지를 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더는 코딩 비트를 사용하여 오프셋 파라미터에서의 오프셋 방식 및 오프셋량에 대해 지시할 수 있다. 예를 들어, 인코더는 하나의 비트(sign)를 사용하여 오프셋 방식이 “+”인지 “-”인지를 표시할 수 있고; 또한 일부 비트(offset)를 사용하여 오프셋량을 표시할 수 있다.
선택적으로, 본 출원에 있어서, 인코더는 오프셋 방식 및 오프셋량을 미리 설정할 수 있고, 예를 들어, 인코더는 1, 2 또는 4와 같은 특정된 량만 디폴트로 오프셋할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 인코더는 모드 리스트 및 오프셋 파라미터에 따라, 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 오프셋 방식 및 오프셋량에 따라 제1 초기 모드에 대해 오프셋 처리를 수행할 수 있음으로써, 제1 인트라 예측 모드를 결정하고; 동시에 오프셋 방식 및 오프셋량에 따라 제2 초기 모드에 대해 오프셋 처리를 수행할 수 있음으로써, 제2 인트라 예측 모드를 결정한다.
다시 말해, 본 출원의 실시예에 있어서, 인코더는 먼저 복수 개의 비트를 사용하여 모드 리스트에서의 어떠한 예측 모드를 사용하는지를 결정할 수 있고, 즉 모드 리스트에서 초기 모드를 결정한 다음, 오프셋 파라미터에 따라 초기 모드에 대해 오프셋 처리를 수행하여, 최종적으로 현재 블록에 의해 사용되는 인트라 예측 모드를 결정할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 인코더는 제1 초기 모드 및 제2 초기 모드에 대해 동일한 오프셋 파라미터를 사용할 수 있고, 즉 제1 초기 모드 및 제2 초기 모드를 기반으로, 동일한 오프셋 방식 및 오프셋량에 따라 오프셋 처리를 수행할 수 있다. 상응하게, 인코더는 제1 초기 모드 및 제2 초기 모드에 대해 상이한 오프셋 파라미터를 사용할 수도 있으며, 제1 초기 모드를 기반으로 하나의 오프셋 방식을 사용하여 오프셋 처리를 수행하고, 동시에 제2 초기 모드를 기반으로 다른 하나의 오프셋 방식을 사용하여 오프셋 처리를 수행하며, 여기서, 여기서 두가지 오프셋 방식에 대응되는 오프셋 방식 및 오프셋량는 완전히 동일하지 않을 수 있다.
다시 말해, 본 출원에서, 제1 초기 모드에서의 오프셋 처리에 대응되는 오프셋 방식 및 오프셋량은 제2 초기 모드에서의 오프셋 처리에 대응되는 오프셋 방식 및 오프셋량은 동일하거나 상이할 수 있다.
선택적으로, 본 출원에 있어서, 제1 초기 모드에 대응되는 오프셋 모드 파라미터 및 제2 초기 모드에 대응되는 오프셋 모드 파라미터는 상이할 수도 있고, 즉 인코더는 제1 초기 모드 및 제2 초기 모드에 대해 각각 오프셋 모드 파라미터를 설정하는 것을 통해, 제1 초기 모드 및 제2 초기 모드에 대해 모두 오프셋 처리를 수행하거나, 제1 초기 모드 및 제2 초기 모드에 대해 모두 오프셋 처리를 수행하지 않거나, 제1 초기 모드에 대해 오프셋 처리를 수행하고, 동시에 제2 초기 모드에 대해 오프셋 처리를 수행하지 않거나, 제1 초기 모드에 대해 오프셋 처리를 수행하지 않고, 동시에 제2 초기 모드에 대해 오프셋 처리를 수행하는 것과 같은 여러가지 상이한 처리 방식을 구현한다.
더 나아가, 본 출원의 실시예에 있어서, 오프셋 모드 파라미터가 오프셋 처리를 수행하지 않는 것을 지시하면, 인코더는 직접 모드 리스트에 따라 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정할 수 있고, 즉 인코더는 직접 복수 개의 비트를 사용하여 모드 리스트에서의 어떠한 예측 모드를 사용하는지를 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 인코더는 현재 블록의 예측값을 결정하는 경우, 먼저 제1 인트라 예측 모드에 따라 현재 블록의 제1 예측값을 결정할 수 있고; 동시에 제2 인트라 예측 모드에 따라 현재 블록의 제2 예측값을 결정할 수 있으며; 다음 제1 예측값 및 제2 예측값에 대해 가중 평균 계산을 수행하여, 최종적으로 현재 블록의 예측값을 획득할 수 있다.
상기에서 말한 바와 같이, 본 출원의 실시예에서 제안한 인트라 예측 방법은, 일반적인 기술에서 존재하는 인트라 예측 모드가 간단한 무늬만을 예측할 수 있는 결점에 대해, 두가지 인트라 예측 모드를 통해 2개의 예측 블록을 결정할 수 있고, 다양한 가중치 행렬을 조합하는 것을 통해, 더 복잡한 예측 블록을 얻을 수 있음으로써, 인트라 예측의 품질을 향상시킬 수 있음으로써, 압축 성능을 향상시킬 수 있다. 이로부터 알다시피, 본 출원에서 제안한 인트라 예측 방법은, 인트라 예측 모드 코딩에 대해 개선할 수 있고, 새로운 시나리오에서의 인트라 예측 모드의 확률 특징을 이용하여 인트라 예측 모드의 코딩 방법을 개선하여, 압축 성능을 효과적으로 향상시킬 수 있다.
설명해야 할 것은, 본 출원에 있어서 사용된 인트라 예측 모드의 코딩 방법은 일반적인 기술의 인트라 예측 방법의 인트라 예측 모드의 코딩 방법과 상이하다. 상응하게, 본 출원에서 사용된 MPM 구축 방법은 일반적인 기술의 인트라 예측 방법의 MPM 구축 방법과 상이할 수도 있다.
이해할 수 있는 것은, 본 출원에 있어서, 현재 블록에 의해 선택된 인트라 예측 모드와 가중치 행렬은 일정한 관련성이 존재하고, 이 관련성을 이용하여, 인트라 예측 모드의 코딩은 가중치 행렬의 정보를 이용할 수 있고, 즉 인트라 예측 모드의 코딩은 가중치 행렬 도출 모드의 정보를 이용할 수 있다. 구체적으로, 가중치 행렬 도출 모드를 이용하여 MPM을 구축할 수 있거나, MPM을 구축할 경우 가중치 행렬 도출 모드의 정보를 이용할 수 있다.
선택적으로, 본 출원에 있어서, 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드 또는 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드와 관련된 복수 개의 인트라 예측 모드가 이진화 수행 시 일반 인트라 예측 모드보다 짧은 코드 워드를 부여하도록 설정한다.
설명해야 할 것은, 본 출원에 있어서, 본 출원은 2개의 인트라 예측 모드를 사용해야 하기 때문에, MPM을 구축할 경우 더욱 많은 위치의 인트라 예측 모드를 참조하거나, 더욱 많은 인접한 블록의 인트라 예측 모드를 참조할 수 있다. 본 발명에서 사용되는 모드 리스트(즉 MPM 리스트) 길이는 다른 인트라 예측 모드의 모드 리스트(즉 MPM 리스트) 길이와 상이하다.
본 출원의 실시예는 인트라 예측 방법을 제공하고, 인코더 및 디코더는 두가지 상이한 인트라 예측 모드를 통해 현재 블록의 두개의 상이한 예측 블록을 결정할 수 있고, 다양한 가중치 행렬을 조합하는 것을 통해, 최종적으로 더욱 복잡한 예측 블록을 얻을 수 있음으로써, 예측의 정확성을 향상시키는 동시에, 인코더 및 디코더는 또한 가중치 행렬과 예측 모드 간의 관련성을 통해 MPM 리스트의 구축을 수행할 수 있음으로써, 복잡도를 크게 저하시킬 수 있고, 다시 말해, 본 출원에서 제안한 인트라 예측 방법은, 인트라 예측 품질을 향상시키는 동시에, 복잡도를 저하시킬 수 있음으로써, 압축 성능을 향상시킨다.
본 출원의 일 실시예는 인트라 예측 방법을 제안하고, 디코더에 적용되며, 도 18은 인트라 예측 방법의 구현 흐름 예시도 3이고, 도 18에 도시된 바와 같이, 디코더가 인트라 예측을 수행하는 방법은 아래와 같은 단계를 포함할 수 있다.
단계 601에 있어서, 코드 스트림을 해석하여, 현재 블록의 인트라 예측 모드 파라미터를 결정한다.
본 출원의 실시예에 있어서, 디코더는 코드 스트림을 해석하여, 현재 블록의 인트라 예측 모드 파라미터를 결정한다.
설명해야 할 것은, 본 출원의 실시에서, 인트라 예측 모드 파라미터는 현재 블록이 SAWP 모드를 사용할 수 있는지 여부를 지시할 수 있고, 즉 현재 블록이 두가지 상이한 예측 모드를 사용하여 예측 처리를 수행할 수 있는지 여부를 지시할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 인트라 예측 모드 파라미터는 SAWP 모드가 사용되는지 여부를 나타내는 플래그로 이해될 수 있다. 구체적으로, 디코더는 코드 스트림을 해석하여, 인트라 예측 모드 파라미터로 사용되는 하나의 변수를 결정할 수 있음으로써, 상기 변수의 값을 통해 인트라 예측 모드 파라미터의 결정을 구현할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, SAWP 모드는 인트라 예측 방법으로서, 구체적으로, SAWP 모드는 현재 블록에 대해 두개의 상이한 인트라 예측 모드를 결정한 다음, 각각 이 두개의 상이한 인트라 예측 모드에 따라 두개의 예측 블록을 결정하고, 다음 가중치 행렬을 결정할 수 있으며, 두개의 예측 블록은 가중치 행렬에 따라 조합되어, 최종적으로 새로운 예측 블록을 얻을 수 있고, 즉 현재 블록의 예측 블록을 획득할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, SAWP 모드를 적용하는 경우, 현재 블록의 크기에 대해 제한할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에서 제안한 인트라 예측 방법은 각각 두개의 상이한 인트라 예측 모드를 사용하여 두개의 예측 블록을 생성해야 하고, 다음 가중치 행렬에 따라 가중을 수행하여 새로운 예측 블록을 얻기에, 복잡도를 저하시키기 위해, 동시에 압축 성능 및 복잡도의 균형을 고려해야 하고, 본 출원의 실시예에 있어서, 일부 크기의 예측 블록에 대해 상기 SAWP 모드를 사용하지 않도록 제한할 수 있다. 따라서, 본 출원에 있어서, 디코더는 먼저 현재 블록의 크기 파라미터를 결정한 다음, 크기 파라미터에 따라 현재 블록이 SAWP 모드를 사용하는지 여부를 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 현재 블록의 크기 파라미터는 현재 블록의 높이 및 너비를 포함할 수 있고, 따라서, 디코더는 현재 블록의 높이 및 너비를 이용하여 SAWP 모드의 사용에 대해 제한할 수 있고, 즉 SAWP 모드를 사용할 수 있는 예측 블록의 크기를 제한한다.
예시적으로, 본 출원에 있어서, 너비가 제1 임계값보다 크고 높이가 제2 임계값보다 크면, 현재 블록이 SAWP 모드를 사용하는 것을 결정한다. 이로부터 알다시피, 일 가능한 제한은 다만 예측 블록의 너비가 제1 임계값보다 크고(또는 크거나 같음), 예측 블록의 높이가 제2 임계값보다 큰(또는 크거나 같음) 경우에만 SAWP 모드를 사용하는 것이다. 여기서, 제1 임계값 및 제2 임계값은 8, 16, 32 등일 수 있고, 제1 임계값은 제2 임계값과 동일할 수 있다.
예시적으로, 본 출원에 있어서, 너비가 제3 임계값보다 작고 높이가 제4 임계값보다 크면, 현재 블록이 SAWP 모드를 사용하는 것을 결정한다. 이로부터 알다시피, 일 가능한 제한은 다만 예측 블록의 너비가 제3 임계값보다 작고(또는 작거나 같음), 예측 블록의 높이가 제4 임계값보다 큰(또는 크거나 같음) 경우에만 SAWP 모드를 사용하는 것이다. 여기서, 제3 임계값 및 제4 임계값은 8, 16, 32 등일 수 있고, 제3 임계값은 제4 임계값과 동일할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 또한 픽셀 파라미터에 대한 제한을 통해 SAWP 모드를 사용할 수 있는 예측 블록의 크기를 제한하는 것을 구현한다.
예시적으로, 본 출원에 있어서, 디코더는 먼저 현재 블록의 픽셀 파라미터를 결정한 다음, 픽셀 파라미터 및 제5 임계값에 따라 추가로 현재 블록이 SAWP 모드를 사용하는지 여부를 판단할 수 있다. 이로부터 알다시피, 일 가능한 제한은 다만 예측 블록의 픽셀 개수는 제5 임계값보다 큰(또는 크거나 같음) 경우에만 SAWP 모드를 사용하는 것이다. 여기서, 제5 임계값은 8, 16, 32등일 수 있다.
다시 말해, 본 출원에서, 현재 블록의 크기 파라미터가 크기 요구의 조건을 만족하는 경우에만, 현재 블록은 SAWP 모드를 사용할 수 있다.
예시적으로, 본 출원에 있어서, 하나의 프레임 레벨 플래그로 현재 디코딩될 프레임이 본 발명을 사용하는지 여부를 결정할 수 있다. 인트라 프레임(예를 I 프레임)이 본 발명을 사용하도록 구성할 수 있고, 인터 프레임(예를 B프레임, P 프레임)이 본 발명을 사용하지 않도록 구성할 수 있다. 또는 인트라 프레임이 본 발명을 사용하지 않도록 구성할 수 있고, 인터 프레임이 본 발명을 사용하도록 구성할 수 있다. 또는 일부 인터 프레임이 본 발명을 사용하도록 구성할 수 있고, 일부 인터 프레임이 본 발명을 사용하지 않도록 구성할 수 있다. 인터 프레임은 인트라 예측도 사용할 수 있기 때문에, 인터 프레임은 본 발명을 사용할 수도 있다.
프레임 레벨 이하, CU 레벨 이상(예를 들어 tile, slice, patch, LCU 등)의 플래그로 이 영역이 본 발명을 사용하는지 여부를 결정할 수 있다.
단계 602에 있어서, 인트라 예측 모드 파라미터가 현재 블록이 SAWP 모드를 사용하여 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 현재 블록의 가중치 행렬 도출 모드를 결정한다.
본 출원의 실시예에 있어서, 디코더는 현재 블록의 인트라 예측 모드 파라미터를 결정한 이후, 인트라 예측 모드 파라미터가 현재 블록이 SAWP 모드를 사용하여 현재 블록의 인트라 예측값을 결정하도록 지시하면, 디코더는 추가로 현재 블록의 가중치 행렬 도출 모드를 결정할 수 있다.
설명해야 할 것은, 본 출원에 있어서, 가중치 행렬 도출 모드는 현재 블록에 의해 사용되는 가중치 행렬을 결정하기 위한 것이다. 구체적으로, 가중치 행렬 도출 모드는 가중치 행렬을 도출하는 모드이다. 주어진 길이 및 너비의 예측 블록의 경우, 각 가중치 행렬 도출 모드는 하나의 가중치 행렬을 도출할 수 있고; 동일한 크기의 예측 블록의 경우, 상이한 가중치 행렬 도출 모드에 의해 도출되는 가중치 행렬은 상이하다.
예시적으로, 본 출원에 있어서, AVS3의 AWP에는 56가지 가중치 행렬 도출 모드가 존재하고, VVC의 GPM에는 64가지 가중치 행렬 도출 모드가 존재한다.
단계 603에 있어서, 가중치 행렬 도출 모드에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정한다.
본 출원의 실시예에 있어서, 인트라 예측 모드 파라미터가 현재 블록이 SAWP 모드를 사용하여 현재 블록의 인트라 예측값을 결정하도록 지시하면, 디코더는 현재 블록의 가중치 행렬 도출 모드를 결정한 이후, 먼저 가중치 행렬 도출 모드에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정할 수 있고, 동시에 가중치 행렬 도출 모드에 따라 현재 블록의 가중치 행렬을 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드는 모두 일반적인 임의의 인트라 예측 모드일 수 있고, DC, Planar, Bilinear 및 각도 예측 모드 등 인트라 예측 모드를 포함하지만 이에 한정되지 않는다.
선택적으로, 본 출원에 있어서, 여기서 인트라 예측 모드는 예측에 대해 개선하는 기술을 더 포함하고, 예를 들어 참조 픽셀의 서브 픽셀 보간 개선, MIPF, IPF 등과 같은 예측 픽셀에 대해 필터링을 수행하는 것을 더 포함한다.
상응하게, 본 출원에서, DC, Planar, Bilinear 및 각도 예측 모드 등 인트라 예측 모드를 기본 인트라 예측 모드로 지칭할 수 있고, MIPF, IPF 등과 같은 예측에 대해 개선하는 기술을 개선된 인트라 예측 모드로 지칭할 수 있다. 기본 인트라 예측 모드는 다른 인트라 예측 모드에 의존하지 않고 독립적으로 예측 블록을 생성할 수 있는 인트라 예측 모드이며, 즉 참조 픽셀 및 기본 인트라 예측 모드를 결정하면, 예측 블록을 결정할 수 있다. 개선된 인트라 예측 모드는 독립적으로 예측 블록을 생성할 수 없고, 기본 인트라 예측 모드에 의존해야만 예측 블록을 생설할 수 있다. 예를 들어 특정된 각도 예측 모드는 참조 픽셀에 따라 예측 블록을 생성할 수 있고, MIPF는 이 각도 예측 모드의 기초에서 상이한 위치의 픽셀에 대해 상이한 필터를 사용하여 예측 블록을 생성 또는 결정할 수 있다.
예시적으로, 본 출원에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드는 모두 기본 인트라 예측 모드일 수 있고, 즉 본 출원의 실시예는 두개의 상이한 기본 인트라 예측 모드를 사용한다. 이때 개선된 인트라 예측 모드의 경우, 각각 제1 인트라 예측 모드 및 제2 인트라 예측 모드와 조합되어, 제1 예측 블록 및 제2 예측 블록을 생성할 수 있다. 본 출원의 실시예는 “새로운 예측 블록”을 생성한 이후, 상기 “새로운 예측 블록”을 개선하여 업데이트된 예측 블록을 얻을 수 있다.
예시적으로, 본 출원에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드는 기본 인트라 예측 모드 및 개선된 인트라 예측 모드의 조합일 수 있고, 즉 본 출원의 실시예는 두개의 상이한 인트라 예측 모드 조합을 사용한다. 예를 들어 제1 인트라 예측 모드 및 제2 인트라 예측 모드는 모두 동일한 각도 예측 모드를 사용하지만, 제1 인트라 예측 모드는 IPF와 같은 특정된 개선된 인트라 예측 모드를 사용하지 않고; 제2 인트라 예측 모드는 IPF와 같은 개선된 인트라 예측 모드를 사용한다. 또는 제1 인트라 예측 모드 및 제2 인트라 예측 모드는 모두 특정된 각도 예측 모드를 사용하지만, 제1 인트라 예측 모드는 특정된 개선된 인트라 예측 모드의 특정된 선택을 사용하고; 제2 인트라 예측 모드는 이러한 개선된 인트라 예측 모드의 다른 한 선택을 사용한다. “새로운 예측 블록”을 얻은 이후, 여전히 개선된 인트라 예측 모드가 존재하여 “새로운 예측 블록”을 개선하여 업데이트된 예측 블록을 얻을 수 있다.
이로부터 알다시피, 본 출원의 실시예에서 제안한 인트라 예측 방법은, 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 현재 블록에 대해 두개의 완전히 상이한 예측 블록을 결정하고, 하나의 가중치 행렬을 결정하고, 두개의 예측 블록을 가중치 행렬에 따라 조합하여 새로운 예측 블록을 얻을 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 모든 가능한 가중치 행렬에서 각 가중치 행렬의 모든 포인트의 가중치가 동일한 것은 아니다. 다시 말해, 적어도 한 가능한 가중치 행렬에는 적어도 두개의 상이한 가중치 값이 포함된다.
선택적으로, 본 출원에 있어서, 모든 가능한 가중치 행렬에는 적어도 두개의 상이한 가중치 값이 포함된다.
선택적으로, 본 출원에 있어서, 일부 가중치 행렬에는 적어도 두개의 상이한 가중치 값이 포함되고, 예를 들어, 본 출원에서, 최소 가중치 값이 0이고, 최대 가중치 값이 8이면, 하나의 가중치 행렬에서 어떠한 포인트는 0이고, 어떠한 포인트는 8이다. 상응하게, 일부 가중치 행렬에는 동일한 가중치 값만이 포함되고, 예를 들어, 본 출원에서, 하나의 가중치 행렬에서 모든 포인트는 모두 4이다.
선택적으로, 본 출원에 있어서, 하나의 가중치 행렬에는 두가지 가중치만이 존재하고, 그중 하나의 가중치는 대응 포인트의 예측값이 완전히 제1 예측 블록으로부터 온 대응 포인트의 값인 것을 표시하고, 다른 하나의 가중치는 대응 포인트의 예측값이 완전히 제2 예측 블록으로부터 온 대응 포인트의 값인 것을 표시한다. 예를 들어, 본 출원에서, 하나의 가중치 행렬에는 각각 0및 1 두가지 가중치만이 존재한다.
선택적으로, 본 출원에 있어서, 하나의 가중치 행렬에는 여러가지 가중치가 존재할 수 있고, 여기서 최대값 및 최소값(예를 들어 0)은 각각 대응 포인트의 예측값이 완전히 제1 예측 블록으로부터 온 대응 포인트의 값이거나 제2 예측 블록으로부터 온 대응 포인트의 값인 것을 표시한다. 최대값 또는 최소값이 아닌 가중치 값은 대응 포인트의 예측값이 제1 예측 블록 및 제2 예측 블록으로부터 온 대응 포인트의 값의 가중치 평균을 표시한다. 이 최대값 또는 최소값의 가중치 값에 의해 구성된 영역을 과도 영역(blending area)으로 칭할 수 있다.
설명해야 할 것은, 본 출원에 있어서, 가중치 행렬에 두가지 가중치만이 존재하는 경우, 가중치 변화의 위치는 하나의 직선을 구성하거나, 가중치 행렬에 여러가지 가중치가 존재하는 경우, 과도 영역에서 가중치가 동일한 위치는 하나의 직선(라인 섹션)을 구성한다. 여기서, 상기 직선은 모두 수평 수직인 것일 수 있고, 모두 수평 수직이 아닌 것일 수도 있다.
선택적으로, 본 출원에 있어서, 가중치 행렬에 두가지 가중치만이 존재하는 경우, 가중치 변화의 위치는 하나의 곡선을 구성하거나, 가중치 행렬에 여러가지 가중치가 존재하는 경우, 과도 영역에서 가중치가 동일한 위치는 하나의 곡선(곡선 섹션)을 구성한다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 GPM 또는 AWP와 유사한 방법을 사용하여 가중치 행렬의 결정을 구현할 수 있다. 구체적으로, 동일한 인코딩 및 디코딩 표준 또는 인코더 및 디코더에서 GPM 또는 AWP을 사용하면, 상기 방법을 사용하여 가중치 행렬을 결정할 수 있음으로써, 일부 동일한 논리를 다중화할 수 있다. AVS3 인터 예측이 AWP를 사용하면, AVS3에서 AWP를 사용하는 방법으로 가중치 행렬을 결정할 수 있다. 물론 동일한 인코딩 및 디코딩 표준 또는 인코더 및 디코더에서의 GPM 또는 AWP와 상이한 방법을 사용할 수도 있고, 예를 들어 상이한 모드 개수, 또는 상이한 과도 영역 알고리즘을 사용하거나, 상이한 파라미터 등을 사용할 수 있다. 이는 인터 예측이 시간 도메인에서의 관련성을 이용하기 때문에, 참조 프레임에서 재구축된 이미지를 참조 블록으로 사용한다. 인트라 예측은 공역에서의 관련성을 이용하기 때문에, 현재 블록 주변의 재구축된 픽셀을 참조 픽셀로 사용한다. 공역에서 거리가 가까울수록 관련성이 강하고, 거리가 멀수록 관련성이 약하다. 따라서 특정된 가중치 행렬이 하나의 예측 블록에 의해 사용되는 픽셀 위치로 하여금 참조 픽셀로부터 멀리 떨어지도록 하면, 이 부분의 종래의 기술보다 더 적합한 예측값을 만들지 못할 수 있고, 이러한 가중치 행렬은 사용되지 않을 수 있고, 인터 예측에서 사용될 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 본 출원의 실시예는 두개의 인트라 예측 모드를 사용해야 하고, 일반적인 다른 인트라 예측 방법은 일반적으로 하나의 인트라 예측 모드만을 사용한다. 따라서, 본 출원의 실시예에서 사용되는 인트라 예측 모드의 코딩 방법은 일반적인 다른 인트라 예측 방법의 인트라 예측 모드의 코딩 방법과 상이할 수 있고, 상응하게, 본 출원의 실시예에서 사용되는 MPM 구축 방법은 일반적인 다른 인트라 예측 방법의 MPM 구축 방법과 상이할 수도 있다.
본 출원의 실시예에 있어서, 추가로, 본 출원의 실시예에서 제안한 인트라 예측 방법은 코드 스트림에서 가중치 행렬 도출 모드의 정보 및 두개의 인트라 예측 모드의 정보를 전송해야 하기 때문에, 가중치 행렬 도출 모드는 AVS3의 AWP를 예로 들면 56가지 모드가 존재하고, 역 이진화는 5 내지 6개의 비트가 필요하다. 인트라 예측 모드는 AVS3을 예로 들면 66가지 모드가 존재하고, 두개의 MPM을 사용한다. 인트라 예측 모드가 MPM이면, 역 이진화는 두개의 비트가 필요하고, 그렇지 않을 경우 역 이진화는 7개의 비트가 필요하다. 다시 말해 AVS3에 있어서, 상기 정보는 최대로 6+7+7인 20개의 비트의 오버헤드가 필요하다.
상기 정보의 역 이진화 오버헤드를 저하시키고, 코딩 성능을 향상시키기 위해, 본 출원의 실시예에 있어서, 디코더는 현재 블록의 인트라 예측 모드와 가중치 행렬 간의 관련성을 이용하여 상기 정보를 결정할 수 있다. 구체적으로, 현재 블록에 의해 사용되는 인트라 예측 모드와 가중치 행렬은 일정한 관련성이 존재하고, 이러한 관련성을 이용하여, 디코더는 인트라 예측 모드에 대해 디코딩을 수행할 경우 가중치 행렬의 정보를 이용할 수 있고, 추가로, 디코더는 인트라 예측 모드에 대해 디코딩을 수행하는 경우 가중치 행렬 도출 모드의 정보를 이용할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 가중치 행렬에 두가지 가중치가 포함되는 경우, 가중치 변화의 위치는 하나의 직선을 구성하거나, 가중치 행렬에 여러가지 가중치가 존재하는 경우, 과도 영역에서 가중치가 동일한 위치는 하나의 직선을 구성하고, 이 직선을 경계선이라고 칭할 수 있다. 경계선 자체도 각도가 존재하며, 수평에서 오른쪽의 각도는 0이고, 각도는 시계 반대 방향에 따라 증가되도록 설정할 수 있다. 그러면 경계선은 0도, 수직 90도, 45도, 135도 및 다른 상이한 각도와 같은 기울기를 가질 수 있다. 하나의 예측 블록이 특정된 가중치 행렬을 사용하면, 대응되는 무늬는 경계선 양쪽에서 상이한 특성을 나타낼 수 있고, 예를 들어 경계선 양쪽은 두가지 상이한 각도의 무늬거나, 경계선의 한쪽은 각도의 무늬이고, 다른 한쪽은 비교적 평탄한 무늬이다. 경계선 자체는 각도가 존재하기 때문에, 하나의 포인트가 인트라 각도 예측을 통해 얻은 것이라고 가정할 수 있고, 이 포인트는 현재 블록의 일부 무늬와 가까울수 있기 때문에, 이 직선과 현재 블록의 두개의 인트라 예측 모드는 관련성이 존재한다.
구체적으로, 본 출원에서, 경계선은 하나의 포인트가 인트라 각도 예측을 통해 얻은 것이라고 가정하면, 적어도 하나의 인트라 각도 예측 모드를 찾을 수 있고, 이 인트라 각도 예측 모드는 근사적으로 경계선을 만들수 있다. 예를 들어, 수평 방향의 경계선은 AVS3에서의 모드24와 같이 수평 인트라 예측 모드에 매칭되고; 수직 방향의 경계선은 AVS3에서의 모드12와 같이 수직 인트라 예측 모드에 매칭되고; AVS3에서의 모드30과 같이 45도의 경계선은 왼쪽 아래에서 오른쪽 위로 45도의 인트라 예측 모드에 매칭될 수 있고; AVS3에서의 모드 6과 같이 오른쪽 위에서 왼쪽 아래로 225도의 인트라 예측 모드에 매칭될 수도 있다. 하나의 가중치 행렬에 가중치 값이 하나만 존재하는 경우, DC, Planar, Bilinear 등 현저한 각도가 존재하지 않는 모드에 매칭될 수 있다. 이로부터 알다시피, 가중치 행렬 도출 모드는 일부 인트라 예측 모드에 매칭될 수 있고, 따라서 가중치 행렬 도출 모드를 이용하여 인트라 예측 모드의 디코딩을 어시스트 할 수 있다.
설명해야 할 것은, 본 출원에 있어서, 가중치 행렬 도출 모드는 가중치 행렬의 인덱스일 수도 있고, 예를 들어 AWP의 56가지 모드를 56가지 가중치 행렬 도출 모드로 간주할 수 있다.
예시적으로, 본 출원에 있어서, 하나의 맵핑 관계 테이블을 구축하여 추가로 가중치 행렬 도출 모드와 인트라 각도 예측 모드 간의 맵핑 관계를 표시할 수 있다. 구체적으로, AWP 및 GPM의 복수 개의 모드의 경계선은 모두 동일한 각도이고, 예를 들어 AVS3의 AWP는 8개 모드마다 경계선 각도가 동일하다. 56가지 AWP 모드는 7가지 경계선의 각도가 존재한다. 경계선 각도의 인덱스는 가중치 행렬 도출 모드의 모드 번호 Mod 8(%8)로 얻을 수 있다. 예를 들어, 표 1은 맵핑 관계 테이블이고, AVS3의 각도 모드를 예로 들면, 경계선 각도의 인덱스 0 및 1은 각각 오른쪽 상단 모서리에서 왼쪽 하단 모서리, 왼쪽 상단 모서리에서 오른쪽 하단 모서리로의 두개의 인트라 각도 예측 모드에 대응될 수 있다. 구체적인 구현의 경우, 다른 경계선 각도의 인덱스에 대해 근사적으로 대응되는 인트라 각도 예측 모드를 찾거나, 모든 경계선 각도의 인덱스는 하나의 인트라 각도 예측 모드에만 대응될 수 있다.
더 나아가, 본 출원에 있어서, 일반적으로 현재 블록의 왼쪽 및 위쪽의 참조 픽셀을 사용하여 인트라 예측을 수행하고, 공간에서 픽셀의 거리가 가까울수록, 관련성이 강하고, 공간에서 픽셀의 거리가 멀수록, 관련성이 약하다. 따라서, 현재 블록의 일부분 픽셀만이 인트라 예측 모드에 의해 예측하여 얻은 것이면, 이 부분 픽셀이 위치한 위치는 이 부분에 의해 사용되는 인트라 예측 모드의 확률에 영향을 미친다. 즉 상기 경계선의 위치 및 각도는 경계선 양쪽의 두개의 인트라 예측 모드의 선택에 영향을 준다.
본 출원의 실시예에 있어서, 추가로, 디코더는 가중치 행렬 도출 모드에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 먼저 가중치 행렬 도출 모드를 이용하여 모드 리스트(MPM 리스트)를 결정할 수 있고; 다음 모드 리스트에 기반하여, 추가로 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정할 수 있다.
구체적으로, 본 출원의 실시예에 있어서, 가중치 행렬과의 관련성을 이용하여 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 가중치 행렬 도출 모드를 이용하여 모드 리스트를 구축할 수 있거나, MPM을 구축할 경우 가중치 행렬 도출 모드의 정보를 이용할 수 있다. 여기서, 가중치 행렬 도출 모드는 적어도 하나의 인트라 예측 모드에 대응될 수 있고, 따라서 디코더는 현재 블록에 의해 결정된 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드를 모드 리스트에 추가할 수 있거나, 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드와 관련된 복수 개의 인트라 예측 모드를 모드 리스트에 추가할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 경우, 먼저 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 결정한 다음, 인접한 블록에 대응되는 인트라 예측 모드를 첨가될 모드로 결정할 수 있고; 첨가될 모드가 기설정된 첨가 조건을 만족하는 것을 결정한 이후, 인코더는 첨가될 모드를 모드 리스트에 첨가할 수 있고, 즉 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 모드 리스트에 첨가할 수 있으며; 다음, 이때 모드 리스트가 기설정된 리스트 길이를 만족하지 않으면, 디코더는 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 계속하여 결정한 다음, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 첨가될 모드로 결정할 수 있으며; 첨가될 모드가 기설정된 첨가 조건을 만족하는 것이 결정되면, 상기 첨가될 모드를 모드 리스트에 첨가하고, 즉 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 디코더는 인접한 블록에 대응되는 인트라 예측 모드를 모드 리스트에 첨가하는 경우, 먼저 인접한 블록에 대응되는 순서 파라미터를 결정한 다음; 순서 파라미터에 따라, 인접한 블록에 대응되는 인트라 예측 모드를 순차적으로 모드 리스트에 첨가할 수 있다. 여기서, 디코더는 인접한 블록과 현재 블록 간의 공간 거리에 따라 대응되는 순서 파라미터를 결정할 수 있고, 예를 들어, 인접한 블록과 현재 블록 간의 공간 거리가 가까울수록, 양자의 관련성은 강하고, 첨가 처리가 먼저 수행되며, 즉 순서 파라미터가 작으며; 인접한 블록과 현재 블록 간의 공간 거리가 멀수록, 양자의 관련성은 약하고, 첨가 처리가 나중에 처리되며, 즉 순서 파라미터가 크다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 결정하는 경우, 먼저 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드를 결정한 다음, 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드에 기반하여, 제1 인덱스 간격에 따라, 관련 인트라 예측 모드를 결정할 수 있다.
예시적으로, 본 출원의 실시예에 있어서, 디코더는 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드와 관련된 복수 개의 인트라 예측 모드를 결정하는 경우, 제1 인덱스 간격에 따라 상기 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드의 인덱스 번호와 하나 또는 복수 개가 차이가 나는 모드를 선택할 수 있다. 예를 들어 1개의 인덱스 번호가 차이나거나, 2개의 인덱스 번호가 차이난다. 예를 들어, 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드의 인덱스가 10이고, 제1 인덱스 간격이 2라고 가정하면, 인덱스가 8 및 12인 두개의 인트라 예측 모드를 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드와 관련된 두개의 관련 인트라 예측 모드로 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 디코더가 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 모드 리스트에 첨가한 이후, 또는, 디코더가 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가한 이후, 모드 리스트가 기설정된 리스트 길이를 만족하지 않으면, 즉 모드 리스트가 충만되지 않으면, 디코더는 계속하여 기설정된 예측 모드를 첨가될 모드로 결정할 수 있고; 다음 첨가될 모드가 기설정된 첨가 조건을 만족하는 것을 결정한 이후, 첨가될 모드를 모드 리스트에 첨가하고, 기설정된 예측 모드를 모드 리스트에 첨가한다.
이해할 수 있는 것은, 본 출원에 있어서, 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 등 여러가지 상이한 모드에서의 하나 또는 여러가지를 포함할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드, 기설정된 예측 모드를 각각 모드 리스트에 첨가한 이후, 모드 리스트가 여전히 기설정된 리스트 길이를 만족하지 않으면, 즉 모드 리스트가 여전히 충만되지 않으면, 디코더는 모드 리스트에서의 예측 모드를 사용하여 관련 인트라 예측 모드를 결정한 다음, 관련 인트라 예측 모드를 첨가될 모드로 결정하고, 첨가될 모드가 기설정된 첨가 조건을 만족하는 것을 결정한 이후, 첨가될 모드를 모드 리스트에 첨가할 수 있으며, 즉 모드 리스트에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가할 수 있다.
다시 말해, 본 출원에서, 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드 및 기설정된 예측 모드를 모드 리스트에 순차적으로 첨가한 이후, 모드 리스트가 여전히 충만되지 않으면, 디코더는 모드 리스트에 기반한 기존의 예측 모드를 선택하여, 대응되는 관련 인트라 예측 모드를 결정한 다음, 이러한 관련 인트라 예측 모드를 모드 리스트에 첨가할 수 있다.
예시적으로, 본 출원에 있어서, 디코더는 모드 리스트에서의 어느 한 예측 모드에 기반하여, 제2 인덱스 간격에 따라, 상기 어느 한 예측 모드와 관련된 관련 인트라 예측 모드를 순차적으로 결정할 수 있다. 여기서, 디코더는 제2 인덱스 간격에 따라 상기 어느 한 예측 모드의 인덱스 번호와 하나 또는 복수 개가 차이가 나는 모드를 선택할 수 있다. 예를 들어 1개의 인덱스 번호가 차이나거나, 2개의 인덱스 번호가 차이난다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 첨가될 모드로 사용하든, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 첨가될 모드로 사용하든, 또는 기설정된 예측 모드를 첨가될 모드로 사용하든, 또는 관련 인트라 예측 모드를 첨가될 모드로 사용하든, 디코더는 모두 첨가될 모드가 기설정된 첨가 조건을 만족하는지 여부를 판정해야 하고, 구체적으로, 첨가될 모드가 존재하고, 첨가될 모드와 모드 리스트에서의 예측 모드가 모두 상이하면, 첨가될 모드가 기설정된 첨가 조건을 만족한다고 결정할 수 있음으로써, 상기 첨가될 모드를 모드 리스트에 첨가할 수 있다.
상응하게, 첨가될 모드가 존재하지 않거나, 첨가될 모드와 모드 리스트에서의 하나의 예측 모드가 동일하면(중첩), 첨가될 모드가 기설정된 첨가 조건을 만족하지 않는 것을 결정할 수 있고, 따라서 상기 첨가될 모드를 모드 리스트에 첨가할 수 없고, 상기 첨가될 모드를 버린다.
이해할 수 있는 것은, 본 출원에 있어서, 현재 블록은 두개의 인트라 예측 모드를 사용하여 인트라 예측 처리를 수행해야 하기 때문에, MPM을 구축할 경우 더욱 많은 위치의 인트라 예측 모드를 참조하거나, 더욱 많은 인접한 블록의 인트라 예측 모드를 참조할 수 있다. 상응하게, 본 출원에서, 현재 블록에 의해 사용되는 모드 리스트의 길이는 다른 인트라 예측 모드의 모드 리스트 길이와 상이할 수 있고, 이는 MPM이 이진화 수행 시의 코드 워드가 다른 모드보다 짧기 때문에, 두개의 인트라 예측 모드가 각각 MPM일 확률을 증가하여, 인코딩 및 디코딩 효율을 향상시키는데 유리하다.
설명해야 할 것은, 본 출원에 있어서, 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 디코더는 모드 리스트를 구축하는 과정에서, 모드 리스트에 매번 첨가된 인트라 예측 모드가 모드 리스트에서 기존의 인트라 예측 모드와 중복되지 않는 것을 보장해야 한다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 경우, 먼저 가중치 행렬 도출 모드에 대응되는 리스트 구축 정책을 결정할 수 있고; 다음 리스트 구축 정책에 따라, 추가로 모드 리스트를 결정할 수 있다.
다시 말해, 본 출원에서, 상이한 가중치 행렬의 경우, 즉 상이한 가중치 행렬 도출 모드의 경우, 디코더는 상이한 구축 정책을 사용하여 모드 리스트의 구축을 수행할 수 있다. 예를 들어, 구축 정책에 기반하여, 가중치 행렬의 경계선이 0도 또는 90도이면, 즉 수평 또는 수직이면, 디코더는 모드 리스트를 구축하는 경우 가중치 행렬에 대응되는 인트라 예측 모드를 고려할 수 있고, 다른 경우 가중치 행렬에 대응되는 인트라 예측 모드를 고려하지 않는다.
예시적으로, 본 출원에 있어서, 가중치 행렬의 경계선이 0도라고 가정하면, AWP의 2, 10 등 모드(0부터 카운팅)와 같은 모드 리스트를 구축하는 경우모드 리스트를 구축하는 경우, 수평 인트라 예측 모드 24를 모드 리스트의 후보에 추가할 수 있고; 가중치 행렬의 경계선이 90도라고 가정하면, AWP의 6, 14 등 모드(0부터 카운팅)와 같은 모드 리스트를 구축하는 경우, 수직 인트라 예측 모드12를 모드 리스트 후보에 추가할 수 있다.
이해할 수 있는 것은, 본 출원에 있어서, 또한 가중치 행렬의 경계선이 0도에 가까운 범위 내에서, 수평 인트라 예측 모드 또는 수평 인트라 예측 모드 및 유사한 인트라 예측 모드를, 모드 리스트의 후보에 추가할 수 있고; 가중치 행렬의 경계선이 90도에 가까운 범위 내에서, 수직 인트라 예측 모드 또는 수평 인트라 예측 모드 및 유사한 인트라 예측 모드를, 모드 리스트 후보에 추가할 수 있다.
이해할 수 있는 것은, 본 출원에 있어서, 현재 블록이 인트라 예측을 수행하는 경우 사용하는 두개의 인트라 예측 모드가 상이하면, 즉 제1 인트라 예측 모드와 제2 인트라 예측 모드가 상이하면, 제2 인트라 예측 모드가 디코딩을 수행할 경우 제1 인트라 예측 모드의 가능성을 배제할 수 있다. 다시 말해 제2 인트라 예측 모드의 디코딩은 제1 인트라 예측 모드의 정보를 사용할 수 있다.
본 출원의 실시예에 있어서, 추가로, 디코더는 모드 리스트를 구축하는 과정에서, 또한 후보 인트라 예측 모드를 설정할 수 있다. 여기서, 후보 인트라 예측 모드와 모드 리스트에서의 인트라 예측 모드는 모두 상이하다.
구체적으로, 본 출원에서, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 제2 인트라 예측 모드의 결정은 제1 인트라 예측 모드에 의존할 수 있다. 여기서, 디코더는 모드 리스트에 기반하여, 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 모드 리스트에서의 하나의 예측 모드를 제1 인트라 예측 모드로 결정할 수 있고; 다음 제1 인트라 예측 모드 및 모드 리스트에 따라, 제2 인트라 예측 모드를 결정한다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 모드 리스트에서의 하나의 예측 모드를 제1 인트라 예측 모드로 결정한 이후, 모드 리스트에서 하나의 예측 모드를 삭제할 수 있고, 다음 후보 인트라 예측 모드를 모드 리스트에 첨가함으로써, 업데이트된 모드 리스트를 획득할 수 있고; 다음 상기 업데이트된 모드 리스트에서 하나의 예측 모드를 선택하여 상기 제2 인트라 예측 모드로 결정할 수 있으며, 여기서, 선택 방식은 임의일 수 있다.
다시 말해, 본 출원의 실시예에 있어서, 제1 인트라 예측 모드가 하나의 MPM을 선택하면, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 제2 인트라 예측 모드가 선택 가능한 MPM은 하나가 줄어들고, 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 선택 가능한 모드 리스트의 길이를 변경하지 않기 위해, 디코더는 제1 인트라 예측 모드를 결정한 이후, 하나의 MPM, 즉 기설정된 후보 인트라 예측 모드를 모드 리스트에 첨가할 수 있음으로써, 제2 인트라 예측 모드를 결정하는 경우 제1 인트라 예측 모드와 동일한 개수의 MPM을 계속 사용할 수 있다.
예시적으로, 본 출원에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 선택 가능한 MPM이 N개라고 가정하면, 모드 리스트를 구축하는 경우, 먼저 N개의 MPM 및 1개의 후보 MPM을 구축할 수 있고, 제1 인트라 예측 모드에 대해, 선택 가능한 MPM은 상기 N개의 MPM이다. 제1 인트라 예측 모드가 그중 하나의 MPM을 선택하면, 제2 인트라 예측 모드에 대해, 첫 번째 인트라 예측 모드에서 선택된 MPM을 제거하고, 후보 MPM이 모드 리스트에 추가됨으로써, 두 번째 인트라 예측 모드는 계속하여 N개의 MPM을 선택할 수 있다.
본 출원의 실시예에 있어서, 추가로, 디코더는 모드 리스트를 구축하는 과정에서, 또한 모드 리스트의 길이 파라미터를 (N+1)로 설정할 수 있고; 여기서, N은 양의 정수이다.
구체적으로, 본 출원에서, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 제2 인트라 예측 모드의 결정은 제1 인트라 예측 모드에 의존할 수 있다. 여기서, 디코더는 모드 리스트에 기반하여, 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 모드 리스트를 사용하여 제1 인트라 예측 모드를 결정하면, 모드 리스트의 상위 N개의 예측 모드에서의 하나의 예측 모드를 제1 인트라 예측 모드로 결정할 수 있고; 다음 제1 인트라 예측 모드 및 모드 리스트에 따라, 제2 인트라 예측 모드를 결정한다.
더 나아가, 본 출원의 실시예에 있어서, 모드 리스트를 사용하여 제1 인트라 예측 모드를 결정하면, 디코더는 모드 리스트의 상위 N개의 예측 모드에서의 하나의 예측 모드를 제1 인트라 예측 모드로 결정한 이후, 모드 리스트의, 제1 인트라 예측 모드 외의 다른 N개의 예측 모드를 이용하여 제2 인트라 예측 모드를 결정한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 디코더는 모드 리스트에 기반하여, 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 모드 리스트를 사용하지 않고 제1 인트라 예측 모드를 결정하면, 디코더는 직접 모드 리스트의 상위 N개의 예측 모드에서의 하나의 예측 모드를 제2 인트라 예측 모드로 결정할 수 있다.
다시 말해, 본 출원의 실시예에 있어서, 인트라 예측 모드의 선택 가능한 MPM이 N개라고 가정하면, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 모드 리스트를 구축하는 경우, (N+1)개의 MPM을 구축할 수 있고, 제1 인트라 예측 모드에 대해, 선택 가능한 MPM은 모드 리스트에서의 상위 N개의 MPM이다. 제1 인트라 예측 모드가 MPM을 선택하지 않으면, 제2 인트라 예측 모드가 선택 가능한 MPM은 모드 리스트에서의 상위 N개의 MPM이다. 제1 인트라 예측 모드가 MPM을 선택하면, 제2 인트라 예측 모드가 선택 가능한 MPM은 모드 리스트에서의, 제1 인트라 예측 모드 외의 N개의 MPM이다.
예시적으로, 본 출원에 있어서, N을 4라고 가정하면, 디코더는 5개의 MPM이 포함된 모드 리스트를 구축할 수 있다. MPM[x]은 제(x+1) 번째 MPM을 표시하며, 즉 MPM[0]은 첫 번째 MPM을 표시하면, 이는 어레이의 카운트가 0부터 시작되기 때문이다. 제1 인트라 예측 모드는 mode0이고, 제2 인트라 예측 모드는 mode1이다. 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 모두 MPM이라고 가정하면, 제1 인트라 예측 모드가 선택 가능한 MPM에서의 인덱스 번호는 idx0이고, 제2 인트라 예측 모드가 선택 가능한 MPM에서의 인덱스 번호가 idx1이면,
mode0=MPM[idx0]
mode1=MPM[idx1<idx0?idx1:idx1+1]이다.
다시 말해, idx1<idx0이면, mode1=MPM[idx1]이고;
그렇지 않을 경우, mode1=MPM[idx1+1]이다.
이로부터 알다시피, idx0 및 idx1의 값의 범위는 모두 0 내지 3이고, mode1의 값은 idx1와 관련될 뿐만 아니라, idx0과도 관련된다.
예시적으로, 본 출원의 실시예에 있어서, 디코딩 측에서, 디코더는 코드 스트림을 해석하여 제1 인트라 예측 모드와 관련된 변수(intra_luma_pred_mode0)를 결정할 수 있고, 또한 제2 인트라 예측 모드와 관련된 변수(intra_luma_pred_mode1)를 결정할 수 있으며, 다음, 디코더는 intra_luma_pred_mode0에 따라 제1 인트라 예측 모드(IntraLumaPredMode0)를 결정할 수 있으며, 동시에 intra_luma_pred_mode1에 따라 제2 인트라 예측 모드(IntraLumaPredMode1)를 결정할 수 있다.
본 출원의 실시예에 있어서, MPM 리스트를 구축하는 경우, MPM[0]<MPM[1]을 보장한다. 초기 MPM[0]>MPM[1]이면, MPM[0] 및 MPM[1]을 스왑할 수 있다. 후속 2 단계 및 5 단계에 대응되기 위해, 인코더도 동일한 MPM 리스트 구축 방법을 사용해야 한다.
구체적으로, 변수(intra_luma_pred_mode0) 및 (intra_luma_pred_mode1)과 이진 심볼 열의 관계는 아래 표 9에 표시된 바와 같다.
intra_luma_pred_mode 이진 심볼 열
0 1 0 0
1 1 0 1
2 1 1 0
3 1 1 1
4 0 0 0 0 0 0
……
binIdx 0 1 2 3 4 5 6
첫 번째 비트는 MPM인지 여부를 표시하고, 예를 들어 “1”은 MPM인 것을 표시하고, “0”은 MPM이 아닌 것을 표시한다. 제1 인트라 예측 모드가 MPM이고, 모드 리스트에 4개의 MPM이 포함된다고 가정하면, 2개의 비트를 사용하여 모드 리스트에서의 어떠한 MPM을 사용하는지를 표시할 수 있고 표시하며, 즉 “00, 01, 10, 11”은 각각 모드 리스트에서의 첫 번째 MPM, 두 번째 MPM, 세 번째 MPM, 네 번째 MPM을 표시한다.구체적으로, 디코더가 intra_luma_pred_mode0 및 intra_luma_pred_mode1에 따라, IntraLumaPredMode0 및 IntraLumaPredMode1을 각각 도출하는 방법은 아래와 같다.방법 1에 있어서, intra_luma_pred_mode0의 값이 0이면, IntraLumaPredMode0은 MPM[0]과 동일하고; 그렇지 않을 경우, intra_luma_pred_mode0의 값이 1이면, IntraLumaPredMode0은 MPM[1]과 동일하며; intra_luma_pred_mode0의 값이 2이면, IntraLumaPredMode0은 MPM[2]와 동일하고; intra_luma_pred_mode0의 값이 3이면, IntraLumaPredMode0은 MPM[3]과 동일하다.
방법 2에 있어서, 그렇지 않을 경우, IntraPredMode0의 값(intra_luma_pred_mode0+EipmPUFlag32)은 아래와 같이 설정된다.
IntraPredMode0에서 4를 감한 값이 MPM[0]보다 작으면, IntraLumaPredMode0은 IntraPredMode0에서 2를 감한 값과 동일하고;
그렇지 않을 경우, IntraPredMode0에서 3을 감한 값이 MPM[0]보다 크고 MPM[1]보다 작으면, IntraLumaPredMode0은 IntraPredMode0에서 1을 감한 값과 동일하며;
그렇지 않을 경우, IntraLumaPredMode0은 IntraPredMode0과 동일하다.
방법 3에 있어서, intra_luma_pred_mode0의 값이 4보다 작고, intra_luma_pred_mode1의 값이 4보다 작으며, intra_luma_pred_mode1의 값이 intra_luma_pred_mode0의 값보다 크거나 같으면, mpmPlus=1이고, 그렇지 않을 경우 mpmPlus=0이다.
방법 4에 있어서, intra_luma_pred_mode1의 값이 0이면, IntraLumaPredMode1은 MPM[0+mpmPlus]과 동일하고; 그렇지 않을 경우 intra_luma_pred_mode1의 값이 1이면, IntraLumaPredMode1은 MPM[1+mpmPlus]과 동일하며; intra_luma_pred_mode1의 값이 2이면, IntraLumaPredMode1은 MPM[2+mpmPlus]과 동일하고; intra_luma_pred_mode1의 값이 3이면, IntraLumaPredMode1은 MPM[3+mpmPlus]과 동일하다.
방법 5에 있어서, 그렇지 않을 경우, IntraPredmode1의 값(intra_luma_pred_mode1+EipmPUFlag32)은 아래와 같이 설정된다.
IntraPredMode1에서 4를 감한 값이 MPM[0]보다 작으면, IntraLumaPredMode1은 IntraPredMode1에서 2를 감한 값과 동일하고;
그렇지 않을 경우, IntraPredMode1에서 3을 감한 값이 MPM[0]보다 크고 MPM[1]보다 작으면, IntraLumaPredMode1은 IntraPredMode1에서 1을 감한 값과 동일하며;
그렇지 않을 경우, IntraLumaPredMode1은 IntraPredMode1과 동일하다.
여기서, eipm_PU_flag 이빈 변수는 밝기 예측 모드 확장 플래그이고, 예시적으로, 값‘1’은 인트라 각도 예측 확장 모드가 사용되어야 함을 표시하고; 값‘0’은 인트라 밝기 예측 확장 모드가 사용되지 않음을 표시한다. EipmPUFlag의 값은 eipm_PU_flag의 값과 동일하다. 구체적으로, 코드 스트림에 eipm_PU_flag가 존재하지 않으면, EipmPUFlag의 값은 0과 동일하다.
선택적으로, 본 출원의 실시예에 있어서, 다만 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이함만을 보장하고, 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 선택 가능한 MPM의 개수에 대해 제한하지 않으면, 디코더는 인트라 예측 모드를 다시 보충하는 설정을 수행하지 않거나, 모드 리스트 길이를 증가하는 처리를 수행하지 않을 수도 있으며, 이때, 디코더는 제2 인트라 예측 모드의 디코딩 방법을 변경해야 한다. 다시 말해, 제1 인트라 예측 모드가 모드 리스트에서의 하나의 MPM을 선택한 이후, 제2 인트라 예측 모드가 선택 가능한 MPM은 하나가 부족하게 되고, 이때 제2 인트라 예측 모드가 선택 가능한 MPM이 줄어들었기 때문에, 제2 인트라 예측 모드의 디코딩 방법을 변경해야 한다.
예시적으로, 본 출원에 있어서는, MPM의 개수 N이 4인 것을 예로 들고, 첫 번째 비트는 MPM인지 여부를 표시하고, 예를 들어 “1”은 MPM인 것을 표시하고, “0”은 MPM이 아닌 것을 표시한다. 제1 인트라 예측 모드가 MPM이면, 4개의 MPM이 존재하기 때문에, 2개의 비트로 어떠한 MPM인지를 표시하며, 즉 “00, 01, 10, 11”은 각각 첫 번째 MPM, 두 번째 MPM, 세 번째 MPM, 네 번째 MPM을 표시한다. 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 모두 MPM이면, 제2 인트라 예측 모드가 사용 가능한 MPM은 3개 뿐이며, 1 내지 2개의 비트로 어떠한 MPM인지를 표시하고, 예를 들어 “00, 01, 10”은 각각 나머지 첫 번째 MPM, 두 번째 MPM, 세 번째 MPM을 표시한다. 이로부터 알다시피, 하나의 가능성이 배제되었으므로, 오버헤드를 절약하기 위해 역 이진화 방법이 변경될 수 있다.
예시적으로, 본 출원에 있어서, N을 4라고 가정하면, 구축은 4개의 MPM의 모드 리스트를 포함한다. MPM[x]은 제(x+1) 번째 MPM을 표시하며, 즉 MPM[0]은 첫 번째 MPM을 표시하면, 이는 어레이의 카운트가 0부터 시작되기 때문이다. 제1 인트라 예측 모드는 mode0이고, 제2 인트라 예측 모드는 mode1이다. 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 모두 MPM이라고 가정하면, 제1 인트라 예측 모드가 선택 가능한 MPM에서의 인덱스 번호는 idx0이고, 제2 인트라 예측 모드가 선택 가능한 MPM에서의 인덱스 번호가 idx1이면,
mode0=MPM[idx0]
mode1=MPM[idx1<idx0?idx1:idx1+1]이다.
다시 말해, idx1<idx0이면, mode1=MPM[idx1]이고;
그렇지 않을 경우, mode1=MPM[idx1+1]이며;
이로부터 알다시피, idx0의 값의 범위는 0 내지 3이고, idx1의 값의 범위는 0 내지 2이며, mode1의 값은 idx1와 관련될 뿐만 아니라, idx0과도 관련된다. Idx0은 2비트 역 이진화를 사용할 수 있고, idx1은 1 내지 2비트 역 이진화를 사용한다.
예시적으로, 본 출원의 실시예에 있어서, 디코딩 측에서, 디코더는 코드 스트림을 해석하여 제1 인트라 예측 모드와 관련된 변수(intra_luma_pred_mode0)를 결정할 수 있고, 또한 제2 인트라 예측 모드와 관련된 변수(intra_luma_pred_mode1)를 결정할 수 있으며, 다음, 디코더는 intra_luma_pred_mode0에 따라 제1 인트라 예측 모드(IntraLumaPredMode0)를 결정할 수 있으며, 동시에 intra_luma_pred_mode1에 따라 제2 인트라 예측 모드(IntraLumaPredMode1)를 결정할 수 있다.
본 출원의 실시예에 있어서, MPM 리스트를 구축하는 경우, MPM[0]<MPM[1]을 보장한다. 초기 MPM[0]>MPM[1]이면, MPM[0] 및 MPM[1]을 스왑할 수 있다. 후속 2 단계 및 5 단계에 대응되기 위해, 인코더도 동일한 MPM 리스트 구축 방법을 사용해야 한다.
구체적으로, 변수(intra_luma_pred_mode0) 및 (intra_luma_pred_mode1)과 이진 심볼 열의 관계는 아래 표 10에 표시된 바와 같다.
intra_luma_pred_mode 이진 심볼 열
0 1 0 0
1 1 0 1
2 1 1 0
3 1 1 1
4 0 0 0 0 0 0
……
binIdx 0 1 2 3 4 5 6
Intra_luma_pred_mode0의 값이 4보다 작으면, intra_luma_pred_mode1과 이진 심볼 열의 관계는 아래에 표 11에 표시된 바와 같고, 그렇지 않을 경우, intra_luma_pred_mode1과 이진 심볼 열의 관계는 intra_luma_pred_mode0과 동일하다.
intra_luma_pred_mode 이진 심볼 열
0 1 0
1 1 1 0
2 1 1 1
3
4 0 0 0 0 0 0
……
binIdx 0 1 2 3 4 5 6
구체적으로, 디코더가 intra_luma_pred_mode0 및 intra_luma_pred_mode1에 따라, IntraLumaPredMode0 및 IntraLumaPredMode1을 각각 도출하는 방법은 아래와 같다.방법 1에 있어서, intra_luma_pred_mode0의 값이 0이면, IntraLumaPredMode0은 MPM[0]과 동일하고; 그렇지 않을 경우, intra_luma_pred_mode0의 값이 1이면, IntraLumaPredMode0은 MPM[1]과 동일하며; intra_luma_pred_mode0의 값이 2이면, IntraLumaPredMode0은 MPM[2]와 동일하고; intra_luma_pred_mode0의 값이 3이면, IntraLumaPredMode0은 MPM[3]과 동일하다.방법 2에 있어서, 그렇지 않을 경우, IntraPredMode0의 값(intra_luma_pred_mode0+EipmPUFlag32)은 아래와 같이 설정된다.
IntraPredMode0에서 4를 감한 값이 MPM[0]보다 작으면, IntraLumaPredMode0은 IntraPredMode0에서 2를 감한 값과 동일하고;
그렇지 않을 경우, IntraPredMode0에서 3을 감한 값이 MPM[0]보다 크고 MPM[1]보다 작으면, IntraLumaPredMode0은 IntraPredMode0에서 1을 감한 값과 동일하며;
그렇지 않을 경우, IntraLumaPredMode0은 IntraPredMode0과 동일하다.
방법 3에 있어서, intra_luma_pred_mode0의 값이 4보다 작고, intra_luma_pred_mode1의 값이 4보다 작으며, intra_luma_pred_mode1의 값이 intra_luma_pred_mode0의 값보다 크거나 같으면, mpmPlus=1이고, 그렇지 않을 경우 mpmPlus=0이다.
방법 4에 있어서, intra_luma_pred_mode1의 값이 0이면, IntraLumaPredMode1은 MPM[0+mpmPlus]과 동일하고; 그렇지 않을 경우 intra_luma_pred_mode1의 값이 1이면, IntraLumaPredMode1은 MPM[1+mpmPlus]과 동일하며; intra_luma_pred_mode1의 값이 2이면, IntraLumaPredMode1은 MPM[2+mpmPlus]과 동일하고; intra_luma_pred_mode1의 값이 3이면, IntraLumaPredMode1은 MPM[3+mpmPlus]과 동일하다.
방법 5에 있어서, 그렇지 않을 경우, IntraPredmode1의 값(intra_luma_pred_mode1+EipmPUFlag32)은 아래와 같이 설정된다.
IntraPredMode1에서 4를 감한 값이 MPM[0]보다 작으면, IntraLumaPredMode1은 IntraPredMode1에서 2를 감한 값과 동일하고;
그렇지 않을 경우, IntraPredMode1에서 3을 감한 값이 MPM[0]보다 크고 MPM[1]보다 작으면, IntraLumaPredMode1은 IntraPredMode1에서 1을 감한 값과 동일하며;
그렇지 않을 경우, IntraLumaPredMode1은 IntraPredMode1과 동일하다.
여기서, eipm_PU_flag 이빈 변수는 밝기 예측 모드 확장 플래그이고, 예시적으로, 값‘1’은 인트라 각도 예측 확장 모드가 사용되어야 함을 표시하고; 값‘0’은 인트라 밝기 예측 확장 모드가 사용되지 않음을 표시한다. EipmPUFlag의 값은 eipm_PU_flag의 값과 동일하다. 구체적으로, 코드 스트림에 eipm_PU_flag가 존재하지 않으면, EipmPUFlag의 값은 0과 동일하다.
본 출원의 실시예에 있어서, 추가로, 디코더는 가중치 행렬 도출 모드에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 또한 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드, 기설정된 예측 모드에 대해 순차적으로 순서 배정 처리를 수행할 수 있음으로써, 예측 모드의 후보 리스트를 획득할 수 있고; 여기서, 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 등 여러가지 예측 모드에서의 하나 또는 여러가지를 포함하며; 다음, 인코더는 예측 모드의 후보 리스트에 따라 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정할 수 있다.
구체적으로, 본 출원의 실시예에 있어서, 가중치 행렬과의 관련성을 이용하여 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 또한 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드 또는 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드와 관련된 복수 개의 인트라 예측 모드가 이진화를 수행하는 경우 일반 인트라 예측 모드보다 짧은 코드 워드를 부여할 수 있고, 또는 인트라 예측 모드에서 가장 긴 코드 워드보다 짧은 코드 워드를 부여할 수 있으며, 다시 말해 인트라 예측 모드의 코드 워드는 가장 길지 않다. 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드 또는 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드와 관련된 복수 개의 인트라 예측 모드가 다른 모드보다 선택될 확률이 높다고 간주할 수 있다.
다시 말해, 본 출원의 실시예에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드는 MPM을 사용하지 않을 수도 있으며, 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 사용 가능한 전부 인트라 예측 모드에 대해 순서 배정 처리를 수행하여, 예측 모드의 후보 리스트를 생성할 수 있음으로써, 예측 모드의 후보 리스트에서 순서가 앞쪽인 인트라 예측 모드에 비교적 짧은 코드 워드를 할당하고, 예측 모드의 후보 리스트에서 순서가 뒤쪽인 인트라 예측 모드에 비교적 긴 코드 워드를 할당한다. 여기서, 순서 배정 처리를 수행하는 경우 현재 블록의 인접한 블록의 인트라 예측 모드를 참조할 수 있고, 또한 현재 블록의 가중치 행렬 도출 모드를 참조할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 가중치 행렬 도출 모드에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 또한 가중치 행렬 도출 모드에 대응되는 제1 인트라 예측 모드의 참조 집합을 구축하는 동시에, 가중치 행렬 도출 모드에 대응되는 제2 인트라 예측 모드의 참조 집합을 구출할 수 있고; 다음 제1 인트라 예측 모드의 참조 집합에 기반하여 제1 인트라 예측 모드를 결정할 수 있고; 동시에, 제2 인트라 예측 모드의 참조 집합에 기반하여 제2 인트라 예측 모드를 결정한다.
다시 말해, 본 출원의 실시예에 있어서, 현재 블록의 가중치 행렬 도출 모드의 경우, 디코더는 상기 가중치 행렬 도출 모드에 대응되는, 제1 인트라 예측 모드의 전부 가능한 인트라 예측 모드에 대해 순서 배정 처리를 수행하여, 제1 인트라 예측 모드의 참조 집합을 생성할 수 있는 동시에, 또한 상기 가중치 행렬 도출 모드에 대응되는, 제2 인트라 예측 모드의 전부 가능한 인트라 예측 모드에 대해 순서 배정 처리를 수행하여, 제2 인트라 예측 모드의 참조 집합을 생성할 수 있음으로써, 제1 인트라 예측 모드의 참조 집합에서 제1 인트라 예측 모드를 결정할 수 있고, 또한 제2 인트라 예측 모드의 참조 집합에서 제1 인트라 예측 모드를 결정할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 복잡도를 저하시키기 위해, 클러스터링 방법을 통해 상기 표 2와 같은 룩업 테이블을 축소할 수 있고, 예를 들어, 가중치 행렬 도출 모드를 분류 처리하여, 가중치 행렬 도출 모드에 대응되는 타입을 결정할 수 있고, 하나의 타입의 가중치 행렬 도출 모드의 경우, 동일한 제1 인트라 예측 모드의 모든 가능한 인트라 예측 모드의 순서에 대응되고, 동일한 제2 인트라 예측 모드의 모든 가능한 인트라 예측 모드의 순서에도 대응된다.
더 나아가, 본 출원의 실시예에 있어서, 복잡도를 저하시키기 위해, 클러스터링 방법을 통해 상기 표 2와 같은 룩업 테이블을 축소할 수 있고, 예를 들어, 또한 인트라 예측 모드를 분류 처리하여, 인트라 예측 모드에 대응되는 타입을 결정할 수 있으며, 예를 들어 DC, Planar, Bilinear 등 비각도 모드는 하나의 타입이고, 각도 모드는 일부 라디안의 범위에 따라 분류 처리를 수행할 수 있고, 예를 들어 45도마다, 즉 1/4원을 하나의 타입으로 하여 분류 처리를 수행할 수 있거나 22.5도마다, 즉 1/8원을 하나의 타입으로 하여 분류 처리를 수행할 수 있다. 구체적으로, 각도 모드는 복수 개의 동일하지 않은 구간으로 구획될 수도 있다.
본 출원의 실시예에 있어서, 추가로, 본 출원에서 제안한 인트라 예측 방법은, 두개의 상이한 인트라 예측 모드 및 하나의 가중치 행렬을 사용하여 현재 블록의 예측값을 결정해야 하기 때문에, 오버헤드를 저하시키기 위해, 본 출원에서, 현재 블록의 두개의 인트라 예측 모드에 대해 제한하는 것을 통해 비트수를 저하시킬 수 있는 동시에 현재 블록의 가중치 행렬 도출 모드에 대해 제한하는 것을 통해 비트수를 저하시킬 수도 있다.
예시적으로, 본 출원에 있어서, AVS3의 이전 33개의 예측 모드는 거의 전체 각도 범위를 커버하기 때문에, AVS3에서 이전 33가지 예측 모드만 사용하면 더 나은 성능을 보장할 수 있고, 디코딩할 경우 EIPM을 사용하지 않도록 조정하기만 하면 된다. 더 나아가, 또한 현재 블록이 사용 가능한 인트라 예측 모드의 개수에 대해 추가로 압축 및 제한을 수행하여, 최종적으로 5개의 비트만을 사용하여 디코딩을 수행하는 것을 구현함으로써, 추가로 오버헤드를 줄임으로써, 더 나은 성능을 달성할 수 있다.
선택적으로, 본 출원에 있어서, 현재 블록이 사용 가능한 인트라 예측 모드 개수를 줄이는 것을 통해 두개의 인트라 예측 모드를 디코딩하는 오버헤드를 저하시킬 수 있다. 예를 들어, AVS3에 있어서, 66가지 인트라 예측 모드를 사용하면, 하나의 인트라 예측 모드를 디코딩하기 위해 최대로 7개의 비트가 필요하며, 33가지 인트라 예측 모드만을 사용하고, PCM 모드를 사용하지 않으면, 하나의 인트라 예측 모드를 디코딩하기 위해 최대로 6개의 비트만이 필요하다.
더 나아가, 본 출원에서, 인트라 예측 모드가 일반적으로 DC, Planar, Bilinear 등과 같은 비각도 예측 모드 및 각도 예측 모드를 포함하는 것을 고려한다. 구현 과정에 있어서, 각 비각도 모드는 한 세트의 논리를 사용하고, 전부 각도 모드는 한 세트의 논리를 사용하며 또는 각도 모드는 여러 세트의 논리를 사용하며, 상이한 논리 간의 일부 회로는 다중화될 수 있고, 일부 회로는 다중화되지 않을 수 있다. 따라서, 현재 블록이 사용 가능한 인트라 예측 모드의 개수에 대한 한정은, 각도 예측 모드만을 선택하도록 한정할 수 있거나 비각도 예측 모드만을 선택하도록 한정할 수 있다.
아래는 제2 인트라 예측 모드의 사용 가능한 인트라 예측 모드에 대한 한정을 예로 들어 설명한다. 설명해야 할 것은, 상응한 한정은 제1 인트라 예측 모드의 한정에 적용될 수도 있다.
방식 1에 있어서, 제2 인트라 예측 모드는 비각도 예측 모드에서 지정한 인트라 예측 모드만을 사용할 수 있다.
예를 들어, 제2 인트라 예측 모드는 DC 모드만을 사용할 수 있거나 제2 인트라 예측 모드는 Bilinear 모드만을 사용할 수 있다. 제2 인트라 예측 모드는 한가지 선택만 가능하기 때문에, 본 발명의 블록이 인코딩 및 디코딩에 사용되는 경우 제2 인트라 예측 모드를 결정하는 과정이 필요없이 제2 인트라 예측 모드를 디폴트로 도출하여 현재 블록에 대해 예측을 수행할 수 있고, 코딩을 수행하는 경우 제2 인트라 예측 모드를 코드 스트림에 기입할 필요가 없고, 디코딩할 경우 코드 스트림에서 제2 인트라 예측 모드가 무엇인지 해석할 필요가 없다.
본 실시예에 있어서, 밝기 예측에 적용되는 것을 예로 들어 추가로 설명한다. 현재 블록(CU)이 SAWP 예측 모드를 사용하면, 대응되는 가중치 행렬 도출 모드 및 제1 인트라 예측 모드(여기서, 제2 인트라 예측 모드는 한가지 선택만 가능하기 때문에, 제2 인트라 예측 모드를 기설정된 인트라 예측 모드로 디폴트로 도출함)를 획득하기 위해 코드 스트림을 해석하여야 한다.
대응되는 디코딩 과정은 표 12에 표시된 바와 같다.
……
if ((SawpFlag) {
sawp_idx
intra_luma_pred_mode0
}
……
여기서, 공역 각도 가중 예측 모드 인덱스(sawp_idx)는, 공역 각도 가중 예측의 가중치 행렬을 결정하기 위한 것이고, Sawpidx의 값은 sawp_idx의 값과 동일하다. 코드 스트림에 sawp_idx가 존재하지 않으면, Sawpidx의 값은 0과 동일하다.공역 각도 가중 예측 제1 밝기 예측 모드(intra_luma_pred_mode0)는 공역 각도 가중 예측의 밝기 블록의 제1 인트라 예측 모드(IntraLumaPredMode0)를 결정하기 위한 것이고; intra_luma_pred_mode0에 따라 제1 인트라 예측 모드(IntraLumaPredMode0)를 결정한다.제2 인트라 예측 모드(IntraLumaPredMode1)를 디폴트로 도출한다.
각각 제1 인트라 예측 모드(IntraLumaPredMode0) 및 제2 인트라 예측 모드(IntraLumaPredMode1)에 따라 인트라 예측 샘플 행렬(predMatrix0) 및 predMatrix1을 결정한다. SawpIdx에 따라 가중치 행렬(SawpWeightArrayY)을 결정한다.
두개의 인트라 예측 샘플 행렬(predMatrix0), (predMatrix1) 및 가중치 행렬(SawpWeightArrayY)에 따라 새로운 예측 샘플 행렬(predMatrixSawp)을 결정한다.
구체적인 방법은 아래와 같다.
공역 각도 가중 예측 모드의 예측 샘플 행렬(predMatrixSawp)에서의 요소(predMatrixSawp[x][y])의 값은 ((predMatrix0[x][y] * AwpWeightArrayY[x][y] + predMatrix1[x][y] * ( 8 - AwpWeightArrayY[x][y] ) + 4 ) >> 3)이다.
방식 2에 있어서, 제2 인트라 예측 모드는 비각도 모드거나 비각도 모드에서의 일부만 사용할 수 있다.
예를 들어, 제2 인트라 예측 모드는 DC 및 Bilinear 모드만을 사용할 수 있고, 제2 인트라 예측 모드는 2가지 가능한 선택만이 존재하기 때문에, 1개의 비트(intra_luma_pred_mode1)로 제2 인트라 예측 모드가 DC인지 Bilinear 모드인지를 표시할 수 있다. 코딩할 경우, 제2 인트라 예측 모드에 대해 DC 및 Bilinear 두가지 가능성만을 시도하면 되고, 제2 인트라 예측 모드가 어떠한 인트라 예측 모드인지 결정된 후, intra_luma_pred_mode1을 결정할 수 있다. 상응한 블록을 디코딩하는 과정에 있어서, DC 또는 Bilinear인지를 결정하기 위해 제2 인트라 예측 모드에 대해 1비트의 intra_luma_pred_mode1만을 해석하면 된다.
다른 실시예에 있어서, 제2 인트라 예측 모드는 비각도 모드만을 사용할 수 있고, 즉 제2 인트라 예측 모드는 세가지 가능한 선택만 존재하면, 2개의 비트(intra_luma_pred_mode1)로 제2 인트라 예측 모드가 어떠한 인트라 예측 모드인지를 표시할 수 있다.
본 실시예에 있어서, 밝기 예측에 적용되는 것을 예로 들어 추가로 설명한다. 현재 블록(CU)이 SAWP 예측 모드를 사용하면, 대응되는 가중치 행렬 도출 모드 및 2개의 인트라 예측 모드를 획득하기 위해 코드 스트림을 해석하여야 한다. 구체적인 디코딩 과정은 표 13에 표시된 바와 같다.
……
if ((SawpFlag) {
sawp_idx
intra_luma_pred_mode0
intra_luma_pred_mode1
}
……
공역 각도 가중 예측 모드 인덱스(sawp_idx)는, 공역 각도 가중 예측의 가중치 행렬을 결정하기 위한 것이고, Sawpidx의 값은 sawp_idx의 값과 동일하다. 비트 스트림에 sawp_idx가 존재하지 않으면, Sawpidx의 값은 0과 동일하다.공역 각도 가중 예측 제1 밝기 예측 모드(intra_luma_pred_mode0)는 공역 각도 가중 예측의 밝기 블록의 제1 인트라 예측 모드(IntraLumaPredMode0)를 결정하기 위한 것이고; 공역 각도 가중 예측 제2 밝기 예측 모드(intra_luma_pred_mode1)는, 공역 각도 가중 예측의 밝기 블록의 제2 인트라 예측 모드(IntraLumaPredMode1)를 결정하기 위한 것이다.intra_luma_pred_mode1의 값이 0이면, 제2 인트라 예측 모드(IntraLumaPredMode1)는 DC 모드(“Intra_Luma_DC”)이고, intra_luma_pred_mode1의 값이 1이면, 제2 인트라 예측 모드(IntraLumaPredMode1)는 Bilinear 모드(“Intra_Luma_Bilinear”)이다.
Intra_luma_pred_mode0 및 intra_luma_pred_mode1에 따라 제1 인트라 예측 모드(IntraLumaPredMode0) 및 제2 인트라 예측 모드(IntraLumaPredMode1)를 결정한다. 각각 제1 인트라 예측 모드(IntraLumaPredMode0) 및 제2 인트라 예측 모드(IntraLumaPredMode1)에 따라 인트라 예측 샘플 행렬(predMatrix0) 및 predMatrix1을 결정한다. SawpIdx에 따라 가중치 행렬(SawpWeightArrayY)을 결정한다.
두개의 인트라 예측 샘플 행렬(predMatrix0), (predMatrix1) 및 가중치 행렬(SawpWeightArrayY)에 따라 새로운 예측 샘플 행렬(predMatrixSawp)을 결정한다. 구체적인 방법은 아래와 같다.
공역 각도 가중 예측 모드의 예측 샘플 행렬(predMatrixSawp)에서의 요소(predMatrixSawp[x][y])의 값은 ((predMatrix0[x][y] * AwpWeightArrayY[x][y] + predMatrix1[x][y] * ( 8 - AwpWeightArrayY[x][y] ) + 4 ) >> 3)이다.
방식 3에 있어서, 제2 인트라 예측 모드는 전부 각도 예측 모드 또는 일부 각도 예측 모드만을 사용할 수 있다.
제2 인트라 예측 모드가 선택 가능한 인트라 예측 모드가 줄어들기 때문에, 코드 스트림에서 제2 인트라 예측 모드를 나타내는 intra_luma_pred_mode1의 비트수도 줄어든다. 예를 들어 AVS3에서 제2 인트라 예측 모드는 전부 각도 모드만을 사용할 수 있다. AVS3에는 DC, Plane, Bilinear 3가지 비각도 모드가 존재한다. 다시 말해 AVS3에서, 제2 인트라 예측 모드는 0, 1, 2 외의 다른 모드만 사용할 수 있다.
하나의 구체적인 실시예에 있어서, 제2 인트라 예측 모드는 비각도 예측 모드 외의 모든 다른 인트라 예측 모드(즉 모든 각도 예측 모드를 사용할 수 있음)를 사용할 수 있다.
하나의 구체적인 실시예에 있어서, 제2 인트라 예측 모드는 모든 각도 예측 모드에서의 일부를 사용할 수 있다. 여기서, 일부 각도 예측 모드는 이전 33가지 각도 예측 모드이거나, 일부 각도 예측 모드는 예측된 간격에 따라 33가지 각도 예측 모드 또는 65가지 각도 예측 모드에서 선택된 일부 각도 예측 모드일 수 있으며, 예를 들어, 상기 기설정된 간격은 1, 2 또는 다른 양의 정수일 수 있다.
표 3에 표시된 바와 같이, 밝기 예측 블록의 인트라 예측 모드의 하나의 예이고 여기서, 모드 번호(IntraLumaPredMode)는 상응한 인트라 예측 모드에 대응된다. 0은 DC 모드를 대표하고, 1은 Plane 모드를 대표하며, 2는 이중 선형 Bilinear 모드를 대표하고, 12는 수직 모드를 대표하며, 24는 수평 모드를 대표하고, 33은 PCM 모드를 대표하고, 나머지는 수평 수직 외의 각도 모드이고, 구체적인 모드 번호가 대표하는 각도는 도 7을 참조할 수 있다.
제2 인트라 예측 모드가 0, 1, 2 외의 다른 모드만 사용할 수 있는 것을 예로 들고, 제2 인트라 예측 모드가 선택 가능한 MPM 모드 리스트의 구축 과정을 제공한다.
각 인트라 예측 모드가 4개의 MPM을 사용할 수 있는 것을 예로 든다. 길이가 8인 모드 리스트를 구축할 수 있고, 여기서 AVS3에는 3개의 비각도 예측 모드만이 존재하므로 비각도 예측 모드의 개수는 3보다 작거나 같아야 한다. 여기서 이전의 4개의 MPM은 제1 인트라 예측 모드에 의해 선택될 수 있다. 제2 인트라 예측 모드는 MPM 리스트에서 비 제1 인트라 예측 모드거나 비각도 모드인 이전의 4개의 MPM을 선택할 수 있다.
도 16을 예로 들어 설명하면, 구축된 MPM 모드 리스트가 도에 도시된 바와 같다고 가정하면, 제1 인트라 예측 모드는 이전의 4개의 MPM에서 하나를 선택할 수 있고, 제1 인트라 예측 모드가 12를 사용한다고 가정하고, MPM 리스트에서의 첫 번째 MPM을 사용한다고 가정한다. 제2 인트라 예측 모드가 선택 가능한 MPM은 앞에서 뒤로 찾을 수 있고, 첫 번째 MPM(12)은 제1 인트라 예측 모드에 의해 사용되었기 때문에, 상기 첫 번째 MPM(12)은 사용하지 못한다. 두 번째 MPM(24)은 사용되지 않았고 사용 가능한 각도 모드이므로 사용할 수 있으며, 세 번째(0), 네 번째(2), 다섯 번째(1)에 대응되는 MPM은 사용되지 않았지만 비각도 모드이므로, 사용할 수 없다. 여섯 번째(6), 일곱 번째(8), 여덟 번째(10)의 MPM은 사용되고 사용 가능한 각도 모드이므로 사용할 수 있으며, 24, 6, 8, 10은 각각 제2 인트라 예측 모드 MPM 인덱스가 0, 1, 2, 3인 모드에 대응된다.
도 14에 도시된 블록을 예로 들면, MPM 리스트를 구축하는 예를 제공한다.
MPM 모드 리스트의 제1 부분의 리스트 길이를 8로 설정한다.
현재 블록은 E이고, F, G, C, A, B, D에 의해 사용되는 인트라 예측 모드를 MPM 모드가 충만될 때까지 순차적으로 MPM 모드 리스트에 삽입한다. F, G, C, A, B, D 중 특정된 위치에서 인트라 예측 모드를 사용하지 못하거나 사용하지 않으면 상기 위치를 건너뛴다. 여기서, 본 출원에서, 도 14에 도시된 블록에 대응되는 인트라 예측 모드를 사용할 수 있는 외에, 다른 블록에 대응되는 인트라 예측 모드를 사용할 수도 있으며, 예를 들어, 현재 블록의 우측 또는 아래측 블록에 대응되는 인트라 예측 모드를 사용할 수도 있다.
더 나아가, MPM 모드 리스트가 충만되지 않으면, 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드를 MPM 모드 리스트가 충만될 때까지 MPM 모드 리스트에 삽입한다.
MPM 모드 리스트가 충만되지 않으면, DC 모드, Bilinear 모드를 MPM 모드 리스트가 충만될 때까지 순차적으로 MPM 모드 리스트에 삽입한다.
MPM 모드 리스트가 충만되지 않으면, MPM 모드 리스트에서의 첫 번째 인트라 예측 모드로부터 시작하여, 상기 인트라 예측 모드와 1, -1, 2, -2, 3, -3이 차이 나는 인트라 예측 모드를 MPM 모드 리스트가 충만될 때까지 MPM 모드 리스트에 삽입한다. 1, -1, 2, -2, 3, -3이 차이나는 인트라 예측 모드에서의 특정된 인트라 예측 모드가 불법이고, 0보다 작거나 최대값보다 크거나, PCM이면 인트라 예측 모드를 버린다.
MPM 모드 리스트의 첫 번째 인트라 예측 모드의 모드 번호가 두 번째 인트라 예측 모드의 모드 번호보다 크면, 이 두개의 MPM을 교환한다.
MPM 모드 리스트를 삽입하는 조작에 있어서, 각 삽입될 인트라 예측 모드가 MPM 모드 리스트에서 기존의 인트라 예측 모드와 모두 상이해야만 MPM 모드 리스트에 삽입될 수 있고, 그렇지 않을 경우 버린다.
본 실시예에 있어서, 밝기 예측에 적용되는 것을 예로 들어 추가로 설명한다. 현재 블록(CU)이 SAWP 예측 모드를 사용하면, 대응되는 가중치 행렬 도출 모드 및 2개의 인트라 예측 모드를 획득하기 위해 코드 스트림을 해석하여야 한다. 구체적인 디코딩 과정은 표 14에 표시된 바와 같다.
……
if ((SawpFlag) {
sawp_idx
intra_luma_pred_mode0
intra_luma_pred_mode1
}
……
공역 각도 가중 예측 모드 인덱스(sawp_idx)는, 공역 각도 가중 예측의 가중치 행렬을 결정하기 위한 것이고, Sawpidx의 값은 sawp_idx의 값과 동일하다. 비트 스트림에 sawp_idx가 존재하지 않으면, Sawpidx의 값은 0과 동일하다.공역 각도 가중 예측 제1 밝기 예측 모드(intra_luma_pred_mode0)는, 공역 각도 가중 예측의 밝기 블록의 제1 인트라 예측 모드(IntraLumaPredMode0)를 결정하기 위한 것이다.공역 각도 가중 예측 제2 밝기 예측 모드(intra_luma_pred_mode1)는, 공역 각도 가중 예측의 밝기 블록의 제2 인트라 예측 모드(IntraLumaPredMode1)를 결정하기 위한 것이다.
각각 intra_luma_pred_mode0 및 intra_luma_pred_mode1에 따라 제1 인트라 예측 모드(IntraLumaPredMode0) 및 제2 인트라 예측 모드(IntraLumaPredMode1)를 결정하고, 상기 과정은 위에서 전술한 방법을 사용한다. 각각 제1 인트라 예측 모드(IntraLumaPredMode0) 및 제2 인트라 예측 모드(IntraLumaPredMode1)에 따라 인트라 예측 샘플 행렬(predMatrix0) 및 predMatrix1을 결정한다. SawpIdx에 따라 가중치 행렬(SawpWeightArrayY)을 결정한다.
두개의 인트라 예측 샘플 행렬(predMatrix0), (predMatrix1) 및 가중치 행렬(SawpWeightArrayY)에 따라 새로운 예측 샘플 행렬(predMatrixSawp)을 결정한다.
구체적인 방법은 아래와 같다.
공역 각도 가중 예측 모드의 예측 샘플 행렬(predMatrixSawp)에서의 요소(predMatrixSawp[x][y])의 값은 ((predMatrix0[x][y] * AwpWeightArrayY[x][y] + predMatrix1[x][y] * ( 8 - AwpWeightArrayY[x][y] ) + 4 ) >> 3)이다.
상기 모든 제2 인트라 예측 모드가 선택 가능한 인트라 예측 모드에 대해 제한하는 과정에 있어서, 도출되거나 결정된 제2 인트라 예측 모드가 불법 모드이면, 기설정된 대응 관계에 따라 수정해야 하고, 제2 인트라 예측 모드를 합법적인 모드로 수정해야 한다. 구체적으로, 제2 인트라 예측 모드를 각도 예측 모드로 한정한 경우, 얻은 제2 인트라 예측 모드가 0, 1, 2인 모드이면, 불법 모드(즉 사용할 수 없는 비각도 예측 모드를 한정함)가 나타나는 것을 방지하기 위해, 기설정된 대응 관계에 따라 하나 또는 여러가지 사용 가능한 각도 모드에 대응해야 한다. 예를 들어, 제2 인트라 예측 모드가 디코딩하여 0 모드를 얻으면, 기설정된 대응 관계에 따라 제2 인트라 예측 모드를 12 모드로 설정하고 즉 수직 모드로 설정하며, 제2 인트라 예측 모드가 디코딩하여 1 모드를 얻으면, 기설정된 대응 관계에 따라 제2 인트라 예측 모드를 18 모드로 설정하며, 즉 오른쪽 아래 45도의 모드로 설정하며; 제2 인트라 예측 모드가 디코딩하여 2 모드를 얻으면, 기설정된 대응 관계에 따라 제2 인트라 예측 모드를 24 모드로 설정하고 즉 수평 모드로 설정한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 인트라 예측 모드의 개수에 대해 제한을 수행하는 경우, 전부 예측 블록의 인트라 예측 모드의 개수에 대해 직접 제한 처리를 실행할 수 있을 뿐만 아니라, 또한 현재 블록의 크기 파라미터를 참조하여, 상이한 크기의 현재 블록에 대해 상이한 제한 방식을 사용할 수 있다.
예시적으로, 본 출원에 있어서, 64×64 또는 32×32 크기와 같은 크기 파라미터가 비교적 큰 예측 블록의 경우, 전부 인트라 예측 모드를 사용하여 현재 블록의 두개의 인트라 예측 모드를 결정할 수 있고, 8x8 크기와 같은 예측 블록 크기 파라미터가 비교적 작은 예측 블록의 경우, 일부 인트라 예측 모드를 사용하여 현재 블록의 두개의 인트라 예측 모드를 결정할 수 있으며, 즉 현재 블록이 사용 가능한 인트라 예측 모드의 개수에 대해 제한할 수 있으며, 이는 크기 파라미터가 비교적 작은 예측 블록의 경우, 미세한 각도의 차이가 미치는 영향은 명확하지 않기 때문이다.
이해할 수 있는 것은, 본 출원에 있어서, 먼저 제2 크기 임계값 같은 하나의 크기 임계값을 설정할 수 있고, 현재 블록의 크기 파라미터가 제2 크기 임계값보다 작으면, 미세한 각도의 차이는 비교적 큰 영향을 미치지 않는 것으로 간주할 수 있으며, 따라서 현재 블록이 선택할 수 있는 인트라 예측 모드의 개수를 제한할 수 있다. 구체적으로, 현재 블록의 두개의 인트라 예측 모드의 인덱스 번호에 대해 제한하는 것을 통해, 인트라 예측 모드의 개수에 대한 제한을 구현할 수 있다.
예시적으로, 본 출원에 있어서, 현재 블록의 크기 파라미터가 제2 크기 임계값보다 작으면, 제2 모드 인덱스 범위에 따라 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정할 수 있고; 여기서, 상기 제2 모드 인덱스 범위는 인트라 예측 모드의 인덱스 번호에 대해 제한하기 위한 것이다. 구체적으로, 제2 모드 인덱스 범위는 제2 하한 임계값 및 제2 상한 임계값을 포함할 수 있고, 먼저 상기 제1 인트라 예측 모드의 제1 인덱스 번호를 결정할 수 있고, 동시에 상기 제2 인트라 예측 모드의 제2 인덱스 번호를 결정할 수 있으며; 다음 상기 제1 인덱스 번호 및 상기 제2 인덱스 번호를 모두 상기 제2 하한 임계값보다 크게 설정하고; 상기 제1 인덱스 번호 및 상기 제2 인덱스 번호를 모두 상기 제2 상한 임계값보다 작게 설정한다.
다시 말해, 본 출원에서, 제2 모드 인덱스 범위를 통해 현재 블록의 제1 인트라 예측 모드의 인덱스 번호 및 제2 인트라 예측 모드의 인덱스 번호를 제한할 수 있음으로써, 인트라 예측 모드 개수에 대한 제한을 완료한다.
예를 들어, AVS3에 있어서, 제2 모드 인덱스 범위는 0 내지 32일 수 있고, 즉 제2 모드 인덱스 범위를 통해 제1 인트라 예측 모드의 인덱스 번호 및 제2 인트라 예측 모드의 인덱스 번호를 0 내지 32 내에 제한할 수 있고, 따라서 현재 블록은 이전 33가지 예측 모드를 사용하는 것을 통해 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정할 수 있다.
이해할 수 있는 것은, 본 출원에 있어서, 제1 크기 임계값과 제2 크기 임계값은 동일하거나 상이할 수 있고; 제1 모드 인덱스 범위와 제2 모드 인덱스 범위는 동일하거나 상이할 수 있다.
더 나아가, 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 선택 가능한 인트라 예측 모드에 대해 모두 한정하지 않는 경우, 결정된 두개의 인트라 예측 모드의 예측 능력은 대응되고, 대응되는 가중치 행렬에 대해 처리를 수행할 필요가 없다. 그러나, 선택 가능한 인트라 예측 모드에 대해 한정한 이후, 2개의 인트라 예측 모드의 예측 능력은 변화가 생겼으므로, 상응하게 가중치 행렬도 조정해야 한다.
구체적으로, 도 2에 도시된 AWP 가중치 행렬에 있어서, 번호가 0인 오른쪽 하단 모서리 흰색 영역은 완전히 제1 인트라 예측 모드로부터 온 것이고, 왼쪽 상단 모서리 검은색 부분은 제2 인트라 예측 모드로부터 온 것이며, 회색 부분은 두가지 인트라 예측 모드를 가중하여 얻은 것이다. 왼쪽 상단 모서리가 DC 모드 예측을 사용하고, 오른쪽 하단 모서리가 수평 모드 예측을 사용하려면, 제1 인트라 예측 모드를 수평 모드로 설정하고, 제2 인트라 예측 모드를 DC 모드로 설정할 수 있다. 반대로, 왼쪽 상단 모서리가 수평 모드 예측을 사용하고, 오른쪽 하단 모서리가 DC 모드 예측을 사용하려면, 제1 인트라 예측 모드를 DC 모드로 설정하고, 제2 인트라 예측 모드를 수평 모드로 설정할 수 있다. 제2 인트라 예측 모드가 각도 모드만 사용할 수 있는 것과 같이 인트라 예측 모드 중 특정된 하나가 제한된 경우, 기존의 방법에 따르면, AWP 가중치 행렬이 0인 경우, 제2 인트라 예측 모드가 DC 모드를 사용할 수 없기 때문에 왼쪽 상단 모서리가 DC 모드 예측을 사용하는 것을 구현할 수 없다. 제2 인트라 예측 모드가 DC 모드만 사용할 수 있는 것과 같이 인트라 예측 모드 중 특정된 하나가 제한된 경우, 기존의 방법에 따르면, 상기 AWP 가중치 행렬에서 검은색 부분은 DC 모드 예측에 의해서만 얻는다. 다시 말해, 제2 인트라 예측 모드에 대한 제한은 예측 효과에 대해 명확하게 영향을 미친다.
따라서, 본 출원에 있어서, 일부 경우, 가중치 행렬에 대해 조정을 수행해야 하고, 즉 제1 인트라 예측 모드에 대응되는 가중치 행렬과 제2 인트라 예측 모드에 대응되는 가중치 행렬에 대해 스왑을 수행해야 한다.
방식 1에 있어서, 하나의 가중치 행렬 스왑 플래그를 증가하고, 이 플래그는 두개의 예측 블록의 가중치 행렬을 스왑할지 여부를 지시하고, 디코딩을 수행하는 과정에서 가중치 행렬을 스왑해야 하는지 여부를 결정하기 위해 코드 스트림을 해석하는 것을 통해 상기 플래그를 획득한다.
본 실시예에 있어서, 밝기 예측에 적용되는 것을 예로 들어 추가로 설명한다. 현재 블록(CU)이 SAWP 예측 모드를 사용하면, 대응되는 가중치 행렬 도출 모드 및 2개의 인트라 예측 모드를 획득하기 위해 코드 스트림을 해석하여야 한다.
구체적인 디코딩 과정은 표 15에 표시된 바와 같다.
……
if ((SawpFlag) {
sawp_idx
intra_luma_pred_mode0
intra_luma_pred_mode1
switch_flag
}
……
공역 각도 가중 예측 모드 인덱스(sawp_idx)는, 공역 각도 가중 예측의 가중치 행렬을 결정하기 위한 것이고, Sawpidx의 값은 sawp_idx의 값과 동일하다. 비트 스트림에 sawp_idx가 존재하지 않으면, Sawpidx의 값은 0과 동일하다.공역 각도 가중 예측 제1 밝기 예측 모드(intra_luma_pred_mode0)는, 공역 각도 가중 예측의 밝기 블록의 제1 인트라 예측 모드(IntraLumaPredMode0)를 결정하기 위한 것이다.공역 각도 가중 예측 제2 밝기 예측 모드(intra_luma_pred_mode1)는, 공역 각도 가중 예측의 밝기 블록의 제2 인트라 예측 모드(IntraLumaPredMode1)를 결정하기 위한 것이다.
공역 각도 가중 예측 스위치 플래그(switch_flag)의 경우, SwitchFlag의 값은 switch_flag의 값과 동일하다.
Intra_luma_pred_mode0 및 intra_luma_pred_mode1에 따라 제1 인트라 예측 모드(IntraLumaPredMode0) 및 제2 인트라 예측 모드(IntraLumaPredMode1)를 결정한다. 각각 제1 인트라 예측 모드(IntraLumaPredMode0) 및 제2 인트라 예측 모드(IntraLumaPredMode1)에 따라 인트라 예측 샘플 행렬(predMatrix0) 및 predMatrix1을 결정한다. SawpIdx에 따라 가중치 행렬(SawpWeightArrayY)을 결정한다.
두개의 인트라 예측 샘플 행렬(predMatrix0), (predMatrix1) 및 가중치 행렬(SawpWeightArrayY)에 따라 새로운 예측 샘플 행렬(predMatrixSawp)을 결정한다. 구체적인 방법은 아래와 같다.
SwitchFlag의 값이 0이면,
공역 각도 가중 예측 모드의 예측 샘플 행렬(predMatrixSawp)에서의 요소(predMatrixSawp[x][y])의 값은 ((predMatrix0[x][y] * AwpWeightArrayY[x][y] + predMatrix1[x][y] * ( 8 - AwpWeightArrayY[x][y] ) + 4 ) >> 3)이다.
그렇지 않을 경우, 즉 SwitchFlag의 값은 1이고,
공역 각도 가중 예측 모드의 예측 샘플 행렬(predMatrixSawp)에서의 요소(predMatrixSawp[x][y])의 값은 ((predMatrix1[x][y] * AwpWeightArrayY[x][y] + predMatrix0[x][y] * ( 8 - AwpWeightArrayY[x][y] ) + 4 ) >> 3)이다.
방식 2에 있어서, 가중치 행렬에 따라 두개의 예측 블록의 가중치를 스왑할지 여부를 결정한다.
구체적으로, 제1 인트라 예측 모드가 선택 가능한 인트라 예측 모드에 대해 한정하지 않는 경우, 제1 인트라 예측 모드가 선택 가능한 인트라 예측 모드가 비교적 많고, 예측 능력이 강하며, 제2 인트라 예측 모드는 선택 가능한 인트라 예측 모드에 대해 제한하였기 때문에, 사용 가능한 선택이 적고, 예측 능력이 약하며, 가중치 행렬에 따라 자동으로 가중치를 할당할 수 있다. 할당 결과에 따르면 최종 예측 블록에서는, 제1 인트라 예측 모드의 영향을 받는 포인트가 비교적 많고, 제2 인트라 예측 모드의 영향을 받는 포인트가 비교적 적다.
본 실시예에 있어서, 밝기 예측에 적용되는 것을 예로 들어 추가로 설명한다. 현재 블록(CU)이 SAWP 예측 모드를 사용하면, 대응되는 가중치 행렬 도출 모드 및 2개의 인트라 예측 모드를 획득하기 위해 코드 스트림을 해석하여야 한다.
구체적인 디코딩 과정은 표 16에 표시된 바와 같다.
……
if ((SawpFlag) {
sawp_idx
intra_luma_pred_mode0
intra_luma_pred_mode1
}
……
공역 각도 가중 예측 모드 인덱스(sawp_idx)는, 공역 각도 가중 예측의 가중치 행렬을 결정하기 위한 것이고, Sawpidx의 값은 sawp_idx의 값과 동일하다. 비트 스트림에 sawp_idx가 존재하지 않으면, Sawpidx의 값은 0과 동일하다.공역 각도 가중 예측 제1 밝기 예측 모드(intra_luma_pred_mode0)는, 공역 각도 가중 예측의 밝기 블록의 제1 인트라 예측 모드(IntraLumaPredMode0)를 결정하기 위한 것이다.공역 각도 가중 예측 제2 밝기 예측 모드(intra_luma_pred_mode1)는, 공역 각도 가중 예측의 밝기 블록의 제2 인트라 예측 모드(IntraLumaPredMode1)를 결정하기 위한 것이다.
Intra_luma_pred_mode0 및 intra_luma_pred_mode1에 따라 제1 인트라 예측 모드(IntraLumaPredMode0) 및 제2 인트라 예측 모드(IntraLumaPredMode1)를 결정한다. 각각 제1 인트라 예측 모드(IntraLumaPredMode0) 및 제2 인트라 예측 모드(IntraLumaPredMode1)에 따라 인트라 예측 샘플 행렬(predMatrix0) 및 predMatrix1을 결정한다. SawpIdx에 따라 가중치 행렬(SawpWeightArrayY)을 결정한다.
두개의 인트라 예측 샘플 행렬(predMatrix0), (predMatrix1) 및 가중치 행렬(SawpWeightArrayY)에 따라 새로운 예측 샘플 행렬(predMatrixSawp)을 결정한다. 구체적인 방법은 아래와 같다.
SawpIdx가 제1 집합에 속하면,
공역 각도 가중 예측 모드의 예측 샘플 행렬(predMatrixSawp)에서의 요소(predMatrixSawp[x][y])의 값은 ((predMatrix0[x][y] * AwpWeightArrayY[x][y] + predMatrix1[x][y] * ( 8 - AwpWeightArrayY[x][y] ) + 4 ) >> 3)이다.
그렇지 않을 경우, 즉 SawpIdx는 제2 집합에 속하고,
공역 각도 가중 예측 모드의 예측 샘플 행렬(predMatrixSawp)에서의 요소(predMatrixSawp[x][y])의 값은 ((predMatrix1[x][y] * AwpWeightArrayY[x][y] + predMatrix0[x][y] * ( 8 - AwpWeightArrayY[x][y] ) + 4 ) >> 3)이다.
여기서 제1 집합은 0 내지 27을 포함한다. 제2 집합은 28 내지 55를 포함한다.
방식 3에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드 중 적어도 하나의 모드 번호에 따라 두개의 예측 블록의 가중치를 스왑할지 여부를 결정한다.
인접한 각도 예측 모드에서 사용되는 예측 각도는 논리적으로 일정한 차이가 있기 때문에, 보간 필터링 영향 및 블록 크기, 특히 비교적 작은 블록에서, 인접한 각도 예측 모드에 의해 만들어진 예측 블록 차이는 특별히 크지 않다. 따라서, 두개의 예측 블록의 가중치를 스왑할지 여부에 대한 논리는 인트라 예측 모드의 모드 번호에 설정되고, 예를 들어 특정된 인트라 예측 모드(제1 인트라 예측 모드 또는 제2 인트라 예측 모드)가 짝수 번호의 각도 예측 모드를 사용하여 두개의 예측 블록의 가중치를 스왑하지 않음을 표시하고, 상기 인트라 예측 모드는 홀수 번호의 각도 예측 모드를 사용하여 두개의 예측 블록의 가중치를 스왑함을 표시한다.
예 1에 있어서,
제2 인트라 예측 모드에 대해 하나 또는 복수 개의 비각도 모드만을 사용할 수 있는 경우, 여기서 제2 인트라 예측 모드가 DC 모드만을 사용할 수 있는 것을 예로 들면, 제1 인트라 예측 모드의 모드 번호의 패리티를 사용하여 두개의 예측 블록의 가중치를 스왑하는지 여부를 판단할 수 있다. 제1 인트라 예측 모드의 모드 번호가 짝수이면, 두개의 예측 블록의 가중치는 스왑하지 않고, 그렇지 않을 경우(제1 인트라 예측 모드의 모드 번호는 홀수임) 두개의 예측 블록의 가중치를 스왑한다.
본 실시예에 있어서, 밝기 예측에 적용되는 것을 예로 들어 추가로 설명한다. 현재 블록(CU)이 SAWP 예측 모드를 사용하면, 대응되는 가중치 행렬 도출 모드 및 제1 인트라 예측 모드를 획득하기 위해 코드 스트림을 해석하여야 한다. 더 나아가, 제2 인트라 예측 모드가 한가지 선택 가능한 인트라 예측 모드만을 구비하면, 제2 인트라 예측 모드를 기설정된 인트라 예측 모드로 디폴트로 도출할 수 있다.
구체적인 디코딩 과정은 표 17에 표시된 바와 같다.
……
if ((SawpFlag) {
sawp_idx
intra_luma_pred_mode0
}
……
공역 각도 가중 예측 모드 인덱스(sawp_idx)는, 공역 각도 가중 예측의 가중치 행렬을 결정하기 위한 것이고, Sawpidx의 값은 sawp_idx의 값과 동일하다. 비트 스트림에 sawp_idx가 존재하지 않으면, Sawpidx의 값은 0과 동일하다.공역 각도 가중 예측 제1 밝기 예측 모드(intra_luma_pred_mode0)는, 공역 각도 가중 예측의 밝기 블록의 제1 인트라 예측 모드(IntraLumaPredMode0)를 결정하기 위한 것이다.Intra_luma_pred_mode0에 따라 제1 인트라 예측 모드(IntraLumaPredMode0)를 결정한다. 제2 인트라 예측 모드(IntraLumaPredMode1)를 디폴트로 도출한다. 각각 제1 인트라 예측 모드(IntraLumaPredMode0) 및 제2 인트라 예측 모드(IntraLumaPredMode1)에 따라 인트라 예측 샘플 행렬(predMatrix0) 및 predMatrix1을 결정한다. SawpIdx에 따라 가중치 행렬(SawpWeightArrayY)을 결정한다.
두개의 인트라 예측 샘플 행렬(predMatrix0), (predMatrix1) 및 가중치 행렬(SawpWeightArrayY)에 따라 새로운 예측 샘플 행렬(predMatrixSawp)을 결정한다. 구체적인 방법은 아래와 같다.
IntraLumaPredMode0이 짝수이면, 공역 각도 가중 예측 모드의 예측 샘플 행렬(predMatrixSawp)에서의 요소(predMatrixSawp[x][y])의 값은 ((predMatrix0[x][y] * AwpWeightArrayY[x][y] + predMatrix1[x][y] * ( 8 - AwpWeightArrayY[x][y] ) + 4 ) >> 3)이다.
그렇지 않을 경우, 즉 IntraLumaPredMode0이 홀수이면, 공역 각도 가중 예측 모드의 예측 샘플 행렬(predMatrixSawp)에서의 요소(predMatrixSawp[x][y])의 값은 ((predMatrix1[x][y] * AwpWeightArrayY[x][y] + predMatrix0[x][y] * ( 8 - AwpWeightArrayY[x][y] ) + 4 ) >> 3)이다.
예 2에 있어서,
제2 인트라 예측 모드에 대해 비각도 모드만을 사용할 수 있는 경우, 제1 인트라 예측 모드 또는 제2 인트라 예측 모드의 모드 번호의 패리티를 사용하여 두개의 예측 블록의 가중치 행렬을 스왑하는지 여부를 판단할 수 있다. 예를 들어, 제2 인트라 예측 모드의 모드 번호가 짝수이면, 두개의 예측 블록의 가중치 행렬은 스왑하지 않고, 그렇지 않을 경우(제2 인트라 예측 모드의 모드 번호는 홀수임) 두개의 예측 블록의 가중치 행렬을 스왑한다.
본 실시예에 있어서, 밝기 예측에 적용되는 것을 예로 들어 추가로 설명한다. 현재 블록(CU)이 SAWP 예측 모드를 사용하면, 대응되는 가중치 행렬 도출 모드 및 2개의 인트라 예측 모드를 획득하기 위해 코드 스트림을 해석하여야 한다.
구체적인 디코딩 과정은 표 18에 표시된 바와 같다.
……
if ((SawpFlag) {
sawp_idx
intra_luma_pred_mode0
intra_luma_pred_mode1
}
……
공역 각도 가중 예측 모드 인덱스(sawp_idx)는, 공역 각도 가중 예측의 가중치 행렬을 결정하기 위한 것이고, Sawpidx의 값은 sawp_idx의 값과 동일하다. 비트 스트림에 sawp_idx가 존재하지 않으면, Sawpidx의 값은 0과 동일하다.공역 각도 가중 예측 제1 밝기 예측 모드(intra_luma_pred_mode0)는, 공역 각도 가중 예측의 밝기 블록의 제1 인트라 예측 모드(IntraLumaPredMode0)를 결정하기 위한 것이다.공역 각도 가중 예측 제2 밝기 예측 모드(intra_luma_pred_mode1)는, 공역 각도 가중 예측의 밝기 블록의 제2 인트라 예측 모드(IntraLumaPredMode1)를 결정하기 위한 것이다.
Intra_luma_pred_mode0 및 intra_luma_pred_mode1에 따라 제1 인트라 예측 모드(IntraLumaPredMode0) 및 제2 인트라 예측 모드(IntraLumaPredMode1)를 결정한다. 각각 제1 인트라 예측 모드(IntraLumaPredMode0) 및 제2 인트라 예측 모드(IntraLumaPredMode1)에 따라 인트라 예측 샘플 행렬(predMatrix0) 및 predMatrix1을 결정한다. SawpIdx에 따라 가중치 행렬(SawpWeightArrayY)을 결정한다.
두개의 인트라 예측 샘플 행렬(predMatrix0), (predMatrix1) 및 가중치 행렬(SawpWeightArrayY)에 따라 새로운 예측 샘플 행렬(predMatrixSawp)을 결정한다. 구체적인 방법은 아래와 같다.
IntraLumaPredMode1이 짝수이면, 공역 각도 가중 예측 모드의 예측 샘플 행렬(predMatrixSawp)에서의 요소(predMatrixSawp[x][y])의 값은 ((predMatrix0[x][y] * AwpWeightArrayY[x][y] + predMatrix1[x][y] * ( 8 - AwpWeightArrayY[x][y] ) + 4 ) >> 3)이다.
그렇지 않을 경우, 즉 IntraLumaPredMode1이 홀수이면, 공역 각도 가중 예측 모드의 예측 샘플 행렬(predMatrixSawp)에서의 요소(predMatrixSawp[x][y])의 값은 ((predMatrix1[x][y] * AwpWeightArrayY[x][y] + predMatrix0[x][y] * ( 8 - AwpWeightArrayY[x][y] ) + 4 ) >> 3)이다.
선택적으로, 본 출원에 있어서, 현재 블록이 사용 가능한 가중치 행렬 도출 모드 개수를 줄이는 것을 통해 가중치 행렬 도출 모드의 오버헤드를 저하시킬 수 있다. 예를 들어, AVS3에 있어서, 56가지 가중치 행렬 도출 모드를 사용하면, 하나의 가중치 행렬 도출 모드를 디코딩하기 위해 최대로 6개의 비트가 필요하고, 32가지 가중치 행렬 도출 모드만을 사용하면, 하나의 가중치 행렬 도출 모드를 디코딩하기 위해 최대로 5개의 비트가 필요하다. 더 나아가, 또한 현재 블록이 사용 가능한 가중치 행렬 도출 모드의 개수에 대해 추가로 압축 및 제한(더 적은 플래그로 어떠한 가중치 행렬을 선택할지를 식별하거나 가중치 행렬 도출 모드를 식별)할 수 있고, 예를 들어 16가지 가중치 행렬 도출 모드만을 사용하면, 최종적으로 4개의 비트만을 사용하여 코딩을 수행하는 것을 구현함으로써, 추가로 오버헤드를 줄임으로써, 더 나은 성능을 달성할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 가중치 행렬 도출 모드의 개수에 대해 제한을 수행하는 경우, 전부 예측 블록의 가중치 행렬 도출 모드의 개수에 대해 직접 제한 처리를 실행할 수 있을 뿐만 아니라, 또한 현재 블록의 크기 파라미터를 참조하여, 상이한 크기의 현재 블록에 대해 상이한 제한 방식을 사용할 수 있다.
예시적으로, 본 출원에 있어서, 64×64 또는 32×32 크기와 같은 크기 파라미터가 비교적 큰 예측 블록의 경우, 전부 가중치 행렬 도출 모드를 사용하여 현재 블록의 가중치 행렬 도출 모드를 결정할 수 있고, 8x8 크기와 같은 예측 블록 크기 파라미터가 비교적 작은 예측 블록의 경우, 일부 가중치 행렬 도출 모드를 사용하여 현재 블록의 가중치 행렬 도출 모드를 결정할 수 있으며, 즉 현재 블록이 사용 가능한 가중치 행렬 도출 모드의 개수에 대해 제한할 수 있으며, 이는 크기 파라미터가 비교적 작은 예측 블록의 경우, 미세한 각도의 차이가 미치는 영향은 명확하지 않기 때문이다.
이해할 수 있는 것은, 본 출원에 있어서, 먼저 제1 크기 임계값 같은 하나의 크기 임계값을 설정할 수 있고, 현재 블록의 크기 파라미터가 제1 크기 임계값보다 작으면, 미세한 각도의 차이는 비교적 큰 영향을 미치지 않는 것으로 간주할 수 있으며, 따라서 현재 블록이 선택할 수 있는 가중치 행렬 도출 모드의 개수를 제한할 수 있다. 구체적으로, 현재 블록의 가중치 행렬 도출 모드의 인덱스 번호에 대해 제한하는 것을 통해, 가중치 행렬 도출 모드의 개수에 대한 제한을 구현할 수 있다.
예시적으로, 본 출원에 있어서, 현재 블록의 크기 파라미터가 제1 크기 임계값보다 작으면, 제1 모드 인덱스 범위에 따라 가중치 행렬 도출 모드를 결정할 수 있고; 여기서, 제1 모드 인덱스 범위는 가중치 행렬 도출 모드의 인덱스 번호에 대해 제한하기 위한 것이다. 구체적으로, 제1 모드 인덱스 범위는 제1 하한 임계값 및 제1 상한 임계값을 포함할 수 있고, 가중치 행렬 도출 모드의 인덱스 번호를 각각 제1 하한 임계값 및 제1 상한 임계값과 비교할 수 있고, 가중치 행렬 도출 모드의 인덱스 번호가 제1 하한 임계값보다 작으면, 가중치 행렬 도출 모드의 인덱스 번호를 제1 하한 임계값으로 설정할 수 있고; 가중치 행렬 도출 모드의 인덱스 번호가 제1 상한 임계값보다 크면, 가중치 행렬 도출 모드의 인덱스 번호를 제1 상한 임계값으로 설정할 수 있다.
다시 말해, 본 출원에서, 제1 모드 인덱스 범위를 통해 현재 블록의 가중치 행렬 도출 모드의 인덱스 번호를 제한할 수 있음으로써, 가중치 행렬 도출 모드 개수에 대한 제한을 완료한다.
예를 들어, AVS3에 있어서, 제1 모드 인덱스 범위는 0 내지 32일 수 있고, 즉 제1 모드 인덱스 범위를 통해 가중치 행렬 도출 모드의 인덱스 번호를 0 내지 32 내에 제한할 수 있고, 따라서 현재 블록은 이전 33가지 가중치 행렬 도출 모드를 사용하는 것을 통해 현재 블록의 가중치 행렬 도출 모드를 결정할 수 있다.
예 1에 있어서,
AWP가 사용 가능한 가중치 행렬은 번호 0 내지 55에 대응되는 가중치 행렬을 포함하고, 구체적으로 도 2에 도시된 바와 같다. 본 출원에서, SAWP에서 32가지 가중치 행렬만을 사용하고, 즉 SAWP가 사용 가능한 가중치 행렬은 AWP의 가중치 행렬의 0 내지 7, 16 내지 23, 32 내지 39, 48 내지 55개의 가중치 행렬(도 2에서 대응되는 번호에 대응되는 가중치 행렬)에 대응된다. 즉 SAWP의 가중치 행렬 0 내지 7은 AWP의 가중치 행렬 0 내지 7에 대응되고, SAWP의 가중치 행렬 8 내지 15는 AWP의 가중치 행렬 16 내지 23에 대응되고, SAWP의 가중치 행렬 16 내지 23은 AWP의 가중치 행렬 32 내지 39에 대응되며, SAWP의 가중치 행렬 24 내지 31은 AWP의 가중치 행렬 48 내지 55에 대응되며, 이 32가지 가중치 행렬이 동일한 확률이라고 가정하면, 5개 비트의 플래그 sawp_idx가 필요하다.
상기 예는 각도 가중 예측 모드(AWP) 및 공역 각도 가중 예측 모드(SAWP)의 가중치 행렬의 도출과 관련된 설명을 제공한다.
M 및 N은 현재 예측 유닛(PU)의 너비 및 높이로 기록되고, 가중치 행렬의 도출 방법은 아래와 같다.
(1) stepIdx, angleIdx 및 subAngleIdx를 도출하고,
각도 가중 예측 모드(AWP)의 가중치 행렬을 도출해야 하는 경우, AwpIdx가 입력되어야 하고, 즉,
stepIdx = (AwpIdx >> 3) - 3,
modAngNum = AwpIdx % 8;
그렇지 않을 경우 공역 각도 가중 예측 모드(SAWP)의 가중치 행렬을 도출해야 하는 경우, SawpIdx가 입력되어야 하고, 즉,
stepIdx = ((SawpIdx >> 3) << 1) - 3,
modAngNum = SawpIdx % 8.
더 나아가, subAngleIdx의 도출 과정은 아래 표 19에 표시된 바와 같다.
if (modAngNum == 2) {
angleIdx = 7
}
else if (modAngNum == 6) {
angleIdx = 8
}
else {
angleIdx = modAngNum % 2
}
subAngleIdx = modAngNum >> 1
(2) 참조 가중치 리스트(ReferenceWeight[x])를 도출하는 과정은 아래 표 20에 표시된 바와 같다.
ValidLength_W = (M + (N >> angleIdx)) << 1
ValidLength_H = (N + (M >> angleIdx)) << 1
DeltaPos_W = stepIdx * ((ValidLength_W >> 3) - 1)
DeltaPos_H = stepIdx * ((ValidLength_H >> 3) - 1)
if (subAngleIdx == 0) {
if (PhAwpRefineFlag == 0) {
FirstPos = (ValidLength_H >> 1) - 6 + DeltaPos_H
for (x=0; x<ValidLength_H; x++) {
ReferenceWeights[x] = Clip3(0, 8, x - FirstPos)
}
}
else {
FirstPos = (ValidLength_H >> 1) - 3 + DeltaPos_H
for (x=0; x<ValidLength_H; x++) {
ReferenceWeights[x] = Clip3(0, 8, (x - FirstPos) << 1)
}
}
}
else if (subAngleIdx == 1) {
if (PhAwpRefineFlag == 0) {
FirstPos = (ValidLength_H >> 1) - 4 + DeltaPos_H - ((M << 1) >> angleIdx)
for (x=0; x<ValidLength_H; x++) {
ReferenceWeights[x] = Clip3(0, 8, x - FirstPos)
}
}
else {
FirstPos = (ValidLength_H >> 1) - 1 + DeltaPos_H - ((M << 1) >> angleIdx)
for (x=0; x<ValidLength_H; x++) {
ReferenceWeights[x] = Clip3(0, 8, (x - FirstPos) << 1
}
}
}
else if (subAngleIdx == 2) {
if (PhAwpRefineFlag == 0) {
FirstPos = (ValidLength_W >> 1) - 4 + DeltaPos_W - ((N << 1) >> angleIdx)
for (x=0; x<ValidLength_W; x++) {
ReferenceWeights[x] = Clip3(0, 8, x - FirstPos)
}
}
else {
FirstPos = (ValidLength_W >> 1) - 1 + DeltaPos_W - ((N << 1) >> angleIdx)
for (x=0; x<ValidLength_W; x++) {
ReferenceWeights[x] = Clip3(0, 8, (x - FirstPos) << 1)
}
}
}
else if (subAngleIdx == 3) {
if (PhAwpRefineFlag == 0) {
FirstPos = (ValidLength_W >> 1) - 6 + DeltaPos_W
for (x=0; x<ValidLength_W; x++) {
ReferenceWeights[x] = Clip3(0, 8, x - FirstPos)
}
}
else {
FirstPos = (ValidLength_W >> 1) - 3 + DeltaPos_W
for (x=0; x<ValidLength_W; x++) {
ReferenceWeights[x] = Clip3(0, 8, (x - FirstPos) << 1)
}
}
}
(3) 현재 픽셀 위치의 밝기 가중치를 도출하는 과정은 아래 표 21에 표시된 바와 같다.
if (subAngleIdx == 0) {
for (y=0; y<N; y++)
for (x=0; x<M; x++) {
WeightArrayY[x][y] = ReferenceWeights[(y << 1) + ((x << 1) >> angleIdx)]
}
}
}
if (subAngleIdx == 1) {
for (y=0; y<N; y++)
for (x=0; x<M; x++) {
WeightArrayY[x][y] = ReferenceWeights[(y << 1) - ((x << 1) >> angleIdx)]
}
}
}
if (subAngleIdx == 2) {
for (y=0; y<N; y++)
for (x=0; x<M; x++) {
WeightArrayY[x][y] = ReferenceWeights[(x << 1) - ((y << 1) >> angleIdx)]
}
}
}
if (subAngleIdx == 3) {
for (y=0; y<N; y++)
for (x=0; x<M; x++) {
WeightArrayY[x][y] = ReferenceWeights[(x << 1) + ((y << 1) >> angleIdx)]
}
}
}
(4) 현재 픽셀 위치의 색도 가중치를 도출하는 과정은 표 22에 표시된 바와 같다.
for (y=0; y<N/2; y++)
for (x=0; x<M/2; x++) {
WeightArrayUV[x][y] = WeightArrayY[x << 1][y << 1]
}
}
각도 가중 예측 모드(AWP)의 가중치 행렬을 도출해야 하는 경우, WeightArrayY를 AwpWeightArrayY에 할당하고, WeightArrayUV를 AwpWeightArrayUV에 할당한다.공역 각도 가중 예측 모드(SAWP)의 가중치 행렬을 도출해야 하는 경우, WeightArrayY 를 SawpWeightArrayY에 할당하고, WeightArrayUV를 SawpWeightArrayUV에 할당한다.예 2에 있어서, 본 예에서, SAWP에서 24가지 가중치 행렬만을 사용하고, SAWP가 사용 가능한 가중치 행렬은 도 2에 도시된 AWP의 가중치 행렬의 8 내지 15, 24 내지 31, 40 내지 47의 가중치 행렬에 대응된다. 즉 SAWP의 가중치 행렬 0 내지 7은 AWP의 가중치 행렬 8 내지 15에 대응되고, SAWP의 가중치 행렬 8 내지 15는 AWP의 가중치 행렬 24 내지 31에 대응되며, SAWP의 가중치 행렬 16 내지 23은 AWP의 가중치 행렬 40 내지 47에 대응되고, 4 내지 5개 비트의 플래그 sawp_idx가 필요하다.
상기 예는 각도 가중 예측 모드(AWP) 및 공역 각도 가중 예측 모드(SAWP)의 가중치 행렬의 도출과 관련된 설명을 제공한다.
M 및 N은 현재 예측 유닛(PU)의 너비 및 높이로 기록되고, 가중치 행렬의 도출 방법은 아래와 같다.
(1) stepIdx, angleIdx 및 subAngleIdx를 도출하고,
각도 가중 예측 모드(AWP)의 가중치 어레이를 도출해야 하는 경우, AwpIdx가 입력되어야 하고, 즉,
stepIdx = (AwpIdx >> 3) - 3,
modAngNum = AwpIdx % 8.
그렇지 않을 경우 공역 각도 가중 예측 모드(SAWP)의 가중치 어레이를 도출해야 하는 경우, SawpIdx가 입력되어야 하고, 즉,
stepIdx = ((SawpIdx >> 3) << 1) - 2,
modAngNum = SawpIdx % 8.
subAngleIdx의 도출 과정은 표 23에 표시된 바와 같다.
if (modAngNum == 2) {
angleIdx = 7
}
else if (modAngNum == 6) {
angleIdx = 8
}
else {
angleIdx = modAngNum % 2
}
subAngleIdx = modAngNum >> 1
(2) 참조 가중치 리스트(ReferenceWeight[x])를 도출하는 과정은 표 24에 표시된 바와 같다.
ValidLength_W = (M + (N >> angleIdx)) << 1
ValidLength_H = (N + (M >> angleIdx)) << 1
DeltaPos_W = stepIdx * ((ValidLength_W >> 3) - 1)
DeltaPos_H = stepIdx * ((ValidLength_H >> 3) - 1)
if (subAngleIdx == 0) {
if (PhAwpRefineFlag == 0) {
FirstPos = (ValidLength_H >> 1) - 6 + DeltaPos_H
for (x=0; x<ValidLength_H; x++) {
ReferenceWeights[x] = Clip3(0, 8, x - FirstPos)
}
}
else {
FirstPos = (ValidLength_H >> 1) - 3 + DeltaPos_H
for (x=0; x<ValidLength_H; x++) {
ReferenceWeights[x] = Clip3(0, 8, (x - FirstPos) << 1)
}
}
}
else if (subAngleIdx == 1) {
if (PhAwpRefineFlag == 0) {
FirstPos = (ValidLength_H >> 1) - 4 + DeltaPos_H - ((M << 1) >> angleIdx)
for (x=0; x<ValidLength_H; x++) {
ReferenceWeights[x] = Clip3(0, 8, x - FirstPos)
}
}
else {
FirstPos = (ValidLength_H >> 1) - 1 + DeltaPos_H - ((M << 1) >> angleIdx)
for (x=0; x<ValidLength_H; x++) {
ReferenceWeights[x] = Clip3(0, 8, (x - FirstPos) << 1
}
}
}
else if (subAngleIdx == 2) {
if (PhAwpRefineFlag == 0) {
FirstPos = (ValidLength_W >> 1) - 4 + DeltaPos_W - ((N << 1) >> angleIdx)
for (x=0; x<ValidLength_W; x++) {
ReferenceWeights[x] = Clip3(0, 8, x - FirstPos)
}
}
else {
FirstPos = (ValidLength_W >> 1) - 1 + DeltaPos_W - ((N << 1) >> angleIdx)
for (x=0; x<ValidLength_W; x++) {
ReferenceWeights[x] = Clip3(0, 8, (x - FirstPos) << 1)
}
}
}
else if (subAngleIdx == 3) {
if (PhAwpRefineFlag == 0) {
FirstPos = (ValidLength_W >> 1) - 6 + DeltaPos_W
for (x=0; x<ValidLength_W; x++) {
ReferenceWeights[x] = Clip3(0, 8, x - FirstPos)
}
}
else {
FirstPos = (ValidLength_W >> 1) - 3 + DeltaPos_W
for (x=0; x<ValidLength_W; x++) {
ReferenceWeights[x] = Clip3(0, 8, (x - FirstPos) << 1)
}
}
}
(3) 현재 픽셀 위치의 밝기 가중치를 도출하는 과정은 표 25에 표시된 바와 같다.
if (subAngleIdx == 0) {
for (y=0; y<N; y++)
for (x=0; x<M; x++) {
WeightArrayY[x][y] = ReferenceWeights[(y << 1) + ((x << 1) >> angleIdx)]
}
}
}
if (subAngleIdx == 1) {
for (y=0; y<N; y++)
for (x=0; x<M; x++) {
WeightArrayY[x][y] = ReferenceWeights[(y << 1) - ((x << 1) >> angleIdx)]
}
}
}
if (subAngleIdx == 2) {
for (y=0; y<N; y++)
for (x=0; x<M; x++) {
WeightArrayY[x][y] = ReferenceWeights[(x << 1) - ((y << 1) >> angleIdx)]
}
}
}
if (subAngleIdx == 3) {
for (y=0; y<N; y++)
for (x=0; x<M; x++) {
WeightArrayY[x][y] = ReferenceWeights[(x << 1) + ((y << 1) >> angleIdx)]
}
}
}
(4) 현재 픽셀 위치의 색도 가중치를 도출하는 과정은 표 26에 표시된 바와 같다.
for (y=0; y<N/2; y++)
for (x=0; x<M/2; x++) {
WeightArrayUV[x][y] = WeightArrayY[x << 1][y << 1]
}
}
각도 가중 예측 모드(AWP)의 가중치 어레이를 도출해야 하는 경우, WeightArrayY를 AwpWeightArrayY에 할당하고, WeightArrayUV를 AwpWeightArrayUV에 할당한다.공역 각도 가중 예측 모드(SAWP)의 가중치 어레이를 도출해야 하는 경우, WeightArrayY 를 SawpWeightArrayY에 할당하고, WeightArrayUV를 SawpWeightArrayUV에 할당한다.더 나아가, 상기 SAWP의 24가지 가중치 행렬에서의 10번 및 14번은, 각각 AWP의 56가지 가중치 행렬에서의 26 및 30번에 대응되고, 이는 이진 트리에에서BT를 수평 및 수직으로 구획하는 방식과 유사하므로, 실제로 선택될 확률이 비교적 낮고, 비교적 긴 이진 심볼 열을 가중치 행렬에 할당할 수 있고, 비교적 짧은 이진 심볼 열을 선택될 확률이 비교적 높은 가중치 행렬에 할당할 수 있다.
단계 604에 있어서, 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 가중치 행렬에 기반하여, 현재 블록의 예측값을 결정한다.
본 출원의 실시예에 있어서, 디코더는 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하고, 동시에 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정한 이후, 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 추가로 상기 현재 블록의 예측값을 결정할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 디코더는 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하는 경우, 먼저 상기 제1 인트라 예측 모드에 따라 상기 현재 블록의 제1 예측값을 결정할 수 있고; 동시에 상기 제2 인트라 예측 모드에 따라 상기 현재 블록의 제2 예측값을 결정할 수 있으며; 다음 상기 가중치 행렬을 이용하여 상기 제1 예측값 및 상기 제2 예측값에 대해 가중 평균 계산을 수행하여, 최종적으로 상기 현재 블록의 예측값을 획득할 수 있다.
본 출원의 실시예에 있어서, 추가로, 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하면, 디코더가 디코딩 처리를 수행하는 방법은 또한 아래와 같은 단계를 포함할 수 있다.
단계 701에 있어서, 모드 리스트에 따라 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정한다.
본 출원의 실시예에 있어서, 현재 블록의 인트라 예측 모드 파라미터를 결정한 이후, 인트라 예측 모드 파라미터가 현재 블록이 SAWP 모드를 사용하여 현재 블록의 인트라 예측값을 결정하도록 지시하면, 디코더는 추가로 현재 블록에 의해 사용되는 모드 리스트(MPM 리스트)를 결정할 수 있다. 다음 상기 모드 리스트에 따라 상기 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정할 수 있다.
설명해야 할 것은, 본 출원에 있어서, 모드 리스트는 현재 블록에 의해 사용되는 인트라 예측 모드를 결정하기 위한 것이다. 구체적으로, 디코더는 사용될 확률이 비교적 큰 복수 개의 인트라 예측 모드를 이용하여 모드 리스트를 구축할 수 있음으로써, 모드 리스트에 기반하여 현재 블록의 두개의 인트라 예측 모드를 결정할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 디코더는 모드 리스트를 결정하는 경우, 인접한 블록의 예측 모드를 사용하여 MPM을 구축하는 것과 같은 일반적인 방식을 사용하여 가장 가능성이 높은 모드 리스트(MPM)를 구성할 수 있고, 본 출원에서 제안한 인트라 예측 방법과 관련된 모드 리스트의 구축 방법, 즉 현재 블록의 가중치 행렬 도출 모드를 이용하여 모드 리스트를 구축하는 방법을 사용할 수도 있다.
다시 말해, 본 출원에서, 모드 리스트의 구축 방법은 상기 실시예에서의 단계 102에서 제안한 모드 리스트 구축 방법을 사용할 수 있고, 다른 MPM 구축 방법을 사용할 수도 있으며, 본 발명은 이에 대해 구체적으로 한정하지 않는다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 현재 블록에 의해 사용되는 모드 리스트를 결정한 이후, 먼저 상기 모드 리스트에 따라 상기 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정할 수 있다.
예시적으로, 본 출원에 있어서, N개의 MPM이 포함된 모드 리스트를 구축하고, N이 2n이면, N개의 비트(mpm_idx)를 사용하여 모드 리스트에서의 어떠한 MPM이 선택되었는지를 표시하고, 즉 제1 초기 모드 및 제2 초기 모드를 결정한 다음, 하나의 비트를 사용하여 오프셋(offset_needed)이 필요한지 여부를 표시한다. 예를 들어, 4개의 MPM이 포힘된 모드 리스트를 구축하려면, 모드 리스트에서 인트라 예측 모드를 선택할 경우, 2개의 비트(mpm_idx)를 사용하여 모드 리스트에서의 어떠한 MPM을 초기 모드로 선택했는지를 표시해야 하고, 표 3에 표시된 mpm_idx의 값과 이진 심볼 열의 대응 관계는 예측 모드의 결정에 사용될 수 있다.
단계 702에 있어서, 오프셋 모드 파라미터를 결정하고, 상기 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하는 경우, 상기 현재 블록의 오프셋 파라미터를 결정한다.
본 출원의 실시예에 있어서, 디코더는 또한 오프셋 모드 파라미터를 결정할 수 있고, 여기서, 오프셋 모드 파라미터는 오프셋을 수행해야 하는지 여부를 결정하기 위한 것이다. 구체적으로, 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하는 경우, 디코더는 추가로 현재 블록의 오프셋 파라미터를 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 하나의 비트를 사용하여 오프셋(offset_needed)이 필요한지 여부를 표시할 수 있고, 다시 말해, 코드 스트림을 해석하는 것을 통해 오프셋 모드 파라미터를 결정할 수 있고, 추가로 현재 블록의 예측 모드(제1 초기 모드 또는 제2 초기 모드)가 오프셋이 필요한지 여부를 결정할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하면, 디코더는 추가로 코드 스트림을 해석하여 현재 블록의 오프셋 파라미터를 결정할 수 있다. 여기서, 오프셋 파라미터는 오프셋 방식 및 오프셋량을 포함할 수 있고, 즉 오프셋 파라미터의 결정을 통해, 디코더는 현재 블록의 제1 초기 모드 또는 제2 초기 모드 중 어느 것에 대해 오프셋 처리를 수행할지를 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 디코더는 코드 스트림을 해석하여 오프셋 파라미터에서의 오프셋 방식 및 오프셋량을 결정할 수도 있다. 예를 들어, 하나의 비트(sign)는 오프셋 방식이 “+”인지 “-”인지를 표시하고; 일부 비트(offset)로 오프셋량을 표시한다.
선택적으로, 본 출원에 있어서, 오프셋 방식 및 오프셋량을 미리 설정할 수 있고, 예를 들어, 1, 2 또는 4와 같은 특정된 량만 디폴트로 오프셋할 수 있다.
단계 703에 있어서, 제1 초기 모드 및 오프셋 파라미터에 따라, 현재 블록의 제1 인트라 예측 모드를 결정하고; 제2 초기 모드 및 오프셋 파라미터에 따라, 현재 블록의 제2 인트라 예측 모드를 결정한다.
본 출원의 실시예에 있어서, 디코더는 상기 현재 블록의 오프셋 파라미터를 결정한 이후, 상기 제1 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제1 인트라 예측 모드를 결정할 수 있고; 동시에 상기 제2 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제2 인트라 예측 모드를 결정할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 상기 모드 리스트 및 상기 오프셋 파라미터에 따라, 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 상기 오프셋 방식 및 상기 오프셋량에 따라 상기 제1 초기 모드에 대해 오프셋 처리를 수행할 수 있음으로써, 상기 제1 인트라 예측 모드를 결정하고; 동시에 상기 오프셋 방식 및 상기 오프셋량에 따라 상기 제2 초기 모드에 대해 오프셋 처리를 수행할 수 있음으로써, 상기 제2 인트라 예측 모드를 결정한다.
다시 말해, 본 출원의 실시예에 있어서, 디코더는 먼저 코드 스트림을 해석하여 모드 리스트에서의 어떠한 예측 모드를 사용하는지를 결정할 수 있고, 즉 모드 리스트에서 초기 모드를 결정한 다음, 오프셋 파라미터에 따라 초기 모드에 대해 오프셋 처리를 수행하여, 최종적으로 현재 블록에 의해 사용되는 인트라 예측 모드를 결정할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 제1 초기 모드 및 제2 초기 모드에 대해 동일한 오프셋 파라미터를 사용할 수 있고, 즉 제1 초기 모드 및 제2 초기 모드를 기반으로, 동일한 오프셋 방식 및 오프셋량에 따라 오프셋 처리를 수행할 수 있다. 상응하게, 제1 초기 모드 및 제2 초기 모드에 대해 상이한 오프셋 파라미터를 사용할 수도 있으며, 제1 초기 모드를 기반으로 하나의 오프셋 방식을 사용하여 오프셋 처리를 수행하고, 동시에 제2 초기 모드를 기반으로 다른 하나의 오프셋 방식을 사용하여 오프셋 처리를 수행하며, 여기서, 여기서 두가지 오프셋 방식에 대응되는 오프셋 방식 및 오프셋량는 완전히 동일하지 않을 수 있다.
다시 말해, 본 출원에서, 제1 초기 모드에서의 오프셋 처리에 대응되는 오프셋 방식 및 오프셋량은 제2 초기 모드에서의 오프셋 처리에 대응되는 오프셋 방식 및 오프셋량은 동일하거나 상이할 수 있다.
선택적으로, 본 출원에 있어서, 제1 초기 모드에 대응되는 오프셋 모드 파라미터 및 제2 초기 모드에 대응되는 오프셋 모드 파라미터는 상이할 수도 있고, 즉 제1 초기 모드 및 제2 초기 모드에 대해 각각 오프셋 모드 파라미터를 설정하는 것을 통해, 제1 초기 모드 및 제2 초기 모드에 대해 모두 오프셋 처리를 수행하거나, 제1 초기 모드 및 제2 초기 모드에 대해 모두 오프셋 처리를 수행하지 않거나, 제1 초기 모드에 대해 오프셋 처리를 수행하고, 동시에 제2 초기 모드에 대해 오프셋 처리를 수행하지 않거나, 제1 초기 모드에 대해 오프셋 처리를 수행하지 않고, 동시에 제2 초기 모드에 대해 오프셋 처리를 수행하는 것과 같은 여러가지 상이한 처리 방식을 구현한다.
더 나아가, 본 출원의 실시예에 있어서, 오프셋 모드 파라미터가 오프셋 처리를 수행하지 않는 것을 지시하면, 디코더는 직접 상기 모드 리스트에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정할 수 있다.
단계 704에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정한다.
본 출원의 실시예에 있어서, 디코더는 모드 리스트 및 오프셋 파라미터에 따라 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정한 이후, 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 추가로 상기 현재 블록의 예측값을 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 디코더는 현재 블록의 예측값을 결정하는 경우, 먼저 상기 제1 인트라 예측 모드에 따라 상기 현재 블록의 제1 예측값을 결정할 수 있고; 동시에 상기 제2 인트라 예측 모드에 따라 상기 현재 블록의 제2 예측값을 결정할 수 있으며; 다음 현재 블록의 가중치 행렬을 이용하여 상기 제1 예측값 및 상기 제2 예측값에 대해 가중 평균 계산을 수행하여, 최종적으로 상기 현재 블록의 예측값을 획득할 수 있다.
본 출원의 실시예에 있어서, 추가로, 상기 단계 701 내지 단계 704에 도시된 인트라 예측 방법을 통해, 디코더는 먼저 모드 리스트에서 하나의 예측 모드를 선택한 다음, 상기 예측 모드의 기초에서 오프셋이 필요한지 여부를 결정하고, 오프셋이 필요하면, 추가로 오프셋 방식 및 오프셋량을 결정하고, 여기서, 오프셋량은 오프셋의 모드 인덱스 번호로 이해할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 모드 리스트에 대해 오프셋 처리를 수행한 이후 현재 블록의 예측 모드를 결정하는 방법은, 본 출원의 실시예의 SAWP 모드에 적용될 수 있을 뿐만 아니라, 다른 인트라 예측 모드에 적용될 수도 있으며, 또한 임의의 인터 예측 모드에 적용될 수 있고, 이에 대해 본 발명은 구체적으로 한정하지 않는다.
예시적으로, 본 출원에 있어서, 4개의 MPM을 구축하도록 규정하면, 2개의 비트를 사용하여 어떠한 예측 모드를 선택할지를 결정할 수 있고, 1개의 비트를 사용하여 오프셋 처리를 수행하는지 여부를 결정한다. 선택된 인트라 예측 모드가 MPM 중의 하나이면, 어떠한 MPM인지를 표시하기 위해 2개의 비트(mpm_idx)가 필요되고, 오프셋이 필요하지 않는 것을 표시하기 위해 1개의 비트(offset_needed)가 필요되며, 총 3개 비트가 필요된다.
더 나아가, 본 출원의 실시예에 있어서, 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하면, 추가로 오프셋 파라미터를 결정할 수 있고, 여기서, 오프셋 파라미터는 하나의 비트(sign)의 오프셋 방식을 포함할 수 있고, 또한 일부 비트(offset)의 오프셋량을 포함할 수 있다.
다시 말해, 본 출원에서, 오프셋이 필요하면, 하나의 비트(sign)로 오프셋 방식이 “+”인지 “-”인지를 표시할 수 있다. 더 나아가, 오프셋량을 설정하는 방법은 1, 2 또는 4와 같은 특정된 량만 디폴트로 오프셋하는 것일 수 있고, 또는, 일부 오버헤드를 사용하는 것을 통해 오프셋량을 표시할 수도 있다. 예를 들어, 선택 가능한 오프셋량이 2 및 4와 두가지가 존재하면, 하나의 비트를 사용하여 오프셋량이 2인지 4인지를 표시할 수 있다. 선택 가능한 오프셋량이 여러가지가 존재하면, 일부 비트(offset)를 통해 표시할 수 있으며, 표 4에 표시된 offset의 값과 이진 심볼 열의 대응 관계는 오프셋량의 결정에 사용될 수 있다. 예시적으로, 디코딩 측에서, 디코더는 코드 스트림을 해석하여, 현재 블록의 초기 모드(mpm_idx)를 결정할 수 있고, 또한 오프셋 모드 파라미터(offset_needed)를 결정할 수 있으며, 오프셋 모드 파라미터(offset_needed)가 오프셋 처리를 수행하는 것을 지시하면, 디코더는 또한 오프셋 방식(sign) 및 오프셋량(offset)을 결정할 수 있고, 예를 들어, 상기 인트라 예측 모드의 디코딩 방법은 아래 표 27에 표시된 바와 같다.
mpm_idx
offset_needed
If(offset_needed){
sign
offset
}
여기서, sign 및 offset의 순서는 바꿀 수 있고, offset의 가능성이 하나만 존재하는 경우, 상기 표에는 offset이 존재하지 않는다.구체적으로, 인트라 예측 모드의 모드 번호가 intra_pred_mode라고 가정하면, 변수 offset_value, offset_value의 값은 0이고; offset_needed가 1이면, offset_value의 값은 offset의 값과 동일하고; sign이 1이면, offset_value의 값은 -offset_value의 값과 동일하고; intra_pred_mode의 값은 MPM[mpm_idx]의 값에 offset_value의 값을 가한 것과 동일하다.더 나아가, 본 출원에서, 인트라 예측 모드가 MPM만을 사용하도록 설정할 수 있음으로써, 인트라 예측 모드가 디코딩되면, mpm_idx만 해석하면 되고, intra_pred_mode의 값은 MPM[mpm_idx]의 값과 동일하다.
본 출원의 실시예는 인트라 예측 방법을 제공하고, 인코더 및 디코더는 두가지 상이한 인트라 예측 모드를 통해 현재 블록의 두개의 상이한 예측 블록을 결정할 수 있고, 다양한 가중치 행렬을 조합하는 것을 통해, 최종적으로 더욱 복잡한 예측 블록을 얻을 수 있음으로써, 예측의 정확성을 향상시키는 동시에, 인코더 및 디코더는 또한 가중치 행렬과 예측 모드 간의 관련성을 통해 MPM 리스트의 구축을 수행할 수 있음으로써, 복잡도를 크게 저하시킬 수 있고, 다시 말해, 본 출원에서 제안한 인트라 예측 방법은, 인트라 예측 품질을 향상시키는 동시에, 복잡도를 저하시킬 수 있음으로써, 압축 성능을 향상시킨다.
상기 실시예에 기반하여, 본 출원의 다른 일 실시예는 인트라 예측 방법을 제안하고, 디코더에 적용되며, 도 19는 인트라 예측 방법의 구현 흐름 예시도 4이고, 도 19에 도시된 바와 같이, 디코더가 인트라 예측을 수행하는 방법은 아래와 같은 단계를 포함할 수 있다.
단계 801에 있어서, 코드 스트림을 해석하여, 현재 블록의 인트라 예측 모드 파라미터를 결정한다.
단계 802에 있어서, 인트라 예측 모드 파라미터가 현재 블록이 SAWP 모드를 사용하여 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 현재 블록의 모드 리스트를 결정한다.
단계 803에 있어서, 모드 리스트에 따라, 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정한다.
단계 804에 있어서, 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 현재 블록의 예측값을 결정한다.
본 출원의 실시예에 있어서, 디코더는 코드 스트림을 해석하여, 현재 블록의 인트라 예측 모드 파라미터를 결정하고, 인트라 예측 모드 파라미터가 현재 블록이 SAWP 모드를 사용하여 현재 블록의 인트라 예측값을 결정하도록 지시하면, 디코더는 추가로 상기 현재 블록의 모드 리스트를 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, SAWP 모드는 인트라 예측 방법으로서, 구체적으로, SAWP 모드는 현재 블록에 대해 두개의 상이한 인트라 예측 모드를 결정한 다음, 각각 이 두개의 상이한 인트라 예측 모드에 따라 두개의 예측 블록을 결정하고, 다음 가중치 행렬을 결정할 수 있으며, 두개의 예측 블록은 가중치 행렬에 따라 조합되어, 최종적으로 새로운 예측 블록을 얻을 수 있고, 즉 현재 블록의 예측 블록을 획득할 수 있다.
선택적으로, 본 출원에 있어서, 디코더는 먼저 상기 현재 블록의 크기 파라미터를 결정한 다음; 상기 크기 파라미터에 따라 상기 현재 블록이 상기 SAWP 모드를 사용하는지 여부를 결정할 수 있다. 구체적으로, 상기 너비가 제1 임계값보다 크고 상기 높이가 제2 임계값보다 크면, 상기 현재 블록이 상기 SAWP 모드를 사용한다고 결정하고; 또는, 상기 너비가 제3 임계값보다 작고 상기 높이가 제4 임계값보다 크면, 상기 현재 블록이 상기 SAWP 모드를 사용한다고 결정한다.
선택적으로, 본 출원에 있어서, 디코더는 먼저 상기 현재 블록의 픽셀 파라미터를 결정한 다음, 상기 픽셀 파라미터 및 제5 임계값에 따라 상기 현재 블록이 상기 SAWP 모드를 사용하는지 여부를 판단할 수 있다.
선택적으로, 본 출원에 있어서, 디코더는 먼저 현재 블록의 인트라 예측 모드 파라미터를 결정한 다음; 상기 인트라 예측 모드 파라미터에 따라 상기 현재 블록이 상기 SAWP 모드를 사용하는지 여부를 결정할 수 있다.
설명해야 할 것은, 본 출원에 있어서, 가중치 행렬 도출 모드는 현재 블록에 의해 사용되는 가중치 행렬을 결정하기 위한 것이다. 구체적으로, 가중치 행렬 도출 모드는 가중치 행렬을 도출하는 모드이다. 주어진 길이 및 너비의 예측 블록의 경우, 각 가중치 행렬 도출 모드는 하나의 가중치 행렬을 도출할 수 있고; 동일한 크기의 예측 블록의 경우, 상이한 가중치 행렬 도출 모드에 의해 도출되는 가중치 행렬은 상이하다.
예시적으로, 본 출원에 있어서, AVS3의 AWP에는 56가지 가중치 행렬 도출 모드가 존재하고, VVC의 GPM에는 64가지 가중치 행렬 도출 모드가 존재한다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 상기 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 경우, 먼저 상기 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 결정한 다음, 상기 인접한 블록에 대응되는 인트라 예측 모드를 첨가될 모드로 결정할 수 있고; 첨가될 모드가 기설정된 첨가 조건을 만족하는 것을 결정한 이후, 디코더는 상기 첨가될 모드를 상기 모드 리스트에 첨가할 수 있고, 즉 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 모드 리스트에 첨가할 수 있으며; 다음, 이때 모드 리스트가 기설정된 리스트 길이를 만족하지 않으면, 디코더는 계속하여 상기 현재 블록의 가중치 행렬 도출 모드를 결정하고, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 결정한 다음, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 상기 첨가될 모드로 결정할 수 있으며; 첨가될 모드가 상기 기설정된 첨가 조건을 만족하는 것이 결정되면, 상기 첨가될 모드를 상기 모드 리스트에 첨가하고, 즉 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 디코더가 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 모드 리스트에 첨가한 이후, 또는, 디코더가 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가한 이후, 모드 리스트가 상기 기설정된 리스트 길이를 만족하지 않으면, 즉 모드 리스트가 충만되지 않으면, 디코더는 계속하여 기설정된 예측 모드를 상기 첨가될 모드로 결정할 수 있고; 다음 첨가될 모드가 기설정된 첨가 조건을 만족하는 것을 결정한 이후, 첨가될 모드를 상기 모드 리스트에 첨가하고, 기설정된 예측 모드를 모드 리스트에 첨가한다.
이해할 수 있는 것은, 본 출원에 있어서, 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 등 여러가지 상이한 모드에서의 하나 또는 여러가지를 포함할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드, 기설정된 예측 모드를 각각 모드 리스트에 첨가한 이후, 모드 리스트가 여전히 상기 기설정된 리스트 길이를 만족하지 않으면, 즉 모드 리스트가 여전히 충만되지 않으면, 디코더는 모드 리스트에서의 예측 모드를 사용하여 관련 인트라 예측 모드를 결정한 다음, 관련 인트라 예측 모드를 상기 첨가될 모드로 결정하고, 첨가될 모드가 상기 기설정된 첨가 조건을 만족하는 것을 결정한 이후, 상기 첨가될 모드를 상기 모드 리스트에 첨가할 수 있으며, 즉 모드 리스트에 대응되는 관련 인트라 예측 모드를 모드 리스트에 첨가할 수 있다.
다시 말해, 본 출원에서, 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드 및 기설정된 예측 모드를 모드 리스트에 순차적으로 첨가한 이후, 모드 리스트가 여전히 충만되지 않으면, 디코더는 모드 리스트에 기반한 기존의 예측 모드를 선택하여, 대응되는 관련 인트라 예측 모드를 결정한 다음, 이러한 관련 인트라 예측 모드를 모드 리스트에 첨가할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 첨가될 모드로 사용하든, 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 첨가될 모드로 사용하든, 또는 기설정된 예측 모드를 첨가될 모드로 사용하든, 또는 관련 인트라 예측 모드를 첨가될 모드로 사용하든, 디코더는 모두 첨가될 모드가 기설정된 첨가 조건을 만족하는지 여부를 판정해야 하고, 구체적으로, 첨가될 모드가 존재하고, 상기 첨가될 모드와 상기 모드 리스트에서의 예측 모드가 모두 상이하면, 상기 첨가될 모드가 상기 기설정된 첨가 조건을 만족한다고 결정할 수 있음으로써, 상기 첨가될 모드를 모드 리스트에 첨가할 수 있다.
상응하게, 첨가될 모드가 존재하지 않거나, 첨가될 모드와 상기 모드 리스트에서의 하나의 예측 모드가 동일(중첩)하면, 상기 첨가될 모드가 상기 기설정된 첨가 조건을 만족하지 않는 것을 결정할 수 있고, 따라서 상기 첨가될 모드를 모드 리스트에 첨가할 수 없고, 상기 첨가될 모드를 버린다.
이해할 수 있는 것은, 본 출원에 있어서, 현재 블록은 두개의 인트라 예측 모드를 사용하여 인트라 예측 처리를 수행해야 하기 때문에, MPM을 구축할 경우 더욱 많은 위치의 인트라 예측 모드를 참조하거나, 더욱 많은 인접한 블록의 인트라 예측 모드를 참조할 수 있다. 상응하게, 본 출원에서, 현재 블록에 의해 사용되는 모드 리스트의 길이는 다른 인트라 예측 모드의 모드 리스트 길이와 상이할 수 있고, 이는 MPM이 이진화 수행 시의 코드 워드가 다른 모드보다 짧기 때문에, 두개의 인트라 예측 모드가 각각 MPM일 확률을 증가하여, 인코딩 및 디코딩 효율을 향상시키는데 유리하다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 상기 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 경우, 먼저 상기 가중치 행렬 도출 모드에 대응되는 리스트 구축 정책을 결정할 수 있고; 다음 상기 리스트 구축 정책에 따라, 추가로 상기 모드 리스트를 결정할 수 있다.
다시 말해, 본 출원에서, 상이한 가중치 행렬의 경우, 즉 상이한 가중치 행렬 도출 모드의 경우, 디코더는 상이한 구축 정책을 사용하여 모드 리스트의 구축을 수행할 수 있다. 예를 들어, 구축 정책에 기반하여, 가중치 행렬의 경계선이 0도 또는 90도이면, 즉 수평 또는 수직이면, 디코더는 모드 리스트를 구축하는 경우 가중치 행렬에 대응되는 인트라 예측 모드를 고려할 수 있고, 다른 경우 가중치 행렬에 대응되는 인트라 예측 모드를 고려하지 않는다.
본 출원의 실시예에 있어서, 디코더는 현재 블록의 모드 리스트를 구축한 이후, 상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정할 수 있다.
이해할 수 있는 것은, 본 출원에 있어서, 현재 블록이 인트라 예측을 수행하는 경우 사용하는 두개의 인트라 예측 모드가 상이하면, 즉 제1 인트라 예측 모드와 제2 인트라 예측 모드가 상이하면, 제2 인트라 예측 모드가 디코딩을 수행할 경우 제1 인트라 예측 모드의 가능성을 배제할 수 있다. 다시 말해 제2 인트라 예측 모드의 디코딩은 제1 인트라 예측 모드의 정보를 사용할 수 있다.
본 출원의 실시예에 있어서, 추가로, 디코더는 모드 리스트를 구축하는 과정에서, 또한 후보 인트라 예측 모드를 설정할 수 있다. 여기서, 후보 인트라 예측 모드와 모드 리스트에서의 인트라 예측 모드는 모두 상이하다.
구체적으로, 본 출원에서, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 제2 인트라 예측 모드의 결정은 제1 인트라 예측 모드에 의존할 수 있다. 여기서, 디코더는 상기 모드 리스트에 기반하여, 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 경우, 상기 모드 리스트에서의 하나의 예측 모드를 상기 제1 인트라 예측 모드로 결정할 수 있고; 다음 상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정한다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 상기 모드 리스트에서의 하나의 예측 모드를 상기 제1 인트라 예측 모드로 결정한 이후, 상기 모드 리스트에서 상기 하나의 예측 모드를 삭제할 수 있고, 다음 상기 후보 인트라 예측 모드를 상기 모드 리스트에 첨가함으로써, 업데이트된 모드 리스트를 획득할 수 있고; 다음 상기 업데이트된 모드 리스트에서 하나의 예측 모드를 선택하여 상기 제2 인트라 예측 모드로 결정할 수 있으며, 여기서, 선택 방식은 임의일 수 있다.
예시적으로, 본 출원에 있어서, 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드가 선택 가능한 MPM이 N개라고 가정하면, 모드 리스트를 구축하는 경우, 먼저 N개의 MPM 및 1개의 후보 MPM을 구축할 수 있고, 제1 인트라 예측 모드에 대해, 선택 가능한 MPM은 상기 N개의 MPM이다. 제1 인트라 예측 모드가 그중 하나의 MPM을 선택하면, 제2 인트라 예측 모드에 대해, 첫 번째 인트라 예측 모드에서 선택된 MPM을 제거하고, 후보 MPM이 모드 리스트에 추가됨으로써, 두 번째 인트라 예측 모드는 계속하여 N개의 MPM을 선택할 수 있다.
본 출원의 실시예에 있어서, 추가로, 디코더는 모드 리스트를 구축하는 과정에서, 또한 상기 모드 리스트의 길이 파라미터를 (N+1)로 설정할 수 있고; 여기서, N은 양의 정수이다.
구체적으로, 본 출원에서, 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이한 것을 보장하기 위해, 제2 인트라 예측 모드의 결정은 제1 인트라 예측 모드에 의존할 수 있다. 여기서, 디코더는 상기 모드 리스트에 기반하여, 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 경우, 상기 모드 리스트를 사용하여 상기 제1 인트라 예측 모드를 결정하면, 상기 모드 리스트의 상위 N개의 예측 모드에서의 하나의 예측 모드를 상기 제1 인트라 예측 모드로 결정할 수 있고; 다음 상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정한다.
더 나아가, 본 출원의 실시예에 있어서, 상기 모드 리스트를 사용하여 상기 제1 인트라 예측 모드를 결정하면, 디코더는 상기 모드 리스트의 상위 N개의 예측 모드에서의 하나의 예측 모드를 상기 제1 인트라 예측 모드로 결정한 이후, 상기 모드 리스트의, 상기 제1 인트라 예측 모드 외의 다른 N개의 예측 모드를 이용하여 상기 제2 인트라 예측 모드를 결정한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 디코더는 상기 모드 리스트에 기반하여, 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 경우, 상기 모드 리스트를 사용하지 않고 상기 제1 인트라 예측 모드를 결정하면, 디코더는 직접 상기 모드 리스트의 상위 N개의 예측 모드에서의 하나의 예측 모드를 상기 제2 인트라 예측 모드로 결정할 수 있다.
선택적으로, 본 출원의 실시예에 있어서, 다만 현재 블록에 의해 사용되는 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 상이함만을 보장하고, 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 선택 가능한 MPM의 개수에 대해 제한하지 않으면, 인트라 예측 모드를 다시 보충하는 설정을 수행하지 않거나, 모드 리스트 길이를 증가하는 처리를 수행하지 않을 수도 있다.
예시적으로, 본 출원에 있어서는, MPM의 개수 N이 4인 것을 예로 들고, 첫 번째 비트는 MPM인지 여부를 표시하고, 예를 들어 “1”은 MPM인 것을 표시하고, “0”은 MPM이 아닌 것을 표시한다. 제1 인트라 예측 모드가 MPM이면, 4개의 MPM이 존재하기 때문에, 2개의 비트로 어떠한 MPM인지를 표시하며, 즉 “00, 01, 10, 11”은 각각 첫 번째 MPM, 두 번째 MPM, 세 번째 MPM, 네 번째 MPM을 표시한다. 제1 인트라 예측 모드 및 제2 인트라 예측 모드가 모두 MPM이면, 제2 인트라 예측 모드가 사용 가능한 MPM은 3개 뿐이며, 1 내지 2개의 비트로 어떠한 MPM인지를 표시하고, 예를 들어 “00, 01, 10”은 각각 나머지 첫 번째 MPM, 두 번째 MPM, 세 번째 MPM을 표시한다. 이로부터 알다시피, 하나의 가능성이 배제되었으므로, 오버헤드를 절약하기 위해 역 이진화 방법이 변경될 수 있다.
단계 503에 있어서, 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정한다.
본 출원의 실시예에 있어서, 디코더는 상기 모드 리스트에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정한 이후, 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 추가로 상기 현재 블록의 예측값을 결정할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 디코더는 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하는 경우, 먼저 상기 제1 인트라 예측 모드에 따라 상기 현재 블록의 제1 예측값을 결정할 수 있고; 동시에 상기 제2 인트라 예측 모드에 따라 상기 현재 블록의 제2 예측값을 결정할 수 있으며; 다음 상기 제1 예측값 및 상기 제2 예측값에 대해 가중 평균 계산을 수행하여, 최종적으로 상기 현재 블록의 예측값을 획득할 수 있다. 예를 들어, 디코더는 상기 가중치 행렬을 이용하여 상기 제1 예측값 및 상기 제2 예측값에 대해 가중 평균 계산을 수행하여, 상기 현재 블록의 예측값을 획득할 수 있다.
본 출원의 실시예에 있어서, 추가로, 디코더는 현재 블록의 모드 리스트를 결정한 이후, 먼저 상기 모드 리스트에 따라 상기 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정하고; 다음 오프셋 모드 파라미터를 결정하고, 상기 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하는 경우, 상기 현재 블록의 오프셋 파라미터를 결정하며; 다음 상기 제1 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제1 인트라 예측 모드를 결정할 수 있고; 상기 제2 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제2 인트라 예측 모드를 결정하며; 마지막으로 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 디코더는 모드 리스트를 결정하는 경우, 인접한 블록의 예측 모드를 사용하여 MPM을 구축하는 것과 같은 일반적인 방식을 사용하여 가장 가능성이 높은 모드 리스트(MPM)를 구성할 수 있고, 본 출원에서 제안한 인트라 예측 방법과 관련된 모드 리스트의 구축 방법, 즉 현재 블록의 가중치 행렬 도출 모드를 이용하여 모드 리스트를 구축하는 방법을 사용할 수도 있다.
다시 말해, 본 출원에서, 모드 리스트의 구축 방법은 상기 실시예에서서 제안한 모드 리스트 구축 방법을 사용할 수 있고, 다른 MPM 구축 방법을 사용할 수도 있으며, 본 발명은 이에 대해 구체적으로 한정하지 않는다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 현재 블록에 의해 사용되는 모드 리스트를 결정한 이후, 먼저 상기 모드 리스트에 따라 상기 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정할 수 있다.
예시적으로, 본 출원에 있어서, N개의 MPM이 포함된 모드 리스트를 구축하고, N이 2n이면, N개의 비트(mpm_idx)를 사용하여 모드 리스트에서의 어떠한 MPM이 선택되었는지를 표시하고, 즉 제1 초기 모드 및 제2 초기 모드를 결정한 다음, 하나의 비트를 사용하여 오프셋(offset_needed)이 필요한지 여부를 표시한다. 예를 들어, 4개의 MPM이 포힘된 모드 리스트를 구축하려면, 모드 리스트에서 인트라 예측 모드를 선택할 경우, 2개의 비트(mpm_idx)를 사용하여 모드 리스트에서의 어떠한 MPM을 초기 모드로 선택했는지를 표시해야 하고, 표 3에 표시된 mpm_idx의 값과 이진 심볼 열의 대응 관계는 예측 모드의 결정에 사용될 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 하나의 비트를 사용하여 오프셋(offset_needed)이 필요한지 여부를 표시할 수 있고, 다시 말해, 디코더는 코드 스트림을 해석하는 것을 통해 오프셋 모드 파라미터를 결정할 수 있고, 추가로 현재 블록의 예측 모드(제1 초기 모드 또는 제2 초기 모드)가 오프셋이 필요한지 여부를 결정할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하면, 디코더는 추가로 현재 블록의 오프셋 파라미터를 결정할 수 있다. 여기서, 오프셋 파라미터는 오프셋 방식 및 오프셋량을 포함할 수 있고, 즉 오프셋 파라미터의 결정을 통해, 디코더는 현재 블록의 제1 초기 모드 또는 제2 초기 모드 중 어느 것에 대해 오프셋 처리를 수행할지를 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 디코더가 코드 스트림을 해석하여 획득한 비트는 오프셋 파라미터에서의 오프셋 방식 및 오프셋량을 지시할 수 있다. 예를 들어, 하나의 비트(sign)는 오프셋 방식이 “+”인지 “-”인지를 표시하고; 일부 비트(offset)로 오프셋량을 표시한다.
선택적으로, 본 출원에 있어서, 오프셋 방식 및 오프셋량을 미리 설정할 수 있고, 예를 들어, 1, 2 또는 4와 같은 특정된 량만 디폴트로 오프셋할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 디코더는 상기 모드 리스트 및 상기 오프셋 파라미터에 따라, 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 경우, 상기 오프셋 방식 및 상기 오프셋량에 따라 상기 제1 초기 모드에 대해 오프셋 처리를 수행할 수 있음으로써, 상기 제1 인트라 예측 모드를 결정하고; 동시에 상기 오프셋 방식 및 상기 오프셋량에 따라 상기 제2 초기 모드에 대해 오프셋 처리를 수행할 수 있음으로써, 상기 제2 인트라 예측 모드를 결정한다.
다시 말해, 본 출원의 실시예에 있어서, 디코더는 먼저 해석하여 결정된 복수 개의 비트에 따라 모드 리스트에서의 어떠한 예측 모드를 사용하는지를 결정할 수 있고, 즉 모드 리스트에서 초기 모드를 결정한 다음, 오프셋 파라미터에 따라 초기 모드에 대해 오프셋 처리를 수행하여, 최종적으로 현재 블록에 의해 사용되는 인트라 예측 모드를 결정할 수 있다.
이해할 수 있는 것은, 본 출원의 실시예에 있어서, 제1 초기 모드 및 제2 초기 모드에 대해 동일한 오프셋 파라미터를 사용할 수 있고, 즉 제1 초기 모드 및 제2 초기 모드를 기반으로, 동일한 오프셋 방식 및 오프셋량에 따라 오프셋 처리를 수행할 수 있다. 상응하게, 제1 초기 모드 및 제2 초기 모드에 대해 상이한 오프셋 파라미터를 사용할 수도 있으며, 제1 초기 모드를 기반으로 하나의 오프셋 방식을 사용하여 오프셋 처리를 수행하고, 동시에 제2 초기 모드를 기반으로 다른 하나의 오프셋 방식을 사용하여 오프셋 처리를 수행하며, 여기서, 여기서 두가지 오프셋 방식에 대응되는 오프셋 방식 및 오프셋량는 완전히 동일하지 않을 수 있다.
다시 말해, 본 출원에서, 제1 초기 모드에서의 오프셋 처리에 대응되는 오프셋 방식 및 오프셋량은 제2 초기 모드에서의 오프셋 처리에 대응되는 오프셋 방식 및 오프셋량은 동일하거나 상이할 수 있다.
선택적으로, 본 출원에 있어서, 제1 초기 모드에 대응되는 오프셋 모드 파라미터 및 제2 초기 모드에 대응되는 오프셋 모드 파라미터는 상이할 수도 있고, 즉 제1 초기 모드 및 제2 초기 모드에 대해 각각 오프셋 모드 파라미터를 설정하는 것을 통해, 제1 초기 모드 및 제2 초기 모드에 대해 모두 오프셋 처리를 수행하거나, 제1 초기 모드 및 제2 초기 모드에 대해 모두 오프셋 처리를 수행하지 않거나, 제1 초기 모드에 대해 오프셋 처리를 수행하고, 동시에 제2 초기 모드에 대해 오프셋 처리를 수행하지 않거나, 제1 초기 모드에 대해 오프셋 처리를 수행하지 않고, 동시에 제2 초기 모드에 대해 오프셋 처리를 수행하는 것과 같은 여러가지 상이한 처리 방식을 구현한다.
더 나아가, 본 출원의 실시예에 있어서, 오프셋 모드 파라미터가 오프셋 처리를 수행하지 않는 것을 지시하면, 디코더는 직접 상기 모드 리스트에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정할 수 있다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 디코더는 현재 블록의 예측값을 결정하는 경우, 먼저 상기 제1 인트라 예측 모드에 따라 상기 현재 블록의 제1 예측값을 결정할 수 있고; 동시에 상기 제2 인트라 예측 모드에 따라 상기 현재 블록의 제2 예측값을 결정할 수 있으며; 다음 상기 제1 예측값 및 상기 제2 예측값에 대해 가중 평균 계산을 수행하여, 최종적으로 상기 현재 블록의 예측값을 획득할 수 있다.
본 출원의 실시예는 인트라 예측 방법을 제공하고, 인코더 및 디코더는 두가지 상이한 인트라 예측 모드를 통해 현재 블록의 두개의 상이한 예측 블록을 결정할 수 있고, 다양한 가중치 행렬을 조합하는 것을 통해, 최종적으로 더욱 복잡한 예측 블록을 얻을 수 있음으로써, 예측의 정확성을 향상시키는 동시에, 인코더 및 디코더는 또한 가중치 행렬과 예측 모드 간의 관련성을 통해 MPM 리스트의 구축을 수행할 수 있음으로써, 복잡도를 크게 저하시킬 수 있고, 다시 말해, 본 출원에서 제안한 인트라 예측 방법은, 인트라 예측 품질을 향상시키는 동시에, 복잡도를 저하시킬 수 있음으로써, 압축 성능을 향상시킨다.
상기 실시예에 기반하여, 본 출원의 일 실시예에 있어서, 도 20은 본 출원의 실시예에서 제안한 인코더의 구성 구조 예시도 1이고, 도 20에 도시된 바와 같이, 본 출원의 실시예에서 제안한 인코더(300)는 제1 결정부(301)를 포함할 수 있고,
상기 제1 결정부(301)는 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하며; 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하도록 구성되고;
상기 제1 결정부(301)은 또한, 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 모드 리스트를 결정하고; 상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하도록 구성된다.
도 21은 본 출원의 실시예에서 제안한 인코더의 구성 구조 예시도2이고, 도 21에 도시된 바와 같이, 본 출원의 실시예에서 제안한 인코더(300)는 또한 제1 프로세서(302), 제1 프로세서(302)가 실행 가능한 명령어가 저장된 제1 메모리(303), 제1 통신 인터페이스(304)) 및 제1 프로세서(302), 제1 메모리(303) 및 제1 통신 인터페이스(304)를 연결하기 위한 제1 버스(305)를 포함할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 상기 제1 프로세서(302)는 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하며; 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하기 위한 것이다.
상기 제1 프로세서(302)는 또한 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 모드 리스트를 결정하고; 상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하기 위한 것이다.
도 22는 본 출원의 실시예에서 제안한 디코더의 구성 구조 예시도 1이고, 도 22에 도시된 바와 같이, 본 출원의 실시예에서 제안한 디코더(400)는 디코딩부(410), 제2 결정부(402)를 포함할 수 있고,
상기 디코딩부(401)는 코드 스트림을 해석하도록 구성되고;
상기 제2 결정부(402)는 현재 블록의 인트라 예측 모드 파라미터를 결정하고; 상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하고; 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하도록 구성되고;
상기 제2 결정부(402)는 또한, 현재 블록의 인트라 예측 모드 파라미터를 결정하고; 상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 모드 리스트를 결정하고; 상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 및 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하도록 구성된다.
도 23은 본 출원의 실시예에서 제안한 디코더의 구성 구조 예시도2이고, 도 23에 도시된 바와 같이, 본 출원의 실시예에서 제안한 디코더(400)는 또한 제2 프로세서(403), 제2 프로세서(403)가 실행 가능한 명령어가 저장된 제2 메모리(404), 제2 통신 인터페이스(405)) 및 제2 프로세서(403), 제2 메모리(404) 및 제2 통신 인터페이스(405)를 연결하기 위한 제2 버스(406)를 포함할 수 있다.
더 나아가, 본 출원의 실시예에 있어서, 상기 제2 프로세서(403)는 코드 스트림을 해석하여, 현재 블록의 인트라 예측 모드 파라미터를 결정하고; 상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하고; 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하기 위한 것이다.
상기 제2 프로세서(403)는 또한 코드 스트림을 해석하여, 현재 블록의 인트라 예측 모드 파라미터를 결정하고; 상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 모드 리스트를 결정하고; 상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하기 위한 것이다.
또한, 본 실시예에서의 각 기능 모듈은 하나의 프로세스 유닛에 통합될 수 있거나, 각 유닛이 독립적인 물리적 존재일 수 있으며, 두 개 또는 두 개 이상의 유닛이 하나의 유닛에 통합될 수도 있다. 상기 통합된 유닛은 하드웨어 또는 소프트웨어 기능 모듈의 형태로 구현될 수 있다.
통합된 유닛은 독립된 제품으로서 판매되거나 사용되는 것이 아닌 소프트웨어 기능 모듈의 형태로 구현될 경우, 하나의 컴퓨터 판독 가능 저장 매체에 저장될 수 있으며, 이러한 이해에 기반하여, 본 실시예의 기술방안은 본질적으로 또는 기존 기술에 기여하는 부분이나 상기 기술방안의 전부 또는 일부는 소프트웨어 제품의 형태로 구현될 수 있으며, 상기 컴퓨터 소프트웨어 제품은 하나의 저장 매체에 저장되며, 하나의 컴퓨터 기기(개인용 컴퓨터, 서버, 또는 네트워크 기기 등) 또는 프로세서(processor)로 하여금 본 실시예의 방법의 전부 또는 일부 단계를 실행하도록 하는 몇 개의 명령어를 포함한다. 전술한 저장 매체는 U 디스크, 모바일 디스크, 판독 전용 메모리(Read Only Memory, ROM), 랜덤 액세스 메모리(Random Access Memory, RAM), 자기 디스크 또는 광 디스크 등 프로그램 코드를 저장할 수 있는 여러가지 매체를 포함한다.
본 출원의 실시예는 인코더 및 디코더를 제공하고, 한 측면으로, 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하고; 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정한다. 다른 한 측면으로, 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 모드 리스트를 결정하고; 상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며;상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정한다. 다시 말해, 본 출원의 실시예에 있어서, 인코더 및 디코더는 두가지 상이한 인트라 예측 모드를 통해 현재 블록의 두개의 상이한 예측 블록을 결정할 수 있고, 다양한 가중치 행렬을 조합하는 것을 통해, 최종적으로 더욱 복잡한 예측 블록을 얻을 수 있음으로써, 예측의 정확성을 향상시키는 동시에, 인코더 및 디코더는 또한 가중치 행렬과 예측 모드 간의 관련성을 통해 MPM 리스트의 구축을 수행할 수 있음으로써, 복잡도를 크게 저하시킬 수 있고, 다시 말해, 본 출원에서 제안한 인트라 예측 방법은, 인트라 예측 품질을 향상시키는 동시에, 복잡도를 저하시킬 수 있음으로써, 압축 성능을 향상시킨다.
본 출원의 실시예는 프로그램이 저장된 컴퓨터 판독 가능한 저장 매체를 제공하고, 상기 프로그램이 프로세서에 의해 실행될 경우 상기 실시예에 따른 인트라 예측 방법을 구현한다.
구체적으로, 본 실시예에서의 인트라 예측 방법에 대응되는 프로그램 명령어는 광 디스크, 하드 디스크, U 디스크 등 저장 매체에 저장될 수 있고, 저장 매체에서의 인트라 예측 방법에 대응되는 프로그램이 전자 기기에 의해 판독 액세스되거나 실행될 경우, 아래와 같은 단계를 포함한다.
현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하고;
상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하며;
상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정한다.
또한 아래와 같은 단계를 포함한다.
현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 모드 리스트를 결정하고;
상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며;
상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정한다.
또한 아래와 같은 단계를 포함한다.
코드 스트림을 해석하여, 현재 블록의 인트라 예측 모드 파라미터를 결정하고;
상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하고;
상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하며;
상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정한다.
또한 아래와 같은 단계를 포함한다.
코드 스트림을 해석하여, 현재 블록의 인트라 예측 모드 파라미터를 결정하고;
상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 모드 리스트를 결정하며;
상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며;
상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정한다.
본 기술분야의 기술자는 본 출원의 실시예 방법, 시스템, 또는 컴퓨터 프로그램 제품으로 제공될 수 있음을 알아야 한다. 따라서, 본 출원은 하드웨어 실시예, 소프트웨어 실시예, 또는 소프트웨어 및 하드웨어 측면을 결합한 실시예의 형태를 채택할 수 있다. 또한, 본 출원은 컴퓨터 사용 가능한 프로그램 코드를 포함하는 하나 또는 복수 개의 컴퓨터 사용 가능 저장 매체(자기 디스크 기억 장치 및 광 메모리 등)에서 실행되는 컴퓨터 프로그램 제품의 형태를 채택할 수 있다.
본 출원은 본 출원의 실시예의 방법, 기기(시스템) 및 컴퓨터 프로그램 제품의 구현 흐름 예시도 및 블록도 중 적어도 하나에 따라 설명된 것이다. 이해해야 할 것은, 컴퓨터 프로그램 명령어에 의해 흐름 예시도의 각 흐름 및 블록도의 각 블록 중 적어도 하나 및 흐름 예시도의 흐름 및 블록도의 블록 중 적어도 하나의 결합을 구현할 수 있다 이러한 컴퓨터 프로그램 명령어를 범용 컴퓨터, 전용 컴퓨터, 임베디드 처리기 또는 다른 프로그래머블 데이터 처리 기기의 처리기에 제공하여 하나의 기계를 생성할 수 있으므로, 컴퓨터 또는 다른 프로그래머블 데이터 처리 기기의 처리기를 통해 수행된 명령어로 하여금 흐름도의 하나의 흐름 또는 복수 개의 구현 흐름 예시도 및 블록도의 하나의 블록 또는 복수 개의 블록 중 적어도 하나의 기능을 구현하기 위한 장치를 생성하도록 한다.
이러한 컴퓨터 프로그램 명령어는 컴퓨터나 다른 프로그래머블 데이터 처리 기기를 특정 방식으로 동작하도록 유도할 수 있는 컴퓨터 판독 가능 메모리에 저장될 수 있어, 상기 컴퓨터 판독 가능 메모리에 저장된 명령 내의 명령어로 하여금 명령어 장치를 포함한 제조품을 생성하도록 하며, 상기 명령어 장치는 구현 흐름 예시도에서 하나의 흐름 또는 복수 개의 흐름 및 블록도의 하나의 블록 또는 복수 개의 블록 중 지정된 기능을 구현한다.
이러한 컴퓨터 프로그램 명령어는 컴퓨터 또는 다른 프로그래머블 데이터 처리 기기에 로딩되어, 컴퓨터 구현의 처리를 구현하기 위해, 컴퓨터 또는 다른 프로그래머블 기기 상에서 일련의 동작을 수행함으로써, 컴퓨터 또는 다른 프로그래머블 기기 상에서 수행되는 명령어는 구현 흐름 예시도의 하나의 흐름 또는 복수 개의 흐름 및 블록도의 하나의 블록 중 적어도 하나에서 지정된 기능을 구현하기 위한 단계를 제공한다.
상기 서술은 다만 본 출원의 바람직한 실시예일 뿐이며, 본 출원의 보호 범위를 한정하기 위한 것은 아니다.
본 출원의 실시예는 인트라 예측 방법, 인코더, 디코더 및 저장 매체를 제공하고, 상기 인트라 예측 방법에 있어서, 한 측면으로, 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하고; 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정한다. 다른 한 측면으로, 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 모드 리스트를 결정하고; 상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정한다. 다시 말해, 본 출원의 실시예에 있어서, 인코더 및 디코더는 두가지 상이한 인트라 예측 모드를 통해 현재 블록의 두개의 상이한 예측 블록을 결정할 수 있고, 다양한 가중치 행렬을 조합하는 것을 통해, 최종적으로 더욱 복잡한 예측 블록을 얻을 수 있음으로써, 예측의 정확성을 향상시키는 동시에, 인코더 및 디코더는 또한 가중치 행렬과 예측 모드 간의 관련성을 통해 MPM 리스트의 구축을 수행할 수 있음으로써, 복잡도를 크게 저하시킬 수 있고, 다시 말해, 본 출원에서 제안한 인트라 예측 방법은, 인트라 예측 품질을 향상시키는 동시에, 복잡도를 저하시킬 수 있음으로써, 압축 성능을 향상시킨다.

Claims (111)

  1. 인트라 예측 방법으로서,
    인코더에 적용되고, 상기 인트라 예측 방법은,
    현재 블록이 공역 각도 가중치 예측(SAWP) 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하는 단계;
    상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계;
    상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하는 단계; 및
    상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  2. 제1항에 있어서,
    상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계는,
    상기 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 단계; 및
    상기 모드 리스트에 기반하여, 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  3. 제2항에 있어서,
    상기 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 단계는,
    상기 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 결정하고, 상기 인접한 블록에 대응되는 인트라 예측 모드를 첨가할 모드로 결정하는 단계;
    상기 첨가할 모드가 기설정된 첨가 조건을 만족하면, 상기 첨가할 모드를 상기 모드 리스트에 첨가하는 단계;
    상기 모드 리스트가 기설정된 리스트 길이를 만족하지 않으면, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 결정하고, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 상기 첨가할 모드로 결정하는 단계; 및
    상기 첨가할 모드가 상기 기설정된 첨가 조건을 만족하면, 상기 첨가할 모드를 상기 모드 리스트에 첨가하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  4. 제3항에 있어서,
    상기 인트라 예측 방법은,
    상기 인접한 블록에 대응되는 순서 파라미터를 결정하는 단계; 및
    상기 순서 파라미터에 따라, 상기 인접한 블록에 대응되는 인트라 예측 모드를 순차적으로 상기 모드 리스트에 첨가하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  5. 제3항에 있어서,
    상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 결정하는 단계는,
    상기 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드를 결정하는 단계; 및
    상기 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드에 기반하여, 제1 인덱스 간격에 따라, 상기 관련 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  6. 제3항에 있어서,
    상기 인트라 예측 방법은,
    상기 모드 리스트가 상기 기설정된 리스트 길이를 만족하지 않으면, 기설정된 예측 모드를 상기 첨가할 모드로 결정하는 단계 - 상기 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 중의 하나 또는 복수 개를 포함함 - ; 및
    상기 첨가할 모드가 상기 기설정된 첨가 조건을 만족하면, 상기 첨가할 모드를 상기 모드 리스트에 첨가하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  7. 제3항에 있어서,
    상기 인트라 예측 방법은,
    상기 모드 리스트가 상기 기설정된 리스트 길이를 만족하지 않으면, 상기 모드 리스트의 관련 인트라 예측 모드를 결정하고, 상기 관련 인트라 예측 모드를 상기 첨가할 모드로 결정하는 단계; 및
    상기 첨가할 모드가 상기 기설정된 첨가 조건을 만족하면, 상기 첨가할 모드를 상기 모드 리스트에 첨가하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  8. 제7항에 있어서,
    상기 모드 리스트의 관련 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트 중의 어느 한 예측 모드에 기반하여, 제2 인덱스 간격에 따라, 상기 관련 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  9. 제3항 내지 제8항 중 어느 한 항에 있어서,
    상기 인트라 예측 방법은,
    상기 첨가할 모드가 존재하고, 상기 첨가할 모드가 상기 모드 리스트에서의 예측 모드와 모두 상이하면, 상기 첨가할 모드가 상기 기설정된 첨가 조건을 만족한다고 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  10. 제2항에 있어서,
    상기 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 단계는,
    상기 가중치 행렬 도출 모드에 대응되는 리스트 구축 정책을 결정하는 단계; 및
    상기 리스트 구축 정책에 따라, 상기 모드 리스트를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  11. 제2항에 있어서,
    상기 인트라 예측 방법은,
    후보 인트라 예측 모드를 설정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  12. 제11항에 있어서,
    상기 모드 리스트에 기반하여, 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트 중의 하나의 예측 모드를 상기 제1 인트라 예측 모드로 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  13. 제11항에 있어서,
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트에서 상기 하나의 예측 모드를 삭제하고, 상기 후보 인트라 예측 모드를 상기 모드 리스트에 첨가하여, 업데이트된 모드 리스트를 획득하는 단계; 및
    상기 업데이트된 모드 리스트에서 하나의 예측 모드를 선택하여 상기 제2 인트라 예측 모드로 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  14. 제2항에 있어서,
    상기 인트라 예측 방법은,
    상기 모드 리스트의 길이 파라미터를 (N+1)로 설정하는 단계 - N은 양의 정수임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  15. 제14항에 있어서,
    상기 모드 리스트에 기반하여, 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트를 사용하여 상기 제1 인트라 예측 모드를 결정하면, 상기 모드 리스트의 상위 N개의 예측 모드 중의 하나의 예측 모드를 상기 제1 인트라 예측 모드로 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  16. 제15항에 있어서,
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트의, 상기 제1 인트라 예측 모드 외의 다른 N개의 예측 모드를 이용하여 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  17. 제14항에 있어서,
    상기 모드 리스트에 기반하여, 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트를 사용하지 않고 상기 제1 인트라 예측 모드를 결정하면, 상기 모드 리스트의 상위 N개의 예측 모드 중의 하나의 예측 모드를 상기 제2 인트라 예측 모드로 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  18. 제1항에 있어서,
    상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계는,
    상기 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드, 기설정된 예측 모드에 대해 순차적으로 순서 배정 처리를 수행하여, 예측 모드의 후보 리스트를 획득하는 단계 - 상기 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 중의 하나 또는 복수 개를 포함함 - ; 및
    상기 예측 모드의 후보 리스트에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  19. 제1항에 있어서,
    상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계는,
    상기 가중치 행렬 도출 모드에 대응되는 상기 제1 인트라 예측 모드의 참조 집합을 구축하는 단계;
    상기 가중치 행렬 도출 모드에 대응되는 상기 제2 인트라 예측 모드의 참조 집합을 구축하는 단계;
    상기 제1 인트라 예측 모드의 참조 집합에 기반하여 상기 제1 인트라 예측 모드를 결정하는 단계; 및
    상기 제2 인트라 예측 모드의 참조 집합에 기반하여 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  20. 제1항에 있어서,
    상기 인트라 예측 방법은,
    제1 모드 인덱스 범위에 따라 상기 가중치 행렬 도출 모드를 결정하는 단계 - 상기 제1 모드 인덱스 범위는 상기 가중치 행렬 도출 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  21. 제1항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 크기 파라미터가 제1 크기 임계값보다 작으면, 제1 모드 인덱스 범위에 따라 상기 가중치 행렬 도출 모드를 결정하는 단계 - 상기 제1 모드 인덱스 범위는 상기 가중치 행렬 도출 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  22. 제20항 또는 제21항에 있어서,
    제1 모드 인덱스 범위는 제1 하한 임계값 및 제1 상한 임계값을 포함하고,
    상기 인트라 예측 방법은,
    상기 가중치 행렬 도출 모드의 인덱스 번호가 상기 제1 하한 임계값보다 작으면, 상기 가중치 행렬 도출 모드의 인덱스 번호를 상기 제1 하한 임계값으로 설정하는 단계; 및
    상기 가중치 행렬 도출 모드의 인덱스 번호가 상기 제1 상한 임계값보다 크면, 상기 가중치 행렬 도출 모드의 인덱스 번호를 상기 제1 상한 임계값으로 설정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  23. 제1항에 있어서,
    상기 인트라 예측 방법은,
    제2 모드 인덱스 범위에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계 - 상기 제2 모드 인덱스 범위는 인트라 예측 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  24. 제1항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 크기 파라미터가 제2 크기 임계값보다 작으면, 제2 모드 인덱스 범위에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계 - 상기 제2 모드 인덱스 범위는 인트라 예측 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  25. 제23항 또는 제24항에 있어서,
    제2 모드 인덱스 범위는 제2 하한 임계값 및 제2 상한 임계값을 포함하고,
    상기 인트라 예측 방법은,
    상기 제1 인트라 예측 모드의 제1 인덱스 번호를 결정하고, 상기 제2 인트라 예측 모드의 제2 인덱스 번호를 결정하는 단계;
    상기 제1 인덱스 번호 및 상기 제2 인덱스 번호를 모두 상기 제2 하한 임계값보다 크도록 설정하는 단계; 및
    상기 제1 인덱스 번호 및 상기 제2 인덱스 번호를 모두 상기 제2 상한 임계값보다 작도록 설정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  26. 제1항에 있어서,
    상기 인트라 예측 방법은,
    상기 모드 리스트에 따라 상기 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정하는 단계;
    오프셋 모드 파라미터를 결정하고, 상기 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하는 경우, 상기 현재 블록의 오프셋 파라미터를 결정하는 단계;
    상기 제1 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제1 인트라 예측 모드를 결정하고; 상기 제2 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제2 인트라 예측 모드를 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  27. 제26항에 있어서,
    상기 오프셋 파라미터는 오프셋 방식 및 오프셋량을 포함하고,
    상기 제1 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제1 인트라 예측 모드를 결정하고, 상기 제2 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제2 인트라 예측 모드를 결정하는 단계는,
    상기 오프셋 방식 및 상기 오프셋량에 따라 상기 제1 초기 모드에 대해 오프셋 처리를 수행하여, 상기 제1 인트라 예측 모드를 결정하는 단계; 및
    상기 오프셋 방식 및 상기 오프셋량에 따라 상기 제2 초기 모드에 대해 오프셋 처리를 수행하여, 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  28. 제26항에 있어서,
    상기 인트라 예측 방법은,
    상기 오프셋 모드 파라미터가 오프셋 처리를 수행하지 않는 것을 지시할 경우, 상기 모드 리스트에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  29. 제1항에 있어서,
    상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계는,
    상기 제1 인트라 예측 모드에 따라 상기 현재 블록의 제1 예측값을 결정하는 단계;
    상기 제2 인트라 예측 모드에 따라 상기 현재 블록의 제2 예측값을 결정하는 단계; 및
    상기 가중치 행렬을 이용하여 상기 제1 예측값 및 상기 제2 예측값에 대해 가중 평균 계산을 수행하여, 상기 현재 블록의 예측값을 획득하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  30. 제1항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 크기 파라미터를 결정하는 단계; 및
    상기 크기 파라미터에 따라 상기 현재 블록이 상기 SAWP 모드를 사용하는지 여부를 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  31. 제30항에 있어서,
    상기 크기 파라미터는 너비 및 높이를 포함하고;
    상기 인트라 예측 방법은,
    상기 너비가 제1 임계값보다 크고 상기 높이가 제2 임계값보다 크면, 상기 현재 블록이 상기 SAWP 모드를 사용한다고 결정하는 단계; 또는,
    상기 너비가 제3 임계값보다 작고 상기 높이가 제4 임계값보다 크면, 상기 현재 블록이 상기 SAWP 모드를 사용한다고 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  32. 제1항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 픽셀 파라미터를 결정하는 단계; 및
    상기 픽셀 파라미터 및 제5 임계값에 따라 상기 현재 블록이 상기 SAWP 모드를 사용하는지 여부를 판단하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  33. 제1항에 있어서,
    상기 인트라 예측 방법은,
    현재 블록의 인트라 예측 모드 파라미터를 결정하는 단계;
    상기 인트라 예측 모드 파라미터에 따라 상기 현재 블록이 상기 SAWP 모드를 사용하는지 여부를 판단하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  34. 인트라 예측 방법으로서,
    인코더에 적용되고, 상기 인트라 예측 방법은,
    현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 모드 리스트를 결정하는 단계;
    상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  35. 제34항에 있어서,
    상기 현재 블록의 모드 리스트를 결정하는 단계는,
    상기 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 결정하고, 상기 인접한 블록에 대응되는 인트라 예측 모드를 첨가할 모드로 결정하는 단계;
    상기 첨가할 모드가 기설정된 첨가 조건을 만족하면, 상기 첨가할 모드를 상기 모드 리스트에 첨가하는 단계; 및
    상기 모드 리스트가 기설정된 리스트 길이를 만족하지 않으면, 상기 현재 블록의 가중치 행렬 도출 모드에 대해, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 결정하고, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 상기 첨가할 모드로 결정하는 단계; 및
    상기 첨가할 모드가 상기 기설정된 첨가 조건을 만족하면, 상기 첨가할 모드를 상기 모드 리스트에 첨가하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  36. 제35항에 있어서,
    상기 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 단계는,
    상기 가중치 행렬 도출 모드에 대응되는 리스트 구축 정책을 결정하는 단계; 및
    상기 리스트 구축 정책에 따라, 상기 모드 리스트를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  37. 제34항에 있어서,
    상기 인트라 예측 방법은,
    후보 인트라 예측 모드를 설정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  38. 제37항에 있어서,
    상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트 중의 하나의 예측 모드를 상기 제1 인트라 예측 모드로 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  39. 제38항에 있어서,
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트에서 상기 하나의 예측 모드를 삭제하고, 상기 후보 인트라 예측 모드를 상기 모드 리스트에 첨가하여, 업데이트된 모드 리스트를 획득하는 단계; 및
    상기 업데이트된 모드 리스트에서 하나의 예측 모드를 선택하여 상기 제2 인트라 예측 모드로 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  40. 제34항에 있어서,
    상기 인트라 예측 방법은,
    상기 모드 리스트의 길이 파라미터를 (N+1)로 설정하는 단계 - N은 양의 정수임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  41. 제40항에 있어서,
    상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트를 사용하여 상기 제1 인트라 예측 모드를 결정하면, 상기 모드 리스트의 상위 N개의 예측 모드 중의 하나의 예측 모드를 상기 제1 인트라 예측 모드로 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  42. 제41항에 있어서,
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트의, 상기 제1 인트라 예측 모드 외의 다른 N개의 예측 모드를 이용하여 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  43. 제40항에 있어서,
    상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트를 사용하지 않고 상기 제1 인트라 예측 모드를 결정하면, 상기 모드 리스트의 상위 N개의 예측 모드 중의 하나의 예측 모드를 상기 제2 인트라 예측 모드로 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  44. 제35항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드, 기설정된 예측 모드에 대해 순차적으로 순서 배정 처리를 수행하여, 예측 모드의 후보 리스트를 획득하는 단계 - 상기 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 중의 하나 또는 복수 개를 포함함 - ; 및
    상기 예측 모드의 후보 리스트에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  45. 제35항에 있어서,
    상기 인트라 예측 방법은,
    상기 가중치 행렬 도출 모드에 대응되는 상기 제1 인트라 예측 모드의 참조 집합을 구축하는 단계; 상기 가중치 행렬 도출 모드에 대응되는 상기 제2 인트라 예측 모드의 참조 집합을 구축하는 단계;
    상기 제1 인트라 예측 모드의 참조 집합에 기반하여 상기 제1 인트라 예측 모드를 결정하는 단계; 및
    상기 제2 인트라 예측 모드의 참조 집합에 기반하여 상기 제2 인트라 예측 모드를 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  46. 제35항에 있어서,
    상기 인트라 예측 방법은,
    제1 모드 인덱스 범위에 따라 상기 가중치 행렬 도출 모드를 결정하는 단계 - 상기 제1 모드 인덱스 범위는 상기 가중치 행렬 도출 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  47. 제35항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 크기 파라미터가 제1 크기 임계값보다 작으면, 제1 모드 인덱스 범위에 따라 상기 가중치 행렬 도출 모드를 결정하는 단계 - 상기 제1 모드 인덱스 범위는 상기 가중치 행렬 도출 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  48. 제46항 또는 제47항에 있어서,
    제1 모드 인덱스 범위는 제1 하한 임계값 및 제1 상한 임계값을 포함하고, 상기 인트라 예측 방법은,
    상기 가중치 행렬 도출 모드의 인덱스 번호가 상기 제1 하한 임계값보다 작으면, 상기 가중치 행렬 도출 모드의 인덱스 번호를 상기 제1 하한 임계값으로 설정하는 단계; 및
    상기 가중치 행렬 도출 모드의 인덱스 번호가 상기 제1 상한 임계값보다 크면, 상기 가중치 행렬 도출 모드의 인덱스 번호를 상기 제1 상한 임계값으로 설정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  49. 제34항에 있어서,
    상기 인트라 예측 방법은,
    제2 모드 인덱스 범위에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계 - 상기 제2 모드 인덱스 범위는 인트라 예측 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  50. 제34항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 크기 파라미터가 제2 크기 임계값보다 작으면, 제2 모드 인덱스 범위에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계 - 상기 제2 모드 인덱스 범위는 인트라 예측 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  51. 제49항 또는 제50항에 있어서,
    제2 모드 인덱스 범위는 제2 하한 임계값 및 제2 상한 임계값을 포함하고,
    상기 인트라 예측 방법은,
    상기 제1 인트라 예측 모드의 제1 인덱스 번호를 결정하고, 상기 제2 인트라 예측 모드의 제2 인덱스 번호를 결정하는 단계;
    상기 제1 인덱스 번호 및 상기 제2 인덱스 번호를 모두 상기 제2 하한 임계값보다 크도록 설정하는 단계; 및
    상기 제1 인덱스 번호 및 상기 제2 인덱스 번호를 모두 상기 제2 상한 임계값보다 작도록 설정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  52. 제34항에 있어서,
    상기 인트라 예측 방법은,
    상기 모드 리스트에 따라 상기 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정하는 단계;
    오프셋 모드 파라미터를 결정하고, 상기 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하는 경우, 상기 현재 블록의 오프셋 파라미터를 결정하는 단계;
    상기 제1 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제1 인트라 예측 모드를 결정하는 단계; 상기 제2 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제2 인트라 예측 모드를 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  53. 제34항에 있어서,
    상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계는,
    상기 제1 인트라 예측 모드에 따라 상기 현재 블록의 제1 예측값을 결정하는 단계;
    상기 제2 인트라 예측 모드에 따라 상기 현재 블록의 제2 예측값을 결정하는 단계; 및
    상기 제1 예측값 및 상기 제2 예측값에 대해 가중 평균 계산을 수행하여, 상기 현재 블록의 예측값을 획득하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  54. 인트라 예측 방법으로서,
    디코더에 적용되고, 상기 인트라 예측 방법은,
    코드 스트림을 해석하여, 현재 블록의 인트라 예측 모드 파라미터를 결정하는 단계;
    상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하는 단계;
    상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계;
    상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하는 단계; 및
    상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  55. 제54항에 있어서,
    상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계는,
    상기 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 단계; 및
    상기 모드 리스트에 기반하여, 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  56. 제55항에 있어서,
    상기 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 단계는,
    상기 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 결정하고, 상기 인접한 블록에 대응되는 인트라 예측 모드를 첨가할 모드로 결정하는 단계;
    상기 첨가할 모드가 기설정된 첨가 조건을 만족하면, 상기 첨가할 모드를 상기 모드 리스트에 첨가하는 단계;
    상기 모드 리스트가 기설정된 리스트 길이를 만족하지 않으면, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 결정하고, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 상기 첨가할 모드로 결정하는 단계; 및
    상기 첨가할 모드가 상기 기설정된 첨가 조건을 만족하면, 상기 첨가할 모드를 상기 모드 리스트에 첨가하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  57. 제56항에 있어서,
    상기 인트라 예측 방법은,
    상기 인접한 블록에 대응되는 순서 파라미터를 결정하는 단계; 및
    상기 순서 파라미터에 따라, 상기 인접한 블록에 대응되는 인트라 예측 모드를 순차적으로 상기 모드 리스트에 첨가하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  58. 제56항에 있어서,
    상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 결정하는 단계는,
    상기 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드를 결정하는 단계; 및
    상기 가중치 행렬 도출 모드에 대응되는 인트라 예측 모드에 기반하여, 제1 인덱스 간격에 따라, 상기 관련 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  59. 제56항에 있어서,
    상기 인트라 예측 방법은,
    상기 모드 리스트가 상기 기설정된 리스트 길이를 만족하지 않으면, 기설정된 예측 모드를 상기 첨가할 모드로 결정하는 단계 - 상기 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 중의 하나 또는 복수 개를 포함함 - ; 및
    상기 첨가할 모드가 상기 기설정된 첨가 조건을 만족하면, 상기 첨가할 모드를 상기 모드 리스트에 첨가하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  60. 제56항에 있어서,
    상기 인트라 예측 방법은,
    상기 모드 리스트가 상기 기설정된 리스트 길이를 만족하지 않으면, 상기 모드 리스트의 관련 인트라 예측 모드를 결정하고, 상기 관련 인트라 예측 모드를 상기 첨가할 모드로 결정하는 단계; 및
    상기 첨가할 모드가 상기 기설정된 첨가 조건을 만족하면, 상기 첨가할 모드를 상기 모드 리스트에 첨가하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  61. 제60항에 있어서,
    상기 모드 리스트의 관련 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트 중의 어느 한 예측 모드에 기반하여, 제2 인덱스 간격에 따라, 상기 관련 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  62. 제56항 내지 제61항 중 어느 한 항에 있어서,
    상기 인트라 예측 방법은,
    상기 첨가할 모드가 존재하고, 상기 첨가할 모드가 상기 모드 리스트에서의 예측 모드와 모두 상이하면, 상기 첨가할 모드가 상기 기설정된 첨가 조건을 만족한다고 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  63. 제55항에 있어서,
    상기 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 단계는,
    상기 가중치 행렬 도출 모드에 대응되는 리스트 구축 정책을 결정하는 단계; 및
    상기 리스트 구축 정책에 따라, 상기 모드 리스트를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  64. 제55항에 있어서,
    상기 인트라 예측 방법은,
    후보 인트라 예측 모드를 설정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  65. 제64항에 있어서,
    상기 모드 리스트에 기반하여, 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트 중의 하나의 예측 모드를 상기 제1 인트라 예측 모드로 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  66. 제64항에 있어서,
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트에서 상기 하나의 예측 모드를 삭제하고, 상기 후보 인트라 예측 모드를 상기 모드 리스트에 첨가하여, 업데이트된 모드 리스트를 획득하는 단계; 및
    상기 업데이트된 모드 리스트에서 하나의 예측 모드를 선택하여 상기 제2 인트라 예측 모드로 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  67. 제55항에 있어서,
    상기 인트라 예측 방법은,
    상기 모드 리스트의 길이 파라미터를 (N+1)로 설정하는 단계 - N은 양의 정수임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  68. 제67항에 있어서,
    상기 모드 리스트에 기반하여, 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트를 사용하여 상기 제1 인트라 예측 모드를 결정하면, 상기 모드 리스트의 상위 N개의 예측 모드 중의 하나의 예측 모드를 상기 제1 인트라 예측 모드로 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  69. 제68항에 있어서,
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트의, 상기 제1 인트라 예측 모드 외의 다른 N개의 예측 모드를 이용하여 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  70. 제67항에 있어서,
    상기 모드 리스트에 기반하여, 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트를 사용하지 않고 상기 제1 인트라 예측 모드를 결정하면, 상기 모드 리스트의 상위 N개의 예측 모드 중의 하나의 예측 모드를 상기 제2 인트라 예측 모드로 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  71. 제54항에 있어서,
    상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계는,
    상기 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드, 기설정된 예측 모드에 대해 순차적으로 순서 배정 처리를 수행하여, 예측 모드의 후보 리스트를 획득하는 단계 - 상기 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 중의 하나 또는 복수 개를 포함함 - ; 및
    상기 예측 모드의 후보 리스트에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  72. 제54항에 있어서,
    상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계는,
    상기 가중치 행렬 도출 모드에 대응되는 상기 제1 인트라 예측 모드의 참조 집합을 구축하는 단계; 상기 가중치 행렬 도출 모드에 대응되는 상기 제2 인트라 예측 모드의 참조 집합을 구축하는 단계;
    상기 제1 인트라 예측 모드의 참조 집합에 기반하여 상기 제1 인트라 예측 모드를 결정하는 단계; 및
    상기 제2 인트라 예측 모드의 참조 집합에 기반하여 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  73. 제54항에 있어서,
    상기 인트라 예측 방법은,
    제1 모드 인덱스 범위에 따라 상기 가중치 행렬 도출 모드를 결정하는 단계 - 상기 제1 모드 인덱스 범위는 상기 가중치 행렬 도출 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  74. 제54항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 크기 파라미터가 제1 크기 임계값보다 작으면, 제1 모드 인덱스 범위에 따라 상기 가중치 행렬 도출 모드를 결정하는 단계 - 상기 제1 모드 인덱스 범위는 상기 가중치 행렬 도출 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  75. 제73항 또는 제74항에 있어서,
    제1 모드 인덱스 범위는 제1 하한 임계값 및 제1 상한 임계값을 포함하고, 상기 인트라 예측 방법은,
    상기 가중치 행렬 도출 모드의 인덱스 번호가 상기 제1 하한 임계값보다 작으면, 상기 가중치 행렬 도출 모드의 인덱스 번호를 상기 제1 하한 임계값으로 설정하는 단계; 및
    상기 가중치 행렬 도출 모드의 인덱스 번호가 상기 제1 상한 임계값보다 크면, 상기 가중치 행렬 도출 모드의 인덱스 번호를 상기 제1 상한 임계값으로 설정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  76. 제54항에 있어서,
    상기 인트라 예측 방법은,
    제2 모드 인덱스 범위에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계 - 상기 제2 모드 인덱스 범위는 인트라 예측 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  77. 제54항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 크기 파라미터가 제2 크기 임계값보다 작으면, 제2 모드 인덱스 범위에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계 - 상기 제2 모드 인덱스 범위는 인트라 예측 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  78. 제76항 또는 제77항에 있어서,
    제2 모드 인덱스 범위는 제2 하한 임계값 및 제2 상한 임계값을 포함하고, 상기 인트라 예측 방법은,
    상기 제1 인트라 예측 모드의 제1 인덱스 번호를 결정하고, 상기 제2 인트라 예측 모드의 제2 인덱스 번호를 결정하는 단계;
    상기 제1 인덱스 번호 및 상기 제2 인덱스 번호를 모두 상기 제2 하한 임계값보다 크도록 설정하는 단계; 및
    상기 제1 인덱스 번호 및 상기 제2 인덱스 번호를 모두 상기 제2 상한 임계값보다 작도록 설정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  79. 제54항에 있어서,
    상기 인트라 예측 방법은,
    상기 모드 리스트에 따라 상기 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정하는 단계;
    오프셋 모드 파라미터를 결정하고, 상기 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하는 경우, 상기 현재 블록의 오프셋 파라미터를 결정하는 단계;
    상기 제1 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제1 인트라 예측 모드를 결정하고, 상기 제2 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제2 인트라 예측 모드를 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  80. 제79항에 있어서,
    상기 오프셋 파라미터는 오프셋 방식 및 오프셋량을 포함하고,
    상기 제1 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제1 인트라 예측 모드를 결정하고, 상기 제2 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제2 인트라 예측 모드를 결정하는 단계는,
    상기 오프셋 방식 및 상기 오프셋량에 따라 상기 제1 초기 모드에 대해 오프셋 처리를 수행하여, 상기 제1 인트라 예측 모드를 결정하는 단계; 및
    상기 오프셋 방식 및 상기 오프셋량에 따라 상기 제2 초기 모드에 대해 오프셋 처리를 수행하여, 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  81. 제79항에 있어서,
    상기 인트라 예측 방법은,
    상기 오프셋 모드 파라미터가 오프셋 처리를 수행하지 않는 것을 지시할 경우, 상기 모드 리스트에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  82. 제54항에 있어서,
    상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계는,
    상기 제1 인트라 예측 모드에 따라 상기 현재 블록의 제1 예측값을 결정하는 단계;
    상기 제2 인트라 예측 모드에 따라 상기 현재 블록의 제2 예측값을 결정하는 단계; 및
    상기 가중치 행렬을 이용하여 상기 제1 예측값 및 상기 제2 예측값에 대해 가중 평균 계산을 수행하여, 상기 현재 블록의 예측값을 획득하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  83. 제54항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 크기 파라미터를 결정하는 단계; 및
    상기 크기 파라미터에 따라 상기 현재 블록이 상기 SAWP 모드를 사용하는지 여부를 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  84. 제83항에 있어서,
    상기 크기 파라미터는 너비 및 높이를 포함하고;
    상기 인트라 예측 방법은,
    상기 너비가 제1 임계값보다 크고 상기 높이가 제2 임계값보다 크면, 상기 현재 블록이 상기 SAWP 모드를 사용한다고 결정하는 단계; 또는,
    상기 너비가 제3 임계값보다 작고 상기 높이가 제4 임계값보다 크면, 상기 현재 블록이 상기 SAWP 모드를 사용한다고 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  85. 제54항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 픽셀 파라미터를 결정하는 단계; 및
    상기 픽셀 파라미터 및 제5 임계값에 따라 상기 현재 블록이 상기 SAWP 모드를 사용하는지 여부를 판단하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  86. 제54항에 있어서,
    상기 인트라 예측 방법은,
    현재 블록의 인트라 예측 모드 파라미터를 결정하는 단계;
    상기 인트라 예측 모드 파라미터에 따라 상기 현재 블록이 상기 SAWP 모드를 사용하는지 여부를 판단하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  87. 인트라 예측 방법으로서,
    디코더에 적용되고, 상기 인트라 예측 방법은,
    코드 스트림을 해석하여, 현재 블록의 인트라 예측 모드 파라미터를 결정하는 단계;
    상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 모드 리스트를 결정하는 단계;
    상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  88. 제87항에 있어서,
    상기 현재 블록의 모드 리스트를 결정하는 단계는,
    상기 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드를 결정하고, 상기 인접한 블록에 대응되는 인트라 예측 모드를 첨가할 모드로 결정하는 단계;
    상기 첨가할 모드가 기설정된 첨가 조건을 만족하면, 상기 첨가할 모드를 상기 모드 리스트에 첨가하는 단계;
    상기 모드 리스트가 기설정된 리스트 길이를 만족하지 않으면, 상기 현재 블록의 가중치 행렬 도출 모드에 대해, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 결정하고, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드를 상기 첨가할 모드로 결정하는 단계; 및
    상기 첨가할 모드가 상기 기설정된 첨가 조건을 만족하면, 상기 첨가할 모드를 상기 모드 리스트에 첨가하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  89. 제88항에 있어서,
    상기 가중치 행렬 도출 모드를 이용하여 모드 리스트를 결정하는 단계는,
    상기 가중치 행렬 도출 모드에 대응되는 리스트 구축 정책을 결정하는 단계; 및
    상기 리스트 구축 정책에 따라, 상기 모드 리스트를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  90. 제87항에 있어서,
    상기 인트라 예측 방법은,
    후보 인트라 예측 모드를 설정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  91. 제90항에 있어서,
    상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트 중의 하나의 예측 모드를 상기 제1 인트라 예측 모드로 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  92. 제91항에 있어서,
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트에서 상기 하나의 예측 모드를 삭제하고, 상기 후보 인트라 예측 모드를 상기 모드 리스트에 첨가하여, 업데이트된 모드 리스트를 획득하는 단계; 및
    상기 업데이트된 모드 리스트에서 하나의 예측 모드를 선택하여 상기 제2 인트라 예측 모드로 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  93. 제87항에 있어서,
    상기 인트라 예측 방법은,
    상기 모드 리스트의 길이 파라미터를 (N+1)로 설정하는 단계 - N은 양의 정수임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  94. 제93항에 있어서,
    상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트를 사용하여 상기 제1 인트라 예측 모드를 결정하면, 상기 모드 리스트의 상위 N개의 예측 모드 중의 하나의 예측 모드를 상기 제1 인트라 예측 모드로 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  95. 제94항에 있어서,
    상기 제1 인트라 예측 모드 및 상기 모드 리스트에 따라, 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트의, 상기 제1 인트라 예측 모드 외의 다른 N개의 예측 모드를 이용하여 상기 제2 인트라 예측 모드를 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  96. 제93항에 있어서,
    상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계는,
    상기 모드 리스트를 사용하지 않고 상기 제1 인트라 예측 모드를 결정하면, 상기 모드 리스트의 상위 N개의 예측 모드 중의 하나의 예측 모드를 상기 제2 인트라 예측 모드로 결정하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  97. 제88항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 인접한 블록에 대응되는 인트라 예측 모드, 상기 가중치 행렬 도출 모드에 대응되는 관련 인트라 예측 모드, 기설정된 예측 모드에 대해 순차적으로 순서 배정 처리를 수행하여, 예측 모드의 후보 리스트를 획득하는 단계 - 상기 기설정된 예측 모드는 DC 모드, Bilinear 모드, Planar 모드 중의 하나 또는 복수 개를 포함함 - ; 및
    상기 예측 모드의 후보 리스트에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  98. 제88항에 있어서,
    상기 인트라 예측 방법은,
    상기 가중치 행렬 도출 모드에 대응되는 상기 제1 인트라 예측 모드의 참조 집합을 구축하는 단계;
    상기 가중치 행렬 도출 모드에 대응되는 상기 제2 인트라 예측 모드의 참조 집합을 구축하는 단계;
    상기 제1 인트라 예측 모드의 참조 집합에 기반하여 상기 제1 인트라 예측 모드를 결정하는 단계; 및
    상기 제2 인트라 예측 모드의 참조 집합에 기반하여 상기 제2 인트라 예측 모드를 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  99. 제88항에 있어서,
    상기 인트라 예측 방법은,
    제1 모드 인덱스 범위에 따라 상기 가중치 행렬 도출 모드를 결정하는 단계 - 상기 제1 모드 인덱스 범위는 상기 가중치 행렬 도출 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  100. 제88항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 크기 파라미터가 제1 크기 임계값보다 작으면, 제1 모드 인덱스 범위에 따라 상기 가중치 행렬 도출 모드를 결정하는 단계 - 상기 제1 모드 인덱스 범위는 상기 가중치 행렬 도출 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  101. 제99항 또는 제100항에 있어서,
    제1 모드 인덱스 범위는 제1 하한 임계값 및 제1 상한 임계값을 포함하고, 상기 인트라 예측 방법은,
    상기 가중치 행렬 도출 모드의 인덱스 번호가 상기 제1 하한 임계값보다 작으면, 상기 가중치 행렬 도출 모드의 인덱스 번호를 상기 제1 하한 임계값으로 설정하는 단계; 및
    상기 가중치 행렬 도출 모드의 인덱스 번호가 상기 제1 상한 임계값보다 크면, 상기 가중치 행렬 도출 모드의 인덱스 번호를 상기 제1 상한 임계값으로 설정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  102. 제87항에 있어서,
    상기 인트라 예측 방법은,
    제2 모드 인덱스 범위에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계 - 상기 제2 모드 인덱스 범위는 인트라 예측 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  103. 제87항에 있어서,
    상기 인트라 예측 방법은,
    상기 현재 블록의 크기 파라미터가 제2 크기 임계값보다 작으면, 제2 모드 인덱스 범위에 따라 상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드를 결정하는 단계 - 상기 제2 모드 인덱스 범위는 인트라 예측 모드의 인덱스 번호를 제한하기 위한 것임 - 를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  104. 제102항 또는 제103항에 있어서,
    제2 모드 인덱스 범위는 제2 하한 임계값 및 제2 상한 임계값을 포함하고,
    상기 인트라 예측 방법은,
    상기 제1 인트라 예측 모드의 제1 인덱스 번호를 결정하고, 상기 제2 인트라 예측 모드의 제2 인덱스 번호를 결정하는 단계;
    상기 제1 인덱스 번호 및 상기 제2 인덱스 번호를 모두 상기 제2 하한 임계값보다 크도록 설정하는 단계; 및
    상기 제1 인덱스 번호 및 상기 제2 인덱스 번호를 모두 상기 제2 상한 임계값보다 작도록 설정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  105. 제87항에 있어서,
    상기 인트라 예측 방법은,
    상기 모드 리스트에 따라 상기 현재 블록의 제1 초기 모드 및 제2 초기 모드를 결정하는 단계;
    오프셋 모드 파라미터를 결정하고, 상기 오프셋 모드 파라미터가 오프셋 처리를 수행하는 것을 지시하는 경우, 상기 현재 블록의 오프셋 파라미터를 결정하는 단계;
    상기 제1 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제1 인트라 예측 모드를 결정하는 단계; 상기 제2 초기 모드 및 상기 오프셋 파라미터에 따라, 상기 현재 블록의 제2 인트라 예측 모드를 결정하는 단계; 및
    상기 제1 인트라 예측 모드 및 상기 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계를 더 포함하는 것을 특징으로 하는 인트라 예측 방법.
  106. 제87항에 있어서,
    상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하는 단계는,
    상기 제1 인트라 예측 모드에 따라 상기 현재 블록의 제1 예측값을 결정하는 단계;
    상기 제2 인트라 예측 모드에 따라 상기 현재 블록의 제2 예측값을 결정하는 단계; 및
    상기 제1 예측값 및 상기 제2 예측값에 대해 가중 평균 계산을 수행하여, 상기 현재 블록의 예측값을 획득하는 단계를 포함하는 것을 특징으로 하는 인트라 예측 방법.
  107. 인코더로서,
    상기 인코더는 제1 결정부를 포함하고,
    상기 제1 결정부는, 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하고; 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하도록 구성되고;
    상기 제1 결정부는 또한, 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하는 경우, 상기 현재 블록의 모드 리스트를 결정하고; 상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하며; 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하도록 구성되는 것을 특징으로 하는 인코더.
  108. 인코더로서,
    상기 인코더는 제1 프로세서, 상기 제1 프로세서가 실행 가능한 명령어가 저장된 제1 메모리를 포함하며, 상기 제1 프로세서에 의해 상기 명령어가 실행될 경우, 제1항 내지 제33항 또는 제34항 내지 제53항 중 어느 한 항에 따른 인트라 예측 방법을 구현하는 것을 특징으로 하는 인코더.
  109. 디코더로서,
    상기 디코더는 디코딩부, 제2 결정부를 포함하며,
    상기 디코딩부는, 코드 스트림을 해석하도록 구성되고;
    상기 제2 결정부는, 현재 블록의 인트라 예측 모드 파라미터를 결정하고;
    상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 가중치 행렬 도출 모드를 결정하며; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하고; 상기 가중치 행렬 도출 모드에 따라 상기 현재 블록의 가중치 행렬을 결정하고; 상기 제1 인트라 예측 모드, 제2 인트라 예측 모드 및 상기 가중치 행렬에 기반하여, 상기 현재 블록의 예측값을 결정하도록 구성되고;
    상기 제2 결정부는 또한, 현재 블록의 인트라 예측 모드 파라미터를 결정하고; 상기 인트라 예측 모드 파라미터가 상기 현재 블록이 SAWP 모드를 사용하여 상기 현재 블록의 인트라 예측값을 결정하도록 지시하는 경우, 상기 현재 블록의 모드 리스트를 결정하며; 상기 모드 리스트에 따라, 상기 현재 블록의 제1 인트라 예측 모드 및 제2 인트라 예측 모드를 결정하고; 상기 제1 인트라 예측 모드 및 제2 인트라 예측 모드에 기반하여, 상기 현재 블록의 예측값을 결정하도록 구성되는 것을 특징으로 하는 디코더.
  110. 디코더로서,
    상기 디코더는 제2 프로세서, 상기 제2 프로세서가 실행 가능한 명령어가 저장된 제2 메모리를 포함하며, 상기 제2 프로세서에 의해 상기 명령어가 실행될 경우, 제54항 내지 제86항 또는 제87항 내지 제106항 중 어느 한 항에 따른 인트라 예측 방법을 구현하는 것을 특징으로 하는 디코더.
  111. 컴퓨터 저장 매체로서,
    상기 컴퓨터 저장 매체에는 컴퓨터 프로그램이 저장되고, 상기 컴퓨터 프로그램이 제1 프로세서에 의해 실행될 경우, 제1항 내지 제33항 또는 제34항 내지 제53항 중 어느 한 항에 따른 인트라 예측 방법을 구현하거나, 제2 프로세서에 의해 실행될 경우, 제54항 내지 제86항 또는 제87항 내지 제106항 중 어느 한 항에 따른 인트라 예측 방법을 구현하는 것을 특징으로 하는 컴퓨터 저장 매체.
KR1020237022402A 2020-12-03 2020-12-24 인트라 예측 방법, 인코더, 디코더 및 저장 매체 KR20230111254A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CNPCT/CN2020/133708 2020-12-03
CN2020133708 2020-12-03
PCT/CN2020/139178 WO2022116317A1 (zh) 2020-12-03 2020-12-24 帧内预测方法、编码器、解码器以及存储介质

Publications (1)

Publication Number Publication Date
KR20230111254A true KR20230111254A (ko) 2023-07-25

Family

ID=81852897

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237022402A KR20230111254A (ko) 2020-12-03 2020-12-24 인트라 예측 방법, 인코더, 디코더 및 저장 매체

Country Status (7)

Country Link
US (2) US20230300326A1 (ko)
EP (1) EP4258658A1 (ko)
JP (1) JP2023552997A (ko)
KR (1) KR20230111254A (ko)
CN (3) CN116569546A (ko)
MX (1) MX2023006589A (ko)
WO (2) WO2022116317A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220088804A (ko) * 2019-09-24 2022-06-28 후아웨이 테크놀러지 컴퍼니 리미티드 서브픽처 디블로킹을 위한 필터 플래그
US20230033501A1 (en) * 2021-08-02 2023-02-02 Tencent America LLC Constraint of intra mode for geometric partition mode with inter and intra prediction
WO2024007128A1 (zh) * 2022-07-04 2024-01-11 Oppo广东移动通信有限公司 视频编解码方法、装置、设备、系统、及存储介质
WO2024007366A1 (zh) * 2022-07-08 2024-01-11 Oppo广东移动通信有限公司 一种帧内预测融合方法、视频编解码方法、装置和系统

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011145862A2 (en) * 2010-05-17 2011-11-24 Lg Electronics Inc. New intra prediction modes
US9344715B2 (en) * 2011-11-07 2016-05-17 Futurewei Technologies, Inc. Angular table for improving intra prediction
EP3459244A4 (en) * 2016-01-12 2020-03-04 Telefonaktiebolaget LM Ericsson (publ) VIDEO CODING WITH HYBRID INTRAPREDICTION
CA3025520A1 (en) * 2016-05-25 2017-11-30 Arris Enterprises Llc Improved weighted angular prediction coding for intra coding
US11140387B2 (en) * 2016-12-07 2021-10-05 Kt Corporation Method and apparatus for processing video signal
EP3632110A1 (en) * 2017-07-05 2020-04-08 ARRIS Enterprises LLC Post-filtering for weighted angular prediction
US11159828B2 (en) * 2017-10-09 2021-10-26 Arris Enterprises Llc Adaptive unequal weight planar prediction
US10623736B2 (en) * 2018-06-14 2020-04-14 Telefonaktiebolaget Lm Ericsson (Publ) Tile selection and bandwidth optimization for providing 360° immersive video
CN117528077A (zh) * 2018-10-27 2024-02-06 华为技术有限公司 图像预测方法及装置
KR20200083339A (ko) * 2018-12-31 2020-07-08 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
KR20200110214A (ko) * 2019-03-12 2020-09-23 현대자동차주식회사 예측 유닛을 서브 유닛들로 분할하여 예측하는 인트라 예측 방법 및 장치

Also Published As

Publication number Publication date
WO2022116317A1 (zh) 2022-06-09
CN116601951A (zh) 2023-08-15
WO2022117089A1 (zh) 2022-06-09
CN116569546A (zh) 2023-08-08
MX2023006589A (es) 2023-06-16
JP2023552997A (ja) 2023-12-20
US20230300326A1 (en) 2023-09-21
CN116980594A (zh) 2023-10-31
US20230308645A1 (en) 2023-09-28
EP4258658A1 (en) 2023-10-11

Similar Documents

Publication Publication Date Title
CN110393010B (zh) 视频译码中的帧内滤波旗标
US11516496B2 (en) Image encoding/decoding method and apparatus, and recording medium storing bitstream
EP3840387B1 (en) Method for encoding/decoding image signal and device for same
KR20220127801A (ko) 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
US11973986B2 (en) Video signal processing method and device using secondary transform
KR20230111254A (ko) 인트라 예측 방법, 인코더, 디코더 및 저장 매체
US20130003855A1 (en) Processing method and device for video signals
KR20220016232A (ko) 코딩 및 디코딩 방법, 장치 및 저장 매체
KR20190111878A (ko) 계층적 구조의 심볼을 부호화하는 비디오 부호화 방법 및 그 장치, 계층적 구조의 심볼을 복호화하는 비디오 복호화 방법 및 그 장치
KR102398612B1 (ko) 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
CN112956200A (zh) 视频信号编码/解码方法以及用于所述方法的设备
KR20190042732A (ko) 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
KR20230111255A (ko) 인트라 프레임 예측 방법, 장치 및 디코더와 인코더
US20230199210A1 (en) Coding tool setting method and video decoding apparatus
EP4297406A1 (en) Intra-frame prediction method, coder, decoder and storage medium
WO2019233999A1 (en) Video coding and decoding
WO2022188114A1 (zh) 帧内预测方法、编码器、解码器以及存储介质
WO2022140905A1 (zh) 预测方法、编码器、解码器以及存储介质
US20230269372A1 (en) Method and device for encoding/decoding image, and recording medium having stored bitstream
WO2023200907A1 (en) Methods and devices for geometric partitioning mode with adaptive blending
CN116962684A (zh) 视频编解码方法与系统、及视频编码器与视频解码器