KR20230144050A - 교차-성분 샘플 적응적 오프셋에서의 코딩 향상 - Google Patents

교차-성분 샘플 적응적 오프셋에서의 코딩 향상 Download PDF

Info

Publication number
KR20230144050A
KR20230144050A KR1020237030321A KR20237030321A KR20230144050A KR 20230144050 A KR20230144050 A KR 20230144050A KR 1020237030321 A KR1020237030321 A KR 1020237030321A KR 20237030321 A KR20237030321 A KR 20237030321A KR 20230144050 A KR20230144050 A KR 20230144050A
Authority
KR
South Korea
Prior art keywords
component
samples
color space
video
sample
Prior art date
Application number
KR1020237030321A
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 KR20230144050A publication Critical patent/KR20230144050A/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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/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/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/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/167Position within a video image, e.g. region of interest [ROI]
    • 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/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/1883Methods 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 relating to sub-band structure, e.g. hierarchical level, directional tree, e.g. low-high [LH], high-low [HL], high-high [HH]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

전자 장치는 비디오 데이터를 디코딩하는 방법을 수행하고, 방법은, 비디오 신호로부터, 제1 컬러 공간에서의 제1 성분 및 제2 성분을 포함하는 픽처 프레임을 수신하는 단계; 제1 컬러 공간에서의 제2 성분의 각자의 샘플과 연관된 제1 성분의 하나 이상의 샘플의 세트로부터 제1 컬러 공간에서의 제2 성분에 대한 분류자를 결정하는 단계 - 하나 이상의 샘플의 세트는 제2 컬러 공간에 있음 -; 분류자에 따라 제1 컬러 공간에서의 제2 성분의 각자의 샘플에 대한 샘플 오프셋을 결정하는 단계; 및 결정된 샘플 오프셋에 기초하여 제1 컬러 공간에서의 제2 성분의 각자의 샘플의 값을 수정하는 단계를 포함한다.

Description

