KR20230139810A - 크로스-컴포넌트 샘플 적응 오프셋에서의 크로마 코딩 강화 - Google Patents

크로스-컴포넌트 샘플 적응 오프셋에서의 크로마 코딩 강화 Download PDF

Info

Publication number
KR20230139810A
KR20230139810A KR1020237028560A KR20237028560A KR20230139810A KR 20230139810 A KR20230139810 A KR 20230139810A KR 1020237028560 A KR1020237028560 A KR 1020237028560A KR 20237028560 A KR20237028560 A KR 20237028560A KR 20230139810 A KR20230139810 A KR 20230139810A
Authority
KR
South Korea
Prior art keywords
component
samples
sample
video
classifier
Prior art date
Application number
KR1020237028560A
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 KR20230139810A publication Critical patent/KR20230139810A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/172Methods 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 picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

전자 장치는 비디오 신호를 디코딩하는 방법을 수행한다. 상기 방법은, 비디오 신호로부터 제1 컴포넌트 및 제2 컴포넌트를 포함하는 픽처 프레임을 수신하는 단계; 상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트에 기반하여 상기 제1 컴포넌트를 위한 분류기를 확정하는 단계; 상기 분류기에 따라 상기 제1 컴포넌트의 해당 샘플에 대한 샘플 오프셋을 확정하는 단계; 및 상기 확정된 샘플 오프셋에 기반하여 상기 제1 컴포넌트의 해당 샘플의 값을 수정하는 단계를 포함하되, 상기 제1 컴포넌트는 루마 컴포넌트이고, 상기 제2 컴포넌트는 제1 크로마 컴포넌트이다.

Description

