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

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

Info

Publication number
KR20240011197A
KR20240011197A KR1020237044796A KR20237044796A KR20240011197A KR 20240011197 A KR20240011197 A KR 20240011197A KR 1020237044796 A KR1020237044796 A KR 1020237044796A KR 20237044796 A KR20237044796 A KR 20237044796A KR 20240011197 A KR20240011197 A KR 20240011197A
Authority
KR
South Korea
Prior art keywords
ccsao
video
sample
offset
video data
Prior art date
Application number
KR1020237044796A
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 KR20240011197A publication Critical patent/KR20240011197A/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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/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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/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/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/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation

Landscapes

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

Abstract

전자 장치는 비디오 데이터를 디코딩하는 방법을 수행한다. 이 방법은: 비디오 데이터로부터, 적응 파라미터 세트(APS)에 저장된 다수의 이전에 사용된 교차 성분 샘플 적응 오프셋(CCSAO) 필터 오프셋 세트와 연관된 APS 식별자를 수신하는 단계; 비디오 데이터로부터, 현재 픽처 또는 슬라이스에 대해 사용되는 APS 식별자를 지시하는 신택스를 픽처 헤더(PH) 또는 슬라이스 헤더(SH)에서 수신하는 단계; 현재 코딩 트리 유닛(CTU)에 대해, APS 식별자와 연관된 APS 내의 다수의 오프셋 세트들 중 특정의 이전에 사용된 CCSAO 필터 오프셋 세트를 지시하는 필터 세트 인덱스를 디코딩하는 단계; 및 특정의 이전에 사용된 CCSAO 필터 오프셋 세트를 비디오 데이터의 현재 CTU에 적용하는 단계를 포함한다.

Description