교차-성분 샘플 적응적 오프셋에서의 코딩 향상
관련 출원들
본 출원은 2021년 3월 18일자로 출원된, 발명의 명칭이 "Cross-component Sample Adaptive Offset"인 미국 가특허 출원 제63/200,626호, 및 2021년 3월 22일자로 출원된, 발명의 명칭이 "Cross-component Sample Adaptive Offset"인 미국 가특허 출원 제63/164,459호에 대한 우선권을 주장하며, 이들 출원은 그 전체가 본 명세서에 참조로 포함된다.
기술 분야
본 출원은 일반적으로 비디오 코딩 및 압축에 관한 것으로서, 더 구체적으로는, 루마(luma) 및 크로마(chroma) 코딩 효율 둘 다를 개선하는 방법들 및 장치에 관한 것이다.
디지털 비디오는 디지털 텔레비전들, 랩탑 또는 데스크탑 컴퓨터들, 태블릿 컴퓨터들, 디지털 카메라들, 디지털 기록 디바이스들, 디지털 미디어 플레이어들, 비디오 게임 콘솔들, 스마트폰들, 비디오 원격 회의 디바이스들, 비디오 스트리밍 디바이스들 등과 같은 다양한 전자 디바이스들에 의해 지원된다. 전자 디바이스들은 비디오 압축/압축해제 표준들을 구현함으로써 디지털 비디오 데이터를 송신, 수신, 인코딩, 디코딩 및/또는 저장한다. 일부 잘 알려진 비디오 코딩 표준들은 ISO/IEC MPEG 및 ITU-T VCEG에 의해 공동으로 개발된, VVC(Versatile Video Coding), HEVC(High Efficiency Video Coding)(H.265 또는 MPEG-H Part 2라고도 알려짐) 및 AVC(Advanced Video Coding)(H.264 또는 MPEG-4 Part 10이라고도 알려짐)를 포함한다. AOMedia Video 1(AV1)은 그것의 선행 표준 VP9의 후속자로서 AOM(Alliance for Open Media)에 의해 개발되었다. 디지털 오디오 및 디지털 비디오 압축 표준을 지칭하는 AVS(Audio Video Coding)는 오디오 및 비디오 코딩 표준 워크그룹에 의해 개발된 다른 비디오 압축 표준 시리즈이다.
비디오 압축은 전형적으로 비디오 데이터에 내재된 중복성을 감소시키거나 제거하기 위해 공간(인트라 프레임(intra frame)) 예측 및/또는 시간(인터 프레임(inter frame)) 예측을 수행하는 것을 포함한다. 블록-기반 비디오 코딩의 경우, 비디오 프레임은 하나 이상의 슬라이스(slice)로 파티셔닝되고, 각각의 슬라이스는 코딩 트리 유닛(coding tree unit)(CTU)들이라고도 지칭될 수 있는 다수의 비디오 블록들을 갖는다. 각각의 CTU는 하나의 코딩 유닛(coding unit)(CU)을 포함하거나, 미리 정의된 최소 CU 크기에 도달할 때까지 더 작은 CU들로 재귀적으로(recursively) 분할될 수 있다. 각각의 CU(리프(leaf) CU라고도 지칭됨)는 하나 또는 다수의 변환 유닛(transform unit)(TU)을 포함하고, 각각의 CU는 또한 하나 또는 다수의 예측 유닛(prediction unit)(PU)을 포함한다. 각각의 CU는 인트라, 인터 또는 IBC 모드들에서 코딩될 수 있다. 비디오 프레임의 인트라 코딩된(I) 슬라이스에서의 비디오 블록들은 동일한 비디오 프레임 내의 이웃 블록들에서의 참조 샘플들(reference samples)에 대한 공간 예측을 이용하여 인코딩된다. 비디오 프레임의 인터 코딩된(P 또는 B) 슬라이스에서의 비디오 블록들은 동일한 비디오 프레임 내의 이웃 블록들에서의 참조 샘플들에 대한 공간 예측 또는 다른 이전 및/또는 미래의 참조 비디오 프레임들에서의 참조 샘플들에 대한 시간 예측을 이용할 수 있다.
이전에 인코딩된 참조 블록, 예를 들어, 이웃 블록에 기초한 공간 또는 시간 예측은 코딩될 현재 비디오 블록에 대한 예측 블록을 야기한다. 참조 블록을 찾는 프로세스는 블록 매칭 알고리즘에 의해 달성될 수 있다. 코딩될 현재 블록과 예측 블록 사이의 픽셀 차이들을 나타내는 잔차 데이터(residual data)는 잔차 블록 또는 예측 에러들이라고 지칭된다. 인터 코딩된 블록은 예측 블록을 형성하는 참조 프레임에서의 참조 블록, 및 잔차 블록을 가리키는 모션 벡터(motion vector)에 따라 인코딩된다. 모션 벡터를 결정하는 프로세스는 전형적으로 모션 추정(motion estimation)이라고 지칭된다. 인트라 코딩된 블록은 인트라 예측 모드 및 잔차 블록에 따라 인코딩된다. 추가 압축을 위해, 잔차 블록은 픽셀 도메인으로부터 변환 도메인, 예를 들어, 주파수 도메인으로 변환되어, 잔차 변환 계수들을 초래하고, 이는 다음으로 양자화될 수 있다. 초기에 2차원 어레이로 배열된 양자화된 변환 계수들은 변환 계수들의 1차원 벡터를 생성하기 위해 스캐닝되고, 이후 훨씬 더 많은 압축을 달성하기 위해 비디오 비트스트림으로 엔트로피 인코딩될 수 있다.
인코딩된 비디오 비트스트림은 이어서 디지털 비디오 기능을 갖는 다른 전자 디바이스에 의해 액세스되거나 유선 또는 무선으로 전자 디바이스로 직접 송신되도록 컴퓨터 판독가능 저장 매체(예를 들어, 플래시 메모리)에 저장된다. 그 후, 전자 디바이스는, 예를 들어, 인코딩된 비디오 비트스트림을 파싱하여 비트스트림으로부터 신택스 요소들을 획득하고, 비트스트림으로부터 획득된 신택스 요소들에 적어도 부분적으로 기초하여 디지털 비디오 데이터를 인코딩된 비디오 비트스트림으로부터 그의 원래 포맷으로 재구성하고, 전자 디바이스의 디스플레이 상에 재구성된 디지털 비디오 데이터를 렌더링함으로써, (위에서 설명된 비디오 압축과 반대 프로세스인) 비디오 압축해제를 수행한다.
디지털 비디오 품질이 고화질로부터 4Kx2K 또는 심지어 8Kx4K로 갈 때, 인코딩/디코딩될 비디오 데이터의 양은 기하급수적으로 증가한다. 디코딩된 비디오 데이터의 이미지 품질을 유지하면서 비디오 데이터가 어떻게 더 효율적으로 인코딩/디코딩될 수 있는지에 관하여 지속적인 도전과제가 존재한다.
본 출원은 비디오 데이터 인코딩 및 디코딩에 관련된 구현들을 설명하며, 더 구체적으로는, 루마 성분과 크로마 성분 사이의 교차-성분(cross-component) 관계를 탐색함으로써 코딩 효율을 개선하는 것을 포함하여 루마 및 크로마 성분들 둘 다의 코딩 효율을 개선하는 방법들 및 장치에 관한 것이다.
본 출원의 제1 양태에 따르면, 비디오 신호를 디코딩하는 방법은, 비디오 신호로부터, 제1 컬러 공간에서의 제1 성분 및 제2 성분을 포함하는 픽처 프레임(picture frame)을 수신하는 단계; 제1 컬러 공간에서의 제2 성분의 각자의 샘플과 연관된 제1 성분의 하나 이상의 샘플의 제1 세트로부터 제1 컬러 공간에서의 제2 성분에 대한 분류자(classifier)를 결정하는 단계 - 하나 이상의 샘플의 제1 세트는 제2 컬러 공간으로 변환됨 -; 분류자에 따라 제1 컬러 공간에서의 제2 성분의 각자의 샘플에 대한 샘플 오프셋(sample offset)을 결정하는 단계; 및 결정된 샘플 오프셋에 기초하여 제1 컬러 공간에서의 제2 성분의 각자의 샘플의 값을 수정하는 단계를 포함한다.
일부 실시예들에서, 제1 성분은 루마 성분, 제1 크로마 성분 및 제2 크로마 성분으로 구성된 그룹으로부터 선택된 성분이고, 제2 성분은 루마 성분, 제1 크로마 성분 및 제2 크로마 성분으로 구성된 그룹으로부터 선택된 성분이다.
일부 실시예들에서, 하나 이상의 샘플의 제1 세트는 선형 변환에 의해 제2 컬러 공간으로 변환된다.
본 출원의 제2 양태에 따르면, 전자 장치는 하나 이상의 처리 유닛, 메모리 및 메모리에 저장된 복수의 프로그램을 포함한다. 프로그램들은, 하나 이상의 처리 유닛에 의해 실행될 때, 전자 장치로 하여금 전술한 바와 같은 비디오 신호를 코딩하는 방법을 수행하게 한다.
본 출원의 제3 양태에 따르면, 비일시적 컴퓨터 판독가능 저장 매체는 하나 이상의 처리 유닛을 갖는 전자 장치에 의해 실행하기 위한 복수의 프로그램을 저장한다. 프로그램들은, 하나 이상의 처리 유닛에 의해 실행될 때, 전자 장치로 하여금 전술한 비디오 신호를 코딩하는 방법을 수행하게 한다.
본 출원의 제4 양태에 따르면, 컴퓨터 판독가능 저장 매체는 전술한 바와 같은 비디오 코딩을 위한 방법에 의해 생성된 비디오 정보를 포함하는 비트스트림을 저장한다.
전술한 일반적인 설명 및 다음의 상세한 설명 둘 다는 단지 예들일 뿐이며, 본 개시내용을 제한하지 않는다는 것을 이해해야 한다.
구현들의 추가 이해를 제공하기 위해 포함되고 본 명세서에 통합되고 본 명세서의 일부를 구성하는 첨부 도면들은 설명된 구현들을 예시하고, 설명과 함께 기본 원리들을 설명하는 역할을 한다. 유사한 참조 번호들은 대응하는 부분들을 지칭한다.
도 1은 본 개시내용의 일부 구현들에 따른, 예시적인 비디오 인코딩 및 디코딩 시스템을 도시하는 블록도이다.
도 2는 본 개시내용의 일부 구현들에 따른, 예시적인 비디오 인코더를 도시하는 블록도이다.
도 3은 본 개시내용의 일부 구현들에 따른, 예시적인 비디오 디코더를 도시하는 블록도이다.
도 4a 내지 도 4e는 본 개시내용의 일부 구현들에 따른, 프레임이 어떻게 상이한 크기들 및 형상들의 다수의 비디오 블록들로 재귀적으로 파티셔닝되는지를 도시하는 블록도들이다.
도 5는 본 개시내용의 일부 구현들에 따른, 샘플 적응적 오프셋(Sample Adaptive Offset)(SAO)에서 이용된 4개의 그래디언트 패턴들을 도시하는 블록도이다.
도 6a는 본 개시내용의 일부 구현들에 따른, 크로마 샘플들에 적용되고 DBF Y를 입력으로서 이용하는 CCSAO의 시스템 및 프로세스를 도시하는 블록도이다.
도 6b는 본 개시내용의 일부 구현들에 따른, 루마 및 크로마 샘플들에 적용되고 DBF Y/Cb/Cr을 입력으로서 이용하는 CCSAO의 시스템 및 프로세스를 도시하는 블록도이다.
도 6c는 본 개시내용의 일부 구현들에 따른, 독립적으로 작동할 수 있는 CCSAO의 시스템 및 프로세스를 도시하는 블록도이다.
도 6d는 본 개시내용의 일부 구현들에 따른, 동일하거나 상이한 오프셋들로 재귀적으로(2회 또는 N회) 적용될 수 있는 CCSAO의 시스템 및 프로세스를 도시하는 블록도이다.
도 6e는 본 개시내용의 일부 구현들에 따른, AVS 표준에서 향상된 샘플 적응적 오프셋(Enhanced Sample Adaptive Offset)(ESAO)과 병렬로 적용된 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다.
도 6f는 본 개시내용의 일부 구현들에 따른, SAO 이후에 적용된 CCSAO의 시스템 및 프로세스를 도시하는 블록도이다.
도 6g는 본 개시내용의 일부 구현들에 따른, CCSAO의 시스템 및 프로세스가 CCALF 없이 독립적으로 작동할 수 있는 것을 도시하는 블록도이다.
도 6h는 본 개시내용의 일부 구현들에 따른, 교차-성분 적응적 루프 필터(Cross-Component Adaptive Loop Filter)(CCALF)와 병렬로 적용된 CCSAO의 시스템 및 프로세스를 도시하는 블록도이다.
도 7은 본 개시내용의 일부 구현들에 따른, CCSAO를 이용한 샘플 프로세스를 도시하는 블록도이다.
도 8은 본 개시내용의 일부 구현들에 따른, CCSAO 프로세스가 수직 및 수평 디블록킹 필터(deblocking filter)(DBF)에 인터리빙되는 것을 도시하는 블록도이다.
도 9는 본 개시내용의 일부 구현들에 따른, 교차-성분 상관(cross-component correlation)을 이용하여 비디오 신호를 디코딩하는 예시적 프로세스를 도시하는 흐름도이다.
도 10a는 본 개시내용의 일부 구현들에 따른, C0 분류에 대해 상이한 루마(또는 크로마) 샘플 위치를 이용하는 분류자를 도시하는 블록도이다.
도 10b는 본 개시내용의 일부 구현들에 따른, 루마 후보들에 대한 상이한 형상들의 일부 예들을 도시한다.
도 11은 본 개시내용의 일부 구현들에 따른, 모든 병치된(collocated) 및 이웃하는 루마/크로마 샘플들이 CCSAO 분류에 공급될 수 있는 것을 도시하는 샘플 프로세스의 블록도이다.
도 12는 본 개시내용의 일부 구현들에 따른, 병치된 루마 샘플 값을 병치된 및 이웃하는 루마 샘플들을 가중함으로써 획득된 값으로 대체하는 것에 의한 예시적인 분류자들을 도시한다.
도 13a는 본 개시내용의 일부 구현들에 따른, 분류를 위해 이용된 병치된 및 이웃하는 루마(크로마) 샘플들 중 임의의 것이 현재 픽처 밖에 있는 경우 CCSAO가 현재 크로마(루마) 샘플에 적용되지 않는 것을 도시하는 블록도이다.
도 13b는 본 개시내용의 일부 구현들에 따른, 분류를 위해 이용된 병치된 및 이웃하는 루마 또는 크로마 샘플들 중 임의의 것이 현재 픽처 밖에 있는 경우 CCSAO가 현재 루마 또는 크로마 샘플에 적용되는 것을 도시하는 블록도이다.
도 14는 본 개시내용의 일부 구현들에 따른, 분류를 위해 이용된 대응하는 선택된 병치된 또는 이웃하는 루마 샘플이 가상 경계(virtual boundary)(VB)에 의해 정의된 가상 공간 밖에 있는 경우 CCSAO가 현재 크로마 샘플에 적용되지 않는 것을 도시하는 블록도이다.
도 15는 본 개시내용의 일부 구현들에 따른, 가상 경계 밖에 있는 루마 샘플들에 대해 반복적 또는 미러 패딩(repetitive or mirror padding)이 적용되는 것을 도시한다.
도 16은 본 개시내용의 일부 구현들에 따른, 모든 9개의 병치된 이웃하는 루마 샘플들이 분류를 위해 이용되는 경우 추가적인 1 루마 라인 버퍼(luma line buffer)가 요구되는 것을 도시한다.
도 17은 본 개시내용의 일부 구현들에 따른, VB와 교차하는 9개의 루마 후보 CCSAO가 2개의 추가적인 루마 라인 버퍼들을 증가시킬 수 있는 AVS에서의 예시를 도시한다.
도 18a는 본 개시내용의 일부 구현들에 따른, VB와 교차하는 9개의 루마 후보 CCSAO가 1개의 추가적인 루마 라인 버퍼를 증가시킬 수 있는 VVC에서의 예시를 도시한다.
도 18b는 본 개시내용의 일부 구현들에 따른, 병치된 또는 이웃하는 크로마 샘플들이 현재 루마 샘플들을 분류하기 위해 이용될 때, 선택된 크로마 후보가 VB에 걸쳐 있을 수 있고 추가적인 크로마 라인 버퍼를 필요로 할 수 있는 경우의 예시를 도시한다.
도 19a 내지 도 19c는 본 개시내용의 일부 구현들에 따른, AVS 및 VVC에서, 크로마 샘플의 루마 후보들 중 임의의 것이 (현재 크로마 샘플 VB 밖에 있는) VB에 걸쳐 있는 경우 크로마 샘플에 대해 CCSAO가 디스에이블되는 것을 도시한다.
도 20a 내지 도 20c는 본 개시내용의 일부 구현들에 따른, AVS 및 VVC에서, 크로마 샘플의 루마 후보들 중 임의의 것이 (현재 크로마 샘플 VB 밖에 있는) VB에 걸쳐 있는 경우 크로마 샘플에 대한 반복적 패딩을 이용하여 CCSAO이 인에이블되는 것을 도시한다.
도 21a 내지 도 21c는 본 개시내용의 일부 구현들에 따른, AVS 및 VVC에서, 크로마 샘플의 루마 후보들 중 임의의 것이 (현재 크로마 샘플 VB 밖에 있는) VB에 걸쳐 있는 경우 크로마 샘플에 대한 미러 패딩을 이용하여 CCSAO가 인에이블되는 것을 도시한다.
도 22a 및 도 22b는 본 개시내용의 일부 구현들에 따른, 상이한 CCSAO 샘플 형상들에 대해 양면 대칭 패딩(double sided symmetric padding)을 이용하여 CCSAO가 인에이블되는 것을 도시한다.
도 23은 본 개시내용의 일부 구현들에 따른, 분류를 위해 제한된 수의 루마 후보들을 이용하는 것의 제한들을 도시한다.
도 24는 본 개시내용의 일부 구현들에 따른, CCSAO 적용 영역이 코딩 트리 블록(coding tree block)(CTB)/코딩 트리 유닛(coding tree unit)(CTU) 경계에 정렬되지 않는 것을 도시한다.
도 25는 본 개시내용의 일부 구현들에 따른, CCSAO 적용 영역 프레임 파티션이 CCSAO 파라미터들로 고정될 수 있는 것을 도시한다.
도 26은 본 개시내용의 일부 구현들에 따른, CCSAO 적용 영역이 프레임/슬라이스/CTB 레벨로부터 분할된 이진-트리(Binary-tree)(BT)/쿼드-트리(Quad-tree)(QT)/삼진-트리(Ternary-tree)(TT)일 수 있는 것을 도시한다.
도 27은 본 개시내용의 일부 구현들에 따른, 픽처 프레임 내에서 상이한 레벨들에서 이용되고 스위칭되는 복수의 분류자들을 도시하는 블록도이다.
도 28은 본 개시내용의 일부 구현들에 따른, CCSAO 적용 영역 파티션이 동적이고 픽처 레벨에서 스위칭될 수 있는 것을 도시하는 블록도이다.
도 29는 본 개시내용의 일부 구현들에 따른, CCSAO 분류자들이 현재 또는 교차 성분 코딩 정보를 고려할 수 있는 것을 도시하는 도면이다.
도 30은 본 개시내용의 일부 구현들에 따른, 본 개시내용에 개시된 SAO 분류 방법들이 사후 예측 필터로서 역할을 하는 것을 도시하는 블록도이다.
도 31은 본 개시내용의 일부 구현들에 따른, 사후 예측 SAO 필터에 대해, 각각의 성분이 분류를 위해 현재 및 이웃하는 샘플들을 이용할 수 있는 것을 도시하는 블록도이다.
도 32는 본 개시내용의 일부 구현들에 따른, 교차-성분 상관을 이용하여 비디오 신호를 디코딩하는 예시적인 프로세스를 도시하는 흐름도이다.
도 33은 본 개시내용의 일부 구현들에 따른, 사용자 인터페이스와 결합된 컴퓨팅 환경을 도시하는 도면이다.
특정 구현들에 대한 참조가 이제 상세히 이루어질 것이며, 그 예들은 첨부 도면들에 예시된다. 이하의 상세한 설명에서, 본 명세서에 제시된 발명 대상을 이해하는 데 도움을 주기 위해 다수의 비제한적인 구체적인 상세들이 개시된다. 그러나, 다양한 대안들이 청구항들의 범위로부터 벗어나지 않고 이용될 수 있고, 발명 대상이 이러한 특정 상세들 없이도 실시될 수 있다는 것이 본 기술분야의 통상의 기술자에게 명백할 것이다. 예를 들어, 본 명세서에 제시된 발명 대상은 디지털 비디오 능력들을 갖는 많은 타입의 전자 디바이스들 상에서 구현될 수 있다는 것이 본 기술분야의 통상의 기술자에게 명백할 것이다.
1세대 AVS 표준은 중국 국가 표준 "Information Technology, Advanced Audio Video Coding, Part 2: Video"(AVS1이라고 알려짐) 및 "Information Technology, Advanced Audio Video Coding Part 16: Radio Television Video"(AVS+라고 알려짐)를 포함한다. 이것은 MPEG-2 표준에 비해 동일한 지각 품질에서 약 50% 비트레이트 절감을 제공할 수 있다. 2세대 AVS 표준은 주로 보조 HD TV 프로그램들의 송신에서의 타깃인 일련의 중국 국가 표준 "Information Technology, Efficient Multimedia Coding"(AVS2라고 알려짐)을 포함한다. AVS2의 코딩 효율은 AVS+의 코딩 효율의 2배이다. 한편, AVS2 표준 비디오 부분은 IEEE(Institute of Electrical and Electronics Engineers)에 의해 응용들을 위한 하나의 국제 표준으로서 제출되었다. AVS3 표준은 최신 국제 표준 HEVC의 코딩 효율을 능가하는 것을 목표로 하는 UHD 비디오 응용을 위한 하나의 새로운 세대의 비디오 코딩 표준이며, 이는 HEVC 표준에 비해 약 30% 비트레이트 절감을 제공한다. 2019년 3월에, 68-th AVS 회의에서, AVS3-P2 베이스라인이 완료되었고, 이는 HEVC 표준에 비해 대략 30% 비트레이트 절감을 제공한다. 현재, 고성능 모델(high performance model)(HPM)이라고 하는 하나의 기준 소프트웨어는 AVS3 표준의 기준 구현을 설명하기 위해 AVS 그룹에 의해 유지된다. HEVC와 같이, AVS3 표준은 블록 기반 하이브리드 비디오 코딩 프레임워크 상에 구축된다.
도 1은 본 개시내용의 일부 구현들에 따른, 비디오 블록들을 병렬로 인코딩 및 디코딩하기 위한 예시적인 시스템(10)을 도시하는 블록도이다. 도 1에 도시된 바와 같이, 시스템(10)은 목적지 디바이스(14)에 의해 나중에 디코딩될 비디오 데이터를 생성하여 인코딩하는 소스 디바이스(12)를 포함한다. 소스 디바이스(12) 및 목적지 디바이스(14)는 데스크탑 또는 랩탑 컴퓨터들, 태블릿 컴퓨터들, 스마트폰들, 셋탑 박스들, 디지털 텔레비전들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게임 콘솔들, 비디오 스트리밍 디바이스 등을 포함한 매우 다양한 전자 디바이스들 중 임의의 것을 포함할 수 있다. 일부 구현들에서, 소스 디바이스(12) 및 목적지 디바이스(14)는 무선 통신 기능들을 갖추고 있다.
일부 구현들에서, 목적지 디바이스(14)는 링크(16)를 통해 디코딩될 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16)는 소스 디바이스(12)로부터 목적지 디바이스(14)로 인코딩된 비디오 데이터를 이동시킬 수 있는 임의의 타입의 통신 매체 또는 디바이스를 포함할 수 있다. 일 예에서, 링크(16)는 소스 디바이스(12)가 인코딩된 비디오 데이터를 실시간으로 목적지 디바이스(14)에 직접 송신할 수 있게 하는 통신 매체를 포함할 수 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜과 같은 통신 표준에 따라 변조되어, 목적지 디바이스(14)로 송신될 수 있다. 통신 매체는 라디오 주파수(RF) 스펙트럼 또는 하나 이상의 물리 송신 라인과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 매체는 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷 기반 네트워크의 일부를 형성할 수 있다. 통신 매체는 라우터들, 스위치들, 기지국들, 또는 소스 디바이스(12)로부터 목적지 디바이스(14)로의 통신을 용이하게 하는 데 유용할 수 있는 임의의 다른 장비를 포함할 수 있다.
일부 다른 구현들에서, 인코딩된 비디오 데이터는 출력 인터페이스(22)로부터 저장 디바이스(32)로 송신될 수 있다. 이어서, 저장 디바이스(32)에서의 인코딩된 비디오 데이터는 입력 인터페이스(28)를 통해 목적지 디바이스(14)에 의해 액세스될 수 있다. 저장 디바이스(32)는 하드 드라이브, 블루레이 디스크들, DVD들, CD-ROM들, 플래시 메모리, 휘발성 또는 비휘발성 메모리, 또는 인코딩된 비디오 데이터를 저장하기 위한 임의의 다른 적절한 디지털 저장 매체와 같은 다양한 분산된 또는 국지적으로 액세스되는 데이터 저장 매체 중 임의의 것을 포함할 수 있다. 추가 예에서, 저장 디바이스(32)는 소스 디바이스(12)에 의해 생성된 인코딩된 비디오 데이터를 보유할 수 있는 파일 서버 또는 다른 중간 저장 디바이스에 대응할 수 있다. 목적지 디바이스(14)는 스트리밍 또는 다운로딩을 통해 저장 디바이스(32)로부터 저장된 비디오 데이터에 액세스할 수 있다. 파일 서버는 인코딩된 비디오 데이터를 저장하고 인코딩된 비디오 데이터를 목적지 디바이스(14)에 송신할 수 있는 임의의 타입의 컴퓨터일 수 있다. 예시적인 파일 서버들은 (예를 들어, 웹사이트를 위한) 웹 서버, FTP 서버, NAS(network attached storage) 디바이스들, 또는 로컬 디스크 드라이브를 포함한다. 목적지 디바이스(14)는, 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하기에 적절한, 무선 채널(예를 들어, Wi-Fi 접속), 유선 접속(예를 들어, DSL, 케이블 모뎀 등), 또는 이 둘의 조합을 포함한, 임의의 표준 데이터 접속을 통해 인코딩된 비디오 데이터에 액세스할 수 있다. 저장 디바이스(32)로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 이 둘의 조합일 수 있다.
도 1에 도시된 바와 같이, 소스 디바이스(12)는 비디오 소스(18), 비디오 인코더(20) 및 출력 인터페이스(22)를 포함한다. 비디오 소스(18)는 비디오 캡처 디바이스, 예를 들어, 비디오 카메라, 이전에 캡처된 비디오를 포함하는 비디오 아카이브(video archive), 비디오 콘텐츠 제공자로부터 비디오를 수신하는 비디오 피드 인터페이스(video feed interface), 및/또는 컴퓨터 그래픽 데이터를 소스 비디오로서 생성하기 위한 컴퓨터 그래픽 시스템, 또는 그러한 소스들의 조합과 같은 소스를 포함할 수 있다. 일 예로서, 비디오 소스(18)가 보안 감시 시스템의 비디오 카메라인 경우, 소스 디바이스(12) 및 목적지 디바이스(14)는 카메라폰들 또는 비디오폰들을 형성할 수 있다. 그러나, 본 출원에서 설명되는 구현들은 일반적으로 비디오 코딩에 적용될 수 있고, 무선 및/또는 유선 응용들에 적용될 수 있다.
캡처된, 미리-캡처된, 또는 컴퓨터-생성된 비디오는 비디오 인코더(20)에 의해 인코딩될 수 있다. 인코딩된 비디오 데이터는 소스 디바이스(12)의 출력 인터페이스(22)를 통해 목적지 디바이스(14)에 직접 송신될 수 있다. 인코딩된 비디오 데이터는 또한(또는 대안으로서), 디코딩 및/또는 재생을 위해, 목적지 디바이스(14) 또는 다른 디바이스들에 의한 나중의 액세스를 위해 저장 디바이스(32) 상에 저장될 수 있다. 출력 인터페이스(22)는 모뎀 및/또는 송신기를 더 포함할 수 있다.
목적지 디바이스(14)는 입력 인터페이스(28), 비디오 디코더(30), 및 디스플레이 디바이스(34)를 포함한다. 입력 인터페이스(28)는 수신기 및/또는 모뎀을 포함하고, 링크(16)를 통해 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16)를 통해 통신되거나 저장 디바이스(32) 상에 제공되는 인코딩된 비디오 데이터는 비디오 데이터를 디코딩 시에 비디오 디코더(30)에 의한 이용을 위해 비디오 인코더(20)에 의해 생성된 다양한 신택스 요소들을 포함할 수 있다. 그러한 신택스 요소들은 통신 매체 상에서 송신되거나, 저장 매체 상에 저장되거나, 파일 서버에 저장된 인코딩된 비디오 데이터 내에 포함될 수 있다.
일부 구현들에서, 목적지 디바이스(14)는 통합 디스플레이 디바이스 및 목적지 디바이스(14)와 통신하도록 구성되는 외부 디스플레이 디바이스일 수 있는 디스플레이 디바이스(34)를 포함할 수 있다. 디스플레이 디바이스(34)는 디코딩된 비디오 데이터를 사용자에게 디스플레이하며, 액정 디스플레이(LCD), 플라즈마 디스플레이, 유기 발광 다이오드(OLED) 디스플레이 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 것을 포함할 수 있다.
비디오 인코더(20) 및 비디오 디코더(30)는, VVC, HEVC, MPEG-4, Part 10, AVC(Advanced Video Coding), AVS, 또는 이러한 표준들의 확장들과 같은, 독점적 또는 산업 표준들에 따라 동작할 수 있다. 본 출원은 특정 비디오 코딩/디코딩 표준에 제한되지 않고, 다른 비디오 코딩/디코딩 표준들에 적용가능할 수 있다는 것을 이해해야 한다. 소스 디바이스(12)의 비디오 인코더(20)는 이들 현재 또는 미래의 표준들 중 임의의 것에 따라 비디오 데이터를 인코딩하도록 구성될 수 있다는 것이 일반적으로 고려된다. 유사하게, 목적지 디바이스(14)의 비디오 디코더(30)는 이들 현재 또는 미래의 표준들 중 임의의 것에 따라 비디오 데이터를 디코딩하도록 구성될 수 있다는 것이 또한 일반적으로 고려된다.
비디오 인코더(20) 및 비디오 디코더(30) 각각은, 하나 이상의 마이크로프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(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)를 포함한다. 디블록킹 필터와 같은 인-루프 필터(in-loop filter)(63)가 합산기(62)와 DPB(64) 사이에 위치되어, 블록 경계들을 필터링하여, 재구성된 비디오로부터 블록형 아티팩트들(blocky artifacts)을 제거할 수 있다. 합산기(62)의 출력을 필터링하기 위해 디블록킹 필터에 더하여 다른 인-루프 필터(63)가 또한 이용될 수 있다. 샘플 적응적 오프셋(SAO) 및 적응적 인-루프 필터(adaptive in-loop filter)(ALF)와 같은 추가 인-루프 필터링(63)은 재구성된 CU에 대해, 그것이 참조 픽처 저장소에 넣어지고 미래의 비디오 블록들을 코딩하기 위한 참조로서 이용되기 전에 적용될 수 있다. 비디오 인코더(20)는 고정 또는 프로그램가능 하드웨어 유닛의 형태를 취할 수 있거나, 예시된 고정 또는 프로그램가능 하드웨어 유닛들 중 하나 이상 간에 분할될 수 있다.
비디오 데이터 메모리(40)는 비디오 인코더(20)의 컴포넌트들에 의해 인코딩될 비디오 데이터를 저장할 수 있다. 비디오 데이터 메모리(40)에서의 비디오 데이터는, 예를 들어, 비디오 소스(18)로부터 획득될 수 있다. DPB(64)는 (예를 들어, 인트라 또는 인터 예측 코딩 모드들에서) 비디오 인코더(20)에 의해 비디오 데이터를 인코딩하는 데 이용하기 위한 참조 비디오 데이터를 저장한 버퍼이다. 비디오 데이터 메모리(40) 및 DPB(64)는 다양한 메모리 디바이스들 중 임의의 것에 의해 형성될 수 있다. 다양한 예들에서, 비디오 데이터 메모리(40)는 비디오 인코더(20)의 다른 컴포넌트들과 함께 온-칩(on-chip)일 수 있거나, 그러한 컴포넌트들에 대해 오프-칩(off-chip)일 수 있다.
도 2에 도시된 바와 같이, 비디오 데이터를 수신한 후, 예측 처리 유닛(41) 내의 파티션 유닛(45)은 비디오 데이터를 비디오 블록들로 파티셔닝한다. 이 파티셔닝은 비디오 프레임을 비디오 데이터와 연관된 쿼드-트리 구조와 같은 미리 정의된 분할 구조들에 따라 슬라이스들, 타일들, 또는 다른 더 큰 코딩 유닛(CU)들로 파티셔닝하는 것을 또한 포함할 수 있다. 비디오 프레임은 다수의 비디오 블록들(또는 타일들이라고 지칭되는 비디오 블록들의 세트들)로 분할될 수 있다. 예측 처리 유닛(41)은 에러 결과들(예를 들어, 코딩 레이트 및 왜곡 레벨)에 기초하여 현재 비디오 블록에 대해, 복수의 인트라 예측 코딩 모드들 중 하나 또는 복수의 인터 예측 코딩 모드들 중 하나와 같은 복수의 가능한 예측 코딩 모드들 중 하나를 선택할 수 있다. 예측 처리 유닛(41)은 결과적인 인트라 또는 인터 예측 코딩된 블록을 합산기(50)에 제공하여 잔차 블록을 생성하고 합산기(62)에 제공하여 후속해서 참조 프레임의 일부로서 이용하기 위해 인코딩된 블록을 재구성할 수 있다. 예측 처리 유닛(41)은 또한 모션 벡터, 인트라-모드 표시자들, 파티션 정보, 및 다른 그러한 신택스 정보와 같은 신택스 요소들을 엔트로피 인코딩 유닛(56)에 제공한다.
현재 비디오 블록에 대한 적절한 인트라 예측 코딩 모드를 선택하기 위해, 예측 처리 유닛(41) 내의 인트라 예측 처리 유닛(46)은 코딩될 현재 블록과 동일한 프레임에서의 하나 이상의 이웃 블록에 대해 현재 비디오 블록의 인트라 예측 코딩을 수행하여 공간 예측을 제공할 수 있다. 예측 처리 유닛(41) 내의 모션 추정 유닛(42) 및 모션 보상 유닛(44)은 하나 이상의 참조 프레임에서의 하나 이상의 예측 블록에 대해 현재 비디오 블록의 인터 예측 코딩을 수행하여 시간 예측을 제공한다. 비디오 인코더(20)는, 예를 들어, 비디오 데이터의 각각의 블록에 대해 적절한 코딩 모드를 선택하기 위해, 다수의 코딩 패스들(coding passes)을 수행할 수 있다.
일부 구현들에서, 모션 추정 유닛(42)은, 비디오 프레임들의 시퀀스 내의 미리 결정된 패턴에 따라, 참조 비디오 프레임 내의 예측 블록에 대한 현재 비디오 프레임 내의 비디오 블록의 예측 유닛(PU)의 변위를 표시하는 모션 벡터를 생성함으로써 현재 비디오 프레임에 대한 인터 예측 모드를 결정한다. 모션 추정 유닛(42)에 의해 수행되는 모션 추정은 비디오 블록들에 대한 모션을 추정하는 모션 벡터들을 생성하는 프로세스이다. 모션 벡터는, 예를 들어, 현재 프레임(또는 다른 코딩된 유닛) 내에서 코딩되는 현재 블록에 대한 참조 프레임(또는 다른 코딩된 유닛) 내의 예측 블록에 대한 현재 비디오 프레임 또는 픽처 내의 비디오 블록의 PU의 변위를 표시할 수 있다. 미리 결정된 패턴은 시퀀스에서의 비디오 프레임들을 P 프레임들 또는 B 프레임들로서 지정할 수 있다. 인트라 BC 유닛(48)은 인터 예측을 위해 모션 추정 유닛(42)에 의한 모션 벡터들의 결정과 유사한 방식으로 인트라 BC 코딩을 위한 벡터들, 예를 들어, 블록 벡터들을 결정할 수 있거나, 모션 추정 유닛(42)을 이용하여 블록 벡터를 결정할 수 있다.
예측 블록은, 절대 차이의 합(sum of absolute difference)(SAD), 제곱 차이의 합(sum of square difference)(SSD), 또는 다른 차이 메트릭들(other difference metrics)에 의해 결정될 수 있는, 픽셀 차이의 관점에서 코딩될 비디오 블록의 PU와 근접하게 매칭하는 것으로서 간주되는 참조 프레임의 블록이다. 일부 구현들에서, 비디오 인코더(20)는 DPB(64)에 저장된 참조 프레임들의 서브-정수 픽셀 위치들(sub-integer pixel positions)에 대한 값들을 계산할 수 있다. 예를 들어, 비디오 인코더(20)는 참조 프레임의 1/4 픽셀 위치들, 1/8 픽셀 위치들, 또는 다른 분수 픽셀 위치들(fractional pixel positions)의 값들을 보간할 수 있다. 따라서, 모션 추정 유닛(42)은 전체 픽셀 위치들 및 분수 픽셀 위치들에 대한 모션 검색을 수행하고, 분수 픽셀 정밀도를 갖는 모션 벡터를 출력할 수 있다.
모션 추정 유닛(42)은, PU의 위치를, 각각이 DPB(64)에 저장된 하나 이상의 참조 프레임을 식별하는 제1 참조 프레임 리스트(List 0) 또는 제2 참조 프레임 리스트(List 1)로부터 선택된 참조 프레임의 예측 블록의 위치와 비교함으로써, 인터 예측 코딩된 프레임에서의 비디오 블록의 PU에 대한 모션 벡터를 계산한다. 모션 추정 유닛(42)은 계산된 모션 벡터를 모션 보상 유닛(44)에 전송한 다음 엔트로피 인코딩 유닛(56)에 전송한다.
모션 보상 유닛(44)에 의해 수행되는 모션 보상은 모션 추정 유닛(42)에 의해 결정된 모션 벡터에 기초하여 예측 블록을 페치하거나 생성하는 것을 수반할 수 있다. 현재 비디오 블록의 PU에 대한 모션 벡터를 수신 시에, 모션 보상 유닛(44)은 참조 프레임 리스트들 중 하나에서 모션 벡터가 가리키는 예측 블록을 찾고, DPB(64)로부터 예측 블록을 검색하고, 예측 블록을 합산기(50)에 포워딩할 수 있다. 그 후, 합산기(50)는 코딩되는 현재 비디오 블록의 픽셀 값들로부터 모션 보상 유닛(44)에 의해 제공된 예측 블록의 픽셀 값들을 감산함으로써 픽셀 차이 값들의 잔차 비디오 블록을 형성한다. 잔차 비디오 블록을 형성하는 픽셀 차이 값들은 루마 또는 크로마 차이 성분들 또는 둘 다를 포함할 수 있다. 모션 보상 유닛(44)은 비디오 프레임의 비디오 블록들을 디코딩 시에 비디오 디코더(30)에 의해 이용하기 위한 비디오 프레임의 비디오 블록들과 연관된 신택스 요소들을 또한 생성할 수 있다. 신택스 요소들은, 예를 들어, 예측 블록을 식별하기 위해 이용되는 모션 벡터를 정의하는 신택스 요소들, 예측 모드를 표시하는 임의의 플래그들, 또는 본 명세서에 설명된 임의의 다른 신택스 정보를 포함할 수 있다. 모션 추정 유닛(42) 및 모션 보상 유닛(44)이 고도로 통합될 수 있지만, 개념적 목적을 위해 개별적으로 예시되어 있다는 점에 유의한다.
일부 구현들에서, 인트라 BC 유닛(48)은 모션 추정 유닛(42) 및 모션 보상 유닛(44)과 관련하여 전술한 것과 유사한 방식으로 벡터들을 생성하고 예측 블록들을 페치할 수 있지만, 예측 블록들은 코딩되는 현재 블록과 동일한 프레임에 있고, 벡터들은 모션 벡터들과 달리 블록 벡터들로 지칭된다. 특히, 인트라 BC 유닛(48)은 현재 블록을 인코딩하기 위해 이용할 인트라 예측 모드를 결정할 수 있다. 일부 예들에서, 인트라 BC 유닛(48)은, 예를 들어, 개별 인코딩 패스들 동안, 다양한 인트라 예측 모드들을 이용하여 현재 블록을 인코딩하고, 레이트-왜곡 분석을 통해 그들의 성능을 테스트할 수 있다. 다음으로, 인트라 BC 유닛(48)은, 다양한 테스트된 인트라 예측 모드들 중에서, 적절한 인트라 예측 모드를 선택하여 이용하고, 그에 따라 인트라 모드 표시자를 생성할 수 있다. 예를 들어, 인트라 BC 유닛(48)은 다양한 테스트된 인트라 예측 모드들에 대한 레이트-왜곡 분석을 이용하여 레이트-왜곡 값들을 계산하고, 테스트된 모드들 중에서 최상의 레이트-왜곡 특성들을 갖는 인트라 예측 모드를 이용할 적절한 인트라 예측 모드로서 선택할 수 있다. 레이트-왜곡 분석은 일반적으로, 인코딩된 블록과, 인코딩된 블록을 생성하기 위해 인코딩된 원래의 인코딩되지 않은 블록 사이의 왜곡(또는 에러)의 양 뿐만 아니라, 인코딩된 블록을 생성하는 데 이용된 비트레이트(즉, 비트들의 수)를 결정한다. 인트라 BC 유닛(48)은 어느 인트라 예측 모드가 블록에 대한 최상의 레이트-왜곡 값을 나타내는지를 결정하기 위해 다양한 인코딩된 블록들에 대한 왜곡들 및 레이트들로부터 비율들을 계산할 수 있다.
다른 예들에서, 인트라 BC 유닛(48)은 본 명세서에 설명된 구현들에 따라 인트라 BC 예측을 위한 그러한 기능들을 수행하기 위해, 전체적으로 또는 부분적으로, 모션 추정 유닛(42) 및 모션 보상 유닛(44)을 이용할 수 있다. 어느 경우에나, 인트라 블록 카피에 대해, 예측 블록은 절대 차이의 합(SAD), 제곱 차이의 합(SSD), 또는 다른 차이 메트릭들에 의해 결정될 수 있는, 픽셀 차이의 관점에서 코딩될 블록과 근접하게 매칭되는 것으로서 간주되는 블록일 수 있으며, 예측 블록의 식별은 서브-정수 픽셀 위치들에 대한 값들의 계산을 포함할 수 있다.
예측 블록이 인트라 예측에 따라 동일한 프레임으로부터 온 것인지 또는 인터 예측에 따라 상이한 프레임으로부터 온 것인지에 관계없이, 비디오 인코더(20)는 코딩되는 현재 비디오 블록의 픽셀 값들로부터 예측 블록의 픽셀 값들을 감산하여 픽셀 차이 값들을 형성함으로써 잔차 비디오 블록을 형성할 수 있다. 잔차 비디오 블록을 형성하는 픽셀 차이 값들은 루마 및 크로마 성분 차이들 둘 다를 포함할 수 있다.
인트라 예측 처리 유닛(46)은, 전술한 바와 같이, 모션 추정 유닛(42) 및 모션 보상 유닛(44)에 의해 수행되는 인터 예측, 또는 인트라 BC 유닛(48)에 의해 수행되는 인트라 블록 카피 예측에 대한 대안으로서, 현재 비디오 블록을 인트라 예측할 수 있다. 특히, 인트라 예측 처리 유닛(46)은 현재 블록을 인코딩하기 위해 이용할 인트라 예측 모드를 결정할 수 있다. 그렇게 하기 위해, 인트라 예측 처리 유닛(46)은, 예를 들어, 개별 인코딩 패스들 동안, 다양한 인트라 예측 모드들을 이용하여 현재 블록을 인코딩할 수 있고, 인트라 예측 처리 유닛(46)(또는 일부 예들에서, 모드 선택 유닛)은 테스트된 인트라 예측 모드들로부터 이용할 적절한 인트라 예측 모드를 선택할 수 있다. 인트라 예측 처리 유닛(46)은 블록에 대한 선택된 인트라 예측 모드를 표시하는 정보를 엔트로피 인코딩 유닛(56)에 제공할 수 있다. 엔트로피 인코딩 유닛(56)은 선택된 인트라 예측 모드를 표시하는 정보를 비트스트림에 인코딩할 수 있다.
예측 처리 유닛(41)이 인터 예측 또는 인트라 예측을 통해 현재 비디오 블록에 대한 예측 블록을 결정한 후에, 합산기(50)는 현재 비디오 블록으로부터 예측 블록을 감산함으로써 잔차 비디오 블록을 형성한다. 잔차 블록에서의 잔차 비디오 데이터는 하나 이상의 변환 유닛(TU)에 포함될 수 있고, 변환 처리 유닛(52)에 제공된다. 변환 처리 유닛(52)은, 이산 코사인 변환(DCT) 또는 개념적으로 유사한 변환과 같은 변환을 이용하여 잔차 비디오 데이터를 잔차 변환 계수들로 변환한다.
변환 처리 유닛(52)은 결과적인 변환 계수들을 양자화 유닛(54)에 전송할 수 있다. 양자화 유닛(54)은 변환 계수들을 양자화하여 비트레이트를 더 감소시킨다. 양자화 프로세스는 또한 계수들의 일부 또는 전부와 연관된 비트 심도(bit depth)를 감소시킬 수 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수 있다. 일부 예들에서, 그 후, 양자화 유닛(54)은 양자화된 변환 계수들을 포함하는 행렬의 스캔을 수행할 수 있다. 대안적으로, 엔트로피 인코딩 유닛(56)이 스캔을 수행할 수 있다.
양자화에 이어서, 엔트로피 인코딩 유닛(56)은, 예를 들어, CAVLC(context adaptive variable length coding), CABAC(context adaptive binary arithmetic coding), SBAC(syntax-based context-adaptive binary arithmetic coding), PIPE(probability interval partitioning entropy) 코딩 또는 다른 엔트로피 인코딩 방법 또는 기술을 이용하여, 양자화된 변환 계수들을 비디오 비트스트림으로 엔트로피 인코딩한다. 이어서, 인코딩된 비트스트림은 비디오 디코더(30)로 송신되거나, 비디오 디코더(30)로의 나중의 송신 또는 그에 의한 검색을 위해 저장 디바이스(32)에 보관될 수 있다. 엔트로피 인코딩 유닛(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)는 인코딩된 비디오 비트스트림으로부터의 인코딩된 비디오 데이터를 저장한 CPB(coded picture buffer)를 포함할 수 있다. 비디오 디코더(30)의 DPB(decoded picture buffer)(92)는 비디오 디코더(30)에 의해 비디오 데이터를 디코딩 시에 이용하기 위한 참조 비디오 데이터를 (예를 들어, 인트라 또는 인터 예측 코딩 모드들에서) 저장한다. 비디오 데이터 메모리(79) 및 DPB(92)는 SDRAM(synchronous DRAM), MRAM(magneto-resistive RAM), RRAM(resistive RAM), 또는 다른 타입들의 메모리 디바이스들을 포함한 DRAM(dynamic random access memory)와 같은 다양한 메모리 디바이스들 중 임의의 것에 의해 형성될 수 있다. 예시의 목적을 위해, 비디오 데이터 메모리(79) 및 DPB(92)는 도 3에서 비디오 디코더(30)의 2개의 개별 컴포넌트들로서 도시된다. 그러나, 비디오 데이터 메모리(79) 및 DPB(92)는 동일한 메모리 디바이스 또는 별개의 메모리 디바이스들에 의해 제공될 수 있다는 것이 본 기술분야의 통상의 기술자에게 명백할 것이다. 일부 예들에서, 비디오 데이터 메모리(79)는, 비디오 디코더(30)의 다른 컴포넌트들과 온-칩이거나, 그러한 컴포넌트들에 대해 오프-칩일 수 있다.
디코딩 프로세스 동안, 비디오 디코더(30)는 인코딩된 비디오 프레임의 비디오 블록들 및 연관된 신택스 요소들을 나타내는 인코딩된 비디오 비트스트림을 수신한다. 비디오 디코더(30)는 비디오 프레임 레벨 및/또는 비디오 블록 레벨에서 신택스 요소들을 수신할 수 있다. 비디오 디코더(30)의 엔트로피 디코딩 유닛(80)은 비트스트림을 엔트로피 디코딩하여 양자화된 계수들, 모션 벡터들 또는 인트라 예측 모드 표시자들 및 다른 신택스 요소들을 생성한다. 이어서, 엔트로피 디코딩 유닛(80)은 모션 벡터들 및 다른 신택스 요소들을 예측 처리 유닛(81)으로 포워딩한다.
비디오 프레임이 인트라 예측 코딩된(I) 프레임으로서 또는 다른 타입들의 프레임들에서의 인트라 코딩된 예측 블록들에 대해 코딩될 때, 예측 처리 유닛(81)의 인트라 예측 처리 유닛(84)은 시그널링된 인트라 예측 모드에 기초하여 현재 비디오 프레임의 비디오 블록에 대한 예측 데이터 및 현재 프레임의 이전에 디코딩된 블록들로부터의 참조 데이터를 생성할 수 있다.
비디오 프레임이 인터 예측 코딩된(즉, B 또는 P) 프레임으로서 코딩될 때, 예측 처리 유닛(81)의 모션 보상 유닛(82)은 엔트로피 디코딩 유닛(80)으로부터 수신된 모션 벡터들 및 다른 신택스 요소들에 기초하여 현재 비디오 프레임의 비디오 블록에 대한 하나 이상의 예측 블록을 생성한다. 예측 블록들 각각은 참조 프레임 리스트들 중 하나 내의 참조 프레임으로부터 생성될 수 있다. 비디오 디코더(30)는 DPB(92)에 저장된 참조 프레임들에 기초한 디폴트 구성 기법들을 이용하여 참조 프레임 리스트들 List 0 및 List 1을 구성할 수 있다.
일부 예들에서, 비디오 블록이 본 명세서에 설명된 인트라 BC 모드에 따라 코딩될 때, 예측 처리 유닛(81)의 인트라 BC 유닛(85)은 엔트로피 디코딩 유닛(80)으로부터 수신된 블록 벡터들 및 다른 신택스 요소들에 기초하여 현재 비디오 블록에 대한 예측 블록들을 생성한다. 예측 블록들은 비디오 인코더(20)에 의해 정의된 현재 비디오 블록과 동일한 픽처의 재구성된 영역 내에 있을 수 있다.
모션 보상 유닛(82) 및/또는 인트라 BC 유닛(85)은 모션 벡터들 및 다른 신택스 요소들을 파싱하는 것에 의해 현재 비디오 프레임의 비디오 블록에 대한 예측 정보를 결정하고, 다음으로 예측 정보를 이용하여 디코딩되는 현재 비디오 블록에 대한 예측 블록들을 생성한다. 예를 들어, 모션 보상 유닛(82)은 수신된 신택스 요소들 중 일부를 이용하여 비디오 프레임의 비디오 블록들을 코딩하는 데 이용되는 예측 모드(예를 들어, 인트라 또는 인터 예측), 인터 예측 프레임 타입(예를 들어, B 또는 P), 프레임에 대한 참조 프레임 리스트들 중 하나 이상에 대한 구성 정보, 프레임의 각각의 인터 예측 인코딩된 비디오 블록에 대한 모션 벡터들, 프레임의 각각의 인터 예측 코딩된 비디오 블록에 대한 인터 예측 상태, 및 현재 비디오 프레임에서의 비디오 블록들을 디코딩하기 위한 다른 정보를 결정한다.
유사하게, 인트라 BC 유닛(85)은 수신된 신택스 요소들 중 일부, 예를 들어, 플래그를 이용하여, 현재 비디오 블록이 인트라 BC 모드를 이용하여 예측되었다는 것, 프레임의 어느 비디오 블록들이 재구성된 영역 내에 있고 DPB(92)에 저장되어야 하는지의 구성 정보, 프레임의 각각의 인트라 BC 예측 비디오 블록에 대한 블록 벡터들, 프레임의 각각의 인트라 BC 예측 비디오 블록에 대한 인트라 BC 예측 상태, 및 현재 비디오 프레임에서의 비디오 블록들을 디코딩하기 위한 다른 정보를 결정할 수 있다.
모션 보상 유닛(82)은 또한, 참조 블록들의 서브-정수 픽셀들에 대한 보간된 값을 계산하기 위해 비디오 블록들의 인코딩 동안에 비디오 인코더(20)에 의해 이용된 바와 같은 보간 필터들을 이용하여 보간을 수행할 수 있다. 이 경우, 모션 보상 유닛(82)은 수신된 신택스 요소들로부터 비디오 인코더(20)에 의해 이용되는 보간 필터들을 결정하고, 보간 필터들을 이용하여 예측 블록들을 생성할 수 있다.
역 양자화 유닛(86)은 비디오 프레임에서의 각각의 비디오 블록에 대해 비디오 인코더(20)에 의해 계산된 동일한 양자화 파라미터를 이용하여 비트스트림에 제공되고 엔트로피 디코딩 유닛(80)에 의해 엔트로피 디코딩된 양자화된 변환 계수들을 역 양자화하여 양자화의 정도를 결정한다. 역 변환 처리 유닛(88)은 역 변환, 예를 들어, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스를 변환 계수들에 적용하여 픽셀 도메인에서 잔차 블록들을 재구성한다.
모션 보상 유닛(82) 또는 인트라 BC 유닛(85)이 벡터들 및 다른 신택스 요소들에 기초하여 현재 비디오 블록에 대한 예측 블록을 생성한 후에, 합산기(90)는 역 변환 처리 유닛(88)으로부터의 잔차 블록과 모션 보상 유닛(82) 및 인트라 BC 유닛(85)에 의해 생성된 대응하는 예측 블록을 합산함으로써 현재 비디오 블록에 대한 디코딩된 비디오 블록을 재구성한다. 인-루프 필터(91)는 디코딩된 비디오 블록을 추가로 처리하기 위해 합산기(90)와 DPB(92) 사이에 위치될 수 있다. 디블록킹 필터, 샘플 적응적 오프셋(SAO) 및 적응적 인-루프 필터(ALF)와 같은 인-루프 필터링(91)은 재구성된 CU에 대해, 그것이 참조 픽처 저장소에 넣어지기 전에 적용될 수 있다. 이어서, 주어진 프레임에서의 디코딩된 비디오 블록들은 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))는 먼저 프레임을 코딩 트리 유닛(CTU)들의 세트로 파티셔닝함으로써 프레임의 인코딩된 표현을 생성한다. 비디오 프레임은 좌측에서 우측으로 그리고 위에서 아래로 래스터 스캔 순서(raster scan order)로 연속적으로 순서화된 정수 개의 CTU를 포함할 수 있다. 각각의 CTU는 가장 큰 논리 코딩 유닛이고, CTU의 폭 및 높이는 비디오 인코더(20)에 의해 시퀀스 파라미터 세트에서 시그널링되어, 비디오 시퀀스에서의 모든 CTU들이 128×128, 64×64, 32×32 및 16×16 중 하나인 동일한 크기를 갖게 한다. 그러나, 본 출원이 반드시 특정 크기로 제한되는 것은 아니라는 점이 주목되어야 한다. 도 4b에 도시된 바와 같이, 각각의 CTU는 루마 샘플들의 하나의 코딩 트리 블록(CTB), 크로마 샘플들의 2개의 대응하는 코딩 트리 블록들, 및 코딩 트리 블록들의 샘플들을 코딩하는 데 이용되는 신택스 요소들을 포함할 수 있다. 신택스 요소들은, 인터 또는 인트라 예측, 인트라 예측 모드, 모션 벡터들, 및 다른 파라미터들을 포함하여, 코딩된 픽셀들의 블록의 상이한 타입들의 유닛들의 속성들 및 비디오 디코더(30)에서 비디오 시퀀스가 어떻게 재구성될 수 있는지를 설명한다. 단색 픽처들 또는 3개의 별개의 컬러 평면들을 갖는 픽처들에서, CTU는 단일 코딩 트리 블록 및 코딩 트리 블록의 샘플들을 코딩하는 데 이용되는 신택스 요소들을 포함할 수 있다. 코딩 트리 블록은 샘플들의 NxN 블록일 수 있다.
더 나은 성능을 달성하기 위해, 비디오 인코더(20)는 CTU의 코딩 트리 블록들에 대해 이진-트리 파티셔닝, 삼진-트리 파티셔닝, 쿼드-트리 파티셔닝 또는 이 둘의 조합과 같은 트리 파티셔닝을 재귀적으로 수행하고, CTU를 더 작은 코딩 유닛(CU)들로 분할할 수 있다. 도 4c에 도시된 바와 같이, 64x64 CTU(400)는 먼저 각각 32x32의 블록 크기를 갖는 4개의 더 작은 CU로 분할된다. 4개의 더 작은 CU들 중에서, CU(410) 및 CU(420)는 각각 블록 크기에 의해 16x16의 4개의 CU로 분할된다. 2개의 16x16 CU(430 및 440)는 각각 블록 크기에 의해 8x8의 4개의 CU로 더 분할된다. 도 4d는 도 4c에 도시된 바와 같은 CTU(400)의 파티션 프로세스의 최종 결과를 도시하는 쿼드-트리 데이터 구조를 도시하며, 쿼드-트리의 각각의 리프 노드는 32x32 내지 8x8 범위의 각자의 크기의 하나의 CU에 대응한다. 도 4b에 도시된 CTU와 같이, 각각의 CU는 루마 샘플들의 코딩 블록(CB) 및 동일한 크기의 프레임의 크로마 샘플들의 2개의 대응하는 코딩 블록, 및 코딩 블록들의 샘플들을 코딩하는 데 이용되는 신택스 요소들을 포함할 수 있다. 단색 픽처들 또는 3개의 별개의 컬러 평면을 갖는 픽처들에서, CU는 단일 코딩 블록 및 코딩 블록의 샘플들을 코딩하는 데 이용되는 신택스 구조들을 포함할 수 있다. 도 4c 및 도 4d에 도시된 쿼드-트리 파티셔닝은 단지 예시의 목적을 위한 것이고, 하나의 CTU는 쿼드/삼진/이진-트리 파티션들에 기초하여 변화하는 로컬 특성들에 적응하기 위해 CU들로 분할될 수 있다. 멀티-타입 트리 구조에서, 하나의 CTU는 쿼드-트리 구조에 의해 파티셔닝되고, 각각의 쿼드-트리 리프 CU는 이진 및 삼진 트리 구조에 의해 추가로 파티셔닝될 수 있다. 도 4e에 도시된 바와 같이, AVS3에는 5개의 분할/파티셔닝 타입들, 즉, 4차 파티셔닝(quaternary partitioning), 수평 이진 파티셔닝, 수직 이진 파티셔닝, 수평 확장 쿼드-트리 파티셔닝, 및 수직 확장 쿼드-트리 파티셔닝이 있다.
일부 구현들에서, 비디오 인코더(20)는 CU의 코딩 블록을 하나 이상의 MxN 예측 블록(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에 대한 루마 잔차 블록을 생성할 수 있다. 유사하게, 비디오 인코더(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)는 양자화된 변환 계수들을 표시하는 신택스 요소들에 대해 CABAC(Context-Adaptive Binary Arithmetic Coding)를 수행할 수 있다. 마지막으로, 비디오 인코더(20)는, 저장 디바이스(32)에 저장되거나 목적지 디바이스(14)에 송신되는, 코딩된 프레임들 및 연관된 데이터의 표현을 형성하는 비트들의 시퀀스를 포함하는 비트스트림을 출력할 수 있다.
비디오 인코더(20)에 의해 생성된 비트스트림을 수신한 후에, 비디오 디코더(30)는 비트스트림으로부터 신택스 요소들을 획득하기 위해 비트스트림을 파싱할 수 있다. 비디오 디코더(30)는 비트스트림으로부터 획득된 신택스 요소들에 적어도 부분적으로 기초하여 비디오 데이터의 프레임들을 재구성할 수 있다. 비디오 데이터를 재구성하는 프로세스는 일반적으로 비디오 인코더(20)에 의해 수행되는 인코딩 프로세스에 역이다. 예를 들어, 비디오 디코더(30)는 현재 CU의 TU들과 연관된 계수 블록들에 대해 역 변환을 수행하여 현재 CU의 TU들과 연관된 잔차 블록들을 재구성할 수 있다. 비디오 디코더(30)는 또한 현재 CU의 PU들에 대한 예측 블록들의 샘플들을 현재 CU의 TU들의 변환 블록들의 대응하는 샘플들에 더함으로써 현재 CU의 코딩 블록들을 재구성한다. 프레임의 각각의 CU에 대한 코딩 블록들을 재구성한 후에, 비디오 디코더(30)는 프레임을 재구성할 수 있다.
SAO는 인코더에 의해 송신된 룩업 테이블들에서의 값들에 기초하여, 디블록킹 필터의 적용 후에 각각의 샘플에 오프셋 값을 조건부로 가산함으로써 디코딩된 샘플들을 수정하는 프로세스이다. SAO 필터링은 신택스 요소 sao-type-idx에 의해 CTB 당 선택된 필터링 타입에 기초하여, 영역 기초로(on a region basis) 수행된다. sao-type-idx에 대한 0의 값은 SAO 필터가 CTB에 적용되지 않는다는 것을 표시하고, 값들 1 및 2는 대역 오프셋 및 에지 오프셋 필터링 타입들의 이용을 각각 시그널링한다. 1과 동일한 sao-type-idx에 의해 특정된 대역 오프셋 모드에서, 선택된 오프셋 값은 샘플 진폭에 직접적으로 의존한다. 이 모드에서, 전체 샘플 진폭 범위는 대역들이라고 불리는 32개의 세그먼트로 균일하게 분할되고, (32개의 대역 내에서 연속적인) 이들 대역들 중 4개에 속하는 샘플 값들은, 양(positive) 또는 음(negative)일 수 있는 대역 오프셋들로서 표기된 송신된 값들을 가산함으로써 수정된다. 4개의 연속 대역을 이용하는 주된 이유는, 밴딩 아티팩트들(banding artifacts)이 나타날 수 있는 평활 영역들에서, CTB의 샘플 진폭들이 소수의 대역들에만 집중되는 경향이 있다는 것이다. 그에 부가하여, 4개의 오프셋을 이용하는 설계 선택은 4개의 오프셋 값도 이용하는 에지 오프셋 동작 모드로 통합된다. 2와 동일한 sao-type-idx에 의해 특정된 에지 오프셋 모드에서, 0 내지 3의 값들을 갖는 신택스 요소 sao-eo-class는 수평, 수직 또는 2개의 대각선 그래디언트 방향들 중 하나가 CTB에서의 에지 오프셋 분류를 위해 이용되는지를 시그널링한다.
도 5는 본 개시내용의 일부 구현들에 따른, SAO에서 이용되는 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개의 이웃하는 샘플들을 지정한다. CTB 내의 각각의 샘플은 도 5에 도시된 바와 같이 일부 위치에 위치된 샘플 값 p를 이웃 위치들에 위치된 2개의 샘플의 값들 n0 및 n1과 비교함으로써 5개의 EdgeIdx 카테고리들 중 하나로 분류된다. 이 분류는 디코딩된 샘플 값들에 기초하여 각각의 샘플에 대해 행해지므로, EdgeIdx 분류를 위해 추가적인 시그널링이 요구되지 않는다. 샘플 위치에서의 EdgeIdx 카테고리에 따라, 1 내지 4의 EdgeIdx 카테고리들에 대해, 송신된 룩업 테이블로부터의 오프셋 값이 샘플 값에 더해진다. 오프셋 값들은 카테고리들 1 및 2에 대해 항상 양이고 카테고리들 3 및 4에 대해 음이다. 따라서, 필터는 일반적으로 에지 오프셋 모드에서 평활화 효과를 갖는다. 아래의 표 1은 SAO 에지 클래스들에서의 샘플 EdgeIdx 카테고리들을 예시한다.
Figure pct00001
표 1: SAO 에지 클래스들에서의 샘플 EdgeIdx 카테고리들
SAO 타입들 1 및 2에 대해, 총 4개의 진폭 오프셋 값들이 각각의 CTB에 대해 디코더에 송신된다. 타입 1의 경우, 부호(sign)도 인코딩된다. sao-type-idx 및 sao-eo-class와 같은 오프셋 값들 및 관련 신택스 요소는 - 전형적으로 레이트-왜곡 성능을 최적화하는 기준들을 이용하여 - 인코더에 의해 결정된다. SAO 파라미터들은 시그널링을 효율적으로 하기 위해 병합 플래그(merge flag)를 이용하여 좌측 또는 상부 CTB로부터 물려받도록 표시될 수 있다. 요약하면, SAO는 재구성된 신호의 추가적인 정제(refinement)를 허용하는 비선형 필터링 동작이고, 그것은 평활 영역들 및 에지들 근처 둘 다에서 신호 표현을 향상시킬 수 있다.
일부 실시예들에서, 교차-성분 정보를 도입함으로써 코딩 효율을 개선하거나 샘플 적응적 오프셋(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 샘플 오프셋 값들은 독립적으로 결정된다. 즉, 예를 들어, 현재 크로마 샘플 오프셋은 병치된 또는 이웃하는 루마 샘플들을 고려하지 않고, 현재 및 이웃하는 크로마 샘플 값들에 의해서만 결정된다. 그러나, 루마 샘플들은 크로마 샘플들보다 더 많은 원래 픽처 상세 정보를 보존하며, 이들은 현재 크로마 샘플 오프셋의 결정에 유익할 수 있다. 또한, 크로마 샘플들은 보통 RGB로부터 YCbCr로의 컬러 변환 후에, 또는 양자화 및 디블록킹 필터 후에 고주파수 상세들(high frequency details)을 잃기 때문에, 크로마 오프셋 결정을 위해 보존된 고주파수 상세를 갖는 루마 샘플들을 도입하는 것은 크로마 샘플 재구성에 유익할 수 있다. 따라서, 교차-성분 상관을 탐색함으로써, 예를 들어, 교차-성분 샘플 적응적 오프셋(Cross-Component Sample Adaptive Offset)(CCSAO)의 방법들 및 시스템들을 이용함으로써 추가적인 이득이 예상될 수 있다. 일부 실시예들에서, 여기서 상관은 교차-성분 샘플 값들을 포함할 뿐만 아니라, 예측/잔차 코딩 모드들, 변환 타입들, 및 교차-성분들로부터의 양자화/디블록킹/SAO/ALF 파라미터들과 같은 픽처/코딩 정보를 포함한다.
다른 예는 SAO에 대한 것이고, 루마 샘플 오프셋들은 루마 샘플들에 의해서만 결정된다. 그러나, 예를 들어, 동일한 대역 오프셋(band offset)(BO) 분류를 갖는 루마 샘플은 그의 병치된 및 이웃하는 크로마 샘플들에 의해 추가로 분류될 수 있고, 이는 보다 효과적인 분류로 이어질 수 있다. SAO 분류는 원래 픽처와 재구성된 픽처 사이의 샘플 차이를 보상하기 위한 지름길(shortcut)로서 취해질 수 있다. 따라서, 효과적인 분류가 요구된다.
도 6a는 본 개시내용의 일부 구현들에 따른, CCSAO의 시스템 및 프로세스가 크로마 샘플들에 적용되고 DBF Y를 입력으로서 이용하는 것을 도시하는 블록도이다. 루마 디블록킹 필터 후의 루마 샘플들(DBF Y)은 SAO Cb 및 SAO Cr 후의 크로마 Cb 및 Cr에 대한 추가적인 오프셋들을 결정하는 데 이용된다. 예를 들어, 현재 크로마 샘플(602)은 병치된(604) 및 이웃하는 (백색) 루마 샘플들(606)을 이용하여 먼저 분류되고, 대응하는 클래스의 대응하는 CCSAO 오프셋 값이 현재 크로마 샘플 값에 더해진다. 도 6b는 본 개시내용의 일부 구현들에 따른, 루마 및 크로마 샘플들에 적용되고 DBF Y/Cb/Cr을 입력으로서 이용하는 CCSAO의 시스템 및 프로세스를 도시하는 블록도이다. 도 6c는 본 개시내용의 일부 구현들에 따른, 독립적으로 작동할 수 있는 CCSAO의 시스템 및 프로세스를 도시하는 블록도이다. 도 6d는 본 개시내용의 일부 구현들에 따른, 동일한 코덱 스테이지에서 동일하거나 상이한 오프셋들로 재귀적으로(2회 또는 N회) 적용되거나 상이한 스테이지들에서 반복될 수 있는 CCSAO의 시스템 및 프로세스를 도시하는 블록도이다. 요약하면, 일부 실시예들에서, 현재 루마 샘플을 분류하기 위해, 현재 및 이웃하는 루마 샘플들의 정보, 병치된 및 이웃하는 크로마 샘플들(Cb 및 Cr)의 정보가 이용될 수 있다. 일부 실시예들에서, 현재 크로마 샘플(Cb 또는 Cr)을 분류하기 위해, 병치된 및 이웃하는 루마 샘플들, 병치된 및 이웃하는 교차-크로마 샘플들, 및 현재 및 이웃하는 크로마 샘플들이 이용될 수 있다. 일부 실시예들에서, CCSAO는 (1) DBF Y/Cb/Cr, (2) DBF 이전의 재구성된 이미지 Y/Cb/Cr, 또는 (3) SAO Y/Cb/Cr 이후, 또는 (4) ALF Y/Cb/Cr 이후 후에 캐스케이드될 수 있다.
일부 실시예들에서, CCSAO는 또한 다른 코딩 툴들, 예를 들어, AVS 표준에서의 ESAO, 또는 AV1 표준에서의 CDEF와 병렬로 적용될 수 있다. 도 6e는 본 개시내용의 일부 구현들에 따른, AVS 표준에서 ESAO와 병렬로 적용된 CCSAO의 시스템 및 프로세스를 도시하는 블록도이다.
도 6f는 본 개시내용의 일부 구현들에 따른, SAO 이후에 적용된 CCSAO의 시스템 및 프로세스를 도시하는 블록도이다. 일부 실시예들에서, 도 6f는 CCSAO의 위치가 SAO 이후, 즉, VVC 표준에서 교차-성분 적응적 루프 필터(Cross-Component Adaptive Loop Filter)(CCALF)의 위치일 수 있음을 도시한다. 도 6g는 본 개시내용의 일부 구현들에 따른, CCSAO의 시스템 및 프로세스가 CCALF 없이 독립적으로 작동할 수 있는 것을 도시하는 블록도이다. 일부 실시예들에서, SAO Y/Cb/Cr은, 예를 들어, AVS3 표준에서 ESAO에 의해 대체될 수 있다.
도 6h는 본 개시내용의 일부 구현들에 따른, CCALF와 병렬로 적용된 CCSAO의 시스템 및 프로세스를 도시하는 블록도이다. 일부 실시예들에서, 도 6h는 CCSAO가 CCALF와 병렬로 적용될 수 있는 것을 도시한다. 일부 실시예들에서, 도 6h에서, CCALF 및 CCSAO의 위치들이 스위칭될 수 있다. 일부 실시예들에서, 도 6a 내지 도 6h에서, 또는 본 개시내용 전체에 걸쳐, SAO Y/Cb/Cr 블록들은 (AVS3에서의) ESAO Y/Cb/Cr 또는 (AV1에서의) CDEF에 의해 대체될 수 있다. 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개의 클래스를 산출한다.
초기 Class = 0
이웃하는 8개의 루마 샘플들(Yi, i=1 내지 8)에 대한 루프
if Y0 > Yi Class += 1
else if Y0 < Yi Class -= 1
일부 실시예들에서, 전술한 분류 방법들은 조합될 수 있다. 예를 들어, SAO BO(32 대역 분류)와 결합된 비교 스코어를 이용하여 다이버시티를 증가시키며, 이는 총 17*32개의 클래스를 산출한다. 일부 실시예들에서, Cb 및 Cr은 복잡성을 감소시키거나 비트들을 절감하기 위해 동일한 클래스를 이용할 수 있다.
도 7은 본 개시내용의 일부 구현들에 따른, CCSAO를 이용한 샘플 프로세스를 도시하는 블록도이다. 구체적으로, 도 7은 CCSAO의 입력이 클래스 결정을 단순화하거나 유연성을 증가시키기 위해 수직 및 수평 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이다.
그리고 CCSAO 분류에 max Y0 및 max Yi를 공급한다.
도 8은 본 개시내용의 일부 구현들에 따른, CCSAO 프로세스가 수직 및 수평 DBF에 인터리빙되는 것을 도시하는 블록도이다. 일부 실시예들에서, 도 6, 도 7 및 도 8의 CCSAO 블록들은 선택적일 수 있다. 예를 들어, 도 6에서와 동일한 샘플 처리를 적용하는 제1 CCSAO_V에 대해 Y0_DBF_V 및 Yi_DBF_V를 이용하는 한편, CCSAO 입력으로서 DBF_V 루마 샘플들의 입력을 이용한다.
일부 실시예들에서, 구현되는 CCSAO 신택스가 아래의 표 2에 도시된다.
Figure pct00003
표 2 : CCSAO 신택스의 예
일부 실시예들에서, CCSAO Cb 및 Cr 오프셋 값들을 시그널링하기 위해, 하나의 추가적인 크로마 오프셋이 시그널링되는 경우, 다른 크로마 성분 오프셋은 플러스 또는 마이너스 부호, 또는 비트 오버헤드를 절약하기 위한 가중에 의해 도출될 수 있다. 예를 들어, h_Cb 및 h_Cr을 각각 CCSAO Cb 및 Cr의 오프셋이라고 하자. 명시적 시그널링 w - 여기서, w = +- |w|이고 제한된 |w| 후보들임 - 에 의해, h_Cr은 명시적 시그널링 h_Cr 자체 없이 h_Cb로부터 도출될 수 있다.
도 9는 본 개시내용의 일부 구현들에 따른, 교차-성분 상관을 이용하여 비디오 신호를 디코딩하는 예시적인 프로세스(900)를 도시하는 흐름도이다.
비디오 디코더(30)는 제1 성분 및 제2 성분을 포함하는 비디오 신호를 수신한다(910). 일부 실시예들에서, 제1 성분은 비디오 신호의 루마 성분이고, 제2 성분은 크로마 성분이다.
비디오 디코더(30)는 또한 제2 성분과 연관된 복수의 오프셋들을 수신한다(920).
이어서, 비디오 디코더(30)는 제1 성분의 특성 측정을 이용하여 제2 성분과 연관된 분류 카테고리를 획득한다(930). 예를 들어, 도 6에서, 현재 크로마 샘플(602)은 병치된(604) 및 이웃하는 (백색) 루마 샘플들(606)을 이용하여 먼저 분류되고, 대응하는 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 입력은 또한 DBF Y 이전일 수 있다.
일부 실시예들에서, 특성 측정은 제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_flag는 CCSAO가 시퀀스 레벨에서 인에이블되는지를 표시한다.
일부 실시예들에서, 비디오 신호를 수신하는 것(910)은 CCSAO를 이용하여 비디오 신호를 디코딩하는 방법이 슬라이스 레벨 상의 제2 성분에 대해 인에이블되는지를 표시하는 신택스 요소를 수신하는 것을 포함한다. 일부 실시예들에서, slice_cc_sao_cb_flag 또는 slice_cc_sao_cr_flag는 CCSAO가 Cb 또는 Cr에 대한 각자의 슬라이스에서 인에이블되는지를 표시한다.
일부 실시예들에서, 제2 성분과 연관된 복수의 오프셋들을 수신하는 것(920)은 상이한 코딩 트리 유닛(CTU)들에 대한 상이한 오프셋들을 수신하는 것을 포함한다. 일부 실시예들에서, CTU에 대해, cc_sao_offset_sign_flag는 오프셋에 대한 부호를 표시하고, cc_sao_offset_abs는 현재 CTU의 CCSAO Cb 및 Cr 오프셋 값들을 표시한다.
일부 실시예들에서, 제2 성분과 연관된 복수의 오프셋들을 수신하는 것(920)은 CTU의 수신된 오프셋들이 CTU의 이웃하는 CTU 중 하나의 오프셋과 동일한지를 표시하는 신택스 요소를 수신하는 것을 포함하고, 이웃하는 CTU는 좌측 또는 최상측 이웃하는 CTU 중 어느 하나이다. 예를 들어, cc_sao_merge_up_flag는 CCSAO 오프셋이 좌측 또는 상측 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를 시퀀스 비트 심도라고 하면, 현재 크로마 샘플에 대한 클래스 인덱스의 예는 다음과 같다:
일부 실시예들에서, 분류는, 예를 들어, 하기의 것들을 고려하여 반올림한다:
일부 band_num 및 bit_depth 예들은 아래 표 3에 열거된다. 표 3은 대역들의 수가 분류 예들 각각에 대해 상이할 때의 3개의 분류 예들을 보여준다.
표 3: 각각의 클래스 인덱스에 대한 예시적인 band_num 및 bit_depth
일부 실시예들에서, 분류자는 C0 분류에 대해 상이한 루마 샘플 위치를 이용한다. 도 10a는 본 개시내용의 일부 구현들에 따른, C0 분류에 대해 상이한 루마(또는 크로마) 샘플 위치를 이용하는, 예를 들어, C0 분류에 대해 Y0이 아니라 이웃하는 Y7을 이용하는 분류자를 도시하는 블록도이다.
일부 실시예들에서, 상이한 분류자들은 시퀀스 파라미터 세트(SPS)/적응 파라미터 세트(APS)/픽처 파라미터 세트(PPS)/픽처 헤더(PH)/슬라이스 헤더(SH)/영역/코딩 트리 유닛(CTU)/코딩 유닛(CU)/서브블록/샘플 레벨들에서 스위칭될 수 있다. 예를 들어, 도 10에서, 아래의 표 4에 도시된 바와 같이, POC0에 대해서는 Y0을 이용하지만 POC1에 대해서는 Y7을 이용한다.
Figure pct00008
표 4: 상이한 분류자들이 상이한 픽처들에 적용됨
일부 실시예들에서, 도 10b는 본 개시내용의 일부 구현들에 따른, 루마 후보들에 대한 상이한 형상들의 일부 예들을 도시한다. 예를 들어, 형상들에 제약이 적용될 수 있다. 일부 경우들에서, 도 10b의 (b) (c) (d)에 도시된 바와 같이, 루마 후보들의 총 수는 2의 거듭제곱이어야 한다. 일부 예들에서, 루마 후보들의 수는 도 10b의 (a) (c) (d) (e)에 도시된 바와 같이, (중심에서) 크로마 샘플에 대해 수평 및 수직 대칭이어야 한다. 일부 실시예들에서, 2의 거듭제곱 제약 및 대칭 제약이 또한 크로마 후보들에 대해 적용될 수 있다. 도 6b 및 도 6c의 U/V 부분은 대칭 제약에 대한 예를 도시한다. 일부 실시예들에서, 상이한 컬러 포맷은 상이한 분류자 "제약들"을 가질 수 있다. 예를 들어, 420 컬러 포맷은 도 6b 및 도 6c에 도시된 바와 같이 루마/크로마 후보 선택(3x3 형상으로부터 선택된 하나의 후보)을 이용하지만, 444 컬러 포맷은 루마 및 크로마 후보 선택에 대해 도 10b의 (f)를 이용하고, 422 컬러 포맷은 루마에 대해 도 10b의 (g)를 이용하고(2개의 크로마 샘플들이 4개의 루마 후보들을 공유함), 크로마 후보들에 대해 도 10b의 (f)를 이용한다.
일부 실시예들에서, C0 위치 및 C0 band_num은 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록/샘플 레벨들에서 조합 및 스위칭될 수 있다. 아래의 표 5에 도시된 바와 같이 상이한 조합들이 상이한 분류자들일 수 있다.
Figure pct00009
표 5: 상이한 분류자 및 대역 수 조합들이 상이한 픽처들에 적용됨
일부 실시예들에서, 병치된 루마 샘플 값(Y0)은 병치된 및 이웃하는 루마 샘플들을 가중함으로써 획득된 값(Yp)에 의해 대체된다. 도 12는 본 개시내용의 일부 구현들에 따른, 병치된 루마 샘플 값을 병치된 및 이웃하는 루마 샘플들을 가중함으로써 획득된 값으로 대체하는 것에 의한 예시적인 분류자들을 도시한다. 병치된 루마 샘플 값(Y0)은 이웃하는 루마 샘플들을 가중함으로써 획득된 위상 정정된 값(Yp)에 의해 대체될 수 있다. 상이한 Yp는 상이한 분류자일 수 있다.
일부 실시예들에서, 상이한 Yp는 상이한 크로마 포맷에 적용된다. 예를 들어, 도 12에서, (a)의 Yp는 420 크로마 포맷에 이용되고, (b)의 Yp는 422 크로마 포맷에 이용되고, Y0은 444 크로마 포맷에 이용된다.
일부 실시예들에서, 다른 분류자(C1)는 병치된 루마 샘플들(Y0) 및 이웃하는 8개의 루마 샘플들의 비교 스코어 [-8, 8]이며, 이는 아래에 나타낸 바와 같이 총 17개의 클래스를 산출한다.
초기 Class (C1) = 0, 이웃하는 8개의 루마 샘플들(Yi, i=1 내지 8)에 대한 루프
if Y0 > Yi Class += 1
else if Y0 < Yi Class -= 1
일부 실시예들에서, C1 예는 임계값 th가 0인 다음 함수와 동일하다.
x-y > th이면, f(x, y) = 1이고; x-y = th이면, f(x, y) = 0이고; x-y < th이면, f(x, y) = -1
여기서, Index2ClassTable은 룩업 테이블(LUT)이고, C는 현재 또는 병치된 샘플이고, P1 내지 P8은 이웃하는 샘플들이다.
일부 실시예들에서, C4 분류자와 유사하게, 하나 이상의 임계값은 차이를 분류(양자화)하는 것을 돕기 위해 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록/샘플 레벨들에서 시그널링되거나 미리 정의될 수 있다(예를 들어, LUT에 유지될 수 있음).
일부 실시예들에서, 변형(C1')은 비교 스코어[0, 8]만을 카운트하고, 이것은 8개의 클래스를 산출한다. (C1, C1')은 분류자 그룹이고, PH/SH 레벨 플래그는 C1과 C1' 사이에서 스위칭하도록 시그널링될 수 있다.
초기 Class (C1') = 0, 이웃하는 8개의 루마 샘플들(Yi, i=1 내지 8)에 대한 루프
if Y0 > Yi Class += 1
일부 실시예들에서, 변형(C1s)은 비교 스코어를 카운트하기 위해 M개의 이웃하는 샘플 중 이웃하는 N개를 선택적으로 이용한다. 비교 스코어를 카운트하기 위해 어느 이웃하는 샘플들이 선택되는지를 표시하기 위해 M-비트 비트마스크가 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록/샘플 레벨들에서 시그널링될 수 있다. 루마 분류자에 대한 예로서 도 6b를 이용하면: 8개의 이웃하는 루마 샘플들은 후보들이고, 8-비트 비트마스크(01111110)가 PH에서 시그널링되어, Y1 내지 Y6 6개의 샘플들이 선택됨을 나타내고, 따라서 비교 스코어는 [-6, 6]에 있고, 이는 13개의 오프셋을 산출한다. 선택적 분류자 C1s는 오프셋 시그널링 오버헤드와 분류 입도(classification granularity) 사이에서 트레이드오프하기 위한 더 많은 선택들을 인코더에 제공한다.
C1s와 유사하게, 변형(C1's)은 비교 스코어 [0, +N]만을 카운트하고 있고, 이전 비트마스크 01111110 예는 [0, 6]에서 비교 스코어를 제공하며, 이는 7개의 오프셋을 산출한다.
일부 실시예들에서, 상이한 분류자들이 조합되어 일반 분류자를 산출한다. 예를 들어, 상이한 픽처들(상이한 POC 값들)에 대해, 상이한 분류자들이 아래의 표 6-1에 도시된 바와 같이 적용된다.
Figure pct00011
표 6-1: 상이한 일반 분류자들이 상이한 픽처들에 적용됨
일부 실시예들에서, 다른 분류자 예(C3)는 표 6-2에 도시된 바와 같은 분류를 위해 비트마스크를 이용하고 있다. 분류자를 표시하기 위해 10-비트 비트마스크가 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록/샘플 레벨들에서 시그널링된다. 예를 들어, 비트마스크 11 1100 0000은 주어진 10-비트 루마 샘플 값에 대해, 최상위 비트(MSB): 4 비트만이 분류를 위해 이용되고, 총 16개의 클래스를 산출한다는 것을 의미한다. 다른 예시적인 비트마스크 10 0100 0001은 분류를 위해 3 비트만이 이용되고 총 8개의 클래스를 산출한다는 것을 의미한다.
일부 실시예들에서, 비트마스크 길이(N)는 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록/샘플 레벨들에서 고정되거나 스위칭될 수 있다. 예를 들어, 10-비트 시퀀스의 경우, 4-비트 비트마스크 1110이 픽처에서의 PH에서 시그널링되고, 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/서브블록/샘플 레벨들에서 조합 및 스위칭될 수 있다. 상이한 조합들은 상이한 분류자들일 수 있다.
일부 실시예에서, 대응하는 오프셋 수를 제한하기 위해 비트마스크 제한의 "1들의 최대 수(max number of 1s)"가 적용될 수 있다. 예를 들어, 비트마스크의 "1들의 최대 수"를 SPS에서 4로 제한하고, 이는 시퀀스에서의 최대 오프셋들을 16으로 산출한다. 상이한 POC에서의 비트마스크는 상이할 수 있지만, "1들의 최대 수"는 4를 초과하지 않아야 한다(전체 클래스는 16을 초과하지 않아야 한다). "1들의 최대 수" 값은 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록/샘플 레벨들에서 시그널링 및 스위칭될 수 있다.
Figure pct00012
표 6-2: 분류자 예는 분류를 위해 비트마스크를 이용한다(비트 마스크 위치는 밑줄 표시됨)
일부 실시예들에서, 도 11에 도시된 바와 같이, 다른 교차-성분 크로마 샘플들, 예를 들어, 크로마 샘플 1102 및 그의 이웃하는 샘플들은 또한, 예를 들어, 현재 크로마 샘플 1104에 대한 CCSAO 분류에 공급될 수 있다. 예를 들어, Cr 크로마 샘플들은 CCSAO Cb 분류에 공급될 수 있다. Cb 크로마 샘플들은 CCSAO Cr 분류에 공급될 수 있다. 교차-성분 크로마 샘플들의 분류자는 루마 교차-성분 분류자와 동일할 수 있거나, 본 개시내용에서 설명된 바와 같이 그 자신의 분류자를 가질 수 있다. 2개의 분류자들은 현재 크로마 샘플을 분류하기 위한 공동 분류자를 형성하도록 조합될 수 있다. 예를 들어, 교차-성분 루마 및 크로마 샘플들을 조합하는 공동 분류자는 아래의 표 6-3에 도시된 바와 같이 총 16개의 클래스를 산출한다.
Figure pct00013
표 6-3: 교차-성분 루마 및 크로마 샘플들을 조합하는 공동 분류자를 이용하는 분류자 예(비트 마스크 위치는 밑줄 표시됨)
전술한 모든 분류들(C0, C1, C1', C2, C3)은 조합될 수 있다. 예를 들어, 아래의 표 6-4를 참조한다.
Figure pct00014
표 6-4: 상이한 분류자들이 조합됨
일부 실시예들에서, 분류자 예(C2)는 병치된 및 이웃하는 루마 샘플들의 차이(Yn)를 이용한다. 도 12의 (c)는 비트 심도가 10일 때 [-1024, 1023]의 동적 범위를 갖는 Yn의 예를 도시한다. C2 band_num을 Yn 동적 범위의 균등 분할 대역들의 수라고 하자.
일부 실시예들에서, C0 및 C2는 조합되어 일반 분류자를 산출한다. 예를 들어, 상이한 픽처들(상이한 POC)에 대해, 상이한 분류자들이 아래의 표 7에 도시된 바와 같이 적용된다.
Figure pct00016
표 7: 상이한 일반 분류자들이 상이한 픽처들에 적용됨
일부 실시예들에서, 위에서 언급된 분류자들(C0, C1, C1', C2) 모두가 조합된다. 예를 들어, 상이한 픽처들(상이한 POC들)에 대해, 상이한 분류자들이 아래의 표 8-1에 도시된 바와 같이 적용된다.
Figure pct00017
표 8-1: 상이한 일반 분류자들이 상이한 픽처들에 적용됨
일부 실시예들에서, 분류자 예(C4)는 아래의 표 8-2에 도시된 바와 같이 분류를 위해 CCSAO 입력 값들과 보상될 샘플 값들의 차이를 이용한다. 예를 들어, CCSAO가 ALF 스테이지에서 적용되면, 현재 성분 ALF-전 및 ALF-후 샘플 값들의 차이가 분류를 위해 이용된다. 차이를 분류(양자화)하는 데 도움을 주기 위해 하나 이상의 임계값이 미리 정의되거나(예를 들어, 룩업 테이블(LUT)에 유지되거나) SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록/샘플 레벨들에서 시그널링될 수 있다. C4 분류자는 C0 Y/U/V bandNum과 조합되어 공동 분류자(예를 들어, 표 8-2에 도시된 바와 같은 POC1 예)를 형성할 수 있다.
Figure pct00018
표 8-2: 분류자 예는 분류를 위해 CCSAO 입력 값들과 보상될 샘플 값들의 차이를 이용함
일부 실시예들에서, 분류자 예(C5)는 상이한 코딩 모드가 재구성 이미지에서 상이한 왜곡 통계를 도입할 수 있으므로 서브블록 분류를 돕기 위해 "코딩 정보"를 이용한다. CCSAO 샘플은 그 샘플 이전 코딩 정보에 의해 분류되고, 코딩 정보의 조합은, 예를 들어, 아래의 표 8-3에 도시된 바와 같이 분류자를 형성할 수 있다. 이하의 도 30은 C5에 대한 코딩 정보의 상이한 스테이지들의 다른 예를 도시한다.
Figure pct00019
표 8-3: CCSAO 샘플은 그 샘플 이전 코딩 정보에 의해 분류되고, 코딩 정보의 조합은 분류자를 형성할 수 있음
일부 실시예들에서, 분류자 예(C6)는 분류를 위해 YUV 컬러 변환된 값을 이용한다. 예를 들어, 현재 Y 성분을 분류하기 위해, 1/1/1 병치된 또는 이웃하는 Y/U/V 샘플들이 RGB로 컬러 변환되도록 선택되고, C3 bandNum을 이용하여 R 값을 현재 Y 성분 분류자가 되도록 양자화한다.
일부 실시예들에서, 현재 성분 분류를 위해 현재 성분 정보만을 이용하는 다른 분류자 예들은 교차-성분 분류로서 이용될 수 있다. 예를 들어, 도 5 및 표 1에 도시된 바와 같이, 루마 샘플 정보 및 eo-클래스는 EdgeIdx를 도출하고, 현재 크로마 샘플을 분류하기 위해 이용된다. 교차-성분 분류자들로서 또한 이용될 수 있는 다른 "비-교차-성분" 분류자들은 에지 방향, 픽셀 강도, 픽셀 변동, 픽셀 분산, 라플라시안의 픽셀 합(pixel sum-of-Laplacian), 소벨 연산자(sobel operator), 컴파스 연산자(compass operator), 고역 통과 필터링된 값, 저역 통과 필터링된 값 등을 포함한다.
일부 실시예들에서, 복수의 분류자들이 동일한 POC에서 이용된다. 현재 프레임은 여러 영역들에 의해 분할되고, 각각의 영역은 동일한 분류자를 이용한다. 예를 들어, 3개의 상이한 분류자들이 POC0에서 이용되고, 어느 분류자(0, 1, 또는 2)가 이용되는지는 아래의 표 9에 도시된 바와 같이 CTU 레벨에서 시그널링된다.
Figure pct00020
표 9: 상이한 일반 분류자들이 동일한 픽처에서의 상이한 영역들에 적용됨
일부 실시예들에서, 복수의 분류자들(복수의 분류자들은 또한 대안적인 오프셋 세트들이라고 지칭될 수 있음)의 최대 수는 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록/샘플 레벨들에서 고정되거나 시그널링될 수 있다. 일 예에서, 복수의 분류자들의 고정된(미리 정의된) 최대 수는 4이다. 그 경우에, 4개의 상이한 분류자들이 POC0에서 이용되고, 어느 분류자(0, 1, 또는 2)가 이용되는지는 CTU 레벨에서 시그널링된다. TU(truncated-unary) 코드는 각각의 루마 또는 크로마 CTB에 대해 이용되는 분류자를 표시하기 위해 이용될 수 있다. 예를 들어, 아래의 표 10에 도시된 바와 같이, TU 코드가 0일 때: CCSAO가 적용되지 않고; TU 코드가 10일 때: 세트 0이 적용되고; TU 코드가 110일 때, 세트 1이 적용되고; TU 코드가 1110일 때: 세트 2가 적용되고; TU 코드가 1111일 때: 세트 3이 적용된다. 고정-길이 코드, 골롬-라이스 코드(golomb-rice code), 및 지수-골롬 코드(exponential-golomb code)는 또한 CTB에 대한 분류자(오프셋 세트 인덱스)를 표시하기 위해 이용될 수 있다. 3개의 상이한 분류자들이 POC1에서 이용된다.
Figure pct00021
표 10: TU(truncated-unary) 코드가 각각의 크로마 CTB에 대해 이용되는 분류자를 표시하기 위해 이용됨
Cb 및 Cr CTB 오프셋 세트 인덱스들의 예는 1280x720 시퀀스 POC0에 대해 주어진다(CTU 크기가 128x128인 경우, 프레임에서의 CTU들의 수는 10x6이다). POC0 Cb는 4개의 오프셋 세트를 이용하고, Cr은 1개의 오프셋 세트를 이용한다. 아래의 표 11-1에 도시된 바와 같이, 오프셋 세트 인덱스가 0일 때: CCSAO가 적용되지 않고; 오프셋 세트 인덱스가 1일 때: 세트 0이 적용되고; 오프셋 세트 인덱스가 2일 때: 세트 1이 적용되고; 오프셋 세트 인덱스가 3일 때: 세트 2가 적용되고; 오프셋 세트 인덱스가 4일 때: 세트 3이 적용된다. 타입은 선택된 병치된 루마 샘플(Yi)의 위치를 의미한다. 상이한 오프셋 세트들은 상이한 타입들, band_num 및 대응하는 오프셋들을 가질 수 있다.
표 11-1: Cb 및 Cr CTB 오프셋 세트 인덱스들의 예가 1280x720 시퀀스 POC0에 대해 주어진다(CTU 크기가 128x128인 경우 프레임에서의 CTU들의 수는 10x6이다)
일부 실시예들에서, 분류를 위해 병치된/현재 및 이웃하는 Y/U/V 샘플들을 공동으로 이용하는 예가 아래의 표 11-2에 열거된다(각각의 Y/U/V 성분에 대해 3 성분 공동 bandNum 분류). POC0에서, {2,4,1} 오프셋 세트들은 각각 {Y, U, V}에 이용된다. 각각의 오프셋 세트는 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록/샘플 레벨들에서 적응적으로 스위칭될 수 있다. 상이한 오프셋 세트들은 상이한 분류자들을 가질 수 있다. 예를 들어, 도 6b 및 도 6c에서 나타내는 후보 위치(candPos)로서, 현재 Y4 루마 샘플을 분류하기 위해, Y 세트0은 상이한 bandNum {Y, U, V} = {16,1,2}를 각각 갖는 {현재 Y4, 병치된 U4, 병치된 V4}를 후보들로서 선택한다. {candY, candU, candV}를 선택된 {Y, U, V} 후보들의 샘플 값들로서 이용하면, 전체 클래스의 수는 32이고, 클래스 인덱스 도출은 다음과 같이 도시될 수 있다:
Figure pct00024
표 11-2: 분류를 위해 병치된/현재 및 이웃하는 Y/U/V 샘플들을 공동으로 이용하는 예
일부 실시예들에서, 예를 들어, 아래의 표 11-3에 도시된 바와 같이, 현재 Y/U/V 샘플 분류에 대해 병치된 및 이웃하는 Y/U/V 샘플들을 공동으로 이용(각각의 Y/U/V 성분에 대해 3개의 성분 공동 edgeNum(C1s) 및 bandNum 분류)하는 예가 열거된다. Edge CandPos는 C1s 분류자에 이용되는 중심 위치이고, 에지 bitMask는 C1s 이웃하는 샘플들 활성화 표시자이고, edgeNum은 C1s 클래스들의 대응하는 수이다. 이 예에서, C1s는 Y 분류자에만 적용되고(그래서 edgeNum은 edgeNumY와 동일함), 에지 candPos는 항상 Y4(현재/병치된 샘플 위치)이다. 그러나, C1s는 이웃하는 샘플 위치로서 에지 candPos를 갖는 Y/U/V 분류자들에 적용될 수 있다.
diff가 Y개의 C1s의 비교 점수를 나타내는 경우, classIdx 도출은 다음과 같다.
Figure pct00026
표 11-3(부분 1): 분류를 위해 병치된/현재 및 이웃하는 Y/U/V 샘플들을 공동으로 이용하는 예
Figure pct00027
표 11-3(부분 2): 분류를 위해 병치된/현재 및 이웃하는 Y/U/V 샘플들을 공동으로 이용하는 예
Figure pct00028
표 11-3(부분 3): 분류를 위해 병치된/현재 및 이웃하는 Y/U/V 샘플들을 공동으로 이용하는 예
일부 실시예들에서, 최대 band_num(bandNumY, bandNumU, 또는 bandNumV)은 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록/샘플 레벨들에서 고정되거나 시그널링될 수 있다. 예를 들어, 디코더에서 최대 band_num=16을 고정하고, 각각의 프레임에 대해, 프레임에서 C0 band_num을 표시하기 위해 4 비트가 시그널링된다. 일부 다른 최대 band_num 예들이 아래 표 12에 열거된다.
Figure pct00029
표 12: 최대 band_num 및 band_num 비트 예들
일부 실시예들에서, 각각의 세트(또는 추가된 모든 세트)에 대한 클래스들 또는 오프셋들의 최대 수(다수의 분류자들을 공동으로 이용하는 조합들, 예를 들어, C1s edgeNum * C1 bandNumY * bandNumU * bandNumV)는 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록/샘플 레벨들에서 고정되거나 시그널링될 수 있다. 예를 들어, 최대(max)는 추가된 모든 세트들에 대해 고정되어 class_num=256*4이고, 인코더 적합성 체크(encoder conformance check) 또는 디코더 규범적 체크(decoder normative check)가 제약을 체크하는데 이용될 수 있다.
일부 실시예들에서, C0 분류에 대해 제한이 적용될 수 있고, 예를 들어, band_num(bandNumY, bandNumU, 또는 bandNumV)을 단지 2의 거듭제곱 값으로 제한한다. band_num을 명시적으로 시그널링하는 대신에, 신택스 band_num_shift가 시그널링된다. 디코더는 곱셈을 피하기 위해 시프트 동작을 이용할 수 있다. 상이한 band_num_shift가 상이한 성분에 대해 이용될 수 있다.
다른 동작 예는 에러를 감소시키기 위해 반올림을 고려하는 것이다.
예를 들어, band_num_max(Y, U, 또는 V)가 16이면, 가능한 band_num_shift 후보들은 표 13에 도시된 바와 같이, band_num = 1, 2, 4, 8, 16에 대응하는 0, 1, 2, 3, 4이다.
Figure pct00032
표 13: Band_num 및 대응하는 band_num_shift 후보들
일부 실시예들에서, Cb 및 Cr에 적용되는 분류자들은 상이하다. 모든 클래스들에 대한 Cb 및 Cr 오프셋들은 별도로 시그널링될 수 있다. 예를 들어, 상이한 시그널링된 오프셋들은 아래의 표 14에 도시된 바와 같이 상이한 크로마 성분들에 적용된다.
Figure pct00033
표 14: 모든 클래스들에 대한 Cb 및 Cr 오프셋들이 별도로 시그널링될 수 있음
일부 실시예들에서, 최대 오프셋 값은 시퀀스 파라미터 세트(SPS)/적응 파라미터 세트(APS)/픽처 파라미터 세트(PPS)/픽처 헤더(PH)/슬라이스 헤더(SH)/영역/CTU/CU/서브블록/샘플 레벨들에서 고정되거나 시그널링된다. 예를 들어, 최대 오프셋은 [-15, 15] 사이이다. 상이한 성분은 상이한 최대 오프셋 값을 가질 수 있다.
일부 실시예들에서, 오프셋 시그널링은 DPCM(Differential pulse-code modulation)을 이용할 수 있다. 예를 들어, 오프셋들 {3, 3, 2, 1, -1}은 {3, 0, -1, -1, -2}로서 시그널링될 수 있다.
일부 실시예들에서, 오프셋들은 다음 픽처/슬라이스 재이용을 위해 APS 또는 메모리 버퍼에 저장될 수 있다. 현재 픽처에 대해 어느 저장된 이전 프레임 오프셋들이 이용되는지를 표시하기 위해 인덱스가 시그널링될 수 있다.
일부 실시예들에서, Cb 및 Cr의 분류자들은 동일하다. 모든 클래스들에 대한 Cb 및 Cr 오프셋들은, 예를 들어, 아래의 표 15에 도시된 바와 같이 공동으로 시그널링될 수 있다.
Figure pct00034
표 15: 모든 클래스들에 대한 Cb 및 Cr 오프셋들은 공동으로 시그널링될 수 있음
일부 실시예들에서, Cb 및 Cr의 분류자들은 동일할 수 있다. 모든 클래스들에 대한 Cb 및 Cr 오프셋들은, 예를 들어, 아래의 표 16에 도시된 바와 같이, 부호 플래그 차이와 공동으로 시그널링될 수 있다. 표 16에 따르면, Cb 오프셋들이 (3, 3, 2, -1)일 때, 도출된 Cr 오프셋들은 (-3, -3, -2, 1)이다.
Figure pct00035
표 16: 모든 클래스들에 대한 Cb 및 Cr 오프셋들은 부호 플래그 차이와 공동으로 시그널링될 수 있음
일부 실시예들에서, 부호 플래그는, 예를 들어, 아래의 표 17에 도시된 바와 같이, 각각의 클래스에 대해 시그널링될 수 있다. 표 17에 따르면, Cb 오프셋들이 (3, 3, 2, -1)일 때, 도출된 Cr 오프셋들은 각자의 부호 플래그에 따라 (-3, 3, 2, 1)이다.
Figure pct00036
표 17: 모든 클래스들에 대한 Cb 및 Cr 오프셋들은 각각의 클래스에 대해 시그널링된 부호 플래그와 공동으로 시그널링될 수 있음
일부 실시예들에서, Cb 및 Cr의 분류자들은 동일할 수 있다. 모든 클래스들에 대한 Cb 및 Cr 오프셋들은, 예를 들어, 아래의 표 18에 도시된 바와 같이, 가중치 차이와 공동으로 시그널링될 수 있다. 가중치(w)는 제한된 표, 예를 들어, +-1/4, +-1/2, 0, +-1, +-2, +-4 ... 등에서 선택될 수 있으며, 여기서 |w|는 단지 2의 거듭제곱 값들만을 포함한다. 표 18에 따르면, Cb 오프셋들이 (3, 3, 2, -1)일 때, 도출된 Cr 오프셋들은 각자의 부호 플래그에 따라 (-6, -6, -4, 2)이다.
Figure pct00037
표 18: 모든 클래스들에 대한 Cb 및 Cr 오프셋들은 가중치 차이와 공동으로 시그널링될 수 있음
일부 실시예들에서, 가중치는, 예를 들어, 아래의 표 19에 도시된 바와 같이, 각각의 클래스에 대해 시그널링될 수 있다. 표 19에 따르면, Cb 오프셋들이 (3, 3, 2, -1)일 때, 도출된 Cr 오프셋들은 각자의 부호 플래그에 따라 (-6, 12, 0, -1)이다.
Figure pct00038
표 19: 모든 클래스들에 대한 Cb 및 Cr 오프셋들은 각각의 클래스에 대해 시그널링된 가중치와 공동으로 시그널링될 수 있음
일부 실시예들에서, 복수의 분류자들이 동일한 POC에서 이용되는 경우, 상이한 오프셋 세트들은 개별적으로 또는 공동으로 시그널링된다.
일부 실시예들에서, 이전에 디코딩된 오프셋들은 미래의 프레임들의 이용을 위하여 저장될 수 있다. 오프셋 시그널링 오버헤드를 감소시키기 위해, 현재 프레임에 대해 어느 이전에 디코딩된 오프셋 세트가 이용되는지를 표시하기 위해 인덱스가 시그널링될 수 있다. 예를 들어, POC0 오프셋들은 아래의 표 20에 도시된 바와 같이 시그널링 오프셋들 세트 idx=0으로 POC2에 의해 재이용될 수 있다.
Figure pct00039
표 20: 현재 프레임에 대해 어느 이전에 디코딩된 오프셋 세트가 이용되는지를 표시하기 위해 인덱스가 시그널링될 수 있음
일부 실시예들에서, Cb 및 Cr에 대한 재이용 오프셋 세트 idx는, 예를 들어, 아래의 표 21에 도시된 바와 같이 상이할 수 있다.
Figure pct00040
표 21: 현재 프레임에 대해 어느 이전에 디코딩된 오프셋 세트가 이용되는지를 표시하기 위해 인덱스가 시그널링될 수 있고, 인덱스는 Cb 및 Cr 성분들에 대해 상이할 수 있음
일부 실시예들에서, 시그널링 오버헤드를 감소시키기 위해, 오프셋 시그널링은 시작 및 길이를 포함하는 추가적인 신택스를 이용할 수 있다. 예를 들어, band_num=256일 때, band_idx=37~44의 오프셋들만이 시그널링된다. 아래의 표 22-1의 예에서, 시작 및 길이의 신택스 둘 다는 band_num 비트들과 매칭되어야 하는 8 비트 고정 길이 코딩된다.
Figure pct00041
표 22-1: 오프셋 시그널링은 시작 및 길이를 포함하는 추가적인 신택스를 이용함
일부 실시예들에서, CCSAO가 모든 YUV 3 성분들에 적용되는 경우, 병치된 및 이웃하는 YUV 샘플들은 분류를 위해 공동으로 이용될 수 있고, Cb/Cr에 대한 모든 전술한 오프셋 시그널링 방법은 Y/Cb/Cr로 확장될 수 있다. 일부 실시예들에서, 상이한 성분 오프셋 세트는 별도로(각각의 성분이 그 자신의 저장된 세트들을 가짐) 또는 공동으로(각각의 성분이 동일한 저장된 것을 공유/재이용함) 저장되고 이용될 수 있다. 별도의 세트 예가 아래의 표 22-2에 도시된다.
Figure pct00042
표 22-2: 상이한 성분 오프셋 세트가 별도로(각각의 성분이 그 자신의 저장된 세트들을 가짐) 또는 공동으로(각각의 성분이 동일한 저장된 것을 공유/재이용함) 저장되고 이용될 수 있는 것을 도시하는 예
일부 실시예들에서, 시퀀스 비트 심도가 10(또는 특정 비트 심도)보다 높으면, 오프셋은 시그널링 전에 양자화될 수 있다. 디코더 측에서, 디코딩된 오프셋은 아래의 표 23에 도시된 바와 같이 그것을 적용하기 전에 역 양자화된다. 예를 들어, 12-비트 시퀀스의 경우, 디코딩된 오프셋들은 2만큼 좌측으로 시프트(역 양자화)된다.
Figure pct00043
표 23: 디코딩된 오프셋은 그것을 적용하기 전에 역 양자화됨
일부 실시예들에서, 오프셋은 CcSaoOffsetVal=(1 - 2 * ccsao_offset_sign_flag) * (ccsao_offset_abs << (BitDepth - Min(10, BitDepth)))로서 계산될 수 있다.
일부 실시예들에서, 샘플 처리가 아래에 설명된다. R(x, y)를 CCSAO 이전의 입력 루마 또는 크로마 샘플 값이라고 하고, R'(x, y)를 CCSAO 이후의 출력 루마 또는 크로마 샘플 값이라고 하자:
오프셋 = ccsao_offset [R(x, y)의 class_index]
R'(x, y) = Clip3( 0, (1 << bit_depth) - 1, R(x, y) + 오프셋 )
상기의 수학식들에 따르면, 각각의 루마 또는 크로마 샘플 값 R(x, y)은 현재 픽처 및/또는 현재 오프셋 세트 idx의 표시된 분류자를 이용하여 분류된다. 도출된 클래스 인덱스의 대응하는 오프셋은 각각의 루마 또는 크로마 샘플 값 R(x, y)에 더해진다. 클립 함수 Clip 3은 비트 심도 동적 범위, 예를 들어, 범위 0 내지 (1 << bit_depth) - 1 내에서 출력 루마 또는 크로마 샘플 값 R'(x, y)을 만들기 위해 (R(x, y) + 오프셋)에 적용된다.
일부 실시예들에서, 경계 처리가 아래에 설명된다. 분류를 위해 이용되는 병치된 및 이웃하는 루마(크로마) 샘플들 중 임의의 것이 현재 픽처 밖에 있으면, CCSAO는 현재 크로마(루마) 샘플에 적용되지 않는다. 도 13a는 본 개시내용의 일부 구현들에 따른, 분류를 위해 이용되는 병치된 및 이웃하는 루마(크로마) 샘플들 중 임의의 것이 현재 픽처 밖에 있는 경우 CCSAO가 현재 크로마(루마) 샘플에 적용되지 않는 것을 예시하는 블록도이다. 예를 들어, 도 13a의 (a)에서, 분류자가 이용되면, CCSAO는 현재 픽처의 좌측 1 열 크로마 성분들에 적용되지 않는다. 예를 들어, C1'이 이용되는 경우, CCSAO는 도 13a의 (b)에 도시된 바와 같이 현재 픽처의 좌측 1 열 및 최상측 1 행 크로마 성분들에 적용되지 않는다.
도 13b는 본 개시내용의 일부 구현들에 따른, 분류를 위해 이용되는 병치된 및 이웃하는 루마 또는 크로마 샘플들 중 임의의 것이 현재 픽처 밖에 있는 경우 CCSAO이 현재 루마 또는 크로마 샘플에 적용되는 것을 도시하는 블록도이다. 일부 실시예들에서, 변형은, 분류를 위해 이용되는 병치된 및 이웃하는 루마 또는 크로마 샘플들 중 임의의 것이 현재 픽처 밖에 있는 경우, 도 13b(a)에 도시된 바와 같이 누락된 샘플들이 반복적으로 이용되거나, 또는 도 13b(b)에 도시된 바와 같이 분류를 위한 샘플들을 생성하기 위해 누락된 샘플들이 미러 패딩되고, CCSAO가 현재 루마 또는 크로마 샘플들에 적용될 수 있는 것이다. 일부 실시예들에서, 본 명세서에 개시된 디스에이블된/반복적/미러 픽처 경계 처리 방법은 또한 분류를 위해 이용되는 병치된 및 이웃하는 루마(크로마) 샘플들 중 임의의 것이 현재 서브픽처/슬라이스/타일/패치/CTU/360 가상 경계 밖에 있는 경우 서브픽처/슬라이스/타일/CTU/360 가상 경계에 적용될 수 있다.
예를 들어, 픽처는 하나 이상의 타일 행 및 하나 이상의 타일 열로 분할된다. 타일은 픽처의 직사각형 영역을 커버하는 CTU들의 시퀀스이다.
슬라이스는 픽처의 타일 내의 정수 개의 완전한 타일들 또는 정수 개의 연속적인 완전한 CTU 행들로 구성된다.
서브픽처는 픽처의 직사각형 영역을 집합적으로 커버하는 하나 이상의 슬라이스를 포함한다.
일부 실시예들에서, 360도 비디오는 구(sphere) 상에서 캡처되고, 본질적으로 "경계"를 갖지 않으며, 투영된 도메인에서의 참조 픽처의 경계들 밖에 있는 참조 샘플들은 항상 구 도메인에서의 이웃하는 샘플들로부터 획득될 수 있다. 복수의 페이스들(faces)로 구성된 투영 포맷들에 대해, 어떤 종류의 콤팩트한 프레임 패킹 배열이 이용되더라도, 프레임 패킹된 픽처에서 2개 이상의 인접한 페이스들 사이에 불연속들이 나타난다. VVC에서, 인-루프 필터링 동작들이 디스에이블되는 수직 및/또는 수평 가상 경계들이 도입되고, 그러한 경계들의 위치들은 SPS 또는 픽처 헤더에서 시그널링된다. 연속적인 페이스들의 각각의 세트에 대해 하나씩, 2개의 타일을 이용하는 것과 비교하여, 360개의 가상 경계의 이용은 페이스 크기가 CTU 크기의 배수일 것을 요구하지 않기 때문에 더 유연하다. 일부 실시예들에서, 수직 360 가상 경계들의 최대 수는 3이고, 수평 360 가상 경계들의 최대 수는 또한 3이다. 일부 실시예들에서, 2개의 가상 경계들 사이의 거리는 CTU 크기 이상이고, 가상 경계 입도는 8 루마 샘플들, 예를 들어, 8x8 샘플 그리드이다.
도 14는 본 개시내용의 일부 구현들에 따른, 분류를 위해 이용되는 대응하는 선택된 병치된 또는 이웃하는 루마 샘플이 가상 경계에 의해 정의되는 가상 공간 밖에 있는 경우, CCSAO가 현재 크로마 샘플에 적용되지 않는 것을 도시하는 블록도이다. 일부 실시예들에서, 가상 경계(VB)는 픽처 프레임 내의 공간을 분리하는 가상 라인이다. 일부 실시예들에서, 가상 경계(VB)가 현재 프레임에 적용되면, CCSAO는 가상 경계에 의해 정의되는 가상 공간 밖의 선택된 대응하는 루마 위치를 갖는 크로마 샘플들에 적용되지 않는다. 도 14는 9개의 루마 위치 후보를 갖는 C0 분류자에 대한 가상 경계를 갖는 예를 도시한다. 각각의 CTU에 대해, CCSAO는 대응하는 선택된 루마 위치가 가상 경계에 의해 둘러싸인 가상 공간 밖에 있는 크로마 샘플들에 적용되지 않는다. 예를 들어, 도 14의 (a)에서, 선택된 Y7 루마 샘플 위치가 프레임의 최하부 측으로부터 4 픽셀 라인들에 위치하는 수평 가상 경계(1406)의 다른 측에 있을 때 CCSAO은 크로마 샘플(1402)에 적용되지 않는다. 예를 들어, 도 14의 (b)에서, CCSAO는 선택된 Y5 루마 샘플 위치가 프레임의 우측으로부터 y 픽셀 라인들에 위치하는 수직 가상 경계(1408)의 다른 측에 위치할 때 크로마 샘플(1404)에 적용되지 않는다.
도 15는 본 개시내용의 일부 구현들에 따른, 가상 경계 밖에 있는 루마 샘플들에 대해 반복적 또는 미러 패딩이 적용될 수 있는 것을 도시한다. 도 15의 (a)는 반복적 패딩의 예를 도시한다. 원래의 Y7이 VB(1502)의 최하부 측에 위치하는 분류자로 선택되는 경우, 원래의 Y7 루마 샘플 값 대신에, Y4 루마 샘플 값이 분류를 위해 이용된다(Y7 위치에 복사됨). 도 15의 (b)는 미러 패딩의 예를 도시한다. Y7이 VB(1504)의 최하부 측에 위치하는 분류자로 선택되는 경우, 원래의 Y7 루마 샘플 값 대신에, Y0 루마 샘플에 대해 Y7 값에 대칭인 Y1 루마 샘플 값이 분류를 위해 이용된다. 패딩 방법들은 CCSAO를 적용하기 위해 더 많은 크로마 샘플들 가능성을 제공하므로 더 많은 코딩 이득이 달성될 수 있다.
일부 실시예들에서, CCSAO 요구 라인 버퍼를 감소시키고 경계 처리 조건 체크를 단순화하기 위해 제한이 적용될 수 있다. 도 16은 추가적인 1개의 루마 라인 버퍼, 즉, 현재 VB(1602) 위의 라인 -5의 전체 라인 루마 샘플들이 9개의 병치된 이웃하는 루마 샘플들 모두가 본 개시내용의 일부 구현들에 따른 분류를 위해 이용되는 경우 요구될 수 있음을 도시한다. 도 10b의 (a)는 분류를 위해 6개의 루마 후보들만을 이용하는 예를 도시하며, 이는 라인 버퍼를 감소시키고 도 13a 및 도 13b에서 어떠한 추가적인 경계 체크도 필요로 하지 않는다.
일부 실시예들에서, CCSAO 분류를 위해 루마 샘플들을 이용하는 것은 루마 라인 버퍼를 증가시킬 수 있고, 따라서 디코더 하드웨어 구현 비용을 증가시킬 수 있다. 도 17은 본 개시내용의 일부 구현들에 따른, VB(1702)와 교차하는 9개의 루마 후보 CCSAO가 2개의 추가적인 루마 라인 버퍼들을 증가시킬 수 있는 AVS에서의 예시를 도시한다. 가상 경계(VB)(1702) 위의 루마 및 크로마 샘플들에 대해, DBF/SAO/ALF는 현재 CTU 행에서 처리된다. VB(1702) 아래의 루마 및 크로마 샘플들에 대해, DBF/SAO/ALF는 다음 CTU 행에서 처리된다. AVS 디코더 하드웨어 설계에서, 루마 라인 -4 내지 -1 프리(pre) DBF 샘플들, 라인 -5 프리 SAO 샘플들, 및 크로마 라인 -3 내지 -1 프리 DBF 샘플들, 라인 -4 프리 SAO 샘플들은 다음 CTU 행 DBF/SAO/ALF 처리를 위한 라인 버퍼들로서 저장된다. 다음 CTU 행을 처리할 때, 라인 버퍼에 없는 루마 및 크로마 샘플들은 이용가능하지 않다. 그러나, 예를 들어, 크로마 라인 -3(b) 위치에서, 크로마 샘플은 다음 CTU 행에서 처리되지만, CCSAO는 분류를 위해 프리 SAO 루마 샘플 라인들 -7, -6, 및 -5를 요구한다. 프리 SAO 루마 샘플 라인들 -7, -6은 라인 버퍼에 있지 않으므로, 이들은 이용가능하지 않다. 그리고, 프리 SAO 루마 샘플들 라인 -7 및 -6을 라인 버퍼에 추가하는 것은 디코더 하드웨어 구현 비용을 증가시킬 것이다. 일부 예들에서, 루마 VB(라인 -4) 및 크로마 VB(라인 -3)는 상이할 수 있다(정렬되지 않음).
도 17과 유사하게, 도 18a는 본 개시내용의 일부 구현들에 따른, VB(1802)와 교차하는 9개의 루마 후보 CCSAO가 1개의 추가적인 루마 라인 버퍼를 증가시킬 수 있는 VVC에서의 예시를 도시한다. VB는 상이한 표준에서 상이할 수 있다. VVC에서, 루마 VB는 라인 -4이고 크로마 VB는 라인 -2이므로, 9개의 후보 CCSAO는 1개의 루마 라인 버퍼를 증가시킬 수 있다.
일부 실시예들에서, 제1 솔루션에서, 크로마 샘플의 루마 후보들 중 임의의 것이 (현재 크로마 샘플 VB 밖에 있는) VB에 걸쳐 있는 경우 크로마 샘플에 대해 CCSAO가 디스에이블된다. 도 19a 내지 도 19c는 AVS 및 VVC에서, 본 개시내용의 일부 구현들에 따른, 크로마 샘플의 루마 후보들 중 임의의 것이 (현재 크로마 샘플(VB) 밖에 있는) VB(1902)에 걸쳐 있는 경우 크로마 샘플에 대해 CCSAO가 디스에이블되는 것을 도시한다. 도 14는 또한 이 구현의 일부 예들을 도시한다.
일부 실시예들에서, 제2 솔루션에서, 반복적 패딩은 "교차 VB" 루마 후보들에 대해, VB의 다른 측 상에 그리고 그에 가까운 루마 라인, 예를 들어, 루마 라인 -4로부터의 CCSAO에 대해 이용된다. 일부 실시예들에서, VB 아래의 가장 가까운 이웃 루마로부터의 반복적 패딩은 "교차 VB" 크로마 후보들에 대해 구현된다. 도 20a 내지 도 20c는 AVS 및 VVC에서, 본 개시내용의 일부 구현들에 따른, 크로마 샘플의 루마 후보들 중 임의의 것이 (현재 크로마 샘플(VB) 밖에 있는) VB(2002)에 걸쳐 있는 경우 크로마 샘플에 대한 반복적 패딩을 이용하여 CCSAO가 인에이블되는 것을 도시한다. 도 14의 (a)는 또한 이 구현의 일부 예들을 도시한다.
일부 실시예들에서, 제3 솔루션에서, "교차 VB" 루마 후보들에 대해 루마 VB 아래로부터의 CCSAO에 대해 미러 패딩이 이용된다. 도 21a 내지 도 21c는 AVS 및 VVC에서, 본 개시내용의 일부 구현들에 따른, 크로마 샘플의 루마 후보들 중 임의의 것이 (현재 크로마 샘플(VB) 밖에 있는) VB(2102)에 걸쳐 있는 경우 크로마 샘플에 대한 미러 패딩을 이용하여 CCSAO가 인에이블되는 것을 도시한다. 도 14의 (b) 및 도 13b의 (b)는 또한 이 구현의 일부 예들을 도시한다. 일부 실시예들에서, 제4 솔루션에서, "양면 대칭 패딩"은 CCSAO를 적용하기 위해 이용된다. 도 22a 및 도 22b는 본 개시내용의 일부 구현들에 따른, 상이한 CCSAO 형상들(예를 들어, 9개의 루마 후보(도 22a) 및 8개의 루마 후보(도 22b))의 일부 예들에 대해 양면 대칭 패딩을 이용하여 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를 이용하여 패딩된다.
도 18b는 본 개시내용의 일부 구현들에 따른, 병치된 또는 이웃하는 크로마 샘플들이 현재 루마 샘플들을 분류하기 위해 이용되고, 선택된 크로마 후보가 VB에 걸쳐 있을 수 있고 추가적인 크로마 라인 버퍼를 필요로 할 때의 예시를 도시한다. 전술한 바와 유사한 솔루션들 1 내지 4가 문제를 처리하기 위해 적용될 수 있다.
솔루션 1은 그 크로마 후보들 중 임의의 것이 VB에 걸쳐 있을 수 있을 때 루마 샘플에 대한 CCSAO를 디스에이블하는 것이다.
솔루션 2는 "교차 VB" 크로마 후보들에 대해 VB 아래의 크로마 최근접 이웃으로부터의 반복 패딩을 이용하는 것이다.
솔루션 3은 "교차 VB" 크로마 후보들에 대해 크로마 VB 아래로부터의 미러 패딩을 이용하는 것이다.
솔루션 4는 "양면 대칭 패딩"을 이용하는 것이다. CCSAO 병치된 크로마 샘플에 중심을 둔 후보 세트에 대해, 후보 세트의 일측이 VB 밖에 있다면, 양면 대칭 패딩이 양측에 대해 적용된다.
패딩 방법들은 CCSAO를 적용하기 위해 더 많은 루마 또는 크로마 샘플들 가능성을 제공하므로 더 많은 코딩 이득이 달성될 수 있다.
일부 실시예들에서, 최하부 픽처(또는 슬라이스, 타일, 브릭(brick)) 경계 CTU 행에서, VB 아래의 샘플들은 현재 CTU 행에서 처리되므로, 상기의 특수 처리(솔루션 1, 2, 3, 4)는 최하부 픽처(또는 슬라이스, 타일, 브릭) 경계 CTU 행에서 적용되지 않는다. 예를 들어, 1920x1080의 프레임은 128x128의 CTU들에 의해 분할된다. 프레임은 15x9 CTU들(반올림)을 포함한다. 최하부 CTU 행은 15번째 CTU 행이다. 디코딩 프로세스는 CTU 행마다, 그리고 각각의 CTU 행에 대해 CTU 마다이다. 디블록킹은 현재 및 다음 CTU 행 사이의 수평 CTU 경계들을 따라 적용될 필요가 있다. CTB VB는 각각의 CTU 행에 대해 적용되는데, 그 이유는 하나의 CTU 내부에서, 최하부 4/2 루마/크로마 라인에서, DBF 샘플들(VVC 경우)이 다음 CTU 행에서 처리되고 현재 CTU 행에서 CCSAO에 대해 이용가능하지 않기 때문이다. 그러나, 픽처 프레임의 최하부 CTU 행에서, 최하부 4/2 루마/크로마 라인 DBF 샘플들은 현재 CTU 행에서 이용가능한데, 왜냐하면 좌측으로 다음 CTU 행이 없고 이들은 현재 CTU 행에서 DBF 처리되기 때문이다.
일부 실시예들에서, 도 13 내지 도 22에 디스플레이된 VB는 서브픽처/슬라이스/타일/패치/CTU/360 가상 경계의 경계에 의해 대체될 수 있다. 일부 실시예들에서, 도 13 내지 도 22에서의 크로마 및 루마 샘플들의 위치들은 스위칭될 수 있다. 일부 실시예들에서, 도 13 내지 도 22에서의 크로마 및 루마 샘플들의 위치들은 제1 크로마 샘플 및 제2 크로마 샘플의 위치들에 의해 대체될 수 있다. 일부 실시예들에서, CTU 내부의 ALF VB는 공통적으로 수평일 수 있다. 일부 실시예들에서, 서브픽처/슬라이스/타일/패치/CTU/360 가상 경계의 경계는 수평 또는 수직일 수 있다.
일부 실시예들에서, CCSAO 요구 라인 버퍼를 감소시키고, 도 16에 설명된 바와 같이 경계 처리 조건 체크를 단순화하기 위해 제한이 적용될 수 있다. 도 23은 본 개시내용의 일부 구현들에 따른, 분류를 위해 제한된 수의 루마 후보들을 이용하는 것의 제한들을 도시한다. 도 23의 (a)는 분류를 위해 6개의 루마 후보만을 이용하는 제한을 도시한다. 도 23의 (b)는 분류를 위해 4개의 루마 후보만을 이용하는 제한을 도시한다.
일부 실시예들에서, 적용된 영역이 구현된다. CCSAO 적용 영역 유닛은 CTB 기반일 수 있다. 즉, 하나의 CTB에서, 온/오프 제어, CCSAO 파라미터들(분류에 이용되는 오프셋들, 루마 후보 위치들, band_num, bitmask...등, 오프셋 세트 인덱스)은 동일하다.
일부 실시예들에서, 적용된 영역은 CTB 경계에 정렬되지 않을 수 있다. 예를 들어, 적용된 영역은 크로마 CTB 경계에 정렬되지 않지만 시프트된다. 신택스들(온/오프 제어, CCSAO 파라미터들)은 각각의 CTB에 대해 여전히 시그널링되지만, 진정으로 적용된 영역은 CTB 경계에 정렬되지 않는다. 도 24는 본 개시내용의 일부 구현들에 따른, CCSAO 적용 영역이 CTB/CTU 경계(2406)에 정렬되지 않음을 도시한다. 예를 들어, 적용된 영역은 크로마 CTB/CTU 경계(2406)에 정렬되지 않지만 좌측 상단 시프트된 (4, 4)개의 샘플은 VB(2408)에 정렬된다. 이러한 정렬되지 않은 CTB 경계 설계는 디블록킹 프로세스에 유리한데, 그 이유는 각각의 8x8 디블록킹 프로세스 영역에 대해 동일한 디블록킹 파라미터들이 이용되기 때문이다.
일부 실시예들에서, CCSAO 적용 영역 유닛(마스크 크기)은 표 24에 도시된 바와 같이 변형(CTB 크기보다 더 크거나 더 작음)될 수 있다. 마스크 크기는 상이한 성분들에 대해 상이할 수 있다. 마스크 크기는 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록/샘플 레벨들에서 스위칭될 수 있다. 예를 들어, PH에서, 일련의 마스크 온/오프 플래그들 및 오프셋 세트 인덱스들은 각각의 CCSAO 영역 정보를 표시하기 위해 시그널링된다.
Figure pct00044
표 24: CCSAO 적용 영역 유닛(마스크 크기)은 변형일 수 있음
일부 실시예들에서, CCSAO 적용 영역 프레임 파티션은 고정될 수 있다. 예를 들어, 프레임을 N개의 영역으로 파티셔닝한다. 도 25는 본 개시내용의 일부 구현들에 따른, CCSAO 적용 영역 프레임 파티션이 CCSAO 파라미터들로 고정될 수 있는 것을 도시한다.
일부 실시예들에서, 각각의 영역은 그 자신의 영역 온/오프 제어 플래그 및 CCSAO 파라미터들을 가질 수 있다. 또한, 영역 크기가 CTB 크기보다 큰 경우, 그것은 CTB 온/오프 제어 플래그들 및 영역 온/오프 제어 플래그 둘 다를 가질 수 있다. 도 25의 (a) 및 (b)는 프레임을 N개의 영역으로 파티셔닝하는 일부 예들을 도시한다. 도 25의 (a)는 4개의 영역의 수직 파티셔닝을 도시한다. 도 25의 (b)는 4개의 영역의 정사각형 파티셔닝을 도시한다. 일부 실시예들에서, 픽처 레벨 CTB 모두 온 제어(all on control) 플래그(ph_cc_sao_cb_ctb_control_flag / ph_cc_sao_cr_ctb_control_flag)와 유사하게, 영역 온/오프 제어 플래그가 오프이면, CTB 온/오프 플래그들이 더 시그널링될 수 있다. 그렇지 않으면, CCSAO는 CTB 플래그들을 추가로 시그널링하지 않고 이 영역에서의 모든 CTB들에 대해 적용된다.
일부 실시예들에서, 상이한 CCSAO 적용 영역은 동일한 영역 온/오프 제어 및 CCSAO 파라미터들을 공유할 수 있다. 예를 들어, 도 25의 (c)에서, 영역 0~2는 동일한 파라미터들을 공유하고, 영역 3~15는 동일한 파라미터들을 공유한다. 도 25의 (c)는 또한 영역 온/오프 제어 플래그를 도시하고, CCSAO 파라미터들은 힐버트 스캔 순서(Hilbert scan order)로 시그널링될 수 있다.
일부 실시예들에서, CCSAO 적용 영역 유닛은 픽처/슬라이스/CTB 레벨로부터 쿼드-트리/이진-트리/삼진-트리 분할될 수 있다. CTB 분할과 유사하게, CCSAO 적용 영역 파티션을 표시하기 위해 일련의 분할 플래그들이 시그널링된다. 도 26은 본 개시내용의 일부 구현들에 따른, CCSAO 적용 영역이 프레임/슬라이스/CTB 레벨로부터 분할되는 이진-트리(BT)/쿼드-트리(QT)/삼진-트리(TT)일 수 있음을 도시한다.
도 27은 본 개시내용의 일부 구현들에 따른, 픽처 프레임 내에서 상이한 레벨들에서 이용되고 스위칭되는 복수의 분류자들을 도시하는 블록도이다. 일부 실시예들에서, 복수의 분류자들이 하나의 프레임에서 이용되면, 분류자 세트 인덱스를 어떻게 적용하는지의 방법은 SPS/APS/PPS/PH/SH/영역/CTU/CU/서브블록/샘플 레벨들에서 스위칭될 수 있다. 예를 들어, 분류자들의 4개의 세트가 프레임에서 이용되고, 아래의 표 25에 도시된 바와 같이 PH에서 스위칭된다. 도 27의 (a) 및 (c)는 디폴트 고정 영역 분류자를 도시한다. 도 27의 (b)는 분류자 세트 인덱스가 마스크/CTB 레벨에서 시그널링되는 것을 도시하며, 여기서 0은 이 CTB에 대한 CCSAO 오프를 의미하고, 1~4는 세트 인덱스를 의미한다.
Figure pct00045
표 25: 분류자들의 4개의 세트가 프레임에서 이용되고, PH에서 스위칭됨
일부 실시예들에서, 디폴트 영역 경우에 대해, 영역 레벨 플래그는 이 영역에서의 CTB들이 디폴트 세트 인덱스를 이용하지 않지만(예를 들어, 영역 레벨 플래그가 0임), 이 프레임에서 다른 분류자 세트를 이용하는 경우 시그널링될 수 있다. 예를 들어, 디폴트 세트 인덱스가 이용되는 경우, 영역 레벨 플래그는 1이다. 예를 들어, 정사각형 파티션 4 영역들에서, 아래의 표 26에 도시된 바와 같이 다음의 분류자 세트들이 이용된다.
Figure pct00046
표 26: 영역 레벨 플래그는 이 영역에서의 CTB들이 디폴트 세트 인덱스를 이용하지 않는지를 보여주기 위해 시그널링될 수 있음
도 28은 본 개시내용의 일부 구현들에 따른, CCSAO 적용 영역 파티션이 동적이고 픽처 레벨에서 스위칭될 수 있는 것을 도시하는 블록도이다. 예를 들어, 도 28의 (a)는 3개의 CCSAO 오프셋 세트들이 이러한 POC에서 이용되어(set_num = 3), 픽처 프레임이 3개의 영역들로 수직으로 파티셔닝되는 것을 도시한다. 도 28의 (b)는 4개의 CCSAO 오프셋 세트들이 이러한 POC에서 이용되어(set_num = 4), 픽처 프레임이 4개의 영역들로 수평으로 파티셔닝되는 것을 도시한다. 도 28의 (c)는 3개의 CCSAO 오프셋 세트들이 이러한 POC에서 이용되어(set_num = 3), 픽처 프레임이 3개의 영역들로 래스터 파티셔닝되는 것을 도시한다. 각각의 영역은 CTB당 온/오프 제어 비트들을 저장하기 위해 모두 온 플래그인 그 자신의 영역을 가질 수 있다. 영역들의 수는 시그널링된 픽처 set_num에 의존한다.
CCSAO 적용 영역은 블록 내부의 코딩 정보(샘플 위치, 샘플 코딩된 모드들, 루프 필터 파라미터들 등)에 따른 특정 영역일 수 있다. 예를 들어, 1) CCSAO 적용 영역은 샘플들이 스킵 모드 코딩될 때에만 적용될 수 있거나, 2) CCSAO 적용 영역은 CTU 경계들을 따라 N개의 샘플들만을 포함하거나, 3) CCSAO 적용 영역은 프레임에서 8x8 그리드 상의 샘플들만을 포함하거나, 4) CCSAO 적용 영역은 DBF-필터링된 샘플들만을 포함하거나, 5) CCSAO 적용 영역은 CU에서 최상측 M 및 좌측 N개의 행들만을 포함한다. 상이한 적용 영역들은 상이한 분류자들을 이용할 수 있다. 상이한 적용 영역들은 상이한 분류자들을 이용할 수 있다. 예를 들어, CTU에서, 스킵 모드는 C1을 이용하고, 8x8 그리드는 C2를 이용하고, 스킵 모드 및 8x8 그리드는 C3을 이용한다. 예를 들어, CTU에서, 스킵 모드 코딩된 샘플은 C1을 이용하고, CU 중심에서의 샘플은 C2를 이용하고, CU 중심에서 스킵 모드 코딩된 샘플은 C3을 이용한다. 도 29는 본 개시내용의 일부 구현들에 따른, CCSAO 분류자들이 현재 또는 교차 성분 코딩 정보를 고려할 수 있는 것을 도시하는 도면이다. 예를 들어, 상이한 코딩 모드들/파라미터들/샘플 위치들이 상이한 분류자들을 형성할 수 있다. 상이한 코딩 정보가 조합되어 공동 분류자를 형성할 수 있다. 상이한 영역들은 상이한 분류자들을 이용할 수 있다. 도 29는 또한 적용된 영역의 다른 예를 도시한다.
일부 실시예들에서, 구현되는 CCSAO 신택스가 아래의 표 27에 도시된다. 일부 예들에서, 각각의 신택스 요소의 이진화가 변경될 수 있다. AVS3에서, 패치라는 용어는 슬라이스와 유사하고, 패치 헤더는 슬라이스 헤더와 유사하다. FLC는 고정 길이 코드를 나타낸다. TU는 절단된 단항 코드(truncated unary code)를 나타낸다. EGk는 차수 k를 갖는 지수 골롬 코드를 나타내며, 여기서 k는 고정될 수 있다. SVLC는 부호 EG0을 나타낸다. UVLC는 부호없는 EG0을 나타낸다.
Figure pct00047
Figure pct00048
Figure pct00049
Figure pct00050
표 27: 예시적인 CCSAO 신택스
상위 레벨 플래그가 오프이면, 하위 레벨 플래그들은 플래그의 오프 상태로부터 추론될 수 있고 시그널링될 필요가 없다. 예를 들어, 이 픽처에서 ph_cc_sao_cb_flag가 거짓이면, 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는 존재하지 않고 거짓인 것으로 추론된다.
일부 실시예들에서, SPS ccsao_enabled_flag는 아래의 표 28에 도시된 바와 같이 SPS SAO 인에이블된 플래그를 조건으로 한다.
Figure pct00051
표 28: SPS ccsao_enabled_flag는 SPS SAO 인에이블된 플래그를 조건으로 함
일부 실시예들에서, 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_cr_ctb_control_flag가 인에이블되면, ctb_cc_sao_cb_flag 및 ctb_cc_sao_cr_flag가 더 시그널링될 수 있다. 그렇지 않으면, 현재 픽처에서 CCSAO가 적용되는지는, CTB 레벨에서 ctb_cc_sao_cb_flag 및 ctb_cc_sao_cr_flag를 추가로 시그널링하지 않고, ph_cc_sao_cb_flag, ph_cc_sao_cr_flag에 의존한다.
일부 실시예들에서, ph_cc_sao_cb_type 및 ph_cc_sao_cr_type에 대해, 비트 오버헤드를 감소시키기 위해, 크로마 샘플에 대한 분류를 위해 중심 병치된 루마 위치(도 10의 Y0 위치)가 이용되는지를 구별하기 위해 플래그가 더 시그널링될 수 있다. 유사하게, cc_sao_cb_type 및 cc_sao_cr_type이 CTB 레벨에서 시그널링되면, 플래그는 동일한 메커니즘으로 추가로 시그널링될 수 있다. 예를 들어, C0 루마 위치 후보의 수가 9이면, 아래의 표 29에 도시된 바와 같이 중심 병치된 루마 위치가 이용되는지를 구별하기 위해 cc_sao_cb_type0_flag가 더 시그널링된다. 중심 병치된 루마 위치가 이용되지 않는 경우, cc_sao_cb_type_idc는 나머지 8개의 이웃하는 루마 위치들 중 어느 것이 이용되는지를 표시하는 데 이용된다.
Figure pct00052
표 29: cc_sao_cb_type0_flag는 중심 병치된 루마 위치가 이용되는지를 구별하기 위해 시그널링됨
아래의 표 30은 프레임에서 단일의(set_num = 1) 또는 복수의(set_num > 1) 분류자가 이용되는 AVS에서의 예를 도시한다. 신택스 표기법이 위에서 이용된 표기법에 매핑될 수 있다는 것에 유의한다.
Figure pct00053
Figure pct00054
Figure pct00055
표 30: 단일(set_num = 1) 또는 복수(set_num > 1) 분류자가 픽처 프레임에서 이용되는 AVS에서의 예
각각의 영역이 그 자신의 세트를 갖는 도 25 또는 도 27과 결합된다면, 신택스 예는 아래의 표 31에 도시된 바와 같은 영역 온/오프 제어 플래그를 포함할 수 있다.
Figure pct00057
표 31: 각각의 영역은 그 자신의 세트를 갖고, 신택스 예는 영역 온/오프 제어 플래그를 포함할 수 있음
일부 실시예들에서, 인트라 및 인터 사후 예측 SAO 필터에 대한 확장이 아래에 추가로 예시된다. 일부 실시예들에서, 본 개시내용에 개시된 SAO 분류 방법들은 사후 예측 필터로서 역할을 할 수 있고, 예측은 인트라, 인터, 또는 다른 예측 툴들, 예컨대, 인트라 블록 카피일 수 있다. 도 30은 본 개시내용의 일부 구현들에 따른, 본 개시내용에 개시된 SAO 분류 방법들이 사후 예측 필터로서 역할을 하는 것을 도시하는 블록도이다.
일부 실시예들에서, 각각의 Y, U 및 V 성분에 대해, 대응하는 분류자가 선택된다. 그리고, 각각의 성분 예측 샘플에 대해, 이것이 먼저 분류되고, 대응하는 오프셋이 더해진다. 예를 들어, 각각의 성분은 분류를 위해 현재 및 이웃하는 샘플들을 이용할 수 있다. Y는 현재의 Y 및 이웃하는 Y 샘플들을 이용하고, U/V는 아래의 표 32에 도시된 바와 같은 분류를 위해 현재 U/V 샘플들을 이용한다. 도 31은 사후 예측 SAO 필터에 대해, 각각의 성분이 본 개시내용의 일부 구현들에 따른, 분류를 위해 현재 및 이웃하는 샘플들을 이용할 수 있는 것을 도시하는 블록도이다.
Figure pct00059
표 32: 각각의 Y, U, 및 V 성분에 대해 대응하는 분류자가 선택됨
일부 실시예들에서, 정제된 예측 샘플들(Ypred', Upred', 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)이 추가 오프셋 분류를 위해 이용될 수 있다. 추가적인 교차-성분 오프셋(h'_U, h'_V)은, 예를 들어, 아래의 표 33에 도시된 바와 같이, 현재 성분 오프셋(h_U, h_V)에 더해질 수 있다.
Figure pct00060
표 33: 크로마 U 및 V 성분들에 대해, 현재 크로마 성분 외에, 교차-성분(Y)은 추가 오프셋 분류를 위해 이용될 수 있음
일부 실시예들에서, 정제된 예측 샘플들(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 필터 오프셋들을 이용할 수 있다.
도 32는 본 개시내용의 일부 구현들에 따른, 교차-성분 상관을 이용하여 비디오 신호를 디코딩하는 예시적인 프로세스(3200)를 도시하는 흐름도이다.
(도 3에 도시된 바와 같은) 비디오 디코더(30)는, 비디오 신호로부터, 제1 컬러 공간에서의 제1 성분 및 제2 성분을 포함하는 픽처 프레임을 수신한다(3210).
비디오 디코더(30)는 제1 컬러 공간에서의 제2 성분의 각자의 샘플과 연관된 제2 컬러 공간에서의 제1 성분의 하나 이상의 샘플의 제1 세트로부터 제1 컬러 공간에서의 제2 성분에 대한 분류자를 결정한다(3220).
비디오 디코더(30)는 분류자에 따라 제1 컬러 공간에서의 제2 성분의 각자의 샘플에 대한 샘플 오프셋을 결정한다(3230).
비디오 디코더(30)는 결정된 샘플 오프셋에 기초하여 제1 컬러 공간에서의 제2 성분의 각자의 샘플의 값을 수정한다(3240).
일부 실시예들에서, 제1 성분은 루마 성분, 제1 크로마 성분 및 제2 크로마 성분으로 구성된 그룹으로부터 선택된 성분이고, 제2 성분은 루마 성분, 제1 크로마 성분 및 제2 크로마 성분으로 구성된 그룹으로부터 선택된 성분이다.
일부 실시예들에서, 하나 이상의 샘플의 제1 세트는 선형 변환을 이용하여 제2 성분의 각자의 샘플과 연관된 제1 성분의 하나 이상의 샘플을 제1 컬러 공간으로부터 제2 컬러 공간으로 변환함으로써 획득된다.
일부 실시예들에서, 선형 변환은 다음에 의해 표현된다.
여기서, a, b, c, d, e, f, g, h, i는 미리 결정된 상수들이고, I1, I2, I3은 각각 제1 컬러 공간에서의 제1 성분, 제2 성분, 및 제3 성분의 샘플들의 값들이고, O1, O2, O3은 각각 제2 컬러 공간에서의 제1 성분, 제2 성분, 및 제3 성분의 샘플들의 값들이다.
일부 실시예에서, 제1 컬러 공간은 YUV 컬러 공간이고, 제2 컬러 공간은 RGB 컬러 공간이다.
일부 실시예에서, 제1 컬러 공간은 RGB 컬러 공간이고, 제2 컬러 공간은 YUV 컬러 공간이다.
일부 실시예들에서, 하나 이상의 샘플의 제1 세트는 비선형 변환을 이용하여 제2 성분의 각자의 샘플과 연관된 제1 성분의 하나 이상의 샘플을 제1 컬러 공간으로부터 제2 컬러 공간으로 변환함으로써 획득된다.
일부 실시예들에서, 분류자를 결정하는 것(3220)은 제2 성분의 각자의 샘플과 연관된 제2 성분의 하나 이상의 샘플의 제2 세트로부터 추가적으로 제1 컬러 공간에서의 제2 성분에 대한 분류자를 결정하는 것을 더 포함하고, 하나 이상의 샘플의 제2 세트는 제1 컬러 공간 또는 제2 컬러 공간에 있다.
일부 실시예들에서, 픽처 프레임은 제3 성분을 더 포함하고, 분류자를 결정하는 것(3220)은 제2 성분의 각자의 샘플과 연관된 제3 성분의 하나 이상의 샘플의 제3 세트로부터 추가적으로 제1 컬러 공간에서의 제2 성분에 대한 분류자를 결정하는 것을 더 포함하고, 제3 성분은 제2 크로마 성분이고, 하나 이상의 샘플의 제3 세트는 제1 컬러 공간 또는 제2 컬러 공간에 있다.
일부 실시예들에서, 분류자는 제1 서브-분류자 및/또는 제2 서브-분류자 중 적어도 하나에 의해 결정되고, 제1 서브-분류자는 제1 성분의 하나 이상의 샘플의 제1 세트의 값들의 제1 동적 범위를 대역들의 제1 수로 분할하고, 제1 성분의 하나 이상의 샘플의 제1 세트의 강도 값에 기초하여 대역을 선택함으로써 결정되고, 제2 서브-분류자는 제2 성분의 하나 이상의 샘플의 제2 세트의 제1 서브-그룹의 에지 정보의 방향 및 강도에 기초하여 결정된다.
일부 실시예들에서, 제1 성분은 제1 크로마 성분이고, 제2 성분은 루마 성분이고, 제2 성분의 각자의 샘플과 연관된 제1 성분의 하나 이상의 샘플의 제1 세트는 제2 성분의 각자의 샘플에 대한 제1 성분의 병치된 및 이웃하는 샘플들 중 하나 이상으로부터 선택된다.
일부 실시예들에서, 제2 성분의 각자의 샘플과 연관된 제2 성분의 하나 이상의 샘플의 제2 세트는 제2 성분의 각자의 샘플에 대한 제2 성분의 현재 및 이웃하는 샘플들 중 하나 이상으로부터 선택된다.
일부 실시예들에서, 분류자를 결정하는 것(3220)은 제2 성분의 각자의 샘플과 연관된 제1, 제2 및 제3 성분들 중 하나 이상의 성분의 하나 이상의 샘플의 제4 세트로부터 추가적으로 제1 컬러 공간에서의 제2 성분에 대한 분류자를 결정하는 것을 더 포함하고, 하나 이상의 샘플의 제4 세트는 제1 컬러 공간 또는 제2 컬러 공간에 있다.
일부 실시예들에서, 분류자를 결정하는 것(3220)은 하나 이상의 샘플의 제4 세트의 이전 코딩 정보로부터 추가적으로 제1 컬러 공간에서의 제2 성분에 대한 분류자를 결정하는 것을 더 포함한다.
일부 실시예들에서, 분류자를 결정하는 것(3220)은 다음과 같이 분류자의 클래스 인덱스를 결정하는 것을 더 포함한다:
여기서, C는 현재 또는 병치된 샘플의 값이고, P1, P2, ... P8은 이웃하는 샘플들의 값들이고, Index2ClassTable은 인덱스 클래스의 미리 정의된 표이고, th는 임계값이고, x-y > th이면, f(x, y) = 1이고; x-y = th이면, f(x, y) = 0이고; x-y < th이면, f(x, y) = -1이다.
도 33은 사용자 인터페이스(3350)와 결합된 컴퓨팅 환경(3310)을 도시한다. 컴퓨팅 환경(3310)은 데이터 처리 서버의 일부일 수 있다. 컴퓨팅 환경(3310)은 프로세서(3320), 메모리(3330), 및 입력/출력(I/O) 인터페이스(3340)를 포함한다.
프로세서(3320)는 전형적으로, 디스플레이, 데이터 획득, 데이터 통신, 및 이미지 처리와 연관된 동작들과 같은, 컴퓨팅 환경(3310)의 전체 동작들을 제어한다. 프로세서(3320)는 전술한 방법들에서의 단계들의 전부 또는 일부를 수행하기 위한 명령어들을 실행하기 위한 하나 이상의 프로세서를 포함할 수 있다. 또한, 프로세서(3320)는 프로세서(3320)와 다른 컴포넌트들 사이의 상호작용을 용이하게 하는 하나 이상의 모듈을 포함할 수 있다. 프로세서는 중앙 처리 유닛(CPU), 마이크로프로세서, 단일 칩 머신, 그래픽 처리 유닛(GPU) 등일 수 있다.
메모리(3330)는 컴퓨팅 환경(3310)의 동작을 지원하기 위해 다양한 타입의 데이터를 저장하도록 구성된다. 메모리(3330)는 미리 결정된 소프트웨어(3332)를 포함할 수 있다. 그러한 데이터의 예들은 컴퓨팅 환경(3310) 상에서 동작되는 임의의 애플리케이션들 또는 방법들을 위한 명령어들, 비디오 데이터세트들, 이미지 데이터 등을 포함한다. 메모리(3330)는 SRAM(Static Random Access Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), EPROM(Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), ROM(Read-Only Memory), 자기 메모리, 플래시 메모리, 자기 또는 광학 디스크와 같은, 임의의 타입의 휘발성 또는 비휘발성 메모리 디바이스들, 또는 이들의 조합을 이용하여 구현될 수 있다.
I/O 인터페이스(3340)는 프로세서(3320)와 키보드, 클릭 휠, 버튼들 등과 같은 주변 인터페이스 모듈들 사이의 인터페이스를 제공한다. 버튼들은 홈 버튼, 스캔 시작 버튼, 및 스캔 정지 버튼을 포함할 수 있지만, 이들로 제한되지 않는다. I/O 인터페이스(3340)는 인코더 및 디코더와 결합될 수 있다.
실시예에서, 전술한 방법들을 수행하기 위해, 컴퓨팅 환경(3310)에서 프로세서(3320)에 의해 실행가능한, 예를 들어, 메모리(3330)에서의 복수의 프로그램을 포함하는 비일시적 컴퓨터 판독가능 저장 매체가 또한 제공된다. 대안적으로, 비일시적 컴퓨터 판독가능 저장 매체는, 예를 들어, 비디오 데이터를 디코딩 시에 디코더(예를 들어, 도 3에서의 비디오 디코더(30))에 의해 이용하기 위해 위에 설명된 인코딩 방법을 이용하여 인코더(예를 들어, 도 2에서의 비디오 인코더(20))에 의해 생성되는 인코딩된 비디오 정보(예를 들어, 하나 이상의 신택스 요소를 포함하는 비디오 정보)를 포함하는 비트스트림 또는 데이터 스트림을 저장할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체는, 예를 들어, ROM, RAM(Random Access Memory), CD-ROM, 자기 테이프, 플로피 디스크, 광학 데이터 저장 디바이스 등일 수 있다.
실시예에서, 하나 이상의 프로세서(예를 들어, 프로세서(3320)); 및 하나 이상의 프로세서에 의해 실행가능한 복수의 프로그램을 저장한 비일시적 컴퓨터 판독가능 저장 매체 또는 메모리(3330)를 포함하는 컴퓨팅 디바이스가 또한 제공되고, 여기서 하나 이상의 프로세서는, 복수의 프로그램의 실행 시에, 전술한 방법들을 수행하도록 구성된다.
실시예에서, 전술한 방법들을 수행하기 위해, 컴퓨팅 환경(3310)에서 프로세서(3320)에 의해 실행가능한, 예를 들어, 메모리(3330)에서의 복수의 프로그램을 포함하는 컴퓨터 프로그램 제품이 또한 제공된다. 예를 들어, 컴퓨터 프로그램 제품은 비일시적 컴퓨터 판독가능 저장 매체를 포함할 수 있다.
실시예에서, 컴퓨팅 환경(3310)은, 상기의 방법들을 수행하기 위해, 하나 이상의 ASIC, DSP, DSPD(Digital Signal Processing Device), PLD(Programmable Logic Device), FPGA, GPU, 제어기, 마이크로제어기, 마이크로프로세서, 또는 다른 전자 컴포넌트로 구현될 수 있다.
추가 실시예들은 또한 다양한 다른 실시예들에서 조합되거나 다른 방식으로 재배열된 상기의 실시예들의 다양한 서브세트들을 포함한다.
하나 이상의 예에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 하나 이상의 명령어 또는 코드로서 컴퓨터 판독가능 매체 상에 저장되거나 그를 통해 송신될 수 있고, 하드웨어 기반 처리 유닛에 의해 실행될 수 있다. 컴퓨터 판독가능 매체들은 데이터 저장 매체들과 같은 유형의 매체에 대응하는 컴퓨터 판독가능 저장 매체들, 또는 예를 들어 통신 프로토콜에 따라 한 장소에서 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수 있다. 이러한 방식으로, 컴퓨터 판독가능 매체는 일반적으로 (1) 비일시적인 유형의 컴퓨터 판독가능 저장 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체들은 본 출원에서 설명된 구현들의 구현을 위해 명령어들, 코드 및/또는 데이터 구조들을 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용가능한 매체들일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 포함할 수 있다.
본 명세서에서의 구현들의 설명에서 이용되는 용어는 특정 구현들만을 설명하기 위한 것이며, 청구항들의 범위를 제한하는 것을 의도하지 않는다. 구현들 및 첨부된 청구항들의 설명에서 이용되는 바와 같이, 단수 형태들("a", "an", 및 "the")은, 문맥이 명확하게 달리 지시하지 않는 한, 복수 형태들도 포함하는 것으로 의도된다. 본 명세서에서 이용되는 바와 같은 "및/또는(and/or)"이라는 용어는 연관된 열거된 항목들 중 하나 이상의 임의의 및 모든 가능한 조합들을 지칭하고 포함한다는 점이 또한 이해될 것이다. 용어 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은, 본 명세서에서 이용될 때, 진술된 특징들, 요소들, 및/또는 컴포넌트의 존재를 명시하지만, 하나 이상의 다른 특징, 요소, 컴포넌트, 및/또는 이들의 그룹의 존재나 추가를 배제하지 않는다는 것도 이해할 것이다.
제1, 제2 등의 용어들이 본 명세서에서 다양한 요소들을 설명하기 위해 이용될 수 있지만, 이러한 요소들은 이러한 용어들에 의해 제한되지 않아야 한다는 것도 이해할 것이다. 이러한 용어들은 하나의 요소를 다른 요소와 구별하기 위해서만 이용된다. 예를 들어, 구현들의 범위로부터 벗어나지 않으면서, 제1 전극은 제2 전극으로 칭해질 수 있고, 유사하게, 제2 전극은 제1 전극으로 칭해질 수 있다. 제1 전극 및 제2 전극은 둘 다 전극들이지만, 이들은 동일한 전극이 아니다.
본 명세서 전체에 걸쳐 단수 또는 복수로 "일 예", "예", "예시적인 예" 등에 대한 언급은 예와 관련하여 설명된 하나 이상의 특정한 특징, 구조, 또는 특성이 본 개시내용의 적어도 하나의 예에 포함된다는 것을 의미한다. 따라서, 본 명세서 전체에 걸쳐 다양한 곳에서 단수 또는 복수로 나타나는 문구 "일 예에서" 또는 "예에서", "예시적인 예에서" 등의 출현은 반드시 모두가 동일한 예를 언급하는 것은 아니다. 더욱이, 하나 이상의 예에서의 특정의 특징들, 구조들, 또는 특성들은 임의의 적절한 방식으로 조합된 것을 포함할 수 있다.
본 출원의 설명은 예시 및 설명의 목적들을 위해 제시되었고, 총망라하거나 개시된 형태로 본 발명을 제한하도록 의도되지 않는다. 많은 수정들, 변형들, 및 대안적인 구현들이 전술한 설명들 및 연관된 도면들에 제시된 교시들의 이점을 갖는 본 기술분야의 통상의 기술자에게 명백할 것이다. 실시예는 본 발명의 원리들, 실제 응용을 가장 잘 설명하고, 본 기술분야의 통상의 기술자가 다양한 구현들에 대해 본 발명을 이해하고, 기본 원리들 및 고려되는 특정 이용에 적합한 바와 같은 다양한 수정들을 갖는 다양한 구현들을 가장 잘 이용할 수 있게 하기 위해 선택되고 설명되었다. 따라서, 청구항들의 범위는 개시된 구현들의 특정 예들로 제한되지 않으며, 수정들 및 다른 구현들은 첨부된 청구항들의 범위 내에 포함되도록 의도된다는 것을 이해해야 한다.

Claims (18)

  1. 비디오 신호를 디코딩하는 방법으로서,
    상기 비디오 신호로부터, 제1 컬러 공간에서의 제1 성분 및 제2 성분을 포함하는 픽처 프레임을 수신하는 단계;
    상기 제1 컬러 공간에서의 상기 제2 성분의 각자의 샘플과 연관된 제2 컬러 공간에서의 상기 제1 성분의 하나 이상의 샘플의 제1 세트로부터 상기 제1 컬러 공간에서의 상기 제2 성분에 대한 분류자를 결정하는 단계;
    상기 분류자에 따라 상기 제1 컬러 공간에서의 상기 제2 성분의 각자의 샘플에 대한 샘플 오프셋을 결정하는 단계; 및
    상기 결정된 샘플 오프셋에 기초하여 상기 제1 컬러 공간에서의 상기 제2 성분의 각자의 샘플의 값을 수정하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 제1 성분은 루마 성분, 제1 크로마 성분 및 제2 크로마 성분으로 구성된 그룹으로부터 선택된 성분이고,
    상기 제2 성분은 상기 루마 성분, 상기 제1 크로마 성분 및 상기 제2 크로마 성분으로 구성된 그룹으로부터 선택된 성분인, 방법.
  3. 제1항에 있어서,
    상기 하나 이상의 샘플의 제1 세트는, 선형 변환을 이용하여 상기 제2 성분의 각자의 샘플과 연관된 상기 제1 성분의 하나 이상의 샘플을 상기 제1 컬러 공간으로부터 상기 제2 컬러 공간으로 변환함으로써 획득되는, 방법.
  4. 제3항에 있어서,
    상기 선형 변환은 다음에 의해 표현되고,

    여기서, a, b, c, d, e, f, g, h, i는 미리 결정된 상수들이고, I1, I2, I3은 각각 상기 제1 컬러 공간에서의 제1 성분, 제2 성분, 및 제3 성분의 샘플들의 값들이고, O1, O2, O3은 각각 상기 제2 컬러 공간에서의 제1 성분, 제2 성분, 및 제3 성분의 샘플들의 값들인, 방법.
  5. 제1항에 있어서,
    상기 제1 컬러 공간은 YUV 컬러 공간이고, 상기 제2 컬러 공간은 RGB 컬러 공간인, 방법.
  6. 제1항에 있어서,
    상기 제1 컬러 공간은 RGB 컬러 공간이고, 상기 제2 컬러 공간은 YUV 컬러 공간인, 방법.
  7. 제1항에 있어서,
    상기 하나 이상의 샘플의 제1 세트는, 비선형 변환을 이용하여 상기 제2 성분의 각자의 샘플과 연관된 상기 제1 성분의 하나 이상의 샘플을 상기 제1 컬러 공간으로부터 상기 제2 컬러 공간으로 변환함으로써 획득되는, 방법.
  8. 제1항에 있어서,
    상기 분류자를 결정하는 단계는, 상기 제2 성분의 각자의 샘플과 연관된 상기 제2 성분의 하나 이상의 샘플의 제2 세트로부터 추가적으로 상기 제1 컬러 공간에서의 상기 제2 성분에 대한 분류자를 결정하는 단계를 더 포함하고, 상기 하나 이상의 샘플의 제2 세트는 상기 제1 컬러 공간 또는 상기 제2 컬러 공간에 있는, 방법.
  9. 제8항에 있어서,
    상기 픽처 프레임은 제3 성분을 더 포함하고, 상기 분류자를 결정하는 단계는, 상기 제2 성분의 각자의 샘플과 연관된 상기 제3 성분의 하나 이상의 샘플의 제3 세트로부터 추가적으로 상기 제1 컬러 공간에서의 상기 제2 성분에 대한 분류자를 결정하는 단계를 더 포함하고, 상기 제3 성분은 제2 크로마 성분이고, 상기 하나 이상의 샘플의 제3 세트는 상기 제1 컬러 공간 또는 상기 제2 컬러 공간에 있는, 방법.
  10. 제8항에 있어서,
    상기 분류자는 제1 서브-분류자 및/또는 제2 서브-분류자 중 적어도 하나에 의해 결정되고, 상기 제1 서브-분류자는, 상기 제1 성분의 하나 이상의 샘플의 제1 세트의 값들의 제1 동적 범위를 대역들의 제1 수로 분할하고 상기 제1 성분의 하나 이상의 샘플의 제1 세트의 강도 값에 기초하여 대역을 선택함으로써 결정되고, 상기 제2 서브-분류자는 상기 제2 성분의 하나 이상의 샘플의 제2 세트의 제1 서브-그룹의 에지 정보의 방향 및 강도에 기초하여 결정되는, 방법.
  11. 제1항에 있어서,
    상기 제1 성분은 제1 크로마 성분이고, 상기 제2 성분은 루마 성분이고, 상기 제2 성분의 각자의 샘플과 연관된 상기 제1 성분의 하나 이상의 샘플의 제1 세트는 상기 제2 성분의 각자의 샘플에 대한 상기 제1 성분의 병치된 및 이웃하는 샘플들 중 하나 이상으로부터 선택되는, 방법.
  12. 제8항에 있어서,
    상기 제2 성분의 각자의 샘플과 연관된 상기 제2 성분의 하나 이상의 샘플의 제2 세트는 상기 제2 성분의 각자의 샘플에 대한 상기 제2 성분의 현재 및 이웃하는 샘플들 중 하나 이상으로부터 선택되는, 방법.
  13. 제1항에 있어서,
    상기 분류자를 결정하는 단계는, 상기 제2 성분의 각자의 샘플과 연관된 제1, 제2 및 제3 성분들 중 하나 이상의 성분의 하나 이상의 샘플의 제4 세트로부터 추가적으로 상기 제1 컬러 공간에서의 상기 제2 성분에 대한 분류자를 결정하는 단계를 더 포함하고, 상기 하나 이상의 샘플의 제4 세트는 상기 제1 컬러 공간 또는 상기 제2 컬러 공간에 있는, 방법.
  14. 제13항에 있어서,
    상기 분류자를 결정하는 단계는, 상기 하나 이상의 샘플의 제4 세트의 이전 코딩 정보로부터 추가적으로 상기 제1 컬러 공간에서의 상기 제2 성분에 대한 분류자를 결정하는 단계를 더 포함하는, 방법.
  15. 제13항에 있어서,
    상기 분류자를 결정하는 단계는 하기와 같이 상기 분류자의 클래스 인덱스를 결정하는 단계를 더 포함하고,

    여기서, C는 현재 또는 병치된 샘플의 값이고, P1, P2, ... P8은 이웃하는 샘플들의 값들이고, Index2ClassTable은 인덱스 클래스의 미리 정의된 표이고, th는 임계값이고, x-y > th이면, f(x, y) = 1이고; x-y = th이면, f(x, y) = 0이고; x-y < th이면, f(x, y) = -1인, 방법.
  16. 전자 장치로서,
    하나 이상의 처리 유닛;
    상기 하나 이상의 처리 유닛에 결합된 메모리; 및
    상기 메모리에 저장된 복수의 프로그램을 포함하고,
    상기 복수의 프로그램은, 상기 하나 이상의 처리 유닛에 의해 실행될 때, 상기 전자 장치로 하여금 제1항 내지 제15항 중 어느 한 항의 방법을 수행하게 하는, 전자 장치.
  17. 컴퓨터 판독가능 저장 매체로서,
    제1항 내지 제15항 중 어느 한 항에 따른 비디오 신호를 디코딩하는 방법에 의해 생성된 비디오 정보를 포함하는 비트스트림을 저장한 컴퓨터 판독가능 저장 매체.
  18. 하나 이상의 처리 유닛을 갖는 전자 장치에 의해 실행하기 위한 복수의 프로그램을 저장한 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 복수의 프로그램은, 상기 하나 이상의 처리 유닛에 의해 실행될 때, 상기 전자 장치로 하여금 제1항 내지 제15항 중 어느 한 항의 방법을 수행하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020237030321A 2021-03-18 2022-03-16 교차-성분 샘플 적응적 오프셋에서의 코딩 향상 KR20230144050A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163200626P 2021-03-18 2021-03-18
US63/200,626 2021-03-18
US202163164459P 2021-03-22 2021-03-22
US63/164,459 2021-03-22
PCT/US2022/020588 WO2022197828A1 (en) 2021-03-18 2022-03-16 Coding enhancement in cross-component sample adaptive offset

Publications (1)

Publication Number Publication Date
KR20230144050A true KR20230144050A (ko) 2023-10-13

Family

ID=83320971

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020237035678A KR20230156790A (ko) 2021-03-18 2022-03-16 교차 컴포넌트 샘플 적응적 오프셋에서의 코딩 향상
KR1020237030321A KR20230144050A (ko) 2021-03-18 2022-03-16 교차-성분 샘플 적응적 오프셋에서의 코딩 향상

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020237035678A KR20230156790A (ko) 2021-03-18 2022-03-16 교차 컴포넌트 샘플 적응적 오프셋에서의 코딩 향상

Country Status (6)

Country Link
US (2) US20240007662A1 (ko)
EP (2) EP4309364A1 (ko)
JP (2) JP2024513160A (ko)
KR (2) KR20230156790A (ko)
MX (2) MX2023010325A (ko)
WO (2) WO2022197794A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024074752A1 (en) * 2022-10-06 2024-04-11 Nokia Technologies Oy An apparatus, a method and a computer program for video coding and decoding

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107426579B (zh) * 2011-06-24 2020-03-10 Lg 电子株式会社 图像信息编码和解码方法
JP6175505B2 (ja) * 2012-09-28 2017-08-02 ヴィド スケール インコーポレイテッド ビデオコーディングにおけるクロマ信号強調のためのクロスプレーンフィルタリング
US10708588B2 (en) * 2013-06-19 2020-07-07 Apple Inc. Sample adaptive offset control
BR112021026341A2 (pt) * 2019-06-24 2022-02-08 Sharp Kk Sistemas e métodos para reduzir um erro de reconstrução na codificação de vídeo com base em uma correlação entre componentes
KR20220036977A (ko) * 2019-07-25 2022-03-23 에이치에프아이 이노베이션 인크. 비디오 코딩을 위한 가상 경계를 사용한 교차 성분 적응적 루프 필터링의 방법 및 장치

Also Published As

Publication number Publication date
EP4309364A1 (en) 2024-01-24
US20240007662A1 (en) 2024-01-04
WO2022197828A1 (en) 2022-09-22
US20240007652A1 (en) 2024-01-04
KR20230156790A (ko) 2023-11-14
JP2024513160A (ja) 2024-03-22
EP4309365A1 (en) 2024-01-24
MX2023010325A (es) 2023-09-14
JP2024509801A (ja) 2024-03-05
WO2022197794A1 (en) 2022-09-22
MX2023010914A (es) 2023-09-27

Similar Documents

Publication Publication Date Title
KR20230139811A (ko) 교차-성분 샘플 적응적 오프셋에서의 코딩 향상
WO2022115698A1 (en) Chroma coding enhancement in cross-component sample adaptive offset
US20240007662A1 (en) Coding enhancement in cross-component sample adaptive offset
US20230336785A1 (en) Coding enhancement in cross-component sample adaptive offset
CN115956362A (zh) 跨分量样点自适应偏移中的色度编码增强
CN115989675A (zh) 交叉分量样本自适应偏移中的色度编码增强
KR20230170072A (ko) 교차-컴포넌트 샘플 적응적 오프셋에서의 코딩 강화
EP4285591A1 (en) Chroma coding enhancement in cross-component sample adaptive offset
KR20240011197A (ko) 교차 성분 샘플 적응 오프셋에서의 코딩 향상
CN117296315A (zh) 跨分量样点自适应偏移中的编解码增强
KR20240042642A (ko) 교차 성분 샘플 적응적 오프셋에서의 코딩 강화
CN117413516A (zh) 跨分量样本自适应偏移中的编解码增强
KR20240039168A (ko) 크로스-컴포넌트 샘플 적응적 오프셋에서의 코딩 강화
JP2024521804A (ja) 成分間サンプル適応オフセットにおけるコーディングの強化
CN116671105A (zh) 具有虚拟边界的跨分量样点自适应偏移中的色度编解码增强
CN117917074A (zh) 跨分量样点自适应偏移中的编解码增强
CN116569551A (zh) 交叉分量样本自适应偏移中的色度编码增强
CN116965017A (zh) 在跨分量样点自适应偏移中的色度编解码增强

Legal Events

Date Code Title Description
A201 Request for examination