크로스-컴포넌트 샘플 적응 오프셋에서의 크로마 코딩 강화
본 발명은 일반적으로 비디오 코딩 및 압축에 관한 것으로, 더 구체적으로 루마 및 크로마 모두의 코딩효율을 향상시키는 방법 및 장치에 관한 것이다.
디지털 비디오는 디지털 TV, 랩톱 또는 데스크톱 컴퓨터, 태블릿 컴퓨터, 디지털 카메라, 디지털 기록 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 스마트 폰, 비디오 화상 회의 장치, 비디오 스트리밍 장치와 같은 다양한 전자 장치에 의하여 지지될 수 있다. 전자 장치는 비디오 압축/복원 표준을 구현하는 것을 통하여 디지털 비디오 데이터를 송신, 수신, 인코딩, 디코딩 및/또는 저장할 수 있다. 일부 잘 알려진 비디오 코딩 표준은 ISO/IEC MPEG와 ITU-T VCEG에 의하여공동으로 개발된 다용도 비디오 코딩(VVC: Versatile Video Coding), 고효율 비디오 코딩(HEVC: High Efficiency Video Coding, H.265 또는 MPEG-H 파트 2라고도 함) 및 고급 비디오 코딩(AVC: Advanced Video Coding, H.264 또는 MPEG-4 파트 10이라고도 함)을 포함한다. AO 미디어 비디오 1(AV1: AOMedia Video 1)은 이전 표준 VP9의 후속으로서 오픈 미디어 연합(AOM: Alliance for Open Media)에 의하여 개발되었다. 오디오 비디오 코딩(AVS: Audio Video Coding)은 디지털 오디오 및 디지털 비디오 압축 표준을 의미하며, 중국 오디오 및 비디오 코딩 표준 작업 그룹이 개발한 또 다른 비디오 압축 표준 시리즈이다.
비디오 압축은 일반적으로 비디오 데이터에 내재된 중복성을 감소하거나 제거하기 위하여 공간적(인트라-프레임) 예측 및/또는 시간적(인터-프레임) 예측을 수행하는 것을 포함할 수 있다. 블록-기반 비디오 코딩의 경우, 비디오 프레임은 하나 또는 그 이상의 슬라이스(slice)로 분할되며, 각 슬라이스는 코딩 트리 단위(coding tree unit, CTU)로도 불리는 비디오 블록들을 복수 개 구비할 수 있다. 각 CTU는 하나의 코딩 단위(coding unit, CU)를 포함하거나, 소정의 최소 CU 크기에 도달 할 때까지 더 작은 CU로 재귀적으로 분할될 수 있다. 각 CU("리프 CU(leaf CU)"라고도 함)는 하나 또는 복수 개의 변환 단위(transformation unit, TU)를 포함하고, 각 CU는 하나 또는 복수 개의 예측 단위(prediction unit, PU)를 포함할 수 있다. 각 CU는 인트라, 인터 또는 IBC 모드로 코딩될 수 있다. 비디오 프레임의 인트라 코딩된(I) 슬라이스 내의 비디오 블록들은 동일한 비디오 프레임 내의 인접 블록들의 기준 샘플들에 대한 공간적 예측을 사용하여 인코딩될 수 있다. 비디오 프레임의 인터 코딩된(P 또는 B) 슬라이스 내의 비디오 블록들에 대하여, 동일한 비디오 프레임 내의 인접 블록의 기준 샘플들에 대한 공간적 예측 또는 다른 이전 및/또는 미래 기준 비디오 프레임들의 기준 샘플들에 대한 시간적 예측을 사용할 수 있다.
예하면, 인접 블록과 같이 이전에 인코딩된 기준 블록에 기반한 공간적 또는 시간적 예측은 코딩될 현재 비디오 블록에 대한 예측 블록을 생성할 수 있다. 기준 블록을 찾는 과정은 블록 매칭 알고리즘에 의하여 수행될 수 있다. 코딩될 현재 블록과 예측 블록 사이의 픽셀 차이를 나타내는 잔여 데이터를 잔여 블록 또는 예측 오차라고할 수 있다. 인터-코딩된 블록은 예측 블록을 구성하는 기준 프레임 내의 기준 블록을 가리키는 움직임 벡터(motion vector) 및 잔여 블록에 따라 인코딩될 수 있다. 일반적으로, 움직임 벡터를 확정하는 프로세스를 움직임 추정이라고 한다. 인트라 코딩된 블록은 인트라 예측 모드 및 잔여 블록에 따라 인코딩될 수 있다. 추가 압축을 위하여, 잔여 블록은 픽셀 도메인에서 주파수 도메인과 같은 변환 도메인으로 변환되고, 그 결과 추후에 양자화되는 잔여 변환 계수들이 생성될 수 있다. 초기에 2 차원-행렬로 배열된 양자화된 변환 계수들은 스캔되어 변환 계수들의 1 차원-벡터를 생성하고, 다음 비디오 비트스트림으로 엔트로피 인코딩되어 더 많은 압축을 달성할 수 있다.
다음, 인코딩된 비디오 비트스트림은 컴퓨터 판독 가능한 저장 매체(예를 들어, 플래시 메모리)에 저장되어 디지털 비디오 기능을 가진 다른 전자 장치에 의하여액세스되거나, 유선 또는 무선으로 전자 장치에 직접 전송될 수 있다. 다음, 전자 장치는 예를 들어 인코딩된 비디오 비트스트림을 파싱하여 비트스트림으로부터 신택스 요소들(systax elements)을 획득하고, 비트스트림으로부터 획득한 신택스 요소들에 적어도 일부분 기반하여 디지털 비디오 데이터를 인코딩된 비디오 비트스트림으로부터 원 포맷으로 재구성하는 것을 통하여 비디오 복원(위에서 설명한 비디오 압축과 반대되는 프로세스)을 수행하며, 전자 장치의 디스플레이상에 재구성된 디지털 비디오 데이터를 렌더링할 수 있다.
디지털 비디오 품질이 고화질에서 4K × 2K 또는 8K × 4K로 변화함에 따라, 인코딩/디코딩될 비디오 데이터의 양이 급격히 증가한다. 디코딩된 비디오 데이터의 이미지 품질을 유지하는 동시에 비디오 데이터를 보다 효율적으로 인코딩/디코딩할 수 있는 방법은 끊임없는 도전이다.
본 출원은 비디오 데이터 인코딩 및 디코딩과 관련된 구현 방식들을 설명하며, 더 구체적으로 루마 컴포넌트들과 크로마 컴포넌트들 사이의 크로스-컴포넌트 관계를 탐색하는 것을 통하여 코딩 효율을 향상시키는 것을 포함하는 루마 컴포넌트들과 크로마 컴포넌트들의 코딩 효율을 향상시키는것과 관련된 구현 방식들을 설명한다.
본 출원의 제1 측면에 따르면, 비디오 신호를 디코딩하는 방법은, 비디오 신호로부터 제1 컴포넌트 및 제2 컴포넌트를 포함하는 픽처 프레임을 수신하는 단계; 상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트에 기반하여 상기 제1 컴포넌트를 위한 분류기를 확정하는 단계; 상기 분류기에 따라 상기 제1 컴포넌트의 해당 샘플에 대한 샘플 오프셋을 확정하는 단계; 및 상기 확정된 샘플 오프셋에 기반하여 상기 제1 컴포넌트의 해당 샘플의 값을 수정하는 단계를 포함하되, 상기 제1 컴포넌트는 루마 컴포넌트이고, 상기 제2 컴포넌트는 제1 크로마 컴포넌트이다.
일부 실시예들에서, 상기 제1 컴포넌트를 위한 분류기는 상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 제2 세트에 추가적으로 기반한다.
일부 실시예들에서, 상기 픽처 프레임은 제3 컴포넌트를 더 포함하고, 상기 제1 컴포넌트를 위한 분류기는 상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제3 컴포넌트의 하나 또는 그 이상의 샘플들의 제3 세트에 추가적으로 기반하고, 상기 제3 컴포넌트는 제2 크로마 컴포넌트이다.
본 출원의 제2 측면에 따르면, 전자 장치는 하나 또는 그 이상의 프로세싱 유닛들, 메모리 및 상기 메모리에 저장된 복수의 프로그램들을 포함한다. 상기 프로그램들은, 상기 하나 또는 그 이상의 프로세싱 유닛들에 의하여 실행될 경우, 상기 전자 장치로 하여금 상기에서 설명한 비디오 데이터를 코딩하는 방법을 수행하도록 한다.
본 출원의 제3 측면에 따르면, 비-일시적 컴퓨터 판독 가능 저장 매체는 하나 또는 그 이상의 프로세싱 유닛들을 구비하는 전자 장치에 의하여 실행되기 위한 복수의 프로그램들을 저장한다. 상기 프로그램들은, 상기 하나 또는 그 이상의 프로세싱 유닛들에 의하여 실행될 경우 상기 전자 장치로 하여금 상기에서 설명한 비디오 데이터를 코딩하는 방법을 수행하도록 한다.
본 발명은 루마 컴포넌트들과 크로마 컴포넌트들 사이의 크로스-컴포넌트 관계를 탐색하는 것을 통하여 코딩 효율을 향상시킬 수 있는 효과를 제공한다.
구현 방식들에 대한 진일보 이해를 제공하기 위해 포함되고 본 문에 통합되며 명세서의 일부를 구성하는 첨부 도면들은, 설명된 구현 방식들을 도시하고, 설명과 함께 기본 원리를 서술하는 역할을 한다. 동일한 도면 부호는 대응되는 부분을 나타낸다.
도 1은 본 개시의 일부 구현 방식들에 따른 예시적인 비디오 인코딩 및 디코딩 시스템을 도시하는 블록도이다.
도 2는 본 개시의 일부 구현 방식들에 따른 예시적인 비디오 인코더를 도시하는 블록도이다.
도 3은 본 개시의 일부 구현 방식들에 따른 예시적인 비디오 디코더를 도시하는 블록도이다.
도 4a 내지 도 4e는 본 개시의 일부 구현 방식들에 따른 프레임이 서로 다른 크기와 형상의 복수 개의 비디오 블록들로 재귀적으로 분할되는 것을 도시하는 블록도들이다.
도 5는 본 개시의 일부 구현 방식들에 따른 샘플 적응 오프셋(SAO: Sample Adaptive Offset)에서 사용하는 4개의 그래디언트 패턴들을 나타내는 블록도이다.
도 6a는 본 개시의 일부 구현 방식들에 따른 크로마 샘플들에 적용되고 입력으로서 DBF Y를 사용하는 CCSAO의 시스템과 프로세스를 도시하는 블록도이다.
도 6b는 본 개시의 일부 구현 방식들에 따른 루마 샘플들 및 크로마 샘플들에 적용되고 입력으로서 DBF Y/Cb/Cr를 사용하는 CCSAO의 시스템과 프로세스를 도시하는 블록도이다.
도 6c는 본 개시의 일부 구현 방식들에 따른 독립적으로 동작할 수 있는 CCSAO의 시스템과 프로세스를 도시하는 블록도이다.
도 6d는 본 개시의 일부 구현 방식들에 따른 AVS 표준에서의 강화 샘플 적응 오프셋(ESAO: Enhanced Sample Adaptive Offset)과 병렬로 적용하는 CCSAO의 시스템과 프로세스를 도시하는 블록도이다.
도 6e는 본 개시의 일부 구현 방식들에 따른 SAO 이후 CCSAO를 적용하는 시스템과 프로세스를 도시하는 블록도이다.
도 6f는 본 개시의 일부 구현 방식들에 따른 CCSAO의 시스템과 프로세스가 CCALF 없이 독립적으로 동작할 수 있는 것을 도시하는 블록도이다.
도 6g는 본 개시의 일부 구현 방식들에 따른 크로스-컴포넌트 적응 루프 필터(Cross-Component Adaptive Loop Filter)와 병렬로 적용하는 CCSAO의 시스템과 프로세스를 도시하는 블록도이다.
도 7은 본 개시의 일부 구현 방식들에 따른 CCSAO를 사용하는 샘플 프로세스를 도시하는 블록도이다.
도 8은 본 개시의 일부 구현 방식들에 따른 CCSAO 프로세스가 수직 및 수평 디블록킹 필터(DBF: deblocking filter)와 인터리빙되는 것을 도시하는 블록도이다.
도 9는 본 개시의 일부 구현 방식들에 따른 크로스-컴포넌트 상관관계를 사용하여 비디오 신호를 디코딩하는 예시적인 프로세스를 도시하는 흐름도이다.
도 10a는 본 개시의 일부 구현 방식들에 따른 상이한 루마 (또는 크로마) 샘플 위치를 사용하여 C0 분류하는 분류기를 보여주는 블록도이다.
도 10b는 본 개시의 일부 구현 방식들에 따른 루마 후보들에 대한 상이한 형상들의 일부 예시들을 도시한다.
도 11은 본 개시의 일부 구현 방식들에 따른 모든 동일위치(collocated) 및 인접한 루마/크로마 샘플들을 CCSAO 분류에 공급할 수 있는 샘플 프로세스를 도시하는 블록도이다.
도 12는 본 발명의 일부 구현 방식들에 따른 동일위치 루마 샘플 값을 동일위치 및 인접한 루마 샘플들을 가중화하여 획득한 값으로 대체하는 예시적인 분류기를 도시한다.
도 13a는 본 발명의 일부 구현 방식들에 따른 분류에 사용된 동일위치 및 인접한 루마(크로마) 샘플들 중 어느 하나도 현재 픽처의 외부에 있는 경우 CCSAO를 현재 크로마(루마) 샘플에 적용하지 않는 것을 도시하는 블록도이다.
도 13b는 본 발명의 일부 구현 방식들에 따른 분류에 사용된 동일위치 및 인접한 루마 (크로마) 샘플들 중 어느 하나도 현재 픽처의 외부에 있는 경우 CCSAO를 현재 크로마(루마) 샘플에 적용하는 것을 도시하는 블록도이다.
도 14는 본 발명의 일부 구현 방식들에 따른 분류에 사용된 대응하는 선택된 동일위치 또는 인접한 루마 샘플이 가상 경계(VB)에 의하여 정의된 가상 공간의 외부에 있는 경우 CCSAO를 현재 크로마 샘플에 적용하지 않는 것을 도시하는 블록도이다.
도 15는 본 발명의 일부 구현 방식들에 따른 가상 경계의 외부에 있는 루마 샘플들에 중복 패딩 또는 미러 패딩(repetitive or mirror padding)을 적용한 것을 도시한다.
도 16은 본 발명의 일부 구현 방식들에 따른 9개의 동일위치 인접한 루마 샘플들이 모두 분류에 사용되는 경우 추가적으로 1개의 루마 라인 버퍼가 필요함을 도시한다.
도 17은 본 발명의 일부 구현 방식들에 따른 AVS에서 VB를 크로스하는 9개의 루마 후보 CCSAO가 2개의 루마 라인 버퍼를 추가로 증가할 수 있음을 도시한 예시도이다.
도 18은 본 발명의 일부 구현 방식들에 따른 VVC에서 VB를 크로스하는 9개의 루마 후보 CCSAO가 1개의 루마 라인 버퍼를 추가로 증가할 수 있음을 도시한 예시도이다.
도 19a 내지 도 19c는 본 발명의 일부 구현 방식들에 따른 AVS 및 VVC에서 크로마 샘플의 루마 후보들 중 어느 하나가 VB(현재 크로마 샘플 VB의 외부)를 크로스하는 경우 크로마 샘플에 대하여 CCSAO를 디스에이블 하는 것을 도시한다.
도 20a 내지 도 20c는 본 발명의 일부 구현 방식들에 따른 AVS 및 VVC에서 크로마 샘플의 루마 후보들 중 어느 하나가 VB(현재 크로마 샘플 VB의 외부)를 크로스하는 경우 크로마 샘플에 대한 중복 패딩을 사용하여 CCSA를 인에이블하는 것을 도시한다.
도 21a 내지 도 21c는 본 발명의 일부 구현 방식들에 따른 AVS 및 VVC에서 크로마 샘플의 루마 후보들 중 어느 하나가 VB(현재 크로마 샘플 VB의 외부)를 크로스하는 경우 크로마 샘플에 대한 미러 패딩을 사용하여 CCSAO를 인에이블 하는 것을 도시한다.
도 22a 내지 도 22b는 본 발명의 일부 구현 방식들에 따른 상이한 CCSAO 샘플 형상들에 대하여 양측 대칭 패딩(double sided symmetric padding)을 사용하여 CCSAO를 인에이블 하는 것을 도시한다.
도 23는 본 발명의 일부 구현 방식들에 따른 제한된 수의 루마 후보들을 사용하여 분류하는 제한을 도시한다.
도 24는 본 발명의 일부 구현 방식들에 따른 CCSAO이 적용된 영역이 코딩 트리 블록(CTB: coding tree block)/코딩 트리 유닛(CTU: coding tree unit) 경계에 정렬되지 않은 것을 도시한다.
도 25는 본 발명의 일부 구현 방식들에 따른 CCSAO 파라미터를 이용하여 CCSAO이 적용된 영역 프레임 분할을 고정할 수 있는 것을 도시한다.
도 26은 본 발명의 일부 구현예에 따른 CCSAO이 적용된 영역은 프레임/슬라이스/CTB 레벨에서 분할한 바이너리-트리(BT: Binary-tree)/쿼드-트리(QT: Quad-tree)/터너리-트리(TT: Ternary-tree)일 수 있음을 도시한다.
도 27은 본 발명의 일부 구현 방식들에 따른 픽처 프레임 내에서의 상이한 레벨들에서 사용하고 스위칭하는 복수의 분류기들을 도시한 블록도이다.
도 28은 본 발명의 일부 구현 방식들에 따른 CCSAO이 적용된 영역 분할은 동적이고 픽처 레벨에서 스위칭할 수 있음을 도시하는 블록도이다.
도 29는 본 발명의 일부 구현 방식들에 따른 본 개시에서 개시한 SAO 분류 방법들이 포스트 예측 필터로서 작용함을 도시하는 블록도이다.
도 30은 본 발명의 일부 구현 방식들에 따른 포스트 예측 SAO 필터에 있어서 각각의 컴포넌트가 현재 및 인접한 샘플들을 사용하여 분류할 수 있음을 도시하는 블록도이다.
도 31은 본 발명의 일부 구현 방식들에 따른 크로스-컴포넌트 상관관계를 사용하여 비디오 신호를 디코딩하는 예시적인 프로세스를 도시하는 흐름도이다.
도 32는 본 발명의 일부 구현 방식들에 따른 사용자 인터페이스와 결합한 컴퓨팅 환경을 도시한 도면이다.
이하 그 예가 첨부 도면에 도시되어 있는 특정 구현 방식들을 상세하게 설명한다. 다음의 상세한 설명에서, 본 명세서에 기재된 내용의 이해를 돕기 위하여 복수의 비-제한적인 특정 세부 사항이 설명된다. 그러나, 청구항의 범위를 벗어나지 않고 다양한 변경을 진행할 수 있고 이러한 특정 세부사항 없이 주제가 실시될 수 있다는 것은 당업자에게 자명한 것이다. 예를 들어, 본 명세서에 기재한 기술적 방안은 디지털 비디오 기능을 구비한 다양한 유형의 전자 장치에서 구현될 수 있다는 것은 당업자에게 자명한 것이다.
제1 세대 AVS 표준은 중국 국가 표준 "Information Technology, Advanced Audio Video Coding, Part 2: Video"(AVS1라고 함) 및 "Information Technology, Advanced Audio Video Coding Part 16: Radio Television Video"(AVS+라고 함)를 포함한다. 제1 세대 AVS 표준은 MPEG-2 표준에 비하여 동일한 지각 품질에서 약 50%의 비트 레이트룰 절약할 수 있다. 제2 세대 AVS 표준은 중국 국가 표준 "Information Technology, Efficient Multimedia Coding"(AVS2라고 함) 시리즈를 포함하며, 이는 주로 엑스트라 HD TV 프로그램들의 전송을 대상으로 한다. AVS2의 코딩 효율은 AVS+의 두 배이다. 한편, AVS2 표준 비디오 부분은 전기전자기술자협회(IEEE: Institute of Electrical and Electronics Engineer)에서 애플리케이션을 위한 하나의 국제 표준으로 제출하였다. AVS3 표준은 최신 국제 코딩표준 HEVC의 코딩 효율을 능가하는 것을 목표로 하는 UHD 비디오 애플리케이션을 위한 하나의 신세대 비디오 코딩 표준으로, 최신 국제 코딩표준 HEVC은 HEVC 표준 대비 약 30%의 비트-레이트를 절약한다. 2019년 3월, 제68차 AVS 회의에서, HEVC 표준보다 약 30% 비트-레이트를 절약하는 AVS3-P2 베이스 라인이 완성되었다. 현재, AVS 그룹에서는 AVS3 표준의 참조 구현을 시연하기 위하여 고성능 모델(HPM)로 불리는 하나의 참조 소프트웨어를 유지 관리하고 있다. HEVC와 마찬가지로, AVS3 표준은 블록-기반 하이브리드 비디오 코딩 프레임워크상에 구축되었다.
도 1은 본 개시의 일부 구현 방식들에 따른 비디오 블록들을 병렬로 인코딩 및 디코딩하기 위한 예시적인 시스템(10)을 도시하는 블록도이다. 도 1에 도시된 바와 같이, 시스템(10)은 목적지 장치(14)에 의하여 나중에 디코딩될 비디오 데이터를 생성하고 인코딩하는 소스 장치(12)를 포함한다. 소스 장치(12) 및 목적지 장치(14)는 데스크톱 또는 랩탑 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 셋톱 박스, 디지털 텔레비전, 카메라, 디스플레이 장치, 디지털 미디어 플레이어, 비디오 게임 콘솔, 비디오 스트리밍 장치와 같은 다양한 전자 장치 중의 어느 하나를 포함할 수 있다. 일부 구현 방식들에서, 소스 장치(12) 및 목적지 장치(14)는 무선 통신 기능을 구비할 수 있다.
일부 구현 방식들에서, 목적지 장치(14)는 링크(16)를 통하여 디코딩될 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16)는 인코딩된 비디오 데이터를 소스 장치(12)로부터 목적지 장치(14)로 이동할 수 있는 임의의 유형의 통신 매체 또는 장치를 포함할 수 있다. 일 예에서, 링크(16)는 인코딩된 비디오 데이터를 소스 장치(12)가 목적지 장치(14)에 실시간으로 직접 전송할 수 있도록 하는 통신 매체일 수 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되어 목적지 장치(14)로 전송될 수 있다. 통신 매체는 무선 주파수(RF) 스펙트럼 또는 하나 또는 그 이상의 물리적 전송 라인과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 매체는 근거리 네트워크(local area network), 광역 네트워크(wide-area network)와 같은 패킷-기반 네트워크(packet-based network) 또는 인터넷(Internet)과 같은 글로벌 네트워크(global network)의 일부분을 형성할 수 있다. 통신 매체는 라우터, 스위치, 기지국, 또는 소스 장치(12)로부터 목적지 장치(14)로의 통신을 용이하게 하는데 사용할 수 있는 임의의 다른 장비를 포함할 수 있다.
일부 다른 구현 방식들에서, 인코딩된 비디오 데이터는 출력 인터페이스(22)로부터 저장 장치(32)로 전송될 수 있다. 다음, 저장 장치(32) 내의 인코딩된 비디오 데이터는 목적지 장치(14)가 입력 인터페이스(28)를 통하여 액세스할 수 있다. 저장 장치(32)는 다양한 분산 또는 로컬 액세스 데이터 저장 매체(예하면, 하드 드라이브, Blu-ray 디스크, DVD, CD-ROM, 플래시 메모리, 휘발성 또는 비 휘발성 메모리), 또는 인코딩된 비디오 데이터를 저장하기에 적절한 기타 디지털 저장 매체 중의 임의의 하나를 포함할 수 있다. 추가 예에서, 저장 장치(32)는 소스 장치(12)에 의하여 생성된 인코딩된 비디오 데이터를 보유할 수 있는 파일 서버(file server) 또는 다른 중간 저장 장치에 대응할 수 있다. 목적지 장치(14)는 스트리밍 또는 다운로드를 통해 저장 장치(32)로부터 저장된 비디오 데이터에 액세스할 수있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 인코딩된 비디오 데이터를 목적지 장치(14)로 전송할 수 있는 임의의 유형의 컴퓨터일 수 있다. 예시적인 파일 서버는 웹 서버(예 : 웹 사이트 용), FTP 서버, 네트워크 연결 스토리지(network attached storage: NAS) 장치 또는 로컬 디스크 드라이브(local disk driver)를 포함할 수 있다. 목적지 장치(14)는 파일 서버에 저장된 인코딩된 비디오 데이터의 액세스에 적합한 무선 채널(예하면, Wi-Fi 연결), 유선 연결(예하면, DSL, 케이블 모뎀 등) 또는 이들의 조합을 포함하는 임의의 표준 데이터 연결을 통해 인코딩된 비디오 데이터에 액세스할 수 있다. 저장 장치(32)로부터의 인코딩된 비디오 데이터의 전송은 스트리밍 전송, 다운로드 전송 또는 그들의 조합일 수 있다.
도 1에 도시된 바와 같이, 소스 장치(12)는 비디오 소스(18), 비디오 인코더(20) 및 출력 인터페이스(22)를 포함한다. 비디오 소스(18)는 비디오 캡처 장치(예를 들어, 비디오 카메라), 이전에 캡처된 비디오를 포함하는 비디오 아카이브(video archieve), 비디오 콘텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스 및/또는 컴퓨터 그래픽 데이터를 소스 비디오로 생성하기 위한 컴퓨터 그래픽 시스템, 또는 이들의 조합을 포함할 수 있다. 일례로, 비디오 소스(18)가 보안 감시 시스템의 비디오 카메라인 경우, 소스 장치(12) 및 목적지 장치(14)는 카메라 폰 또는 비디오 폰을 형성할 수 있다. 그러나, 본 출원에서 설명하는 구현 방식들은 일반적으로 비디오 코딩에 적용될 수 있는 것이고, 무선 및/또는 유선 애플리케이션에 적용될 수 있다.
캡처된, 사전에 캡처된 또는 컴퓨터에 의하여 생성된 비디오는 비디오 인코더(20)에 의하여 인코딩될 수 있다. 인코딩된 비디오 데이터는 소스 장치(12)의 출력 인터페이스(22)를 통해 목적지 장치(14)로 직접 전송될 수 있다. 또한, 인코딩된 비디오 데이터는 (또는 대안 적으로) 저장 장치(32)에 저장되어 추후에 목적지 장치(14) 또는 다른 장치에 의하여 엑세스되어 디코딩 및/또는 재생되도록 할 수 있다. 출력 인터페이스(22)는 모뎀 및/또는 송신기를 더 포함할 수있다.
목적지 장치(14)는 입력 인터페이스(28), 비디오 디코더(30) 및 디스플레이 장치(34)를 포함한다. 입력 인터페이스(28)는 수신기 및/또는 모뎀을 포함 할 수 있으며, 링크(16)를 통해 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16)를 통해 전송되거나 저장 장치(32) 상에 제공되는 인코딩된 비디오 데이터는 비디오 인코더(20)에 의하여 생성되어 비디오 디코더(30)가 비디오 데이터를 디코딩하기 위하여 사용되는 다양한 신택스 요소들(systax elements)을 포함할 수 있다. 이러한 신택스 요소들은 통신 매체를 통해 전송되거나, 저장 매체에 저장되거나 파일 서버에 저장되는 인코딩된 비디오 데이터에 포함될 수 있다.
일부 구현 방식들에서, 목적지 장치(14)는 통합 디스플레이 장치 및 목적지 장치(14)와 통신하도록 구성된 외부 디스플레이 장치일 수 있는 디스플레이 장치(34)를 포함 할 수 있다. 디스플레이 장치(34)는 디코딩된 비디오 데이터를 사용자에게 디스플레이하며, 액정 디스플레이(LCD), 플라즈마 디스플레이(plasma display), 유기 발광 다이오드(OLED) 디스플레이 또는 다른 유형의 디스플레이 장치와 같은 다양한 디스플레이 장치 중의 임의의 하나를 포함할 수 있다.
비디오 인코더(20) 및 비디오 디코더(30)는 VVC, HEVC, MPEG-4, Part 10, AVC(Advanced Video Coding), AVS 또는 이러한 표준들의 확장과 같은 독점적 또는 산업 표준들에 따라 동작할 수있다. 본 출원은 특정된 비디오 코딩/디코딩 표준에 제한되지 않고, 다른 비디오 코딩/디코딩 표준에 적용될 수 있음을 이해하여야 한다. 일반적으로, 소스 장치(12)의 비디오 인코더(20)는 이러한 현재 또는 미래의 표준 중 임의의 하나에 따라 비디오 데이터를 인코딩하도록 구성될 수 있음을 고려되어야 한다. 유사하게, 목적지 장치(14)의 비디오 디코더(30)는 이러한 현재 또는 미래의 표준 중 임의의 하나에 따라 비디오 데이터를 디코딩하도록 구성될 수 있음을 일반적으로 고려되어야 한다.
비디오 인코더(20) 및 비디오 디코더(30) 각각은 하나 또는 그 이상의 마이크로 프로세서, 디지털 신호 프로세서(digital signal processor, DSP), 주문형 집적 회로(application specific integrated circuit: ASIC), 현장 프로그래머블 게이트 어레이(Field Programmable Gate Array: FPGA), 이산 로직과 같은 다양한 적합한 인코더 회로, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 조합 중의 어느 하나로 구현할 수 있다. 부분적으로 소프트웨어로 구현되는 경우, 전자 장치는 소프트웨어에 대한 명령어를 적절한 비-일시적 컴퓨터 판독 가능 매체에 저장하고 하나 또는 그 이상의 프로세서를 사용하여 하드웨어에서 명령어를 실행하여 본 개시에서 개시한 비디오 코딩/디코딩 동작을 수행할 수 있다. 비디오 인코더(20) 및 비디오 디코더(30) 각각은 하나 또는 그 이상의 인코더 또는 디코더에 포함될 수 있으며, 이들은 결합된 인코더/디코더(CODEC)의 일부분으로 각각의 장치에 직접될 수있다.
도 2는 본 출원에서 설명한 일부 구현 방식들에 따른 예시적인 비디오 인코더(20)를 도시하는 블록도이다. 비디오 인코더(20)는 비디오 프레임 내의 비디오 블록들의 인트라 및 인터 예측 코딩을 수행할 수 있다. 인트라 예측 코딩은 공간적 예측에 의존하여 주어진 비디오 프레임 또는 픽처 내의 비디오 데이터의 공간 중복성을 줄이거나 제거할 수 있다. 인터 예측 코딩은 시간적 예측에 의존하여 비디오 시퀀스의 인접한 비디오 프레임 또는 픽처 내의 비디오 데이터의 시간 중복성을 줄이거나 제거할 수 있다.
도 2에 도시된 바와 같이, 비디오 인코더(20)는 비디오 데이터 메모리(40), 예측 처리부(41), 디코딩 픽처 버퍼(DPB, 64), 가산기(50), 변환 처리부(52), 양자화부(54) 및 엔트로피 인코딩부(56)을 포함한다. 예측 처리부(41)는 움직임 추정부(42), 움직임 보상부(44), 분할부(45), 인트라 예측 처리부(46) 및 인트라 블록 복사(BC)부(48)를 포함한다. 일부 구현 방식들에서, 비디오 인코더(20)는 또한 비디오 블록 재구성을 위한 역 양자화부(58), 역변환 처리부(60) 및 가산기(62)를 포함한다. 디-블록킹 필터와 같은 인-루프 필터(63)는 가산기(62)와 DPB(64) 사이에 위치하여 블록 경계를 필터링하여 재구성된 비디오로부터 블록성 아티팩트(blocky artifact)를 제거할 수 있다. 디-블로킹 필터외에, 다른 인-루프 필터(63) 또한 가산기(62)의 출력을 필터링하기 위하여 사용될 수 있다. 재구성된 CU를 참조 픽처 저장소에 배치하고 미래 비디오 블록을 코딩하기 위한 참조로 사용하기 전에, 재구성된 CU에 샘플 적응 오프셋(SAO) 및 적응 인-루프 필터(ALF)와 같은 인-루프 필터(63)를 추가로 적용할 수 있다. 비디오 인코더(20)는 고정된 또는 프로그래밍 가능한 하드웨어 유닛의 형태로 구성되거나 하나 또는 그 이상의 도시된 고정된 또는 프로그래밍 가능한 하드웨어 장치에 분할될 수 있다.
비디오 데이터 메모리(40)는 비디오 인코더(20)의 구성 요소들에 의하여 인코딩될 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리(40) 중의 비디오 데이터는 예를 들어 비디오 소스(18)로부터 획득될 수 있다. DPB(64)는 비디오 인코더(20)가 비디오 데이터를(예를 들어, 인트라 또는 인터 예측 코딩 모드에서) 인코딩하기 위하여 사용되는 기준 비디오 데이터를 저장하는 버퍼이다. 비디오 데이터 메모리(40) 및 DPB(64)는 다양한 메모리 장치들 중의 어느 하나에 의하여 형성될 수 있다. 다양한 예에서, 비디오 데이터 메모리(40)는 비디오 인코더(20)의 다른 구성 요소들과 함께 온칩(on-chip) 되거나, 이러한 구성 요소들에 대하여 오프 칩(off-chip)될 수있다.
도 2에 도시된 바와 같이, 비디오 데이터를 수신 후, 예측 처리부(41) 내의 분할부(45)는 비디오 데이터를 비디오 블록들로 분할(partitioning)한다. 한편, 이러한 분할은 비디오 데이터와 연관된 쿼드-트리 구조와 같은 미리 설정된 분할 구조에 따라 비디오 프레임을 슬라이스(slice), 타일(tile) 또는 다른 더 큰 코딩 단위(coding unit: CU)로 분할하는 것을 포함할 수 있다. 비디오 프레임은 복수의 비디오 블록들(또는 타일이라고 하는 비디오 블록들의 세트)로 분할될 수 있다. 예측 처리부(41)는 오차 결과(예를 들어, 코딩 레이트 및 왜곡 레벨)에 기반하여 현재 비디오 블록에 대한 복수의 인트라 예측 코딩 모드들 중 하나 또는 복수의 인터 예측 코딩 모드들 중 하나와 같은 복수의 가능한 예측 코딩 모드들 중 하나를 선택할 수 있다. 예측 처리부(41)는 처리 결과인 인트라 또는 인터 예측 코딩된 블록을 가산기(50)에 제공하여 잔여 블록을 생성하고, 가산기(62)에 제공하여 인코딩된 블록을 재구성하여 추후에 기준 프레임의 일부로서 사용할 수 있다. 한편, 예측 처리부(41)는 움직임 벡터, 인트라-모드 지시자(indicator), 분할 정보(partition information) 및 기타 이러한 신택스 정보와 같은 신택스 요소들을 엔트로피 인코딩부(56)에 제공할 수 있다.
현재 비디오 블록에 대한 적절한 인트라 예측 코딩 모드를 선택하기 위하여, 예측 처리부(41) 내의 인트라 예측 처리부(46)는 코딩될 현재 블록과 동일한 프레임 내의 하나 또는 그 이상의 인접한 블록에 대하여 현재 비디오 블록의 인트라 예측 코딩을 수행하여 공간 예측을 제공할 수 있다. 예측 처리부(41) 내의 움직임 추정부(42) 및 움직임 보상부(44)는 하나 또는 그 이상의 기준 프레임 중의 하나 또는 그 이상의 예측 블록에 대한 현재 비디오 블록의 인터 예측 코딩을 수행하여 시간적 예측을 제공할 수 있다. 비디오 인코더(20)는 복수의 코딩 패스(coding passes)를 수행하여, 예를 들어, 비디오 데이터의 각 블록에 대한 적절한 코딩 모드를 선택할 수 있다.
일부 구현 방식들에서, 움직임 추정부(42)는 비디오 프레임 시퀀스 내의 미리 결정된 패턴에 따라 움직임 벡터를 생성하는 것을 통하여 현재 비디오 프레임에 대한 인터 예측 모드를 확정하며, 상기 움직임 벡터는 기준 비디오 프레임 내의 예측 블록에 대한 현재 비디오 프레임 내의 비디오 블록의 예측 단위(prediction unit: PU)의 변위를 기리킬 수 있다. 움직임 추정부(42)에 의하여수행되는 움직임 추정은 비디오 블록들의 움직임을 추정하는 움직임 벡터들을 생성하는 과정이다. 예를 들어, 움직임 벡터는, 현재 프레임(또는, 기타 코딩된 단위)내의 코?壅품? 있는 현재 블록에 대한 기준 프레임(또는, 기타 코딩된 유닛) 내의 예측 블록에 대한 현재 비디오 프레임 또는 픽처 내의 비디오 블록의 PU의 변위을 가리킬 수 있다. 미리 정해진 패턴은 시퀀스의 비디오 프레임을 P 프레임 아니면 B 프레임으로 지정할 수 있다. 인트라 BC 부(48)는 인터 예측을 위한 움직임 추정부(42)의 움직임 벡터들의 결정과 유사한 방식으로 인트라 BC 코딩을 위한 벡터들(예를 들어 블록 벡터들)을 확정할 수 있거나, 움직임 추정부(42)를 이용하여 블록 벡터를 확정할 수있다.
예측 블록은 픽셀 차이 측면에서 코딩될 비디오 블록의 PU와 제일 근접하는 것으로 간주되는 기준 프레임의 블록으로, 필섹 차이는 절대 차이의 합(sum of absolute difference: SAD), 제곱 차이의 합(sum of square difference: SSD) 또는 기타 차이 메트릭에 의하여결정될 수 있다. 일부 구현 방식들에서, 비디오 인코더(20)는 DPB(64)에 저장된 기준 프레임들의 서브-정수 픽셀 위치들에 대한 값들을 계산할 수 있다. 예를 들어, 비디오 인코더(20)는 기준 프레임의 1/4 픽셀 위치, 1/8 픽셀 위치 또는 기타 분수 픽셀 위치의 값들을 보간할 수 있다. 따라서, 움직임 추정부(42)는 전체 픽셀 위치 및 분수 픽셀 위치에 대한 움직임 검색을 수행하고 분수 픽셀 정밀도로 움직임 벡터를 출력 할 수 있다.
움직임 추정부(42)는 기준 프레임의 예측 블록의 위치와 PU의 위치를 비교하여 인터 예측 코딩된 프레임 내의 비디오 블록의 PU에 대한 움직임 벡터를 계산하되, 상기 기준 프레임은 DPB(64)에 저장된 하나 또는 그 이상의 기준 프레임을 각각 식별하는 제 1 기준 프레임 리스트(List 0)또는 제2 기준 프레임 리스트(List 1)로부터 선택될 수 있다. 움직임 추정부(42)는 계산된 움직임 벡터를 움직임 보상부(44)로 전송하고, 다음 엔트로피 인코딩부(56)로 전송한다.
움직임 보상부(44)에 의하여수행되는 움직임 보상은, 움직임 추정부(42)가 결정한 움직임 벡터에 기반하여 예측 블록을 페치(fetch)하거나 생성하는 것을 포함할 수 있다. 현재 비디오 블록의 PU에 대한 움직임 벡터를 수신하면, 움직임 보상부(44)는 기준 프레임 리스트들 중의 하나에서 움직임 벡터가 가리키는 예측 블록을 찾고, DPB(64)로부터 예측 블록을 검색하고, 예측 블록을 가산기(50)로 전달할 수 있다. 다음, 가산기(50)는 코딩되고 있는 현재 비디오 블록의 픽셀 값으로부터 움직임 보상부(44)가 제공한 예측 블록의 픽셀 값을 감산하는 것을 통하여 잔여 비디오 블록의 픽셀 차이 값을 형성할 수 있다. 잔여 비디오 블록을 형성하는 픽셀 차이 값은 루마 또는 크로마 차이 컴포넌트 또는 양자를 포함할 수 있다. 또한, 움직임 보상부(44)는 비디오 디코더(30)가 비디오 프레임의 비디오 블록을 디코딩할 경우에 사용하는 비디오 프레임의 비디오 블록과 연관된 신택스 요소들을 생성 할 수 있다. 신택스 요소들은, 예를 들어, 예측 블록을 식별하기 위하여 사용되는 움직임 벡터들을 정의하는 신택스 요소들, 예측 모드를 가리키는 임의의 플래그, 또는 본 명세서에서 설명된 임의의 다른 신택스 정보를 포함 할 수 있다. 움직임 추정부(42) 및 움직임 보상부(44)는 고도로 직접될 수 있으나, 개념적 목적을 위해 별도로 도시되어 있다.
일부 구현 방식들에서, 인트라 BC부(48)는 움직임 추정부(42) 및 움직임 보상부(44)과 관련하여 위에서 설명한 것과 유사한 방식으로 벡터들을 생성하고 예측 블록들을 페치(fetch)할 수 있지만, 이러한 예측 블록들은 코딩되고 있는 현재 블록과 같은 프레임 내에 있으며, 벡터들은 움직임 벡터가 아닌 블록 벡터라 한다. 구체적으로, 인트라 BC부(48)는 현재 블록을 인코딩하기 위하여 사용하는 인트라 예측 모드를 결정할 수 있다. 일부 예들에서, 인트라 BC부(48)는 예를 들어 각각의 인코딩 패스 동안 다양한 인트라 예측 모드들을 사용하여 현재 블록을 인코딩할 수 있고, 레이트-왜곡 분석을 통해 그들의 성능을 테스트할 수 있다. 다음으로, 인트라 BC부(48)는 다양한 테스트된 인트라 예측 모드들 중에서 적절한 인트라 예측 모드를 선택하여 사용하고 그에 따른 인트라 모드 식별자를 생성할 수 있다. 예를 들어, 인트라 BC부(48)는 테스트된 다양한 인트라 예측 모드들에 대한 레이트-왜곡 분석들(rate-distortion analysis)을 이용하여 레이트-왜곡 값들(rate-distortion value)을 계산할 수 있고, 테스트된 모드들 중 최적의 레이트-왜곡 특성을 갖는 인트라-예측 모드를 적절한 인트라 예측 모드로 선택하여 사용할 수 있다. 일반적으로, 레이트 왜곡 분석은 인코딩된 블록과 인코딩된 블록을 생성하기 위하여 인코딩되는 원래의 인코딩되지 않은 블록 사이의 왜곡(또는 오차)의 양 및 인코딩된 블록을 생성하기 위한 비트율(즉, 비트 수)을 결정한다. 인트라 BC부(48)는 다양한 인코딩된 블록들에 대한 왜곡(distortion) 및 레이트로부터 비율을 계산하여 어느 인트라 예측 모드가 블록에 대하여 최적의 레이트-왜곡 값을 가리키는지를 결정할 수 있다.
다른 예들에서, 인트라 BC부(48)는 전체적으로 또는 부분적으로 움직임 추정부(42) 및 움직임 보상부(44)를 사용하여 본 명세서에서 설명된 구현 방식들에 따른 인트라 BC 예측을 위한 기능들을 수행 할 수 있다. 두 경우 모두, 인트라 블록 복사(block copy)에 대하여, 예측 블록은 절대 차이의 합(SAD), 제곱 차이(SSD)의 합 또는 다른 차이 메트릭에 의하여결정되는 픽셀 차이 면에서 코딩될 블록과 밀접하게 매칭되는 것으로 간주되는 블록일 수 있으며, 예측 블록의 식별은 서브-정수 픽셀 위치에 대한 값의 계산을 포함할 수 있다.
예측 블록이 인트라 예측에 따라 동일한 프레임 또는 인터 예측에 따라 다른 프레임으로부터 생성되는 것과 관련 없이, 비디오 인코더(20)는 코딩되는 현재 비디오 블록의 픽셀 값들로부터 예측 블록의 픽셀 값들을 감산하여 픽셀 차이 값들을 형성하는 것을 통하여, 잔여 비디오 블록을 형성할 수 있다. 잔여 비디오 블록을 형성하는 픽셀 차이 값들은 루마(luma) 및 크로마(chroma) 컴포넌트 차이를 모두 포함할 수 있다.
위에서 설명한 움직임 추정부(42) 및 움직임 보상부(44)에 의하여수행되는 인터 예측 또는 인트라 BC부(48)에 의하여수행되는 인트라 블록 복사 예측에 대한 대안으로서, 인트라 예측 처리부(46)는 현재 비디오 블록을 인트라 예측할 수 있다. 구체적으로, 인트라 예측 처리부(46)는 현재 블록을 인코딩하기 위해 사용할 인트라 예측 모드를 결정할 수있다. 이를 위하여, 인트라 예측 처리부(46)는 예를 들어 각각의 인코딩 패스 동안 다양한 인트라 예측 모드들을 사용하여 현재 블록을 인코딩할 수 있고, 인트라 예측 처리부(46)(또는 일부 예들에서 모드 선택부)는 테스트된 인트라 예측 모드들로부터 적절한 인트라 예측 모들를 선택하여 사용할 수 있다. 인트라 예측 처리부(46)는 블록에 대해 선택한 인트라 예측 모드를 가리키는 정보를 엔트로피 인코딩부(56)에 제공할 수 있다. 엔트로피 인코딩부(56)는 선택된 인트라-예측 모드를 가리키는 정보를 비트스트림에 인코딩할 수있다.
예측 처리부(41)가 인터 예측 또는 인트라 예측을 통해 현재 비디오 블록에 대한 예측 블록을 결정한 후, 가산기(50)는 현재 비디오 블록으로부터 예측 블록을 감산하여 잔여 비디오 블록(residual video block)을 형성한다. 잔여 블록 내의 잔여 비디오 데이터는 하나 또는 그 이상의 변환 단위(TU)에 포함될 수 있으며, 변환 처리부(52)에 제공된다. 변환 처리부(52)는 이산 코사인 변환(DCT) 또는 개념적으로 유사한 변환과 같은 변환을 사용하여 잔여 비디오 데이터를 잔여 변환 계수로 변환한다.
변환 처리부(52)는 얻은 변환 계수들을 양자화부(54)에 전송할 수 있다. 양자화부(54)는 변환 계수들을 양자화하여 비트 레이트를 더 감소할 수 있다. 또한, 양자화 프로세스는 계수들의 일부 또는 전부와 관련된 비트 깊이(bit depth)를 감소할 수 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수 있다. 일부 예들에서, 양자화부(54)는 양자화된 변환 계수들을 포함하는 매트릭스의 스캔을 수행할 수 있다. 또는, 엔트로피 인코딩부(56)가 상기 스캔을 수행할 수 있다.
양자화한 다음, 엔트로피 인코딩부(56)은 예를 들어, 컨텍스트 적응형 가변 길이 코딩(context adaptive variable length coding: CAVLC), 컨텍스트 적응형 이진 산술 코딩(context adaptive binary arithmetic coding: CABAC), 신택스 기반 컨텍스트 적응형 이진 산술 코딩(syntax-based context-adaptive binary arithmetic coding: SBAC), 확률 간격 분할 엔트로피(probability interval partitioning entropy: PIPE) 코딩 또는 다른 엔트로피 인코딩 방법 또는 기술을 사용하여 양자화된 변환 계수들을 비디오 비트스트림으로 엔트로피 인코딩한다. 인코딩된 비트스트림은 비디오 디코더(30)로 전송되거나, 저장 장치(32)에 저장되어 추후에 비디오 디코더(30)로 전송되거나 또는 비디오 디코더(30)에 의하여 검색될 수 있다. 엔트로피 인코딩부(56)는 또한 코딩되는 현재 비디오 프레임에 대한 움직임 벡터들 및 다른 신택스 요소들을 엔트로피 인코딩할 수 있다.
역 양자화부(58) 및 역변환 처리부(60)는 다른 비디오 블록들의 예측을 위한 기준 블록을 생성하기 위하여, 각각 역 양자화 및 역변환을 적용하여 픽셀 도메인에서 잔여 비디오 블록을 재구성할 수 있다. 위에서 설명한 바와 같이, 움직임 보상부(44)는 DPB(64)에 저장된 프레임들의 하나 또는 그 이상의 기준 블록으로부터 움직임 보상된 예측 블록을 생성할 수 있다. 움직임 보상부(44)는 또한 하나 또는 그 이상의 보간 필터를 예측 블록에 적용하여 움직임 추정에 사용하기 위한 서브-정수 픽셀 값들을 산출할 수 있다.
가산기(62)는 재구성된 잔여 블록과 움직임 보상부(44)에 의하여 생성된 움직임 보상된 예측 블록을 가산하여 DPB(64)에 저장하기 위한 기준 블록을 생성할 수 있다. 다음, 기준 블록은 인트라 BC부(48), 움직임 추정부(42), 움직임 보상부(44)에 의하여 예측 블록으로 사용되어 후속 비디오 프레임 내의 다른 비디오 블록을 인터 예측할 수 있다.
도 3은 본 출원의 일부 구현 방식들에 따른 예시적인 비디오 디코더(30)를 도시하는 블록도이다. 비디오 디코더(30)는 비디오 데이터 메모리(79), 엔트로피 디코딩부(80), 예측 처리부(81), 역 양자화부(86), 역변환 처리부(88), 가산기(90) 및 DPB(92)를 포함한다. 예측 처리부(81)는 움직임 보상부(82), 인트라 예측 처리부(84) 및 인트라 BC부(85)를 더 포함한다. 비디오 디코더(30)는 일반적으로 도 2와 관련하여 비디오 인코더(20)에 대하여 위에서 설명한 인코딩 프로세스와 반대인 디코딩 프로세스를 수행할 수 있다. 예를 들어, 움직임 보상부(82)는 엔트로피 디코딩부(80)로부터 수신된 움직임 벡터들에 기반하여 예측 데이터를 생성할 수 있고, 인트라 예측부(84)는 엔트로피 디코딩부(80)로부터 수신된 인트라 예측 모드 지시자들에 기반하여 예측 데이터를 생성 할 수있다.
일부 예들에서, 비디오 디코더(30)의 구성들은 본 출원의 구현 방식들을 구현하도록 기능들을 수행할 수 있다. 또한, 일부 예들에서, 본 개시의 구현 방식들을 구현하도록 비디오 디코더(30)의 구성들을 하나 또는 그 이상으로 분할되어 구현될 수 있다. 예를 들어, 인트라 BC부(85)는 본 출원의 구현 방식들을 단독으로 수행하거나, 움직임 보상부(82), 인트라 예측 처리부(84) 및 엔트로피 디코딩부(80)와 같은 비디오 디코더(30)의 다른 부분들과 조합하여 수행할 수 있다. 일부 예들에서, 비디오 디코더(30)는 인트라 BC부(85)를 포함하지 않을 수 있고, 인트라 BC부(85)의 기능은 움직임 보상부(82)와 같은 예측 처리부(81)의 다른 부분들에 의하여 수행할 수 있다.
비디오 데이터 메모리(79)는 인코딩된 비디오 비트스트림과 같은 비디오 디코더(30)의 다른 부분들에 의하여디코딩될 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리(79)에 저장된 비디오 데이터는 예를 들어 저장 장치(32)로부터 획득하거나, 비디오 데이터의 유선 또는 무선 네트워크 통신을 통하여 획득하거나, 또는 물리적 데이터 저장 매체(예를 들어: 플래시 드라이브 또는 하드 디스크)에 액세스하는 것을 통하여 카메라와 같은 로컬 비디오 소스로부터 획득할 수 있다. 비디오 데이터 메모리(79)는 인코딩된 비디오 비트스트림의 인코딩된 비디오 데이터를 저장하는 코딩 픽처 버퍼(coded picture buffer: CPB)를 포함할 수 있다. 비디오 디코더(30)의 디코딩 픽처 버퍼(Decoded picture buffer: DPB)(92)는 (예를 들어, 인트라 또는 인터 예측 코딩 모드에서) 비디오 디코더(30)가 비디오 데이터를 디코딩하는데 사용하기 위한 기준 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리(79) 및 DPB(92)는 SDRAM, MRAM, RRAM을 포함하는 DRAM과 같은 다양한 메모리 장치 또는 다른 유형의 메모리 장치 중의 어느 하나로 형성될 수 있다. 설명을 위해, 비디오 데이터 메모리(79) 및 DPB(92)는 도3에서 비디오 디코더(30)의 두 개의 별개의 부분으로 도시되었다. 그러나, 비디오 데이터 메모리(79) 및 DPB(92)는 동일한 메모리 장치 또는 별도의 메모리 장치에 의하여 제공 될 수 있다는 것은 당업자에게 자명한 것이다. 일부 예들에서, 비디오 데이터 메모리(79)는 비디오 디코더(30)의 다른 부분들과 함께 온-칩(on-chip)일 수 있거나, 이러한 부분들과 오프-칩(off-chip)일 수 있다.
디코딩 프로세스 동안, 비디오 디코더(30)는 인코딩된 비디오 프레임의 비디오 블록들 및 연관된 신택스 요소들을 가리키는 인코딩된 비디오 비트스트림을 수신한다. 비디오 디코더(30)는 비디오 프레임 레벨 및/또는 비디오 블록 레벨에서 신택스 요소들을 수신할 수 있다. 비디오 디코더(30)의 엔트로피 디코딩부(80)는 비트스트림을 엔트로피 디코딩하여 양자화된 계수들, 움직임 벡터들 또는 인트라-예측 모드 지시자 및 기타 신택스 요소들을 생성할 수 있다. 다음, 엔트로피 디코딩부(80)는 움직임 벡터 및 다른 신택스 요소들을 예측 처리부(81)로 전달한다.
비디오 프레임이 인트라 예측 코딩(I) 프레임으로 코딩되거나 다른 유형의 프레임에서 인트라 코딩된 예측 블록에 대해 코딩 될 경우, 예측 처리부(81)의 인트라 예측 처리부(84)는 시그널링된 인트라 예측 모드 및 현재 프레임의 이전에 디코딩된 블록들로부터의 기준 데이터에 기반하여 현재 비디오 프레임의 비디오 블록에 대한 예측 데이터를 생성할 수 있다.
비디오 프레임이 인터 예측 코딩(즉, B 또는 P)된 프레임으로 코딩 될 경우, 예측 처리부(81)의 움직임 보상부(82)는 엔트로피 디코딩부(80)로부터 수신된 움직임 벡터들 및 다른 신택스 요소들에 기반하여 현재 비디오 프레임의 비디오 블록에 대한 하나 또는 그 이상의 예측 블록을 생성한다. 각각의 예측 블록은 기준 프레임 리스트들 중 하나의 기준 프레임 리스트 내의 기준 프레임으로부터 생성될 수 있다. 비디오 디코더(30)는 DPB(92)에 저장된 기준 프레임들에 기반하여 디폴트 구성 기술들을 사용하여 기준 프레임 리스트들(List0 및 List1)을 생성할 수 있다.
일부 예들에서, 비디오 블록이 본 명세서에서 설명한 인트라 BC 모드에 따라 코딩 될 경우, 예측 처리부(81)의 인트라 BC부(85)는 엔트로피 디코딩부(80)로부터 수신된 블록 벡터들 및 다른 신택스 요소들에 기반하여 현재 비디오 블록에 대한 예측 블록들을 생성한다. 예측 블록들은 비디오 인코더(20)에 의하여 정의된 현재 비디오 블록과 동일한 픽처의 재구성 영역 내에 포함될 수 있다.
움직임 보상부(82) 및/또는 인트라 BC부(85)는 움직임 벡터들 및 다른 신택스 요소들을 파싱하여 현재 비디오 프레임의 비디오 블록에 대한 예측 정보를 확정한 다음, 예측 정보를 사용하여 디코딩되는 현재 비디오 블록에 대한 예측 블록들을 생성한다. 예를 들어, 움직임 보상부(82)는 수신된 신택스 요소들 중 일부를 사용하여 비디오 프레임의 비디오 블록들의 코딩에 사용되는 예측 모드(예를 들어, 인트라 또는 인터 예측), 인터 예측 프레임 유형(예를 들어, B 또는 P), 프레임에 대한 기준 프레임 리스트들 중 하나 또는 그 이상에 대한 구성 정보, 프레임의 각 인터 예측 코딩된 비디오 블록에 대한 움직임 벡터들, 프레임의 각 인터 예측 코딩된 비디오 블록에 대한 인터 예측 상태, 및 현재 비디오 프레임의 비디오 블록들을 디코딩하기 위한 기타 정보를 확정할 수 있다.
유사하게, 인트라 BC부(85)는 수신된 신택스 요소들 중 일부(예를 들어 플래그)를 사용하여, 현재 비디오 블록이 인트라 BC 모드를 사용하여 예측되었으며, 프레임의 어느 비디오 블록들이 재구성된 영역 내에 있으며 DPB(92)에 저장되어야 하는 구성 정보(construction information), 프레임의 각 인트라 BC 예측된 비디오 블록에 대한 블록 벡터들, 프레임의 각 인트라 BC 예측된 비디오 블록에 대한 인트라 BC 예측 상태 및 현재 비디오 프레임 내의 비디오 블록들을 디코딩하기 위한 기타 정보를 확정할 수 있다.
움직임 보상부(82)는 또한 기준 블록들의 서브-정수 픽셀에 대한 보간 값들을 계산하기 위해 비디오 블록들의 인코딩 동안 비디오 인코더(20)가 사용하는 보간 필터들를 사용하여 보간을 수행할 수 있다. 이 경우, 움직임 보상부(82)는 수신된 신택스 요소들로부터 비디오 인코더(20)가 사용하는 보간 필터들을 확정하고, 확정한 보간 필터들을 사용하여 예측 블록들을 생성할 수 있다.
역 양자화부(86)는 비디오 프레임의 각 비디오 블록에 대해 비디오 인코더(20)가 계산한 동일한 양자화 파라미터를 사용하여, 비트스트림 내에 제공되며 엔트로피 디코딩부(80)에 의하여 엔트로피 디코딩된 변환 계수들을 역 양자화하여 양자화 정도를 확정한다. 역 변환 처리부(88)는 픽셀 도메인에서 잔여 블록을 재구성하기 위하여, 역 변환(예를 들어, 역 DCT, 역 정수 변환 또는 개념적으로 유사한 역 변환 프로세스)을 변환 계수에 적용한다.
움직임 보상부(82) 또는 인트라 BC부(85)에서 벡터들 및 기타 신택스 요소들에 기반하여 현재 비디오 블록에 대한 예측 블록을 생성한 다음, 가산기(90)는 역 변환 처리부(88)에서 제공한 잔여 블록 및 움직임 보상부(82) 및 인트라 BC부(85)에 의하여생성된 대응하는 예측 블록을 가산하는 것을 통하여 현재 비디오 블록에 대한 디코딩된 비디오 블록을 재구성한다. 인-루프 필터(91)는 가산기(90)와 DPB(92) 사이에 위치되어 디코딩된 비디오 블록을 추가로 처리할 수 있다. 재구성된 CU를 참조 픽처 저장소에 배치하기 전에, 재구성된 CU에 디블록킹 필터, 샘플 적응 오프셋(SAO) 및 적응 인-루프 필터(ALF)와 같은 인-루프 필터(91)를 추가로 적용할 수 있다. 주어진 프레임 내의 디코딩된 비디오 블록들은 다음 비디오 블록들의 후속 움직임 보상에 사용되는 기준 프레임들을 저장한 DPB(92)에 저장된다. DPB(92) 또는 DPB(92)와 분리된 메모리 장치는 또한 디코딩된 비디오를 저장하여 도 1의 디스플레이 장치(34)와 같은 디스플레이 장치 상에 나중에 표시할 수 있다.
전형적인 비디오 코딩 프로세스에서, 비디오 시퀀스는 일반적으로 프레임들 또는 픽처들의 소정 순서의 세트를 포함한다. 각 프레임은 SL, SCb 및 SCr로 표시되는 3 개의 샘플 행렬들을 포함할 수 있다. SL은 루마 샘플들의 2 차원 행렬이다. SCb는 Cb 크로마 샘플들의 2 차원 행렬이다. SCr은 Cr 크로마 샘플들의 2 차원 행렬이다. 다른 경우에, 프레임은 단색일 수 있으므로, 루마 샘플들의 2 차원 행렬 하나만 포함할 수 있다.
HEVC와 마찬가지로, AVS3 표준은 블록-기반 하이브리드 비디오 코딩 프레임워크상에 구축된다. 입력 비디오 신호는 블록별(코딩 단위(CU)라고 함)로 처리한다. 쿼드-트리만을 기반으로 블록들을 분할하는 HEVC와는 달리, AVS3에서는 하나의 코딩 트리 유닛(CTU)을 쿼드/바이너리/확장-쿼드-트리를 기반으로 CU로 분할하여 다양한 로컬 특성에 적응한다. 또한, HEVC에서의 멀티 분할 단위 타입의 개념을 제거한다. 즉, CU, 예측 단위(PU) 및 변환 단위(TU)의 구분은 AVS3에 존재하지 않는다. 반면, 각 CU는 추가 분할 없이 예측과 변환 모두를 위한 기본 단위로 항상 사용한다. AVS3의 트리 분할 구조에서 쿼드-트리 구조를 기반으로 하나의 CTU를 먼저 분할한다. 다음, 바이너리 및 확장 쿼드-트리 구조를 기반으로 각 쿼드-트리 리프 노드를 추가로 분할할 수 있다.
도 4a에 도시된 바와 같이, 비디오 인코더(20)(또는 보다 구체적으로, 분할 유닛(45))는 먼저 프레임을 코딩 트리 유닛(coding tree unit, CTU)의 세트로 분할함으로써 프레임의 인코딩된 표현(representation)을 생성한다. 비디오 프레임은 좌측에서 우측 및 상측에서 하측으로 래스터 스캔 순서(raster scan order)로 순차적으로 정렬된 정수 수량의 CTU들을 포함할 수 있다. 각 CTU는 가장 큰 논리 코딩 단위이고, CTU의 너비와 높이는비디오 인코더(20)에 의하여시퀀스 파라미터 세트(sequence parameter set)으로 시그널링되어, 비디오 시퀀스의 모든 CTU들은 128×128, 64×64, 32×32 및 16×16 중 하나인 동일한 크기를 갖는다. 그러나, 본 출원이 반드시 특정한 크기로 제한되는 것은 아니라는 점에 유의해야 한다. 도 4b에 도시된 바와 같이, 각 CTU는 루마 샘플들의 하나의 코딩 트리 블록(coding tree block, CTB), 크로마 샘플들의 두 개의 대응하는 코딩 트리 블록들 및 코딩 트리 블록들의 샘플들을 코딩하기 위하여 사용되는 신택스 요소들을 포함할 수 있다. 신택스 요소들은 인터 또는 인트라 예측, 인트라 예측 모드, 움직임 벡터, 및 기타 파라미터들을 포함하여 코딩된 픽셀 블록의 상이한 유형의 단위의 특성 및 비디오 시퀀스가 비디오 디코더(30)에서 재구성될 수 있는 방법을 설명한다. 모노크롬 픽처(monochrome picture)들 또는 3개의 각각의 컬러 평면을 갖는 픽처들에서, CTU는 코딩 트리 블록의 샘플들을 코딩하기 위하여 사용되는 단일 코딩 트리 블록 및 신택스 요소들을 포함할 수 있다. 코딩 트리 블록은 샘플들의 N×N 블록일 수 있다.
더 훌륭한 성능을 달성하기 위해, 비디오 인코더 (20) 는 CTU의 코딩 트리 블록들에 대해 이진-트리 분할(binary-tree partitioning), 삼진- 트리 분할(ternary-tree partitioning), 쿼드-트리 분할(quad-tree partitioning) 또는 이들의 조합과 같은 트리 분할을 재귀적으로 수행하고 CTU를 더 작은 코딩 단위(CU)로 분할할 수 있다. 도 4c에 도시된 바와 같이, 64×64 CTU(400)는 먼저 각각 32×32의 블록 크기를 갖는 4개의 더 작은 CU들로 분할된다. 4개의 더 작은 CU들 중, CU(410)와 CU(420)는 블록 크기에 따라 각각 16Х16의 4개의 CU로 분할된다. 2개의 16×16 CU들(430 및 440)은 블록 크기에 따라 각각 8Х8의 4개의 CU들로 더 분할된다. 도 4d는 도 4c에 도시된 바와 같은 CTU(400)의 분할 프로세스의 최종 결과를 나타내는 쿼드-트리 데이터 구조를 도시하며, 쿼드 트리의 각각의 리프 노드는 32×32부터 8×8까지 범위의 대응하는 크기의 하나의 CU에 대응한다. 도 4b에 도시된 CTU와 유사하게, 각각의 CU는 루마 샘플들의 코딩 블록(CB) 및 동일한 크기의 프레임의 크로마 샘플들의 2개의 대응하는 코딩 블록들 및 코딩 블록의 샘플을 코딩하기 위하여 사용되는 신택스 요소들을 포함할 수 있다. 모노크롬 픽처들 또는 3개의 각각의 컬러 평면을 갖는 픽처들에서, CU는 단일 코딩 블록 및 코딩 블록의 샘플들을 코딩하는 데 사용되는 신택스 구조들을 포함할 수 있다. 도 4c 및 4d에 도시된 쿼드-트리 분할은 단지 예시를 위한 것이며, 하나의 CTU는 쿼드/삼진/이진-트리 분할들을 기반으로 하는 다양한 로컬 특성에 적응하기 위해 CU들로 분할될 수 있다는 점에 유의해야 한다. 멀티-타입 트리 구조에서 하나의 CTU는 쿼드-트리 구조로 분할되고, 각각의 쿼드-트리 리프 CU는 이진 및 삼진-트리 구조로 더 분할될 수 있다. 도 4e에 도시된 바와 같이, AVS3에는 5가지 스플리팅/분할 타입, 즉, 쿼터너리(quaternary) 분할, 수평 바이너리 분할, 수직 바이너리 분할, 수평 확장 쿼드-트리 분할 및 수직 확장 쿼드-트리 분할이 존재한다.
일부 구현들에서, 비디오 인코더(20)는 CU 의 코딩 블록을 하나 혹은 그 이상의 M×N 예측 블록들(PB)로 더 분할할 수 있다. 예측 블록은 동일한 예측(인터 또는 인트라 예측)이 적용되는 샘플들의 직사각형(정사각형 또는 비 정사각형) 블록이다. CU의 예측 단위(PU)는 루마 샘플들의 예측 블록, 크로마 샘플들의 2개의 대응하는 예측 블록들, 및 예측 블록들을 예측하기 위하여 사용되는 신택스 요소들을 포함할 수 있다. 모노크롬 픽처들 또는 3개의 각각의 컬러 평면을 갖는 픽처들에서, PU는 단일 예측 블록 및 예측 블록을 예측하기 위하여 사용되는 신택스 구조들을 포함할 수 있다. 비디오 인코더(20)는 CU의 각 PU의 루마 예측 블록, Cb 예측 블록, 및 Cr 예측 블록의 에측 루마 블록, 예측 Cb 블록 및 예측 Cr 블록을 생성할 수 있다.
비디오 인코더(20)는 PU에 대한 예측 블록들을 생성하기 위해 인트라 예측 또는 인터 예측을 사용할 수 있다. 비디오 인코더(20)가 PU의 예측 블록들을 생성하기 위해 인트라 예측을 사용하는 경우, 비디오 인코더(20)는 PU와 연관된 프레임의 디코딩된 샘플들에 기반하여 PU의 예측 블록들을 생성할 수 있다. 비디오 인코더(20)가 PU의 예측 블록들을 생성하기 위해 인터 예측을 사용하는 경우, 비디오 인코더(20)는 PU와 연관된 프레임이 아닌 하나 혹은 그 이상의 프레임들의 디코딩된 샘플들에 기반하여 PU의 예측 블록들을 생성할 수 있다.
비디오 인코더(20)가 CU의 하나 혹은 그 이상의 PU들의 예측 루마 블록, Cb 블록, 및 Cr 블록들을 생성한 후, 비디오 인코더(20)는, CU의 오리지널 루마 코딩 블록으로부터 CU의 예측 루마 블록들을 감산함으로써 CU에 대한 루마 잔여 블록을 생성하여 CU의 루마 잔여 블록의 각 샘플이 CU의 예측 루마 블록들 중 하나의 루마 샘플과 CU의 오리지널 루마 코딩 블록의 대응하는 샘플 사이의 차이를 나타내도록 할 수 있다. 이와 유사하게, 비디오 인코더(20)는, CU에 대한 Cb 잔여 블록 및 Cr 잔여 블록을 각각 생성하여 CU 의 Cb 잔여 블록의 각 샘플이 CU 의 예측 Cb 블록들 중 하나의 Cb 샘플과 CU의 오리지널 Cb 코딩 블록의 대응하는 샘플 사이의 차이를 나타내고CU 의 Cr 잔여 블록의 각 샘플이 CU 의 예측 Cr 블록들 중 하나의 Cr 샘플과 CU의 오리지널 Cr 코딩 블록의 대응하는 샘플 사이의 차이를 나타내도록 할 수 있다.
추가로, 도 4c에 도시된 바와 같이, 비디오 인코더(20)는 CU 의 루마, Cb 및 Cr 잔여 블록들을 하나 혹은 그 이상의 루마, Cb 및 Cr 변환 블록들로 분해하기 위해 쿼드-트리 분할을 사용할 수 있다. 변환 블록은 동일한 변환이 적용되는 샘플들의 직사각형(정사각형 또는 비 정사각형) 블록이다. CU의 변환 단위(TU)는 루마 샘플들의 변환 블록, 크로마 샘플들의 2개의 대응하는 변환 블록들 및 변환 블록 샘플들을 변환하기 위하여 사용되는 신택스 요소들을 포함할 수 있다. 따라서, CU의 각 TU는 루마 변환 블록, Cb 변환 블록, 및 Cr 변환 블록과 연관될 수 있다. 일부 예들에서, TU와 연관된 루마 변환 블록은 CU의 루마 잔여 블록의 서브-블록일 수 있다. Cb 변환 블록은 CU의 Cb 잔여 블록의 서브-블록일 수 있다. Cr 변환 블록은 CU의 Cr 잔여 블록의 서브-블록일 수 있다. 모노크롬 픽처들 또는 3개의 각각의 컬러 평면을 갖는 픽처들에서, TU는 단일 변환 블록 및 변환 블록의 샘플들을 예측하기 위하여 사용하는 신택스 구조들을 포함할 수 있다.
비디오 인코더(20)는 TU에 대한 루마 계수 블록을 생성하기 위해 TU의 루마 변환 블록에 하나 혹은 그 이상의 변환들을 적용할 수 있다. 계수 블록은 변환 계수들의 2차원 어레이일 수 있다. 변환 계수는 스칼라 양(scalar quantity)일 수 있다. 비디오 인코더(20)는 TU에 대한 Cb 계수 블록을 생성하기 위해 TU의 Cb 변환 블록에 하나 혹은 그 이상의 변환들을 적용할 수 있다. 비디오 인코더(20)는 TU에 대한 Cr 계수 블록을 생성하기 위해 TU의 Cr 변환 블록에 하나 혹은 그 이상의 변환들을 적용할 수 있다.
계수 블록(예를 들어, 루마 계수 블록, Cb 계수 블록 또는 Cr 계수 블록)을 생성한 후, 비디오 인코더(20)는 계수 블록을 양자화할 수 있다. 양자화는 일반적으로 변환 계수를 양자화하여 변환 계수를 나타내기 위하여 사용되는 데이터의 양을 가능한 감소시켜 추가적인 압축을 제공하는 프로세스를 나타낸다. 비디오 인코더(20)가 계수 블록을 양자화한 후, 비디오 인코더(20)는 양자화된 변환 계수들을 나타내는 신택스 요소들을 엔트로피 인코딩할 수 있다. 예를 들어, 비디오 인코더(20)는 양자화된 변환 계수들을 나타내는 신택스 요소들에 대해 컨텍스트-적응 이진 산술 코딩(Context-Adaptive Binary Arithmetic Coding, CABAC)을 수행할 수 있다. 마지막으로, 비디오 인코더(20)는 저장 장치(32)에 저장되거나 목적지 장치(14)로 전송되는, 코딩된 프레임들 및 관련 데이터의 표현을 형성하는 비트들의 시퀀스를 포함하는 비트스트림을 출력할 수 있다.
비디오 인코더(20)에 의하여 생성된 비트스트림을 수신한 후, 비디오 디코더(30)는 비트스트림을 파싱(parsing)하여 비트스트림으로부터 신택스 요소들을 획득할 수 있다. 비디오 디코더(30)는 비트스트림으로부터 획득된 신택스 요소들에 적어도 부분적으로 기반하여 비디오 데이터의 프레임들을 재구성할 수 있다. 비디오 데이터를 재구성하는 프로세스는 일반적으로 비디오 인코더(20)에 의하여 수행되는 인코딩 프로세스와 반대된다. 예를 들어, 비디오 디코더(30)는 현재 CU의 TU들과 연관된 계수 블록들에 대해 역변환을 수행하여 현재 CU의 TU들과 연관된 잔여 블록을 재구성할 수 있다. 비디오 디코더(30)는 또한 현재 CU의 PU들에 대한 예측 블록들의 샘플들을 현재 CU의 TU들의 변환 블록들의 대응하는 샘플들에 가산함으로써 현재 CU의 코딩 블록들을 재구성한다. 프레임의 각각의 CU에 대한 코딩 블록들을 재구성한 후, 비디오 디코더(30)는 프레임을 재구성할 수 있다.
SAO는 디블록킹 필터 적용 후 인코더에 의하여 전송한 룩-업 테이블들의 값들을 기반으로 각 샘플에 오프셋 값을 조건부로 추가하여 디코딩된 샘플들을 수정하는 프로세스이다. 신택스 요소 sao-type-idx에 의하여 CTB별로 선택된 필터링 타입을 기반으로 영역의 기반상에서 SAO 필터링을 수행한다. sao-type-idx의 값 0은 SAO 필터를 CTB에 적용하지 않음을 가리키며, 값 1과 2는 각각 밴드 오프셋 및 엣지 오프셋 필터링 타입들의 사용을 시그널링한다. 1과 동일한 sao-type-idx에 의하여 지정한 밴드 오프셋 모드에서, 선택한 오프셋 값은 샘플 진폭에 직접적으로 의존한다. 당해 모드에서, 전체 샘플 진폭 범위는 밴드라고 불리는 32개의 세그먼트들로 균일하게 분할되고, 이들 중 4개의 밴드(32개의 밴드 내에서 연속적인)에 속하는 샘플 값들은 밴드 오프셋으로 표시된 전송 값들을 추가하여 수정되며, 밴드 오프셋은 양 또는 음일 수 있다. 4개의 연속적인 밴드들을 사용하는 주된 이유는 밴딩 아티팩트가 나타날 수 있는 스무스한 영역에서 CTB에서의 샘플 진폭이 소수의 밴드에만 집중되는 경향이 있기 때문이다. 또한 4개의 오프셋들을 사용하는 디자인 초이스는 4개의 오프셋 값들을 사용하는 엣지 오프셋 모드의 동작과 통합된다. 2와 동일한 sao-type-idx에 의하여 지정한 엣지 오프셋 모드에서 0 부터 3 사이의 값들을 갖는 신택스 요소 sao-eo-class는 CTB의 엣지 오프셋 분류에 수평, 수직 또는 두 개의 대각선 그래디언트 방향 중 하나가 사용되는지 여부를 시그널링한다.
도 5는 본 개시의 일부 구현 방식들에 따른 샘플 적응 오프셋(SAO: Sample Adaptive Offset)에서 사용하는 4개의 그래디언트 패턴들을 나타내는 블록도이다. 4개의 그래디언트 패턴(502, 504, 506, 508)은 에지 오프셋 모드에서의 대응하는 sao-eo-class에 사용된다. "p"로 표기된 샘플은 고려해야 할 중심 샘플을 가리킨다. "n0"과 "n1"로 표기된 2개의 샘플은 (a) 수평(sao-eo-class = 0), (b) 수직(sao-eo-class = 1), (c) 135° 대각선(sao-eo-class = 2) 및 (d) 45°(sao-eo-class = 3) 그래디언트 패턴을 따른 2개의 인접한 샘플을 지정한다. 도 5에서와 같이, 어느 위치에 위치한 샘플 값 p와 인접한 위치에 위치한 두 샘플의 값 n0 및 n1을 비교함으로써, CTB에서의 각 샘플을 5개의 EdgeIdx 카테고리 중 하나로 분류한다. 당해 분류는 디코딩된 샘플 값들을 기반으로 각 샘플에 대하여 수행하므로, EdgeIdx 분류에 추가적인 시그널링이 필요하지 않다. 샘플 위치에서의 EdgeIdx 카테고리에 따라, 1부터 4까지의 EdgeIdx 카테고리의 경우 전송된 룩-업 테이블로부터의 오프셋 값과 샘플 값을 가산한다. 오프셋 값은 카테고리 1과 카테고리 2에 있어서 항상 양의 값이고, 카테고리 3과 카테고리 4에 있어서 항상 음의 값이다. 따라서, 필터는 일반적으로 엣지 오프셋 모드에서 스무스 이펙트를 갖는다. 아래의 표 1은 SAO 에지 분류에서의 샘플 EdgeIdx 카테고리들을 예시한다.
표 1은 SAO 에지 분류에서의 샘플 EdgeIdx 카테고리들을 예시한다.
EdgeIdx 조건 의미
0
1
2
3
4
아래에 나열되지 않은 경우
p<n0 및 p<n1
p<n0 및 p=n1 또는 p<n1 및 p=n0
p>n0 및 p=n1 또는 p>n1 및 p=n0
p>n0 및 p>n1
단독 영역
로컬 미니멈
엣지
엣지
로컬 맥시멈
SAO 타입1 및 SAO 타입2의 경우, 각 CTB에 대하여 총 4개의 진폭 오프셋 값들을 디코더로 전송한다. 타입1의 경우 부호도 인코딩된다. 오프셋 값들과 sao-type-idx 및 sao-eo-class와 같은 관련 신택스 요소들은 인코더에 의하여 결정된다. 일반적으로 레이트-왜곡 성능을 최적화하는 기준을 사용한다. SAO 파라미터는 병합 플래그를 사용하여 좌측 CTB 또는 상측 CTB에서 상속됨을 가리킴으로써 시그널링을 유효하게 만들 수 있다. 요약하면, SAO는 재구성된 신호를 추가로 세분화할 수 있는 비선형 필터링 동작이며, 스무스 영역과 주변 엣지 모두에서 시그널링 표현을 강화시킬 수 있다.
일부 실시예들에서, 본 개시에서는 크로스-컴포넌트 정보를 도입함으로써 코딩 효율을 향상시키거나 샘플 적응 오프셋(SAO)의 복잡성을 줄이기 위한 방법들 및 시스템들을 개시한다. SAO는 HEVC, VVC, AVS2 및 AVS3 표준에 사용된다. 비록 HEVC, VVC, AVS2 및 AVS3 표준에서의 기존의 SAO 디자인이 이하의 설명에서 기본 SAO 방법으로 사용되지만, 비디오 코딩 영역의 당업자에게는 본 개시에서 설명한 크로스-컴포넌트 방법들이 다른 루프 필터 디자인 또는 유사한 디자인 사상을 가진 기타 코딩 도구들에도 적용될 수 있다. 예를 들어, AVS3 표준에서 SAO는 강화 샘플 적응 오프셋(ESAO: Enhanced Sample Adaptive Offset)이라는 코딩 도구로 대체된다. 단, 본 개시에 개시된 CCSAO는 ESAO와 병렬로 적용할 수도 있다. 또 다른 예에서, CCSAO는 AV1 표준에서의 제한된 방향성 강화 필터(CDEF: Constrained Directional Enhancement Filter)와 병렬로 적용할 수 있다.
HEVC, VVC, AVS2 및 AVS3 표준들에서의 기존의 SAO 디자인의 경우, 루마Y, 크로마Cb 및 크로마Cr 샘플 오프셋 값들을 독립적으로 결정한다. 예를 들어, 현재 크로마 샘플 오프셋은 동일위치(collocated) 또는 인접한 루마 샘플들을 고려하지 않고 현재 및 인접한 크로마 샘플 값들에 의해서만 결정된다. 그러나 루마 샘플들은 크로마 샘플들보다 더 많은 원본 픽처 세부 정보를 보존하며, 현재 크로마 샘플 오프셋의 결정에 도움이 될 수 있다. 또한, 크로마 샘플들은 일반적으로 RGB에서 YCbCr로의 색상 변환 후 또는 양자화 및 디블록킹 필터링 이후 고주파 세부 정보를 손실하므로, 크로마 오프셋 결정을 위해 고주파 세부 정보가 보존된 루마 샘플을 도입하는 것이 크로마 샘플 재구성에 도움이 될 수 있다. 따라서, 구성요소 간 상관 관계를 탐색, 예를 들어 CCSAO(Cross-Component Sample Adaptive Offset)의 방법과 시스템을 사용함으로써 추가적인 이득을 기대할 수 있다. 또 다른 예는 SAO의 경우, 루마 샘플 오프셋들은 루마 샘플들에 의해서만 결정된다. 그러나, 예를 들어, 동일한 밴드 오프셋(BO) 분류를 가진 루마 샘플은 그 동일위치 크로마 샘플 및 인접한 크로마 샘플들에 의하여 추가로 분류될 수 있으며, 이는 더 효과적인 분류로 이어질 수 있다. SAO 분류는 원본 픽처와 재구성된 픽처 사이의 샘플 차이를 보상하기 위한 지름길로 간주할 수 있다. 따라서 효과적인 분류가 필요하다.
도 6a는 본 개시의 일부 구현 방식들에 따른 크로마 샘플들에 적용되고 입력으로서 DBF Y를 사용하는 CCSAO의 시스템과 프로세스를 도시하는 블록도이다. 루마 디블록킹 필터링 이후의 루마 샘플(DBF Y)은 SAO Cb 및 SAO Cr 이후의 크로마 Cb 및 Cr에 대한 추가 오프셋들을 결정하는 데 사용된다. 예를 들어, 현재 크로마 샘플(602)은 먼저 동일위치 루마 샘플(604)과 인접한(white) 루마 샘플(606)을 사용하여 분류하고, 대응하는 분류의 해당 CCSAO 오프셋 값을 현재 크로마 샘플 값에 가산한다. 도 6b는 본 개시의 일부 구현 방식들에 따른 루마 샘플들 및 크로마 샘플들에 적용되고 입력으로서 DBF Y/Cb/Cr를 사용하는 CCSAO의 시스템과 프로세스를 도시하는 블록도이다. 도 6c는 본 개시의 일부 구현 방식들에 따른 독립적으로 동작할 수 있는 CCSAO의 시스템과 프로세스를 도시하는 블록도이다. 요약하자면, 일부 실시예들에서, 현재의 루마 샘플을 분류하기 위하여, 현재 루마 샘플 및 인접한 루마 샘플, 동일위치 크로마 샘플 및 인접한 크로마 샘플(Cb 및 Cr)을 사용할 수 있다. 일부 실시예들에서, 현재 크로마 샘플(Cb 또는 Cr)을 분류하기 위하여, 동일위치 루마 샘플 및 인접한 루마 샘플, 동일위치 크로스-크로마 샘플 및 인접한 크로스-크로마 샘플, 및 현재 크로마 샘플 및 인접한 크로마 샘플을 사용할 수 있다. 일부 실시예들에서, CCSAO는 (1) DBF Y/Cb/Cr 이후, (2) DBF 이전의 재구성된 이미지 Y/Cb/Cr, 또는 (3) SAO/Cb/Cr 이후, 또는 (4) ALF/Cb/Cr 이후에 캐스케이드(cascade)될 수 있다.
일부 실시예들에서, CCSAO는 다른 코딩 툴들, 예를 들어, AVS 표준에서의 ESAO 또는 AV1 표준에서의 CDEF과 병렬로 적용할 수도 있다. 도 6d는 본 개시의 일부 구현 방식들에 따른 AVS 표준에서의 강화 샘플 적응 오프셋(ESAO: Enhanced Sample Adaptive Offset)과 병렬로 적용하는 CCSAO의 시스템과 프로세스를 도시하는 블록도이다.
도 6e는 본 개시의 일부 구현 방식들에 따른 SAO 이후 CCSAO를 적용하는 시스템과 프로세스를 도시하는 블록도이다. 일부 실시예들에서, 도 6e는 CCSAO의 위치가 SAO 이후, 즉 VVC 표준에서의 크로스-컴포넌트 적응 루프 필터(CCALF: Cross-Component Adaptive Loop Filter)의 위치 이후가 될 수 있음을 도시한다. 도 6f는 본 개시의 일부 구현 방식들에 따른 CCSAO의 시스템과 프로세스가 CCALF 없이 독립적으로 동작할 수 있는 것을 도시하는 블록도이다. 일부 실시예들에서, 예를 들어, AVS3 표준에서 SAO/Cb/Cr은 ESAO로 대체될 수 있다.
도 6g는 본 개시의 일부 구현 방식들에 따른 CCALF와 병렬로 적용하는 CCSAO의 시스템과 프로세스를 도시하는 블록도이다. 일부 실시예들에서, 도 6g는 CCSAO가 CCALF와 병렬로 적용할 수 있음을 도시한다. 일부 실시예들에서, 도 6g에서, CCALF 및 CCSAO의 위치를 스위칭할 수 있다. 일부 실시예들에서, 도 6a 내지 도 6g에서, 또는 본 개시 전반에 걸쳐, SAO Y/Cb/Cr 블록들은 ESAO Y/Cb/Cr(AVS3에서) 또는 CDEF(AV1에서)로 대체할 수 있다. 주의할 점은, Y/Cb/Cr은 비디오 코딩 영역에서 Y/U/V로 표시할 수도 있다.
일부 실시예들에서, 현재 크로마 샘플 분류는 동일위치 루마 샘플의 SAO 타입(엣지 오프셋(EO) 또는 BO), 분류 및 카테고리를 재사용하고 있다. 대응하는 CCSAO 오프셋은 시그널링하거나 디코더 자체에서 도출할 수 있다. 예를 들어, h_Y를 동일위치 루마 SAO 오프셋, h_Cb 및 h_Cr을 각각 CCSAO Cb 및 Cr 오프셋으로 지정한다. h_Cb(또는 h_Cr)=w*h_Y, 여기서 w는 제한된 표에서 선택할 수 있다. 예를 들어, +-1/4, +-1/2, 0, +-1, +-2, +-4... 등이며, 여기서 |w|는 2의 거듭제곱 값만 포함한다.
일부 실시예들에서, 동일위치 루마 샘플(Y0)과 인접한 8개의 루마 샘플들의 비교 점수 [-8, 8]를 사용하며, 이는 총 17개의 분류들을 산출한다.
Initial Class = 0
Loop over neighboring 8 luma samples (Yi, i=1 to 8)
if Y0 > Yi Class += 1
else if Y0 < Yi Class -= 1
일부 실시예들에서, 상술한 분류 방법들을 조합할 수 있다. 예를 들어, SAO BO(32개 밴드 분류)와 조합한 비교 점수를 사용하여 다양성을 높이고, 이는 총 17 * 32개 분류를 산출한다. 일부 실시예들에서, Cb와 Cr은 동일한 분류를 사용하여 복잡성을 줄이거나 비트를 절약할 수 있다.
도 7은 본 개시의 일부 구현 방식들에 따른 CCSAO를 사용하는 샘플 프로세스를 도시하는 블록도이다. 구체적으로, 도 7은 CCSAO의 입력이 수직 DBF 및 수평 DBF의 입력을 도입하여 분류 결정을 단순화하거나 유연성을 높일 수 있음을 도시한다. 예를 들어, Y0_DBF_V, Y0_DBF_H 및 Y0을 각각 DBF_V, DBF_H 및 SAO의 입력에 있는 동일위치 루마 샘플들로 지정한다. Yi_DBF_V, Yi_DBF_H 및 Yi는 각각 DBF_V, DBF_H 및 SAO의 입력에서 인접한 8개의 루마 샘플들이며, 여기서 i = 1 내지 8이다.
Max Y0=max(Y0_DBF_V,Y0_DBF_H,Y0_DBF)
Max Yi =max(Yi_DBF_V,Yi_DBF_H,Yi_DBF)
또한 Max Y0과 Max Yi을 CCSAO 분류로 피딩한다.
도 8은 본 개시의 일부 구현 방식들에 따른 CCSAO 프로세스가 수직 및 수평 디블록킹 필터(DBF: deblocking filter)와 인터리빙되는 것을 도시하는 블록도이다. 일부 실시예들에서, 도 6, 도 7 및 도 8에서의 CCSAO 블록들은 선택적인 것일 수 있다. 예를 들어, Y0_DBF_V과 Yi_DBF_V을 제1 CCSAO_V에 사용하고, 이는 도 6에서와 동일한 샘플 프로세싱을 적용하며, 동시에 DBF_V 루마 샘플의 입력을 CCSA0 입력으로 사용한다.
일부 실시예들에서, 아래의 표 2는 구현된 CCSAO 신택스를 예시한다.
표 2: CCSAO 신택스의 일 예.
레벨 신택스 요소 의미
SPS cc_sao_enabled_ag 시퀀스에서의 CCSAO의 인에이블 여부
SH slice_cc_sao_cb_agslice_cc_sao_cr_ag Cb 또는 Cr를 위한 CCSAO의 인에이블 여부
CTU cc_sao_merge_left_flagcc_sao_merge_up_flag CCSAO 오프셋을 좌측 CTU 또는 상측 CTU에서 병합
CTU cc_sao_class_idx 당해 CTU의 CCSAO 분류 인덱스
CTU cc_sao_offset_sign_flagcc_sao_offset_abs 당해 CTU 분류의 CCSAO Cb와 Cr 오프셋 값들
일부 실시예들에서, CCSAO Cb 및 Cr 오프셋 값들을 시그널링하기 위하여, 하나의 추가적인 크로마 오프셋을 시그널링하면, 더하기 또는 빼기 부호 또는 가중치를 통해 다른 크로마 컴포넌트 오프셋을 도출하여 비트 오버헤드를 절약할 수 있다. 예를 들어, h_Cb와 h_Cr을 각각 CCSAO Cb와 Cr의 오프셋이라고 한다. 명시적 시그널링 w를 이용하며, 여기서 w =+-|w|이고, 제한된 |w|개의 후보를 이용하며, 명시적 시그널링 h_Cr 자체가 없는 경우 h_Cb에서 h_Cr을 도출할 수 있다.
h_Cr = w * h_Cb
도 9는 본 개시의 일부 구현 방식들에 따른 크로스-컴포넌트 상관관계를 사용하여 비디오 신호를 디코딩하는 예시적인 프로세스(900)를 도시하는 흐름도이다.
비디오 디코더(30)는 제1 컴포넌트와 제2 컴포넌트를 포함하는 비디오 신호를 수신한다(910). 일부 실시예들에서, 제1 컴포넌트는 비디오 신호의 루마 컴포넌트이고, 제2 컴포넌트는 비디오 신호의 크로마 컴포넌트이다.
비디오 디코더(30)는 제2 컴포넌트와 연관된 복수의 오프셋들을 더 수신한다(920).
비디오 디코더(30)는 그 다음 제1 컴포넌트의 특성 측정을 이용하여 제2 컴포넌트와 연관된 분류 카테고리를 획득한다(930). 예를 들어, 도 6에서, 먼저 동일위치 루마 샘플(604)과 인접한(백색) 루마 샘플(606)을 이용하여 현재 크로마 샘플(602)을 분류하고, 이에 대응하는 CCSAO 오프셋 값을 현재 크로마 샘플에 가산한다.
비디오 디코더(30)는 분류 카테고리에 따라 제2 컴포넌트에 대한 복수의 오프셋들 중에서 제1 오프셋을 더 선택한다(940).
비디오 디코더(30)는 선택된 제1 오프셋에 기반하여 제2 컴포넌트를 더 수정한다(950).
일부 실시예들에서, 제1 컴포넌트의 특성 측정을 이용하여 제2 컴포넌트와 연관된 분류 카테고리를 획득하는 단계(930)는, 제1 컴포넌트의 해당 샘플을 이용하여 제2 컴포넌트의 해당하는 각각의 샘플의 분류 카테고리를 획득하는 단계를 포함하며, 여기서 제1 컴포넌트의 해당 샘플은 제2 컴포넌트의 해당하는 각각의 샘플에 대한 제1 컴포넌트의 해당하는 동일위치 샘플이다. 예를 들어, 현재 크로마 샘플 분류는 동일위치 루마 샘플의 SAO 타입(EO 또는 BO), 분류 및 카테고리를 재사용한다.
일부 실시예들에서, 제1 컴포넌트의 특성 측정을 이용하여 제2 컴포넌트와 연관된 분류 카테고리를 획득하는 단계(930)는, 제1 컴포넌트의 해당 샘플을 이용하여 제2 컴포넌트의 해당하는 각각의 샘플의 해당 분류 카테고리를 획득하는 단계를 포함하며, 여기서 제1 컴포넌트의 해당 샘플은 디블록킹되기 전에 재구성되거나 디블록킹된 이후에 재구성된다. 일부 실시예들에서, 제1 컴포넌트는 디블록킹 필터(DBF)에서 디블록킹된다. 일부 실시예들에서, 제1 컴포넌트는 루마 디블록킹 필터(DBF Y)에서 디블록킹된다. 예를 들어, 도 6 또는 도7을 대신하여, CCSAO의 입력은 DBFY 이전일 수도 있다.
일부 실시예들에서, 특성 측정은 제1 컴포넌트의 샘플 값의 범위를 여러개의 밴드들로 나누고 제1 컴포넌트에서의 샘플의 강도 값에 기반하여 밴드를 선택함으로써 도출된다. 일부 실시예들에서 특성 측정은 밴드 오프셋(BO)으로부터 도출된다.
일부 실시예들에서, 특성 측정은 제1 컴포넌트에서의 샘플의 에지 정보의 방향 및 강도에 기반하여 도출된다. 일부 실시예들에서 특성 측정은 에지 오프셋(EO)으로부터 도출된다.
일부 실시예들에서, 제2 컴포넌트를 수정하는 단계(950)는 선택된 제1 오프셋을 제2 컴포넌트에 직접적으로 가산하는 단계를 포함한다. 예를 들어, 해당 CCSAO 오프셋 값을 현재 크로마 컴포넌트 샘플에 가산한다.
일부 실시예들에서, 제2 컴포넌트를 수정하는 단계(950)는 선택된 제1 오프셋을 제2 오프셋에 매핑하고, 매핑된 제2 오프셋을 제2 컴포넌트에 가산하는 단계를 포함한다. 예를 들어, CCSAO Cb 및 Cr 오프셋 값들을 시그널링하기 위하여, 하나의 추가 크로마 오프셋을 시그널링하면, 다른 크로마 컴포넌트 오프셋은 더하기 또는 빼기 부호를 사용하거나 가중하여 도출하여, 비트 오버헤드를 절약할 수 있다.
일부 실시예들에서, 비디오 신호를 수신(910)하는 단계는 CCSAO를 사용하여 비디오 신호를 디코딩하는 방법을 비디오 신호에 대하여 인에이블하는지 여부를 가리키는 신택스 요소를 시퀀스 파라미터 세트(SPS: Sequence Parameter Set)에서 수신하는 단계를 포함한다. 일부 실시예들에서, cc_sao_enabled_ag는 시퀀스 레벨에서 CCSAO를 인에이블하는지 여부를 가리킨다.
일부 실시예들에서, 비디오 신호를 수신하는 단계(910)는 CCSAO를 사용하여 비디오 신호를 디코딩하는 방법을 제2 컴포넌트에 대하여 인에이블하는지 여부를 가리키는 신택스 요소를 슬라이스 레벨에서 수신하는 단계를 포함한다. 일부 실시예들에서, slice_cc_sao_cb_ag 또는 slice_cc_sao_cr_ag는 Cb 또는 Cr에 대한 해당 슬라이스에서 CCSAO를 인에이블하는지 여부를 가리킨다.
일부 실시예들에서, 제2 컴포넌트와 연관된 복수의 오프셋들을 수신하는 단계(920)는 상이한 코딩 트리 유닛들(CTU: Coding Tree Unit)들을 위한 상이한 오프셋들을 수신하는 단계를 포함한다. 일부 실시예들에서, CTU의 경우, cc_sao_offset_sign_flag는 오프셋의 부호를 가리키고, cc_sao_offset_abs는 현재 CTU의 CCSAO Cb 및 Cr 오프셋 값을 가리킨다.
일부 실시예들에서, 제2 컴포넌트와 연관된 복수의 오프셋들을 수신하는 단계(920)는 CTU의 수신된 오프셋들이 CTU의 이웃한 CTU 중 하나의 오프셋과 동일한 지를 가리키는 신택스 요소를 수신하는 단계를 포함하며, 여기서 이웃한 CTU는 좌측 이웃한 CTU 또는 상측 이웃한 CTU이다. 예를 들어, cc_sao_merge_up_flag는 CCSAO 오프셋이 좌측 CTU에서 병합되는지 아니면 상측 CTU에서 병합되는지를 가키킨다.
일부 실시예들에서, 비디오 신호는 제3 컴포넌트를 더 포함하고, CCSAO를 사용하여 비디오 신호를 디코딩하는 방법은, 제3 컴포넌트와 연관된 제2 복수의 오프셋들을 수신하는 단계; 제1 컴포넌트의 특성 측정을 이용하여 제3 컴포넌트와 연관된 제2 분류 카테고리를 획득하는 단계; 제2 분류 카테고리에 따라 제3 컴포넌트에 대한 제2 복수의 오프셋들 중 제3 오프셋을 선택하는 단계; 및 선택된 제3 오프셋에 기반하여 제3 컴포넌트를 수정하는 단계를 포함한다.
도 11은 본 개시의 일부 구현 방식들에 따른 모든 동일위치 및 인접한(백색) 루마/크로마 샘플들을 CCSAO 분류에 공급할 수 있는 샘플 프로세스를 도시하는 블록도이다. 도 6a, 6b 및 도 11은 CCSAO 분류의 입력을 도시한다. 도 11에서 현재 크로마 샘플은 1104이고, 크로스-컴포넌트 동일위치 크로마 샘플은 1102이며, 동일위치 루마 샘플은 1106이다.
일부 실시예들에서, 분류기 예(C0)는 하기 도 12의 동일위치 루마 또는 크로마 샘플 값(Y0, 도 6b 및 도 6c의 Y4/U4/V4)을 사용하여 분류한다. band_num을 루마 또는 크로마 동적 범위의 균등하게 분할된 밴드들의 수, bit_depth를 시퀀스 비트 깊이라고 하고, 현재 크로마 샘플의 분류 인덱스의 예는 다음과 같다:
Class (C0) = (Y0 * band_num) >> bit_depth
일부 실시예들에서, 분류는 반올림을 고려하는 바, 예를 들어:
Class (C0)=(( Y0Хband_num)+(1?bit_depth))>>bit_depth
일부 band_num 및 bit_depth의 예들을 아래 표 3에 열거하였다. 표 3은 각 분류 예에 대하여 밴드의 수가 상이한 경우의 세 가지 분류 예를 예시한다.
표 3: 각각의 분류 인덱스에 대한 예시적인 band_num 및 bit_depth.
일부 실시예들에서, 분류기는 C0 상이한 루마 샘플 위치를 사용하여 분류한다. 도 10a는 본 개시의 일부 구현 방식들에 따른 상이한 루마(또는 크로마) 샘플 위치를 사용하여 C0 분류(예를 들어, C0 분류를 위하여 인접한 Y7를 사용하되 Y0은 사용하지 않음)하는 분류기를 보여주는 블록도이다.
일부 실시예들에서, 상이한 분류기는 SPS(Sequecne Parameter Set)/APS(Adaption Parameter Set)/PPS(Pictuer Parameter Set)/PH(Pictuer Header)/SH(Slice Header)/CTU(Coding Tree Unit)/CU(Coding Unti) 레벌에서 스위칭될 수 있다. 예하면, 도 10에서, Y0은 POC0에 사용되며, Y7은 POC1에 사용되며, 이는 하기 표 4와 같다.
표 4: 상이한 분류기들을 상이한 픽처들에 적용한다.
POC 분류기 C0 band_num 총 분류 수
0 Y0위치를 사용하는 C0 8 8
1 Y7위치를 사용하는 C0 8 8
일부 실시예들에서, 도 10b는 본 개시의 일부 구현 방식들에 따른 루마 후보들에 대한 상이한 형상들의 일부 예시들을 도시한다. 예를 들어, 상기 형상들에 제한을 적용할 수 있다. 일부 경우에서, 루마 후보의 총 수는 도 10b의 (b)(c)(d)와 같이 2의 거듭제곱이어야 한다. 일부 경우에서, 루마 후보의 수는 도 10b의 (a)(c)(d)(e)와 같이 크로마 샘플(중앙)에 대하여 수평 및 수직 대칭이어야 한다. 일부 실시예들에서, 2의 거듭제곱 제한 및 대칭 제한은 크로마 후보에도 적용될 수 있다. 도 6b 및 도 6c의 U/V 부분은 대칭 제한의 일 예를 도시한다. 일부 실시예들에서, 상이한 색상 포맷은 상이한 분류기 "제한"을 가질 수 있다. 예를 들어, 420 색상 포맷은 도 6b 및 도 6c와 같이 루마/크로마 후보 선택(3Х3 형상에서 선택된 하나의 후보)을 사용하지만, 444 색상 포맷은 루마 및 크로마 후보 선택을 위하여 도 10b의 (f)를 사용하고, 422 색상 포맷은 루마(2개의 크로마 샘플은 4개의 루마 후보를 공유함)를 위하여 도 10b의 (g)를 사용한다.
일부 실시예들에서, C0 위치 및 C0 band_num은 SPS/APS/PPS/PH/SH/CTU/CU 레벨에서 조합 및 스위칭될 수 있다. 상이한 조합들은 아래 표 5와 같이 다른 분류기가 될 수 있다.
표 5: 상이한 분류기들 및 밴드 수의 조합을 상이한 픽처들에 적용한다.
POC 분류기 C0 band_num 총 분류 수
0 Y0위치를 사용하는 C0 16 16
1 Y7위치를 사용하는 C0 8 8
일부 실시예들에서, 동일위치 루마 샘플 값(Y0)은 동일위치 루마 샘플과 인접한 루마 샘플을 가중하여 얻은 값(Yp)으로 대체된다. 도 12는 본 발명의 일부 구현 방식들에 따른 동일위치 루마 샘플 값을 동일위치 및 인접한 루마 샘플들을 가중하여 얻은 값으로 대체하는 예시적인 분류기를 도시한다. 동일위치 루마 샘플 값(Y0)은 인접한 루마 샘플을 가중하여 얻은 위상 보정 값(Yp)으로 대체할 수 있다. 상이한 Yp는 상이한 분류기가 될 수 있다.
일부 실시예들에서, 상이한 Yp는 상이한 크로마 포맷에 적용된다. 예를 들어, 도 12에서 (a)의 Yp는 420 크로마 포맷에 사용되고, (b)의 Yp는 422 크로마 포맷에 사용되며, Y0은 444 크로마 포맷에 사용된다.
일부 실시예들에서, 다른 분류기(C1)는 동일위치 루마 샘플(Y0)과 인접한 8개의 루마 샘플들의 비교 점수 [-8, 8]이며, 아래와 같이 총 17개의 분류들을 산출한다.
Initial Class (C1) = 0, Loop over neighboring 8 luma samples (Yi, i=1 to 8)
if Y0 > Yi Class += 1
else if Y0 < Yi Class -= 1
일부 실시예들에서, 변형(C1')은 비교 점수 [0, 8]만 카운트하고 이는 8개의 분류들을 산출한다. (C1, C1')은 분류 그룹이며, PH/SH 레벨 플래그를 시그널링하여 C1과 C1' 사이를 스위칭할 수 있다.
Initial Class (C1') = 0, Loop over neighboring 8 luma samples (Yi, i=1 to 8)
if Y0 > Yi Class += 1
일부 실시예들에서, 상이한 분류기들은 조합되어 일반 분류기를 생성한다. 예를 들어, 상이한 픽처(상이한 POC 값)의 경우 아래 표 6-1과 같이 상이한 분류기를 적용한다.
표 6: 상이한 일반 분류기들을 상이한 픽처들에 적용한다.
POC 분류기 C0 band_num 총 분류 수
0 C0과 C1을 조합 16 16Х17
1 C0과 C1'을 조합 16 16Х9
2 C0과 C1을 조합 7 7Х17
일부 실시예들에서, 다른 분류기 예(C3)는 표 7에 나타낸 바와 같이 비트마스크를 사용하여 분류한다. SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록 레벨에서 10비트 비트마스크를 시그널링하여 분류기를 가리킨다. 예를 들어, 비트마스크 11 1100 0000은 주어진 10비트 루마 샘플 값에서 가장 유효한 비트(MSB: most significant bit)만 분류에 사용되고 총 16개의 분류를 생성한다는 것을 의미한다. 다른 예시인 비트마스크 10 0100 0001은 3비트만 분류에 사용되며 총 8개의 분류를 생성한다는 것을 의미한다.
일부 실시예들에서, 비트마스크 길이(N)는 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록 레벨에서 고정되거나 스위칭될 수 있다. 예를 들어, 10비트 시퀀스의 경우, 픽처에서의 PH에서 4비트 비트마스크(1110)로 시그널링하며, MSB 3비트 b9, b8, b7이 분류에 사용된다. 다른 예는 LSB의 4비트 비트마스크 0011이며, 분류를 위해 b0, b1이 사용된다. 비트마스크 분류기는 루마 또는 크로마 분류에 적용될 수 있다. 비트마스크 N에 MSB 또는 LSB를 사용할지 여부는 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록 레벨에서 고정 또는 스위칭할 수 있다.
일부 실시예들에서, 루마 위치 및 C3 비트마스크는 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록 레벨에서 조합 및 스위칭될 수 있다. 상이한 조합은 상이한 분류기가 될 수 있다.
일부 실시예들에서, 비트마스크 제한의 "1s의 최대 수"를 적용하여 오프셋의 해당 수를 제한할 수 있다. 예를 들어 SPS에서 비트마스크의 "1s의 최대 수"를 4로 제한하면, 시퀀스에서의 최대 오프셋이 16이 된다. 상이한 POC에서의 비트마스크는 다를 수 있지만, "1s의 최대 수"는 4를 초과하지 않아야 한다(총 분류 수는 16을 초과하지 않아야 한다). "1s의 최대 수" 값은 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록 레벨에서 시그널링 및 스위칭할 수 있다.
표 7: 비트마스크를 사용하여 분류하는 분류기 예시(비트마스크 위치는 밑줄 표시됨).
POC 분류기 C3 10 비트 비트마스크 총 분류 수
0 C3을 사용하는 Y0 위치 11 1100 0000 16
루마 샘플 값 분류 인덱스
00 0000 1111 0 (0000)
10 1011 0011 9 (1010)
11 1100 1001 15 (1111)
POC 분류기 C3 10 비트 비트마스크 총 분류 수
1 C3을 사용하는 Y4 위치 10 0100 0001 8
루마 샘플 값 분류 인덱스
00 0000 1111 1 (001)
10 1011 0011 5 (101)
11 1100 1001 7 (111)
일부 실시예들에서, 도 11에 도시된 바와 같이, 다른 크로스-컴포넌트 크로마 샘플들, 예하면 크로마 샘플 (1102) 및 그 인접한 샘플들도 CCSAO 분류, 예를 들어 현재 크로마 샘플 (1104)에 대한 CCSAO 분류에 공급될 수 있다. 예를 들어, Cr 크로마 샘플은 CCSAO Cb 분류에 공급될 수 있다. Cb 크로마 샘플은 CCSAO Cr 분류에 공급될 수 있다. 크로스-컴포넌트 크로마 샘플의 분류기는 루마 크로스-컴포넌트 분류기와 동일하거나, 본 개시에서 설명된 바와 같이 자체 분류기를 가질 수 있다. 두 분류기를 결합하여 공동 분류기를 형성하여 현재 크로마 샘플을 분류할 수 있다. 예를 들어, 크로스-컴포넌트 루마 샘플과 크로마 샘플을 조합한 공동 분류기는 아래 표 8과 같이 총 16개의 분류를 산출한다.
표 8: 크로스-컴포넌트 루마 및 크로스 샘플들을 조합한 공동 분류기를 사용하는 분류기 예시(비트마스크는 밑줄 표시됨).
POC 분류기 분류 총 분류 수
0 조합
Y4위치를 사용하는 C3 비트마스크:1001000001 8
크로스 크로마 동일위치 위치를 사용하는 C0 C0 band_num:2 2
16
상술한 모든 분류기들(C0, C1, C1', C2, C3)을 조합할 수 있다. 예를 들어, 아래 표 9와 같다.
표 9: 상이한 분류기들을 조합한다.
POC 분류기 총 분류 수
0 C0, C1 및 C2를 조합 C0 band_num: 4 C2 band_num: 4 4Х17Х4
1 C0, C1' 및 C2를 조합 C0 band_num: 6 C2 band_num: 4 6Х9Х4
2 C1 및 C3를 조합 C3 1s의 수: 4 16Х17
일부 실시예들에서, 분류기 예(C2)는 동일위치 루마 샘플과 인접한 루마 샘플의 차이(Yn)를 사용한다. 도 12의 (c)는 비트 깊이가 10일 때 [-1024, 1023]의 동적 범위를 가지는 Yn의 예를 도시한다. C2 band_num을 Yn 동적 범위의 균등하게 분할된 밴드의 수라고 한다.
Class (C2) = (Yn + (1 << bit_depth) * band_num) >> (bit_depth + 1)
일부 실시예들에서, C0 및 C2를 조합하여 일반 분류기를 생성한다. 예를 들어, 상이한 픽처(상이한 POC)의 경우 아래 표 10과 같이 상이한 분류기를 적용한다.
표 10: 상이한 일반 분류기들을 상이한 픽처들에 적용한다.
POC 분류기 C0 band_num C2 band_num 총 분류 수
0 C0 및 C2를 조합 16 16 16Х17
1 C0 및 C2를 조합 8 7 8Х7
일부 실시예들에서, 상술한 모든 분류기들(C0, C1, C1', C2)을 조합한다. 예를 들어, 상이한 픽처(상이한 POC)의 경우 아래 표 8과 같이 상이한 분류기를 적용한다.
표 11: 상이한 일반 분류기들을 상이한 픽처들에 적용한다.
POC 분류기 C0 band_num C2 band_num 총 분류 수
0 C0, C1 및 C2을 조합 4 4 4Х17Х4
1 C0, C1' 및 C2를 조합 6 4 6Х9Х4
일부 실시예들에서, 동일한 POC에서 복수의 분류기들을 사용한다. 현재 프레임은 여러 영역들로 분할되며, 각 영역은 동일한 분류기를 사용한다. 예를 들어, POC0에서는 3개의 상이한 분류기를 사용하며, 아래 표 12와 같이 CTU 레벨에서 어떤 분류기(0, 1 또는 2)를 사용하는 지를 시그널링한다.
표 12: 상이한 일반 분류기들을 동일한 픽처에서의 상이한 영역들에 적용한다.
POC 분류기 C0 band_num 영역
0 Y0 위치를 사용하는C0 16 0
0 Y0 위치를 사용하는 C0 8 1
0 Y1 위치를 사용하는 C0 8 2
일부 실시예들에서, 복수의 분류기(복수의 분류기들은 대안적인 오프셋 세트들이라고도 할 수 있다)들의 최대 수는 고정되거나 SPS/APS/PPS/PH/SH/CTU/CU 레벨에서 시그널링할 수 있다. 일 예에서, 복수의 분류기들의 고정된 (사전에 정의된) 최대 수는 4이다. 이 경우 POC0에서 4개의 상이한 분류기들을 사용하며, CTU 레벨에서 어떤 분류기(0, 1 또는 2)를 사용하는지 시그널링한다. 절단-유너리(TU: Truncated-unary) 코드는 각 루마 또는 크로마 CTB에 사용되는 분류기를 가리키기 위하여 사용될 수 있다. 예를 들어, 아래 표 13과 같이, TU 코드가 0인 경우: CCSAO를 적용하지 않고, TU 코드가 10인 경우: 세트 0을 적용하고, TU 코드가 110인 경우: 세트 1을 적용하고, TU 코드가 1110인 경우: 세트 2를 적용하고, TU 코드가 1111인 경우: 세트 3을 적용한다. 고정 길이 코드(Fixed-length code), 골롬-라이스 코드(golomb-rice code), 지수-골롬 코드(exponential-golomb code)는 CTB에 대한 분류기(오프셋 세트 인덱스)를 나타내기 위하여 사용될 수 있다.
표 13: 절단-유너리(TU: Truncated-unary) 코드는 각각의 크로마 CTB에 사용되는 분류기를 가리키기 위하여 사용된다.
POC 분류기 C0 band_num 영역 TU 코드
0 Y3 위치를 사용하는 C0 6 0 10
0 Y3 위치를 사용하는 C0 7 1 110
0 Y1 위치를 사용하는 C0 3 2 1110
0 Y6 위치를 사용하는 C0 6 3 1111
1 Y0 위치를 사용하는 C0 16 0 10
1 Y0 위치를 사용하는 C0 8 1 110
1 Y1 위치를 사용하는 C0 8 2 1110
1280x720 시퀀스 POC0(CTU 크기가 128Х128인 경우 프레임 내 CTU 수는 10Х6)에 대하여 Cb 및 Cr CTB 오프셋 세트 인덱스들의 예를 제공한다. POC0 Cb는 4개의 오프셋 세트들을 사용하고 Cr은 1개의 오프셋 세트를 사용한다. 아래 표 14와 같이 오프셋 세트 인덱스가 0인 경우: CCSAO를 적용하지 않고; 오프셋 세트 인덱스가 1인 경우: 세트 0을 적용하고; 오프셋 세트 인덱스가 2인 경우: 세트 1을 적용하고;, 오프셋 세트 인덱스가 3인 경우: 세트 2를 적용하고; 오프셋 세트 인덱스가 4인 경우: 세트 3을 적용한다. 타입은 선택된 동일위치 루마 샘플(Yi)의 위치를 의미한다. 상이한 오프셋 세트들은 상이한 타입, band_num 및 해당 오프셋을 가질 수 있다.
표 14: 1280x720 시퀀스 POC0(CTU 크기가 128Х128인 경우 프레임 내 CTU 수는 10Х6)에 대하여 제공된 Cb 및 Cr CTB 오프셋 세트 인덱스들의 예.
일부 실시예들에서, 동일위치/현재 및 인접한 Y/U/V 샘플들을 공동으로 사용하여 분류하는 예를 아래 표 15에 나열하였다(각각의 Y/U/V 컴포넌트에 대한 3 컴포넌트 공동 bandNum 분류). POC0에서 {2, 4, 1} 오프셋 세트들이 {Y, U, V}에 각각 사용된다. 각각의 오프셋 세트는 SPS/APS/PPS/PH/SH/CTU/CU/서브블록 레벨에서 적응적으로 스위칭할 수 있다. 상이한 오프셋 세트들은 상이한 분류기들을 가질 수 있다. 예를 들어, 도 7 및 도 8에서 가리킨 후보 위치(candPos)에 있어서, 현재 Y4 루마 샘플을 분류하기 위하여, Y 세트 0은 {현재 Y4, 동일위치 U4, 동일위치 V4}를 후보로서 선택하고, 각각 상이한 bandNum{Y,U,V}={16,1,2}을 가진다. {candY, candU, candV}이 선택된 {Y, U, V} 후보들의 샘플 값들인 경우, 총 분류 수는 32개이며, 분류 인덱스 도출을 다음과 같이 표시할 수 있다.
bandY = (candY * bandNumY) >> BitDepth;
bandU = (candU * bandNumU) >> BitDepth;
bandV = (candV * bandNumV) >> BitDepth;
classIdx = bandY * bandNumU * bandNumV
+ bandU * bandNumV
+ bandV;
또 다른 예는 POC1 컴포넌트 V 세트 1 분류이다. 이 예에서는 bandNum = {4,1,2}을 가지는 candPos = {인접한 Y8, 인접한 U3, 인접한 V0}을 사용하며, 이는 8개의 분류들을 생성한다.
표 15: 동일위치/현재 및 인접한 Y/U/V 샘플들을 공동으로 사용하여 분류하는 예.
POC 현재컴포넌트 오프셋세트 분류기:bandNum(Y,U,V)을 가지는 candPos(Y,U,V) 총 분류 수
(오프셋들의 수)
0 Y 0 (Y4,U4,V4),(16,1,2) 16Х1Х2=32
1 (Y4,U0,V2),(15,4,1) 15Х4Х1=60
U 0 (Y8,U3,V0),(1,1,2) 2
1 (Y4,U1,V0),(15,2,2) 60
2 (Y6,U6,V6),(4,4,1) 16
3 (Y2,U0,V5),(1,1,1) 1
V 0 (Y2,U0,V5),(1,1,1) 1
1 Y 0 (Y4,U1,V0),(15,2,2) 60
U 0 (Y6,U2,V1),(7,1,2) 14
V 0 (Y8,U3,V0),(1,1,2) 2
1 (Y8,U3,V0),(4,1,2) 8
일부 실시예들에서, 최대 band_num(bandNumY, bandNumU 또는 bandNumV)은 고정되거나 SPS/APS/PPS/PH/SH/CTU/CU 레벨에서 시그널링할 수 있다. 예를 들어, 디코더에서 최대 band_num=16을 고정하고 각각의 프레임에 대하여 4개의 비트들을 시그널링하여 프레임에서의 C0 band_num을 가리킨다. 일부 기타 최대 band_num 예들을 아래 표 16에 나열하였다.
표 16: 최대 band_num 및 band_num 비트 예들.
Band_num_min Band_num_max Band_num 비트
1 1 0
1 2 1
1 4 2
1 8 3
1 16 4
1 32 5
1 64 6
1 128 7
1 256 8
일부 실시예들에서, C0 분류에 제한을 적용할 수 있다. 예를 들어, band_num(bandNumY, bandNumU 또는 bandNumV)을 2의 거듭제곱 값으로만 제한한다. band_num을 명시적으로 시그널링하는 대신, 신택스 band_num_shift를 시그널링한다. 디코더는 시프트 연산을 사용하여 곱셈을 회피할 수 있다. 상이한 band_num_shift는 상이한 컴포넌트에 사용될 수 있다.
Class (C0) = (Y0 >> band_num_shift) >> bit_depth
다른 연산 예로는 반올림을 고려하여 오차를 줄이는 것이다.
Class (C0) = ((Y0 + (1 << (band_num_shift - 1))) >> band_num_shift) >> bit_depth
예를 들어, band_num_max (Y, U 또는 V)가 16이면, 표 17에 나타난 바와 같이, 가능한 band_num_shift 후보는 0, 1, 2, 2, 3, 4이며, band_num = 1, 2, 4, 8, 16에 대응한다.
표 17: Band_num 및 대응하는 band_num_shift 후보.
일부 실시예들에서, Cb 및 Cr에 적용하는 분류기들은 상이하다. 모든 분류들에 대한 Cb 및 Cr 오프셋들은 별도로 시그널링할 수 있다. 예를 들어, 아래 표 18과 같이 상이한 시그널링된 오프셋들을 상이한 크로마 컴포넌트들에 적용한다.
표 18: 모든 분류들에 대한 Cb 및 Cr 오프셋들을 별도로 시그널링할 수 있다.
POC 컴포넌트 분류기 C0 band_num 총 분류 수 시그널링된 오프셋들
0
Cb C0 16 16 16
0 Cr C0 5 5 5
일부 실시예들에서, 최대 오프셋 값은 고정되거나 시퀀스 파라미터 세트(SPS)/적응 파라미터 세트(APS)/픽처 파라미터 세트(PPS)/픽처 헤더(PH)/슬라이스 헤더(SH)에서 시그널링한다. 예를 들어, 최대 오프셋은 [-15, 15] 사이이다. 상이한 컴포넌트는 상이한 최대 오프셋 값을 가질 수 있다.
일부 실시예들에서, 오프셋 시그널링은 차동 펄스-코드 변조(DPCM: Differential pulse-code modulation)를 사용할 수 있다. 예를 들어, 오프셋 {3, 3, 2, 1, -1}은 {3, 0, -1, -1, -2}로 시그널링할 수 있다.
일부 실시예들에서, 오프셋들은 APS 또는 메모리 버퍼에 저장되어 다음 픽처/슬라이스에 재사용될 수 있다. 인덱스를 시그널링하여 어느 저장된 이전 프레임 오프셋이 현재 픽처에 사용되었는 지를 가리킬 수 있다.
일부 실시예들에서, Cb 및 Cr의 분류기들은 동일하다. 모든 분류에 대한 Cb 및 Cr 오프셋들은 예를 들어 아래 표 19와 같이 공동으로 시그널링할 수 있다.
표 19: 모든 분류들에 대한 Cb 및 Cr 오프셋들은 공동으로 시그널링할 수 있다.
POC 컴포넌트 분류기 C0
band_num
총 분류 수 시그널링된 오프셋들
0 Cb 및 Cr C0 8 8 8
일부 실시예들에서, Cb 및 Cr의 분류기는 동일할 수 있다. 모든 분류들에 대한 Cb 및 Cr 오프셋들은 예를 들어 아래 표 16과 같이 부호 플래그 차이와 함께 공동으로 시그널링될 수 있다. 표 16에 따르면, Cb 오프셋들이 (3, 3, 2, -1)인 경우, 도출된 Cr 오프셋들은 (-3, -3, -2, 1)이다.
표 20: 모든 분류들에 대한 Cb 및 Cr 오프셋들은 부호 플래그 차이와 함께 공동으로 시그널링될 수 있다.
POC 컴포넌트 분류기 C0 band_num
분류 수
시그널링된
오프셋들
시그널링된 부호 플래그
0 Cb 및 Cr C0 4 4 4:(3,3,2,-1) 1:(-)
일부 실시예들에서, 부호 플래그는 예를 들어 아래 표 21과 같이 각각의 분류에 대하여 시그널링될 수 있다. 표 21에 따르면, Cb 오프셋들이 (3, 3, 2, -1)인 경우, 도출된 Cr 오프셋들은 해당하는 부호 플래그에 따라 (-3, 3, 2, 1)이다.
표 21: 모든 분류들에 대한 Cb 및 Cr 오프셋들은 각각의 분류에 대하여 시그널링된 부호 플래그와 함께 공동으로 시그널링될 수 있다.
POC 컴포넌트 분류기 C0 band_num
분류 수
시그널링된
오프셋들
시그널링된 부호 플래그
0 Cb 및 Cr C0 4 4 4:(3,3,2,-1) 1: (-,+,+,-)
일부 실시예들에서, Cb 및 Cr의 분류기들은 동일할 수 있다. 모든 분류들에 대한 Cb 및 Cr 오프셋들은 예를 들어 아래 표 22와 같이 가중치 차이와 함께 공동으로 시그널링될 수 있다. 가중치(w)는 제한된 테이블(예를 들어, +-1/4, +-1/2, 0, +-1, +-2, +-4...)에서 선택할 수 있으며, 여기서 |w|는 2의 거듭제곱 값들만 포함한다. 표 22에 따르면, Cb 오프셋들이 (3, 3, 2, -1)인 경우, 도출된 Cr 오프셋들은 각각의 부호 플래그에 따라 (-6, -6, -4, 2)이다.
표 22: 모든 분류들에 대한 Cb 및 Cr 오프셋들은 가중치 차이와 함께 공동으로 시그널링될 수 있다.
POC 컴포넌트 분류기 C0 band_num
분류 수
시그널링된
오프셋들
시그널링된 부호 플래그
0 Cb 및 Cr C0 4 4 4:(3,3,2,-1) -2
일부 실시예들에서, 가중치는 예를 들어 아래 표 23과 같이 각각의 분류에 대하여 시그널링될 수 있다.. 표 19에 따르면, Cb 오프셋들이 (3, 3, 2, -1)인 경우, 도출된 Cr 오프셋들은 각각의 부호 플래그에 따라 (-6, 12, 0, -1)이다.
표 23: 모든 분류들에 대한 Cb 및 Cr 오프셋들은 각각의 분류에 대하여 시그널링된 가중치와 함께 공동으로 시그널링될 수 있다.
POC 컴포넌트 분류기 C0 band_num 총 분류 수 시그널링된 오프셋들 시그널링된 가중치
0 Cb 및 Cr C0 4 4 4:(3,3,2,-1) 4:(-2,4,0,1)
일부 실시예들에서, 동일한 POC에서 복수의 분류기들을 사용하는 경우, 상이한 오프셋 세트들을 개별적으로 또는 공동으로 시그널링한다.
일부 실시예들에서, 이전에 디코딩된 오프셋들은 저장되어 미래 프레임들에 사용될 수 있다. 인덱스를 시그널링하여 어느 이전에 디코딩된 오프셋 세트들이 현재 프레임이 사용되는 지를 가리킴으로써 오프셋 시그널링 오버헤드를 줄일 수 있다. 예를 들어, POC0 오프셋들은 아래 표 24과 같이 시그널링 오프셋들이 idx = 0으로 설정된 POC2에 의하여 재사용될 수 있다.
표 24: 인덱스를 시그널링하여 어느 이전에 디코딩된 오프셋 세트들이 현재 프레임이 사용되는 지를 가리킨다.
POC 컴포넌트 분류기 C0 band_num 총 분류 수 시그널링된 오프셋들 저장된 오프셋 세트 인덱스
0 CB C0 4 4 4:(3,3,2,-1) 0
0 Cr C0 4 4 4:(-2,1,0,1) 0
1 CB C0 4 4 4:(0,0,1,-1) 1
1 Cr C0 4 4 4:(1,2,0,1) 1
2 CB C0 4 4 재사용 오프셋들(3,3,2,-1) idx=0 시그널링
2 Cr C0 4 4 재사용 오프셋들(-2,1,0,1) idx=0 시그널링
일부 실시예들에서, Cb 및 Cr에 대한 재사용 오프셋 세트 인덱스는 상이할 수 있고, 예를 들어, 아래 표 25과 같다.
표 25: 인덱스를 시그널링하여 어느 이전에 디코딩된 오프셋 세트들이 현재 프레임이 사용되는 지를 가리키되, 상기 인덱스는 Cb 및 Cr 컴포넌트들에 대하여 상이할 수 있다.
POC 컴포넌트 분류기 C0 band_num
분류 수
시그널링된
오프셋들
저장된 오프셋 세트 인덱스
0 CB C0 4 4 4:(3,3,2,-1) 0
0 Cr C0 4 4 4:(-2,1,0,1) 0
1 CB C0 4 4 4:(0,0,1,-1) 1
1 Cr C0 4 4 4:(1,2,0,1) 1
2 CB C0 4 4 오프셋들 (3,3,2,-1) 재사용 idx=0 시그널링
2 Cr C0 4 4 오프셋들(1,2,0,1) 재사용 idx=1 시그널링
일부 실시예들에서, 오프셋 시그널링은 시작(start) 및 길이(length)를 포함하는 추가 신택스를 사용하여 시그널링 오버헤드를 줄일 수 있다. 예를 들어, band_num=256인 경우 band_idx=37~44의 오프셋들만 시그널링한다. 표 22-1의 아래 예에서, start 및 length의 신택스는 모두 band_num개 비트들과 매칭해야 하는 8비트 고정된 길이 코딩이다.
표 26: 오프셋 시그널링은 start 및 length을 포함하는 추가 신택스를 사용한다.
일부 실시예들에서, CCSAO가 모든 YUV 3 컴포넌트에 적용되는 경우, 동일위치 YUV 샘플과 인접한 YUV 샘플을 분류에 공동으로 사용할 수 있으며, Cb/Cr에 대하여 언급된 모든 오프셋 시그널링 방법은 Y/Cb/Cr로 확장될 수 있다. 일부 실시예들에서, 상이한 컴포넌트 오프셋 세트들을 별도로(각 컴포넌트들은 그들 자신의 저장된 세트들을 가지고 있다) 또는 공동으로(각 컴포넌트들은 동일한 저장된 세트들을 공유/재사용한다) 저장하고 사용할 수 있다. 아래 표 22-2에 별도의 세트 예를 도시하였다.
표 27: 별도로(각 컴포넌트들은 그들 자신의 저장된 세트들을 가지고 있다) 또는 공동으로(각 컴포넌트들은 동일한 저장된 세트들을 공유/재사용한다) 저장하고 사용할 수 있는 상이한 컴포넌트 오프셋 세트들을 보여주는 예시.
POC 현재 컴포넌트 오프셋 세트 분류기: bandNum(Y, U, V)을 가지는 candPos(Y,U,V) 총 분류 수(오프셋들의 수) 시그널링된 오프셋들 저장된 오프셋 세트 idx
0 Y 0 (Y4, U4, V4), (16, 1,2) 16Х1Х2=32 32 개의 오프셋 값들(3, 3, 2, 1, ...) 0 Y
1 (Y4, U0, V2), (14, 4,1) 15Х4Х1=60 60개의 오프셋 값들 0 Y
U 0 (Y8, U3, V0), (1,1,2) 2 2개의 오프셋 값들 0 U
1 (Y4, U1, V0), (15,2,2) 60 60개의 오프셋 값들 1 U
2 (Y6, U6, V6), (4,1,1) 4 4개의 오프셋 값들 2 U
3 (Y2, U0, V5), (1,1,1) 1 1개의 오프셋 값들 3 U
V 0 (Y2, U0, V5), (1,1,1) 1 1개의 오프셋 값들 0 V
1 Y 0 Y 저장된 오프셋 세트 idx 0 재사용 32 idx = 0 시그널링 및 오프셋들 (3,3,2,-1, ...) 재사용 Y
U 0 Y 저장된 오프셋 세트 idx 2 재사용 4 idx = 2 시그널링 및 오프셋들 (1,2,0,1) 재사용 U
V 0 (Y8, U3, V0), (1,1,2) 2 2개의 오프셋 값들 V
1 (Y8, U3, V0), (4,1,2) 8 8개의 오프셋 값들 V
일부 실시예들에서, 시퀀스 비트 깊이가 10(또는 특정 비트 깊이)보다 높은 경우, 시그널링하기 전에 오프셋을 양자화할 수 있다. 아래 표 28과 같이, 디코딩된 오프셋을 적용하기 전에 디코더 측에서 역양자화한다. 예를 들어, 12비트 시퀀스의 경우 디코딩된 오프셋들은 2만큼 좌측 시프트(역양자화)된다.
표 28: 디코딩된 오프셋을 적용하기 전에 역양자화한다.
시그널링된 오프셋 역양자화 및 적용된 오프셋
0 0
1 4
2 8
3 12
??
14 56
15 60
일부 실시예들에서, 오프셋은 CcSaoOffsetVal=(1 - 2 Х ccsao_offset_sign_abs) Х(ccsao_offset_abs << (BitDepth - Min(10, BitDepth))로 계산할 수 있다.
일부 실시예들에서, 샘플 프로세스를 아래에서 설명한다. R(x, y)를 CCSAO 이전의 입력 루마 또는 크로마 샘플 값으로 하고, R'(x, y)를 CCSAO 이후의 출력 루마 또는 크로마 샘플 값으로 한다:
offset = ccsao_offset [class_index of R(x, y)]
R'(x, y) = Clip3( 0, (1 << bit_depth) - 1, R(x, y) + offset )
상기 방정식들에 따라, 현재 픽처 및/또는 현재 오프셋 세트 idx의 인디케이팅된 분류기(indicated classifier)를 사용하여 각각의 루마 또는 크로마 샘플 값 R(x, y)을 분류한다. 도출된 분류 인덱스의 해당 오프셋을 각각의 루마 또는 크로마 샘플 값 R(x, y)에 가산한다. (R(x,y)+offset)에 클립 함수 Clip 3을 적용하여 출력 루마 또는 크로마 샘플 값 R'(x, y)이 비트 깊이 동적 범위, 예를 들어 0 내지 (1 < bit_depth) - 1 범위 내에 있도록 한다.
일부 실시예들에서, 경계 프로세스를 아래에서 설명한다. 분류에 사용된 동일위치 및 인접한 루마(크로마) 샘플들 중 어느 하나가 현재 픽처 외부에 있는 경우, CCSAO를 현재 크로마(루마) 샘플에 적용하지 않는다. 도 13a는 본 발명의 일부 구현 방식들에 따른 분류에 사용된 동일위치 및 인접한 루마(크로마) 샘플들 중 어느 하나가 현재 픽처의 외부에 있는 경우 CCSAO를 현재 크로마(루마) 샘플에 적용하지 않는 것을 도시하는 블록도이다. 예를 들어, 도 13a의 (a)에서, 분류기를 사용하는 경우, CCSAO를 현재 픽처의 좌측 1열 크로마 컴포넌트들에 적용하지 않는다. 예를 들어, C1'을 사용하는 경우, 도 13a의 (b)에 도시된 바와 같이 CCSAO를 현재 픽처의 좌측 1열 및 상단 1열 크로마 컴포넌트들에 적용하지 않는다.
도 13b는 본 발명의 일부 구현 방식들에 따른 분류에 사용된 동일위치 및 인접한 루마(크로마) 샘플들 중 어느 하나가 현재 픽처의 외부에 있는 경우 CCSAO를 현재 크로마(루마) 샘플에 적용하는 것을 도시하는 블록도이다. 일부 실시예들에서, 변형(variation)은, 분류에 사용된 동일위치 및 인접한 루마 또는 크로마 샘플들 중 어느 하나가 현재 픽처 외부에 있는 경우, 도 13b의 (a)에 도시된 바와 같이 누락된 샘플들을 반복적으로 사용하거나, 도 13b의 (b)에 도시된 바와 같이 누락된 샘플들을 미러 패딩하여 분류를 위한 샘플들을 생성하며, 현재 루마 또는 크로마 샘플들에 CCSAO를 적용할 수 있다.
도 14는 본 발명의 일부 구현 방식들에 따른 분류에 사용된 해당 선택된 동일위치 또는 인접한 루마 샘플이 가상 경계(VB)에 의하여 정의된 가상 공간의 외부에 있는 경우 CCSAO를 현재 크로마 샘플에 적용하지 않는 것을 도시하는 블록도이다. 일부 실시예들에서, 가상 경계(VB)는 픽처 프레임 내의 공간을 분리하는 가상의 라인이다. 일부 실시예들에서, 가상 경계(VB)를 현재 프레임에 적용하는 경우, 가상 경계에 의하여 정의된 가상 공간 외부에서 해당 루마 위치를 선택한 크로마 샘플들에 CCSAO를 적용하지 않는다. 도 14는 9개의 루마 위치 후보들을 가지는 C0 분류기에 대한 가상 경계의 예시를 보여준다. 각각의 CTU에 대하여 해당 선택된 루마 위치가 가상 경계로 둘러싸인 가상 공간 외부에 있는 크로마 샘플들에 CCSAO를 적용하지 않는다. 예를 들어, 도 14의 (a)에서, 선택된 Y7 루마 샘플 위치가 프레임의 하측으로부터 4 픽셀 라인이 위치하는 수평 가상 경계(1406)의 타측에 있는 경우, 크로마 샘플 (1402)에 CCSAO를 적용하지 않는다. 예를 들어, 도 14의 (b)에서, 선택된 Y5 루마 샘플 위치가 프레임의 우측으로부터 화소 라인이 위치하는 수직 가상 경계(1408)의 타측에 위치하는 경우, 크로마 샘플(1404)에 CCSAO를 적용하지 않는다.
도 15는 본 발명의 일부 구현 방식들에 따른 가상 경계의 외부에 있는 루마 샘플들에 중복 패딩 또는 미러 패딩(repetitive or mirror padding)을 적용한 것을 도시한다. 도 15의 (a)는 중복 패딩의 예를 도시한다. 원래의 Y7을 VB(1502)의 하측에 위치한 분류기로 선택한 경우, 원래의 Y7 루마 샘플 값 대신에 Y4 루마 샘플 값이 분류(Y7 위치로 복사)에 사용된다. 도 15의 (b)는 미러 패딩의 예를 도시한다. Y7을 VB(1504)의 하측에 위치한 분류기로 선택한 경우, 원래의 Y7 루마 샘플 값 대신에 Y0 루마 샘플에 상대적인 Y7 값에 대칭인 Y1 루마 샘플 값이 분류에 사용된다. 패딩 방법은 더 많은 크로마 샘플들이 CCSAO를 적용할 수 있는 가능성을 제공하여 더 많은 코딩 이득을 얻을 수 있다.
일부 실시예들에서, 제한을 적용하여 CCSAO가 요구하는 라인 버퍼를 줄이고, 경계 프로세스 조건 확인을 단순화할 수 있다. 도 16은 본 발명의 일부 구현 방식들에 따른 9개의 동일위치 인접한 루마 샘플들이 모두 분류에 사용되는 경우 추가적으로 1개의 루마 라인 버퍼(즉, 현재 VB(1602) 상측의 라인 -5의 전체 라인 루마 샘플들)가 필요함을 도시한다. 도 10b의 (a)는 6개의 루마 후보들만을 사용한 예를 도시하고 있는데, 이는 라인 버퍼를 줄이고 도 13a 및 도 13b의 어떤 추가적인 경계 확인도 필요하지 않다.
일부 실시예들에서, CCSAO 분류를 위하여 루마 샘플을 사용하면 루마 라인 버퍼를 증가시켜 디코더 하드웨어 구현 비용을 증가시킬 수 있다. 도 17은 본 발명의 일부 구현 방식들에 따른 AVS에서 VB를 크로스하는 9개의 루마 후보 CCSAO가 2개의 루마 라인 버퍼를 추가로 증가할 수 있음을 도시한 예시도이다. 가상 경계(VB)(1702) 상측의 루마 샘플들 및 크로마 샘플들의 경우, 현재 CTU 행에서 DBF/SAO/ALF를 처리한다. VB(1702) 하측의 루마 샘플들 및 크로마 샘플들의 경우, 다음 CTU 행에서 DBF/SAO/ALF를 처리한다. AVS 디코더 하드웨어 디자인에서, DBF이전의 루마 라인 -4 내지 -1 샘플들, SAO이전의 라인 -5 샘플들, 및 DBF이전의 크로마 라인 -3 내지 -1샘플들, SAO이전의 라인 -4 샘플들은 다음 CTU 행 DBF/SAO/ALF 처리를 위한 라인 버퍼로 저장된다. 다음 CTU 행을 처리할 때 라인 버퍼에 없는 루마 샘플들 및 크로마 샘플들은 사용할 수 없다. 그러나, 예를 들어, 크로마 라인 -3 (b) 위치에서 크로마 샘플은 다음 CTU 행에서 처리되지만 CCSAO는 분류를 위하여 SAO이전의 루마 샘플 라인들 -7, -6, -5를 요구한다. SAO이전의 루마 샘플 라인들 -7, -6은 라인 버퍼에 없으므로 사용할 수 없다. 그리고 SAO이전의 루마 샘플 라인 -7과 -6을 라인 버퍼에 추가하면 디코더 하드웨어 구현 비용이 증가한다. 일부 예들에서 루마 VB(라인 -4)와 크로마 VB(라인 -3)는 서로 다를 수 있다(정렬되지 않음).
도 17과 마찬가지로, 도 18은 본 발명의 일부 구현 방식들에 따른 VVC에서 VB(1802)를 크로스하는 9개의 루마 후보 CCSAO가 1개의 루마 라인 버퍼를 추가로 증가할 수 있음을 도시한 예시도이다. VB는 상이한 표준에서 상이할 수 있다. VVC에서 루마 VB는 라인 -4, 크로마 VB는 라인 -2이므로 9개의 후보 CCSAO는 1개의 루마 라인 버퍼를 증가시킬 수 있다.
일부 실시예들에서, 제1 솔루션에서, 크로마 샘플의 루마 후보들 중 어느 하나가 VB(현재 크로마 샘플 VB의 외부)를 어크로스하는 경우, 크로마 샘플에 대하여 CCSAO를 디스에이블한다. 도 19a 내지 도 19c는 본 발명의 일부 구현 방식들에 따른 AVS 및 VVC에서 크로마 샘플의 루마 후보들 중 어느 하나가 VB(1902)(현재 크로마 샘플 VB의 외부)를 어크로스하는 경우 크로마 샘플에 대하여 CCSAO를 디스에이블 하는 것을 도시한다. 도 14도 당해 구현 방식의 일부 예들을 도시한다.
일부 실시예들에서, 제2 솔루션에서, "크로스 VB" 루마 후보들에 대하여, VB에 가깝고 VB의 타측에 있는 루마 라인(예를 들어, 루마 라인 -4)로부터 중복 패딩을 CCSAO에 사용한다. 도 20a 내지 도 20c는 본 발명의 일부 구현 방식들에 따른 AVS 및 VVC에서 크로마 샘플의 루마 후보들 중 어느 하나가 VB(2002)(현재 크로마 샘플 VB의 외부)를 어크로스하는 경우 크로마 샘플에 대한 중복 패딩을 사용하여 CCSA를 인에이블하는 것을 도시한다. 도 14의 (a)도 당해 구현 방식의 일부 예들을 도시한다.
일부 실시예들에서, 제3 솔루션에서, "크로스 VB" 루마 후보들에 대하여, 루마 VB 하측으로부터 미러 패딩을 CCSAO에 사용한다. 도 21a 내지 도 21c는 본 발명의 일부 구현 방식들에 따른 AVS 및 VVC에서 크로마 샘플의 루마 후보들 중 어느 하나가 VB(2102)(현재 크로마 샘플 VB의 외부)를 어크로스하는 경우 크로마 샘플에 대한 미러 패딩을 사용하여 CCSAO를 인에이블 하는 것을 도시한다. 도 14의 (b)와 도 13b의 (b)도 당해 구현 방식의 일부 예들을 도시한다.
일부 실시예들에서, 제4 솔루션에서, "양측 대칭 패딩"은 CCSAO를 적용하기 위하여 사용된다. 도 22a 내지 도 22b는 본 발명의 일부 구현 방식들에 따른 상이한 CCSAO 샘플 형상의 일부 예들(예를 들어, 9개의 루마 후보들(도 22A)과 8개의 루마 후보들(도 22B))에 대하여 양측 대칭 패딩(double sided symmetric padding)을 사용하여 CCSAO를 인에이블 하는 것을 도시한다. 크로마 샘플의 동일위치 중심 루마 샘플을 가지는 루마 샘플 세트의 경우, 루마 샘플 세트의 일측이 VB(2202) 외부에 있는 경우, 루마 샘플 세트의 양측에 양측 대칭 패딩을 적용한다. 예를 들어, 도 22A에서 루마 샘플들 Y0, Y1 및 Y2는 VB(2202)의 외부에 있으므로, Y0, Y1, Y2 및 Y6, Y7, Y8는 모두 Y3, Y4, Y5를 이용하여 패딩한다. 예를 들어, 도 22B에서, 루마 샘플 Y0은 VB(2202)의 외부에 있으므로, Y0은 Y2를 이용하여 패딩하고, Y7은 Y5를 이용하여 패딩한다.
패딩 방법은 더 많은 크로마 샘플들이 CCSAO를 적용할 수 있는 가능성을 제공하여 더 많은 코딩 이득을 얻을 수 있다.
일부 실시예들에서, 하단 픽처(또는 슬라이스, 타일, 브릭(brick)) 경계 CTU 행에서, VB 아래의 샘플들은 현재 CTU 행에서 처리되므로, 상기 특수 처리(솔루션 1, 2, 3, 4)는 하단 픽처(또는 슬라이스, 타일, 브릭) 경계 CTU 행에서 적용되지 않는다. 예를 들어, 1920Х1080의 프레임은 128Х128의 CTU로 분할된다. 프레임은 15Х9개의 CTU(반올림)를 포함한다. 하단 CTU 행은 15번째 CTU 행이다. 디코딩 프로세스는 CTU 행별로 진행되고, 각각의 CTU 행에 대하여 CTU별로 진행된다. 디블록킹은 현재 CTU 행과 다음 CTU 행 사이의 수평 CTU 경계를 따라 적용되어야 한다. 하나의 CTU 내, 하단 4/2 루마/크로마 라인에서는 DBF 샘플(VVC 케이스)이 다음 CTU 행에서 처리되고 현재 CTU 행에서는 CCSAO에 사용할 수 없기 때문에, 각 CTU 행에 대하여 CTB VB를 적용한다. 그러나 픽처 프레임의 하단 CTU 행에는 다음 CTU 행이 남아 있지 않고 현재 CTU 행에서 DBF 처리되므로, 하단 4/2 루마/크로마 라인 DBF 샘플을 현재 CTU 행에서 사용할 수 있다.
일부 실시예들에서, 도 16에 설명된 바와 같이, 제한을 적용하여 CCSAO가 요구하는 라인 버퍼를 줄이고, 경계 처리 조건 확인을 단순화할 수 있다. 도 23는 본 발명의 일부 구현 방식들에 따른 제한된 수의 루마 후보들을 사용하여 분류하는 제한을 도시한다. 도23의 (a)는 6개의 루마 후보만을 분류에 사용하는 제한을 도시한다. 도 23의 (b)는 4개의 루마 후보만을 분류에 사용하는 제한을 도시한다.
일부 실시예들에서, 적용된 영역을 구현한다. CCSAO을 적용한 영역 단위는 CTB 기반일 수 있다. 즉, 온/오프 제어, CCSAO 파라미터들(분류를 위한 오프셋들, 루마 후보 위치들, band_num, 비트마스크 등, 오프셋 세트 인덱스)는 하나의 CTB에서 동일하다.
일부 실시예들에서, 적용된 영역은 CTB 경계에 정렬되지 않을 수 있다. 예를 들어, 적용된 영역은 크로마 CTB 경계에 정렬되지 않고 시프트된다. 신택스(온/오프 제어, CCSAO 파라미터들)는 여전히 각각의 CTB에 대하여 시그널링되지만, 정식으로 적용된 영역은 CTB 경계에 정렬되지 않는다. 도 24는 본 발명의 일부 구현 방식들에 따른 CCSAO 적용 영역이 코딩 트리 블록(CTB: coding tree block)/코딩 트리 유닛(CTU: coding tree unit) 경계(2406)에 정렬되지 않은 것을 도시한다. 예를 들어, 적용된 영역은 크로마 CTB/CTU 경계(2406)에 정렬되지 않고 상단 좌측 시프트(4, 4) 샘플들이 VB(2408)에 정렬된다. 이러한 정렬되지 않은 CTB 경계 디자인은 각각의 8Х8 디블록킹 프로세스 영역에 동일한 디블록킹 파라미터들이 사용되기 때문에 디블록킹 프로세스에 도움이 된다.
일부 실시예들에서, CCSAO를 적용한 영역 단위(마스크 크기)는 표 29와 같이 변동(CTB 크기보다 크거나 작음)될 수 있다. 마스크 크기는 상이한 컴포넌트들에 대하여 상이할 수 있다. 마스크 크기는 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록 레벨에서 스위칭할 수 있다. 예를 들어, PH에서, 일련의 마스크 온/오프 플래그들과 오프셋 세트 인덱스들을 시그널링하여 각각의 CCSAO 영역 정보를 가리킨다.
표 29: CCSAO를 적용한 영역 단위(마스크 크기)는 변동(CTB 크기보다 크거나 작음)될 수 있다.
POC 컴포넌트 CTB 크기 마스크 크기
0 CB 64Х64 128Х128
0 Cr 64Х64 32Х32
1 CB 64Х64 16Х16
1 Cr 64Х64 256Х256
일부 실시예들에서, CCSAO를 적용한 영역 프레임 파티션은 고정될 수 있다. 예를 들어, 프레임을 N개의 영역들로 분할한다. 도 25는 본 발명의 일부 구현 방식들에 따른 CCSAO 파라미터를 이용하여 CCSAO 적용 영역 프레임 분할을 고정할 수 있는 것을 도시한다.
일부 실시예들에서, 각각의 영역은 자체 영역 온/오프 제어 플래그 및 CCSAO 파라미터들을 가질 수 있다. 또한, 영역 크기가 CTB 크기보다 큰 경우, CTB 온/오프 제어 플래그들과 영역 온/오프 제어 플래그를 모두 가질 수 있다. 도 25의 (a) 및 (b)는 프레임을 N개의 영역들로 분할하는 일부 예들을를 도시하고, 도 25의 (a)는 4개의 영역들의 수직 분할을 도시하고, 도 25의 (b)는 4개의 영역들의 정사각형 분할을 도시한다. 일부 실시예들에서, 픽처 레벨 CTB 전부 온 제어 플래그(ph_cc_sao_cb_ctb_control_flag /ph_cc_sao_cr_ctb_control_flag)와 유사하게, 영역 온/오프 제어 플래그가 오프일 경우, CTB 온/오프 플래그를 추가로 시그널링할 수 있다. 그렇지 않으면, 추가 시그널링 CTB 플래그들 없이 CCSAO를 당해 영역의 모든 CTB들에 적용한다.
일부 실시예들에서, 상이한 CCSAO 적용된 영역들은 동일한 영역 온/오프 제어 및 CCSAO 파라미터들을 공유할 수 있다. 예를 들어, 도 25의 (c)에서, 영역 0~2는 동일한 파라미터들을 공유하고 영역 3~15는 동일한 파라미터들을 공유한다. 도 25의 (c)는 또한 힐베르트(Hilbert) 스캔 순서로 영역 온/오프 제어 플래그와 CCSAO 파라미터들을 시그널링할 수 있음을 도시한다.
일부 실시예들에서, CCSAO를 적용한 영역 단위는 픽처/슬라이스/CTB 레벨로부터 분할된 쿼드-트리/바이너리-트리/터너리-트리일 수 있다. CTB 분할과 유사하게, 일련의 분할 플래그들을 시그널링하여 CCSAO를 적용한 영역 분할을 가리킨다. 도 26은 본 발명의 일부 구현예에 따른 CCSAO 적용 영역은 프레임/슬라이스/CTB 레벨에서 분할한 바이너리-트리(BT: Binary-tree)/쿼드-트리(QT: Quad-tree)/터너리-트리(TT: Ternary-tree)일 수 있음을 도시한다.
도 27은 본 발명의 일부 구현 방식들에 따른 픽처 프레임 내에서의 상이한 레벨들에서 사용하고 스위칭하는 복수의 분류기들을 도시한 블록도이다. 일부 실시예들에서, 하나의 프레임에 복수의 분류기들을 사용하는 경우, 분류기 세트 인덱스를 어떻게 적용하는 지에 대한 방법은 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록 레벨에서 스위칭될 수 있다. 예를 들어, 아래 표 30과 같이, 4개의 분류기 세트들이 프레임에서 사용되며, PH에서 스위칭된다. 도 27의 (a) 및 (c)는 디폴트 고정된 영역 분류기를 도시한다. 도 27의 (b)는 분류기 세트 인덱스가 마스크/CTB 레벨에서 시그널링되는 것을 도시한다. 여기서, 0은 당해 CTB에 대한 CCSAO 오프를 의미하고, 1~4는 세트 인덱스를 의미한다.
표 30: 4개의 분류기 세트들이 프레임에서 사용되며, PH에서 스위칭된다.
POC
0 정사각형 분할 4개의 영역(프레임QT가 최대 깊이1로 분할된 것과 동일)(a)
1 CTB레벨 스위칭 분류기(b)
2 수직 분할 4개의 영역들(c)
3 프레임 QT가 최대 깊이2로 분할
일부 실시예들에서, 디폴트 영역의 경우, 당해 영역에서의 CTB가 디폴트 세트 인덱스(예를 들어, 영역 레벨 플래그가 0)를 사용하지 않고 당해 프레임에서 설정된 다른 분류기를 사용하는 경우 영역 레벨 플래그를 시그널링할 수 있다. 예를 들어, 디폴트 세트 인덱스를 사용하는 경우 영역 레벨 플래그는 1이다. 예를 들어, 정사각형 분할 4개의 영역에서는 아래의 표 31과 같이 다음과 같은 분류기 세트들을 사용한다.
표 31: 영역 레벨 플래그를 시그널링하여 당해 영역에서의 CTB가 디폴트 세트 인덱스를 사용하지 않는 지 여부를 도시한다.
POC 영역 플래그 디폴트 세트 인덱스를 사용
0 1 1 디폴트 세트:1을 사용
2 1 디폴트 세트:2를 사용
3 1 디폴트 세트:3을 사용
4 0 CTB 스위칭 세트 1 내지 4
도 28은 본 발명의 일부 구현 방식들에 따른 CCSAO 적용 영역 분할은 동적이고 픽처 레벨에서 스위칭할 수 있음을 도시하는 블록도이다. 예를 들어, 도 28의 (a)는 당해 POC에서 3개의 CCSAO 오프셋 세트들을 사용함(set_num = 3)을 도시하므로, 픽처 프레임은 3개의 영역들로 수직분할된다. 도 28의 (b)는 당해 POC에서 4개의 CCSAO 오프셋 세트들을 사용함(set_num = 4)을 도시하므로, 픽처 프레임은 4개의 영역들로 수평분할된다. 도 28의 (c)는 당해 POC에서 3개의 CCSAO 오프셋 세트들을 사용함(set_num = 3)을 도시하므로, 픽처 프레임은 4개의 영역들로 래스터 분할된다. 각각의 영역은 자체의 영역 전부 온 플래그를 구비하므로 각CTB의 온/오프 제어 비트를 저장할 수 있다. 영역들의 수는 시그널링된 픽처 set_num에 따라 달라진다.
일부 실시예들에서, 구현된 CCSAO 신택스는 아래 표 32에 나타나 있다. AVS3에서, 패치(patch)라는 용어는 슬라이스와 유사하며, 패치 헤더는 슬라이스 헤더와 유사하다. FLC는 고정된 길이 코드를 나타낸다. TU는 절단된 유너리 코드를 나타낸다. EGk는 k 차수를 가지는 지수-골롬 코드를 나타내며, 여기서 k는 고정될 수 있다.
표 32: 예시적인 CCSAO 신택스.
레벨 신택스 요소 이원화 의미
SPS cc_sao_enabled_ag FLC 시퀀스에서 CCSAO를 인에이블할 지 여부
PH/SH ph_cc_sao_y_agph_cc_sao_cb_ag
ph_cc_sao_cr_ag
FLC Y/Cb/Cr에 대한 당해 픽처/슬라이스에서 CCSAO를 인에이블할 지 여부
PH/SH ph_cc_sao_stored_offsets_set_idx FLC 어느 이전에 코딩된 오프셋들을 사용할 지, Y/U/V 오프셋 세트는 단독이거나 공유할 수 있다
PH/SH ph_cc_sao_y_ctb_control_flagph_cc_sao_cb_ctb_control_flag
ph_cc_sao_cr_ctb_control_flag
FLC CTB 레벨에서 Y/Cb/Cr 온/오프 제어를 인에이블할 지 여부
SPS/APS/PPS/PH/SH/CTU ph_cc_sao_y_band_num_y_minus1
ph_cc_sao_y_band_num_u_minus1
ph_cc_sao_y_band_num_v_minus1

ph_cc_sao_cb_band_num_y_minus1
ph_cc_sao_cb_band_num_u_minus1
ph_cc_sao_cb_band_num_v_minus1

ph_cc_sao_cr_band_num_y_minus1
ph_cc_sao_cr_band_num_u_minus1 ph_cc_sao_cr_band_num_v_minus1
FLC 분류를 위한 적응적으로 변경된 밴드의 수, 예를 들어,
ph_cc_sao_cb_band_num_y_minus1
ph_cc_sao_cb_band_num_u_minus1
ph_cc_sao_cb_band_num_v_minus1

컴포넌트 Cb분류에 대하여 가리키고,3 컴포넌트 공동 bandNum분류를 위한 Y/U/V의 bandNum
SPS/APS/PPS/PH/SH/CTU ph_cc_sao_y_cand_pos_y
ph_cc_sao_y_cand_pos_u
ph_cc_sao_y_cand_pos_v

ph_cc_sao_cb_cand_pos_y
ph_cc_sao_cb_cand_pos_u
ph_cc_sao_cb_cand_pos_v

ph_cc_sao_cr_cand_pos_y
ph_cc_sao_cr_cand_pos_u
ph_cc_sao_cr_cand_pos_v
FLC 분류기 후보위치를 가리킨다. 예를 들어, ph_cc_sao_y_cand_pos_y
ph_cc_sao_y_cand_pos_u ph_cc_sao_y_cand_pos_v

컴포넌트 Y에 대하여 가리키고, Y/U/V후보의 위치가 3 컴포넌트 공동 bandNum 분류로 선택된다.
SPS/APS/PPS/PH/SH/CTU cc_sao_y_offset_sign_flag
cc_sao_y_offset_abs
cc_sao_cb_offset_sign_flag
cc_sao_cb_offset_abs
cc_sao_cr_offset_sign_flag
cc_sao_cr_offset_abs
FLC
TU 또는 EGK
FLC
TU 또는 EGK
각각의 분류의 CCSAO Y、Cb 및 Cr 오프셋 값들
CTU ctb_cc_sao_y_flag
ctb_cc_sao_cb_flag
ctb_cc_sao_cr_flag
CABAC, 1 또는 2 (상 & 좌) 컨텍스트 현재 Y、Cb 또는 Cr CTB에 대하여 CCSAO를 인에이블할 지 여부
CTU ctb_cc_sao_y_set_idx
ctb_cc_sao_cb_set_idx
ctb_cc_sao_cr_set_idx
TU 또는 EGK 어느 CCSAO오프셋 세트가 현재 Y、Cb 또는 Cr CTB에 사용되는 지 (CCSAO를 인에이블한 경우)
CTU cc_sao_y_merge_left_flag
cc_sao_y_merge_up_flag
cc_sao_cb_merge_left_flag
cc_sao_cb_merge_up_flag
cc_sao_cr_merge_left_flag
cc_sao_cr_merge_up_flag
CABAC CCSAO 오프셋이 좌측 CTU 또는 상측 CTU에서 병합되는 지 여부
더 높은 레벨 플래그가 오프인 경우, 플래그의 오프 상태로부터 더 낯은 레벨 플래그를 추정할 수 있고, 더 낯은 레벨 플래그를 시그널링할 필요가 없다. 예를 들어, ph_cc_sao_cb_ag이 당해 픽처에서 거짓인 경우, ph_cc_sao_cb_band_num_minus1, ph_cc_sao_cb_luma_type, cc_sao_cb_offset_sign_flag, cc_sao_cb_offset_abs, ctb_cc_sao_cb_flag, cc_sao_cb_merge_left_flag, 및 cc_sao_cb_merge_up_flag은 존재하지 않고, 거짓으로 추정한다.
일부 실시예들에서, 아래 표 28과 같이, SPS csao_enabled_sysag는 SPS SAO 인에이블 플래그를 조건으로 한다.
표 33: SPS csao_enabled_sysag는 SPS SAO 인에이블 플래그를 조건으로 한다.
sps_sao_enabled_flag u(1)
if( sps_sao_enabled_flag && ChromaArrayType != 0 )
sps_ccsao_enabled_flag u(1)
sps_alf_enabled_flag u(1)
if( sps_alf_enabled_flag && ChromaArrayType != 0 )
sps_ccalf_enabled_flag u(1)
일부 실시예들에서, ph_cc_sao_cb_ctb_control_flag, ph_cc_sao_cr_ctb_control_flag는 Cb/Cr CTB 온/오프 제어 입도를 인에이블할지 여부를 가리킨다. ph_cc_sao_cb_ctb_control_flag 및 ph_cc_sao_ctb_cr_control_flag인에이블한 경우 ctb_cc_sao_cr_flag 및 ctb_cc_cr_flag 추가로 시그널링할 수 있다. 그렇지 않으면, 현재 픽처에서 CCSAO를 적용하는 지 여부는ph_cc_sao_cb_flag, ph_cc_sao_cr_flag에 의존하며, CTB 레벨에서 ctb_cc_sao_cb_flag 및 ctb_cc_sao_cr_flag를 추가로 시그널링할 필요가 없다.
일부 실시예들에서, ph_cc_sao_cb_type 및 ph_cc_sao_cr_type의 경우, 크로마 샘플에 대한 분류를 위한 중심 동일위치 루마 위치(도 10에서의 Y0 위치)가 사용되는지 여부를 구별하기 위하여 플래그를 추가로 시그널링하여 비트 오버헤드를 줄일 수 있다. 유사하게, CTB 레벨에서 cc_sao_cb_type과 cc_sao_cr_type을 시그널링하면, 동일한 메커니즘으로 플래그를 추가로 시그널링할 수 있다. 예를 들어, C0 루마 위치 후보들의 수가 9인 경우, cc_sao_cb_type0_flag는 아래 표 34와 같이 중심 동일위치 루마 위치가 사용되는지 여부를 구별하기 위하여 추가로 시그널링한다. 중심 동일위치 루마 위치를 사용하지 않는 경우, cc_sao_cb_type_idc를 사용하여 나머지 8개의 인접 루마 위치들 중 어떤 위치를 사용할 지 가리킨다.
표 34: 중심 동일위치 루마 위치가 사용되는지 여부를 구별하기 위하여 cc_sa0_cb_type0_flag를 시그널링한다.
ctb_cc_sao_cb_flag u(1)
if( ctb_cc_sao_cb_flag )
cc_sao_cb_type0_flag u(1), 컨텍스트 코딩될 수 있다
if( !cc_sao_cb_type0_flag )
cc_sao_cb_type_idc u(3), 컨텍스트 코딩될 수 있다
다음의 표 35는 AVS에서 프레임에서 단일(set_num = 1) 또는 복수(set_num > 1)의 분류기들을 사용하는 예를 도시한다. 신택스 표기법은 위에서 사용한 표기법에 매핑할 수 있다.
표 35: AVS에서 픽처 프레임에서 단일(set_num = 1) 또는 복수(set_num > 1)의 분류기들을 사용하는 예.
ccsao_parameter_picture_header_set( ) {
for (compIdx=0;compIdx<2;compIdx++) {
picture_ccsao_enable_flag[compIdx] u(1)
if (PictureCcSaoEnableFlag[compIdx]) {
picture_ccsao_lcu_control_flag[compIdx] u(1)
if (PictureCcSaoLcuControlFlag[compIdx]) {
picture_ccsao_set_num_minus1[compIdx] u(2)
}
for (setIdx=0; setIdx<PictureCcSaoSetNum[compIdx]; setIdx++) {
picture_ccsao_type[compIdx][setIdx] u(4)
picture_ccsao_band_num_minus1[compIdx][setIdx] u(4)
}
}
}
}
ccsao_parameter_set( ) {
for (compIdx=0;compIdx<2;compIdx++) {
if (PictureCcSaoEnableFlag[compIdx]) {
if (PictureCcSaoLcuControlFlag[compIdx]) {
for (LcuIndex=0; LcuIndex<PictureWidthInLcu*PictureHeightInLcu) {
ccsao_lcu_enable_flag[compIdx][LcuIndex] ae(v)
if (CcSaoLcuEnableFlag[compIdx][LcuIndex] && PictureCcSaoSetNum[comp] > 1) {
ccsao_lcu_set_idx[compIdx][LcuIndex] ae(v)
}
}
}
for (setIdx=0; setIdx<PictureCcSaoSetNum[comp]; setIdx++) {
for (i=0; i<PictureCcSaoBandNum[compIdx][setIdx]; i++){
ccsao_offset_abs[compIdx][setIdx][i] ae(v)
if (CcSaoOffsetAbs[compIdx][setIdx][i]) {
ccsao_offset_sign[compIdx][setIdx][i] u(1)
}
}
}
}
}
}
각각의 영역이 그 자체의 세트를 가지는 도 25 또는 도 27과 조합하는 경우, 신택스 예는 아래 표 36과 같이 영역 온/오프 제어 플래그(picture_ccsao_lcu_control_flag[compIdx][setIdx])를 포함할 수 있다.
표 36: 각각의 영역이 그 자체의 세트를 가지고, 신택스 예는 영역 온/오프 제어 플래그(picture_ccsao_lcu_control_flag[compIdx][setIdx])를 포함할 수 있다.
ccsao_parameter_picture_header_set( ) {
for (compIdx=0;compIdx<2;compIdx++) {
picture_ccsao_enable_flag[compIdx] u(1)
if (PictureCcSaoEnableFlag[compIdx]) {
picture_ccsao_set_num_minus1[compIdx] u(2)
for (setIdx=0; setIdx<PictureCcSaoSetNum[compIdx]; setIdx++) {
picture_ccsao_lcu_control_flag[compIdx][setIdx] u(1)
picture_ccsao_type[compIdx][setIdx] u(4)
picture_ccsao_band_num_minus1[compIdx][setIdx] u(4)
}
}
}
}
일부 실시예들에서, 인트라 및 인터포스트 예측 SAO 필터에 대한 확장은 아래에서 더 설명한다. 일부 실시예들에서, 본 개시에서 개시한 SAO 분류 방법들은 포스트 예측 필터로서 작용할 수 있으며, 예측은 인트라, 인터 또는 인트라 블록 카피(Intra Block Copy)와 같은 다른 예측 도구일 수 있다. 도 29는 본 발명의 일부 구현 방식들에 따른 본 개시에서 개시한 SAO 분류 방법들이 포스트 예측 필터로서 작용함을 도시하는 블록도이다.
일부 실시예들에서, 각각의 Y, U 및 V 컴포넌트의 경우, 해당 분류기를 선택한다. 그리고 각각의 컴포넌트 예측 샘플에 대하여, 먼저 분류하고 해당하는 오프셋을 가산한다. 예를 들어, 각각의 컴포넌트는 현재 샘플과 인접 샘플을 사용하여 분류할 수 있다. Y는 현재 Y샘플과 인접한 Y샘플을 사용하고, U/V는 아래 표 37과 같이 현재 U/V샘플을 사용하여 분류한다. 도 30은 본 발명의 일부 구현 방식들에 따른 포스트 예측 SAO 필터에 있어서 각각의 컴포넌트가 현재 및 인접한 샘플들을 사용하여 분류할 수 있음을 도시하는 블록도이다.
표 37: 각각의 Y, U 및 V 컴포넌트를 위하여 해당 분류기를 선택한다.
POC 컴포넌트 분류기 C0 band_num 총 분류 수 현재 컴포넌트에서 도출한 오프셋
0 Y C0과 C1을 조합 16 16Х17 h_Y[i]
0 U U0위치를 사용하는 C0 8 8 h_U[i]
0 V V0위치를 사용하는 C0 32 32 h_V[i]
일부 실시예들에서, 세분화된 예측 샘플들(Ypred', Uppred', Vpred')은 해당 분류 오프셋을 가산하여 업데이트되고, 이후 인트라, 인터 또는 기타 예측에 사용된다.
Ypred'=clip3(0,(1<<bit_depth)-1,Ypred+h_Y[i])
Upred'=clip3(0,(1<<bit_depth)-1,Upred+h_U[i])
Vpred'=clip3(0,(1<<bit_depth)-1,Vpred+h_V[i])
일부 실시예들에서, 크로마 U 및 V 컴포넌트들의 경우, 현재 크로마 컴포넌트 외에, 크로스-컴포넌트(Y)는 추가 오프셋 분류를 위해 사용될 수 있다. 예를 들어, 아래 표 38과 같이, 현재 컴포넌트 오프셋(h_U, h_V)에 추가적인 크로스-컴포넌트 오프셋(h'_U, h'_V)을 가산할 수 있다.
표 38: 크로마 U 및 V 컴포넌트들의 경우, 현재 크로마 컴포넌트 외에, 크로스-컴포넌트(Y)는 추가 오프셋 분류를 위해 사용될 수 있다.
POC 컴포넌트 분류기 C0 band_num 총 분류 수 현재 컴포넌트에서 도출한 오프셋
0 U Y4위치를 사용하는 C0 16 16 h'_U[i]
0 V Y1위치를 사용하는 C0 7 7 h'_V[i]
일부 실시예들에서, 세분화된 예측 샘플들(Upred', Vpred')은 해당 분류 오프셋을 가산하여 업데이트되고, 이후 인트라, 인터 또는 기타 예측에 사용된다.
Upred''=clip3(0, (1<<bit_depth)-1,Upred'+ h'_U[i])
Vpred''=clip3(0,(1<<bit_depth)-1,Vpred'+ h'_V[i])
일부 실시예들에서, 인트라 및 인터 예측은 상이한 SAO 필터 오프셋들을 사용할 수 있다.
도 31은 본 발명의 일부 구현 방식들에 따른 크로스-컴포넌트 상관관계를 사용하여 비디오 신호를 디코딩하는 예시적인 프로세스를 도시하는 흐름도이다.
비디오 디코더(30, 도 3에 도시된 바와 같이)는 비디오 신호로부터 제1 컴포넌트 및 제2 컴포넌트를 포함하는 픽처 프레임을 수신한다(3110).
비디오 디코더(30)는 제1 컴포넌트의 해당 샘플과 연관된 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트에 기반하여, 제1 컴포넌트를 위한 분류기를 확정하고, 제1 컴포넌트는 루마 컴포넌트이고, 제2 컴포넌트는 제1 크로마 컴포넌트이다(3120).
비디오 디코더(30)는 분류기에 따라 제1 컴포넌트의 해당 샘플에 대한 샘플 오프셋을 확정한다(3130).
비디오 디코더(30)는 확정된 샘플 오프셋에 기반하여 제1 컴포넌트의 해당 샘플의 값을 수정한다(3140).
일부 실시예들에서, 제1 컴포넌트를 위한 분류기는 제1 컴포넌트의 해당 샘플과 연관된 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 제2 세트에 추가적으로 기반한다(3150).
일부 실시예들에서, 픽처 프레임은 제3 컴포넌트를 더 포함하고, 제1 컴포넌트를 위한 분류기는 제1 컴포넌트의 해당 샘플과 연관된 제3 컴포넌트의 하나 또는 그 이상의 샘플들의 제3 세트에 추가적으로 기반하고, 제3 컴포넌트는 제2 크로마 컴포넌트이다(3160).
일부 실시예들에서, 제1 컴포넌트를 위한 분류기를 확정하기 전에, 인-루프 필터에 의하여제1 컴포넌트의 해당 샘플을 재구성 및/또는, 인-루프 필터에 의하여제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트를 재구성하며, 여기서 인-루프 필터는 디블록킹 필터(DBF: Deblocking Filter) 또는 샘플 적응 오프셋(SAO: Sample Adaptive Offset)이다.
일부 실시예들에서, 제1 컴포넌트의 해당 샘플과 연관된 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트는 제1 컴포넌트의 해당 샘플에 상대적인 제2 컴포넌트의 동일위치 샘플들 및 인접한 샘플들 중의 하나 또는 그 이상의 샘플들 중에서 선택된다.
일부 실시예들에서, 제1 컴포넌트의 해당 샘플과 연관된 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 제2 세트는 제1 컴포넌트의 해당 샘플에 상대적인 제1 컴포넌트의 현재 샘플들 및 인접한 샘플들 중의 하나 또는 그 이상의 샘플들 중에서 선택된다.
일부 실시예들에서, 제1 컴포넌트의 해당 샘플을 위한 분류기의 분류 인덱스는 다음과 같이 도출된다: 분류기의 제1 서브 분류기에 따라 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트의 값들의 제1 동적 범위를 제1 개수의 밴드들로 분할하고; 분류기의 제2 서브 분류기에 따라 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 제2 세트의 값들의 제2 동적 범위를 제2 개수의 밴드들로 분할하며; 분류기의 제3 서브 분류기에 따라, 제3 컴포넌트의 하나 또는 그 이상의 샘플들의 제3 세트의 값들의 제3 동적 범위를 제3 개수의 밴드들로 분할하며; 및 제1 서브 분류기, 제2 서브 분류기 및 제3 서브 분류기를 조합한다.
일부 실시예들에서, 제1 컴포넌트의 해당 샘플을 위한 분류기의 분류 인덱스는 다음과 같이 도출된다:
bandY=(candYХbandNumY)>>BitDepth;
bandU=(candUХbandNumU)>>BitDepth;
bandV=(candVХbandNumV)>>BitDepth;
classIdX=bandYХbandNumUХbandNumV+bandUХbandNumV+bandV;
여기서, classIdx는 제1 컴포넌트의 해당 샘플을 위한 분류기의 분류 인덱스이고, bandNumY는 제1 컴포넌트의 동적 범위의 분할된 밴드 수이고, bandNumU는 제2 컴포넌트의 동적 범위의 분할된 밴드 수이며, bandNumV는 제3 컴포넌트의 동적 범위의 분할된 밴드 수이며, candY는 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트에 기반한 값이고, candU는 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 제2 세트에 기반한 값이며, candV는 제3 컴포넌트의 하나 또는 그 이상의 샘플들의 제3 세트에 기반한 값이며, BitDepth는 비디오 신호의 비트 깊이이다.
일부 실시예들에서, 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트의 레이아웃은 제1 컴포넌트의 해당 샘플에 상대적으로 대칭이다.
일부 실시예들에서, 분류기를 확정하기 위한 제1 컴포넌트의 해당 샘플과 연관된 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트 및 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 제2 세트의 정의는 시퀀스 파라미터 세트(SPS: Sequence Parameter Set), 적응 파라미터 세트(APS: Adaptation Parameter Set), 픽처 파라미터 세트(PPS: Picture Parameter Set), 픽처 헤더(PH: Picture Header), 슬라이스 헤더(SH: Slice Header), 영역(region), CTU(Coding Tree Unit), CU(Coding Unit) 및 서브블록(subblock) 레벨들 중의 하나 또는 그 이상에서 전환할 수 있으며, 여기서 제1 컴포넌트의 해당 샘플과 연관된 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트 및 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 제2 세트의 정의는, 제1 컴포넌트의 해당 샘플과 연관된 정의된 상대적 위치에서의 제2 컴포넌트와 제1 컴포넌트의 선택된 샘플들, 분류 방법 및 하나 또는 그 이상의 샘플들의 제1 세트 및 하나 또는 그 이상의 샘플들의 제2 세트에 기반한 값에 대한 비트 마스크 정의 중의 하나 또는 그 이상을 포함할 수 있다.
일부 실시예들에서, 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트에 기반하여 제1 값에 제1 밴드 수 시프트를 적용하여 제1 컴포넌트의 해당 샘플에 대한 제1 분류 인덱스를 획득하고, 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 제2 세트에 기반하여 제2 값에 제2 밴드 수 시프트를 적용하여 제1 컴포넌트의 해당 샘플에 대한 제2 분류 인덱스를 획득한다.
일부 실시예들에서, 비디오 디코더(30)는 제2 컴포넌트의 해당 샘플에 대한 샘플 오프셋을 추가로 확정한다. 일부 실시예들에서, 제1 최대 오프셋 범위 내에서 제1 컴포넌트의 해당 샘플에 대한 샘플 오프셋을 확정하고, 제2 최대 오프셋 범위 내에서 제2 컴포넌트의 해당 샘플에 대한 샘플 오프셋을 확정하며, 여기서, 제1 최대 오프셋 범위 및 제2 최대 오프셋 범위는 고정되거나 시퀀스 파라미터 세트(SPS: Sequence Parameter Set), 적응 파라미터 세트(APS: Adaptation Parameter Set), 픽처 파라미터 세트(PPS: Picture Parameter Set), 픽처 헤더(PH: Picture Header) 및 슬라이스 헤더(SH: Slice Header) 레벨들 중 하나 또는 그 이상에서 시그널링한다.
일부 실시예들에서, 제1 비디오 컬러 포맷에 기반하여, 제1 컴포넌트의 해당 샘플과 연관된 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트에 기반하여 제1 샘플 형상 제한을 분류기에 적용하고; 및 제2 비디오 컬러 포맷에 기반하여, 제1 컴포넌트의 해당 샘플과 연관된 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트에 기반하여 제2 샘플 형상 제한을 분류기에 적용한다.
일부 실시예들에서, 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트 및 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 제2 세트에서의 샘플들이 제1 컴포넌트의 해당 샘플들의 픽처 프레임 내에 있는 경우, 확정된 샘플 오프셋에 기반하여 제1 컴포넌트의 해당 샘플의 값을 수정한다.
일부 실시예들에서, 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트 및 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 제2 세트에서의 샘플들이 제1 컴포넌트의 해당 샘플의 픽처 프레임 외부에 있는 경우, 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트 및 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 제2 세트로부터의 이미지 프레임 내의 샘플들로부터 처리함으로써 중복 패딩 또는 미러 패딩을 사용하여 이미지 프레임 외부의 샘플들을 도출한다.
도 32는 사용자 인터페이스(3250)와 결합된 컴퓨팅 환경(3210)을 도시한다. 컴퓨팅 환경(3210)은 데이터 프로세싱 서버의 일부일 수 있다. 컴퓨팅 환경(3210)은 프로세서(3220), 메모리(3230) 및 입출력(I/O) 인터페이스(3240)를 포함한다.
프로세서(3220)는 일반적으로 디스플레이, 데이터 획득, 데이터 통신 및 이미지 프로세싱과 관련된 동작들과 같은 컴퓨팅 환경(3210)의 전반적인 동작들을 제어한다. 프로세서(3220)는 상술한 방법들의 전부 또는 일부의 단계들을 수행하기 위한 명령들을 실행하기 위한 하나 또는 그 이상의 프로세서들을 포함할 수 있다. 더욱이, 프로세서(3220)는 프로세서 (3220)와 다른 컴포넌트들 사이의 상호 작용을 용이하게 하는 하나 또는 그 이상의 모듈들을 포함할 수 있다. 프로세서는 CPU(Central Processing Unit), 마이크로-프로세서, 단일 칩 머신, GPU(Graphical Processing Unit) 등일 수 있다.
메모리(3230)는 컴퓨팅 환경(3210)의 동작을 지원하기 위하여 다양한 유형의 데이터를 저장하도록 구성된다. 메모리(3230)는 미리 확정된 소프트웨어(3232)를 포함할 수 있다. 이러한 데이터의 예로는 컴퓨팅 환경(3210)에서 작동하는 모든 애플리케이션 또는 방법의 명령어, 비디오 데이터 세트, 이미지 데이터등을 포함한다. 메모리(3230)는 SRAM(Static Random Access Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), EPROM(Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), PROM(Programmable Read-Only Memory) ROM(Read-Only Memory), 자기 메모리, 플래시 메모리, 자기 디스크 또는 광 디스크 등 임의의 유형의 휘발성 또는 비휘발성 메모리 장치 또는 그 조합을 사용하는 것을 통하여 구현할 수 있다.
I/O 인터페이스(3240)는 프로세서(3220)와 키보드, 클릭 휠, 버튼 등과 같은 주변 인터페이스 모듈 사이의 인터페이스를 제공한다. 버튼은 홈 버튼, 스캔 시작 버튼 및 스캔 중지 버튼을 포함할 수 있으나, 이에 한정되는 것은 아니다. I/O 인터페이스(3240)는 인코더 및 디코더와 결합될 수 있다.
실시예에서, 컴퓨팅 환경(3210)에서의 프로세서(3210)에 의하여 실행 가능한, 예를 들어 메모리(3230)에 있는 상술한 방법들을 수행하기 위한 복수의 프로그램들을 포함하는 비-일시적 컴퓨터 판독 가능 저장 매체가 더 제공된다. 대안적으로, 비-일시적 컴퓨터 판독 가능 저장 매체는, 인코더(예를 들어, 도 2의 비디오 인코더(20))가 예를 들어, 상술한 코딩 방법을 사용하여 생성한 디코더(예를 들어, 도 3의 비디오 디코더(30))가 비디오 데이터를 디코딩할 때 사용하는 인코딩된 비디오 정보(예를 들어, 하나 또는 그 이상의 신택스 요소들을 포함하는 비디오 정보)를 포함하는 비트스트림 또는 데이터 스트림이 저장되었을 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체는, 예를 들어, ROM, RAM(Random Access Memory), CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등일 수 있다.
실시예에서, 하나 또는 그 이상의 프로세서(예를 들어, 프로세서(3220))들 및 하나 또는 그 이상의 프로세서들에 의하여실행 가능한 복수의 프로그램을 저장하는 비-일시적 컴퓨터 판독 가능 저장 매체 또는 메모리(3230)를 포함하는 컴퓨팅 장치가 더 제공되며, 상기 하나 또는 그 이상의 프로세서들은 복수의 프로그램들을 실행할 때 상술한 방법들을 수행하도록 구성된다.
실시예에서, 컴퓨팅 환경(3210)에서의 프로세서(3220)에 의하여실행 가능한, 예를 들어 메모리(3230)에 있는 상술한 방법들을 수행하기 위한 복수의 프로그램들을 포함하는 컴퓨터 프로그램 제품이 더 제공된다. 예를 들어, 컴퓨터 프로그램 제품은 비-일시적 컴퓨터 판독 가능 저장 매체를 포함할 수 있다.
실시예에서, 컴퓨팅 환경(3210)은 상술한 방법들을 수행하기 위하여 하나 또는 그 이상의 ASIC, DSP, 디지털 신호 프로세싱 장치(DSPD: Digital Signal Processing Device), 프로그래머블 로직 장치(PLD: Programmable Logic Device), FPGA, GPU, 컨트롤러, 마이크로-컨트롤러, 마이크로-프로세서 또는 기타 전자 컴포넌트들로 구현될 수 있다.
추가적인 실시예들은 다양한 기타 실시예들에서 조합되거나 기타 방식으로 재배치된 상기 실시예들의 다양한 서브세트들을 더 포함한다.
하나 혹은 그 이상의 예에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 하나 혹은 그 이상의 명령어 또는 코드로서 컴퓨터 판독 가능 매체에 저장되거나 이를 통해 전송될 수 있고 하드웨어-기반 프로세싱 유닛에 의하여실행될 수 있다. 컴퓨터 판독 가능 매체는 데이터 저장 매체와 같은 유형(tangible) 매체에 대응하는 컴퓨터 판독 가능 저장 매체, 또는 한 장소에서 다른 장소로(예를 들어, 통신 프로토콜에 따라) 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터 판독가능 매체는 일반적으로 (1) 비-일시적 유형 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 운송파(carrier wave)와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 출원에서 설명된 구현의 구현을 위한 명령어, 코드 및/또는 데이터 구조(data structure)를 검색하기 위해 하나 혹은 그 이상의 컴퓨터 또는 하나 혹은 그 이상의 프로세서에 의하여 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체를 포함할 수 있다.
본 명세서의 구현 방식들을 설명할 때 사용한 용어는 단지 특정한 구현 방식들을 설명하기 위한 목적으로만 사용되며, 특허청구범위를 제한하려는 의도가 아니다. 구현 방식들 및 첨부된 특허청구범위의 설명에서 사용된 바와 같이, 단수형들은 문맥상 다른 의미를 명확히 가리키지 않는 한 복수형도 포함한다. 본 명세서에서 사용된 용어 "및/또는"은 하나 혹은 그 이상의 관련된 나열된 항목의 임의의 또는 모든 가능한 조합을 지칭하는 것으로 이해되어야 한다. 용어 "포함하다" 및/또는 "포함하는"은 본 명세서에서 사용될 때 언급된 특징, 요소 및/또는 구성요소의 존재를 명시하지만 하나 이상의 다른 특징, 요소, 구성요소의 및/또는 그 그룹의 존재 또는 추가를 배제하지 않는다는 것을 이해할 것이다.
"제1", "제2" 등의 용어가 다양한 요소를 설명하기 위해 본 명세서에서 사용될 수 있지만, 이러한 요소는 이러한 용어에 의하여제한되지 아니함을 이해해야 한다. 이러한 용어는 한 요소를 다른 요소와 구별하기 위하여서만 사용된다. 예를 들어, 본 구현 방식들의 범위를 벗어나지 않으면서 제1 전극은 제2 전극으로 지칭될 수 있고, 유사하게, 제2 전극는 또한 제1 전극으로 지칭될 수 있다. 제1 전극과 제2 전극은 모두 전극이지만 동일한 전극은 아니다.
본 명세서 전체에 걸쳐 단수 또는 복수의 "일 예", "예", "예시적인 예" 등을 인용하는 것은, 일 예와 관련하여 설명한 하나 또는 그 이상의 특정한 특징, 구조 또는 특성이 본 개시의 적어도 하나의 예에 포함됨을 의미한다. 따라서, 본 명세서 전반에 걸쳐 단수 또는 복수의 장소에서 "일 예에서" 또는 "예에서", "예시적인 예에서" 등의 문구의 출현이 반드시 동일한 예를 지칭하는 것은 아니다. 또한, 하나 또는 그 이상의 특정한 특징, 구조 또는 특성은 임의의 적절한 방식으로 조합된 것을 포함할 수 있다.
본 출원 내용의 설명은 예시 및 설명의 목적으로 제시된 것이며, 본 출원 내용의 설명을 망라하거나 본 발명을 개시된 형태로 제한하고자하는 것은 아니다. 전술한 설명 및 관련 도면들의 시사로부터 당업자들은 다양한 수정, 변경 및 대안적인 구현 방식들은 명백히 이해할 것이다. 실시예는 본 발명의 원리, 실제 응용 및 당업자가 본 발명을 다양한 구현 방식으로 구현하도록 이해하고, 특정된 용도에 적합하도록 본 발명을 수정하도록 본 발명의 기본적인 원리 및 다양한 구현 방식을 제일 적합하게 사용하도록 설명되었다. 따라서, 본 청구항의 범위는 개시된 구현 방식들의 특정 예에 제한되지 않으며, 수정 및 다른 구현 방식들은 첨부된 특허청구범위내에 포함되는 것으로 해석되어야 한다.

Claims (17)

  1. 비디오 신호로부터 제1 컴포넌트 및 제2 컴포넌트를 포함하는 픽처 프레임을 수신하는 단계;
    상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트에 기반하여 상기 제1 컴포넌트를 위한 분류기를 확정하는 단계;
    상기 분류기에 따라 상기 제1 컴포넌트의 해당 샘플에 대한 샘플 오프셋을 확정하는 단계; 및
    상기 확정된 샘플 오프셋에 기반하여 상기 제1 컴포넌트의 해당 샘플의 값을 수정하는 단계를 포함하되,
    상기 제1 컴포넌트는, 루마 컴포넌트이고,
    상기 제2 컴포넌트는, 제1 크로마 컴포넌트인,
    비디오 신호를 디코딩하는 방법.
  2. 제1 항에 있어서,
    상기 제1 컴포넌트를 위한 분류기는, 상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 제2 세트에 추가적으로 기반하는,
    비디오 신호를 디코딩하는 방법.
  3. 제1 항에 있어서,
    상기 픽처 프레임은, 제3 컴포넌트를 더 포함하고,
    상기 제1 컴포넌트를 위한 분류기는, 상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제3 컴포넌트의 하나 또는 그 이상의 샘플들의 제3 세트에 추가적으로 기반하되,
    상기 제3 컴포넌트는, 제2 크로마 컴포넌트인,
    비디오 신호를 디코딩하는 방법.
  4. 제1 항에 있어서,
    상기 제1 컴포넌트를 위한 분류기를 확정하기 전에, 상기 제1 컴포넌트의 해당 샘플은, 인-루프 필터에 의하여 재구성되고,
    상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제1 세트는, 인-루프 필터에 의하여 재구성되며,
    상기 인-루프 필터는, 디블록킹 필터(DBF: Deblocking Filter) 또는 샘플 적응 오프셋(SAO: Sample Adaptive Offset)인,
    비디오 신호를 디코딩하는 방법.
  5. 제1 항에 있어서,
    상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제1 세트는, 상기 제1 컴포넌트의 해당 샘플에 상대적인 제2 컴포넌트의 동일위치 샘플들 및 인접한 샘플들 중의 하나 또는 그 이상의 샘플들 중에서 선택된 것인,
    비디오 신호를 디코딩하는 방법.
  6. 제2 항에 있어서,
    상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제2 세트는, 상기 제1 컴포넌트의 해당 샘플에 상대적인 상기 제1 컴포넌트의 현재 샘플들 및 인접한 샘플들 중의 하나 또는 그 이상의 샘플들 중에서 선택된 것인,
    비디오 신호를 디코딩하는 방법.
  7. 제2 항에 있어서,
    상기 픽처 프레임은, 제3 컴포넌트를 더 포함하고,
    상기 제1 컴포넌트를 위한 분류기는, 상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제3 컴포넌트의 하나 또는 그 이상의 샘플들의 제3 세트에 추가적으로 기반하되,
    상기 제3 컴포넌트는 제2 크로마 컴포넌트이며,
    상기 제1 컴포넌트의 해당 샘플을 위한 분류기의 분류 인덱스는, 상기 분류기의 제1 서브 분류기에 따라, 상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 제1 세트의 값들의 제1 동적 범위를 제1 개수의 밴드들로 분할하는 동작, 상기 분류기의 제2 서브 분류기에 따라, 상기 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제2 세트의 값들의 제2 동적 범위를 제2 개수의 밴드들로 분할하는 동작, 상기 분류기의 제3 서브 분류기에 따라, 상기 제3 컴포넌트의 하나 또는 그 이상의 샘플들의 제3 세트의 값들의 제3 동적 범위를 제3 개수의 밴드들로 분할하는 동작 및 상기 제1 서브 분류기, 상기 제2 서브 분류기 및 상기 제3 서브 분류기를 조합하는 동작에 의하여 도출되는,
    비디오 신호를 디코딩하는 방법.
  8. 제2 항에 있어서,
    상기 픽처 프레임은, 제3 컴포넌트를 더 포함하고,
    상기 제1 컴포넌트를 위한 분류기는, 상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제3 컴포넌트의 하나 또는 그 이상의 샘플들의 제3 세트에 추가적으로 기반하되,
    상기 제3 컴포넌트는, 제2 크로마 컴포넌트이며,
    상기 제1 컴포넌트의 해당 샘플을 위한 분류기는, 이하와 같이 도출되며:
    bandY=(candYХbandNumY)>>BitDepth;
    bandU=(candUХbandNumU)>>BitDepth;
    bandV=(candVХbandNumV)>>BitDepth;
    classIdX=bandYХbandNumUХbandNumV+bandUХbandNumV+bandV;
    classIdx는 상기 제1 컴포넌트의 해당 샘플을 위한 분류기의 분류 인덱스이고, bandNumY는 상기 제1 컴포넌트의 동적 범위의 분할된 밴드 수이고, bandNumU는 상기 제2 컴포넌트의 동적 범위의 분할된 밴드 수이며, bandNumV는 상기 제3 컴포넌트의 동적 범위의 분할된 밴드 수이며, candY는 상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제1 세트에 기반한 값이고, candU는 상기 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제2 세트에 기반한 값이며, candV는 상기 제3 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제3 세트에 기반한 값이며, BitDepth는 상기 비디오 신호의 비트 깊이인,
    비디오 신호를 디코딩하는 방법.
  9. 제1 항에 있어서,
    상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제1 세트의 레이아웃은, 상기 제1 컴포넌트의 해당 샘플에 대하여 대칭인,
    비디오 신호를 디코딩하는 방법.
  10. 제2 항에 있어서,
    상기 분류기를 확정하기 위한 상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제1 세트 및 상기 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제2 세트의 정의는, 시퀀스 파라미터 세트(SPS: Sequence Parameter Set), 적응 파라미터 세트(APS: Adaptation Parameter Set), 픽처 파라미터 세트(PPS: Picture Parameter Set), 픽처 헤더(PH: Picture Header), 슬라이스 헤더(SH: Slice Header), 영역(region), CTU(Coding Tree Unit), CU(Coding Unit) 및 서브블록(subblock) 레벨들 중의 하나 또는 그 이상에서 전환되고,
    상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제1 세트 및 상기 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제2 세트의 정의는,
    상기 제1 컴포넌트의 해당 샘플과 연관된 정의된 상대적 위치에서의 상기 제2 컴포넌트와 상기 제1 컴포넌트의 선택된 샘플들;
    분류 방법; 및
    하나 또는 그 이상의 샘플들의 상기 제1 세트 및 하나 또는 그 이상의 샘플들의 상기 제2 세트에 기반한 값에 대한 비트 마스크 정의, 중의 하나 또는 그 이상을 포함하는,
    비디오 신호를 디코딩하는 방법.
  11. 제2 항에 있어서,
    상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제1 세트에 기반하여 제1 값에 제1 밴드 수 시프트를 적용하여 상기 제1 컴포넌트의 해당 샘플에 대한 제1 분류 인덱스를 획득하고, 상기 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제2 세트에 기반하여 제2 값에 제2 밴드 수 시프트를 적용하여 상기 제1 컴포넌트의 해당 샘플에 대한 제2 분류 인덱스를 획득하는,
    비디오 신호를 디코딩하는 방법.
  12. 제2 항에 있어서,
    상기 제2 컴포넌트의 해당 샘플에 대한 샘플 오프셋을 확정하는 단계를 더 포함하고,
    제1 최대 오프셋 범위 내에서 상기 제1 컴포넌트의 해당 샘플에 대한 샘플 오프셋을 확정하고, 및
    제2 최대 오프셋 범위 내에서 상기 제2 컴포넌트의 해당 샘플에 대한 샘플 오프셋을 확정하며,
    상기 제1 최대 오프셋 범위 및 상기 제2 최대 오프셋 범위는 고정되거나, 시퀀스 파라미터 세트(SPS: Sequence Parameter Set), 적응 파라미터 세트(APS: Adaptation Parameter Set), 픽처 파라미터 세트(PPS: Picture Parameter Set), 픽처 헤더(PH: Picture Header) 및 슬라이스 헤더(SH: Slice Header) 레벨들 중 하나 또는 그 이상에서 시그널링되는
    비디오 신호를 디코딩하는 방법.
  13. 제2 항에 있어서,
    제1 비디오 컬러 포맷에 기반하여, 상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제1 세트에 기반하여, 제1 샘플 형상 제한이 상기 분류기에 적용되고; 및 제2 비디오 컬러 포맷에 기반하여, 상기 제1 컴포넌트의 해당 샘플과 연관된 상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제1 세트에 기반하여, 제2 샘플 형상 제한이 분류기에 적용되는,
    비디오 신호를 디코딩하는 방법.
  14. 제2 항에 있어서,
    상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제1 세트 및 상기 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제2 세트에서의 샘플이 상기 제1 컴포넌트의 해당 샘플의 상기 픽처 프레임 내에 있는 경우, 확정된 샘플 오프셋에 기반하여 상기 제1 컴포넌트의 해당 샘플의 값을 수정하는
    비디오 신호를 디코딩하는 방법.
  15. 제2 항에 있어서,
    상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제1 세트 및 상기 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제2 세트에서의 샘플이 상기 제1 컴포넌트의 해당 샘플의 상기 픽처 프레임 외부에 있는 경우, 상기 제2 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제1 세트 및 상기 제1 컴포넌트의 하나 또는 그 이상의 샘플들의 상기 제2 세트로부터의 상기 이미지 프레임 내의 샘플들로부터 처리함으로써, 중복 패딩 또는 미러 패딩을 사용하여 상기 이미지 프레임 외부의 샘플을 도출하는,
    비디오 신호를 디코딩하는 방법.
  16. 전자 장치에 있어서,
    하나 또는 그 이상의 프로세싱 유닛들;
    상기 하나 또는 그 이상의 프로세싱 유닛들과 결합된 메모리; 및
    상기 메모리에 저장되되, 상기 하나 또는 그 이상의 프로세싱 유닛들에 의하여 실행할 경우 상기 전자 장치로 하여금 제 1 항 내지 제 15 항 중의 임의의 한 항의 방법들을 수행하도록 하는 복수의 프로그램, 을 포함하는,
    전자 장치.
  17. 하나 또는 그 이상의 프로세싱 유닛들을 가지는 전자 장치에 의하여 실행되기 위한 복수의 프로그램들을 저장하는 비-일시적 컴퓨터 판독 가능 저장 매체로서,
    상기 복수의 프로그램들은 상기 하나 또는 그 이상의 프로세싱 유닛들에 의하여 실행될 경우 상기 전자 장치로 하여금 제 1 항 내지 제 15 항 중의 임의의 한 항의 방법들을 수행하도록 하는,
    비-일시적 컴퓨터 판독 가능 저장 매체.
KR1020237028560A 2021-02-01 2022-01-24 크로스-컴포넌트 샘플 적응 오프셋에서의 크로마 코딩 강화 KR20230139810A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163144414P 2021-02-01 2021-02-01
US63/144,414 2021-02-01
US202163145940P 2021-02-04 2021-02-04
US63/145,940 2021-02-04
PCT/US2022/013536 WO2022164757A1 (en) 2021-02-01 2022-01-24 Chroma coding enhancement in cross-component sample adaptive offset

Publications (1)

Publication Number Publication Date
KR20230139810A true KR20230139810A (ko) 2023-10-05

Family

ID=82653829

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237028560A KR20230139810A (ko) 2021-02-01 2022-01-24 크로스-컴포넌트 샘플 적응 오프셋에서의 크로마 코딩 강화

Country Status (6)

Country Link
US (1) US20230379480A1 (ko)
EP (1) EP4285591A1 (ko)
JP (1) JP2024508232A (ko)
KR (1) KR20230139810A (ko)
MX (1) MX2023008977A (ko)
WO (1) WO2022164757A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11849117B2 (en) * 2021-03-14 2023-12-19 Alibaba (China) Co., Ltd. Methods, apparatus, and non-transitory computer readable medium for cross-component sample adaptive offset

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014052731A2 (en) * 2012-09-28 2014-04-03 Vid Scale, Inc. Cross-plane filtering for chroma signal enhancement in video coding
US10708588B2 (en) * 2013-06-19 2020-07-07 Apple Inc. Sample adaptive offset control
AU2015275320A1 (en) * 2015-12-23 2017-07-13 Canon Kabushiki Kaisha Method, apparatus and system for determining a luma value
CN114009018A (zh) * 2019-06-24 2022-02-01 夏普株式会社 用于基于交叉分量相关性来减小视频编码中的重构误差的***和方法
CN113994670B (zh) * 2019-07-25 2023-08-11 寰发股份有限公司 具有虚拟边界的跨分量自适应环路滤波的视频编解码方法及装置

Also Published As

Publication number Publication date
EP4285591A1 (en) 2023-12-06
JP2024508232A (ja) 2024-02-26
US20230379480A1 (en) 2023-11-23
WO2022164757A1 (en) 2022-08-04
MX2023008977A (es) 2023-08-15

Similar Documents

Publication Publication Date Title
EP3984222A1 (en) Chroma coding enhancement in cross-component sample adaptive offset
US20230388509A1 (en) Chroma coding enhancement in cross-component sample adaptive offset
US20230396781A1 (en) Coding enhancement in cross-component sample adaptive offset
US20230308652A1 (en) Chroma coding enhancement in cross-component sample adaptive offset with virtual boundary
US20230199209A1 (en) Chroma coding enhancement in cross-component sample adaptive offset
US20230209093A1 (en) Chroma coding enhancement in cross-component sample adaptive offset
US20240007662A1 (en) Coding enhancement in cross-component sample adaptive offset
US20230379480A1 (en) Chroma coding enhancement in cross-component sample adaptive offset
US20230336785A1 (en) Coding enhancement in cross-component sample adaptive offset
KR20230170072A (ko) 교차-컴포넌트 샘플 적응적 오프셋에서의 코딩 강화
US20230262235A1 (en) Chroma coding enhancement in cross-component sample adaptive offset with virtual boundary
KR20240011197A (ko) 교차 성분 샘플 적응 오프셋에서의 코딩 향상
CN117413516A (zh) 跨分量样本自适应偏移中的编解码增强
CN116569551A (zh) 交叉分量样本自适应偏移中的色度编码增强

Legal Events

Date Code Title Description
A201 Request for examination