교차 성분 샘플 적응 오프셋에서의 코딩 향상
본 출원은 "Cross-component Sample Adaptive Offset"이라는 명칭으로 2021년 5월 26일자 출원된 미국 가특허 출원 제63/193,539호, 및 "Cross-component Sample Adaptive Offset"이라는 명칭으로 2021년 6월 21일자 출원된 미국 가특허 출원 제63/213,167호에 대한 우선권을 주장하며, 이 가특허 출원들은 그 전체가 인용에 의해 포함된다.
본 출원은 일반적으로 비디오 코딩 및 압축에 관한 것으로, 보다 구체적으로는 루마 및 크로마 코딩 효율 모두를 개선하는 것에 관한 방법 및 장치에 관한 것이다.
디지털 텔레비전, 랩톱 또는 데스크톱 컴퓨터, 태블릿 컴퓨터, 디지털 카메라, 디지털 레코딩 디바이스, 디지털 미디어 플레이어, 비디오 게임 콘솔, 스마트폰, 비디오 원격 회의 디바이스, 비디오 스트리밍 디바이스 등과 같은 다양한 전자 디바이스에 의해 디지털 비디오가 지원된다. 전자 디바이스들은 비디오 압축/압축해제 표준을 구현함으로써 디지털 비디오 데이터를 송신, 수신, 인코딩, 디코딩 및/또는 저장한다. 일부 잘 알려진 비디오 코딩 표준은 VVC(Versatile Video Coding), (H.265 또는 MPEG-H 부분 2 로도 또한 알려진) HEVC(High Efficiency Video Coding) 및 (H.264 또는 MPEG-4 파트 2로도 또한 알려진) AVC(Advanced Video Coding)를 포함하며, 이는 ISO/IEC MPEG 및 ITU-T VCEG에 의해 공동으로 개발된다. AV1(AOMedia Video 1)은 그의 선행 표준 VP9에 대한 계승자로서 AOM( Alliance for Open Media)에 의해 개발되었다. 디지털 오디오 및 디지털 비디오 압축 표준을 지칭하는 AVS(Audio Video Coding)는 오디오 및 비디오 코딩 표준 작업그룹에 의해 개발된 다른 비디오 압축 표준 시리즈이다.
비디오 압축은 통상적으로, 공간(프레임 내) 예측 및/또는 시간(프레임 간) 예측을 수행하여 비디오 데이터에 내재된 중복성을 감소시키거나 제거하는 것을 포함한다. 블록 기반 비디오 코딩의 경우, 비디오 프레임은 하나 이상의 슬라이스로 파티셔닝(partition)되고, 각각의 슬라이스는 다수의 비디오 블록을 가지며, 이들은 또한 코딩 트리 유닛(CTU: coding tree unit)으로도 또한 지칭될 수 있다. 각각의 CTU는 하나의 코딩 유닛(CU: coding unit)을 포함하거나, 미리 정의된 최소 CU 크기에 도달할 때까지 더 작은 CU로 재귀적으로 분할될 수 있다. (리프(leaf) CU로도 또한 명명된) 각각의 CU는 하나 또는 다수의 변환 유닛(TU: transform unit)을 포함하고, 각각의 CU는 또한 하나 또는 다수의 예측 유닛(PU: prediction unit)을 포함한다. 각각의 CU는 인트라(intra) 모드, 인터(inter) 모드 또는 IBC 모드로 코딩될 수 있다. 비디오 프레임의 인트라 코딩된(I) 슬라이스의 비디오 블록은 동일한 비디오 프레임 내의 이웃 블록의 참조 샘플에 대한 공간 예측을 사용하여 인코딩된다. 비디오 프레임의 인터 코딩된(P 또는 B) 슬라이스의 비디오 블록은 동일한 비디오 프레임 내의 이웃 블록의 참조 샘플에 대한 공간 예측 또는 다른 이전 및/또는 차후 참조 비디오 프레임의 참조 샘플에 대한 시간 예측을 사용할 수 있다.
이전에 인코딩된 참조 블록, 예컨대 이웃 블록에 기초한 공간 또는 시간 예측은 코딩될 현재 비디오 블록에 대한 예측 블록을 야기한다. 참조 블록을 찾는 프로세스는 블록 매칭 알고리즘에 의해 달성될 수 있다. 코딩될 현재 블록과 예측 블록 간의 픽셀 차이를 나타내는 잔차 데이터는 잔차 블록 또는 예측 오차로 지칭된다. 인터 코딩된 블록은 예측 블록을 형성하는 참조 프레임의 참조 블록, 및 잔차 블록을 가리키는 움직임 벡터에 따라 인코딩된다. 움직임 벡터를 결정하는 프로세스는 통상적으로 움직임 추정으로 지칭된다. 인트라 코딩된 블록은 인트라 예측 모드 및 잔차 블록에 따라 인코딩된다. 추가 압축을 위해, 잔차 블록은 픽셀 도메인에서 변환 도메인, 예컨대 주파수 도메인으로 변환되어, 잔차 변환 계수가 될 수 있으며, 잔차 변환 계수는 다음에 양자화될 수 있다. 초기에 2차원 배열로 배열된 양자화된 변환 계수는 스캔되어 변환 계수의 1차원 벡터를 생성할 수 있으며, 그런 다음 비디오 비트스트림(bitstream)으로 엔트로피 인코딩되어 훨씬 더 많은 압축을 달성할 수 있다.
이어서, 인코딩된 비디오 비트스트림은 컴퓨터 판독 가능 저장 매체(예컨대, 플래시 메모리)에 저장되어 디지털 비디오 능력을 갖는 다른 전자 디바이스에 의해 액세스되거나, 유선 또는 무선으로 전자 디바이스에 직접 송신된다. 이어서, 전자 디바이스는 예컨대, 인코딩된 비디오 비트스트림을 파싱(parse)하여 비트스트림으로부터 신택스(syntax) 엘리먼트를 획득하고, 비트스트림으로부터 획득된 신택스 엘리먼트에 적어도 부분적으로 기초하여, 인코딩된 비디오 비트스트림으로부터 원래의 포맷으로 디지털 비디오 데이터를 재구성함으로써 (위에서 설명된 비디오 압축과 반대 프로세스인) 비디오 압축 해제를 수행하고, 재구성된 디지털 비디오 데이터를 전자 디바이스의 디스플레이 상에 렌더링(render)한다.
디지털 비디오 품질이 고화질에서 4K×2K 또는 심지어 8K×4K로 진행함에 따라, 인코딩/디코딩될 비디오 데이터의 양은 기하급수적으로 증가한다. 이것은, 디코딩된 비디오 데이터의 이미지 품질을 유지하면서 비디오 데이터가 어떻게 더 효율적으로 인코딩/디코딩될 수 있는지 면에서 끊임없는 난제이다.
본 출원은 비디오 데이터 인코딩 및 디코딩에 관련된 구현, 보다 구체적으로는 루마 성분과 크로마 성분 사이의 교차 성분 관계를 탐색함으로써 코딩 효율을 개선하는 것을 포함하여, 루마 성분과 크로마 성분 모두의 코딩 효율을 개선하는 것에 관한 방법 및 장치에 관한 구현을 설명한다..
본 출원의 제1 양상에 따르면, 비디오 데이터를 디코딩하는 방법은: 비디오 데이터로부터, 적응 파라미터 세트(APS: Adaptation Parameter Set)에 저장된, 이전에 사용된 교차 성분 샘플 적응 오프셋(CCSAO: Cross-Component Sample Adaptive Offset) 필터 오프셋 세트의 수와 연관된 APS 식별자를 수신하는 단계; 비디오 데이터로부터, 현재 픽처 또는 슬라이스에 대해 사용되는 APS 식별자를 지시하는 신택스를 픽처 헤더(PH: Picture Header) 또는 슬라이스 헤더(SH: Slice Header)에서 수신하는 단계; 현재 코딩 트리 유닛(CTU)에 대해, APS 식별자와 연관된 APS 내의 상기 수의 오프셋 세트들 중 특정의 이전에 사용된 CCSAO 필터 오프셋 세트를 지시하는 필터 세트 인덱스를 디코딩하는 단계; 및 상기 특정의 이전에 사용된 CCSAO 필터 오프셋 세트를 비디오 데이터의 현재 CTU에 적용하는 단계를 포함한다.
일부 실시예에서, 비디오 데이터는 제1 성분 및 제2 성분을 포함하고, 특정의 이전에 사용된 CCSAO 필터 오프셋 세트는: 제2 성분의 개개의 샘플과 연관된 제1 성분의 한 세트의 하나 이상의 샘플로부터 제2 성분에 대한 개개의 분류기를 결정하고, 결정된 개개의 샘플 오프셋에 기초하여 제2 성분의 개개의 샘플을 수정하기 위해 개개의 분류기에 따라 제2 성분의 개개의 샘플에 대한 개개의 샘플 오프셋을 결정하고, 그리고 각각의 개개의 분류기에 대한 한 세트의 대응하는 결정된 개개의 샘플 오프셋을 특정의 이전에 사용된 CCSAO 필터 오프셋 세트로서 저장함으로써 획득된다.
본 출원의 제2 양상에 따르면, 전자 장치는 하나 이상의 프로세싱 유닛, 메모리, 및 메모리에 저장된 복수의 프로그램을 포함한다. 프로그램은 하나 이상의 프로세싱 유닛에 의해 실행될 때 전자 장치로 하여금, 위에서 설명된 바와 같이 비디오 데이터를 코딩하는 방법을 수행하게 한다.
본 출원의 제3 양상에 따르면, 비-일시적 컴퓨터 판독 가능 저장 매체는 하나 이상의 프로세싱 유닛을 갖는 전자 장치에 의해 실행될 복수의 프로그램을 저장한다. 프로그램은 하나 이상의 프로세싱 유닛에 의해 실행될 때 전자 장치로 하여금, 위에서 설명된 바와 같이 비디오 데이터를 코딩하는 방법을 수행하게 한다.
본 출원의 제4 양상에 따르면, 컴퓨터 판독 가능 저장 매체는 위에서 설명된 바와 같은 비디오 코딩을 위한 방법에 의해 생성된 비디오 정보를 포함하는 비트스트림을 그 안에 저장한다.
앞서 말한 일반적인 설명 및 다음의 상세한 설명 모두는 단지 예일 뿐이며, 본 개시내용을 제한하지 않는다고 이해되어야 한다.
구현의 추가 이해를 제공하도록 포함되고 본 명세서에 통합되며 명세서의 일부를 구성하는 첨부 도면은 설명된 구현을 예시하고 설명과 함께 기본 원리를 설명하는 역할을 한다. 유사한 참조 번호가 대응하는 부분을 나타낸다.
도 1은 본 개시내용의 일부 구현에 따른 예시적인 비디오 인코딩 및 디코딩 시스템을 예시하는 블록도이다.
도 2는 본 개시내용의 일부 구현에 따른 예시적인 비디오 인코더를 예시하는 블록도이다.
도 3은 본 개시내용의 일부 구현에 따른 예시적인 비디오 디코더를 예시하는 블록도이다.
도 4a 내지 도 4e는 본 개시내용의 일부 구현에 따라 프레임이 상이한 크기 및 형상의 다수의 비디오 블록으로 어떻게 재귀적으로 파티셔닝되는지를 예시하는 블록도이다.
도 5a는 본 개시내용의 일부 구현에 따른, 샘플 적응 오프셋(SAO)에서 사용되는 4개의 기울기(gradient) 패턴을 도시하는 블록도이다.
도 5b는 본 개시내용의 일부 구현에 따른, 중앙 샘플을 둘러싸는 샘플에 대한 명명 규칙을 도시하는 블록도이다.
도 6a는 본 개시내용의 일부 구현에 따라, 크로마 샘플에 적용되고 입력으로서 DBF Y를 사용하는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다.
도 6b는 본 개시내용의 일부 구현에 따라, 루마 샘플 및 크로마 샘플에 적용되고 입력으로서 DBF Y/Cb/Cr을 사용하는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다.
도 6c는 본 개시내용의 일부 구현에 따라 독립적으로 작동할 수 있는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다.
도 6d는 본 개시내용의 일부 구현에 따라, 동일한 또는 상이한 오프셋으로 재귀적으로(2번 또는 N번) 적용될 수 있는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다.
도 6e는 본 개시내용의 일부 구현에 따라, AVS 표준에서 향상된 샘플 적응 오프셋(ESAO: Enhanced Sample Adaptive Offset)과 병렬로 적용되는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다.
도 6f는 본 개시내용의 일부 구현에 따른, SAO 이후에 적용되는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다.
도 6g는 본 개시내용의 일부 구현에 따라, CCSAO의 시스템 및 프로세스가 CCALF 없이 독립적으로 작동할 수 있음을 예시하는 블록도이다.
도 6h는 본 개시내용의 일부 구현에 따른, 교차 성분 적응형 루프 필터(CCALF: Cross-Component Adaptive Loop Filter)와 병렬로 적용되는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다.
도 6i는 본 개시내용의 일부 구현에 따른, SAO 및 BIF와 병렬로 적용되는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다.
도 6j는 본 개시내용의 일부 구현에 따라, SAO를 대체함으로써 BIF와 병렬로 적용되는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다.
도 7은 본 개시내용의 일부 구현에 따른 CCSAO를 사용하는 샘플 프로세스를 예시하는 블록도이다.
도 8은 본 개시내용의 일부 구현에 따라, CCSAO 프로세스가 수직 및 수평 블록 분리 필터(DBF: deblocking filter)에 인터리빙되는 것을 예시하는 블록도이다.
도 9는 본 개시내용의 일부 구현에 따른, 교차 성분 상관을 사용하여 비디오 신호를 디코딩하는 예시적인 프로세스를 예시하는 흐름도이다.
도 10a는 본 개시내용의 일부 구현에 따른, C0 분류를 위해 상이한 루마(또는 크로마) 샘플 포지션을 사용하는 분류기를 도시하는 블록도이다.
도 10b는 본 개시내용의 일부 구현에 따른, 루마 후보에 대한 상이한 형상의 일부 예를 예시한다.
도 11은 본 개시내용의 일부 구현에 따라, 모든 동일 위치에 있는(collocated) 그리고 이웃하는 루마/크로마 샘플이 CCSAO 분류에 공급될 수 있는 것을 예시하는 샘플 프로세스의 블록도이다.
도 12는 본 개시내용의 일부 구현에 따라, 동일 위치에 있는(collocated) 루마 샘플 값을 콜로케이트된 그리고 이웃하는 루마 샘플을 가중함으로써 획득된 값으로 대체함으로써 예시적인 분류기를 예시한다.
도 13은 본 개시내용의 일부 구현에 따른, 상이한 클리핑(clipping) 조합을 갖는 다른 루프 내 필터들과 함께 CCSAO가 적용되는 것을 예시하는 블록도이다.
도 14a는 본 개시내용의 일부 구현에 따라, 분류를 위해 사용되는 동일 위치에 있는(collocated) 그리고 이웃하는 루마(크로마) 샘플 중 임의의 샘플이 현재 픽처 외부에 있다면, 현재 크로마(루마) 샘플에 CCSAO가 적용되지 않는 것을 예시하는 블록도이다.
도 14b는 본 개시내용의 일부 구현에 따라, 분류에 사용되는 동일 위치에 있는(collocated) 그리고 이웃하는 루마 또는 크로마 샘플 중 임의의 샘플이 현재 픽처 외부에 있다면 현재 루마 또는 크로마 샘플에 대해 CCSAO가 적용되는 것을 예시하는 블록도이다.
도 14c는 본 개시내용의 일부 구현에 따라, 분류에 사용되는 대응하는 선택된 동일 위치에 있는(collocated) 또는 이웃하는 루마 샘플이 가상 경계(VB: virtual boundary)에 의해 정의된 가상 공간 외부에 있다면, 현재 크로마 샘플에 대해 CCSAO가 적용되지 않는 것을 예시하는 블록도이다..
도 15는 본 개시내용의 일부 구현에 따라 가상 경계 외부에 있는 루마 샘플에 반복적 또는 미러 패딩이 적용되는 것을 도시한다.
도 16은 본 개시내용의 일부 구현에 따라, 9개의 모든 동일 위치에 있는(collocated) 이웃하는 루마 샘플이 분류를 위해 사용된다면, 추가 1 루마 라인 버퍼가 요구되는 것을 도시한다.
도 17은 본 개시내용의 일부 구현에 따라 VB를 가로지르는 9개의 루마 후보의 CCSAO가 2개의 추가 루마 라인 버퍼를 증가시킬 수 있는 AVS에서의 예시를 도시한다.
도 18a는 본 개시내용의 일부 구현에 따라, VB를 가로지르는 9개의 루마 후보의 CCSAO가 1개의 추가 루마 라인 버퍼를 증가시킬 수 있는 VVC에서의 예시를 도시한다.
도 18b는 동일 위치에 있는(collocated) 또는 이웃하는 크로마 샘플이 현재 루마 샘플을 분류하기 위해 사용될 때, 선택된 크로마 후보가 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가 상이한 CCSAO 샘플 형상에 대해 양면 대칭 패딩을 사용하여 인에이블되는 것을 도시한다.
도 23은 본 개시내용의 일부 구현에 따른, 분류를 위해 제한된 수의 루마 후보를 사용하는 제약들을 도시한다.
도 24는 본 개시내용의 일부 구현에 따라, CCSAO 적용 구역이 코딩 트리 블록(CTB: coding tree block)/코딩 트리 유닛(CTU) 경계에 정렬되지 않은 것을 도시한다.
도 25는 본 개시내용의 일부 구현에 따라 CCSAO 적용 구역 프레임 파티션이 CCSAO 파라미터로 고정될 수 있음을 도시한다.
도 26은 본 개시내용의 일부 구현에 따라 CCSAO 적용 구역이 프레임/슬라이스/CTB 레벨로부터 분리된 이진 트리(BT: Binary-tree)/쿼드 트리(QT: Quad-tree)/3진 트리(TT: Ternary-tree)일 수 있음을 도시한다.
도 27은 본 개시내용의 일부 구현에 따른, 픽처 프레임 내의 상이한 레벨들에서 사용 및 스위칭되는 복수의 분류기를 예시하는 블록도이다.
도 28은 본 개시내용의 일부 구현에 따른, CCSAO 적용 구역 파티션이 동적이고 픽처 레벨에서 스위칭될 수 있음을 예시하는 블록도이다.
도 29는 본 개시내용의 일부 구현에 따른, CCSAO 분류기가 현재 또는 교차 성분 코딩 정보를 고려할 수 있는 것을 예시하는 도면이다.
도 30은 본 개시내용의 일부 구현에 따라, 본 개시내용에 개시된 SAO 분류 방법이 사후 예측 필터로서 기능하는 것을 예시하는 블록도이다.
도 31은 본 개시내용의 일부 구현에 따라, 사후 예측 SAO 필터에 대해, 각각의 성분이 분류를 위해 현재 및 이웃 샘플을 사용할 수 있음을 예시하는 블록도이다.
도 32는 본 개시내용의 일부 구현에 따라, 본 개시내용에 개시된 SAO 분류 방법이 재구성 후 필터로서 기능하는 것을 예시하는 블록도이다.
도 33은 본 개시내용의 일부 구현에 따른, 교차 성분 상관을 사용하여 비디오 신호를 디코딩하는 예시적인 프로세스를 예시하는 흐름도이다.
도 34는 본 개시내용의 일부 구현에 따른, 사용자 인터페이스와 결합된 컴퓨팅 환경을 예시하는 도면이다.
이제 특정한 구현에 대해 상세히 언급될 것이며, 그 예는 첨부 도면에 예시된다. 다음 상세한 설명에서는, 본 명세서에서 제시되는 청구 대상의 이해를 돕기 위해 많은 비-제한적인 특정 세부사항이 제시된다. 그러나 청구항의 범위를 벗어나지 않으면서 다양한 대안이 사용될 수 있고 청구 대상은 이러한 특정 세부사항 없이 실시될 수 있다는 것이 당해 기술분야에서 통상의 지식을 가진 자에게 명백할 것이다. 예를 들어, 본 명세서에서 제시되는 청구 대상이 디지털 비디오 능력을 갖는 많은 타입의 전자 디바이스 상에서 구현될 수 있음이 당해 기술분야에서 통상의 지식을 가진 자에게 명백할 것이다.
제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차 AVS 회의에서, AVS3-P2 베이스라인이 완성되었으며, 이는 HEVC 표준에 비해 대략 30% 비트 레이트 절감을 제공한다. 현재, 고성능 모델(HPM: high performance model)로 지칭되는 하나의 기준 소프트웨어가 AVS3 표준의 기준 구현을 설명하기 위해 AVS 그룹에 의해 유지된다. HEVC와 같이, AVS3 표준은 블록 기반 하이브리드 비디오 코딩 프레임워크 상에 구축된다.
도 1은 본 개시내용의 일부 구현에 따라 병렬로 비디오 블록을 인코딩 및 디코딩하기 위한 예시적인 시스템(10)을 예시하는 블록도이다. 도 1에 도시된 바와 같이, 시스템(10)은 목적지 디바이스(14)에 의해 나중에 디코딩될 비디오 데이터를 생성하여 인코딩하는 소스 디바이스(12)를 포함한다. 소스 디바이스(12) 및 목적지 디바이스(14)는 데스크톱 컴퓨터(desktop) 또는 랩톱(laptop) 컴퓨터, 태블릿(tablet) 컴퓨터, 스마트폰(smart phones), 셋톱 박스(set-top boxes), 디지털 미디어 플레이어(digital media players), 비디오 게임 콘솔(gaming consoles), 비디오 스트리밍(streaming) 디바이스 등을 포함하는 광범위한 전자 디바이스 중 임의의 디바이스를 포함할 수 있다. 일부 구현에서, 소스 디바이스(12) 및 목적지 디바이스(14)는 무선 통신 능력을 갖추고 있다.
일부 구현에서, 목적지 디바이스(14)는 링크(16)를 통해 디코딩될 인코딩된 비디오 데이터를 수신할 수 있다. 링크(16)는 인코딩된 비디오 데이터를 소스 디바이스(12)에서 목적지 디바이스(14)로 이동시킬 수 있는 임의의 타입의 통신 매체 또는 디바이스를 포함할 수 있다. 일례로, 링크(16)는 소스 디바이스(12)가 인코딩된 비디오 데이터를 목적지 디바이스(14)에 실시간으로 직접 전송할 수 있게 하는 통신 매체를 포함할 수 있다. 인코딩된 비디오 데이터는 무선 통신 프로토콜(protocol)과 같은 통신 표준에 따라 변조되어 목적지 디바이스(14)로 전송될 수 있다. 통신 매체는 무선 주파수(RF: radio frequency) 스펙트럼 또는 하나 이상의 물리적 전송 라인과 같은 임의의 무선 또는 유선 통신 매체를 포함할 수 있다. 통신 매체는 패킷 기반 네트워크, 이를테면 근거리 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크의 일부를 형성할 수 있다. 통신 매체는 라우터, 스위치, 기지국, 또는 소스 디바이스(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)는 비디오 캡처 디바이스, 예컨대 비디오 카메라, 이전에 캡처된 비디오를 포함하는 비디오 아카이브(archive), 비디오 콘텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스, 및/또는 컴퓨터 그래픽 데이터를 소스 비디오로서 생성하기 위한 컴퓨터 그래픽 시스템, 또는 이러한 소스의 조합을 포함할 수 있다. 일례로, 비디오 소스(18)가 보안 감시 시스템의 비디오 카메라라면, 소스 디바이스(12) 및 목적지 디바이스(14)는 카메라폰 또는 비디오폰을 형성할 수 있다. 그러나 본 출원에서 설명되는 구현은 일반적으로 비디오 코딩에 적용 가능할 수 있고, 무선 및/또는 유선 애플리케이션에 적용될 수 있다.
캡처되거나, 사전 캡처되거나 또는 컴퓨터 생성된 비디오는 비디오 인코더(20)에 의해 인코딩될 수 있다. 인코딩된 비디오 데이터는 소스 디바이스(12)의 출력 인터페이스(22)를 통해 목적지 디바이스(14)로 직접 전송될 수 있다. 인코딩된 비디오 데이터는 또한(또는 대안으로) 디코딩 및/또는 재생을 위해 목적지 디바이스(14) 또는 다른 디바이스에 의한 추후 액세스를 위해 저장 디바이스(32)에 저장될 수 있다. 출력 인터페이스(22)는 모뎀 및/또는 송신기를 더 포함할 수 있다.
목적지 디바이스(14)는 입력 인터페이스(28), 비디오 디코더(30) 및 디스플레이 디바이스(34)를 포함한다. 입력 인터페이스(28)는 수신기 및/또는 모뎀을 포함할 수 있고 인코딩된 비디오 데이터를 링크(16)를 통해 수신할 수 있다. 링크(16)를 통해 전달되는 또는 저장 디바이스(32) 상에 제공되는 인코딩된 비디오 데이터는 비디오 데이터를 디코딩할 때 비디오 디코더(30)에 의한 사용을 위해 비디오 인코더(20)에 의해 생성된 다양한 신택스 엘리먼트를 포함할 수 있다. 이러한 신택스 엘리먼트는 통신 매체 상에서 전송되거나, 저장 매체 상에 저장되거나, 파일 서버에 저장된 인코딩된 비디오 데이터 내에 포함될 수 있다.
일부 구현에서, 목적지 디바이스(14)는 통합 디스플레이 디바이스일 수 있는 디스플레이 디바이스(34) 및 목적지 디바이스(14)와 통신하도록 구성되는 외부 디스플레이 디바이스일 수 있다. 디스플레이 디바이스(34)는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 액정 디스플레이(LCD: liquid crystal display), 플라즈마 디스플레이, 유기 발광 다이오드(OLED: organic light emitting diode) 디스플레이 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스 중 임의의 디스플레이 디바이스를 포함할 수 있다.
비디오 인코더(20) 및 비디오 디코더(30)는 독점적 또는 산업 표준, 이를테면 VVC, HEVC, MPEG-4, Part 10, 고급 비디오 코딩(AVC), AVS 또는 이러한 표준의 확장에 따라 동작할 수 있다. 본 출원은 특정 비디오 코딩/디코딩 표준에 제한되지 않고 다른 비디오 코딩/디코딩 표준에 적용 가능할 수 있다고 이해되어야 한다. 소스 디바이스(12)의 비디오 인코더(20)는 이러한 현재 또는 미래의 표준 중 임의의 표준에 따라 비디오 데이터를 인코딩하도록 구성될 수 있다는 것이 일반적으로 고려된다. 유사하게, 목적지 디바이스(14)의 비디오 디코더(30)는 이러한 현재 또는 미래의 표준 중 임의의 표준에 따라 비디오 데이터를 디코딩하도록 구성될 수 있다는 것이 일반적으로 또한 고려된다.
비디오 인코더(20) 및 비디오 디코더(30)는 각각, 하나 이상의 마이크로프로세서, 디지털 신호 프로세서(DSP: digital signal processor), 주문형 집적 회로(ASIC: application specific integrated circuit), 필드 프로그래밍 가능 게이트 어레이(FPGA: field programmable gate array), 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 조합과 같은 다양한 적합한 인코더 회로 중 임의의 회로로서 구현될 수 있다. 전자 디바이스는 부분적으로는 소프트웨어에서 구현될 때, 소프트웨어에 대한 명령을 적절한 비-일시적 컴퓨터 판독 가능 매체에 저장하고, 본 개시내용에 개시된 비디오 코딩/디코딩 동작을 수행하도록 하나 이상의 프로세서를 사용하여 하드웨어에서 명령을 실행할 수 있다. 비디오 인코더(20) 및 비디오 디코더(30)는 각각 하나 이상의 인코더 또는 디코더에 포함될 수 있으며, 이들 중 어느 하나는 개개의 디바이스에서 조합된 인코더/디코더(CODEC)의 일부로서 통합될 수 있다.
도 2는 본 출원에서 설명되는 일부 구현에 따른 예시적인 비디오 인코더(20)를 예시하는 블록도이다. 비디오 인코더(20)는 비디오 프레임 내의 비디오 블록의 인트라 코딩 및 인터 예측 코딩을 수행할 수 있다. 인트라 예측 코딩은 공간 예측에 의존하여, 주어진 비디오 프레임 또는 픽처 내에서 비디오 데이터의 공간 중복성을 줄이거나 제거한다. 인터 예측 코딩은 시간 예측에 의존하여 비디오 시퀀스의 인접한 비디오 프레임 또는 픽처 내에서 비디오 데이터의 시간 중복성을 줄이거나 제거한다.
도 2에 도시된 바와 같이, 비디오 인코더(20)는 비디오 데이터 메모리(40), 예측 프로세싱 유닛(41), 디코딩된 픽처 버퍼(DPB: decoded picture buffer)(64), 합산기(50), 변환 프로세싱 유닛(52), 양자화 유닛(54) 및 엔트로피 인코딩 유닛(56)을 포함한다. 예측 프로세싱 유닛(41)은 움직임 추정 유닛(42), 움직임 보상 유닛(44), 파티션 유닛(45), 인트라 예측 프로세싱 유닛(46) 및 인트라 블록 복사(BC: block copy) 유닛(48)을 더 포함한다. 일부 구현에서, 비디오 인코더(20)는 또한 역양자화 유닛(58), 역변환 프로세싱 유닛(60), 및 비디오 블록 재구성을 위한 합산기(62)를 포함한다. 루프 내 필터(63), 이를테면 블록 분리 필터가 합산기(62)와 DPB(64) 사이에 포지셔닝되어, 재구성된 비디오로부터 블록화 아티팩트(blocky artifact)를 제거하도록 블록 경계를 필터링할 수 있다. 블록 분리 필터에 추가하여 다른 루프 내 필터(63)가 또한 합산기(62)의 출력을 필터링하는 데 사용될 수 있다. 추가로, 재구성된 CU가 참조 픽처 저장소에 들어가 차후 비디오 블록을 코딩하기 위한 참조로서 사용되기 전에, 루프 내 필터링(63), 이를테면 샘플 적응 오프셋(SAO) 및 적응형 루프 내 필터(ALF)가 재구성된 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 pass)를 수행할 수 있다.
일부 구현에서, 움직임 추정 유닛(42)은 움직임 벡터를 생성함으로써 현재 비디오 프레임에 대한 인터 예측 모드를 결정하는데, 이는 비디오 프레임의 시퀀스 내의 미리 결정된 패턴에 따라 참조 비디오 프레임 내의 예측 블록에 대한 현재 비디오 프레임 내의 비디오 블록의 예측 유닛(PU)의 변위를 지시한다. 움직임 추정 유닛(42)에 의해 수행되는 움직임 추정은 비디오 블록에 대한 움직임을 추정하는 움직임 벡터를 생성하는 프로세스이다. 예를 들어, 움직임 벡터는 현재 프레임 내에서 코딩되고 있는 현재 블록(또는 다른 코딩된 유닛)에 대해 참조 프레임 내의 예측 블록(또는 다른 코딩된 유닛)에 대한 현재 비디오 프레임 또는 픽처 내의 비디오 블록의 PU의 변위를 지시할 수 있다. 미리 결정된 패턴은 시퀀스의 비디오 프레임을 P 프레임 또는 B 프레임으로 지정할 수 있다. 인트라 BC 유닛(48)은 인터 예측을 위한 움직임 추정 유닛(42)에 의한 움직임 벡터의 결정과 유사한 방식으로 인트라 BC 코딩을 위한 벡터, 예컨대 블록 벡터를 결정할 수 있거나, 움직임 추정 유닛(42)을 이용하여 블록 벡터를 결정할 수 있다.
예측 블록은 절대 차의 합(SAD: sum of absolute difference), 제곱 차의 합(SSD: sum of square difference) 또는 다른 차이 메트릭(metric)에 의해 결정될 수 있는 픽셀 차이 측면에서, 코딩될 비디오 블록의 PU와 밀접하게 매칭(match)하는 것으로 간주되는 참조 프레임의 블록이다. 일부 구현에서, 비디오 인코더(20)는 DPB(64)에 저장된 참조 프레임의 정수 미만(sub-integer) 픽셀 포지션에 대한 값을 계산할 수 있다. 예를 들어, 비디오 인코더(20)는 참조 프레임의 1/4 픽셀 포지션, 1/8 픽셀 포지션, 또는 다른 부분 픽셀 포지션의 값을 보간할 수 있다. 따라서 움직임 추정 유닛(42)은 전체 픽셀 포지션 및 부분 픽셀 포지션에 대한 움직임 탐색을 수행하고 부분 픽셀 정밀도로 움직임 벡터를 출력할 수 있다.
움직임 추정 유닛(42)은 DPB(64)에 저장된 하나 이상의 참조 프레임을 각각이 식별하는 제1 참조 프레임 리스트(리스트 0) 또는 제2 참조 프레임 리스트(리스트 1)로부터 선택된 참조 프레임의 예측 블록의 포지션과 PU의 포지션을 비교함으로써, 인터 예측 코딩된 프레임에서 비디오 블록의 PU에 대한 움직임 벡터를 계산한다. 움직임 추정 유닛(42)은 계산된 움직임 벡터를 움직임 보상 유닛(44)으로 송신한 다음, 엔트로피 인코딩 유닛(56)으로 송신한다.
움직임 보상 유닛(44)에 의해 수행되는 움직임 보상은 움직임 추정 유닛(42)에 의해 결정된 움직임 벡터에 기초하여 예측 블록을 페치(fetch) 또는 생성하는 것을 수반할 수 있다. 현재 비디오 블록의 PU에 대한 움직임 벡터를 수신하면, 움직임 보상 유닛(44)은 참조 프레임 리스트 중 하나에서 움직임 벡터가 가리키는 예측 블록의 위치를 찾고, DPB(64)로부터 예측 블록을 리트리브(retrieve)하고, 예측 블록을 합산기(50)로 전달할 수 있다. 그 다음, 합산기(50)는 코딩되고 있는 현재 비디오 블록의 픽셀 값으로부터 움직임 보상 유닛(44)에 의해 제공되는 예측 블록의 픽셀 값을 감산함으로써 픽셀 차이 값의 잔차 비디오 블록을 형성한다. 잔차 비디오 블록을 형성하는 픽셀 차이 값은 루마 또는 크로마 차이 성분 또는 이들 모두를 포함할 수 있다. 움직임 보상 유닛(44)은 또한 비디오 프레임의 비디오 블록을 디코딩할 때 비디오 디코더(30)에 의한 사용을 위해 비디오 프레임의 비디오 블록과 연관된 신택스 엘리먼트를 생성할 수 있다. 신택스 엘리먼트는 예를 들어, 예측 블록을 식별하는 데 사용되는 움직임 벡터를 정의하는 신택스 엘리먼트, 예측 모드를 지시하는 임의의 플래그, 또는 여기서 설명되는 임의의 다른 신택스 정보를 포함할 수 있다. 움직임 추정 유닛(42) 및 움직임 보상 유닛(44)은 고도로 집적될 수 있지만, 개념을 위해 개별적으로 예시된다는 점에 주목한다.
일부 구현에서, 인트라 BC 유닛(48)은 움직임 추정 유닛(42) 및 움직임 보상 유닛(44)과 관련하여 위에서 설명된 것과 유사한 방식으로 벡터를 생성하고 예측 블록을 페치할 수 있지만, 예측 블록은 코딩되고 있는 현재 블록과 동일한 프레임에 존재하고, 벡터는 움직임 벡터와 대조적으로 블록 벡터로 지칭된다. 특히, 인트라 BC 유닛(48)은 현재 블록을 인코딩하기 위해 사용할 인트라 예측 모드를 결정할 수 있다. 일부 예에서, 인트라 BC 유닛(48)은 예컨대, 개별 인코딩 패스 동안 다양한 인트라 예측 모드를 사용하여 현재 블록을 인코딩하고, 레이트 왜곡 분석을 통해 이들의 성능을 테스트할 수 있다. 다음으로, 인트라 BC 유닛(48)은 다양한 테스트된 인트라 예측 모드 중에서 사용하기에 적절한 인트라 예측 모드를 선택하고, 그에 따라 인트라 모드 지시자를 생성할 수 있다. 예를 들어, 인트라 BC 유닛(48)은 다양한 테스트된 인트라 예측 모드에 대한 레이트 왜곡 분석을 사용하여 레이트 왜곡 값을 계산하고, 테스트된 모드 중 가장 양호한 레이트 왜곡 특징을 갖는 인트라 예측 모드를 사용하기에 적절한 인트라 예측 모드로서 선택할 수 있다. 레이트 왜곡 분석은 일반적으로, 인코딩된 블록과 인코딩된 블록을 생성하기 위해 인코딩된 원래의 인코딩되지 않은 블록 간의 왜곡(또는 에러)의 양뿐만 아니라, 인코딩된 블록을 생성하는 데 사용되는 비트 레이트(즉, 비트 수)를 결정한다. 인트라 BC 유닛(48)은 어떤 인트라 예측 모드가 블록에 대해 최상의 레이트 왜곡 값을 나타내는지를 결정하기 위해 다양한 인코딩된 블록에 대한 왜곡 및 레이트로부터 비율을 계산할 수 있다.
다른 예로서, 인트라 BC 유닛(48)은 움직임 추정 유닛(42) 및 움직임 보상 유닛(44)을 전체적으로 또는 부분적으로 사용하여, 본 명세서에서 설명되는 구현에 따른 인트라 BC 예측을 위해 이러한 기능을 수행할 수 있다. 어느 경우든, 인트라 블록 복사의 경우, 예측 블록은 절대 차의 합(SAD), 제곱 차의 합(SSD) 또는 다른 차이 메트릭에 의해 결정될 수 있는 픽셀 차이 측면에서, 코딩될 블록과 밀접하게 매칭하는 것으로 여겨지는 블록일 수 있고, 예측 블록의 식별은 정수 미만 픽셀 포지션에 대한 값의 계산을 포함할 수 있다.
예측 블록이 인트라 예측에 따라 동일한 프레임으로부터든 아니면 인터 예측에 따라 다른 프레임으로부터든, 비디오 인코더(20)는 코딩되고 있는 현재 비디오 블록의 픽셀 값에서 예측 블록의 픽셀 값을 감산함으로써 잔차 비디오 블록을 형성하여, 픽셀 차 값을 형성할 수 있다. 잔차 비디오 블록을 형성하는 픽셀 차이 값은 루마 및 크로마 성분 차이를 모두 포함할 수 있다.
인트라 예측 프로세싱 유닛(46)은 위에서 설명된 바와 같이, 움직임 추정 유닛(42) 및 움직임 보상 유닛(44)에 의해 수행되는 인터 예측, 또는 인트라 BC 유닛(48)에 의해 수행되는 인트라 블록 복사 예측에 대한 대안으로서, 현재 비디오 블록을 인트라 예측할 수 있다. 특히, 인트라 예측 프로세싱 유닛(46)은 현재 블록을 인코딩하기 위해 사용할 인트라 예측 모드를 결정할 수 있다. 그렇게 하기 위해, 인트라 예측 프로세싱 유닛(46)은 예컨대, 개별 인코딩 패스 동안 다양한 인트라 예측 모드를 사용하여 현재 블록을 인코딩할 수 있고, 인트라 예측 프로세싱 유닛(46)(또는 일부 예에서는 모드 선택 유닛)은 테스트된 인트라 예측 모드로부터 사용할 적절한 인트라 예측 모드를 선택할 수 있다. 인트라 예측 프로세싱 유닛(46)은 블록에 대해 선택된 인트라 예측 모드를 나타내는 정보를 엔트로피 인코딩 유닛(56)에 제공할 수 있다. 엔트로피 인코딩 유닛(56)은 비트스트림에서 선택된 인트라 예측 모드를 지시하는 정보를 인코딩할 수 있다.
예측 프로세싱 유닛(41)이 인터 예측 또는 인트라 예측을 통해 현재 비디오 블록에 대한 예측 블록을 결정한 후, 합산기(50)는 현재 비디오 블록에서 예측 블록을 감산함으로써 잔차 비디오 블록을 형성한다. 잔차 블록의 잔차 비디오 데이터는 하나 이상의 변환 유닛(TU)에 포함될 수 있고 변환 프로세싱 유닛(52)에 제공된다. 변환 프로세싱 유닛(52)은 이산 코사인 변환(DCT: discrete cosine transform) 또는 개념적으로 유사한 변환과 같은 변환을 사용하여 잔차 비디오 데이터를 잔차 변환 계수로 변환한다.
변환 프로세싱 유닛(52)은 결과적인 변환 계수를 양자화 유닛(54)으로 송신할 수 있다. 양자화 유닛(54)은 변환 계수를 양자화하여 비트 레이트를 더 감소시킨다. 양자화 프로세스는 또한 계수 중 일부 또는 전부와 연관된 비트 심도를 감소시킬 수 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수 있다. 일부 예에서, 양자화 유닛(54)은 다음에, 양자화된 변환 계수를 포함하는 행렬의 스캔을 수행할 수 있다. 대안으로, 엔트로피 인코딩 유닛(56)은 스캔을 수행할 수 있다.
양자화에 이어, 엔트로피 인코딩 유닛(56)은 양자화된 변환 계수를 예컨대, 컨텍스트 적응 가변 길이 코딩(CAVLC: context adaptive variable length coding), 컨텍스트 적응 2진 산술 코딩(CABAC), 신택스 기반 컨텍스트 적응 2진 산술 코딩(SBAC: syntax-based context-adaptive binary arithmetic coding), 확률 간격 분할 엔트로피(PIPE: probability interval partitioning entropy) 코딩 또는 다른 엔트로피 인코딩 방법 또는 기법을 사용하여 비디오 비트스트림으로 엔트로피 인코딩한다. 그 다음, 인코딩된 비트스트림은 비디오 디코더(30)에 전송되거나 비디오 디코더(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)(92)는 (예컨대, 인트라 또는 인터 예측 코딩 모드에서) 비디오 디코더(30)에 의해 비디오 데이터를 디코딩하는데 사용하기 위한 참조 비디오 데이터를 저장한다. 비디오 데이터 메모리(79) 및 DPB(92)는 다양한 메모리 디바이스, 이를테면 동기식 DRAM(SDRAM: synchronous DRAM)을 포함하는 동적 랜덤 액세스 메모리(DRAM: dynamic random access memory), 자기 저항성 RAM(MRAM: magneto-resistive RAM), 저항성 RAM(RRAM: resistive RAM), 또는 다른 타입의 메모리 디바이스 중 임의의 메모리 디바이스에 의해 형성될 수 있다. 예시를 위해, 비디오 데이터 메모리(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)에 저장된 참조 프레임을 기초로 디폴트 구성 기법을 사용하여 참조 프레임 리스트인 리스트 0 및 리스트 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)에 의해 생성된 대응하는 예측 블록을 합산함으로써 현재 비디오 블록에 대한 디코딩된 비디오 블록을 재구성한다. 복호화된 비디오 블록을 추가로 프로세싱하기 위해 합산기(90)와 DPB(92) 사이에 루프 내 필터(91)가 포지셔닝될 수 있다. 재구성된 CU가 참조 픽처 저장소에 들어가기 전에 루프 내 필터링(91), 이를테면 블록 분리 필터, 샘플 적응 오프셋(SAO) 및 적응형 루프 내 필터(ALF)가 재구성된 CU에 적용될 수 있다. 그 다음, 주어진 프레임의 디코딩된 비디오 블록은 DPB(92)에 저장되며, DPB(92)는 다음 비디오 블록의 후속 움직임 보상에 사용되는 참조 프레임을 저장한다. DPB(92), 또는 DPB(92)와 별개인 메모리 디바이스는 또한 도 1의 디스플레이 디바이스(34)와 같은 디스플레이 디바이스 상에서의 추후 표현을 위해 디코딩된 비디오를 저장할 수 있다.
통상적인 비디오 코딩 프로세스에서, 비디오 시퀀스는 통상적으로 프레임 또는 픽처의 정렬된 세트를 포함한다. 각각의 프레임은 SL, SCb 및 SCr로 표기된 3개의 샘플 배열을 포함할 수 있다. SL은 루마 샘플의 2차원 배열이다. SCb는 Cb 크로마 샘플의 2차원 배열이다. SCr은 Cr 크로마 샘플의 2차원 배열이다. 다른 경우에, 프레임은 단색일 수 있으며, 따라서 루마 샘플의 단 하나의 2차원 배열만을 포함한다.
HEVC와 같이, AVS3 표준은 블록 기반 하이브리드 비디오 코딩 프레임워크 상에 구축된다. 입력 비디오 신호는 (코딩 유닛(CU)들로 지칭되는) 블록 단위로 프로세싱된다. 쿼드 트리(quad-trees)에만 기초하여 블록을 파티셔닝하는 HEVC와 상이하게, AVS3에서, 하나의 코딩 트리 유닛(CTU)은 쿼드/2진/확장 쿼드 트리에 기초한 다양한 국소 특징에 적응하도록 CU로 분할된다. 추가로, HEVC에서 다수의 파티션 유닛 타입의 개념이 제거되는데, 즉 CU, 예측 유닛(PU: prediction unit) 및 변환 유닛(TU: transform unit)의 분리는 AVS3에 존재하지 않는다. 대신에, 각각의 CU가 추가 파티션 없이 예측과 변환 모두를 위한 기본 유닛으로서 항상 사용된다. AVS3의 트리 파티션 구조에서, 하나의 CTU는 먼저 쿼드 트리 구조에 기반하여 파티셔닝된다. 그 다음, 각각의 쿼드 트리 리프(leaf) 노드가 2진 및 확장 쿼드 트리 구조에 기반하여 추가로 파티셔닝될 수 있다.
도 4a에 도시된 바와 같이, 비디오 인코더(20)(또는 보다 구체적으로는 파티션 유닛(45))는 프레임을 먼저 한 세트의 코딩 트리 유닛(CTU)으로 파티셔닝함으로써 프레임의 인코딩된 표현을 생성한다. 비디오 프레임은 왼쪽에서 오른쪽으로 그리고 위에서 아래로 래스터 스캔 순서로 연속적으로 정렬된 정수개의 CTU를 포함할 수 있다. 각각의 CTU는 가장 큰 논리 코딩 유닛이고, CTU의 폭과 높이는 시퀀스 파라미터 세트에서 비디오 인코더(20)에 의해 시그널링되어, 비디오 시퀀스의 모든 CTU가 128×128, 64×64, 32×32, 및 16×16 중 하나인 동일한 크기를 갖는다. 그러나 본 출원이 반드시 특정한 크기로 제한되는 것은 아니라는 점이 주목되어야 한다. 도 4b에 도시된 바와 같이, 각각의 CTU는 루마 샘플의 하나의 코딩 트리 블록(CTB: coding tree block), 크로마 샘플의 2개의 대응하는 코딩 트리 블록, 및 코딩 트리 블록의 샘플을 코딩하는 데 사용되는 신택스 엘리먼트를 포함할 수 있다. 신택스 엘리먼트는 인터 또는 인트라 예측, 인트라 예측 모드, 움직임 벡터 및 다른 파라미터를 포함하여, 코딩된 픽셀 블록의 상이한 타입의 유닛의 속성 및 비디오 디코더(30)에서 비디오 시퀀스가 어떻게 재구성될 수 있는지를 설명한다. 단색 픽처 또는 3개의 개별 색 평면을 갖는 픽처에서, CTU는 코딩 트리 블록의 샘플을 코딩하는 데 사용되는 단일 코딩 트리 블록 및 신택스 엘리먼트를 포함할 수 있다. 코딩 트리 블록은 샘플의 N×N 블록일 수 있다.
더 나은 성능을 달성하기 위해, 비디오 인코더(20)는 CTU의 코딩 트리 블록에 대해 2진 트리 파티셔닝, 3진 트리 파티셔닝, 쿼드 트리 파티셔닝 또는 이들의 조합과 같은 트리 파티셔닝을 재귀적으로 수행하고 CTU를 더 작은 코딩 유닛(CU)으로 분할할 수 있다. 도 4c에 도시된 바와 같이, 64×64 CTU(400)는 먼저 각각 32×32의 블록 크기를 갖는 4개의 더 작은 CU로 분할된다. 4개의 더 작은 CU 중에서, CU(410)와 CU(420)는 각각 블록 크기에 따라 16×16의 4개의 CU로 분할된다. 2개의 16×16 CU(430, 440)는 각각 블록 크기에 따라 8×8의 4개의 CU로 추가 분할된다. 도 4d는 도 4c에 도시된 바와 같이 CTU(400)의 파티션 프로세스의 최종 결과를 예시하는 쿼드 트리 데이터 구조를 도시하며, 쿼드 트리의 각각의 리프 노드는 32×32 내지 8×8 범위의 각각의 크기의 하나의 CU에 대응한다. 도 4b에 도시된 CTU와 같이, 각각의 CU는 루마 샘플의 코딩 블록(CB: coding block) 및 동일한 크기의 프레임의 크로마 샘플의 2개의 대응하는 코딩 블록, 및 코딩 블록의 샘플을 코딩하는 데 사용되는 신택스 엘리먼트를 포함할 수 있다. 단색 픽처 또는 3개의 개별 색 평면을 갖는 픽처에서, CU는 코딩 블록의 샘플을 코딩하는 데 사용되는 단일 코딩 블록 및 신택스 구조를 포함할 수 있다. 도 4c 및 도 4d에 도시된 쿼드 트리 파티셔닝은 단지 예시를 위한 것이며 하나의 CTU는 쿼드/3진/2진 트리 파티션에 기초한 다양한 로컬 특징에 적응하도록 CU로 분할될 수 있다는 점이 주목되어야 한다. 다중 타입 트리 구조에서, 하나의 CTU는 쿼드 트리 구조로 파티셔닝되고 각각의 쿼드 트리 리프 CU는 2진 및 3진 트리 구조로 추가 파티셔닝될 수 있다. 도 4e에 도시된 바와 같이, AVS3에는 5개의 분리/파티셔닝 타입들, 즉 4진 파티셔닝, 수평 2진 파티셔닝, 수직 2진 파티셔닝, 수평 확장 쿼드 트리 파티셔닝 및 수직 확장 쿼드 트리 파티셔닝이 존재한다.
일부 구현에서, 비디오 인코더(20)는 CU의 코딩 블록을 하나 이상의 MxN 예측 블록(PB: prediction blocks)으로 추가 파티셔닝할 수 있다. 예측 블록은 동일한 인터 또는 인트라 예측이 적용되는 샘플의 직사각형(정사각형 또는 비정사각형) 블록이다. 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 잔차 블록의 각각의 샘플이 CU의 예측 Cb 블록 중 하나의 예측 Cb 블록의 Cb 샘플과 CU의 원래 Cb 코딩 블록의 대응하는 샘플 간의 차이를 지시하고, CU의 Cr 잔차 블록의 각각의 샘플은 CU의 예측 Cr 블록 중 하나의 예측 Cr 블록의 Cr 샘플과 CU의 원래 Cr 코딩 블록의 대응하는 샘플 간의 차이를 지시할 수 있도록, CU에 대한 Cb 잔차 블록 및 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차원 배열일 수 있다. 변환 계수는 스칼라 수량일 수 있다. 비디오 인코더(20)는 TU에 대한 Cb 계수 블록을 생성하기 위해 TU의 Cb 변환 블록에 하나 이상의 변환을 적용할 수 있다. 비디오 인코더(20)는 TU에 대한 Cr 계수 블록을 생성하기 위해 TU의 Cr 변환 블록에 하나 이상의 변환을 적용할 수 있다.
계수 블록(예컨대, 루마 계수 블록, Cb 계수 블록 또는 Cr 계수 블록)을 생성한 후, 비디오 인코더(20)는 계수 블록을 양자화할 수 있다. 양자화는 일반적으로, 변환 계수가 양자화되어 변환 계수를 나타내는 데 사용되는 데이터의 양을 가능한 감소시켜, 추가 압축을 제공하는 프로세스를 의미한다. 비디오 인코더(20)가 계수 블록을 양자화한 후에, 비디오 인코더(20)는 양자화된 변환 계수를 지시하는 신택스 엘리먼트를 엔트로피 인코딩할 수 있다. 예를 들어, 비디오 인코더(20)는 양자화된 변환 계수를 지시하는 신택스 엘리먼트에 대해 컨텍스트 적응 2진 산술 코딩(CABAC)을 수행할 수 있다. 마지막으로, 비디오 인코더(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마다 선택된 필터링 타입에 기반하여 구역 기반으로 수행된다. sao-type-idx에 대한 0의 값은 SAO 필터가 CTB에 적용되지 않음을 지시하고, 1 및 2 값은 대역 오프셋 및 에지 오프셋 필터링 타입의 사용을 각각 시그널링한다. 1과 같은 sao-type-idx에 의해 특정된 대역 오프셋 모드에서, 선택된 오프셋 값은 샘플 진폭에 직접적으로 의존한다. 이러한 모드에서, 전체 샘플 진폭 범위는 대역으로 지칭되는 32개의 세그먼트로 균일하게 분할되고, 이러한 대역 중 4개(이는 32개의 대역 내에서 연속적임)에 속하는 샘플 값은 대역 오프셋으로 지시된 송신된 값을 가산함으로써 수정되며, 이는 양수 또는 음수일 수 있다. 4개의 연속적인 대역을 사용하는 주된 이유는, 밴딩 아티팩트(banding artifact)가 나타날 수 있는 평활한 영역에서, CTB의 샘플 진폭이 대역 중 몇몇에만 집중되는 경향이 있기 때문이다. 추가로, 4개의 오프셋을 사용하는 설계 선택은 4개의 오프셋 값을 또한 사용하는 에지 오프셋 동작 모드로 통합된다. 2와 같은 sao-type-idx에 의해 특정된 에지 오프셋 모드에서, 0 내지 3의 값을 갖는 신택스 엘리먼트 sao-eo-class는 CTB에서 에지 오프셋 분류를 위해 수평, 수직 또는 2개의 대각선 기울기 방향 중 하나가 사용되는지 여부를 시그널링한다.
도 5a는 본 개시내용의 일부 구현에 따른, 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의 각각의 샘플은, 도 5a에 도시된 바와 같이, 어떤 포지션에 위치된 샘플 값(p)을 이웃 포지션에 위치된 2개의 샘플의 값(n0, n1)과 비교함으로써 5개의 EdgeIdx 카테고리 중 하나로 분류된다. 이러한 분류는 디코딩된 샘플 값에 기반하여 각각의 샘플에 대해 이루어지므로, EdgeIdx 분류에 대해 어떠한 추가 시그널링도 요구되지 않는다. 샘플 포지션에서의 EdgeIdx 카테고리에 따라, 1 내지 4의 EdgeIdx 카테고리에 대해, 송신된 룩업 테이블로부터의 오프셋 값이 샘플 값에 부가된다. 오프셋 값은 항상 카테고리 1 및 카테고리 2에 대해 양수이고 카테고리 3 및 카테고리 4에 대해 음수이다. 따라서 필터는 일반적으로, 에지 오프셋 모드에서 평활화 효과를 갖는다. 아래의 표 1-1은 SAO 에지 클래스에서의 샘플 EdgeIdx 카테고리를 예시한다.
표 1-1: SAO 에지 클래스에서의 샘플 EdgeIdx 카테고리.
SAO 타입 1 및 2의 경우, 총 4개의 진폭 오프셋 값이 각각의 CTB에 대해 디코더에 송신된다. 타입 1의 경우, 부호가 또한 인코딩된다. 오프셋 값 및 관련 신택스 엘리먼트들, 이를테면 sao-type-idx 및 sao-eo-class는 통상적으로 레이트 왜곡 성능을 최적화하는 기준들을 사용하여 인코더에 의해 결정된다. SAO 파라미터는 시그널링을 효율적으로 만들기 위해 병합 플래그를 사용하여 좌측 또는 위의 CTB로부터 상속되는 것으로 표시될 수 있다. 요약하면, SAO는 재구성된 신호의 추가 개선을 가능하게 하는 비선형 필터링 동작이며, 이는 평활한 영역 및 에지 주위에서 신호 표현을 향상시킬 수 있다.
일부 실시예에서, 사전 샘플 적응 오프셋(Pre-SAO: Pre-Sample Adaptive Offset)이 구현된다. 낮은 복잡도를 갖는 사전 SAO의 코딩 성능은 미래의 비디오 코딩 표준 개발에서 유망하다. 일부 예에서, 사전 SAO는 분류를 위해 루마 샘플을 사용하여 루마 성분 샘플에만 적용된다. 사전 SAO는 SAOV 및 SAOH로 지칭되는 2개의 SAO형 필터링 동작을 적용함으로써 동작하며, 이들은 기존(레거시) SAO를 적용하기 전에 블록 분리 필터(DBF)와 공동으로 적용된다. 제1 SAO형 필터(SAOV)는 수직 에지(DBFV)에 대한 블록 분리 필터가 적용된 후에 입력 픽처(Y 2)에 SAO를 적용하는 것으로서 동작한다.
여기서 T는 미리 결정된 양의 상수이고, d 1d 2는 아래 식으로 주어진 Y 1(i)와 Y 2(i) 사이의 샘플별 차이에 기반하여 2개의 클래스와 연관된 오프셋 계수이다:
.
에 대한 첫 번째 클래스는 가 되도록 모든 샘플 위치(i)를 취하는 것으로 주어지는 한편, 에 대한 두 번째 클래스는 로 주어진다. 오프셋 계수(,)는 기존의 SAO 프로세스에서와 동일한 방식으로, SAOV의 출력 픽처()와 원래 픽처() 사이의 평균 제곱 에러가 최소화되도록 인코더에서 계산된다. SAOV가 적용된 후, 제2 SAO형 필터 SAOH는, SAOV가 적용된 후 에 SAO를 적용하는 것으로 동작하며, 분류는 수평 에지(DBFH)에 대한 블록 분리 필터의 출력 픽처인 (i)와 (i) 사이의 샘플별 차이에 기반한다. SAOV에 대한 동일한 프로시저가 분류를 위해 대신 를 갖는 SAOH에 대해 적용된다. 2개의 오프셋 계수인 SAOH 및 SAOV 각각에 대한 인에이블 플래그 및 미리 결정된 임계값(T)은 슬라이스 레벨에서 시그널링된다. SAOH 및 SAOV는 루마 및 2개의 크로마 성분에 대해 독립적으로 적용된다.
일부 예시에서, SAOV와 SAOH 모두는 개개의 블록 분리(DBFV 또는 DBFH)에 의해 영향을 받는 픽처 샘플에 대해서만 동작한다. 그러므로 기존의 SAO 프로세스와 달리, 주어진 공간 구역 내의 모든 샘플의 서브세트(레거시 SAO의 경우 픽처 또는 CTU)만이 사전 SAO에 의해 프로세싱되고, 이는 픽처 샘플별 디코더 측 평균 동작에서 결과적인 증가를 낮게(예비 추정치에 따른 최악의 경우의 시나리오에서 샘플당 2개 또는 3개의 비교 및 2개의 가산) 유지한다. 사전 SAO는 디코더에 추가 샘플을 저장하지 않고 블록 분리 필터에 의해 사용되는 샘플만을 필요로 한다.
일부 실시예에서, 양방향 필터(BIF: bilateral filter)는 VVC를 넘어서는 압축 효율 탐구를 위해 구현된다. BIF는 샘플 적응 오프셋(SAO) 루프 필터 스테이지에서 수행된다. 양방향 필터(BIF) 및 SAO 모두는 블록 분리 필터로부터의 샘플을 입력으로서 사용한다. 각각의 필터는 샘플마다 오프셋을 생성하고, 이들은 ALF로 진행하기 전에 입력 샘플에 추가되고 그런 다음 클리핑된다.
구체적으로, 출력 샘플(I OUT )은 다음과 같이 획득되며:
여기서 I C 는 블록 분리 필터로부터의 입력 샘플이고, ΔI BIF 는 양방향 필터로부터의 오프셋이며, ΔI SAO 는 SAO로부터의 오프셋이다.
일부 실시예에서, 구현은 인코더가 CTU 및 슬라이스 레벨에서 필터링을 인에이블 또는 디세이블할 가능성을 제공한다. 인코더는 레이트 왜곡 최적화(RDO: Rate-distortion optimization) 비용을 평가함으로써 결정을 내린다.
다음의 신택스 엘리먼트가 PPS에서 도입된다:
표 1-2: 픽처 파라미터 세트 RBSP 신택스.
0과 같은 pps_bilateral_filter_enabled_flag는 PPS를 참조하는 슬라이스에 대해 양방향 루프 필터가 디세이블되는 것을 특정한다. 1과 같은 pps_bilateral_filter_flag는 PPS를 참조하는 슬라이스에 대해 양방향 루프 필터가 인에이블되는 것을 특정한다.
bilateral_filter_strength는 양방향 변환 블록 필터 프로세스에서 사용되는 양방향 루프 필터 강도 값을 특정한다. bilateral_filter_strength의 값은 0 내지 2까지의 범위에 있을 것이다.
bilateral_filter_qp_offset은 PPS를 참조하는 슬라이스에 대한 양방향 필터 룩업 테이블 LUT(x)의 도출에서 사용되는 오프셋을 특정한다. bilateral_filter_qp_offset은 -12 내지 +12까지의 범위에 있을 것이다.
다음의 신택스 엘리먼트가 도입된다:
표 1-3: 슬라이스 헤더 신택스.
표 1-4: 코딩 트리 유닛 신택스.
시멘틱은의 다음과 같다: 1과 같은 slice_bilateral_filter_all_ctb_enabled_flag는 양방향 필터가 인에이블되고 현재 슬라이스의 모든 CTB들에 적용되는 것을 특정한다 slice_bilateral_filter_all_ctb_enabled_flag가 존재하지 않는 경우, 이는 0과 같다고 유추된다.
1과 같은 slice_bilateral_filter_enabled_flag는 양방향 필터가 인에이블되고 현재 슬라이스의 CTB들에 적용될 수 있음을 특정한다 slice_bilateral_filter_enabled_flag가 존재하지 않는 경우, 이는 slice_bilateral_filter_all_ctb_enabled_flag와 동일한 것으로 유추된다.
1과 같은 bilateral_filter_ctb_flag [xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]는 양방향 필터가 루마 위치( xCtb, yCtb )에서 코딩 트리 유닛의 루마 코딩 트리 블록에 적용되는 것을 특정한다. 0과 같은 bilateral_filter_ctb_flag [ cIdx ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]는 양방향 필터가 루마 위치( xCtb, yCtb )에서 코딩 트리 유닛의 루마 코딩 트리 블록에 적용되지 않는 것을 특정한다. bilateral_filter_ctb_flag가 존재하지 않을 때, 이는 (slice_bilateral_filter_all_ctb_enabled_flag & slice_bilateral_filter_enabled_flag)와 같은 것으로 유추된다.
일부 예에서, 필터링되는 CTU들에 대해, 필터링 프로세스는 다음과 같이 진행된다. 샘플이 이용 가능하지 않은 픽처 경계에서, 양방향 필터는 이용 가능하지 않은 샘플을 채우기 위해 확장(샘플 반복)을 사용한다. 가상 경계에 대해, 거동은 SAO의 경우와 동일한데, 즉 필터링이 발생하지 않는다. 수평 CTU 경계를 가로지를 때, 양방향 필터는 SAO가 액세스하고 있는 것과 동일한 샘플에 액세스할 수 있다. 도 5b는 본 개시내용의 일부 구현에 따른, 중앙 샘플을 둘러싸는 샘플에 대한 명명 규칙을 도시하는 블록도이다. 일례로, 중앙 샘플 I C 가 CTU의 최상부 라인 상에 위치된다면, SAO가 행하는 것처럼, I NW , I A I NE 가 위의 CTU로부터 판독되지만, I AA 는 패딩(pad)되고, 따라서 어떠한 여분의 라인 버퍼도 필요하지 않다. 중앙 샘플 I C 를 둘러싸는 샘플은 도 5b에 따라 표시되며, 여기서 A, B, L 및 R은 위, 아래, 왼쪽 및 오른쪽을 나타내고, NW, NE, SW, SE는 북서 등을 나타낸다. 마찬가지로, AA는 위-위를 나타내고, BB는 아래-아래를 나타내는 식이다. 이러한 다이아몬드 형상은, 또는 을 사용하지 않고, 정사각형 필터 지원을 사용하는 다른 방법과 상이하다.
각각의 주변 샘플(, 등)은 대응하는 수정자 값(, 등)에 기인할 것이다. 이들은 다음과 같은 방식으로 계산된다: 샘플로부터 우측으로의 기여(I R )로 시작하여, 차이가 다음과 같이 계산되며:
여기서 |·|는 절대 값을 나타낸다. 10-비트가 아닌 데이터의 경우, 이 대신 사용되며, 여기서 8-비트 데이터에 대해 n = 8인 식이다. 결과적인 값은 이제 16보다 작도록 클리핑된다:
수정자 값은 이제 다음과 같이 계산되며:
여기서 는 qpb clip(0, 25, QP + bilateral_filter_qp_offset-17)의 값에 의해 결정된 16개의 값의 어레이이다:
qpb = 0이라면, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }
qpb = 1이라면, { 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }
qpb = 2라면, { 0, 2, 2, 2, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, }
qpb = 3이라면, { 0, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, -1, }
qpb = 4라면, { 0, 3, 3, 3, 2, 2, 1, 2, 1, 1, 1, 1, 0, 1, 1, -1, }
qpb = 5라면, { 0, 4, 4, 4, 3, 2, 1, 2, 1, 1, 1, 1, 0, 1, 1, -1, }
qpb = 6이라면, { 0, 5, 5, 5, 4, 3, 2, 2, 2, 2, 2, 1, 0, 1, 1, -1, }
qpb = 7이라면, { 0, 6, 7, 7, 5, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, -1, }
qpb = 8이라면, { 0, 6, 8, 8, 5, 4, 3, 3, 3, 3, 3, 2, 1, 2, 2, -2, }
qpb = 9라면, { 0, 7, 10, 10, 6, 4, 4, 4, 4, 3, 3, 2, 2, 2, 2, -2, }
qpb = 10이라면, { 0, 8, 11, 11, 7, 5, 5, 4, 5, 4, 4, 2, 2, 2, 2, -2, }
qpb = 11이라면, { 0, 8, 12, 13, 10, 8, 8, 6, 6, 6, 5, 3, 3, 3, 3, -2, }
qpb = 12라면, { 0, 8, 13, 14, 13, 12, 11, 8, 8, 7, 7, 5, 5, 4, 4, -2, }
qpb = 13이라면, { 0, 9, 14, 16, 16, 15, 14, 11, 9, 9, 8, 6, 6, 5, 6, -3, }
qpb = 14라면, { 0, 9, 15, 17, 19, 19, 17, 13, 11, 10, 10, 8, 8, 6, 7, -3, }
qpb = 15라면, { 0, 9, 16, 19, 22, 22, 20, 15, 12, 12, 11, 9, 9, 7, 8, -3, }
qpb = 16이라면, { 0, 10, 17, 21, 24, 25, 24, 20, 18, 17, 15, 12, 11, 9, 9, -3, }
qpb = 17이라면, { 0, 10, 18, 23, 26, 28, 28, 25, 23, 22, 18, 14, 13, 11, 11, -3, }
qpb = 18이라면, { 0, 11, 19, 24, 29, 30, 32, 30, 29, 26, 22, 17, 15, 13, 12, -3, }
qpb = 19라면, { 0, 11, 20, 26, 31, 33, 36, 35, 34, 31, 25, 19, 17, 15, 14, -3, }
qpb = 20이라면, { 0, 12, 21, 28, 33, 36, 40, 40, 40, 36, 29, 22, 19, 17, 15, -3, }
qpb = 21이라면, { 0, 13, 21, 29, 34, 37, 41, 41, 41, 38, 32, 23, 20, 17, 15, -3, }
qpb = 22라면, { 0, 14, 22, 30, 35, 38, 42, 42, 42, 39, 34, 24, 20, 17, 15, -3, }
qpb = 23이라면, { 0, 15, 22, 31, 35, 39, 42, 42, 43, 41, 37, 25, 21, 17, 15, -3, }
qpb = 24라면, { 0, 16, 23, 32, 36, 40, 43, 43, 44, 42, 39, 26, 21, 17, 15, -3, }
qpb = 25라면, { 0, 17, 23, 33, 37, 41, 44, 44, 45, 44, 42, 27, 22, 17, 15, -3, }
이러한 값은 항목당 6 비트를 사용하여 저장되어, 모두 0인 첫 번재 행을 제외한다면 26*16*6/8=312 바이트 또는 300 바이트가 될 수 있다. , 에 대한 수정자 값은 , 로부터 동일한 방식으로 계산된다. 대각 샘플(), 및 두 단계 떨어진 샘플(, , , 및 )의 경우, 계산은 또한, 식 2 및 식 3을 따르지만, 1만큼 시프트된 값을 사용한다. 대각 샘플 I SE 를 일례로 사용하면 다음과 같고,
다른 대각 샘플 및 2 단계 떨어진 샘플이 마찬가지로 계산된다.
수정자 값은 다음과 같이 함께 합산된다:
일부 예에서, 는 이전 샘플에 대해 와 같다. 마찬가지로, 는 위의 샘플에 대해 와 같고, 대각 및 2 단계 떨어진 수정자 값에 대해서도 또한 유사한 대칭들이 발견될 수 있다. 이는 하드웨어 구현에서, 6개의 값(, 및 )을 계산하는 것으로 충분하고, 나머지 6개의 값은 이전에 계산된 값으로부터 획득될 수 있음의 의미한다.
값은 이제 c = 1, 2 또는 3과 곱해지는데, 이는 다음의 방식으로 단일 가산기 및 논리 AND 게이트를 사용하여 수행될 수 있으며:
여기서 &는 논리곱이고, k 1은 곱셈기(c)의 최상위 비트이며, k 2는 최하위 비트이다. 곱할 값은 표 1 - 표 5에 도시된 바와 같이 최소 블록 차원 D = min(width, height)을 사용하여 획득된다:
표 1-5: 블록의 최소 사이즈 D = min(폭, 높이)로부터 c 파라미터를 획득하는 것.
마지막으로, 양방향 필터 오프셋 가 계산된다. 전체 강도 필터링을 위해, 다음이 사용되며:
반면에 1/2 강도 필터링의 경우, 다음이 사용된다:
n-비트 데이터에 대한 일반식은 다음 식을 사용하며:
여기서 bilateral_filter_strength는 0 또는 1일 수 있고 pps에서 시그널링된다.
일부 실시예에서, 교차 성분 정보를 도입함으로써 코딩 효율을 개선하거나 샘플 적응 오프셋(SAO)의 복잡성을 감소시키기 위한 방법 및 시스템이 본 명세서에 개시된다. SAO는 HEVC, VVC, AVS2 및 AVS3 표준에서 사용된다. HEVC, VVC, AVS2 및 AVS3 표준에서의 기존의 SAO 설계가 다음의 설명에서 기본 SAO 방법으로서 사용되지만, 비디오 코딩 분야에서 통상의 지식을 가진 자에게, 본 개시내용에서 설명되는 교차 성분 방법은 다른 루프 필터 설계 또는 유사한 설계 사상을 갖는 다른 코딩 툴에도 또한 적용될 수 있다. 예를 들어, AVS3 표준에서, SAO는 향상된 샘플 적응 오프셋(ESAO)으로 지칭되는 코딩 툴로 대체된다. 그러나 본 명세서에서 개시되는 CCSAO는 또한 ESAO와 병렬로 적용될 수 있다. 다른 예에서, CCSAO는 AV1 표준에서 제한된 방향성 강화 필터(CDEF: Constraineddirectional Enhancement Filter)와 병렬로 적용될 수 있다.
HEVC, VVC, AVS2 및 AVS3 표준에서의 기존의 SAO 설계의 경우, 루마 Y, 크로마 Cb 및 크로마 Cr 샘플 오프셋 값은 독립적으로 결정된다. 즉, 예를 들어, 현재 크로마 샘플 오프셋은 동일 위치에 있는(collocated) 또는 이웃하는 루마 샘플을 고려하지 않고, 현재 및 이웃 크로마 샘플 값에 의해서만 결정된다. 그러나 루마 샘플은 크로마 샘플보다 더 많은 원래 픽처 세부사항 정보를 보존하며, 이들은 현재 크로마 샘플 오프셋의 결정에 유익할 수 있다. 더욱이, 크로마 샘플은 일반적으로, RGB로부터 YCbCr로의 컬러 변환 후에 또는 양자화 및 블록 분리 필터 후에 고주파 세부사항들을 상실하기 때문에, 크로마 오프셋 결정을 위해 고주파 세부사항이 보존된 루마 샘플을 도입하는 것은 크로마 샘플 재구성에 이익을 줄 수 있다. 그러므로 교차 성분 상관을 탐구함으로써, 예를 들어 교차 성분 샘플 적응 오프셋(CCSAO)의 방법 및 시스템을 사용함으로써 추가 이득이 예상될 수 있다. 일부 실시예에서, 여기서 상관은 교차 성분 샘플 값을 포함할 뿐만 아니라, 교차 성분으로부터의 예측/잔차 코딩 모드, 변환 타입, 및 양자화/블록 분리 필터/SAO/ALF 파라미터와 같은 픽처/코딩 정보를 포함한다.
다른 예는 SAO의 경우이며, 루마 샘플 오프셋은 루마 샘플에 의해서만 결정된다. 그러나 예를 들어, 동일한 대역 오프셋(BO: band offset) 분류를 갖는 루마 샘플은 그의 동일 위치에 있는(collocated) 그리고 이웃하는 크로마 샘플에 의해 추가로 분류될 수 있으며, 이는 보다 효과적인 분류로 이어질 수 있다. SAO 분류는 원래 픽처와 재구성된 픽처 사이의 샘플 차이를 보상하기 위한 지름길로서 취해질 수 있다. 따라서 효과적인 분류가 요구된다.
도 6a는 본 개시내용의 일부 구현에 따라, 크로마 샘플에 적용되고 입력으로서 DBF Y를 사용하는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다. 루마 블록 분리 필터(DBF Y) 이후의 루마 샘플은 SAO Cb 및 SAO Cr 이후의 크로마 Cb 및 Cr에 대한 추가 오프셋을 결정하는 데 사용된다. 예를 들어, 현재 크로마 샘플(602)은 먼저 동일 위치에 있는(collocated)(604) 그리고 이웃하는 (백색) 루마 샘플(606)을 사용하여 분류되고, 대응하는 클래스의 대응하는 CCSAO 오프셋 값이 현재 크로마 샘플 값에 부가된다. 도 6b는 본 개시내용의 일부 구현에 따라, 루마 샘플 및 크로마 샘플에 적용되고 입력으로서 DBF Y/Cb/Cr을 사용하는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다. 도 6c는 본 개시내용의 일부 구현에 따라 독립적으로 작동할 수 있는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다. 도 6d는 본 개시내용의 일부 구현에 따른, 동일한 코덱 스테이지에서 동일한 또는 상이한 오프셋으로 재귀적으로(2번 또는 N번) 적용될 수 있거나 상이한 스테이지에서 반복될 수 있는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다. 요약하면, 일부 실시예에서, 현재 루마 샘플을 분류하기 위해, 현재 및 이웃 루마 샘플의 정보, 동일 위치에 있는(collocated) 그리고 이웃하는 크로마 샘플(Cb, Cr)의 정보가 사용될 수 있다. 일부 실시예에서, 현재 크로마 샘플(Cb 또는 Cr)을 분류하기 위해, 동일 위치에 있는(collocated) 그리고 이웃하는 루마 샘플, 동일 위치에 있는(collocated) 그리고 이웃하는 교차 크로마 샘플, 및 현재 및 이웃 크로마 샘플이 사용될 수 있다. 일부 실시예에서, 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, 또는 신경망 루프 필터(NNLF: Neural Network Loop Filter)와 병렬로 적용될 수 있다. 도 6e는 본 개시내용의 일부 구현에 따라, AVS 표준에서 ESAO와 병렬로 적용되는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다.
도 6f는 본 개시내용의 일부 구현에 따른, SAO 이후에 적용되는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다. 일부 실시예에서, 도 6f는 CCSAO의 위치가 SAO, 즉 VVC 표준에서 교차 성분 적응형 루프 필터(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로서 표시될 수 있다는 점에 주목한다. 일부 실시예에서, 비디오가 RGB 포맷이라면, CCSAO는 또한, 본 개시내용에서 각각 YUV 표기법을 GBR에 간단히 매핑함으로써 적용될 수 있다.
도 6i는 본 개시내용의 일부 구현에 따른, SAO 및 BIF와 병렬로 적용되는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다.
도 6j는 본 개시내용의 일부 구현에 따라, SAO를 대체함으로써 BIF와 병렬로 적용되는 CCSAO의 시스템 및 프로세스를 예시하는 블록도이다.
일부 실시예에서, 현재의 크로마 샘플 분류는 동일 위치에 있는(collocated) 루마 샘플의 SAO 타입(에지 오프셋(EO) 또는 BO), 클래스 및 카테고리를 재사용하고 있다. 대응하는 CCSAO 오프셋은 디코더 자체로부터 시그널링되거나 도출될 수 있다. 예를 들어, h_Y는 동일 위치에 있는 루마 SAO 오프셋이고, h_Cb 및 h_Cr은 각각 CCSAO Cb 및 Cr 오프셋이라고한다. h_Cb (or h_Cr) = w * h_Y이며, 여기서 w는 제한된 테이블에서 선택될 수 있다. 예를 들어, +-1/4, +-1/2, 0, +-1, +-2, +-4… 등이며, 여기서 |w| 는 2의 거듭제곱 값만을 포함한다.
일부 실시예에서, 동일 위치에 있는 루마 샘플(Y0) 및 이웃하는 8개의 루마 샘플의 비교 스코어 [-8, 8]가 사용되며, 이는 총 17개의 클래스를 산출한다.
초기 클래스 = 0
이웃하는 8개의 루마 샘플에 대한 루프(Yi, i=1 내지 8)
일부 실시예에서, 위에서 언급된 분류 방법은 조합될 수 있다. 예를 들어, 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이다.
그리고 최대 Y0 및 최대 Yi를 CCSAO 분류에 공급한다.
도 8은 본 개시내용의 일부 구현에 따라, CCSAO 프로세스가 수직 및 수평 DBF에 인터리빙되는 것을 예시하는 블록도이다. 일부 실시예에서, 도 6, 도 7 및 도 8의 CCSAO 블록은 선택적일 수 있다. 예를 들어, 첫 번째 CCSAO_V에 대해 Y0_DBF_V 및 Yi_DBF_V를 사용하는 것은 도 6에서와 동일한 샘플 프로세싱을 적용하면서, CCSAO 입력으로서 DBF_V 루마 샘플의 입력을 사용한다.
일부 실시예에서, 구현된 CCSAO 신택스는 아래의 표 2에 도시된다.
표 2: CCSAO 신택스의 일례
일부 실시예에서, CCSAO Cb 및 Cr 오프셋 값을 시그널링하기 위해, 하나의 추가 크로마 오프셋이 시그널링된다면, 플러스 또는 마이너스 부호에 의해 또는 비트 오버헤드를 절감하도록 가중함으로써 다른 크로마 성분 오프셋이 도출될 수 있다. 예를 들어, h_Cb 및 h_Cr을 각각 CCSAO Cb 및 Cr의 오프셋이라고한다. 명시적 시그널링 w(여기서 w = +- | w |, 제한된 | w | 후보를 가짐)를 이용하여, h_Cr 자체를 명시적인 시그널링하지 않고 h_Cb로부터 h_Cr이 도출될 수 있다.
도 9는 본 개시내용의 일부 구현에 따른, 교차 성분 상관을 사용하여 비디오 신호를 디코딩하는 예시적인 프로세스(900)를 예시하는 흐름도이다.
비디오 디코더(30)는 제1 성분 및 제2 성분을 포함하는 비디오 신호를 수신한다(910). 일부 실시예에서, 제1 성분은 루마 성분이고, 제2 성분은 비디오 신호의 크로마 성분이다.
비디오 디코더(30)는 또한 제2 성분과 연관된 복수의 오프셋을 수신한다(920).
그 다음, 비디오 디코더(30)는 제2 성분과 연관된 분류 카테고리를 획득하기 위해 제1 성분의 특성 측정을 이용한다(930). 예를 들어, 도 6에서, 현재 크로마 샘플(602)은 먼저 동일 위치에 있는(604) 그리고 이웃하는 (백색) 루마 샘플(606)을 사용하여 분류되고, 대응하는 CCSAO 오프셋 값이 현재 크로마 샘플에 부가된다.
비디오 디코더(30)는 추가로, 분류 카테고리에 따라 제2 성분에 대한 복수의 오프셋으로부터 제1 오프셋을 선택한다(940).
비디오 디코더(30)는 선택된 제1 오프셋에 기초하여 제2 성분을 추가로 수정한다(950).
일부 실시예에서, 제2 성분과 연관된 분류 카테고리를 획득하기 위해 제1 성분의 특징 측정을 이용하는 것(930)은: 제2 성분의 개개의 각각의 샘플의 개개의 분류 카테고리를 획득하기 위해 제1 성분의 개개의 샘플을 이용하는 것을 포함하며, 제1 성분의 개개의 샘플은 제2 성분의 개개의 각각의 샘플에 대한 제1 성분의 개개의 동일 위치에 있는 샘플이다. 예를 들어, 현재의 크로마 샘플 분류는 동일 위치에 있는 루마 샘플의 SAO 타입(EO 또는 BO), 클래스 및 카테고리를 재사용하고 있다.
일부 실시예에서, 제2 성분과 연관된 분류 카테고리를 획득하기 위해 제1 성분의 특징 측정을 이용하는 것(930)은: 제2 성분의 개개의 각각의 샘플의 개개의 분류 카테고리를 획득하기 위해 제1 성분의 개개의 샘플을 이용하는 것을 포함하며, 제1 성분의 개개의 샘플은 블록 분리되기 전에 재구성되거나 또는 블록 분리된 후에 재구성된다. 일부 실시예에서, 제1 성분은 블록 분리 필터(DBF)에서 블록 분리된다. 일부 실시예에서, 제1 성분은 루마 블록 분리 필터(DBF Y)에서 블록 분리된다. 예를 들어, 도 6 또는 도 7에 대한 대안으로, CCSAO 입력은 또한 DBF Y 이전에 있을 수 있다.
일부 실시예에서, 특징 측정은 제1 성분의 샘플 값의 범위를 여러 대역으로 분할하고 제1 성분의 샘플의 강도 값에 기초하여 대역을 선택함으로써 도출된다. 일부 실시예에서, 특징 측정은 대역 오프셋(BO)으로부터 도출된다.
일부 실시예에서, 특징 측정은 제1 성분 내의 샘플의 에지 정보의 방향 및 강도에 기반하여 도출된다. 일부 실시예에서, 특징 측정은 에지 오프셋(EO: Edge Offset)으로부터 도출된다.
일부 실시예에서, 제2 성분을 수정하는 것(950)은 선택된 제1 오프셋을 제2 성분에 직접적으로 부가하는 것을 포함한다. 예를 들어, 대응하는 CCSAO 오프셋 값이 현재 크로마 성분 샘플에 부가된다.
일부 실시예에서, 제2 성분을 수정하는 것(950)은 선택된 제1 오프셋을 제2 오프셋에 매핑하고 매핑된 제2 오프셋을 제2 성분에 부가하는 것을 포함한다. 예를 들어, CCSAO Cb 및 Cr 오프셋 값을 시그널링하기 위해, 하나의 추가 크로마 오프셋이 시그널링된다면, 플러스 또는 마이너스 부호를 사용함으로써 또는 비트 오버헤드를 절감하도록 가중함으로써 다른 크로마 성분 오프셋이 도출될 수 있다.
일부 실시예에서, 비디오 신호를 수신하는 것(910)은 CCSAO를 사용하여 비디오 신호를 디코딩하는 방법이 시퀀스 파라미터 세트(SPS: Sequence Parameter Set)의 비디오 신호에 대해 인에이블되는지 여부를 지시하는 신택스 엘리먼트를 수신하는 것을 포함한다. 일부 실시예에서, cc_sao_enabled_ag는 CCSAO가 시퀀스 레벨에서 인에이블되는지 여부를 지시한다.
일부 실시예에서, 비디오 신호를 수신하는 것(910)은 CCSAO를 사용하여 비디오 신호를 디코딩하는 방법이 슬라이스 레벨에서 제2 성분에 대해 인에이블되는지 여부를 지시하는 신택스 엘리먼트를 수신하는 것을 포함한다. 일부 실시예에서, slice_cc_sao_cb_flag 또는 slice_cc_sao_cr_flag는 Cb 또는 Cr에 대해 개개의 슬라이스에서 CCSAO가 인에이블되는지 여부를 지시한다.
일부 실시예에서, 제2 성분과 연관된 복수의 오프셋을 수신하는 것(920)은 상이한 코딩 트리 유닛(CTU)에 대한 상이한 오프셋을 수신하는 것을 포함한다. 일부 실시예에서, CTU에 대해, cc_sao_offset_sign_flag는 오프셋에 대한 부호를 지시하고, cc_sao_offset_abs는 현재 CTU의 CCSAO Cb 및 Cr 오프셋 값을 지시한다.
일부 실시예에서, 제2 성분과 연관된 복수의 오프셋을 수신하는 것(920)은, CTU의 수신된 오프셋이 CTU의 이웃 CTU 중 하나의 CTU의 오프셋과 동일한지 여부를 지시하는 신택스 엘리먼트를 수신하는 것을 포함하고, 이웃 CTU는 좌측 또는 최상부 이웃 CTU이다. 예를 들어, cc_sao_merge_up_flag는 CCSAO 오프셋이 좌측으로부터 병합되는지 또는 상부 CTU로부터 병합되는지를 지시한다.
일부 실시예에서, 비디오 신호는 제3 컴포넌트를 더 포함하고, CCSAO를 사용하여 비디오 신호를 디코딩하는 방법은: 제3 컴포넌트와 연관된 제2 복수의 오프셋을 수신하는 단계; 제3 컴포넌트와 연관된 제2 분류 카테고리를 획득하기 위해 제1 성분의 특징 측정을 이용하는 단계; 제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: Picture parameter set)/픽처 헤더(PH)/슬라이스 헤더(SH)/구역/코딩 트리 유닛(CTU)/코딩 유닛(CU)/서브블록/샘플 레벨에서 스위칭될 수 있다. 예를 들어, 도 10에서는, 아래 표 4에 도시된 바와 같이, POC0에 대해 Y0을 사용하지만 POC1에 대해 Y7을 사용한다.
표 4: 상이한 픽처에 적용되는 상이한 분류기
일부 실시예에서, 도 10b는 본 개시내용의 일부 구현에 따른, 루마 후보에 대한 상이한 형상의 일부 예를 예시한다. 예를 들어, 형상에 제약이 적용될 수 있다. 일부 경우들에서, 도 10b의 (b), (c), (d)에 도시된 바와 같이, 루마 후보의 총 수는 2의 거듭제곱이어야 한다. 일부 경우들에서, 도 10b의 (a), (c), (d), (e)에 도시된 바와 같이, 루마 후보의 수는 (중앙의) 크로마 샘플에 대해 수평 및 수직 대칭이어야 한다. 일부 실시예에서, 2의 거듭제곱 제약 및 대칭 제약은 또한 크로마 후보에 대해 적용될 수 있다. 도 6b 및 도 6c의 U/V 부분은 대칭적 제약에 대한 예를 도시한다. 일부 실시예에서, 상이한 컬러 포맷은 상이한 분류기 "제약들"을 가질 수 있다. 예를 들어, 420 컬러 포맷은 도 6b 및 도 6c에 도시된 바와 같이 루마/크로마 후보 선택(3×3 형상으로부터 선택된 하나의 후보)을 사용하지만, 444 컬러 포맷은 루마 및 크로마 후보 선택을 위해 도 10b(f)를 사용하며, 422 컬러 포맷은 루마(2개의 크로마 샘플이 4개의 루마 후보를 공유함)에 대해 도 10b(g)를, 크로마 후보에 대해 도 10b(f)를 사용한다.
일부 실시예에서, C0 포지션 및 C0 band_num은 SPS/APS/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨에서 조합 및 스위칭될 수 있다. 상이한 조합은 아래 표 5에 도시된 바와 같이 상이한 분류기일 수 있다.
표 5: 상이한 픽처에 적용되는 상이한 분류기 및 대역 번호 조합
일부 실시예에서, 동일 위치에 있는 루마 샘플 값(Y0)은 동일 위치에 있는 그리고 이웃하는 루마 샘플을 가중함으로써 획득된 값(Yp)으로 대체된다. 도 12는 본 개시내용의 일부 구현에 따라, 동일 위치에 있는 루마 샘플 값을 동일 위치에 있는 그리고 이웃하는 루마 샘플을 가중함으로써 획득된 값으로 대체함으로써 예시적인 분류기를 예시한다. 동일 위치에 있는 루마 샘플 값(Y0)은 이웃하는 루마 샘플을 가중함으로써 획득된 위상 정정 값(Yp)으로 대체될 수 있다. 상이한 Yp는 상이한 분류기일 수 있다.
일부 실시예에서, 상이한 크로마 포맷에 대해 상이한 Yp가 적용된다. 도 12에서, (a)의 Yp는 420 크로마 포맷에 대해 사용되고, (b)의 Yp는 422 크로마 포맷에 대해 사용되고, Y0은 444 크로마 포맷에 대해 사용된다.
일부 실시예에서, 다른 분류기(C1)는 동일 위치에 있는 루마 샘플(Y0) 및 이웃하는 8개의 루마 샘플의 비교 스코어 [-8, 8]이며, 이는 아래에 도시된 바와 같이 총 17개의 클래스를 산출한다.
초기 클래스 (C1) = 0, 이웃하는 8개의 루마 샘플에 대한 루프(Yi, i=1 내지 8)
일부 실시예에서, C1 예는 임계치(th)가 0인 다음의 함수와 동일하다.
여기서 Index2ClassTable은 룩업 테이블(LUT: look up table)이고, C는 현재 또는 동일 위치에 있는 샘플이며, P1 내지 P8은 이웃하는 샘플이다.
일부 실시예에서, C4 분류기와 유사하게, 하나 이상의 임계치가 사전 정의(예컨대, LUT에 유지)될 수 있거나 또는 차이를 분류(양자화)하는 것을 돕도록 SPS/APS/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨에서 시그널링될 수 있다.
일부 실시예에서, 변동(C1')은 비교 스코어 [0, 8]만을 카운트하며, 이는 8개의 클래스를 산출한다. (C1, C1')은 분류기 그룹이고, PH/SH 레벨 플래그는 C1과 C1' 사이에서 스위칭하도록 시그널링될 수 있다.
초기 클래스 (C1') = 0, 이웃하는 8개의 루마 샘플에 대한 루프(Yi, i=1 내지 8)
일부 실시예에서, 변동(C1s)은 비교 스코어를 카운팅하기 위해 M개의 이웃하는 샘플 중 이웃하는 N개를 선택적으로 사용하는 것이다. 비교 스코어를 카운팅하기 위해 어느 이웃 샘플이 선택되는지를 지시하도록, M-비트 비트마스크가 SPS/APS/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨에서 시그널링될 수 있다. 루마 분류기에 대한 일례로 도 6b를 사용하면: 8개의 이웃하는 루마 샘플이 후보이고, 8-비트 비트마스크(01111110)가 PH에서 시그널링되어, Y1 내지 Y6의 6개의 샘플이 선택되었음을 지시하고, 따라서 비교 스코어는 [-6, 6]에 있으며, 이는 13개의 오프셋을 산출한다. 선택적 분류기(C1s)는 오프셋 시그널링 오버헤드와 분류 입도 사이에서 절충(trade-off)할 더 많은 선택들을 인코더에 제공한다.
C1s와 유사하게, 변동(C1S)은 단지 비교 스코어 [0, +N]을 카운팅하는 것이며, 이전 비트마스크 01111110 예는 [0, 6]에 비교 스코어를 제공하며, 이는 7개의 오프셋을 산출한다.
일부 실시예에서, 상이한 분류기가 조합되어 일반 분류기를 산출한다. 예를 들어, 상이한 픽처(상이한 POC 값)에 대해, 아래 표 6-1에 도시된 바와 같이 상이한 분류기가 적용된다.
표 6-1: 상이한 픽처에 적용되는 상이한 일반 분류기
일부 실시예에서, 다른 분류기 예(C3)는 표 6-2에 도시된 바와 같은 분류를 위해 비트마스크를 사용하고 있다. 분류기를 지시하기 위해 10-비트 비트마스크가 SPS/APS/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨에서 시그널링된다. 예를 들어, 비트마스크 11 1100 0000은 주어진 10-비트 루마 샘플 값에 대해, 최상위 비트(MSB: most significant bit): 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의 최대 수"가 오프셋의 대응하는 수를 제한하기 위해 적용될 수 있다. 예를 들어, 비트마스크의 "1의 최대 수"를 SPS에서 4로 제한하는 것은 시퀀스의 최대 오프셋을 16이 되게 한다. 상이한 POC의 비트마스크는 상이할 수 있지만, "1의 최대 수"는 4를 초과하지 않을 것이다(총 클래스는 16을 초과하지 않을 것임). "1의 최대 수" 값은 SPS/APS/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨에서 신호 및 스위칭될 수 있다.
표 6-2: 분류를 위해 비트마스크를 사용하는 분류기의 예(비트 마스크 포지션은 밑줄 표시됨)
일부 실시예에서, 도 11에 도시된 바와 같이, 다른 교차 성분 크로마 샘플, 예를 들어 크로마 샘플(1102) 및 그의 이웃 샘플은 또한, 예컨대 현재 크로마 샘플(1104)에 대해 CCSAO 분류에 공급될 수 있다. 예를 들어, Cr 크로마 샘플이 CCSAO Cb 분류에 공급될 수 있다. Cb 크로마 샘플이 CCSAO Cr 분류에 공급될 수 있다. 교차 성분 크로마 샘플의 분류기는 루마 교차 성분 분류기와 동일할 수 있거나, 또는 본 개시내용에서 설명된 바와 같은 자체 분류기를 가질 수 있다. 2개의 분류기는 조합되어 현재 크로마 샘플을 분류하기 위한 공동 분류기를 형성할 수 있다. 예를 들어, 교차 성분 루마 샘플과 크로마 샘플을 조합하는 공동 분류기는 아래 표 6-3에 도시된 바와 같이 총 16개의 클래스를 산출한다.
표 6-3: 교차 성분 루마 샘플과 크로마 샘플을 조합하는 공동 분류기를 사용하는 분류기 예(비트 마스크 포지션은 밑줄 표시됨)
위에서 언급된 모든 분류(C0, C1, C1', C2, C3)가 조합될 수 있다. 예를 들어, 아래 표 6-4를 참조한다.
표 6-4: 상이한 분류기의 조합
일부 실시예에서, 분류기 예(C2)는 콜로케이트되고 이웃하는 루마 샘플의 차이(Yn)를 사용한다. 도 12(c)는 비트 깊이가 10일 때 [-1024, 1023]의 동적 범위를 갖는 Yn의 예를 도시한다. C2 band_num을 Yn 동적 범위의 동일하게 분할된 대역의 수라고 한다:
일부 실시예에서, C0과 C2가 조합되어 일반 분류기를 산출한다. 예를 들어, 상이한 픽처(상이한 POC)에 대해, 아래 표 7에 도시된 바와 같이 상이한 분류기가 적용된다.
표 7: 상이한 픽처에 적용되는 상이한 일반 분류기
일부 실시예에서, 위에서 언급된 모든 분류기(C0, C1, C1', C2)가 조합된다. 예를 들어, 상이한 픽처(상이한 POC)에 대해, 아래 표 8-1에 도시된 바와 같이 상이한 분류기가 적용된다.
표 8-1: 상이한 픽처에 적용되는 상이한 일반 분류기
일부 실시예에서, 분류기 예(C4)는 아래 표 8-2에 도시된 바와 같은 분류를 위해 CCSAO 입력 값과 보상될 샘플 값의 차이를 사용한다. 예를 들어, ALF 스테이지에서 CCSAO가 적용된다면, 현재 성분 사전 ALF 샘플 값과 사후 ALF 샘플 값의 차이가 분류를 위해 사용된다. 하나 이상의 임계치가 사전 정의(예컨대, 룩업 테이블(LUT)에 유지)될 수 있거나 또는 차이를 분류(양자화)하는 것을 돕도록 SPS/APS/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨에서 시그널링될 수 있다. C4 분류기는 C0 Y/U/V bandNum과 조합되어 공동 분류기(예를 들어, 표 8-2에 도시된 바와 같은 POC1 예)를 형성할 수 있다.
표 8-2: 분류를 위해 CCSAO 입력 값과 보상될 샘플 값의 차이를 사용하는 분류기 예
일부 실시예에서, 분류기 예(C5)는, 상이한 코딩 모드가 재구성 이미지에 상이한 왜곡 통계를 도입할 수 있기 때문에, 서브블록 분류를 돕기 위해 "코딩 정보"를 사용한다. CCSAO 샘플은 그의 샘플 이전 코딩 정보에 의해 분류되며, 코딩 정보의 조합은 예를 들어, 아래 표 8-3에 도시된 바와 같이 분류기를 형성할 수 있다. 아래의 도 30은 C5에 대한 코딩 정보의 상이한 스테이지의 다른 예를 도시한다.
표 8-3 CCSAO 샘플은 그의 샘플 이전 코딩 정보에 의해 분류되며, 코딩 정보의 조합은 분류기를 형성할 수 있다.
일부 실시예에서, 분류기 예(C6)는 분류를 위해 YUV 컬러 변환된 값을 사용한다. 예를 들어, 현재 Y 성분을 분류하기 위해, 1/1/1개의 동일 위치에 있는 또는 이웃하는 Y/U/V 샘플이 RGB로 컬러 변환되도록 선택되고, C3 bandNum을 사용하여 R 값을 현재 Y 성분 분류기가 되도록 양자화한다.
일부 실시예에서, 현재 컴포넌트 분류에 대해 현재 컴포넌트 정보만을 사용하는 다른 분류기 예가 교차 성분 분류로서 사용될 수 있다. 예를 들어, 도 5a 및 표 1에 도시된 바와 같이, 루마 샘플 정보 및 eo-클래스가, EdgeIdx를 도출하고 현재 크로마 샘플을 분류하기 위해 사용된다. 교차 성분 분류기로서 또한 사용될 수 있는 다른 "비-교차 성분" 분류기는 에지 방향, 픽셀 강도, 픽셀 변동, 픽셀 분산, 픽셀 라플라시안의 합, 소벨 연산자, 컴퍼스 연산자, 고역 통과 필터링된 값, 저역 통과 필터링된 값 등을 포함한다.
일부 실시예에서, 복수의 분류기가 동일한 POC에서 사용된다. 현재 프레임은 여러 구역으로 분할되고, 각각의 구역은 동일한 분류기를 사용한다. 예를 들어, 3개의 상이한 분류기가 POC0에서 사용되며, 어떤 분류기(0, 1 또는 2)가 사용되는지는 아래 표 9에 도시된 바와 같이 CTU 레벨에서 시그널링된다.
표 9: 동일한 픽처에서 상이한 구역에 적용되는 상이한 일반 분류기
일부 실시예에서, 복수의 분류기(복수의 분류기는 또한 대안적인 오프셋 세트들로도 지칭될 수 있음)의 최대 수는 SPS/APS/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨로 고정되거나 시그널링될 수 있다. 일례로, 복수의 분류기의 고정된(미리 정의된) 최대 수는 4이다. 그 경우, 4개의 상이한 분류기가 POC0에서 사용되며, 어느 분류기(0, 1 또는 2)가 사용되는지는 CTU 레벨에서 시그널링된다. 각각의 루마 또는 크로마 CTB에 대해 사용되는 분류기를 지시하기 위해 절단된 단항(TU: truncated-unary) 코드가 사용될 수 있다. 예를 들어, 아래 표 10에 도시된 바와 같이, TU 코드가 0인 경우: CCSAO가 적용되지 않고; TU 코드가 10인 경우: 세트 0이 적용되고; TU 코드가 110인 경우, 세트 1이 적용되고; TU 코드가 1110인 경우: 세트 2가 적용되고; TU 코드가 1111인 경우: 세트 3이 적용된다. 고정 길이 코드, 골롬-라이스(golomb-rice) 코드, 및 지수-골롬 코드가 또한, CTB에 대한 분류기(오프셋 세트 인덱스)를 지시하기 위해 사용될 수 있다. 3개의 상이한 분류기가 POC1에서 사용된다.
표 10: 각각의 크로마 CTB에 대해 사용되는 분류기를 지시하기 위해 절단된 단항(TU) 코드가 사용된다
1280x720 시퀀스 POC0에 대해 Cb 및 Cr CTB 오프셋 세트 인덱스의 예가 주어진다(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: 1280x720 시퀀스 POC0에 대해 Cb 및 Cr CTB 오프셋 세트 인덱스의 예가 주어진다(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 set0은 {현재 Y4, 동일 위치에 있는 U4, 동일 위치에 있는 V4}를 후보로서 선택하며, 각각 상이한 bandNum {Y, U, V} = {16, 1, 2}이다. 선택된 {Y, U, V} 후보의 샘플 값으로서 {candY, candU, candV}를 이용하면, 총 클래스의 수는 32이고, 클래스 인덱스 도출은 다음과 같이 도시될 수 있다:
일부 실시예에서, 공동 분류기의 classIdx 도출은 도출 프로세스를 단순화하기 위해 "or-shift" 형태로서 표현될 수 있다. 예를 들어, max bandNum = {16, 4, 4}
다른 예는 POC1 성분 V set1 분류이다. 그 예에서, bandNum = {4, 1, 2}인 candPos = {이웃 Y8, 이웃 U3, 이웃 V0}이 사용되며, 이는 8개의 클래스를 산출한다.
표 11-2: 분류를 위해 동일 위치에 있는/현재 및 이웃 Y/U/V 샘플을 공동으로 사용하는 예
일부 실시예에서, 현재 Y/U/V 샘플 분류를 위해 동일 위치에 있는 그리고 이웃하는 Y/U/V 샘플을 공동으로 사용하는 예가 예를 들어, 아래 표 11-3에 도시된 바와 같이 열거된다(각각의 Y/U/V 성분에 대한 edgeNum(C1s) 및 bandNum 분류). 에지 CandPos는 C1s 분류기에 대해 사용되는 중심 포지션이고, 에지 bitMask는 C1s 이웃 샘플 활성화 지시자이며, edgeNum은 C1s 클래스의 대응하는 수이다. 이 예에서, 에지 candPos가 항상 Y4(현재/동일 위치에 있는 샘플 포지션)인 C1s는 Y 분류기 상에만 적용된다(따라서 edgeNum은 edgeNumY와 동일함). 그러나 C1s는 이웃 샘플 포지션으로서 에지 candPos를 갖는 Y/U/V 분류기 상에 적용될 수 있다.
diff가 Y개의 C1s의 비교 스코어를 나타내면, classIdx 도출은 다음과 같을 수 있다:
표 11-3(파트 1): 분류를 위해 동일 위치에 있는/현재 및 이웃 Y/U/V 샘플을 공동으로 사용하는 예
표 11-3(파트 2): 분류를 위해 동일 위치에 있는/현재 및 이웃 Y/U/V 샘플을 공동으로 사용하는 예
표 11-3(파트 3): 분류를 위해 동일 위치에 있는/현재 및 이웃 Y/U/V 샘플을 공동으로 사용하는 예
일부 실시예에서, 최대 band_num(bandNumY, bandNumU 또는 bandNumV)는 SPS/APS/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨로 고정되거나 시그널링될 수 있다. 예를 들어, 디코더에서 max band_num=16으로 고정하고, 각각의 프레임에 대해, 프레임에서 C0 band_num을 지시하기 위해 4개의 비트가 시그널링된다. 다른 어떤 최대 band_num 예가 아래 표 12에 열거된다.
표 12: 최대 band_num 및 band_num 비트 예
일부 실시예에서, 각각의 세트(또는 추가된 모든 세트)에 대한 클래스 또는 오프셋의 최대 수(공동으로 사용하는 다수의 분류기의 조합, 예를 들어 C1s edgeNum * C1 bandNumY * bandNumU * bandNumV)는 SPS/APS/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨로 고정되거나 시그널링될 수 있다. 예를 들어, 최대치는 모든 세트에 추가된 class_num=256*4에 대해 고정되고, 제약을 체크하기 위해 인코더 적합성 체크 또는 디코더 규범 체크가 사용될 수 있다.
일부 실시예에서, 예를 들어, band_num(bandNumY, bandNumU 또는 bandNumV)을 단지 2의 거듭제곱 값으로 제한하는 제약이 C0 분류에 적용될 수 있다. 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이다.
표 13: band_num 및 대응하는 band_num_shift 후보
일부 실시예에서, Cb 및 Cr에 적용되는 분류기는 상이하다. 모든 클래스에 대한 Cb 및 Cr 오프셋은 개별적으로 시그널링될 수 있다. 예를 들어, 상이한 시그널링된 오프셋은 아래 표 14에 도시된 바와 같이 상이한 크로마 성분에 적용된다.
표 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에 도시된 바와 같이 공동으로 시그널링될 수 있다.
표 15: 모든 클래스에 대한 Cb 및 Cr 오프셋은 공동으로 시그널링될 수 있다
일부 실시예에서, Cb 및 Cr의 분류기는 동일할 수 있다. 모든 클래스에 대한 Cb 및 Cr 오프셋은 예를 들어, 아래 표 16에 도시된 바와 같이, 부호 플래그 차이와 함께 공동으로 시그널링될 수 있다. 표 16에 따르면, Cb 오프셋이 (3, 3, 2, -1)일 때, 도출된 Cr 오프셋은 (-3, -3, -2, 1)이다.
표 16: 모든 클래스에 대한 Cb 및 Cr 오프셋은 부호 플래그 차이와 공동으로 시그널링될 수 있다
일부 실시예에서, 부호 플래그는 예를 들어, 아래 표 17에 도시된 바와 같이 각각의 클래스에 대해 시그널링될 수 있다. 표 17에 따르면, Cb 오프셋이 (3, 3, 2, -1)일 때, 도출된 Cr 오프셋은 개개의 부호가 있는 플래그에 따라 (-3, 3, 2, 1)이다.
표 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)이다.
표 18: 모든 클래스에 대한 Cb 및 Cr 오프셋은 가중치 차이와 함께 공동으로 시그널링될 수 있다
일부 실시예에서, 가중치는 예를 들어, 아래 표 19에 도시된 바와 같이 각각의 클래스에 대해 시그널링될 수 있다. 표 19에 따르면, Cb 오프셋이 (3, 3, 2, -1)일 때, 도출된 Cr 오프셋은 개개의 부호가 있는 플래그에 따라 (-6, 12, 0, -1)이다.
표 19: 모든 클래스에 대한 Cb 및 Cr 오프셋은 각각의 클래스에 대해 시그널링되는 가중치와 공동으로 시그널링될 수 있다
일부 실시예에서, 복수의 분류기가 동일한 POC에서 사용된다면, 상이한 오프셋 세트가 개별적으로 또는 공동으로 시그널링된다.
일부 실시예에서, 이전에 디코딩된 오프셋은 미래의 프레임의 사용을 위해 저장될 수 있다. 오프셋 시그널링 오버헤드를 감소시키기 위해, 어느 이전에 디코딩된 오프셋 세트가 현재 프레임에 대해 사용되는지를 지시하기 위해 인덱스가 시그널링될 수 있다. 예를 들어, POC0 오프셋은 아래 표 20에 도시된 바와 같이 시그널링 오프셋 세트 idx = 0으로 POC2에 의해 재사용될 수 있다.
표 20: 어느 이전에 디코딩된 오프셋 세트가 현재 프레임에 대해 사용되는지를 지시하기 위해 인덱스가 시그널링될 수 있다.
Cb 및 Cr에 대한 재사용 오프셋 세트 idx는 예를 들어, 아래 표 21에 도시된 바와 같이 상이할 수 있다.
표 21: 어느 이전에 디코딩된 오프셋 세트가 현재 프레임에 대해 사용되는지를 지시하기 위해 인덱스가 시그널링될 수 수 있고, 인덱스는 Cb 및 Cr 성분에 대해 상이할 수 있다.
일부 실시예에서, 오프셋 시그널링은 시그널링 오버헤드를 감소시키기 위해 시작 및 길이를 포함하는 추가 신택스를 사용할 수 있다. 예를 들어, band_num=256일 때, band_idx=37~44의 오프셋만이 시그널링된다. 아래 표 22-1의 예에서, band_num 비트와 일치해야 하는 시작 및 길이의 신택스 모두는 8 비트 고정 길이 코딩된다.
표 22-1: 오프셋 시그널링은 시작 및 길이를 포함하는 추가 신택스를 사용한다
일부 실시예에서, CCSAO가 모든 YUV 3 성분에 적용된다면, 동일 위치에 있는 그리고 이웃하는 YUV 샘플이 분류를 위해 공동으로 사용될 수 있고, Cb/Cr에 대한 위에서 언급된 모든 오프셋 시그널링 방법은 Y/Cb/Cr로 확장될 수 있다. 일부 실시예에서, 상이한 성분 오프셋 세트는 개별적으로(각각의 성분은 각자의 저장된 세트를 가짐) 또는 공동으로(각각의 성분은 저장된 것을 공유/재사용함) 저장 및 사용될 수 있다. 별도의 설정된 예가 아래 표 22-2에 도시된다.
표 22-2: 상이한 성분 오프셋 세트는 개별적으로(각각의 성분은 각자의 저장된 세트를 가짐) 또는 공동으로(각각의 성분은 저장된 것을 공유/재사용함) 저장 및 사용될 수 있음을 보여주는 예
일부 실시예에서, 시퀀스 비트 깊이가 10(또는 특정 비트 깊이)보다 높다면, 오프셋은 시그널링 전에 양자화될 수 있다. 디코더 측에서, 디코딩된 오프셋은 아래 표 23-1에 도시된 바와 같이, 이를 적용하기 전에 역양자화된다. 예를 들어, 12-비트 시퀀스의 경우, 디코딩된 오프셋은 2만큼 좌측 시프트(역양자화)된다.
표 23-1: 디코딩된 오프셋은 이를 적용하기 전에 역양자화된다.
일부 실시예에서, 오프셋은 CcSaoOffsetVal=( 1 - 2 * ccsao_offset_sign_flag ) * (ccsao_offset_abs << ( BitDepth - Min( 10, BitDepth ) ) )로서 계산될 수 있다.
일부 실시예에서, 필터 강도 개념이 본 명세서에서 추가로 소개된다. 예를 들어, 분류기 오프셋은 샘플에 적용되기 전에 추가로 가중될 수 있다. 가중치(w)는 2의 거듭제곱 값의 표에서 선택될 수 있다. 예를 들어, +-1/4, +-1/2, 0, +-1, +-2, +-4… 등이며, 여기서 |w| 는 2의 거듭제곱 값만을 포함한다. 가중치 인덱스는 SPS/APS/PPS/PH/SH/구역 (Set)/CTU/CU/서브블록/샘플 레벨로 시그널링될 수 있다. 양자화된 오프셋 시그널링은 이러한 가중 애플리케이션의 서브세트로서 취해질 수 있다. 도 6d에 도시된 바와 같이 재귀적 CCSAO가 적용된다면, 유사한 가중치 인덱스 메커니즘이 첫 번째 스테이지와 두 번째 스테이지 사이에 적용될 수 있다.
일부 예에서, 상이한 분류기: 복수의 분류기의 오프셋에 대한 가중은 가중치 조합으로 동일한 샘플에 적용될 수 있다. 유사한 가중치 인덱스 메커니즘이 위에서 언급된 바와 같이 시그널링될 수 있다. 예를 들어,
또는
일부 실시예에서, PH/SH에서 CCSAO 파라미터를 직접 시그널링하는 대신에, 이전에 사용된 파라미터/오프셋이 다음 픽처/슬라이스 재사용을 위해 APS(Adaptation Parameter Set) 또는 메모리 버퍼에 저장될 수 있다. 어느 저장된 이전 프레임 오프셋이 현재 픽처/슬라이스에 대해 사용되는지를 지시하기 위해 인덱스가 PH/SH에서 시그널링될 수 있다. CCSAO 이력 오프셋을 유지하기 위해 새로운 APS ID가 생성될 수 있다. 다음의 표는 도 6i, candPos 및 bandNum{Y, U, V} = {16, 4, 4}를 사용하는 일예를 도시한다. 일부 예에서, candPos, bandNum, 오프셋 시그널링 방법은 고정 길이 코드(FLC: fixed length code) 또는 다른 방법, 이를테면 TU(truncated unary) 코드, EGk(exponential-golomb code with order k), SVLC(signed EG0) 또는 UVLC(unsigned EG0)일 수 있다. 이 경우, sao_cc_y_class_num (or cb, cr)은 sao_cc_y_band_num_y * sao_cc_y_band_num_u * sao_cc_y_band_num_v (or cb, cr)과 같다. ph_sao_cc_y_aps_id는 이러한 픽처/슬라이스에서 사용되는 파라미터 인덱스이다. cb 및 cr 성분은 동일한 시그널링 로직을 따를 수 있음을 주목한다.
표 23-2: 적응 파라미터 세트(APS) 신택스.
aps_adaptation_parameter_set_id는 다른 신택스 엘리먼트에 의한 참조를 위해 APS에 대한 식별자를 제공한다. aps_params_type이 CCSAO_APS와 동일할 때, aps_adaptation_parameter_set_id의 값은 (예를 들어) 0 내지 7까지의 범위에 있을 것이다.
ph_sao_cc_y_aps_id는 현재 픽처에서 슬라이스의 Y 색성분이 참조하는 CCSAO APS의 aps_adaptation_parameter_set_id를 특정한다. ph_sao_cc_y_aps_id가 존재할 때, 다음이 적용되는데: CCSAO_APS와 같은 aps_params_type 및 ph_sao_cc_y_aps_id와 같은 aps_adaptation_parameter_set_id를 갖는 APS NAL 유닛의 sao_cc_y_set_signal_flag의 값은 1과 같을 것이고; CCSAO_APS와 같은 aps_params_type 및 ph_sao_cc_y_aps_id와 같은 aps_adaptation_parameter_set_id를 갖는 APS 네트워크 추상화 계층(NAL) 유닛의 TemporalId는 현재 픽처의 TemporalId보다 작거나 같을 것이다.
일부 실시예에서, APS 업데이트 메커니즘이 본 명세서에서 설명된다. APS 오프셋 세트의 최대 수는 SPS/APS/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨에서 사전 정의되거나 시그널링될 수 있다. 상이한 성분은 상이한 최대 수 제한을 가질 수 있다. APS 오프셋 세트가 가득 찬다면, 새롭게 추가된 오프셋 세트는 하나의 기존의 저장된 오프셋을 FIFO(first in, first out), LIFO(last in, first out) 또는 LRU(least-recently-used) 메커니즘으로 대체할 수 있거나, 또는 어느 APS 오프셋 세트가 대체되어야 하는지를 지시하는 인덱스 값이 수신된다. 일부 예에서, 선택된 분류기가 candPos/에지 정보/코딩 정보… 등으로 구성된다면, 모든 분류기 정보는 APS 오프셋 세트의 일부로서 취해질 수 있고, 또한 그의 오프셋 값과 함께 APS 오프셋 세트에 저장될 수 있다.
일부 실시예에서, 제약이 적용될 수 있다. 예를 들어, 새롭게 수신된 분류기 정보 및 오프셋은 (동일한 성분의 또는 상이한 성분에 걸친) 저장된 APS 오프셋 세트 중 어느 것과도 동일할 수 없다.
일부 예에서, C0 candPos/bandNum 분류기가 사용되고, APS 오프셋 세트의 최대 수는 Y/U/V마다 4이고, FIFO 업데이트가 Y/V에 대해 사용된다면, 업데이트를 지시하는 idx가 U에 대해 사용된다.
표 23-3: FIFO를 사용하는 CCSAO 오프셋 세트 업데이트.
일부 실시예에서, FIFO 업데이트는, 위의 예에서와 같이, (1) 이전에 좌측 세트 idx로부터 순환적으로(모두 업데이트된다면, 세트 0으로부터 다시 시작됨) 업데이트, (2) 세트 0으로부터 매 시간 업데이트일 수 있다. 일부 예에서, 새로운 오프셋 세트를 수신할 때, 업데이트는 (예에서와 같이) PH 또는 SPS/APS/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨에 있을 수 있다.
LRU 업데이트의 경우, 디코더는 SPS/APS/픽처 그룹(GOP) 구조별/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨에서 리프레시될 수 있는 "총 오프셋 세트 사용 카운트"를 카운트하는 카운트 표를 유지한다. 새롭게 수신된 오프셋 세트는 APS에서 가장 최근에 사용된 오프셋 세트를 대체한다. 2개의 저장된 오프셋 세트가 동일한 카운트를 갖는다면, FIFO/LIFO가 사용될 수 있다. 예를 들어, 아래 표 23-4의 성분 Y를 참조한다.
표 23-4: LRU를 사용하는 CCSAO 오프셋 세트 업데이트.
일부 실시예에서, 상이한 성분은 상이한 업데이트 메커니즘들을 가질 수 있다.
일부 실시예에서, 상이한 성분(예를 들어, U/V)은 동일한 분류기를 공유할 수 있다(동일한 candPos/에지 정보/코딩 정보/오프셋은 추가로, 수정자를 갖는 가중치를 가질 수 있음).
일부 실시예에서, 샘플 프로세싱이 아래에서 설명된다. R(x, y)를 CCSAO 이전의 입력 루마 또는 크로마 샘플 값이라고 하고, R'(x, y)를 CCSAO 이후의 출력 루마 또는 크로마 샘플 값이라고한다.
위의 수식들에 따르면, 각각의 루마 또는 크로마 샘플 값 R(x, y)는 현재 픽처 및/또는 현재 오프셋 세트(idx)의 지시된 분류기를 사용하여 분류된다. 도출된 클래스 인덱스의 대응하는 오프셋은 각각의 루마 또는 크로마 샘플 값 R(x, y)에 추가된다. 출력 루마 또는 크로마 샘플 값 R'(x, y)을 비트 깊이 동적 범위, 예를 들어 범위 0 내지 (1 << bit_depth) - 1 내에 있게 하기 위해 클립 함수(Clip 3)가 (R(x, y) + 오프셋)에 적용된다.
도 13은 본 개시내용의 일부 구현에 따른, 상이한 클리핑 조합을 갖는 다른 루프 내 필터들과 함께 CCSAO가 적용되는 것을 예시하는 블록도이다.
일부 실시예에서, CCSAO가 다른 루프 필터들과 함께 동작될 때, 클립 연산은 다음과 같을 수 있다:
(1) 추가 후의 클리핑. 다음의 식은 (a) CCSAO가 SAO 및 BIF와 함께 동작되거나, 또는 (b) CCSAO가 SAO를 대체하지만 여전히 BIF로 동작될 때의 예를 보여준다.
(a)
(b)
(2) 추가 전의 클리핑, BIF로 연산됨. 일부 실시예에서, 클립 순서는 스위칭될 수 있다.
(a)
(b)
(3) 부분 추가 후의 클리핑
(a)
일부 실시예에서, 상이한 클리핑 조합은 정정 정밀도와 하드웨어 임시 버퍼 크기(레지스터 또는 SRAM 비트 폭) 사이에 상이한 절충을 제공한다.
도 13(a)는 SAO/BIF 오프셋 클리핑을 도시한다. 도 13(b)는 CCSAO에 대한 하나의 추가 비트 깊이 클리핑을 도시한다. 도 13(c)는 SAO/BIF/CCSAO 오프셋을 입력 샘플에 부가한 후의 공동 클리핑을 도시한다. 보다 구체적으로, 예를 들어 도 13(a)는 현재 BIF 설계가 SAO와 상호 작용할 때의 현재 BIF 설계를 도시한다. SAO 및 BIF로부터의 오프셋이 입력 샘플에 부가되고, 이어서 하나의 비트 깊이 클리핑이 수행된다. 그러나 CCSAO가 또한 SAO 스테이지에서 조인될 때, 2개의 가능한 클리핑 설계: (1) CCSAO에 대한 하나의 추가 비트 깊이 클리핑을 추가하는 설계, 그리고 (2) 도 13(b) 및 도 13(c)에 도시된 바와 같이, SAO/BIF/CCSAO 오프셋을 입력 샘플에 추가한 후에 공동 클리핑을 수행하는 하나의 조화된 설계가 선택될 수 있다. 일부 실시예에서, BIF만이 루마 샘플에 대해 적용되기 때문에, 위에서 언급된 클리핑 설계는 루마 샘플에서만 상이하다.
일부 실시예에서, 경계 프로세싱이 아래에서 설명된다. 분류에 사용되는 동일 위치에 있는 그리고 이웃하는 루마(크로마) 샘플 중 임의의 것이 현재 픽처 외부에 있다면, CCSAO는 현재 크로마(루마) 샘플에 적용되지 않는다. 도 14a는 본 개시내용의 일부 구현에 따라, 분류를 위해 사용되는 동일 위치에 있는 그리고 이웃하는 루마(크로마) 샘플 중 임의의 샘플이 현재 픽처 외부에 있다면, 현재 크로마(루마) 샘플에 CCSAO가 적용되지 않는 것을 예시하는 블록도이다. 예를 들어, 도 14a의 (a)에서, 분류기가 사용된다면, CCSAO는 현재 픽처의 좌측 1열 크로마 성분에 적용되지 않는다. 예를 들어, C1'가 사용된다면, CCSAO는 도 14a의 (b)에 도시된 바와 같이, 현재 픽처의 좌측 1열 및 최상부 1행 크로마 성분에 적용되지 않는다.
도 14b는 본 개시내용의 일부 구현에 따라, 분류에 사용되는 동일 위치에 있는 그리고 이웃하는 루마 또는 크로마 샘플 중 임의의 샘플이 현재 픽처 외부에 있다면 현재 루마 또는 크로마 샘플에 대해 CCSAO가 적용되는 것을 예시하는 블록도이다. 일부 실시예에서, 변동은 분류를 위해 사용되는 동일 위치에 있는 그리고 이웃하는 루마 또는 크로마 샘플 중 임의의 것이 현재 픽처 외부에 있다면, 도 14b의 (a)에 도시된 바와 같이, 누락된 샘플이 반복적으로 사용되거나, 누락된 샘플이 미러 패딩되어, 도 14b의 (b)에 도시된 바와 같이 분류를 위한 샘플을 생성하고, CCSAO가 현재 루마 또는 크로마 샘플에 적용될 수 있다. 일부 실시예에서, 본 명세서에 개시된 디세이블/반복/미러 픽처 경계 프로세싱 방법은 또한, 분류를 위해 사용된 동일 위치에 있는 그리고 이웃하는 루마(크로마) 샘플 중 임의의 샘플이 현재 서브픽처/슬라이스/타일/패치/CTU/360 가상 경계 밖에 있다면, 서브픽처/슬라이스/타일/CTU/360 가상 경계 상에 적용될 수 있다.
예를 들어, 픽처는 하나 이상의 타일 행 및 하나 이상의 타일 열로 분할된다. 타일은 픽처의 직사각형 구역을 커버하는 CTU의 시퀀스이다.
슬라이스는 픽처의 타일 내의 정수개의 완전한 타일 또는 정수개의 연속적인 완전한 CTU 행으로 이루어진다.
서브픽처는 픽처의 직사각형 구역을 집합적으로 커버하는 하나 이상의 슬라이스를 포함한다.
일부 실시예에서, 360도 비디오는 구면 상에서 캡처되고 본질적으로 어떠한 "경계"도 갖지 않으며, 투사된 도메인에서 기준 픽처의 경계를 벗어난 기준 샘플은 항상 구면 도메인에서 이웃하는 샘플로부터 획득될 수 있다. 복수의 면으로 구성된 투사 포맷들의 경우, 어떤 종류의 콤팩트 프레임 패킹 어레인지먼트가 사용되든, 프레임 패킹된 픽처에서 2개 이상의 인접한 면 사이에 불연속부가 나타난다. VVC에서, 루프 내 필터링 동작이 디세이블되는 수직 및/또는 수평 가상 경계가 도입되고, 그러한 경계의 포지션은 SPS 또는 픽처 헤더에서 시그널링된다. 연속적인 면의 각각의 세트마다 하나씩 2개의 타일을 사용하는 것과 비교하여, 360 가상 경계의 사용은 면 크기가 CTU 크기의 배수일 것을 요구하지 않기 때문에 더 유연하다. 일부 실시예에서, 수직 360 가상 경계의 최대 수는 3이고, 수평 360 가상 경계의 최대 수는 또한 3이다. 일부 실시예에서, 2개의 가상 경계 사이의 거리는 CTU 크기 이상이고, 가상 경계 입도는 8개의 루마 샘플, 예컨대 8x8 샘플 그리드이다.
도 14c는 본 개시내용의 일부 구현에 따라, 분류에 사용되는 대응하는 선택된 동일 위치에 있는 또는 이웃하는 루마 샘플이 가상 경계에 의해 정의된 가상 공간 외부에 있다면, 현재 크로마 샘플에 대해 CCSAO가 적용되지 않는 것을 예시하는 블록도이다.. 일부 실시예에서, 가상 경계(VB)는 사진 프레임 내의 공간을 분리하는 가상 라인이다. 일부 실시예에서, 가상 경계(VB)가 현재 프레임에 적용된다면, CCSAO는 가상 경계에 의해 정의된 가상 공간 외부의 대응하는 루마 포지션을 선택한 크로마 샘플에 적용되지 않는다. 도 14c는 9개의 루마 포지션 후보를 갖는 C0 분류기에 대한 가상 경계를 갖는 예를 도시한다. 각각의 CTU에 대해, 대응하는 선택된 루마 포지션이 가상 경계에 의해 둘러싸인 가상 공간 외부에 있는 크로마 샘플에는 CCSAO가 적용되지 않는다. 예를 들어, 도 14c의 (a)에서, 선택된 Y7 루마 샘플 포지션이 프레임의 최하부 측으로부터 4개의 픽셀 라인들에 위치된 수평 가상 경계(1406)의 다른 측에 있을 때, CCSAO는 크로마 샘플(1402)에 적용되지 않는다. 예를 들어, 도 14c의 (b)에서, 선택된 Y5 루마 샘플 포지션이 프레임의 우측으로부터 y개의 픽셀 라인에 위치되는 수직 가상 경계(1408)의 다른 측에 위치될 때, CCSAO는 크로마 샘플(1404)에 적용되지 않는다.
도 15는 본 개시내용의 일부 구현에 따라 가상 경계 외부에 있는 루마 샘플에 반복적 또는 미러 패딩이 적용될 수 있는 것을 도시한다. 도 15(a)는 반복적인 패딩의 예를 도시한다. 원래의 Y7이 VB(1502)의 최하부 측에 위치되는 분류기로 선택된다면, 원래의 Y7 루마 샘플 값 대신에, Y4 루마 샘플 값이 분류를 위해 사용된다(Y7 포지션에 복사됨). 도 15(b)는 미러 패딩의 예를 도시한다. Y7이 VB(1504)의 최하부 측에 위치되는 분류기로 선택된다면, 원래의 Y7 루마 샘플 값 대신에, Y0 루마 샘플에 대해 Y7 값에 대칭적인 Y1 루마 샘플 값이 분류를 위해 사용된다. 패딩 방법은 더 많은 코딩 이득이 달성될 수 있도록 CCSAO를 적용할 가능성을 더 많은 크로마 샘플에 제공한다.
일부 실시예에서, CCSAO 요구 라인 버퍼를 감소시키고 경계 프로세싱 조건 체크를 단순화하기 위해 제약이 적용될 수 있다. 도 16은 본 개시내용의 일부 구현에 따라, 9개의 모든 동일 위치에 있는 이웃하는 루마 샘플이 분류를 위해 사용된다면, 추가 1 루마 라인 버퍼, 즉 현재 VB(1602) 위의 라인 -5의 전체 라인 루마 샘플이 요구될 수 있다는 것을 도시한다. 도 10b의 (a)는 분류를 위해 6개의 루마 후보만을 사용하는 예를 도시하며, 이는 라인 버퍼를 감소시키고, 도 14a 및 도 14b에서 어떠한 추가 경계 체크도 필요로 하지 않는다.
일부 실시예에서, CCSAO 분류를 위해 루마 샘플을 사용하는 것은 루마 라인 버퍼를 증가시키고 그에 따라 디코더 하드웨어 구현 비용을 증가시킬 수 있다. 도 17은 본 개시내용의 일부 구현에 따라 VB(1702)를 가로지르는 9개의 루마 후보의 CCSAO가 2개의 추가 루마 라인 버퍼를 증가시킬 수 있는 AVS에서의 예시를 도시한다. 가상 경계(VB)(1702)를 넘는 루마 샘플 및 크로마 샘플의 경우, DBF/SAO/ALF는 현재 CTU 행에서 프로세싱된다. VB(1702) 아래의 루마 샘플 및 크로마 샘플의 경우, DBF/SAO/ALF는 다음 CTU 행에서 프로세싱된다. AVS 디코더 하드웨어 설계에서, 루마 라인 -4 내지 -1 사전 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 솔루션에서, CCSAO는, 크로마 샘플의 루마 후보 중 임의의 크로마 샘플의 루마 후보가 VB에 걸쳐 있다면(현재 크로마 샘플(VB) 외부에 있다면) 크로마 샘플에 대해 디세이블된다. 도 19a - 도 19c는 본 개시내용의 일부 구현에 따라, AVS 및 크로마 샘플의 루마 후보 중 임의의 루마 후보가 VB(1902)에 걸쳐 (현재 크로마 샘플 VB 외부에) 있다면 CCSAO가 크로마 샘플에 대해 디세이블되는 것을 도시한다. 도 14c는 또한 이러한 구현의 일부 예를 도시한다.
일부 실시예에서, 제2 솔루션에서, "크로스 VB" 루마 후보에 대해 VB의 다른 측에 근접한 그리고 그 측의 루마 라인, 예를 들어 루마 라인 -4로부터 CCSAO에 대해 반복적인 패딩이 사용된다. 일부 실시예에서, VB 아래의 루마 최근접 이웃으로부터의 반복적인 패딩은 "크로스 VB" 크로마 후보에 대해 구현된다. 도 20a - 도 20c는 본 개시내용의 일부 구현에 따라, AVS 및 VVC에서, 크로마 샘플의 루마 후보 중 임의의 루마 후보가 VB(2002)에 걸쳐 (현재 크로마 샘플 VB 외부에) 있다면, CCSAO가 크로마 샘플에 대해 반복적인 패딩을 사용하여 인에이블되는 것을 도시한다. 도 14c의 (a)는 또한 이러한 구현의 일부 예를 도시한다.
일부 실시예에서, 제3 솔루션에서, "크로스 VB" 루마 후보에 대한 루마 VB 아래로부터의 CCSAO에 대해 미러 패딩이 사용된다. 도 21a - 도 21c는 본 개시내용의 일부 구현에 따라, AVS 및 VVC에서, 크로마 샘플의 루마 후보 중 임의의 루마 후보가 VB(2102)에 걸쳐 (현재 크로마 샘플 VB 외부에) 있다면, CCSAO가 크로마 샘플에 대해 미러 패딩을 사용하여 인에이블되는 것을 도시한다. 도 14c의 (b) 및 도 14b의 (b)는 또한 이러한 구현의 일부 예를 도시한다. 일부 실시예에서, 제4 솔루션에서, CCSAO를 적용하기 위해 "양면 대칭 패딩"이 사용된다. 도 22a 및 도 22b는, 본 개시내용의 일부 구현에 따라 CCSAO가 상이한 CCSAO 형상의 일부 예(예를 들어, 9개의 루마 후보(도 22a) 및 8개의 루마 후보(도 22b))에 대해 양면 대칭 패딩을 사용하여 인에이블되는 것을 도시한다. 크로마 샘플의 동일 위치에 있는 센터링된 루마 샘플을 갖는 루마 샘플 세트의 경우, 루마 샘플 세트의 일 측이 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를 디세이블(disable)하는 것이다.
솔루션 2는 "크로스 VB" 크로마 후보에 대해 VB 아래의 크로마 최근접 이웃으로부터의 반복적인 패딩을 사용하는 것이다.
솔루션 3은 "크로스 VB" 크로마 후보에 대해 크로마 VB 아래로부터의 미러 패딩을 사용하는 것이다.
솔루션 4는 "양면 대칭 패딩"을 사용하는 것이다. CCSAO 동일 위치에 있는 크로마 샘플에 센터링된 후보 세트의 경우, 후보 세트의 한 측이 VB 외부에 있다면, 양측 대칭 패딩이 양측에 적용된다.
패딩 방법은 더 많은 코딩 이득이 달성될 수 있도록 CCSAO를 적용할 가능성을 더 많은 루마 또는 크로마 샘플에 제공한다.
일부 실시예에서, 최하부 픽처(또는 슬라이스, 타일, 브릭) 경계 CTU 행에서, VB 아래의 샘플은 현재 CTU 행에서 프로세싱되므로, 위의 특별한 처리(솔루션 1, 2, 3, 4)는 최하부 픽처(또는 슬라이스, 타일, 브릭) 경계 CTU 행에 적용되지 않는다. 예를 들어, 1920x1080의 프레임은 128x128의 CTU로 분할된다. 프레임은 15x9개의 CTU(반올림)를 포함한다. 최하부 CTU 행은 15번째 CTU 행이다. 디코딩 프로세스는 CTU 행마다 그리고 각각의 CTU 행에 대해 CTU마다이다. 블록 분리는 현재 CTU 행과 다음 CTU 행 사이의 수평 CTU 경계를 따라 적용될 필요가 있다. 하나의 CTU 내부의 최하부 4/2 루마/크로마 라인에서, DBF 샘플(VVC 경우)이 다음 CTU 행에서 프로세싱되고 현재 CTU 행에서 CCSAO에 대해 이용 가능하지 않기 때문에, CTB VB는 각각의 CTU 행에 대해 적용된다. 그러나 픽처 프레임의 최하부 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 기반일 수 있다. 즉, 온/오프 제어, CCSAO 파라미터(분류를 위해 사용된 오프셋, 루마 후보 포지션, band_num, 비트마스크… 등, 오프셋 세트 인덱스)는 하나의 CTB에서 동일하다.
일부 실시예에서, 적용 구역은 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 구역 정보를 지시하도록 시그널링된다.
표 24: CCSAO 적용 구역 유닛(마스크 크기)은 변형될 수 있다.
일부 실시예에서, CCSAO 적용 구역 프레임 파티션은 고정될 수 있다. 예를 들어, 프레임을 N개의 구역으로 파티셔닝한다. 도 25는 본 개시내용의 일부 구현에 따라 CCSAO 적용 구역 프레임 파티션이 CCSAO 파라미터로 고정될 수 있음을 도시한다.
일부 실시예에서, 각각의 구역은 자체 구역 온/오프 제어 플래그 및 CCSAO 파라미터를 가질 수 있다. 또한, 구역 크기가 CTB 크기보다 크다면, 구역 온/오프 제어 플래그 및 구역 온/오프 제어 플래그 모두를 가질 수 있다. 도 25의 (a) 및 (b)는 프레임을 N개의 구역으로 파티셔닝하는 일부 예를 도시한다. 도 25의 (a)는 4개의 구역의 수직 파티셔닝을 도시한다. 도 25의 (b)는 4개의 구역의 정사각형 파티셔닝을 도시한다. 일부 실시예에서, 제어 플래그에 대한 모든 픽처 레벨 CTB(ph_cc_sao_cb_ctb_control_flag / ph_cc_sao_cr_ctb_control_flag)와 유사하게, 구역 온/오프 제어 플래그가 오프라면, CTB 온/오프 플래그가 추가로 시그널링될 수 있다. 그렇지 않으면, CTB 플래그를 추가로 시그널링하지 않으면서 이 구역 내의 모든 CTB들에 대해 CCSAO가 적용된다.
일부 실시예에서, 상이한 CCSAO 적용 구역은 동일한 구역 온/오프 제어 및 CCSAO 파라미터를 공유할 수 있다. 예를 들어, 도 25의 (c)에서, 구역 0 내지 2는 동일한 파라미터를 공유하고, 구역 3 내지 15는 동일한 파라미터를 공유한다. 도 25의 (c)는 또한 구역 온/오프 제어 플래그 및 CCSAO 파라미터가 힐베르트(Hilbert) 스캔 순서로 시그널링될 수 있다는 것을 도시한다.
일부 실시예에서, CCSAO 적용 구역 유닛은 픽처/슬라이스/CTB 레벨로부터 분리된 쿼드 트리/2진 트리/3진 트리일 수 있다. CTB 분리와 유사하게, 일련의 분리 플래그는 CCSAO 적용 구역 구획을 지시하기 위해 시그널링된다. 도 26은 본 개시내용의 일부 구현에 따라 CCSAO 적용 구역이 프레임/슬라이스/CTB 레벨로부터 분리된 이진 트리(BT)/쿼드 트리(QT)/3진 트리(TT)일 수 있음을 도시한다.
도 27은 본 개시내용의 일부 구현에 따른, 픽처 프레임 내의 상이한 레벨들에서 사용 및 스위칭되는 복수의 분류기를 예시하는 블록도이다. 일부 실시예에서, 복수의 분류기가 하나의 프레임에서 사용된다면, 분류기 세트 인덱스를 어‰F게 적용하는지의 방법은 SPS/APS/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨에서 스위칭될 수 있다. 예를 들어, 프레임에서 분류기의 4개의 세트가 사용되며, 이는 아래 표 25에 도시된 바와 같이 PH에서 스위칭된다. 도 27의 (a) 및 (c)는 디폴트 고정 구역 분류기를 도시한다. 도 27의 (b)는 분류기 세트 인덱스가 마스크/CTB 레벨에서 시그널링되는 것을 도시하며, 여기서 0은 이러한 CTB에 대한 CCSAO 오프를 의미하고, 1 내지 4는 세트 인덱스를 의미한다.
표 25: 프레임에서 분류기의 4개의 세트가 사용되며, 이는 PH에서 스위칭됨
일부 실시예에서, 디폴트 구역 경우에 대해, 이 구역 내의 CTB가 디폴트 세트 인덱스를 사용하는 것이 아니라(예를 들어, 구역 레벨 플래그가 0임), 이 프레임에서 다른 분류기 세트를 사용한다면, 구역 레벨 플래그가 시그널링될 수 있다. 예컨대, 디폴트 세트 인덱스가 사용된다면, 구역 레벨 플래그는 1이다. 예를 들어, 정사각형 파티션 4 구역에서, 아래 표 26-1에 도시된 바와 같이 다음의 분류기 세트가 사용된다.
표 26-1: 이 구역 내의 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개의 행을 포함하거나, 또는 6) CCSAO 적용 구역은 단지 인트라 코딩된 샘플만을 포함하거나, 또는 (7) CCSAO 적용 구역은 cbf=0 블록 내의 샘플만을 포함하거나, 또는 (8) CCSAO 적용 구역은 오직 [N, M]에서 블록 QP를 갖는 블록 상에만 있으며, 여기서 (N, M)은 SPS/APS/PPS/PH/SH/구역/CTU/CU/서브블록/샘플 레벨에서 사전 정의되거나 시그널링될 수 있다. 상호 성분 코딩 정보가 또한 고려되어, (9) CCSAO 적용 구역은 동일 위치에 있는 루마 샘플이 cbf=0 블록에 있는 크로마 샘플 상에 있다.
일부 실시예에서, 코딩 정보 적용 구역 제한을 도입할지 여부가 미리 정의될 수 있거나, 또는 SPS/APS/PPS/PH/SH/구역(대안 세트마다)/CTU/CU/서브블록/샘플 레벨에서 하나의 제어 플래그를 싱글링하여, 특정 코딩 정보는 CCSAO 애플리케이션에 포함/제외되는지를 지시할 수 있다. 디코더는 미리 정의된 조건 또는 제어 플래그에 따라 그러한 영역에 대한 CCSAO 프로세싱을 스킵한다. 예를 들어, YUV는 구역 (설정) 레벨에서 스위칭된 상이한 미리 정의된/플래그 제어 조건을 사용한다. CCSAO 애플리케이션 판단은 CU/TU/PU 또는 샘플 레벨일 수 있다.
표 26-2: YUV는 구역 (설정) 레벨에서 스위칭된 상이한 미리 정의된/플래그 제어 조건을 사용한다.다른 예는 (미리 정의된) 양방향 인에이블 제약의 전부 또는 일부를 재사용하는 것이다.
일부 실시예에서, 일부 특정 영역을 배제하는 것은 CCSAO 통계 수집에 이익이 될 수 있다. 오프셋 도출은 영역이 보정될 필요가 있는 것들에 대해 더 정확하거나 적합할 수 있다. cbf=0을 갖는 블록은 일반적으로, 추가로 정정될 필요가 없을 수 있는 블록이 완벽하게 예측됨을 의미한다. 그러한 블록을 배제하는 것은 다른 영역의 오프셋 도출에 유익할 수 있다.
상이한 적용 구역은 상이한 분류기를 사용할 수 있다. 예를 들어, CTU에서, 스킵 모드는 C1을 사용하고, 8x8 그리드는 C2를 사용하고, 스킵 모드 및 8x8 그리드는 C3을 사용한다. 예컨대, CTU에서, 스킵 모드 코딩된 샘플은 C1을 사용하고, CU 중심에서의 샘플은 C2를 사용하고, CU 중심에서 스킵 모드 코딩된 샘플은 C3을 사용한다. 도 29는 본 개시내용의 일부 구현에 따른, CCSAO 분류기가 현재 또는 교차 성분 코딩 정보를 고려할 수 있는 것을 예시하는 도면이다. 예를 들어, 상이한 코딩 모드/파라미터/샘플 포지션은 상이한 분류기를 형성할 수 있다. 상이한 코딩 정보는 공동 분류기를 형성하도록 조합될 수 있다. 상이한 영역은 상이한 분류기를 사용할 수 있다. 도 29는 또한 적용 구역의 다른 예를 도시한다.
일부 실시예에서, 미리 정의된 또는 플래그 제어 "코딩 정보 배제 영역" 메커니즘은 DBF/사전 SAO/SAO/BIF/CCSAO/ALF/CCALF/NNLF(NN loop filter) 또는 다른 루프 필터에서 사용될 수 있다.
일부 실시예에서, 구현된 CCSAO 신택스는 아래의 표 27에 도시된다. 일부 예에서, 각각의 신택스 엘리먼트의 이진화가 변경될 수 있다. AVS3에서, 패치라는 용어는 슬라이스와 유사하고, 패치 헤더는 슬라이스 헤더와 유사하다. FLC는 고정 길이 코드(fixed length code)를 나타낸다. TU는 절단된 단항 코드를 나타낸다. EGk는 차수 k를 갖는 지수-골롬 코드를 나타내며, 여기서 k는 고정될 수 있다. SVLC는 부호 있는 EG0을 나타낸다. UVLC는 부호 없는 EG0을 나타낸다.
표 27: 예시적인 CCSAO 신택스
더 높은 레벨의 플래그가 오프라면, 더 낮은 레벨의 플래그는 플래그의 오프 상태로부터 유추될 수 있고, 시그널링될 필요가 없다. 예를 들어, ph_cc_sao_cb_ag가 이 픽처에서 거짓이라면, ph_cc_sao_cb_band_num_minus1, ph_cc_sao_cb_luma_type, cc_sao_cb_offset_sign_flag, cc_sao_cb_offset_abs, ctb_cc_sao_cb_flag, cc_sao_cb_merge_left_flag, 및 cc_sao_cb_merge_up_flag는 존재하지 않고 거짓인 것으로 유추된다.
일부 실시예에서, SPS ccsao_enabled_ag는 아래 표 28에 도시된 바와 같이 SPS SAO 인에이블 플래그를 조건으로 한다.
표 28: SPS ccsao_enabled_ag는 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_ag, ph_cc_sao_cr_ag에 의존한다.
일부 실시예에서, ph_cc_sao_cb_type 및 ph_cc_sao_cr_type에 대해, 비트 오버헤드를 감소시키기 위해, 중심 동일 위치에 있는 루마 포지션이 크로마 샘플에 대한 분류를 위해 사용되는지(도 10의 Y0 포지션)를 구별하기 위해 플래그가 추가로 시그널링될 수 있다. 유사하게, cc_sao_cb_type 및 cc_sao_cr_type이 CTB 레벨에서 시그널링된다면, 플래그는 동일한 메커니즘으로 추가로 시그널링될 수 있다. 예를 들어, C0 루마 포지션 후보의 수가 9라면, cc_sao_cb_type0_flag는 아래 표 29에 도시된 바와 같이 중심 동일 위치에 있는 루마 포지션이 사용되는지를 구별하기 위해 추가로 시그널링된다. 중앙 동일 위치에 있는 루마 위치가 사용되지 않는다면, cc_sao_cb_type_idc는 나머지 8개의 이웃하는 루마 위치 중 어느 것이 사용되는지를 지시하는 데 사용된다.
표 29: cc_sao_cb_type0_flag는 중심 동일 위치에 있는 루마 포지션이 사용되는지를 구별하도록 시그널링된다.
하기 표 30은 단일(set_num = 1) 또는 복수의(set_num > 1) 분류기가 프레임에서 사용되는 AVS에서의 일례를 도시한다. 신택스 표기가 위에서 사용된 표기에 매핑될 수 있음을 주목한다.
표 30: 단일(set_num = 1) 또는 복수의(set_num > 1) 분류기가 픽처 프레임에서 사용되는 AVS에서의 예
각각의 구역이 각자의 세트를 갖는 도 25 또는 도 27과 조합된다면, 신택스 예는 아래 표 31에 도시된 바와 같이 구역 온/오프 제어 플래그(picture_ccsao_lcu_control_flag[compIdx][setIdx])를 포함할 수 있다.
표 31: 각각의 구역은 각자의 세트를 갖고, 신택스 예는 구역 온/오프 제어 플래그(picture_ccsao_lcu_control_flag[compIdx][setIdx])를 포함할 수 있다.
일부 실시예에서, 고 레벨 신택스의 경우, pps_ccsao_Info_in_ph_flag 및 gci_no_sao_constraint_flag가 부가될 수 있다.
일부 실시예에서, 1과 같은 pps_ccsao_Info_in_ph_flag는, CCSAO 필터 정보가 PH 신택스 구조에 존재할 수 있고 PH 신택스 구조를 포함하지 않는 PPS를 참조하는 슬라이스 헤더들에 존재하지 않을 수 있음을 특정한다. 0과 같은 pps_ccsao_Info_in_ph_flag는, CCSAO 필터 정보가 PH 신택스 구조에 존재하지 않고 PPS를 참조하는 슬라이스 헤더에 존재할 수 있음을 특정한다. pps_ccsao_info_in_ph_flag의 값은 존재하지 않는 경우 0과 같다고 유추된다.
일부 실시예에서, 1과 같은 gci_no_ccsao_constraint_flag는 OlsInScope 내의 모든 픽처에 대한 sps_ccsao_enabled_flag가 0과 같을 것임을 특정한다. 0과 같은 gci_no_ccsao_constraint_flag는 그러한 제약을 부과하지 않는다. 일부 실시예에서, 비디오의 비트스트림은 규칙에 따라 하나 이상의 출력 계층 세트(OLS: output layer set)를 포함한다. 본 명세서의 예에서, OlsInScope는 범위 내에 있는 하나 이상의 OLS를 참조한다. 일부 예에서, profile_tier_level( ) 신택스 구조는 레벨 정보를 제공하고, 선택적으로 프로파일, 티어, 서브-프로파일, 및 OlsInScope가 준수하는 일반 제약들 정보를 제공한다. profile_tier_level( ) 신택스 구조가 VPS에 포함되는 경우, OlsInScope는 VPS에 의해 특정된 하나 이상의 OLS이다. profile_tier_level( ) 신택스 구조가 SPS에 포함되는 경우, OlsInScope는 SPS를 참조하는 계층 중 최하위 계층인 계층만을 포함하는 OLS이고, 이러한 최하위 계층은 독립적인 계층이다.
일부 실시예에서, 인트라 및 인터 포스트 예측 SAO 필터에 대한 확장이 아래에 추가로 예시된다. 일부 실시예에서, 본 개시내용에서 개시된 (교차 성분 샘플/코딩 정보 분류를 포함하는) SAO 분류 방법은 사후 예측 필터로서의 역할을 할 수 있고, 예측은 인트라, 인터 또는 다른 예측 툴, 이를테면 인트라 블록 카피일 수 있다. 도 30은 본 개시내용의 일부 구현에 따라, 본 개시내용에 개시된 SAO 분류 방법이 사후 예측 필터로서 기능하는 것을 예시하는 블록도이다.
일부 실시예에서, 각각의 Y, U 및 V 성분에 대해, 대응하는 분류기가 선택된다. 그리고 각각의 성분 예측 샘플에 대해, 이는 먼저 분류되고, 대응하는 오프셋이 부가된다. 예를 들어, 각각의 성분은 분류를 위해 현재 및 이웃 샘플을 사용할 수 있다. Y는 현재 Y 및 이웃 Y 샘플을 사용하고, U/V는 아래 표 32에 도시된 바와 같은 분류를 위해 현재 U/V 샘플을 사용한다. 도 31은 본 개시내용의 일부 구현에 따라, 사후 예측 SAO 필터에 대해, 각각의 성분이 분류를 위해 현재 및 이웃 샘플을 사용할 수 있음을 예시하는 블록도이다.
표 32: 각각의 Y, U 및 V 성분에 대해 대응하는 분류기가 선택됨
일부 실시예에서, 개선된 예측 샘플(Ypred', Upred', Vpred')은 대응하는 클래스 오프셋을 부가함으로써 업데이트되고, 그 후 인트라, 인터, 또는 다른 예측을 위해 사용된다.
일부 실시예에서, 크로마 U 및 V 성분에 대해, 현재 크로마 성분 외에도, 교차 성분(Y)가 추가 오프셋 분류를 위해 사용될 수 있다. 추가 교차 성분 오프셋(h'_U, h'_V)은 예를 들어, 아래 표 33에 도시된 바와 같이, 현재 성분 오프셋(h_U, hV)에 부가될 수 있다.
표 33: 크로마 U 및 V 성분에 대해, 현재 크로마 성분 외에도, 교차 성분(Y)가 추가 오프셋 분류를 위해 사용될 수 있다.
일부 실시예에서, 개선된 예측 샘플(Upred'', Vpred'')은 대응하는 클래스 오프셋을 부가함으로써 업데이트되고, 그 후 인트라, 인터, 또는 다른 예측을 위해 사용된다.
일부 실시예에서, 인트라 및 인터 예측은 상이한 SAO 필터 오프셋을 사용할 수 있다.
도 32는 본 개시내용의 일부 구현에 따라, 본 개시내용에 개시된 SAO 분류 방법이 재구성 후 필터로서 기능하는 것을 예시하는 블록도이다.
일부 실시예에서, 본 명세서에 개시된 (교차 성분 샘플/코딩 정보 분류를 포함하는) SAO/CCSAO 분류 방법은 트리 유닛(TU: tree unit)의 재구성된 샘플에 적용되는 필터로서의 역할을 할 수 있다. 도 32에 도시된 바와 같이, CCSAO는 재구성 후 필터로서 기능할 수 있는데, 즉 재구성된 샘플(예측/잔여 샘플 추가 후, 블록 분리 필터 전)을 분류를 위한 입력으로서 사용하여, 이웃 인트라/인터 예측에 진입하기 전에 루마/크로마 샘플을 보상할 수 있다. CCSAO 사후 재구성 필터는 현재 TU 샘플의 왜곡을 감소시킬 수 있고, 이웃하는 인트라/인터 블록에 대해 더 양호한 예측을 제공할 수 있다. 더 정확한 예측에 의해 더 양호한 압축 효율이 예상될 수 있다.
도 33은 본 개시내용의 일부 구현에 따른, 교차 성분 상관을 사용하여 비디오 신호를 디코딩하는 예시적인 프로세스(3300)를 예시하는 흐름도이다.
(도 3에 도시된 바와 같은) 비디오 디코더(30)는 비디오 데이터로부터, 적응 파라미터 세트(APS)에 저장된, 다수의 이전에 사용된 교차 성분 샘플 적응 오프셋(CCSAO) 필터 오프셋 세트와 연관된 APS 식별자를 수신한다(3310).
비디오 디코더(30)는 비디오 데이터로부터, 현재 픽처 또는 슬라이스에 대해 사용되는 APS 식별자를 지시하는 신택스를 픽처 헤더(PH) 또는 슬라이스 헤더(SH)에서 수신한다(3320).
비디오 디코더(30)는 현재 코딩 트리 유닛(CTU)에 대해, APS 식별자와 연관된 APS 내의 다수의 오프셋 세트들 중 특정의 이전에 사용된 CCSAO 필터 오프셋 세트를 지시하는 필터 세트 인덱스를 디코딩한다(3330).
비디오 디코더(30)는 특정의 이전에 사용된 CCSAO 필터 오프셋 세트를 비디오 데이터의 현재 CTU에 적용한다(3340).
일부 실시예에서, 비디오 데이터는 제1 성분 및 제2 성분을 포함하고, 특정의 이전에 사용된 CCSAO 필터 오프셋 세트는: 제2 성분의 개개의 샘플과 연관된 제1 성분의 한 세트의 하나 이상의 샘플로부터 제2 성분에 대한 개개의 분류기를 결정하고, 결정된 개개의 샘플 오프셋에 기초하여 제2 성분의 개개의 샘플을 수정하기 위해 개개의 분류기에 따라 제2 성분의 개개의 샘플에 대한 개개의 샘플 오프셋을 결정하고, 그리고 각각의 개개의 분류기에 대한 한 세트의 대응하는 결정된 개개의 샘플 오프셋을 특정의 이전에 사용된 CCSAO 필터 오프셋 세트로서 저장함으로써 획득된다.
일부 실시예에서, APS 식별자는 최대 수의 이전에 사용된 CCSAO 필터 오프셋 세트와 연관되고, 상기 이전에 사용된 CCSAO 필터 오프셋 세트의 수가 최대 수에 도달한다는 결정에 대한 응답으로, 새롭게 추가된 CCSAO 필터 오프셋 세트는 FIFO(First In, First Out) 메커니즘에서 이전에 사용된 CCSAO 필터 오프셋 세트 중 하나를 대체한다.
일부 실시예에서, APS 식별자는 최대 수의 이전에 사용된 CCSAO 필터 오프셋 세트와 연관되고, 상기 이전에 사용된 CCSAO 필터 오프셋 세트의 수가 최대 수에 도달한다는 결정에 대한 응답으로, 새롭게 추가된 CCSAO 필터 오프셋 세트는 LRU(least-recently-used) 메커니즘에서 이전에 사용된 CCSAO 필터 오프셋 세트 중 하나를 대체한다.
일부 실시예에서, FIFO 메커니즘에서, 새롭게 추가된 CCSAO 필터 오프셋 세트는, 시퀀스 파라미터 세트(SPS), APS, 픽처 파라미터 세트(PPS), PH, SH, 구역, 코딩 트리 유닛(CTU), 코딩 유닛(CU), 서브블록 및/또는 샘플 레벨 중 하나 이상에서 순환하여 이전에 사용된 CCSAO 필터 오프셋 세트 중 하나를 대체한다.
일부 실시예에서, LRU 메커니즘에서, 새롭게 추가된 CCSAO 필터 오프셋 세트는 SPS, APS, 픽처 그룹(GOP)별 구조, PPS/PH/SH/구역/CTU/CU/서브블록/ 또는 샘플 레벨 중 하나 이상에서 이전에 사용된 CCSAO 필터 오프셋 세트의 카운트 표에 의해 식별된 최소 최근 사용 오프셋 세트를 대체한다.
일부 실시예에서, 최대 수는 SPS, APS, PPS, PH, SH, 구역, CTU, CU, 서브블록 및/또는 샘플 레벨 중 하나 이상으로 미리 정의되거나 시그널링된다.
일부 실시예에서, 다수의 이전에 사용된 CCSAO 필터 오프셋 세트는 개개의 분류기와 연관된 코딩 정보, 후보 포지션, 대역 정보, 및 에지 정보 중 하나 이상을 포함한다.
일부 실시예에서, APS 식별자와 연관된 이전에 사용된 CCSAO 필터 오프셋 세트 중 어느 것도 새롭게 추가된 CCSAO 필터 오프셋 세트와 동일하지 않다면, 새롭게 추가된 CCSAO 필터 오프셋 세트가 이전에 사용된 CCSAO 필터 오프셋 세트 중 하나를 대체한다.
일부 실시예에서, APS 식별자는 현재 픽처 또는 슬라이스에서 제1 성분 및 제2 성분에 대해 사용되고, 제1 성분은 제1 CCSAO 필터 오프셋 세트 대체 메커니즘을 사용하고, 제2 성분은 제2 CCSAO 필터 오프셋 대체 메커니즘을 사용한다.
일부 실시예에서, PH 또는 SH 내의 제1 신택스는 현재 픽처 또는 슬라이스에서 제1 성분에 대해 사용된 제1 APS 식별자를 지시하고, PH 또는 SH 내의 제2 신택스는 현재 픽처 또는 슬라이스에서 제2 성분에 대해 사용된 제2 APS 식별자를 지시한다.
도 34는 사용자 인터페이스(3450)와 결합된 컴퓨팅 환경(3410)을 도시한다. 컴퓨팅 환경(3410)은 데이터 프로세싱 서버의 일부일 수 있다. 컴퓨팅 환경(3410)은 프로세서(3420), 메모리(3430) 및 I/O(Input/Output) 인터페이스(3440)를 포함한다.
프로세서(3420)는 통상적으로, 컴퓨팅 환경(3410)의 전체 동작, 이를테면 디스플레이, 데이터 획득, 데이터 통신 및 이미지 프로세싱과 연관된 동작을 제어한다. 프로세서(3420)는 위에서 설명된 방법의 단계 모두 또는 일부를 수행하기 위한 명령을 실행하기 위한 하나 이상의 프로세서를 포함할 수 있다. 더욱이, 프로세서(3420)는 프로세서(3420)와 다른 컴포넌트 간의 상호 작용을 가능하게 하는 하나 이상의 모듈을 포함할 수 있다. 프로세서는 중앙 프로세싱 유닛(CPU: Central Processing Unit), 마이크로프로세서, 단일 칩 머신, 그래픽 프로세싱 유닛(GPU: Graphical Processing Unit) 등일 수 있다.
메모리(3430)는 컴퓨팅 환경(3410)의 동작을 지원하기 위해 다양한 타입의 데이터를 저장하도록 구성된다. 메모리(3430)는 미리 결정된 소프트웨어(3432)를 포함할 수 있다. 이러한 데이터의 예는 컴퓨팅 환경(3410) 상에서 동작되는 임의의 애플리케이션 또는 방법에 대한 명령, 비디오 데이터세트, 이미지 데이터 등을 포함한다. 메모리(3430)는 임의의 타입의 휘발성 또는 비휘발성 메모리 디바이스, 또는 이들의 조합, 이를테면 정적 랜덤 액세스 메모리(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 인터페이스(3440)는 키보드, 클릭 휠, 버튼 등과 같은 주변 인터페이스 모듈과 프로세서(3420) 사이에 인터페이스를 제공한다. 버튼은 홈 버튼, 스캔 시작 버튼 및 스캔 중지 버튼을 포함할 수 있지만 그에 제한되는 것은 아니다. I/O 인터페이스(3440)는 인코더 및 디코더와 결합될 수 있다.
일 실시예에서, 앞서 설명된 방법을 수행하기 위해 컴퓨팅 환경(3410) 내의 프로세서(3420)에 의해 실행 가능한, 예를 들어 메모리(3430) 내의 복수의 프로그램을 포함하는 비-일시적 컴퓨터 판독 가능 저장 매체가 또한 제공된다. 대안으로, 비-일시적 컴퓨터 판독 가능 저장 매체는 예를 들어, 비디오 데이터를 디코딩할 때 디코더(예를 들어, 도 3의 비디오 디코더(30))에 의한 사용을 위해 위에서 설명된 인코딩 방법을 사용하여 인코더(예를 들어, 도 2의 비디오 인코더(20))에 의해 생성된 인코딩된 비디오 정보(예를 들어, 하나 이상의 신택스 엘리먼트를 포함하는 비디오 정보)를 포함하는 비트스트림 또는 데이터 스트림을 저장했을 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체는 예를 들어, ROM, 랜덤 액세스 메모리(RAM: Random Access Memory), CD-ROM, 자기 테이프, 플로피 디스크, 광학 데이터 저장 디바이스 등일 수 있다.
일 실시예에서, 하나 이상의 프로세서(예컨대, 프로세서(3420)); 하나 이상의 프로세서에 의해 실행가능한 복수의 프로그램을 내부에 저장한 비-일시적 컴퓨터 판독 가능 저장 매체 또는 메모리(3430)를 포함하며, 하나 이상의 프로세서는 복수의 프로그램의 실행 시에, 앞서 설명된 방법을 수행하도록 구성된다.
일 실시예에서, 앞서 설명된 방법을 수행하기 위해 컴퓨팅 환경(3410) 내의 프로세서(3420)에 의해 실행 가능한, 예를 들어 메모리(3430) 내의 복수의 프로그램을 포함하는 컴퓨터 프로그램 제품이 또한 제공된다. 예를 들어, 컴퓨터 프로그램 제품은 비-일시적 컴퓨터 판독 가능 저장 매체를 포함할 수 있다.
일 실시예에서, 컴퓨팅 환경(3410)은 위의 방법을 수행하기 위해 하나 이상의 ASIC, DSP, 디지털 신호 프로세싱 디바이스(DSPD: Digital Signal Processing Device), 프로그래밍 가능 로직 디바이스(PLD: Programmable Logic Device), FPGA, GPU, 제어기, 마이크로컨트롤러, 마이크로프로세서, 또는 다른 전자 컴포넌트로 구현될 수 있다.
추가 실시예는 또한 다양한 다른 실시예로 조합되거나 아니면 재배열된 상기 실시예의 다양한 서브세트를 포함한다.
하나 이상의 예들에서, 설명되는 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현된다면, 이 기능들은 하나 또는 그보다 많은 명령들 또는 코드로서 컴퓨터 판독 가능 매체 상에 저장되거나 이를 통해 송신될 수 있고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 저장 매체를 포함할 수 있으며, 이는 데이터 저장 매체와 같은 유형 매체, 또는 예컨대, 통신 프로토콜에 따라 한 장소에서 다른 장소로 컴퓨터 프로그램의 전달을 가능하게 하는 임의의 매체를 포함하는 통신 매체에 대응한다. 이런 식으로, 컴퓨터 판독 가능 매체는 일반적으로 (1) 비-일시적인 유형의 컴퓨터 판독 가능 저장 매체 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 본 출원에서 설명된 기법의 구현을 위한 명령, 코드 및/또는 데이터 구조를 리트리브하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체를 포함할 수 있다.
본 명세서에서 구현의 설명에 사용된 용어는 특정 구현만을 설명하기 위한 것이며, 청구범위를 제한하는 것으로 의도되는 것은 아니다. 구현들 및 첨부된 청구항들의 설명에서 사용된 바와 같이, 단수 형태들은 맥락이 명확하게 달리 지시하지 않는 한, 복수 형태들도 포함하는 것으로 의도된다. 본 명세서에서 사용된 "및/또는"이라는 용어는 연관된 열거된 항목들 중 하나 이상의 임의의 그리고 모든 가능한 결합들을 의미하고 포괄한다고 또한 이해될 것이다. 본 명세서에서 사용될 때 "포함한다" 및/또는 "포함하는"이라는 용어는 언급된 특징, 엘리먼트 및/또는 컴포넌트의 존재를 명시하지만, 하나 이상의 다른 특징, 엘리먼트, 컴포넌트 및/또는 이들의 그룹의 존재 또는 추가를 배제하는 것은 아니라고 추가로 이해될 것이다.
제1, 제2 등의 용어는 본 명세서에서 다양한 엘리먼트를 설명하는 데 사용될 수 있지만, 이러한 엘리먼트는 이러한 용어로 제한되지는 않아야 한다고 또한 이해될 것이다. 이러한 용어들은 하나의 엘리먼트를 다른 엘리먼트와 구별하기 위해서만 사용된다. 예를 들어, 제1 전극은 제2 전극으로 지칭될 수 있고, 마찬가지로 제2 전극은 구현의 범위를 벗어나지 않으면서 제1 전극으로 지칭될 수 있다. 제1 전극과 제2 전극은 둘 다 전극이지만, 이들이 동일한 전극은 아니다.
본 명세서 전반에 걸쳐 단수 또는 복수의 "일례", "예", "예시적인 예" 등에 대한 언급은 예와 관련하여 설명된 하나 이상의 특정 특징, 구조 또는 특성이 본 개시내용의 적어도 하나의 예에 포함되는 것을 의미한다. 따라서 본 명세서 전반에 걸쳐 다양한 위치에서 단수 또는 복수로 "일례에서" 또는 "예에서", "예시적인 예에서" 등의 문구의 출현은 반드시 모두 동일한 예를 지칭하는 것은 아니다. 더욱이, 하나 이상의 예에서의 특정 특징, 구조 또는 특징은 임의의 적절한 방식으로 조합되는 것을 포함할 수 있다.
본 출원의 설명은 예시 및 설명을 목적으로 제시되며, 개시된 형태로 본 발명을 총망라하거나 본 발명에 제한되는 것으로 의도되는 것은 아니다. 앞서 말한 설명 및 연관된 도면에 제시된 교시의 이점을 갖는 많은 수정, 변형 및 대안적인 구현이 당해 기술분야에서 통상의 지식을 가진 자에게 명백할 것이다. 실시예는 본 발명의 원리, 실제 적용을 가장 잘 설명하기 위해, 그리고 당해 기술 분야에서 통상의 지식을 가진 다른 자가 다양한 구현에 대해 본 발명을 이해하고 기반이 되는 원리 및 다양한 구현을 고려되는 특정 용도에 맞춰진 다양한 수정으로 가장 잘 이용하는 것을 가능하게 하기 위해 선택되고 설명되었다. 따라서 청구범위는 개시된 구현의 특정 예에 제한되는 것은 아니며 수정 및 다른 구현은 첨부된 청구범위 내에 포함되는 것으로 의도된다고 이해되어야 한다.

Claims (14)

  1. 비디오 데이터를 디코딩하는 방법으로서,
    상기 비디오 데이터로부터, 적응 파라미터 세트(APS: Adaptation Parameter Set)에 저장된 다수의 이전에 사용된 교차 성분 샘플 적응 오프셋(CCSAO: Cross-Component Sample Adaptive Offset) 필터 오프셋 세트들과 연관된 APS 식별자를 수신하는 단계,
    상기 비디오 데이터로부터, 현재 픽처 또는 슬라이스에 대해 사용되는 APS 식별자를 지시하는 신택스를 픽처 헤더(PH: Picture Header) 또는 슬라이스 헤더(SH: Slice Header)에서 수신하는 단계,
    현재 코딩 트리 유닛(CTU: coding tree unit)에 대해, 상기 APS 식별자와 연관된 APS 내의 상기 다수의 오프셋 세트들 중 특정의 이전에 사용된 CCSAO 필터 오프셋 세트를 지시하는 필터 세트 인덱스를 디코딩하는 단계; 및
    상기 특정의 이전에 사용된 CCSAO 필터 오프셋 세트를 상기 비디오 데이터의 현재 CTU에 적용하는 단계
    를 포함하는 비디오 데이터를 디코딩하는 방법.
  2. 제1항에 있어서,
    상기 비디오 데이터는 제1 성분 및 제2 성분을 포함하고,
    상기 특정의 이전에 사용된 CCSAO 필터 오프셋 세트는:
    상기 제2 성분의 개개의 샘플과 연관된 상기 제1 성분의 한 세트의 하나 이상의 샘플로부터 상기 제2 성분에 대한 개개의 분류기를 결정하고,
    결정된 개개의 샘플 오프셋에 기초하여 상기 제2 성분의 개개의 샘플을 수정하기 위해 상기 개개의 분류기에 따라 상기 제2 성분의 개개의 샘플에 대한 개개의 샘플 오프셋을 결정하고, 그리고
    각각의 개개의 분류기에 대한 한 세트의 대응하는 결정된 개개의 샘플 오프셋을 상기 특정의 이전에 사용된 CCSAO 필터 오프셋 세트로서 저장하는
    것에 의해 획득되는, 비디오 데이터를 디코딩하는 방법.
  3. 제1항에 있어서,
    상기 APS 식별자는 최대 수의 이전에 사용된 CCSAO 필터 오프셋 세트와 연관되고, 상기 이전에 사용된 CCSAO 필터 오프셋 세트의 수가 최대 수에 도달한다는 결정에 대한 응답으로, 새롭게 추가된 CCSAO 필터 오프셋 세트는 FIFO(First In, First Out) 메커니즘에서 이전에 사용된 CCSAO 필터 오프셋 세트 중 하나를 대체하는,
    비디오 데이터를 디코딩하는 방법.
  4. 제1항에 있어서,
    상기 APS 식별자는 최대 수의 이전에 사용된 CCSAO 필터 오프셋 세트와 연관되고, 상기 이전에 사용된 CCSAO 필터 오프셋 세트의 수가 상기 최대 수에 도달한다는 결정에 대한 응답으로, 새롭게 추가된 CCSAO 필터 오프셋 세트는 LRU(least-recently-used) 메커니즘에서 상기 이전에 사용된 CCSAO 필터 오프셋 세트 중 하나를 대체하는,
    비디오 데이터를 디코딩하는 방법.
  5. 제3항에 있어서,
    상기 FIFO 메커니즘에서, 상기 새롭게 추가된 CCSAO 필터 오프셋 세트는, 시퀀스 파라미터 세트(SPS: Sequence Parameter Set), APS, 픽처 파라미터 세트(PPS: Picture parameter set), PH, SH, 구역, 코딩 트리 유닛(CTU: Coding tree unit), 코딩 유닛(CU: Coding unit), 서브블록 및/또는 샘플 레벨 중 하나 이상에서 순환하여 상기 이전에 사용된 CCSAO 필터 오프셋 세트 중 하나를 대체하는,
    비디오 데이터를 디코딩하는 방법.
  6. 제4항에 있어서,
    상기 LRU 메커니즘에서, 상기 새롭게 추가된 CCSAO 필터 오프셋 세트는 SPS, APS, 픽처 그룹(GOP)별 구조, PPS, PH, SH, 구역, CTU, CU, 서브블록 및/또는 샘플 레벨 중 하나 이상에서 상기 이전에 사용된 CCSAO 필터 오프셋 세트의 카운트 표에 의해 식별된 최소 최근 사용 오프셋 세트를 대체하는,
    비디오 데이터를 디코딩하는 방법.
  7. 제3항에 있어서,
    상기 최대 수는 SPS, APS, PPS, PH, SH, 구역, CTU, CU, 서브블록 및/또는 샘플 레벨 중 하나 이상으로 미리 정의되거나 시그널링되는,
    비디오 데이터를 디코딩하는 방법.
  8. 제2항에 있어서,
    상기 다수의 이전에 사용된 CCSAO 필터 오프셋 세트는 상기 개개의 분류기와 연관된 코딩 정보, 후보 포지션, 대역 정보, 및 에지 정보 중 하나 이상을 포함하는,
    비디오 데이터를 디코딩하는 방법.
  9. 제3항에 있어서,
    상기 APS 식별자와 연관된 상기 이전에 사용된 CCSAO 필터 오프셋 세트들 중 어느 것도 상기 새롭게 추가된 CCSAO 필터 오프셋 세트와 동일하지 않다면, 상기 새롭게 추가된 CCSAO 필터 오프셋 세트가 상기 이전에 사용된 CCSAO 필터 오프셋 세트 중 하나를 대체하는,
    비디오 데이터를 디코딩하는 방법.
  10. 제2항에 있어서,
    상기 APS 식별자는 상기 현재 픽처 또는 슬라이스에서 상기 제1 성분 및 상기 제2 성분에 대해 사용되고,
    상기 제1 성분은 제1 CCSAO 필터 오프셋 세트 대체 메커니즘을 사용하고, 상기 제2 성분은 제2 CCSAO 필터 오프셋 대체 메커니즘을 사용하는,
    비디오 데이터를 디코딩하는 방법.
  11. 제2항에 있어서,
    PH 또는 SH 내의 제1 신택스는 상기 현재 픽처 또는 슬라이스에서 상기 제1 성분에 대해 사용된 제1 APS 식별자를 지시하고,
    PH 또는 SH 내의 제2 신택스는 상기 현재 픽처 또는 슬라이스에서 상기 제2 성분에 대해 사용된 제2 APS 식별자를 지시하는,
    비디오 데이터를 디코딩하는 방법.
  12. 전자 장치로서,
    하나 이상의 프로세싱 유닛;
    상기 하나 이상의 프로세싱 유닛에 결합된 메모리; 및
    상기 하나 이상의 프로세싱 유닛에 의해 실행될 때, 상기 전자 장치로 하여금 제1항 내지 제11항 중 어느 한 항의 방법을 수행하게 하는, 메모리에 저장된 복수의 프로그램을 포함하는,
    전자 장치.
  13. 제1항 내지 제11항 중 어느 한 항에 따른, 비디오 데이터를 디코딩하기 위한 방법에 의해 생성된 비디오 정보를 포함하는 비트스트림을 저장한,
    컴퓨터 판독 가능 저장 매체.
  14. 하나 이상의 프로세싱 유닛을 갖는 전자 장치에 의한 실행을 위한 복수의 프로그램을 저장하는 비-일시적 컴퓨터 판독 가능 저장 매체로서,
    상기 복수의 프로그램은, 상기 하나 이상의 프로세싱 유닛에 의해 실행될 때, 상기 전자 장치로 하여금 제1항 내지 제11항 중 어느 한 항의 방법을 수행하게 하는,
    비-일시적 컴퓨터 판독 가능 저장 매체.
KR1020237044796A 2021-05-26 2022-05-26 교차 성분 샘플 적응 오프셋에서의 코딩 향상 KR20240011197A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163193539P 2021-05-26 2021-05-26
US63/193,539 2021-05-26
US202163213167P 2021-06-21 2021-06-21
US63/213,167 2021-06-21
PCT/US2022/031160 WO2022251517A1 (en) 2021-05-26 2022-05-26 Coding enhancement in cross-component sample adaptive offset

Publications (1)

Publication Number Publication Date
KR20240011197A true KR20240011197A (ko) 2024-01-25

Family

ID=84229193

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237044796A KR20240011197A (ko) 2021-05-26 2022-05-26 교차 성분 샘플 적응 오프셋에서의 코딩 향상

Country Status (6)

Country Link
US (1) US20240137546A1 (ko)
EP (1) EP4349014A1 (ko)
JP (1) JP2024521804A (ko)
KR (1) KR20240011197A (ko)
MX (1) MX2023014066A (ko)
WO (1) WO2022251517A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102667418B1 (ko) * 2020-03-31 2024-05-20 베이징 다지아 인터넷 인포메이션 테크놀로지 컴퍼니 리미티드 비디오 코딩에서의 신택스 엘리먼트의 시그널링을 위한 방법 및 장치
EP4447438A1 (en) * 2023-04-14 2024-10-16 Beijing Xiaomi Mobile Software Co., Ltd. Encoding/decoding video picture data

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120294353A1 (en) * 2011-05-16 2012-11-22 Mediatek Inc. Apparatus and Method of Sample Adaptive Offset for Luma and Chroma Components
US10110926B2 (en) * 2015-10-15 2018-10-23 Cisco Technology, Inc. Efficient loop filter for video codec
CN113728627B (zh) * 2019-04-26 2023-09-19 北京字节跳动网络技术有限公司 用于环路内重构的参数的预测
WO2021072177A1 (en) * 2019-10-09 2021-04-15 Bytedance Inc. Cross-component adaptive loop filtering in video coding

Also Published As

Publication number Publication date
JP2024521804A (ja) 2024-06-04
WO2022251517A1 (en) 2022-12-01
EP4349014A1 (en) 2024-04-10
MX2023014066A (es) 2024-01-10
US20240137546A1 (en) 2024-04-25

Similar Documents

Publication Publication Date Title
KR20230139811A (ko) 교차-성분 샘플 적응적 오프셋에서의 코딩 향상
US20240137546A1 (en) Coding enhancement in cross-component sample adaptive offset
US20240007652A1 (en) Coding enhancement in cross-component sample adaptive offset
US20230336785A1 (en) Coding enhancement in cross-component sample adaptive offset
KR20230170072A (ko) 교차-컴포넌트 샘플 적응적 오프셋에서의 코딩 강화
WO2022164757A1 (en) Chroma coding enhancement in cross-component sample adaptive offset
US20240195996A1 (en) Coding enhancement in cross-component sample adaptive offset
KR20240042642A (ko) 교차 성분 샘플 적응적 오프셋에서의 코딩 강화
CN117413516A (zh) 跨分量样本自适应偏移中的编解码增强
KR20240042646A (ko) 교차-컴포넌트 샘플 적응적 오프셋에서의 코딩 강화
CN117917074A (zh) 跨分量样点自适应偏移中的编解码增强
CN117296315A (zh) 跨分量样点自适应偏移中的编解码增强
CN116671105A (zh) 具有虚拟边界的跨分量样点自适应偏移中的色度编解码增强
CN116965017A (zh) 在跨分量样点自适应偏移中的色度编解码增强

Legal Events

Date Code Title Description
A201 Request for examination