KR20220030991A - 적응적 루프 필터링에서의 샘플 패딩 - Google Patents

적응적 루프 필터링에서의 샘플 패딩 Download PDF

Info

Publication number
KR20220030991A
KR20220030991A KR1020227000151A KR20227000151A KR20220030991A KR 20220030991 A KR20220030991 A KR 20220030991A KR 1020227000151 A KR1020227000151 A KR 1020227000151A KR 20227000151 A KR20227000151 A KR 20227000151A KR 20220030991 A KR20220030991 A KR 20220030991A
Authority
KR
South Korea
Prior art keywords
samples
video
boundary
sample
boundaries
Prior art date
Application number
KR1020227000151A
Other languages
English (en)
Other versions
KR102648121B1 (ko
Inventor
리 장
카이 장
훙빈 류
웨 왕
Original Assignee
베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드
바이트댄스 아이엔씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드, 바이트댄스 아이엔씨 filed Critical 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드
Publication of KR20220030991A publication Critical patent/KR20220030991A/ko
Application granted granted Critical
Publication of KR102648121B1 publication Critical patent/KR102648121B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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
    • 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/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

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

Abstract

비디오 프로세싱 방법은, 비디오의 비디오 픽처에 있는 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 적응적 루프 필터 프로세스에서 현재 샘플에 대한 비디오 픽처의 다수의 비디오 영역들의 경계들에 걸쳐 위치하는 제1 샘플 세트를 패딩하는 방식을 결정하는 단계를 포함한다. 이 방법은 결정하는 것에 따라 변환을 수행하는 단계를 또한 포함한다.

Description

적응적 루프 필터링에서의 샘플 패딩
관련 출원의 상호 참조
파리 협약에 따른 적용 가능한 특허법 및/또는 규칙들에 따라, 본 출원은 2019년 7월 11일에 출원된 국제 특허 출원 제PCT/CN2019/095657호에 대한 우선권 및 그 이익을 적시에 주장하기 위해 이루어졌다. 법에 따른 모든 목적들을 위해, 앞서 언급된 출원의 전체 개시는 본 출원의 개시의 일부로서 참고로 포함된다.
기술 분야
이 특허 문서는 일반적으로 비디오 코딩 및 디코딩 기술들에 관한 것이다.
비디오 코딩 표준들은 주로 잘 알려진 ITU-T 및 ISO/IEC 표준들의 개발을 통해 발전해 왔다. ITU-T는 H.261 및 H.263 표준들을 만들었고, ISO/IEC는 MPEG-1 및 MPEG-4 Visual 표준들을 만들었으며, 두 조직은 공동으로 H.262/MPEG-2 Video 및 H.264/MPEG-4 AVC(Advanced Video Coding) 및 H.265/HEVC(High Efficiency Video Coding) 표준들을 만들었다. H.262 이후로, 비디오 코딩 표준들은 시간 예측과 변환 코딩이 활용되는 하이브리드 비디오 코딩 구조를 기반으로 한다. HEVC 이후의 미래 비디오 코딩 기술들을 탐구하기 위해, 2015년에 VCEG와 MPEG에 의해 공동으로 JVET(Joint Video Exploration Team)가 설립되었다. 그 이후로, 많은 새로운 방법들이 JVET에 의해 채택되었고 JEM(Joint Exploration Model)이라는 참조 소프트웨어에 추가되었다. 2018년 4월에, HEVC에 비해 50% 비트레이트 감소를 목표로 하는 차세대 VVC(Versatile Video Coding) 표준에 대해 연구하기 위해 VCEG(Q6/16)와 ISO/IEC JTC1 SC29/WG11(MPEG) 간의 협력 하에 JVET가 만들어졌다.
개시된 비디오 코딩, 트랜스코딩 또는 디코딩 기술들을 사용하여, 비디오 인코더들 또는 디코더들의 실시예들은 코딩 또는 디코딩 툴들의 보다 나은 압축 효율 및 보다 간단한 구현들을 제공하기 위해 코딩 트리 블록들의 가상 경계들을 처리할 수 있다.
일 예시적인 양태에서, 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오의 비디오 픽처에 있는 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 적응적 루프 필터 프로세스에서 현재 샘플에 대한 비디오 픽처의 다수의 비디오 영역들의 경계들에 걸쳐 위치하는 제1 샘플 세트를 패딩하는 방식을 결정하는 단계를 포함한다. 이 방법은 결정하는 것에 따라 변환을 수행하는 단계를 또한 포함한다.
다른 예시적인 양태에서, 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오의 비디오 픽처에 있는 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 블록이 비디오 픽처의 다수의 비디오 영역들의 적어도 하나의 유형의 경계와 일치하는 경우에 적응적 루프 필터 프로세스에서 블록의 현재 샘플에 대한 샘플들을 생성하는 균일 패딩 동작을 결정하는 단계를 포함한다. 이 방법은 결정하는 것에 기초하여 변환을 수행하는 단계를 또한 포함한다.
다른 예시적인 양태에서, 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오의 비디오 픽처에 있는 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 다수의 비디오 영역들의 두 가지 유형의 경계들 사이에 위치하는 현재 샘플에 대한 적응적 루프 필터 프로세스에서 패딩 동작이 호출되는 방식을 결정하는 단계를 포함한다. 두 가지 유형의 경계들 중 하나는 360 가상 경계를 포함한다. 이 방법은 결정하는 것에 따라 변환을 수행하는 단계를 또한 포함한다.
다른 예시적인 양태에서, 비디오 프로세싱 방법이 개시된다. 이 방법은 비디오 픽처의 비디오 블록들과 그의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다. 여기서, 비디오 블록들은 코딩 트리 블록들의 논리적 그룹화들을 사용하여 프로세싱되고, 코딩 트리 블록들은 하단 코딩 트리 블록의 하단 경계가 비디오 픽처의 하단 경계 외부에 있는지 여부에 기초하여 프로세싱된다.
다른 예시적인 양태에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 현재 비디오 블록의 코딩 트리 블록의 조건에 기초하여, 인루프 필터링 동안 가상 샘플들의 사용 상태를 결정하는 단계 및 가상 샘플들의 사용 상태에 따라 비디오 블록과 비디오 블록의 비트스트림 표현 사이의 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양태에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 하나 이상의 비디오 슬라이스 또는 비디오 브릭으로 논리적으로 그룹화되는 비디오 픽처와 비디오 픽처의 비트스트림 표현 사이의 변환 동안, 적응 루프 필터 프로세스에서 다른 슬라이스 또는 브릭 내의 샘플들의 사용을 디스에이블시키기로 결정하는 단계 및 결정에 따라 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양태에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오 픽처의 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환 동안, 현재 비디오 블록이 비디오 픽처의 비디오 유닛의 경계에 위치하는 샘플들을 포함한다고 결정하는 단계 및 결정에 기초하여 변환을 수행하는 단계를 포함하며, 여기서 변환을 수행하는 단계는 비디오 픽처 내의 모든 경계 유형들에 대해 동일한 통일된 방법을 사용하여 인루프 필터링 프로세스를 위한 가상 샘플들을 생성하는 단계를 포함한다.
또 다른 예시적인 양태에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 비디오 픽처의 현재 비디오 블록과 그의 비트스트림 표현 사이의 변환 동안, 변환 동안 비디오 픽처에 대해 이용 가능한 다수의 적응 루프 필터(ALF) 샘플 선택 방법들 중 하나를 적용하기로 결정하는 단계 및 다수의 ALF 샘플 선택 방법들 중 하나를 적용하는 것에 의해 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양태에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 경계 규칙에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환 동안 비디오 픽처의 현재 비디오 블록의 샘플들에 대해 인루프 필터링 동작을 수행하는 단계 - 경계 규칙은 비디오 픽처의 가상 파이프라인 데이터 유닛(VPDU)에 걸쳐 있는 샘플들을 사용하는 것을 디스에이블시킴 -, 및 인루프 필터링 동작의 결과를 사용하여 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양태에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 경계 규칙에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환 동안 비디오 픽처의 현재 비디오 블록의 샘플들에 대해 인루프 필터링 동작을 수행하는 단계 - 경계 규칙은, 비디오 유닛 경계에 걸쳐 있는 현재 비디오 블록의 위치들에 대해, 패딩을 사용하지 않고 생성되는 샘플들을 사용하도록 지정함 -, 및 인루프 필터링 동작의 결과를 사용하여 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양태에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 경계 규칙에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환 동안 비디오 픽처의 현재 비디오 블록의 샘플들에 대해 인루프 필터링 동작을 수행하는 단계 - 경계 규칙은, 인루프 필터링 동작을 위해, 인루프 필터링 동안 사용되는 현재 비디오 블록의 샘플들이 비디오 픽처의 비디오 유닛의 경계에 걸쳐 있지 않도록 하는 치수들을 갖는 필터를 선택하는 것을 지정함 -, 및 인루프 필터링 동작의 결과를 사용하여 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양태에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 경계 규칙에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 사이의 변환 동안 비디오 픽처의 현재 비디오 블록의 샘플들에 대해 인루프 필터링 동작을 수행하는 단계 - 경계 규칙은, 인루프 필터링 동작을 위해, 패딩된 샘플들이 인루프 필터링에 필요한지 여부에 기초하여 클리핑 파라미터들 또는 필터 계수들을 선택하는 것을 지정함 -, 및 인루프 필터링 동작의 결과를 사용하여 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양태에서, 다른 비디오 프로세싱 방법이 개시된다. 이 방법은, 경계 규칙에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환 동안 비디오 픽처의 현재 비디오 블록의 샘플들에 대해 인루프 필터링 동작을 수행하는 단계 - 경계 규칙은 현재 비디오 블록의 컬러 성분 아이덴티티에 의존함 -, 및 인루프 필터링 동작의 결과를 사용하여 변환을 수행하는 단계를 포함한다.
또 다른 예시적인 양태에서, 위에서 설명된 방법을 수행하도록 구성된 비디오 인코딩 장치가 개시된다.
또 다른 예시적인 양태에서, 위에서 설명된 방법을 수행하도록 구성된 비디오 디코더가 개시된다.
또 다른 예시적인 양태에서, 머신 판독 가능 매체가 개시된다. 매체는, 실행 시에, 프로세서로 하여금 위에서 설명된 방법들 중 하나 이상을 구현하게 하는 코드를 저장한다.
개시된 기술의 상기 및 다른 양태들 및 특징들은 도면들, 설명 및 청구항들에서 보다 상세히 설명된다.
도 1은 12 개의 타일과 3 개의 래스터 스캔 슬라이스로 분할되는 18 x 12 루마 코딩 트리 유닛들(CTU들)을 갖는 픽처의 예를 도시한다.
도 2는 24 개의 타일과 9 개의 직사각형 슬라이스로 분할되는 18 x 12 루마 CTU들을 갖는 픽처의 예를 도시한다.
도 3은 4 개의 타일, 11 개의 브릭 및 4 개의 직사각형 슬라이스로 분할되는 픽처의 예를 도시한다.
도 4a는 K = M, L < N일 때 픽처 경계들에 걸쳐 있는 코딩 트리 블록들(CTB들)의 예를 도시한다.
도 4b는 K < M, L = N일 때 픽처 경계들에 걸쳐 있는 코딩 트리 블록들(CTB들)의 예를 도시한다.
도 4c는 K < M, L < N일 때 픽처 경계들에 걸쳐 있는 코딩 트리 블록들(CTB들)의 예를 도시한다.
도 5는 인코더 블록 다이어그램의 예를 도시한다.
도 6은 병렬로 디블로킹될 수 있는, 8×8 그리드 상의 픽처 샘플들과 수평 및 수직 블록 경계들, 및 8×8 샘플들의 비중첩 블록들의 예시이다.
도 7은 필터 온/오프 결정 및 강한/약한 필터 선택에 관여된 픽셀들의 예들을 도시한다.
도 8은 4 개의 1-D 방향성 패턴들을 도시한다.
도 9는 GALF(geometric adaptive loop filtering) 필터 형상들(좌측: 5×5 다이아몬드, 중간: 7×7 다이아몬드, 우측: 9×9 다이아몬드)의 예들을 도시한다.
도 10은 5×5 다이아몬드 필터 서포트에 대한 상대 좌표들을 도시한다.
도 11은 5×5 다이아몬드 필터 서포트에 대한 상대 좌표들의 예들을 도시한다.
도 12a는 서브샘플링된 라플라시안 계산들을 위한 예시적인 배열을 도시한다.
도 12b는 서브샘플링된 라플라시안 계산들을 위한 다른 예시적인 배열을 도시한다.
도 12c는 서브샘플링된 라플라시안 계산들을 위한 또 다른 예시적인 배열을 도시한다.
도 12d는 서브샘플링된 라플라시안 계산들을 위한 또 다른 예시적인 배열을 도시한다.
도 13은 루마 성분에 대한 VTM-4.0에서의 루프 필터 라인 버퍼 요구사항의 예를 도시한다.
도 14는 크로마 성분에 대한 VTM-4.0에서의 루프 필터 라인 버퍼 요구사항의 예를 도시한다.
도 15a는 N = 4일 때 가상 경계에서의 ALF 블록 분류의 예를 도시한다.
도 15b는 N = 4일 때 가상 경계에서의 ALF 블록 분류의 다른 예를 도시한다.
도 16a는 가상 경계에서의 수정된 루마 ALF 필터링의 예를 예시한다.
도 16b는 가상 경계에서의 수정된 루마 ALF 필터링의 다른 예를 예시한다.
도 16c는 가상 경계에서의 수정된 루마 ALF 필터링의 또 다른 예를 예시한다.
도 17a는 가상 경계에서의 수정된 크로마 ALF 필터링의 예를 도시한다.
도 17b는 가상 경계에서의 수정된 크로마 ALF 필터링의 다른 예를 도시한다.
도 18a는 수평 랩 어라운드 모션 보상의 예를 도시한다.
도 18b는 수평 랩 어라운드 모션 보상의 다른 예를 도시한다.
도 19는 수정된 적응 루프 필터의 예를 예시한다.
도 20은 비디오 픽처에서의 CTU들을 프로세싱하는 예를 도시한다.
도 21은 수정된 적응 루프 필터 경계의 예를 도시한다.
도 22는 비디오 프로세싱 장치의 예의 블록 다이어그램이다.
도 23은 예시적인 비디오 프로세싱 방법에 대한 플로차트이다.
도 24는 3x2 레이아웃의 HEC의 이미지의 예를 도시한다.
도 25는 두 종류의 경계들의 샘플들에 대한 패딩된 라인들의 수의 예를 도시한다.
도 26은 픽처에서의 CTU들의 프로세싱의 예를 도시한다.
도 27은 픽처에서의 CTU들의 프로세싱의 다른 예를 도시한다.
도 28은 현재 샘플 및 액세스될 필요가 있는 샘플들의 다른 예를 도시한다.
도 29는 "이용 불가능한" 이웃 샘플들의 패딩의 다른 예를 도시한다.
도 30은 개시된 기술들이 구현될 수 있는 예시적인 비디오 프로세싱 시스템의 블록 다이어그램이다.
도 31은 본 기술에 따른 비디오 프로세싱 방법의 플로차트 표현이다.
도 32는 본 기술에 따른 다른 비디오 프로세싱 방법의 플로차트 표현이다.
도 33은 본 기술에 따른 또 다른 비디오 프로세싱 방법의 플로차트 표현이다.
섹션 표제들은 이해의 편의를 용이하게 하기 위해 본 문서에서 사용되며 한 섹션에 개시된 실시예들을 단지 해당 섹션으로 제한하지 않는다. 게다가, 특정 실시예들이 다목적 비디오 코딩(Versatile Video Coding) 또는 다른 특정 비디오 코덱들을 참조하여 설명되지만, 개시된 기술들은 다른 비디오 코딩 기술들에도 적용 가능하다. 게다가, 일부 실시예들은 비디오 코딩 단계들을 상세히 설명하지만, 코딩을 실행취소하는 대응하는 디코딩 단계들은 디코더에 의해 구현될 것임이 이해될 것이다. 게다가, 비디오 프로세싱이라는 용어는 비디오 코딩 또는 압축, 비디오 디코딩 또는 압축 해제, 및 비디오 픽셀들이 하나의 압축된 포맷으로부터 다른 압축된 포맷으로 또는 상이한 압축된 비트레이트로 표현되는 비디오 트랜스코딩을 포괄한다.
1. 간략한 요약
이 문서는 비디오 코딩 기술들에 관한 것이다. 구체적으로, 이는 특히 비선형 적응 루프 필터에 대한 픽처/슬라이스/타일/브릭 경계 및 가상 경계 코딩에 관련되어 있다. 이는 HEVC와 같은 기존의 비디오 코딩 표준, 또는 완성될 표준(다목적 비디오 코딩)에 적용될 수 있다. 이는 또한 미래의 비디오 코딩 표준들 또는 비디오 코덱에 적용 가능할 수 있다.
2. 초기 논의
비디오 코딩 표준들은 주로 잘 알려진 ITU-T 및 ISO/IEC 표준들의 개발을 통해 발전해 왔다. ITU-T는 H.261 및 H.263 표준들을 만들었고, ISO/IEC는 MPEG-1 및 MPEG-4 Visual 표준들을 만들었으며, 두 조직은 공동으로 H.262/MPEG-2 Video 및 H.264/MPEG-4 AVC(Advanced Video Coding) 및 H.265/HEVC 표준들을 만들었다. H.262 이후로, 비디오 코딩 표준들은 시간 예측과 변환 코딩이 활용되는 하이브리드 비디오 코딩 구조를 기반으로 한다. HEVC 이후의 미래 비디오 코딩 기술들을 탐구하기 위해, 2015년에 VCEG와 MPEG에 의해 공동으로 JVET(Joint Video Exploration Team)가 설립되었다. 그 이후로, 많은 새로운 방법들이 JVET에 의해 채택되었고 JEM(Joint Exploration Model)이라는 참조 소프트웨어에 추가되었다. 2018년 4월에, HEVC에 비해 50% 비트레이트 감소를 목표로 하는 VVC 표준에 대해 연구하기 위해 VCEG(Q6/16)와 ISO/IEC JTC1 SC29/WG11(MPEG) 간의 협력 하에 JVET가 만들어졌다.
2.1 컬러 공간 및 크로마 서브샘플링
컬러 모델(또는 컬러 시스템)이라고도 하는, 컬러 공간은 컬러들의 범위를 숫자들의 튜플들로서, 전형적으로 3 개 또는 4 개의 값 또는 컬러 성분(예를 들면, RGB)으로서 간단히 설명하는 추상 수학적 모델이다. 기본적으로 말하면, 컬러 공간은 좌표계와 서브 공간의 정교화이다.
비디오 압축의 경우, 가장 자주 사용되는 컬러 공간들은 YCbCr 및 RGB이다.
YCBCR 또는 Y'CBCR이라고도 기술되는, YCbCr, Y'CbCr 또는 Y Pb/Cb Pr/Cr은 비디오 및 디지털 사진 시스템들에서 컬러 이미지 파이프라인의 일부로서 사용되는 컬러 공간들의 계열이다. Y'은 루마 성분이고, CB와 CR은 청색 차이 및 적색 차이 크로마 성분들이다. Y'(프라임을 가짐)은 루미넌스인 Y와 구별되며, 감마 보정된 RGB 원색들에 기초하여 광 강도가 비선형적으로 인코딩된다는 것을 의미한다.
크로마 서브샘플링은, 루미넌스에 대해서보다 컬러 차이들에 대한 인간 시각 시스템의 더 낮은 예민성을 이용하여, 루마 정보에 대해서보다 크로마 정보에 대해 더 낮은 분해능을 구현하는 것에 의해 이미지들을 인코딩하는 관례이다.
2.1.1 컬러 포맷 4:4:4
3 개의 Y'CbCr 성분 각각은 동일한 샘플 레이트를 가지며, 따라서 크로마 서브샘플링이 없다. 이 방식은 때때로 고급 필름 스캐너들 및 영화 포스트 프로덕션에서 사용된다.
2.1.2 컬러 포맷 4:2:2
2 개의 크로마 성분은 루마의 샘플 레이트의 절반으로 샘플링된다: 수평 크로마 분해능이 반으로 준다. 이것은 시각적 차이가 거의 또는 전혀 없이 압축되지 않은 비디오 신호의 대역폭을 1/3만큼 감소시킨다.
2.1.3 컬러 포맷 4:2:0
4:2:0에서는, 수평 샘플링이 4:1:1에 비해 2배이지만, Cb 및 Cr 채널들이 이 방식에서 각각의 교호 라인에서만 샘플링되므로, 수직 분해능이 반으로 준다. 따라서 데이터 레이트는 동일하다. Cb와 Cr은 각각 수평으로 및 수직으로 둘 모두에서 2의 인자로 서브샘플링된다. 상이한 수평 및 수직 위치(siting)를 갖는, 4:2:0 방식들의 세 가지 변형이 있다.
MPEG-2에서, Cb와 Cr은 수평으로 함께 배치된다(cosited). Cb 및 Cr은 수직 방향으로 픽셀들 사이에 배치된다(중간에 배치됨).
JPEG/JFIF, H.261 및 MPEG-1에서, Cb와 Cr은 중간에, 즉 교호 루마 샘플들 사이의 중간에 배치된다.
4:2:0 DV에서, Cb와 Cr은 수평 방향으로 함께 배치된다. 수직 방향에서, 이들은 교호 라인들에 함께 배치된다.
2.2 다양한 비디오 유닛들
픽처는 하나 이상의 타일 행과 하나 이상의 타일 열로 나누어진다. 타일은 픽처의 직사각형 영역을 커버하는 CTU들의 시퀀스이다.
타일은 하나 이상의 브릭으로 나누어지며, 브릭들 각각은 타일 내의 다수의 CTU 행들로 구성된다.
다수의 브릭들로 분할되지 않는 타일은 브릭이라고도 지칭된다. 그렇지만, 타일의 진정한 서브세트인 브릭은 타일이라고 지칭되지 않는다.
슬라이스는 픽처의 다수의 타일들 또는 타일의 다수의 브릭들을 포함한다.
두 가지 슬라이스 모드, 즉 래스터 스캔 슬라이스 모드와 직사각형 슬라이스 모드가 지원된다. 래스터 스캔 슬라이스 모드에서, 슬라이스는 픽처의 타일 래스터 스캔에서 타일들의 시퀀스를 포함한다. 직사각형 슬라이스 모드에서, 슬라이스는 픽처의 직사각형 영역을 집합적으로 형성하는 픽처의 다수의 브릭들을 포함한다. 직사각형 슬라이스 내의 브릭들은 슬라이스의 브릭 래스터 스캔의 순서로 있다.
도 1은 픽처의 래스터 스캔 슬라이스 분할의 예를 도시하며, 여기서 픽처는 12 개의 타일과 3 개의 래스터 스캔 슬라이스로 나누어진다.
도 2는 픽처의 직사각형 슬라이스 분할의 예를 도시하며, 여기서 픽처는 24 개의 타일(6 개의 타일 열과 4 개의 타일 행)과 9 개의 직사각형 슬라이스로 나누어진다.
도 3은 타일들, 브릭들 및 직사각형 슬라이스들로 분할되는 픽처의 예를 도시하며, 여기서 픽처는 4 개의 타일(2 개의 타일 열과 2 개의 타일 행), 11 개의 브릭(좌측 상단 타일은 1 개의 브릭을 포함하고, 우측 상단 타일은 5 개의 브릭을 포함하며, 좌측 하단 타일은 2 개의 브릭을 포함하고, 우측 하단 타일은 3 개의 브릭을 포함함), 및 4 개의 직사각형 슬라이스로 분할된다.
2.2.1 CTU/CTB 크기들
VVC에서, 신택스 요소 log2 _ ctu _size_ minus2에 의해 SPS에서 시그널링되는 CTU 크기는 4x4만큼 작을 수 있다.
7.3.2.3 시퀀스 파라미터 세트 RBSP 신택스
Figure pct00001
Figure pct00002
Figure pct00003
log2_ctu_size_minus2 + 2는 각각의 CTU의 루마 코딩 트리 블록 크기를 지정한다.
log2_min_luma_coding_block_size_minus2 + 2는 최소 루마 코딩 블록 크기를 지정한다.
변수들 CtbLog2SizeY, CtbSizeY, MinCbLog2SizeY, MinCbSizeY, MinTbLog2SizeY, MaxTbLog2SizeY, MinTbSizeY, MaxTbSizeY, PicWidthInCtbsY, PicHeightInCtbsY, PicSizeInCtbsY, PicWidthInMinCbsY, PicHeightInMinCbsY, PicSizeInMinCbsY, PicSizeInSamplesY, PicWidthInSamplesC 및 PicHeightInSamplesC는 다음과 같이 도출된다:
Figure pct00004
2.2.2 픽처에서의 CTU들
M x N으로 표시되는 CTB/LCU 크기(HEVC/VVC에 정의된 바와 같이, 전형적으로 M은 N과 동일함)를 가정하고, 픽처(또는 타일, 슬라이스 또는 다른 종류들의 유형들, 픽처 경계는 예로서 취해짐) 경계에 위치하는 CTB의 경우, K x L 개의 샘플들이 픽처 경계 내에 있으며 여기서 K < M이거나 L < N이다. 도 4a 내지 도 4c에 묘사된 바와 같은 해당 CTB들에 대해, CTB 크기는 여전히 MxN과 동일하지만, CTB의 하단 경계/우측 경계는 픽처 외부에 있다.
도 4a는 하단 픽처 경계에 걸쳐 있는 CTB들을 도시한다. 도 4b는 우측 픽처 경계에 걸쳐 있는 CTB들을 도시한다. 도 4c는 우측 하단 픽처 경계에 걸쳐 있는 CTB들을 도시한다.
도 4a 내지 도 4c는 픽처 경계들에 걸쳐 있는 CTB들의 예들을 도시하며, (a) K=M, L<N; (b) K<M, L=N; (c) K<M, L<N
2.3 전형적인 비디오 코덱의 코딩 흐름
도 5는 3 개의 인루프 필터링 블록, 즉 디블로킹 필터(DF), 샘플 적응 오프셋(SAO) 및 ALF를 포함하는 VVC의 인코더 블록 다이어그램의 예를 도시한다. 미리 정의된 필터들을 사용하는 DF와 달리, SAO 및 ALF는 오프셋을 가산하는 것 및 유한 임펄스 응답(FIR) 필터를 적용하는 것에 의해 원래 샘플들과 재구성된 샘플들 간의 평균 제곱 오차들을 감소시키기 위해 현재 픽처의 원래 샘플들을 활용하며, 코딩된 부가 정보는 오프셋들 및 필터 계수들을 시그널링한다. ALF는 각각의 픽처의 마지막 프로세싱 스테이지에 위치하며, 이전 스테이지들에서 생성되는 아티팩트들을 잡아내어 수정하려고 하는 툴이라고 볼 수 있다.
2.4 디블로킹 필터(DB)
DB의 입력은 인루프 필터들 이전의 재구성된 샘플들이다.
픽처에서의 수직 에지들이 먼저 필터링된다. 이어서 픽처에서의 수평 에지들이 수직 에지 필터링 프로세스에 의해 수정된 샘플들을 입력으로 하여 필터링된다. 각각의 CTU의 CTB들에서의 수직 및 수평 에지들은 코딩 유닛 기반으로 별도로 프로세싱된다. 코딩 유닛에서의 코딩 블록들의 수직 에지들은 그들의 기하학적 순서에서 코딩 블록들의 좌측에 있는 에지에서 시작하여 에지들을 통해 코딩 블록들의 우측을 향해 진행하면서 필터링된다. 코딩 유닛에서의 코딩 블록들의 수평 에지들은 그들의 기하학적 순서에서 코딩 블록들의 상단에 있는 에지에서 시작하여 에지들을 통해 코딩 블록들의 하단을 향해 진행하면서 필터링된다.
도 6은 병렬로 디블로킹될 수 있는, 8×8 그리드 상의 픽처 샘플들과 수평 및 수직 블록 경계들, 및 8×8 샘플들의 비중첩 블록들의 예시이다.
2.4.1. 경계 결정
필터링이 8x8 블록 경계들에 적용된다. 추가적으로, 이는 (예를 들면, 아핀 모션 예측, ATMVP의 사용으로 인해) 변환 블록 경계 또는 코딩 서브블록 경계여야 한다. 그러한 경계들이 아닌 것들에 대해, 필터가 디스에이블된다.
2.4.1 경계 강도 계산
변환 블록 경계/코딩 서브블록 경계에 대해, 이는, 8x8 그리드 내에 위치하는 경우, 필터링될 수 있으며, 이 에지에 대한 bS[ xDi ][ yDj ](여기서 [ xDi ][ yDj ]는 좌표를 나타냄)의 설정은, 제각기, 표 1 및 표 2에 정의되어 있다.
Figure pct00005
Figure pct00006
2.4.3 루마 성분에 대한 디블로킹 결정
디블로킹 결정 프로세스는 이 하위 섹션에 설명되어 있다.
도 7은 필터 온/오프 결정 및 강한/약한 필터 선택에 관여된 픽셀들의 예들을 도시한다.
Condition1, Condition2 및 Condition3 모두가 TRUE인 경우에만 보다 넓고 보다 강한 루마 필터들이 사용되는 필터들이다.
조건 1은 "큰 블록 조건"이다. 이 조건은 P 측과 Q 측에 있는 샘플들이, 제각기, 변수 bSidePisLargeBlk 및 bSideQisLargeBlk에 의해 표현되는, 큰 블록들에 속하는지 여부를 검출한다. bSidePisLargeBlk 및 bSideQisLargeBlk는 다음과 같이 정의된다.
bSidePisLargeBlk = ((에지 유형이 수직이고 p0이 폭 >= 32를 갖는 CU에 속함) | | (에지 유형이 수평이고 p0이 높이 >= 32를 갖는 CU에 속함))? TRUE: FALSE
bSideQisLargeBlk = ((에지 유형이 수직이고 q0이 폭 >= 32를 갖는 CU에 속함) | | (에지 유형이 수평이고 q0이 높이 >= 32를 갖는 CU에 속함))? TRUE: FALSE
bSidePisLargeBlk 및 bSideQisLargeBlk에 기초하여, 조건 1은 다음과 같이 정의된다.
Condition1 = (bSidePisLargeBlk || bSidePisLargeBlk) ? TRUE: FALSE
다음으로, Condition 1이 참인 경우, 조건 2가 더 검사될 것이다. 먼저, 다음 변수들이 도출된다:
- dp0, dp3, dq0, dq3이 HEVC에서와 같이 먼저 도출된다
- if(p 측이 32보다 크거나 같음)
dp0 = ( dp0 + Abs( p50 - 2 * p40 + p30 ) + 1 ) >> 1
dp3 = ( dp3 + Abs( p53 - 2 * p43 + p33 ) + 1 ) >> 1
- if(q 측이 32보다 크거나 같음)
dq0 = ( dq0 + Abs( q50 - 2 * q40 + q30 ) + 1 ) >> 1
dq3 = ( dq3 + Abs( q53 - 2 * q43 + q33 ) + 1 ) >> 1
Condition2 = (d < β) ? TRUE: FALSE
여기서 d= dp0 + dq0 + dp3 + dq3이다.
Condition1 및 Condition2가 유효한 경우, 블록들 중 임의의 것이 서브블록들을 사용하는지 여부가 더 검사된다:
Figure pct00007
마지막으로, Condition 1 및 Condition 2 둘 모두가 유효한 경우, 제안된 디블로킹 방법은 다음과 같이 정의되는 조건 3(큰 블록 강한 필터 조건)을 검사할 것이다.
Condition3 StrongFilterCondition에서, 다음 변수들이 도출된다:
dpq는 HEVC에서와 같이 도출된다.
sp3 = Abs( p3 - p0 ), HEVC에서와 같이 도출됨
if(p 측이 32보다 크거나 같음)
if(Sp==5)
sp3 = ( sp3 + Abs( p5 - p3 ) + 1) >> 1
else
sp3 = ( sp3 + Abs( p7 - p3 ) + 1) >> 1
sq3 = Abs( q0 - q3 ), HEVC에서와 같이 도출됨
if(q 측이 32보다 크거나 같음)
If(Sq==5)
sq3 = ( sq3 + Abs( q5 - q3 ) + 1) >> 1
else
sq3 = ( sq3 + Abs( q7 - q3 ) + 1) >> 1
HEVC에서와 같이, StrongFilterCondition = (dpq가 ( β  >>  2 )보다 작고, sp3 + sq3이 ( 3*β  >>  5 )보다 작으며, Abs( p0 - q0 )이 ( 5 * tC + 1 )  >>  1보다 작음) ? TRUE : FALSE.
2.4.4 루마에 대한 보다 강한 디블로킹 필터(보다 큰 블록들을 위해 설계됨)
경계의 어느 한쪽 측면에 있는 샘플들이 큰 블록에 속할 때 이중선형 필터가 사용된다. 큰 블록에 속하는 샘플은 수직 에지의 경우 폭 >= 32일 때와 같이 정의되고, 수평 에지의 경우 높이 >= 32일 때와 같이 정의된다.
이중선형 필터는 아래에서 열거된다.
블록 경계 샘플들 pi(단, i=0 내지 Sp-1) 및 qi(단, j=0 내지 Sq-1)(pi 및 qi는 위에서 설명된 HEVC 디블로킹에서 수직 에지를 필터링하기 위한 한 행 내에서의 i 번째 샘플 또는 수평 에지를 필터링하기 위한 한 열 내에서의 i 번째 샘플임)는 이어서 다음과 같이 선형 보간으로 대체되고:
Figure pct00008
,
Figure pct00009
로 클리핑됨
Figure pct00010
,
Figure pct00011
로 클리핑됨
여기서 tcPDi 및 tcPDj 항은 섹션 2.4.7에서 설명된 위치 의존적 클리핑이고, gj, fi, Middles,t, Ps 및 Qs는 아래에서 주어진다:
2.4.5 크로마에 대한 디블로킹 제어
크로마 강한 필터들은 블록 경계의 양쪽 측면들에서 사용된다. 여기서, 크로마 필터는 크로마 에지의 양쪽 측면들이 8(크로마 위치) 이상이고, 세 가지 조건에 대한 다음 결정이 충족될 때 선택되고: 첫 번째 조건은 경계 강도는 물론 큰 블록의 결정을 위한 것이다. 크로마 샘플 도메인에서 블록 에지와 직교하는 블록 폭 또는 높이가 8 이상일 때 제안된 필터가 적용될 수 있다. 두 번째 조건 및 세 번째 조건은 HEVC 루마 디블로킹 결정에 대해서와 기본적으로 동일하며, 제각기, 온/오프 결정 및 강한 필터 결정이다.
첫 번째 결정에서, 경계 강도(bS)는 크로마 필터링을 위해 수정되고 조건들이 순차적으로 검사된다. 조건이 충족되는 경우, 보다 낮은 우선순위들을 갖는 나머지 조건들은 스킵된다.
bS가 2와 동일할 때, 또는 큰 블록 경계가 검출되는 경우 bS가 1과 동일할 때 크로마 디블로킹이 수행된다.
두 번째 조건 및 세 번째 조건은 다음과 같이 HEVC 루마 강한 필터 결정과 기본적으로 동일하다.
두 번째 조건에서:
d는 이어서 HEVC 루마 디블로킹에서와 같이 도출된다.
두 번째 조건은 d가 β보다 작을 때 TRUE일 것이다.
세 번째 조건에서, StrongFilterCondition은 다음과 같이 도출된다:
dpq는 HEVC에서와 같이 도출된다.
sp3 = Abs( p3 - p0 ), HEVC에서와 같이 도출됨
sq3 = Abs( q0 - q3 ), HEVC에서와 같이 도출됨
HEVC 설계에서와 같이, StrongFilterCondition = (dpq가 ( β >> 2 )보다 작고, sp3 + sq3이 ( β >> 3 )보다 작으며, Abs( p0 - q0 )이 ( 5 * tC + 1 ) >> 1보다 작음)
2.4.6 크로마를 위한 강한 디블로킹 필터
크로마에 대한 이하의 강한 디블로킹 필터가 정의된다:
p2'= (3*p3+2*p2+p1+p0+q0+4) >> 3
p1'= (2*p3+p2+2*p1+p0+q0+q1+4) >> 3
p0'= (p3+p2+p1+2*p0+q0+q1+q2+4) >> 3
제안된 크로마 필터는 4x4 크로마 샘플 그리드에 대해 디블로킹을 수행한다.
2.4.7 위치 의존적 클리핑
위치 의존적 클리핑 tcPD는 경계에서 7 개, 5 개 및 3 개의 샘플을 수정하는 강하고 긴 필터들을 수반하는 루마 필터링 프로세스의 출력 샘플들에 적용된다. 양자화 오차 분포를 가정할 때, 보다 높은 양자화 잡음을 가질 것으로 예상되고, 따라서 재구성된 샘플 값과 실제 샘플 값 간의 보다 높은 편차를 가질 것으로 예상되는 샘플들에 대해 클리핑 값을 증가시키는 것이 제안된다.
섹션 2.4.2에서의 의사결정 프로세스의 결과에 따라, 비대칭 필터로 필터링되는 각각의 P 또는 Q 경계에 대해, 위치 의존적 임계치 테이블이 디코더에 부가 정보로서 제공되는 2 개의 테이블(예를 들면, 아래에 표로 작성된 Tc7 및 Tc3)로부터 선택된다.
Tc7 = { 6, 5, 4, 3, 2, 1, 1}; Tc3 = { 6, 4, 2 };
tcPD = (Sp == 3) ? Tc3 : Tc7;
tcQD = (Sq == 3) ? Tc3 : Tc7;
짧은 대칭 필터로 필터링되는 P 또는 Q 경계들에 대해, 보다 낮은 크기의 위치 의존적 임계치가 적용된다:
Tc3 = { 3, 2, 1 };
임계치를 정의한 후에, 필터링된 p'i 및 q'i 샘플 값들이 tcP 및 tcQ 클리핑 값들에 따라 클리핑되며:
p'' i = Clip3(p' i + tcP i , p' i - tcP i , p' i );
q'' j = Clip3(q' j + tcQ j , q' j - tcQ j , q' j );
여기서 p'i 및 q'i는 필터링된 샘플 값들이고, p"i 및 q"j는 클리핑 이후의 출력 샘플 값이며, tcPi 및 tcPi는 VVC tc 파라미터 및 tcPD 및 tcQD로부터 도출되는 클리핑 임계치들이다. 함수 Clip3은 VVC에 지정된 바와 같이 클리핑 함수이다.
2.4.8 서브블록 디블로킹 조정
긴 필터들 및 서브블록 디블로킹 둘 모두를 사용하여 병렬 친화적인 디블로킹을 가능하게 하기 위해, 긴 필터들에 대한 루마 제어에 나와 있는 바와 같이 서브블록 디블로킹(AFFINE 또는 ATMVP 또는 DMVR)을 사용하는 측면에서 최대 5 개의 샘플을 수정하도록 긴 필터들이 제한된다. 추가적으로, CU에 가까운 8x8 그리드 상의 서브블록 경계들 또는 암시적 TU 경계가 각각의 측면에서 최대 2 개의 샘플을 수정하게 제한되도록 서브블록 디블로킹이 조정된다.
이하는 CU 경계와 정렬되지 않은 서브블록 경계들에 적용된다.
Figure pct00012
Figure pct00013
0과 동일한 에지가 CU 경계에 대응하는 경우, 2와 동일하거나 orthogonalLength-2와 동일한 에지는 CU 경계 등으로부터 8 개 샘플 떨어져 있는 서브블록 경계에 대응한다. 여기서 TU의 암시적 분할이 사용되는 경우 암시적 TU는 참이다.
2.5 SAO
SAO의 입력은 DB 이후의 재구성된 샘플들이다. SAO의 개념은 먼저 선택된 분류기로 영역 샘플들을 다수의 카테고리들로 분류하는 것, 각각의 카테고리에 대한 오프셋을 획득하는 것, 및 이어서 카테고리의 각각의 샘플에 오프셋을 가산하는 것에 의해 영역의 평균 샘플 왜곡을 감소시키는 것이며, 여기서 분류기 인덱스 및 영역의 오프셋들은 비트스트림에 코딩된다. HEVC 및 VVC에서, 영역(SAO 파라미터 시그널링을 위한 유닛)은 CTU이도록 정의된다.
낮은 복잡도의 요구사항들을 충족시킬 수 있는 두 가지 SAO 유형이 HEVC에서 채택된다. 이러한 두 가지 유형은 에지 오프셋(EO) 및 밴드 오프셋(BO)이며, 이에 대해서는 아래에서 더 상세히 논의된다. SAO 유형의 인덱스가 코딩된다(이는 [0, 2]의 범위에 있음). EO의 경우, 샘플 분류는 1-D 방향 패턴들, 즉 수평, 수직, 135° 대각선 및 45° 대각선에 따라 현재 샘플들과 이웃 샘플들 간의 비교에 기초한다.
도 8은 EO 샘플 분류를 위한 4 개의 1-D 방향성 패턴, 즉 수평(EO 클래스 = 0), 수직(EO 클래스 = 1), 135° 대각선(EO 클래스 = 2), 및 45° 대각선(EO 클래스 = 3)을 도시한다.
주어진 EO 클래스에 대해, CTB 내부의 각각의 샘플은 5 가지 카테고리 중 하나로 분류된다. "c"로 라벨링된 현재 샘플 값은 선택된 1-D 패턴을 따라 그의 2 개의 이웃과 비교된다. 각각의 샘플에 대한 분류 규칙들은 표 I에 요약되어 있다. 카테고리 1 및 카테고리 4는, 제각기, 선택된 1-D 패턴을 따라 국소적 밸리(local valley) 및 국소적 피크(local peak)와 연관된다. 카테고리 2와 카테고리 3은, 제각기, 선택된 1-D 패턴을 따라 오목 코너 및 볼록 코너와 연관된다. 현재 샘플이 EO 카테고리 1 내지 EO 카테고리 4에 속하지 않는 경우, 이는 카테고리 0이며 SAO가 적용되지 않는다.
Figure pct00014
2.6 기하 변환 기반 적응 루프 필터
DB의 입력은 DB 및 SAO 이후의 재구성된 샘플들이다. 샘플 분류 및 필터링 프로세스는 DB 및 SAO 이후의 재구성된 샘플들에 기초한다.
일부 실시예들에서, 블록 기반 필터 적응을 갖는 기하 변환 기반 적응 루프 필터(GALF)가 적용된다. 루마 성분의 경우, 국소적 구배들의 방향 및 활성도(activity)에 기초하여, 각각의 2x2 블록에 대해 25 개의 필터 중 하나가 선택된다.
2.6.1 필터 형상
일부 실시예들에서, 루마 성분에 대해 최대 3 개의 다이아몬드 필터 형상(도 9에 도시됨)이 선택될 수 있다. 루마 성분에 사용되는 필터 형상을 나타내기 위해 픽처 레벨에서 인덱스가 시그널링된다. 각각의 사각형은 샘플을 나타내며, Ci(i는 0 내지 6(좌측), 0 내지 12(가운데), 0 내지 20(우측))는 샘플에 적용될 계수를 나타낸다. 픽처 내의 크로마 성분들에 대해, 항상 5×5 다이아몬드 형상이 사용된다.
2.6.1.1 블록 분류
각각의 2x2 블록은 25 개의 클래스 중 하나로 분류된다. 분류 인덱스 C는 다음과 같이 그의 방향성 D 및 활성도
Figure pct00015
의 양자화된 값에 기초하여 도출된다:
Figure pct00016
D 및
Figure pct00017
를 계산하기 위해, 수평 방향, 수직 방향 및 2 개의 대각선 방향의 구배들이 먼저 1-D 라플라시안을 사용하여 계산된다:
Figure pct00018
인덱스들 i 및 j는 2x2 블록에서의 좌측 상부 샘플의 좌표를 지칭하고, R(i,j)는 좌표 (i,j)에 있는 재구성된 샘플을 나타낸다.
이어서, 수평 방향 및 수직 방향의 구배들의 D 최댓값 및 최솟값이 다음과 같이 설정되고:
Figure pct00019
2 개의 대각선 방향의 구배의 최댓값과 최솟값은 다음과 같이 설정된다:
Figure pct00020
방향성 D의 값을 도출하기 위해, 이러한 값들은 서로 비교되며 2 개의 임계치 t1 및 t2와 비교된다:
단계 1.
Figure pct00021
Figure pct00022
둘 모두가 참인 경우, D는 0으로 설정된다.
단계 2.
Figure pct00023
인 경우, 단계 3으로부터 계속되고; 그렇지 않은 경우, 단계 4로부터 계속된다.
단계 3.
Figure pct00024
인 경우, D는 2로 설정되고; 그렇지 않은 경우, D는 1로 설정된다.
단계 4.
Figure pct00025
인 경우, D는 4로 설정되고; 그렇지 않은 경우 D는 3으로 설정된다.
활성도 값 A는 다음과 같이 계산된다:
Figure pct00026
A는 0 내지 4(경계 포함)의 범위로 더 양자화되고, 양자화된 값은
Figure pct00027
로서 표시된다.
픽처 내의 양쪽 크로마 성분들에 대해, 분류 방법이 적용되지 않으며, 예를 들면, 각각의 크로마 성분에 대해 단일 ALF 계수 세트가 적용된다.
2.6.1.2 필터 계수들의 기하학적 변환들
도 10은 5×5 다이아몬드 필터 서포트에 대한 상대 좌표, 즉, 좌측: 대각선 중심: 수직 뒤집기, 우측: 회전을 도시한다.
각각의 2×2 블록을 필터링하기 전에, 회전 또는 대각선 및 수직 뒤집기와 같은 기하학적 변환들이 해당 블록에 대해 계산된 구배 값들에 따라, 좌표 (k, l)과 연관되는, 필터 계수들 f(k,l)에 적용된다. 이는 필터 서포트 영역 내의 샘플들에 이러한 변환들을 적용하는 것과 동등하다. 착안점은 ALF가 적용되는 상이한 블록들을 그들의 방향성을 정렬하는 것에 의해 보다 유사하게 만드는 것이다.
대각선, 수직 뒤집기 및 회전을 포함한 세 가지 기하학적 변환이 도입되며:
대각선:
Figure pct00028
수직 뒤집기:
Figure pct00029
회전:
Figure pct00030
여기서 K는 필터의 크기이고, 위치 (0, 0)이 좌측 상부 코너에 있고 위치 (K-1, K-1)이 우측 하부 코너에 있도록, 0 ≤ k, l ≤ K-1은 계수 좌표이다. 변환은 해당 블록에 대해 계산된 구배 값들에 따라 필터 계수들 f(k, l)에 적용된다. 변환과 4 개의 방향의 4 개의 구배 사이의 관계는 표 4에 요약되어 있다. 도 9는 5x5 다이아몬드에 기초한 각각의 위치에 대한 변환된 계수들을 도시한다.
Figure pct00031
2.6.1.3 필터 파라미터들 시그널링
일부 실시예들에서, GALF 필터 파라미터들은 제1 CTU에 대해, 예를 들면, 슬라이스 헤더 이후 및 제1 CTU의 SAO 파라미터들 이전에 시그널링된다. 최대 25 개의 루마 필터 계수 세트가 시그널링될 수 있다. 비트 오버헤드를 감소시키기 위해, 상이한 분류의 필터 계수들은 병합될 수 있다. 또한, 참조 픽처들의 GALF 계수들은 저장되고 현재 픽처의 GALF 계수들로서 재사용되도록 허용된다. 현재 픽처는 참조 픽처들에 대해 저장된 GALF 계수들을 사용하고 GALF 계수들 시그널링을 바이패스하도록 선택할 수 있다. 이 경우에, 참조 픽처들 중 하나에 대한 인덱스만이 시그널링되고, 표시된 참조 픽처의 저장된 GALF 계수들이 현재 픽처를 위해 상속된다.
GALF 시간 예측을 지원하기 위해, GALF 필터 세트들의 후보 리스트가 유지된다. 새로운 시퀀스를 디코딩하기 시작할 때, 후보 리스트는 비어 있다. 하나의 픽처를 디코딩한 후에, 대응하는 필터 세트가 후보 리스트에 추가될 수 있다. 후보 리스트의 크기가 최대 허용 값(예를 들면, 6)에 일단 도달하면, 새로운 필터 세트가 디코딩 순서에서 가장 오래된 세트를 덮어쓰며, 즉, 후보 리스트를 업데이트하기 위해 FIFO(first-in-first-out) 규칙이 적용된다. 중복을 피하기 위해, 대응하는 픽처가 GALF 시간 예측을 사용하지 않을 때에만 세트가 리스트에 추가될 수 있다. 시간 확장성을 지원하기 위해, 필터 세트들의 다수의 후보 리스트들이 있으며, 각각의 후보 리스트는 시간 계층과 연관되어 있다. 보다 구체적으로, 시간 계층 인덱스(TempIdx)에 의해 할당되는 각각의 어레이는 보다 낮은 TempIdx와 동일한 이전에 디코딩된 픽처들의 필터 세트들을 구성할 수 있다. 예를 들어, 제k 어레이는 k와 동일한 TempIdx와 연관되도록 할당되며, 이는 k보다 작거나 같은 TempIdx를 갖는 픽처들로부터의 필터 세트들만을 포함한다. 특정 픽처를 코딩한 후에, 픽처와 연관된 필터 세트들은 동일하거나 더 높은 TempIdx와 연관된 해당 어레이들을 업데이트하는 데 사용될 것이다.
GALF 계수들의 시간 예측은 시그널링 오버헤드를 최소화하기 위해 인터 코딩된 프레임들에 사용된다. 인트라 프레임들의 경우, 시간 예측이 이용 가능하지 않으며, 16 개의 고정된 필터들의 세트가 각각의 클래스에 할당된다. 고정된 필터의 사용을 나타내기 위해, 각각의 클래스에 대한 플래그가 시그널링되고, 필요한 경우, 선택된 고정된 필터의 인덱스가 시그널링된다. 주어진 클래스에 대해 고정된 필터가 선택될 때에도, 이 클래스에 대해 적응 필터 f(k,l)의 계수들이 여전히 송신될 수 있으며 이 경우에 재구성된 이미지에 적용될 필터의 계수들은 양쪽 계수 세트들의 합이다.
루마 성분의 필터링 프로세스는 CU 레벨에서 제어될 수 있다. GALF가 CU의 루마 성분에 적용되는지 여부를 나타내기 위해 플래그가 시그널링된다. 크로마 성분의 경우, GALF가 적용되는지 여부는 픽처 레벨에서만 표시된다.
2.6.1.4 필터링 프로세스
디코더 측에서, 블록에 대해 GALF가 인에이블될 때, 블록 내의 각각의 샘플 R(i,j)는 필터링되어, 아래에 나타낸 바와 같이 샘플 값 R'(i,j)를 결과하며, 여기서 L은 필터 길이를 나타내고, fm,n은 필터 계수를 나타내며, f(k,l)은 디코딩된 필터 계수들을 나타낸다.
Figure pct00032
도 11은 현재 샘플의 좌표 (i, j)가 (0, 0)이라고 가정할 때 5x5 다이아몬드 필터 서포트에 사용되는 상대 좌표들의 예를 도시한다. 동일한 컬러로 채워진 상이한 좌표들에 있는 샘플들은 동일한 필터 계수들과 곱해진다.
2.7 기하 변환 기반 적응 루프 필터(GALF)
2.7.1 예시적인 GALF
일부 실시예들에서, 적응 루프 필터의 필터링 프로세스는 다음과 같이 수행되며:
Figure pct00033
여기서 샘플들 I(x+i,y+j)는 입력 샘플들이고, O(x,y)는 필터링된 출력 샘플(예를 들면, 필터 결과)이며, w(i,j)는 필터 계수들을 나타낸다. 실제로, VTM4.0에서, 이는 고정 소수점 정밀도 계산들을 위해 정수 산술을 사용하여 구현되며:
Figure pct00034
여기서 L은 필터 길이를 나타내고, 여기서 w(i,j)는 고정 소수점 정밀도의 필터 계수들이다.
VVC에서의 GALF의 현재 설계는 다음과 같은 주요 변경들을 갖는다:
(1) 적응 필터 형상이 제거된다. 루마 성분에 대해 7x7 필터 형상만이 허용되고 크로마 성분에 대해 5x5 필터 형상이 허용된다.
(2) ALF 파라미터들의 시그널링이 슬라이스/픽처 레벨로부터 CTU 레벨로 이동된다.
(3) 클래스 인덱스의 계산은 2x2 대신에 4x4 레벨로 수행된다. 추가적으로, 일부 실시예들에서, ALF 분류를 위한 서브샘플링된 라플라시안 계산 방법이 활용된다. 보다 구체적으로, 하나의 블록 내의 각각의 샘플에 대해 수평/수직/45 대각선/135도 구배들을 계산할 필요가 없다. 그 대신에, 1:2 서브샘플링이 활용된다.
도 12a 내지 도 12d는 CE2.6.2에 대한 서브샘플링된 라플라시안 계산을 도시한다. 도 12a는 수직 구배에 대한 서브샘플링된 위치들을 예시하고, 도 12a 내지 도12d는 수평 구배에 대한 서브샘플링된 위치들을 예시하며, 도 12c는 대각선 구배에 대한 서브샘플링된 위치들을 예시하고, 도 12d는 대각선 구배에 대한 서브샘플링된 위치들을 예시한다.
2.8 비선형 ALF
2.8.1 필터링 재수식화
방정식 (11)은 코딩 효율에 영향을 미치지 않고 다음 수식으로 재수식화될 수 있으며:
Figure pct00035
여기서 w(i,j)는 방정식 (11)에서와 동일한 필터 계수들이다[방정식 (13)에서는 1과 동일하지만 방정식 (11)에서는
Figure pct00036
와 동일한 w(0,0)을 제외함].
방정식 (13)의 이러한 상기 필터 공식을 사용하여, VVC는 이웃 샘플 값들 (I(x+i, y+j))이 필터링되고 있는 현재 샘플 값(I(x,y))와 너무 상이할 때 그들의 영향을 감소시키기 위해 간단한 클리핑 함수를 사용하여 ALF를 보다 효율적이도록 만들기 위해 비선형을 도입한다.
보다 구체적으로, ALF 필터는 다음과 같이 수정되며:
Figure pct00037
여기서 K(d,b) = min(b, max(-b,d))는 클리핑 함수이고, k(i,j)는 (i,j) 필터 계수에 의존하는 클리핑 파라미터들이다. 인코더는 최상의 k(i,j)를 찾기 위해 최적화를 수행한다.
일부 실시예들에서, 각각의 ALF 필터에 대해 클리핑 파라미터들 k(i,j)가 지정되며, 필터 계수당 하나의 클리핑 값이 시그널링된다. 이는 루마 필터당 최대 12 개의 클리핑 값이 비트스트림에서 시그널링될 수 있고 크로마 필터에 대해 최대 6 개의 클리핑 값이 시그널링될 수 있음을 의미한다.
시그널링 비용과 인코더 복잡도를 제한하기 위해, INTER 및 INTRA 슬라이스들에 대해 동일한 4 개의 고정된 값만이 사용된다.
국소적 차이들의 분산이 크로마에 대해서보다 루마에 대해 종종 더 높기 때문에, 루마 및 크로마 필터들에 대한 2 개의 상이한 세트가 적용된다. 클리핑이 필요하지 않은 경우 클리핑이 디스에이블될 수 있도록, 각각의 세트에서의 최대 샘플 값(여기서 10-비트 비트 깊이의 경우 1024)이 또한 도입된다.
일부 실시예들에서 사용되는 클리핑 값들의 세트들은 표 5에서 제공된다. 4 개의 값은 루마의 경우 샘플 값들의 전체 범위(10 비트로 코딩됨) 및 크로마의 경우 4 내지 1024의 범위를, 로그 도메인에서, 대략 균등하게 분할하는 것에 의해 선택되었다.
보다 정확하게는, 클리핑 값들의 루마 테이블은 다음 수식에 의해 획득되었다:
Figure pct00038
유사하게, 클리핑 값들의 크로마 테이블들은 다음 수식에 따라 획득된다:
Figure pct00039
Figure pct00040
선택된 클리핑 값들은 위의 표 5에서의 클리핑 값의 인덱스에 대응하는 골롬 인코딩 방식을 사용하여 "alf_data" 신택스 요소에 코딩된다. 이러한 인코딩 방식은 필터 인덱스에 대한 인코딩 방식과 동일하다.
2.9 가상 경계
하드웨어 및 임베디드 소프트웨어에서, 픽처 기반 프로세싱은 그의 높은 픽처 버퍼 요구사항으로 인해 실제로 용인 가능하지 않다. 온칩 픽처 버퍼들을 사용하는 것은 매우 비싸고 오프칩 픽처 버퍼들을 사용하는 것은 외부 메모리 액세스, 전력 소비 및 데이터 액세스 지연시간을 상당히 증가시킨다. 따라서, 실제 제품들에서는 DF, SAO 및 ALF가 픽처 기반 디코딩으로부터 LCU 기반 디코딩으로 변경될 것이다. LCU 기반 프로세싱이 DF, SAO 및 ALF에 사용될 때, 전체 디코딩 프로세스는 다수의 LCU들의 병렬 프로세싱을 위한 LCU 파이프라이닝 방식으로 래스터 스캔에서 LCU별로 행해질 수 있다. 이 경우에, 하나의 LCU 행을 프로세싱하는 것이 위쪽 LCU 행으로부터의 픽셀들을 필요로 하기 때문에 DF, SAO 및 ALF에 대해 라인 버퍼들이 필요하다. 오프칩 라인 버퍼들(예를 들면, DRAM)이 사용되는 경우, 외부 메모리 대역폭과 전력 소비가 증가될 것이며; 온칩 라인 버퍼들(예를 들면, SRAM)이 사용되는 경우, 칩 면적이 증가될 것이다. 따라서, 라인 버퍼들이 이미 픽처 버퍼들보다 훨씬 더 작더라도, 라인 버퍼들을 감소시키는 것이 여전히 바람직하다.
일부 실시예들에서, 도 13에 도시된 바와 같이, 필요한 라인 버퍼들의 총수는 루마 성분의 경우 11.25 라인이다. 라인 버퍼 요구사항에 대한 설명은 다음과 같다: 결정 및 필터링이 첫 번째 CTU로부터의 라인들 K, L, M, M 및 하단 CTU로부터의 라인들 O, P를 필요로 하기 때문에 CTU 에지와 중첩하는 수평 에지의 디블로킹이 수행될 수 없다. 따라서, CTU 경계와 중첩하는 수평 에지들의 디블로킹은 하위 CTU가 올 때까지 연기된다. 따라서, 라인들 K, L, M, N에 대해, 재구성된 루마 샘플들은 라인 버퍼(4 개의 라인)에 저장되어야 한다. 이어서 라인들 A 내지 J에 대해 SAO 필터링이 수행될 수 있다. 디블로킹이 라인 K에 있는 샘플들을 변경하지 않기 때문에 라인 J는 SAO 필터링될 수 있다. 라인 K의 SAO 필터링의 경우, 에지 오프셋 분류 결정은 (0.25 루마 라인인) 라인 버퍼에만 저장된다. ALF 필터링은 라인들 A 내지 F에 대해서만 수행할 수 있다. 도 13에 도시된 바와 같이, 각각의 4x4 블록에 대해 ALF 분류가 수행된다. 각각의 4x4 블록 분류는 8x8 크기의 활성도 창을 필요로 하며, 이는 차례로 구배를 결정하기 위해 1d 라플라시안을 계산하기 위해 9x9 창을 필요로 한다.
따라서, 라인들 G, H, I, J와 중첩하는 4x4 블록의 블록 분류를 위해, 가상 경계 아래의 SAO 필터링된 샘플들이 필요하다. 추가적으로, ALF 분류를 위해 라인들 D, E, F의 SAO 필터링된 샘플들이 필요하다. 더욱이, 라인 G의 ALF 필터링은 위쪽 라인들로부터의 3 개의 SAO 필터링된 라인 D, E, F를 필요로 한다. 따라서, 총 라인 버퍼 요구사항은 다음과 같다:
- 라인들 K 내지 N(수평 DF 픽셀들): 4 개의 라인
- 라인들 D 내지 J(SAO 필터링된 픽셀들): 7 개의 라인
- 라인 J와 라인 K 사이의 SAO 에지 오프셋 분류기 값들: 0.25 라인
따라서, 필요한 루마 라인들의 총수는 7 + 4 + 0.25 = 11.25이다.
유사하게, 크로마 성분의 라인 버퍼 요구사항은 도 14에 예시되어 있다. 크로마 성분에 대한 라인 버퍼 요구사항은 6.25 개의 라인인 것으로 평가된다.
SAO 및 ALF의 라인 버퍼 요구사항들을 제거하기 위해, 최신 VVC에서 가상 경계(VB)의 개념이 도입된다. 도 13에 도시된 바와 같이, VB들은 N 개의 픽셀만큼 상향 시프트된 수평 LCU 경계들이다. 각각의 LCU에 대해, SAO 및 ALF는 하위 LCU가 오기 전에 VB 위쪽의 픽셀들을 프로세싱할 수 있지만, 하위 LCU가 올 때까지 VB 아래의 픽셀들을 프로세싱할 수 없으며, 이는 DF에 의해 야기된다. 하드웨어 구현 비용을 고려하여, 제안된 VB와 수평 LCU 경계 사이의 공간은 루마의 경우 4 개의 픽셀로서 설정되고(예를 들면, 도 13에서의 N=4) 크로마의 경우 2 개의 픽셀로서 설정된다(예를 들면, 도 9에서의 N=2).
2.9.1 VB 크기 N이 4일 때 수정된 ALF 블록 분류
도 15a 및 도 15b는 가상 경계가 CTU 경계보다 4 개의 라인 위쪽에 있는 경우(N=4인 경우)에 대한 수정된 블록 분류를 묘사한다. 도 15a에 묘사된 바와 같이, 라인 G에서 시작하는 4x4 블록의 경우, 블록 분류는 라인들 E 내지 J만을 사용한다. 그렇지만, 라인 J에 속하는 샘플들에 대한 라플라시안 구배 계산은 아래쪽의 하나의 추가 라인(라인 K)을 필요로 한다. 따라서, 라인 K는 라인 J로 패딩된다.
유사하게, 도 15b에 묘사된 바와 같이, 라인 K에서 시작하는 4x4 블록의 경우, 블록 분류는 라인들 K 내지 P만을 사용한다. 그렇지만, 라인 K에 속하는 샘플들에 대한 라플라시안 구배 계산은 위쪽의 하나의 추가 라인(라인 J)을 필요로 한다. 따라서, 라인 J는 라인 K로 패딩된다.
2.9.2 가상 경계들에 걸쳐 있는 샘플들에 대한 양측 패딩(two-side padding)
도 16a 내지 도 16c에 묘사된 바와 같이, 가상 경계들에 가까운 라인들에 속하는 루마 샘플들의 필터링을 위해 필터들의 절단된 버전이 사용된다. 도 16a를 예로 들면, 도 13에 표시된 바와 같이 라인 M을 필터링할 때, 예를 들면, 7x7 다이아몬드 서포트의 중앙 샘플이 라인 M에 있을 때, 이는 VB 위쪽의 하나의 라인(굵은 라인으로 표시됨)에 액세스할 필요가 있다. 이 경우에, VB 위쪽의 샘플들은 VB 아래쪽에 있는 우측 아래 샘플로부터 복사되며, 예컨대, 실선 라인에 있는 P0 샘플은 위쪽의 파선 위치에 복사된다. 대칭적으로, 실선 라인에 있는 P3 샘플은 또한 해당 위치에 대한 샘플이 이용 가능하더라도 우측 아래 파선 위치에 복사된다. 복사된 샘플들은 루마 필터링 프로세스에서만 사용된다.
ALF 가상 경계들에 사용되는 패딩 방법은 '양측 패딩'으로 표시될 수 있으며, 여기서, 도 16a 내지 도 16c, 도 17a 및 도 17b에 묘사된 바와 같이, (i, j)에 위치하는 하나의 샘플(예를 들면, 도 16b에서 파선 라인을 갖는 P0A)이 패딩되는 경우, 샘플이 이용 가능하더라도 동일한 필터 계수를 공유하는 (m, n)에 위치하는 대응하는 샘플(예를 들면, 도 16b에서의 파선 라인을 갖는 P3B)이 또한 패딩된다. 도 16a 내지 도 16c에서, 7x7 다이아몬드 필터 서포트의 중앙은 필터링될 현재 샘플이다. 도 16a는 VB 위쪽에/아래쪽에 있는 하나의 요구된 라인이 패딩될 필요가 있다는 것을 도시한다. 도 16b는 VB 위쪽에/아래쪽에 있는 2 개의 요구된 라인이 패딩될 필요가 있다는 것을 도시한다. 도 16c는 VB 위쪽에/아래쪽에 있는 3 개의 요구된 라인이 패딩될 필요가 있다는 것을 도시한다.
유사하게, 도 17a 및 도 17b에 묘사된 바와 같이, 양측 패딩 방법이 또한 크로마 ALF 필터링에 사용된다. 도 17a 및 도 17b는 가상 경계에서의 수정된 크로마 ALF 필터링을 도시한다(5x5 다이아몬드 필터 서포트의 중앙은 필터링될 현재 샘플임). 도 17a는 VB 위쪽에/아래쪽에 있는 1 개의 요구된 라인이 패딩될 필요가 있다는 것을 도시한다. 도 17b는 VB 위쪽에/아래쪽에 있는 2 개의 요구된 라인이 패딩될 필요가 있다는 것을 도시한다.
2.9.3 비선형 ALF가 디스에이블될 때 양측 패딩의 구현을 위한 대안적인 방법
CTB에 대해 비선형 ALF가 디스에이블될 때, 예를 들면, 방정식 (14)에서의 클리핑 파라미터들 k(i,j)가 (1<< Bitdepth)와 동일할 때, 패딩 프로세스는 필터 계수들을 수정하는 것(수정된 계수 기반 ALF, MALF라고도 함)으로 대체될 수 있다. 예를 들어, 라인 L/I에 있는 샘플들을 필터링할 때, 필터 계수 c5는 c5'로 수정되고, 이 경우에, 실선 P0A로부터 파선 P0A로 그리고 실선 P3B로부터 파선 P3B(도 18a)로 루마 샘플들을 복사할 필요가 없다. 이 경우에, 필터링될 현재 샘플이 (x, y)에 위치한다고 가정하면, 양측 패딩 및 MALF는 동일한 결과들을 생성할 것이다. K(d, b) = d이고 패딩으로 인해 I(x-1,y-1)=I(x-1,y-2)이기 때문에,
Figure pct00041
그렇지만, 비선형 ALF가 인에이블될 때, MALF 및 양측 패딩은 상이한 필터링된 결과들을 생성할 수 있고, 비선형 파라미터들이, 필터 계수들 c5 및 c1에 대해서와 같이, 각각의 계수와 연관되기 때문에, 클리핑 파라미터들이 상이하다. 따라서, 패딩으로 인해 I(x-1,y-1)=I(x-1,y-2)이더라도, K(d, b) != d이기 때문에,
Figure pct00042
2.10 ALF 필터링에 대한 사양
새로 추가된 부분들은 굵은 기울임꼴 밑줄친 텍스트로 표시된다. 삭제된 부분들은 [[]]를 사용하여 표시된다.
7.3.2.4 픽처 파라미터 세트 RBSP 신택스
Figure pct00043
Figure pct00044
Figure pct00045
Figure pct00046
loop_filter_across_bricks_enabled_flag가 1과 동일한 것은 인루프 필터링 동작들이 PPS를 참조하는 픽처들에서 브릭 경계들에 걸쳐 수행될 수 있다는 것을 지정한다. loop_filter_across_bricks_enabled_flag가 0과 동일한 것은 인루프 필터링 동작들이 PPS를 참조하는 픽처들에서 브릭 경계들에 걸쳐 수행되지 않는다는 것을 지정한다. 인루프 필터링 동작들은 디블로킹 필터, 샘플 적응 오프셋 필터 및 적응 루프 필터 동작들을 포함한다. 존재하지 않을 때, loop_filter_across_bricks_enabled_flag의 값은 1과 동일한 것으로 추론된다.
loop_filter_across_slices_enabled_flag가 1과 동일한 것은 인루프 필터링 동작들이 PPS를 참조하는 픽처들에서 슬라이스 경계들에 걸쳐 수행될 수 있다는 것을 지정한다. loop_filter_across_slice_enabled_flag가 0과 동일한 것은 인루프 필터링 동작들이 PPS를 참조하는 픽처들에서 슬라이스 경계들에 걸쳐 수행되지 않는다는 것을 지정한다. 인루프 필터링 동작들은 디블로킹 필터, 샘플 적응 오프셋 필터 및 적응 루프 필터 동작들을 포함한다. 존재하지 않을 때, loop_filter_across_slices_enabled_flag의 값은 0과 동일한 것으로 추론된다.
pps _loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일한 것은 인루프 필터링 동작들이 PPS를 참조하는 픽처들에서 가상 경계들에 걸쳐 디스에이블된다는 것을 지정한다. pps_loop_filter_across_virtual_boundaries_disabled_flag가 0과 동일한 것은 인루프 필터링 동작들의 그러한 디스에이블이 PPS를 참조하는 픽처들에서 적용되지 않는다는 것을 지정한다. 인루프 필터링 동작들은 디블로킹 필터, 샘플 적응 오프셋 필터 및 적응 루프 필터 동작들을 포함한다. 존재하지 않을 때, pps_loop_filter_across_virtual_boundaries_disabled_flag의 값은 0과 동일한 것으로 추론된다.
pps _ num _ ver _virtual_boundaries는 PPS에 존재하는 pps_virtual_boundaries_pos_x[ i ] 신택스 요소들의 수를 지정한다. pps_num_ver_virtual_boundaries가 존재하지 않을 때, 이는 0과 동일한 것으로 추론된다.
8.8.5.2 루마 샘플들에 대한 코딩 트리 블록 필터링 프로세스
이 프로세스의 입력들은 다음과 같다:
- 적응 루프 필터링 프로세스 이전의 재구성된 루마 픽처 샘플 어레이 recPictureL,
- 필터링된 재구성된 루마 픽처 샘플 어레이 alfPictureL,
- 현재 픽처의 좌측 상단 샘플에 상대적인 현재 루마 코딩 트리 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCtb, yCtb ).
이 프로세스의 출력은 수정된 필터링된 재구성된 루마 픽처 샘플 어레이 alfPictureL이다.
8.8.5.3 절에서의 필터 인덱스에 대한 도출 프로세스는 위치 ( xCtb, yCtb ) 및 재구성된 루마 픽처 샘플 어레이 recPictureL을 입력들로 하고, filtIdx[ x ][ y ] 및 transposeIdx[ x ][ y ], 단 x, y = 0..CtbSizeY - 1을 출력들로 하여 호출된다.
필터링된 재구성된 루마 샘플들 alfPictureL[ x ][ y ]의 도출을 위해, 현재 루마 코딩 트리 블록 recPictureL[ x ][ y ] 내의 각각의 재구성된 루마 샘플은 다음과 같이 필터링되며, 단, x, y = 0..CtbSizeY - 1이다:
- 루마 필터 계수들의 어레이 f[ j ] 및 filtIdx[ x ][ y ]에 의해 명시되는 필터에 대응하는 루마 클리핑 값들의 어레이 c[ j ]는 다음과 같이 도출되며, 단, j = 0..11이다:
- AlfCtbFiltSetIdxY[ xCtb >> Log2CtbSize ][ yCtb >> Log2CtbSize ]가 16보다 작은 경우, 다음이 적용된다:
Figure pct00047
- 그렇지 않은 경우(AlfCtbFiltSetIdxY[ xCtb >> Log2CtbSize ][ yCtb >> Log2CtbSize ]가 16보다 크거나 같은 경우), 다음이 적용된다:
Figure pct00048
- 루마 필터 계수들 및 클리핑 값 인덱스 idx는 다음과 같이 transposeIdx[ x ][ y ]에 따라 도출된다:
- transposeIndex[ x ][ y ]가 1과 동일한 경우, 다음이 적용된다:
Figure pct00049
- 그렇지 않고, transposeIndex[ x ][ y ]가 2와 동일한 경우, 다음이 적용된다:
Figure pct00050
- 그렇지 않고, transposeIndex[ x ][ y ]가 3과 동일한 경우, 다음이 적용된다:
Figure pct00051
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00052
- 루마 샘플들의 주어진 어레이 recPicture 내의 대응하는 루마 샘플들 ( x, y ) 각각에 대한 위치들 ( hx  + i, vy  + j )(단, i, j = -3..3임)은 다음과 같이 도출된다:
- pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 xCtb + x - PpsVirtualBoundariesPosX[ n ]이 0보다 크거나 같고 3보다 작은 경우, 다음이 적용된다:
Figure pct00053
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 PpsVirtualBoundariesPosX[ n ]- xCtb - x가 0보다 크고 4보다 작은 경우, 다음이 적용된다:
Figure pct00054
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00055
- pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries - 1에 대해 yCtb + y  PpsVirtualBoundariesPosY[ n ]이 0보다 크거나 같고 3보다 작은 경우, 다음이 적용된다:
Figure pct00056
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries - 1에 대해 PpsVirtualBoundariesPosY[ n ] - yCtb - y가 0보다 크고 4보다 작은 경우, 다음이 적용된다:
Figure pct00057
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00058
- 변수 applyVirtualBoundary는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, applyVirtualBoundary는 0과 동일하게 설정된다:
- 현재 코딩 트리 블록의 하단 경계는 픽처의 하단 경계이다.
- 현재 코딩 트리 블록의 하단 경계는 브릭의 하단 경계이고 loop_filter_across_bricks_enabled_flag는 0과 동일하다.
- 현재 코딩 트리 블록의 하단 경계는 슬라이스의 하단 경계이고 loop_filter_across_slices_enabled_flag는 0과 동일하다.
- 현재 코딩 트리 블록의 하단 경계는 픽처의 하단 가상 경계들 중 하나이며 pps_loop_filter_across_virtual_boundaries_disabled_flag는 1과 동일하다.
- 그렇지 않은 경우, applyVirtualBoundary가 1과 동일하게 설정된다.
- 수평 루마 샘플 위치 y 및 applyVirtualBoundary에 따른 재구성된 샘플 오프셋들 r1, r2 및 r3은 표 8-22에 명시되어 있다.
- 변수 curr은 다음과 같이 도출된다:
Figure pct00059
- 변수 sum은 다음과 같이 도출된다:
Figure pct00060
수정된 필터링된 재구성된 루마 픽처 샘플 alfPictureL[ xCtb + x ][ yCtb + y ]는 다음과 같이 도출된다:
- pcm_loop_filter_disabled_flag 및 pcm_flag[ xCtb+ x ][ yCtb + y ] 둘 모두가 1과 동일한 경우, 다음이 적용된다:
Figure pct00061
- 그렇지 않은 경우(pcm_loop_filter_disabled_flag가 0과 동일하거나 pcm_flag[ x ][ y ]가 0과 동일한 경우), 다음이 적용된다:
Figure pct00062
Figure pct00063
8.8.5.4 크로마 샘플들에 대한 코딩 트리 블록 필터링 프로세스
이 프로세스의 입력들은 다음과 같다:
- 적응 루프 필터링 프로세스 이전의 재구성된 크로마 픽처 샘플 어레이 recPicture,
- 필터링된 재구성된 크로마 픽처 샘플 어레이 alfPicture,
- 현재 픽처의 좌측 상단 샘플에 상대적인 현재 크로마 코딩 트리 블록의 좌측 상단 샘플을 지정하는 크로마 위치 ( xCtbC, yCtbC ).
이 프로세스의 출력은 수정된 필터링된 재구성된 크로마 픽처 샘플 어레이 alfPicture이다.
현재 크로마 코딩 트리 블록의 폭 및 높이 ctbWidthC 및 ctbHeightC는 다음과 같이 도출된다:
Figure pct00064
필터링된 재구성된 크로마 샘플들 alfPicture[ x ][ y ]의 도출을 위해, 현재 크로마 코딩 트리 블록 recPicture[ x ][ y ] 내의 각각의 재구성된 크로마 샘플은 다음과 같이 필터링되며, 단, x = 0..ctbWidthC - 1, y = 0..ctbHeightC - 1이다:
크로마 샘플들의 주어진 어레이 recPicture 내의 대응하는 크로마 샘플들 ( x, y ) 각각에 대한 위치들 ( hx  + i, vy  + j )(단, i, j = -2..2임)은 다음과 같이 도출된다:
- pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 xCtbC + x  PpsVirtualBoundariesPosX[ n ] / SubWidthC가 0보다 크거나 같고 2보다 작은 경우, 다음이 적용된다:
Figure pct00065
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 PpsVirtualBoundariesPosX[ n ] / SubWidthC - xCtbC - x가 0보다 크고 3보다 작은 경우, 다음이 적용된다:
Figure pct00066
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00067
- pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries - 1에 대해 yCtbC + y - PpsVirtualBoundariesPosY[ n ] / SubHeightC가 0보다 크거나 같고 2보다 작은 경우, 다음이 적용된다:
Figure pct00068
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries - 1에 대해 PpsVirtualBoundariesPosY[ n ] / SubHeightC - yCtbC - y가 0보다 크고 3보다 작은 경우, 다음이 적용된다:
Figure pct00069
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00070
- 변수 applyVirtualBoundary는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, applyVirtualBoundary는 0과 동일하게 설정된다:
- 현재 코딩 트리 블록의 하단 경계는 픽처의 하단 경계이다.
- 현재 코딩 트리 블록의 하단 경계는 브릭의 하단 경계이고 loop_filter_across_bricks_enabled_flag는 0과 동일하다.
- 현재 코딩 트리 블록의 하단 경계는 슬라이스의 하단 경계이고 loop_filter_across_slices_enabled_flag는 0과 동일하다.
- 현재 코딩 트리 블록의 하단 경계는 픽처의 하단 가상 경계들 중 하나이며 pps_loop_filter_across_virtual_boundaries_disabled_flag는 1과 동일하다.
- 그렇지 않은 경우, applyVirtualBoundary가 1과 동일하게 설정된다.
- 수평 루마 샘플 위치 y 및 applyVirtualBoundary에 따른 재구성된 샘플 오프셋들 r1 및 r2는 표 8-22에 명시되어 있다.
- 변수 curr은 다음과 같이 도출된다:
Figure pct00071
- 크로마 필터 계수들의 어레이 f[ j ] 및 크로마 클리핑 값들의 어레이 c[ j ]는 다음과 같이 도출되고, 단, j = 0..5이다:
Figure pct00072
- 변수 sum은 다음과 같이 도출된다
Figure pct00073
Figure pct00074
- 수정된 필터링된 재구성된 크로마 픽처 샘플 alfPicture[ xCtbC + x ][ yCtbC + y ]는 다음과 같이 도출된다:
- pcm_loop_filter_disabled_flag 및 pcm_flag[ ( xCtbC + x ) * SubWidthC ][ ( yCtbC + y ) * SubHeightC ] 둘 모두가 1과 동일한 경우, 다음이 적용된다:
Figure pct00075
- 그렇지 않은 경우(pcm_loop_filter_disabled_flag가 0과 동일하거나 pcm_flag[ x ][ y ]가 0과 동일한 경우), 다음이 적용된다:
Figure pct00076
2.11 CTU 프로세싱의 예들
현재 VVC 설계에 따르면, 하나의 CTB의 하단 경계가 슬라이스/브릭의 하단 경계인 경우, ALF 가상 경계 처리 방법이 디스에이블된다. 예를 들어, 하나의 픽처는 도 19에 묘사된 바와 같이 다수의 CTU들과 2 개의 슬라이스로 분할된다.
CTU 크기가 MxM(예를 들면, M = 64)이라고 가정하면, 가상 경계 정의에 따라, CTB 내의 마지막 4 개의 라인은 가상 경계 아래에서 처리된다. 하드웨어 구현에서, 다음이 적용된다:
- CTB의 하단 경계가 픽처(예를 들면, CTU-D)의 하단 경계인 경우, CTU 행 위쪽으로부터의 4 개의 라인 및 현재 CTU에서의 모든 라인들을 포함하는 (M+4) × M 블록을 프로세싱한다.
- 그렇지 않고, CTB의 하단 경계가 슬라이스(또는 브릭)(예를 들면, CTU-C)의 하단 경계이고 loop_filter_across_slice_enabled_flag(또는 loop_filter_across_bricks_enabled_flag)가 0과 동일한 경우, CTU 행 위쪽으로부터의 4 개의 라인 및 현재 CTU에서의 모든 라인들을 포함하는 (M+4) × M 블록을 프로세싱한다.
- 그렇지 않고, CTU/CTB가 슬라이스/브릭/타일(예를 들면, CTU-A)에서의 첫 번째 CTU 행에 있는 경우, 마지막 4 개의 라인을 제외한 M × (M-4) 블록을 프로세싱한다.
- 그렇지 않고, CTU/CTB가 슬라이스/브릭/타일(예를 들면, CTU-B)의 첫 번째 CTU 행에 있지 않고 슬라이스/브릭/타일의 마지막 CTU 행에 있지 않은 경우, CTU 행 위쪽으로부터의 4 개의 라인을 포함하고 현재 CTU에서의 마지막 4 개의 라인을 제외한 M × M 블록을 프로세싱한다.
도 19은 픽처에서의 CTU들의 프로세싱의 예를 도시한다.
2.12 360도 비디오 코딩
VTM5에서의 수평 랩 어라운드 모션 보상은 ERP(equi-rectangular) 투영 포맷의 재구성된 360도 비디오의 시각적 품질을 개선시키도록 설계된 360 전용 코딩 툴이다. 종래의 모션 보상에서는, 모션 벡터가 참조 픽처의 픽처 경계들 너머의 샘플들을 참조할 때, 대응하는 픽처 경계 상의 해당 최근접 이웃들로부터 복사하는 것에 의해 범위 밖의(out-of-bounds) 샘플들의 값들을 도출하기 위해 반복적인 패딩이 적용된다. 360도 비디오의 경우, 이 반복적인 패딩 방법은 적합하지 않으며, 재구성된 뷰포트 비디오에서 "이음매 아티팩트(seam artefact)"라는 시각적 아티팩트를 야기할 수 있다. 360도 비디오는 구면 상에서 캡처되고 본질적으로 "경계"를 갖지 않기 때문에, 투영된 도메인에서 참조 픽처 경계들을 벗어난 참조 샘플들은 항상 구면 도메인에서 이웃 샘플들로부터 획득될 수 있다. 일반적인 투영 포맷의 경우, 2D 대 3D 및 3D 대 2D 좌표 변환은 물론 분수 샘플 위치들에 대한 샘플 보간을 수반하기 때문에, 구면 도메인에서 대응하는 이웃 샘플들을 도출하기 어려울 수 있다. 이 문제는 ERP 투영 포맷의 좌측 및 우측 경계들에 대해 훨씬 더 간단한데, 그 이유는 좌측 픽처 경계 외부의 구면 이웃들이 우측 픽처 경계 내부의 샘플들로부터 획득될 수 있고 그 반대도 마찬가지이기 때문이다.
도 20은 VVC에서의 수평 랩 어라운드 모션 보상의 예를 도시한다.
수평 랩 어라운드 모션 보상 프로세스는 도 20에 묘사된 바와 같다. 참조 블록의 일부가 투영된 도메인에서 참조 픽처의 좌측(또는 우측) 경계 외부에 있을 때, 반복적인 패딩 대신에, "경계 외부" 부분이 투영된 도메인에서 우측(또는 좌측) 경계 쪽에 있는 참조 픽처의 대응하는 구면 이웃들로부터 취해진다. 반복적인 패딩은 상단 및 하단 픽처 경계들에 대해서만 사용된다. 도 20에 묘사된 바와 같이, 수평 랩 어라운드 모션 보상은 360도 비디오 코딩에서 종종 사용되는 비규범적(non-normative) 패딩 방법과 결합될 수 있다. VVC에서, 이것은 패딩 이전에 ERP 픽처 폭으로 설정되어야 하는 랩 어라운드 오프셋을 나타내기 위해 상위 레벨 신택스 요소를 시그널링하는 것에 의해 달성되며; 이 신택스는 그에 따라 수평 랩 어라운드의 위치를 조정하는 데 사용된다. 이 신택스는 좌측 및 우측 픽처 경계들에서의 특정 패딩 양에 의해 영향을 받지 않으며, 따라서, 예를 들면, 좌측 및 우측 패딩이 상이할 때, ERP 픽처의 비대칭 패딩을 자연스럽게 지원한다. 수평 랩 어라운드 모션 보상은 참조 샘플들이 참조 픽처의 좌측 및 우측 경계들 외부에 있을 때 모션 보상에 대한 보다 의미 있는 정보를 제공한다.
복수의 면들로 구성된 투영 포맷들의 경우, 어떤 종류의 콤팩트한 프레임 패킹 배열이 사용되더라도, 프레임 패킹된 픽처에서 2 개 이상의 인접한 면 사이에 불연속부들이 나타난다. 예를 들어, 도 24에 묘사된 3x2 프레임 패킹 구성을 고려할 때, 상반부에 있는 3 개의 면은 3D 지오메트리에서 연속적이고, 하반부에 있는 3 개의 면은 3D 지오메트리에서 연속적이지만, 프레임 패킹된 픽처의 상반부 및 하반부는 3D 지오메트리에서 불연속적이다. 인루프 필터링 동작들이 이러한 불연속부에 걸쳐 수행되는 경우, 재구성된 비디오에서 면 이음매 아티팩트들이 보일 수 있다.
면 이음매 아티팩트들을 완화시키기 위해, 프레임 패킹된 픽처에서의 불연속부들에 걸쳐 인루프 필터링 동작들이 디스에이블될 수 있다. 인루프 필터링 동작들이 디스에이블되는 수직 및/또는 수평 가상 경계들을 시그널링하기 위해 신택스가 제안되었다. 연속적인 면들의 각각의 세트에 대해 하나씩, 2 개의 타일을 사용하는 것과 비교하여 그리고 타일들에 걸친 인루프 필터링 동작들을 디스에이블시키기 위해, 제안된 시그널링 방법은, 면 크기가 CTU 크기의 배수일 것을 요구하지 않기 때문에, 더 유연하다.
2.13 예시적인 서브픽처 기반 모션 제약된 독립적인 영역들
일부 실시예들에서, 다음 특징들이 포함된다:
1) 픽처들이 서브픽처들로 나누어질 수 있다.
2) 서브픽처들의 존재의 표시는, 서브픽처들의 다른 시퀀스 레벨 정보와 함께, SPS에서 표시된다.
3) (인루프 필터링 동작들을 제외한) 디코딩 프로세스에서 서브픽처가 픽처로서 취급되는지 여부는 비트스트림에 의해 제어될 수 있다.
4) 서브픽처 경계들에 걸친 인루프 필터링이 디스에이블되는지 여부는 각각의 서브픽처에 대한 비트스트림에 의해 제어될 수 있다. DBF, SAO 및 ALF 프로세스들은 서브픽처 경계들에 걸친 인루프 필터링 동작들의 제어를 위해 업데이트된다.
5) 간단함을 위해, 시작점으로서, 서브픽처 폭, 높이, 수평 오프셋, 및 수직 오프셋이 SPS에서 루마 샘플 단위로 시그널링된다. 서브픽처 경계들은 슬라이스 경계들로 제약된다.
6) (인루프 필터링 동작들을 제외한) 디코딩 프로세스에서 서브픽처를 픽처로서 취급하는 것은 coding_tree_unit() 신택스를 약간 업데이트하는 것 및 이하의 디코딩 프로세스들에 대한 업데이트들에 의해 지정된다:
o (진보된) 시간 루마 모션 벡터 예측을 위한 도출 프로세스
o 루마 샘플 이중선형 보간 프로세스
o 루마 샘플 8-탭 보간 필터링 프로세스
o 크로마 샘플 보간 프로세스
7) VCL NAL 유닛들을 변경할 필요 없이 서브픽처 시퀀스들의 추출을 가능하게 하기 위해 서브픽처 ID들이 SPS에 명시적으로 지정되고 타일 그룹 헤더들에 포함된다.
출력 서브픽처 세트들(OSPS)은 서브픽처들 및 그의 세트들에 대한 규범적 추출 및 적합성 포인트들을 지정하기 위해 제안된다.
3. 본 문서에서 제공되는 해결책들에 의해 해결되는 기술적 문제들
현재 VVC 설계는 다음과 같은 문제점들을 갖는다:
1. ALF 가상 경계를 인에이블시키는 것의 현재 설정은 CTB의 하단 경계가 픽처의 하단 경계인지 여부에 의존한다. 참인 경우, 도 19에서의 CTU-D와 같이, ALF 가상 경계가 디스에이블된다. 그렇지만, CTB의 하단 경계가 픽처의 하단 경계 외부에 있는 것, 예컨대, 256x240 픽처가 4 개의 128x128 CTU로 분할되는 것이 가능할 수 있으며, 이 경우에, ALF 가상 경계는 하단 픽처 경계 외부에 샘플들을 갖는 마지막 2 개의 CTU에 대해 참으로 잘못 설정될 것이다.
2. ALF 가상 경계를 처리하는 방식은 하단 픽처 경계 및 슬라이스/타일/브릭 경계에 대해 디스에이블된다. 슬라이스/브릭 경계를 따라 VB를 디스에이블시키는 것은 파이프라인 버블을 야기할 수 있거나 LCU 크기가 64x64라고 가정할 때 가상 파이프라인 데이터 유닛(VPDU, VVC에서 64x64)당 68 개의 라인을 프로세싱하는 것을 필요로 할 수 있다. 예를 들어:
a. 디코더들이 슬라이스/브릭/타일 경계들을 미리 알지 못하는 경우(예를 들면, 저지연 응용 분야들의 경우), ALF 라인 버퍼들이 복원될 필요가 있다. 라인 버퍼들에 있는 콘텐츠가 ALF 필터링에 사용되는지 여부는 현재 CTU가 또한 슬라이스/브릭/타일 경계 CTU인지 여부에 의존하지만, 이 정보는 다음 슬라이스/브릭/타일이 디코딩될 때까지 알 수 없다.
b. 디코더들이 슬라이스/브릭/타일 경계를 미리 알고 있는 경우, ALF 라인 버퍼들을 사용하는 것을 피하기 위해, 디코더들은 파이프라인 버블들을 감수할 필요가 있거나(매우 가능성 없음) ALF를 항상 64x64 VDPU당 68 라인의 속도로 실행(오버프로비저닝)할 필요가 있다.
3. 가상 경계 및 비디오 유닛 경계를 처리하는 상이한 방식들, 예를 들면, 상이한 패딩 방법들이 존재한다. 한편, 라인이 다수의 경계들에 있을 때 라인에 대해 둘 이상의 패딩 방법이 수행될 수 있다.
a. 일 예에서, 블록의 하단 경계가 360도 가상 경계이고 ALF 가상 경계가 또한 이 블록에 적용되는 경우, 이 경우에, 360도 가상 경계 아래쪽에 가상 샘플들을 생성하기 위해 360도 가상 경계에 대한 패딩 방법이 먼저 적용될 수 있다. 그 후에, 360도 가상 경계 아래에 위치하는 이러한 가상 샘플들은 이용 가능한 것으로 취급된다. 그리고 ALF 양측 패딩 방법이 도 16a 내지 도 16c에 따라 더 적용될 수 있다. 예가 도 25에 묘사되어 있다.
4. 가상 경계를 처리하는 방식은, 덜 효율적일 수 있는 패딩된 샘플들이 활용되기 때문에, 차선책일 수 있다.
5. 비선형 ALF가 디스에이블될 때, MALF 및 양측 패딩 방법들은 가상 경계에 걸쳐 있는 샘플들에 액세스할 것을 필요로 하는 샘플의 필터링에 대해 동일한 결과들을 생성할 수 있을 것이다. 그렇지만, 비선형 ALF가 인에이블될 때, 2 개의 방법은 상이한 결과들을 가져올 것이다. 이 두 경우를 정렬시키는 것이 유익할 것이다.
6. 슬라이스는, 도 28에 묘사된 것과 같이, 직사각형 슬라이스이거나 비직사각형 슬라이스일 수 있다. 이 경우에, CTU의 경우, 이는 어떠한 경계들(예를 들면, 픽처/슬라이스/타일/브릭)과도 일치하지 않을 수 있다. 그렇지만, 이는 현재 슬라이스 외부의 샘플들에 액세스할 필요가 있을 수 있다. 슬라이스 경계에 걸친 필터링이 디스에이블되는 경우(예를 들면, loop_filter_across_slices_enabled_flag가 거짓인 경우), ALF 분류 및 필터링 프로세스를 어떻게 수행할지가 알려져 있지 않다.
4. 기술들 및 실시예들의 예들
아래의 목록은 일반 개념들을 설명하기 위한 예들로서 간주되어야 한다. 열거된 기술들이 좁은 의미로 해석되어서는 안된다. 게다가, 이러한 기술들은 임의의 방식으로 조합될 수 있다.
ALF 가상 경계들에 사용되는 패딩 방법은 '양측 패딩'이라고 표기될 수 있으며, 여기서, 도 12 및 도 13에 묘사된 바와 같이, (i, j)에 위치하는 하나의 샘플이 패딩되는 경우, 샘플이 이용 가능하더라도 동일한 필터 계수를 공유하는 (m, n)에 위치하는 대응하는 샘플이 또한 패딩된다.
픽처 경계들/360도 비디오 가상 경계들, 일반 경계들(예를 들면, 상단 및 하단 경계들)에 사용되는 패딩 방법은 '일측 패딩(One-side Padding)'이라고 표기될 수 있으며, 여기서 사용될 하나의 샘플이 경계들 외부에 있는 경우, 이는 픽처 내부의 이용 가능한 샘플로부터 복사된다.
360도 비디오 좌측 및 우측 경계들에 사용되는 패딩 방법은 '래핑 기반 패딩(wrapping-base Padding)'이라고 표기될 수 있으며, 여기서 사용될 하나의 샘플이 경계들 외부에 있는 경우, 이는 모션 보상된 결과들을 사용하여 복사된다.
이하의 논의에서, 샘플이 "비디오 유닛의 경계에 있다"는 것은 샘플과 비디오 유닛의 경계 사이의 거리가 임계치보다 작거나 크지 않다는 것을 의미할 수 있다. "라인"은 하나의 동일한 수평 위치에 있는 샘플들 또는 하나의 동일한 수직 위치에 있는 샘플들(예를 들면, 동일한 행에 있는 샘플들 및/또는 동일한 열에 있는 샘플들)을 지칭할 수 있다. 함수 Abs(x)는 다음과 같이 정의된다:
Figure pct00077
이하의 논의에서 "가상 샘플"은 재구성된 샘플과 상이할 수 있는(디블로킹 및/또는 SAO에 의해 프로세싱될 수 있는) 생성된 샘플을 지칭한다. 가상 샘플은 다른 샘플에 대한 ALF를 수행하는 데 사용될 수 있다. 가상 샘플은 패딩에 의해 생성될 수 있다.
'하나의 블록에 대해 ALF 가상 경계 처리 방법이 인에이블된다'는 사양에서의 applyVirtualBoundary가 참으로 설정된다는 것을 나타낼 수 있다. '가상 경계를 인에이블시키는 것'은 현재 블록이 가상 경계에 의해 적어도 2 개의 부분으로 분할되고 한 부분에 위치하는 샘플들이 필터링 프로세스(예를 들면, ALF)에서 다른 부분에 있는 샘플들을 활용하도록 허용되지 않는다는 것을 나타낼 수 있다. 가상 경계는 하나의 블록의 하단 경계 위쪽의 K 개의 행일 수 있다.
이하의 설명에서, 이웃 샘플들은 필터 분류 및/또는 필터링 프로세스에 필요한 것들일 수 있다.
본 개시에서, 이웃 샘플은 현재 픽처, 또는 현재 서브픽처, 또는 현재 타일, 또는 현재 슬라이스, 또는 현재 브릭, 또는 현재 CTU, 또는 현재 프로세싱 유닛(예컨대, ALF 프로세싱 유닛 또는 좁은 ALF 프로세싱 유닛) 또는 임의의 다른 현재 비디오 유닛 외부에 있는 경우 "이용 가능하지 않다".
1. '현재 코딩 트리 블록의 하단 경계가 픽처의 하단 경계라는' 결정은 '현재 코딩 트리 블록의 하단 경계가 픽처의 하단 경계이거나 픽처 외부에 있다는' 것으로 대체된다.
a. 대안적으로, 게다가 이 경우에, ALF 가상 경계 처리 방법이 디스에이블될 수 있다.
2. 인루프 필터링 프로세스에서 가상 샘플들의 사용을 인에이블시킬지 여부(예를 들면, 가상 경계를 인에이블시키는지 여부(예를 들면, applyVirtualBoundary를 참 또는 거짓으로 설정하는지))는 CTB 크기에 의존할 수 있다.
a. 일 예에서, applyVirtualBoundary는 주어진 CTU/CTB 크기에 대해, 예를 들면, KxL(예를 들면, K=L=4)과 동일한 CTU/CTB 크기에 대해 항상 거짓으로 설정된다.
b. 일 예에서, applyVirtualBoundary는 KxL(예를 들면, K=L=8)보다 크지 않거나 그보다 작은 특정 CTU/CTB 크기들에 대해 항상 거짓으로 설정된다.
c. 대안적으로, ALF는, 4x4, 8x8과 같은, 특정 CTU/CTB 크기들에 대해 디스에이블된다.
3. 인루프 필터링 프로세스들(예를 들면, ALF)에서 (예를 들면, 재구성된 샘플들로부터 패딩된) 가상 샘플들의 사용을 인에이블시킬지 여부는 블록의 하단 경계가 픽처(예를 들면, 슬라이스/타일/브릭)에 비해 더 미세한 입도로 되어 있는 비디오 유닛의 하단 경계 또는 가상 경계인지 여부에 의존할 수 있다.
a. 일 예에서, ALF 가상 경계 처리 방법은 CTB의 하단 경계가 비디오 유닛의 경계 또는 가상 경계인 경우 코딩 트리 블록(CTB)에 대해 인에이블될 수 있다(예를 들면, applyVirtualBoundary가 참으로 설정됨).
i. 대안적으로, 게다가, 하단 경계가 하단 픽처 경계가 아닌 경우 또는 하단 경계가 픽처 외부에 있는 경우, 위의 방법이 인에이블된다.
b. 현재 코딩 트리 블록의 하단 경계가 픽처의 하단 가상 경계들 중 하나이고 pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일한 경우, ALF 가상 경계 처리 방법은 여전히 인에이블될 수 있다(예를 들면, applyVirtualBoundary가 참으로 설정됨).
c. 일 예에서, CTB에 대한 ALF 가상 경계 처리 방법을 인에이블시킬지 여부(예를 들면, applyVirtualBoundary의 값)는 CTB의 하단 경계와 픽처의 하단 경계 사이의 관계에만 의존할 수 있다.
i. 일 예에서, CTB의 하단 경계가 CTB를 포함하는 픽처의 하단 경계인 경우 또는 하단 경계가 픽처 외부에 있는 경우에만 applyVirtualBoundary가 거짓으로 설정된다.
ii. 일 예에서, CTB의 하단 경계가 CTB를 포함하는 픽처의 하단 경계가 아닐 때 applyVirtualBoundary가 참으로 설정된다.
d. 일 예에서, 도 18a 내지 도 18c에서 CTU-C를 디코딩할 때, M × M 샘플들은 가상 경계 아래쪽의 K 개의 라인을 제외한 CTU 위쪽으로부터의 K 개의 라인으로 필터링될 수 있다.
4. 브릭/슬라이스 경계들에 걸쳐 있는 루프 필터들에 대한 시그널링된 사용 제어 플래그들(예를 들면, loop_filter_across_bricks_enabled_flag/loop_filter_across_slices_enabled_flag)이 참일 때에도 필터링 프로세스(예를 들면, ALF)에서 브릭/슬라이스 경계들에 걸친 샘플들의 사용을 디스에이블시키는 것에 제안된다.
a. 대안적으로, 게다가, 시그널링된 loop_filter_across_bricks_enabled_flag/loop_filter_across_slices_enabled_flag는 ALF를 제외한 디블로킹 필터 및 SAO의 필터링 프로세스만을 제어할 수 있다.
b. 일 예에서, 다른 샘플에 대한 ALF를 수행하기 위해 대응하는 위치에 있는 재구성된 샘플 대신에 가상 샘플이 사용될 수 있다.
5. 하나의 블록(예를 들면, CTB)이 비디오 유닛의 경계(예컨대, 슬라이스/브릭/타일/360도 비디오 가상 또는 일반 경계들/픽처 경계)에 위치하는 샘플을 포함할 때, 상이한 종류들의 경계들에 대해 ALF와 같은 인루프 필터링을 위한 비디오 유닛 내부 또는 외부의 가상 샘플을 생성하는 방법(예를 들면, 패딩 방법들)은 통합될 수 있다.
a. 대안적으로, 게다가, 가상 경계들의 방법(예를 들면, 양측 패딩 방법)은 인루프 필터링을 위해 경계에 있는 샘플을 처리하기 위해 블록에 적용될 수 있다.
b. 대안적으로, 게다가, 블록이 비디오 유닛의 하단 경계에 위치하는 샘플을 포함할 때 위의 방법들이 적용될 수 있다.
c. 일 예에서, 한 블록의 K 개의 라인을 디코딩할 때, K 개의 라인이 블록의 가상 경계 아래쪽에 있고(예를 들면, 도 17a 및 도 17b의 CTU-B에서의 마지막 K 개의 라인이고) 블록의 하단 경계가 비디오 유닛의 하단 경계인 경우, 가상 샘플들은 이러한 K 개의 라인 외부의 다른 샘플들의 사용을 피하기 위해 ALF 분류/필터링 프로세스에서 생성될 수 있으며, 예를 들면, 양측 패딩 방법이 적용될 수 있다.
i. 대안적으로, ALF가 해당 마지막 K 개의 라인에 대해 디스에이블될 수 있다.
d. 일 예에서, 하나의 블록이 다수의 경계들에 있을 때, ALF 분류에 사용되는 픽셀들/샘플들은 이러한 다수의 경계들 중 어느 것에도 걸쳐 있지 않도록 제한될 수 있다.
i. 일 예에서, 한 샘플에 대해, 그의 특정 이웃 샘플이 (예를 들면, 다수의 경계들 중 어느 것에 걸쳐서도) "이용 불가능한" 경우, 그 샘플에 대해 단독으로 또는 모든 종류의 구배들/방향성이 계산되지 않을 수 있다.
1. 일 예에서, 샘플의 구배들은 0으로서 취급될 수 있다.
2. 일 예에서, 샘플의 구배들은 "이용 불가능한" 것으로 취급될 수 있으며 (예를 들면, ALF 분류 프로세스에서 도출되는 섹션 2.6.1.1의 방정식 (8)에 정의된) 활성도에 가산되지 않을 수 있다.
ii. 일 예에서, ALF 분류 프로세스에서 사용되는 일부 샘플들만이 "이용 가능할" 때 (예를 들면, 이러한 경계들 중 어느 것에도 걸쳐 있지 않음) ALF 분류 프로세스에서 도출되는 활성도/방향성이 어떤 인자에 의해 스케일링될 수 있다.
iii. 일 예에서, 경계 블록에 대해, ALF 분류 프로세스에서 N 개의 샘플에 대해 구배들/방향성이 계산될 필요가 있고, 구배들이 M 개의 샘플에 대해서만 계산될 수 있다(예를 들면, 샘플의 특정 이웃 샘플이 "이용 가능하지" 않은 경우, 그에 대해 구배가 계산될 수 없음)고 가정하면, 활성도가 N/M과 곱해질 수 있다.
1. 대안적으로, 활성도가 N/M에 의존하는 인자와 곱해질 수 있다. 예를 들면, 그 숫자는 MN (N은 정수)일 수 있고, 예를 들어, M = 2이다.
e. 일 예에서, 하나의 라인이 다수의 경계들에 있는 경우(예를 들면, 라인과 경계 사이의 거리가 임계치보다 작은 경우), 그 라인이 몇 개의 경계들에 속할 수 있는지에 관계없이 패딩 프로세스는 한 번만 수행된다.
i. 대안적으로, 몇 개의 이웃 라인들이 패딩되어야 하는지는 모든 경계들에 대한 현재 라인의 위치에 의존할 수 있다.
ii. 예를 들어, 몇 개의 이웃 라인들이 패딩되어야 하는지는, 예컨대, 현재 라인이 2 개의 경계 - 2 개의 경계는 위쪽와 아래쪽에 있음 - 내에 있을 때, 현재 라인과 2 개의 경계 사이의 거리들에 의해 결정될 수 있다.
iii. 예를 들어, 몇 개의 이웃 라인들이 패딩되어야 하는지는, 예컨대, 현재 라인이 2 개의 경계 - 2 개의 경계는 위쪽와 아래쪽에 있음 - 내에 있을 때, 현재 라인과 최근접 경계 사이의 거리에 의해 결정될 수 있다.
iv. 예를 들어, 몇 개의 이웃 라인들이 패딩되어야 하는지는 각각의 경계에 대해 독립적으로 계산될 수 있으며, 최대 1이 최종 패딩된 라인 번호로서 선택된다.
v. 일 예에서, 몇 개의 이웃 라인들이 패딩되어야 하는지는 라인의 각각의 측면(예를 들면, 위쪽 측면 및 아래쪽 측면)에 대해 결정될 수 있다.
vi. 일 예에서, 양측 패딩 방법의 경우, 몇 개의 이웃 라인들이 패딩되어야 하는지는 2 개의 측면에 대해 공동으로 결정될 수 있다.
vii. 대안적으로, 게다가, ALF에 의해 사용되는 양측 패딩 방법이 적용된다.
f. 일 예에서, 하나의 라인이 다수의 경계들에 있고 라인의 각각의 측면(예를 들면, 위쪽 측면 및 아래쪽 측면)에 적어도 하나의 경계가 있을 때, ALF가 그에 대해 디스에이블될 수 있다.
g. 일 예에서, 현재 라인이 필요로 하는 패딩된 라인들의 수가 임계치보다 클 때, ALF가 현재 라인에 대해 디스에이블될 수 있다.
i. 일 예에서, 임의의 측면에 있는 패딩된 라인들의 수가 임계치보다 클 때, ALF가 현재 라인에 대해 디스에이블될 수 있다.
ii. 일 예에서, 양쪽 측면들에 있는 패딩된 라인들의 총수가 임계치보다 클 때, ALF가 현재 라인에 대해 디스에이블될 수 있다.
h. 대안적으로, 게다가, 블록이 비디오 유닛의 하단 경계에 위치하는 샘플을 포함하고 ALF와 같은 인루프 필터링이 블록에 대해 인에이블될 때 위의 방법들이 적용될 수 있다.
i. 대안적으로, 추가로, 위의 방법들이 특정 조건들 하에서, 예컨대, 블록이 비디오 유닛의 하단 경계에 위치하는 샘플을 포함하고 경계들에 걸쳐 있는 필터링이 허용되지 않을 때(예를 들면, pps_loop_filter_across_virtual_boundaries_disabled_flag/loop_filter_across_slices_enabled_flag/loop_filter_across_slices_enabled_flag가 참일 때), 적용될 수 있다.
j. 제안된 방법은 또한 수직 경계들에 위치하는 샘플들/블록들에 적용 가능하다.
6. 샘플이 하나의 블록의 적어도 2 개의 경계를 가질 때(예를 들면, 현재 라인 위쪽에 있는 적어도 하나의 경계는 ALF 가상 경계이고, 아래쪽에 다른 경계가 있을 때), 몇 개의 라인들이 패딩되어야 하는지가 순전히 현재 라인과 ALF 가상 경계 사이의 거리에 의해서만 결정되지는 않는다. 그 대신에, 이는 현재 라인과 2 개의 경계 사이의 거리들에 의해 결정된다.
a. 일 예에서, 측면별 패딩에 대한 라인들의 수는 (M - min(D0, D1))로 설정된다.
b. 일 예에서, 측면별 패딩에 대한 라인들의 수는 (M - max(D0, D1))로 설정된다.
c. 위의 예에서, D0, D1은 현재 라인과 위쪽/아래쪽 경계들 사이의 거리를 나타낸다.
d. 위의 예에서, M은 ALF 가상 경계가 하나의 CTU의 하단으로부터 오는 라인들의 수를 나타낸다.
7. ALF 분류 및/또는 ALF 선형 또는 비선형 필터링 프로세스에서 샘플들을 선택하는 적어도 두 가지 방식이 정의될 수 있으며, 그 중 하나는 임의의 인루프 필터링 방법이 적용되기 전에 샘플들을 선택하고; 다른 하나는 하나 또는 다수의 인루프 필터링 방법이 적용된 후에 그러나 ALF가 적용되기 전에 샘플들을 선택한다.
a. 일 예에서, 상이한 방식들의 선택은 필터링될 샘플들의 위치에 의존할 수 있다.
b. 일 예에서, (CTB와 같은) 비디오 유닛의 하단 경계에 있는 샘플은 그것이 다른 샘플에 대한 ALF에서 사용될 때 첫 번째 방법으로 선택될 수 있다. 그렇지 않은 경우(그것이 경계에 있지 않은 경우), 두 번째 방법이 선택된다.
8. 필터링 프로세스에서 VPDU 경계(예를 들면, 64x64 영역)에 걸쳐 있는 샘플들의 사용을 디스에이블하는 것이 제안된다.
a. 일 예에서, ALF 분류 프로세스에 의해 요구되는 샘플이 VPDU 경계 외부에 또는 가상 경계 아래쪽에 있을 때, 이는 가상 샘플로 대체될 수 있거나 또는 샘플에 대한 분류 결과들이 다른 샘플들과 연관된 것들로부터 복사될 수 있으며, 예컨대, 이용 가능한 것들로부터 패딩될 수 있다.
b. 일 예에서, 필터링 프로세스에 의해 요구되는 샘플이 VPDU 경계 외부에 있거나 가상 경계 아래쪽에 있을 때, 그것이 가상 샘플로 대체될 수 있으며, 예컨대, 이용 가능한 것들로부터 패딩될 수 있다.
c. 일 예에서, ALF 가상 경계 처리 방법은 블록이 VPDU의 경계에 위치하는 샘플들을 포함하는 경우 블록에 대해 인에이블될 수 있다(예를 들면, applyVirtualBoundary가 참으로 설정됨).
d. 대안적으로, 수평 VPDU 경계에 걸쳐 있는 샘플들의 사용은 필터링 프로세스에서 디스에이블될 수 있다.
i. 일 예에서, 필터링 프로세스에 의해 요구되는 샘플이 수평 VPDU 경계 아래쪽에 있거나 가상 경계 아래쪽에 있을 때, 그것이 가상 샘플로 대체될 수 있으며, 예컨대, 이용 가능한 것들로부터 패딩될 수 있다.
e. 대안적으로, 수직 VPDU 경계에 걸쳐 있는 샘플들의 사용은 필터링 프로세스에서 디스에이블될 수 있다.
i. 일 예에서, 필터링 프로세스에 의해 요구되는 샘플이 수직 VPDU 경계 외부에 있거나 가상 경계 아래쪽에 있을 때, 그것이 가상 샘플로 대체될 수 있으며, 예컨대, 이용 가능한 것들로부터 패딩될 수 있다.
9. ALF 분류/필터링 프로세스에서 (예를 들면, 이용 불가능하지 않은, 가상 경계들 위쪽/아래쪽에 있는, 비디오 유닛의 경계들 위쪽/아래쪽에 있는) 패딩된 샘플들을 사용하지 않고, 모든 인루프 필터들 이전의 재구성된 샘플들을 사용하는 것이 제안된다.
a. 대안적으로, 게다가, 양측 패딩의 개념은 모든 인루프 필터들 이전의 재구성된 샘플들로부터의 패딩 샘플들을 통해 적용된다.
i. 일 예에서, 필터 서포트에서의 샘플이 모든 인루프 필터들 이전의 재구성된 샘플들로부터 온 것인 경우, 필터 서포트에서의 대칭적인(예를 들면, 원점, 예를 들면, 현재 샘플에 대해 대칭적인) 샘플은 또한 모든 인루프 필터들 이전의 재구성된 샘플을 사용해야 한다.
1. 필터링될 현재 샘플의 좌표가 (0, 0)이고 (i, j)에 위치하는 샘플이 모든 인루프 필터들 이전의 재구성된 샘플이라고 가정하면, (-i, -j)에 위치하는 샘플은 모든 인루프 필터들 이전의 재구성된 샘플이다.
2. 필터링될 현재 샘플의 좌표가 (x, y)이고 (x + i, y + j)에 위치하는 샘플이 모든 인루프 필터들 이전의 재구성된 샘플이라고 가정하면, (x - i, y - j)에 위치하는 샘플은 모든 인루프 필터들 이전의 재구성된 샘플이다.
b. 대안적으로, 게다가, 인루프 리셰이핑(LMCS라고도 함)이 인에이블될 때, 모든 인루프 필터들 이전의 재구성된 샘플들은 리셰이핑된 도메인으로부터 변환되는 원래 도메인에서의 샘플들이다.
10. ALF 필터링 프로세스에서 (예를 들면, 이용 불가능하지 않은, 가상 경계들 위쪽/아래쪽에 있는, 비디오 유닛의 경계들 위쪽/아래쪽에 있는) 패딩된 샘플들을 사용하지 않고, 상이한 ALF 필터 서포트들을 이용하는 것이 제안된다.
a. 일 예에서, 위의 방법에서 샘플이 패딩될 필요가 있다고 가정하면, 패딩을 수행하는 대신에, 샘플과 연관된 필터 계수가 0으로 설정된다.
i. 이 경우에, 패딩될 필요가 있는 샘플들을 제외하는 것에 의해 필터 서포트가 수정된다.
ii. 대안적으로, 게다가, 현재 샘플을 제외한 다른 샘플들에 적용되는 필터 계수들은 변경되지 않은 채로 유지되지만, 현재 샘플에 적용되는 필터 계수는, ((1<< C_BD) - 패딩될 필요가 없는 샘플들에 적용되는 모든 필터 계수들의 합)과 같이,수정될 수 있으며 여기서 C_BD는 필터 계수의 비트 깊이를 나타낸다.
1. 도 18a 및 도 18b를 예로 들면, 라인들 L 및 I를 필터링할 때, 현재 샘플에 적용되는 필터 계수 c12는 ((1<< C_BD) - 2*(c4+c5+c6+c7+c8+c9+c10+c11))로 수정된다.
b. 일 예에서, 위의 방법에서 샘플 (x1, y1)이 (x2, y2)로부터 패딩된다고 가정하면, 패딩을 수행하는 대신에, 비선형 필터가 인에이블되는지 디스에이블되는지에 관계없이 (x1, y1)과 연관된 필터 계수가 위치 (x2, y2)의 필터 계수에 가산된다.
i. 대안적으로, 게다가, (x2, y2)에 대한 클리핑 파라미터는 즉시 도출될 수 있다.
1. 일 예에서, 이는 (x2, y2)에 대한 디코딩된 클리핑 파라미터와 동일하게 설정될 수 있다.
2. 대안적으로, 이는 (x1, y1) 및 (x2, y2)에 대한 디코딩된 클리핑 파라미터들을 입력들로 갖는 함수의 반환된 값, 예컨대, 보다 큰 값 또는 보다 작은 값으로 설정될 수 있다.
11. 클리핑 파라미터들/필터 계수들/필터 서포트들의 선택은 샘플을 필터링하는 것이 (예를 들면, 이용 불가능하지 않은, 가상 경계들 위쪽/아래쪽에 있는, 비디오 유닛의 경계들 위쪽/아래쪽에 있는) 패딩된 샘플들에 액세스할 필요가 있는지 여부에 의존할 수 있다.
a. 일 예에서, 상이한 클리핑 파라미터들/필터 계수들/필터 서포트들은 동일한 클래스 인덱스를 가진 샘플들에 대해 활용될 수 있지만, 그 중 일부에 대해서는 패딩된 샘플들에 액세스하는 것을 필요로 하고 다른 것들은 그렇지 않다.
b. 일 예에서, 패딩된 샘플들에 액세스하는 것을 필요로 하는 샘플들의 필터링을 위한 클리핑 파라미터들/필터 계수들/필터 서포트들은 CTU/영역/슬라이스/타일 레벨에서 시그널링될 수 있다.
c. 일 예에서, 패딩된 샘플들에 액세스하는 것을 필요로 하는 샘플들의 필터링을 위한 클리핑 파라미터들/필터 계수들/필터 서포트들은 패딩된 샘플들에 액세스하는 것을 필요로 하지 않는 샘플들의 필터링에 사용되는 것으로부터 도출될 수 있다.
i. 일 예에서, 글머리 기호 9a 또는 글머리 기호 9b가 적용될 수 있다.
12. 인루프 필터링(예컨대, ALF)을 위해 경계에 있는 샘플을 어떻게 처리할지는 컬러 성분 및/또는 컬러 포맷에 의존할 수 있다.
a. 예를 들어, "경계에 있는"에 대한 정의는 상이한 컬러 성분들에 대해 상이할 수 있다. 일 예에서, 루마 샘플과 하단 경계 사이의 거리가 T1보다 작은 경우 루마 샘플은 하단 경계에 있고; 크로마 샘플과 하단 경계 사이의 거리가 T2보다 작은 경우 크로마 샘플은 하단 경계에 있다. T1과 T2는 상이할 수 있다.
i. 일 예에서, 컬러 포맷이 4:4:4가 아닌 경우 T1과 T2는 상이할 수 있다.
13. 하나의 CTU/VPDU의 하단/상단/좌측/우측 경계가 또한 독립적인 코딩을 갖는 슬라이스/타일/브릭/서브영역의 경계일 때, 고정된 순서의 다수의 패딩 프로세스들이 적용된다.
a. 일 예에서, 제1 단계에서, 슬라이스/타일/브릭의 패딩 방법(예를 들면, 일측 패딩)이 먼저 적용된다. 그 후에, 제2 단계 동안 ALF 가상 경계들을 처리하기 위한 패딩 방법(예를 들면, 양측 패딩 방법)이 더 적용된다. 이 경우에, 제1 단계 이후의 패딩된 샘플들은 이용 가능한 것으로 마킹되며, ALF 가상 경계 프로세스에서 몇 개의 라인들이 패딩되어야 하는지를 결정하는 데 사용될 수 있다. 해당 경계들에 위치하지 않는 CTU들을 처리하기 위한 동일한 규칙(예를 들면, 도 16a 내지 16c)이 활용된다.
14. 제안된 방법들은 2 개의 서브픽처 사이의 하나 또는 다수의 경계에 적용될 수 있다.
a. 제안된 방법들을 적용하는 경계는 수평 경계일 수 있다.
b. 제안된 방법들을 적용하는 경계는 수직 경계일 수 있다.
15. 위에서 제안된 방법들은 수직 경계들에 있는 샘플들/블록들에 적용될 수 있다.
16. 제안된 방법이 "360 가상 경계"에서 적용되는지 여부 또는/및 어떻게 적용되는지는 "360 가상 경계"의 위치에 의존할 수 있다.
a. 일 예에서, "360 가상 경계"가 CTU 경계와 일치할 때, 제안된 방법이 적용될 수 있다. 예를 들면, "360 가상 경계"에 있는 샘플들에 대해 ALF에서 양측 패딩만이 적용될 수 있다.
b. 일 예에서, "360 가상 경계"가 CTU 경계와 일치하지 않을 때, 제안된 방법이 적용되지 않을 수 있다. 예를 들면, "360 가상 경계"에 있는 샘플들에 대해 ALF에서 일측 패딩만이 적용될 수 있다.
c. 일 예에서, 적어도 하나의 경계가 "360 가상 경계"이고 "360 가상 경계" 중 적어도 하나가 CTU 경계와 일치하지 않는 다수의 경계들에 있는 샘플들에 대해, 제안된 방법이 적용되지 않을 수 있다.
i. 예를 들어, 이러한 다수의 경계들 중 임의의 것에 걸쳐 있는 샘플들은 일측 패딩에 의해 패딩될 수 있다.
1. 대안적으로, 게다가, "가상 경계"가 있는 경우, 일측 패딩 이후에 ALF에서 양측 패딩이 적용될 수 있다.
d. 일 예에서, 두 가지 종류의 경계들 사이에 위치하는 샘플들에 대해, 그 중 하나가 "360 가상 경계"이고 다른 하나가 그렇지 않은 경우, ALF 프로세스에서 패딩이 한 번만 호출된다.
i. 일 예에서, ALF 가상 경계들을 처리하기 위한 패딩 방법(예를 들면, 양측 패딩 패딩 방법)이 호출될 수 있다.
1. 대안적으로, 픽처(또는 슬라이스/타일/브릭/서브픽처) 경계들을 처리하기 위한 패딩 방법(예를 들면, 일측 패딩)이 호출될 수 있다.
ii. 대안적으로, 2 개 또는 다수의 패딩 프로세스가 순서대로 적용될 수 있다.
1. 일 예에서, 픽처(또는 슬라이스/타일/브릭/서브픽처) 경계들을 처리하기 위한 패딩 방법(예를 들면, 일측 패딩)을 먼저 적용되고, 그 후에, ALF 가상 경계들을 처리하기 위한 패딩 방법(예를 들면, 양측 패딩 방법)이 추가로 호출될 수 있다.
a. 대안적으로, 게다가, 제1 패딩 이후의 패딩된 샘플들은 제2 패딩 프로세스에서 이용가능한 것으로 취급된다.
iii. 일 예에서, 둘 이상의 종류의 경계들(예를 들어, 슬라이스 경계/타일 경계/브릭 경계/"360 가상 경계"/”ALF 가상 경계”/서브픽처 경계) 사이에 위치하는 샘플들의 경우, 경계들 중 하나만이 "360 가상 경계"인 경우(예를 들면, 도 24에 도시된 바와 같이, 제1 경계는 "360 가상 경계"이고 제2 경계는 "ALF 가상 경계" 또는 슬라이스/브릭/타일 경계/서브픽처 경계이거나; 또는 그 반대인 경우), 제안된 방법이 적용될 수 있다. 예를 들면, 이러한 샘플들에 대해 ALF에서 양측 패딩만이 적용될 수 있다.
1. 대안적으로, 이러한 다수의 종류의 경계들이 "360 가상 경계" 또는 픽처 경계인 경우, 제안된 방법이 적용되지 않을 수 있다. 예를 들면, 이러한 샘플들에 대해 ALF에서 일측 패딩만이 적용될 수 있다.
e. 일 예에서, 둘 이상의 종류의 경계들 사이에 위치하는 샘플들의 경우, 경계들 중 적어도 하나가 "360 가상 경계"이고 그것이 CTU 경계와 일치하지 않는 경우, 제안된 방법이 적용되지 않을 수 있다.
i. 이 경우에, "360 가상 경계"에서만 샘플들을 처리하고 다른 종류의 경계들에서는 그렇지 않은 것은 선행 기술로서 취급될 수 있다.
ii. 일 예에서, 이러한 샘플들에 대해 ALF에서 일측 패딩만이 적용될 수 있다.
f. 일 예에서, 둘 이상의 종류의 경계들 사이에 위치하는 샘플들의 경우, 경계들 중 적어도 하나가 "360 가상 경계"인 경우, 제안된 방법이 적용되지 않을 수 있다.
i. 이 경우에, "360 가상 경계"에서만 샘플들을 처리하고 다른 종류의 경계들에서는 그렇지 않은 것은 선행 기술로서 취급될 수 있다.
ii. 일 예에서, 이러한 샘플들에 대해 ALF에서 일측 패딩만이 적용될 수 있다.
17. 예를 들면, 샘플이 현재 샘플과 상이한 비디오 유닛(예를 들면, 슬라이스/브릭/타일/서브픽처)에 위치하고 비디오 유닛(예를 들면, 슬라이스/브릭/타일/서브픽처 경계들)에 걸쳐 샘플들을 사용하여 필터링하는 것이 허용되지 않는 것으로 인해, ALF 필터링 프로세스에서 필요한 참조 샘플(예를 들면, 현재 샘플 P0을 필터링할 때 도 16c에서 i가 A/B/C/D인 P0i) 또는/및 ALF 분류 프로세스가 "이용 불가능할" 때, "이용 불가능한" 샘플은 "이용 가능한" 샘플들(예를 들면, 현재 샘플과 동일한 슬라이스/브릭/타일/서브픽처 내의 샘플들)로 패딩될 수 있다.
a. 일 예에서, "이용 불가능한" 참조 샘플은 그의 가장 가까운 "이용 가능한" 수평 위치로 먼저 클리핑될 수 있으며, 이어서 "이용 불가능한" 참조 샘플은 필요한 경우 그의 가장 가까운 "이용 가능한" 수직 위치로 클리핑된다.
b. 일 예에서, "이용 불가능한" 참조 샘플은 그의 가장 가까운 "이용 가능한" 수직 위치로 먼저 클리핑될 수 있으며, 이어서 "이용 불가능한" 샘플은 필요한 경우 그의 가장 가까운 "이용 가능한" 수평 위치로 클리핑된다.
c. 일 예에서, "이용 불가능한" 참조 샘플의 좌표는 수평 방향에서 그의 가장 가까운 "이용 가능한" 샘플의 좌표(예를 들면, 가장 작은 거리)로 클리핑된다.
i. 일 예에서, 좌표들 (x1, y1) 및 (x2, y2)를 갖는 2 개의 샘플의 경우, 이들 사이의 수평 거리는 Abs(x1 - x2)로서 계산될 수 있다.
d. 일 예에서, "이용 불가능한" 참조 샘플의 좌표는 수직 방향에서 그의 가장 가까운 "이용 가능한" 샘플의 좌표(예를 들면, 가장 작은 거리)로 클리핑된다.
i. 일 예에서, 좌표들 (x1, y1) 및 (x2, y2)를 갖는 2 개의 샘플의 경우, 이들 사이의 수직 거리는 Abs(y1 - y2)로서 계산될 수 있다.
e. 일 예에서, "이용 불가능한" 샘플은 그의 가장 가까운 "이용 가능한" 샘플(예를 들면, 가장 작은 거리)로 클리핑된다.
i. 일 예에서, 좌표들 (x1, y1) 및 (x2, y2)를 갖는 2 개의 샘플의 경우, 이들 사이의 거리는 (x1 - x2)* (x1 - x2) + (y1 - y2)*(y1 - y2)로서 계산될 수 있다.
ii. 대안적으로, 2 개의 픽셀 사이의 거리는 Abs(x1 - x2) + Abs(y1 - y2)로서 계산될 수 있다.
f. 대안적으로, 현재 샘플에 대해 필터링 프로세스가 디스에이블된다.
g. 대안적으로, ALF에서의 분류 프로세스(예를 들면, 현재 샘플에 대한 구배 계산)는 이용 불가능한 참조 샘플들을 사용하도록 허용되지 않을 수 있다.
18. 이용 불가능한 참조 샘플들의 패딩된 샘플을 어떻게 도출할지는 CTU가 임의의 경계들과 일치하는지 여부에 따라 의존할 수 있다.
a. 일 예에서, 현재 CTU가 어떤 종류의 경계들과도 일치하지 않지만 현재 샘플에 대한 필터링 프로세스(예를 들면, ALF 분류/ALF 필터링 프로세스)가 상이한 비디오 유닛(예를 들면, 슬라이스)에서의 참조 샘플에 액세스할 필요가 있을 때, 글머리 기호 16에 기술된 방법들이 적용될 수 있다.
i. 대안적으로, 게다가, 현재 CTU가 어떤 종류의 경계들과도 일치하지 않지만, 현재 샘플에 대한 필터링 프로세스(예를 들면, ALF 분류/ALF 필터링 프로세스)가 상이한 비디오 유닛(예를 들면, 슬라이스)에서의 참조 샘플에 액세스할 필요가 있고 슬라이스 경계에 걸친 필터링이 허용되지 않을 때, 글머리 기호 16에 기술된 방법들이 적용될 수 있다.
ii. 대안적으로, 게다가, 현재 CTU가 어떤 종류의 경계들과도 일치하지 않지만, 현재 샘플에 대한 필터링 프로세스(예를 들면, ALF 분류/ALF 필터링 프로세스)가 상이한 비디오 유닛(예를 들면, 슬라이스)에서의 참조 샘플 및 동일한 비디오 유닛에서의 참조 샘플에 액세스할 필요가 있고 슬라이스 경계에 걸친 필터링이 허용되지 않을 때, 글머리 기호 16에 기술된 방법들이 적용될 수 있다.
b. 일 예에서, 현재 CTU가 적어도 하나의 종류의 경계와 일치할 때, 통일된 패딩 방법들(예를 들면, 양측 패딩 또는 일측 패딩)이 적용될 수 있다.
i. 대안적으로, 현재 CTU가 다수의 종류의 경계들과 일치하고 해당 경계들에 걸친 필터링이 허용되지 않을 때, 통일된 패딩 방법들(예를 들면, 양측 또는 일측 패딩)이 적용될 수 있다.
c. 일 예에서, 양측 패딩 또는/및 일측 패딩에 의해 패딩될 수 없는 "이용 불가능한" 샘플들만이 글머리 기호 16에 설명된 방법들을 사용하여 패딩될 수 있다.
5. 실시예들
아래의 섹션들에서, VVC 표준의 현재 버전이 개시된 기술의 일부 실시예들을 수용하도록 어떻게 수정되는지의 일부 예들이 설명된다. 새로 추가된 부분들은 굵은 기울임꼴 밑줄친 텍스트로 표시된다. 삭제된 부분들은 [[]]를 사용하여 표시된다.
5.1 실시예 #1
loop_filter_across_bricks_enabled_flag가 1과 동일한 것은 인루프 필터링 동작들이 PPS를 참조하는 픽처들에서 브릭 경계들에 걸쳐 수행될 수 있다는 것을 지정한다. loop_filter_across_bricks_enabled_flag가 0과 동일한 것은 인루프 필터링 동작들이 PPS를 참조하는 픽처들에서 브릭 경계들에 걸쳐 수행되지 않는다는 것을 지정한다. 인루프 필터링 동작들은 디블로킹 필터, 샘플 적응 오프셋 필터[[ 및 적응 루프 필터]] 동작들을 포함한다. 존재하지 않을 때, loop_filter_across_bricks_enabled_flag의 값은 1과 동일한 것으로 추론된다.
loop_filter_across_slices_enabled_flag가 1과 동일한 것은 인루프 필터링 동작들이 PPS를 참조하는 픽처들에서 슬라이스 경계들에 걸쳐 수행될 수 있다는 것을 지정한다. loop_filter_across_slice_enabled_flag가 0과 동일한 것은 인루프 필터링 동작들이 PPS를 참조하는 픽처들에서 슬라이스 경계들에 걸쳐 수행되지 않는다는 것을 지정한다. 인루프 필터링 동작들은 디블로킹 필터, 샘플 적응 오프셋 필터[[ 및 적응 루프 필터]] 동작들을 포함한다. 존재하지 않을 때, loop_filter_across_slices_enabled_flag의 값은 0과 동일한 것으로 추론된다.
5.2 실시예 #2
도 21은 픽처에서의 CTU들의 프로세싱을 도시한다. 도 19와 비교한 차이점들이 파선 라인들로 강조 표시되어 있다.
5.3 실시예 #3
8.8.5.2 루마 샘플들에 대한 코딩 트리 블록 필터링 프로세스
이 프로세스의 입력들은 다음과 같다:
- 적응 루프 필터링 프로세스 이전의 재구성된 루마 픽처 샘플 어레이 recPictureL,
- 필터링된 재구성된 루마 픽처 샘플 어레이 alfPictureL,
- 현재 픽처의 좌측 상단 샘플에 상대적인 현재 루마 코딩 트리 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCtb, yCtb ).
이 프로세스의 출력은 수정된 필터링된 재구성된 루마 픽처 샘플 어레이 alfPictureL이다.
8.8.5.3 절에서의 필터 인덱스에 대한 도출 프로세스는 위치 ( xCtb, yCtb ) 및 재구성된 루마 픽처 샘플 어레이 recPictureL을 입력들로 하고, filtIdx[ x ][ y ] 및 transposeIdx[ x ][ y ], 단 x, y = 0..CtbSizeY - 1을 출력들로 하여 호출된다.
필터링된 재구성된 루마 샘플들 alfPictureL[ x ][ y ]의 도출을 위해, 현재 루마 코딩 트리 블록 recPictureL[ x ][ y ] 내의 각각의 재구성된 루마 샘플은 다음과 같이 필터링되며, 단, x, y = 0..CtbSizeY - 1이다:
- 루마 필터 계수들의 어레이 f[ j ] 및 filtIdx[ x ][ y ]에 의해 명시되는 필터에 대응하는 루마 클리핑 값들의 어레이 c[ j ]는 다음과 같이 도출되며, 단, j = 0..11이다:
- ...
- 루마 필터 계수들 및 클리핑 값 인덱스 idx는 다음과 같이 transposeIdx[ x ][ y ]에 따라 도출된다:
- ...
- 루마 샘플들의 주어진 어레이 recPicture 내의 대응하는 루마 샘플들 ( x, y ) 각각에 대한 위치들 ( hx  + i, vy  + j )(단, i, j = -3..3임)은 다음과 같이 도출된다:
- ...
- 변수 applyVirtualBoundary는 다음과 같이 도출된다:
- 다음 조건들[[ 중 하나 이상]]이 참인 경우, applyVirtualBoundary는 0과 동일하게 설정된다:
- 현재 코딩 트리 블록의 하단 경계는 픽처의 하단 경계이다.
[[- 현재 코딩 트리 블록의 하단 경계는 브릭의 하단 경계이고 loop_filter_across_bricks_enabled_flag는 0과 동일하다.
- 현재 코딩 트리 블록의 하단 경계는 슬라이스의 하단 경계이고 loop_filter_across_slices_enabled_flag는 0과 동일하다.
- 현재 코딩 트리 블록의 하단 경계는 픽처의 하단 가상 경계들 중 하나이며 pps_loop_filter_across_virtual_boundaries_disabled_flag는 1과 동일하다.]]
- 그렇지 않은 경우, applyVirtualBoundary가 1과 동일하게 설정된다.
- 수평 루마 샘플 위치 y 및 applyVirtualBoundary에 따른 재구성된 샘플 오프셋들 r1, r2 및 r3은 표 8-22에 명시되어 있다.
- ...
8.8.5.4 크로마 샘플들에 대한 코딩 트리 블록 필터링 프로세스
이 프로세스의 입력들은 다음과 같다:
- 적응 루프 필터링 프로세스 이전의 재구성된 크로마 픽처 샘플 어레이 recPicture,
- 필터링된 재구성된 크로마 픽처 샘플 어레이 alfPicture,
- 현재 픽처의 좌측 상단 샘플에 상대적인 현재 크로마 코딩 트리 블록의 좌측 상단 샘플을 지정하는 크로마 위치 ( xCtbC, yCtbC ).
이 프로세스의 출력은 수정된 필터링된 재구성된 크로마 픽처 샘플 어레이 alfPicture이다.
현재 크로마 코딩 트리 블록의 폭 및 높이 ctbWidthC 및 ctbHeightC는 다음과 같이 도출된다:
Figure pct00078
Figure pct00079
필터링된 재구성된 크로마 샘플들 alfPicture[ x ][ y ]의 도출을 위해, 현재 크로마 코딩 트리 블록 recPicture[ x ][ y ] 내의 각각의 재구성된 크로마 샘플은 다음과 같이 필터링되며, 단, x = 0..ctbWidthC - 1, y = 0..ctbHeightC - 1이다:
크로마 샘플들의 주어진 어레이 recPicture 내의 대응하는 크로마 샘플들 ( x, y ) 각각에 대한 위치들 ( hx  + i, vy  + j )(단, i, j = -2..2임)은 다음과 같이 도출된다:
- pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 xCtbC + x - PpsVirtualBoundariesPosX[ n ] / SubWidthC가 0보다 크거나 같고 2보다 작은 경우, 다음이 적용된다:
Figure pct00080
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 PpsVirtualBoundariesPosX[ n ] / SubWidthC - xCtbC - x가 0보다 크고 3보다 작은 경우, 다음이 적용된다:
Figure pct00081
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00082
- pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries - 1에 대해 yCtbC + y - PpsVirtualBoundariesPosY[ n ] / SubHeightC가 0보다 크거나 같고 2보다 작은 경우, 다음이 적용된다:
Figure pct00083
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries - 1에 대해 PpsVirtualBoundariesPosY[ n ] / SubHeightC - yCtbC - y가 0보다 크고 3보다 작은 경우, 다음이 적용된다:
Figure pct00084
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00085
- 변수 applyVirtualBoundary는 다음과 같이 도출된다:
- 다음 조건들[[ 중 하나 이상]]이 참인 경우, applyVirtualBoundary는 0과 동일하게 설정된다:
- 현재 코딩 트리 블록의 하단 경계는 픽처의 하단 경계이다.
[[- 현재 코딩 트리 블록의 하단 경계는 브릭의 하단 경계이고 loop_filter_across_bricks_enabled_flag는 0과 동일하다.
- 현재 코딩 트리 블록의 하단 경계는 슬라이스의 하단 경계이고 loop_filter_across_slices_enabled_flag는 0과 동일하다.
- 현재 코딩 트리 블록의 하단 경계는 픽처의 하단 가상 경계들 중 하나이며 pps_loop_filter_across_virtual_boundaries_disabled_flag는 1과 동일하다.]]
- 그렇지 않은 경우, applyVirtualBoundary가 1과 동일하게 설정된다.
- 수평 루마 샘플 위치 y 및 applyVirtualBoundary에 따른 재구성된 샘플 오프셋들 r1 및 r2는 표 8-22에 명시되어 있다.
...
대안적으로, '현재 코딩 트리 블록의 하단 경계가 픽처의 하단 경계라는' 조건은 '현재 코딩 트리 블록의 하단 경계가 픽처의 하단 경계이거나 픽처 외부에 있다는' 것으로 대체될 수 있다.
5.4 실시예 #4
이 실시예는 ALF 분류 프로세스(섹션 4에서의 글머리 기호 7에 대응함)에서 VPDU 영역 아래쪽의 샘플들을 사용하는 것을 허용하지 않는 예를 보여준다.
8.8.5.3 루마 샘플들에 대한 ALF 전치 및 필터 인덱스에 대한 도출 프로세스
이 프로세스의 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 샘플에 상대적인 현재 루마 코딩 트리 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCtb, yCtb ).
- 적응 루프 필터링 프로세스 이전에 재구성된 루마 픽처 샘플 어레이 recPictureL,
이 프로세스의 출력들은 다음과 같다.
- 분류 필터 인덱스 어레이 filtIdx[ x ][ y ], 단, x, y = 0..CtbSizeY - 1,
- 전치 인덱스 어레이 transposeIdx[ x ][ y ], 단, x, y = 0..CtbSizeY - 1.
루마 샘플들의 주어진 어레이 recPicture 내의 대응하는 루마 샘플들 ( x, y ) 각각에 대한 위치들 ( hx  + i, vy  + j )(단, i, j = -2..5임)은 다음과 같이 도출된다:
- pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 xCtb + x - PpsVirtualBoundariesPosX[ n ]이 0보다 크거나 같고 2보다 작은 경우, 다음이 적용된다:
Figure pct00086
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 PpsVirtualBoundariesPosX[ n ]- xCtb - x가 0보다 크고 6보다 작은 경우, 다음이 적용된다:
Figure pct00087
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00088
- pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries - 1에 대해 yCtb + y - PpsVirtualBoundariesPosY[ n ]이 0보다 크거나 같고 2보다 작은 경우, 다음이 적용된다:
Figure pct00089
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries - 1에 대해 PpsVirtualBoundariesPosY[ n ] - yCtb - y가 0보다 크고 6보다 작은 경우, 다음이 적용된다:
Figure pct00090
- 그렇지 않은 경우, 다음이 적용된다:
- yCtb + CtbSizeY가 pic_height_in_luma_samples보다 크거나 같은 경우, 다음이 적용된다:
Figure pct00091
- 그렇지 않고, y가 CtbSizeY - 4보다 작은 경우, 다음이 적용된다:
Figure pct00092
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00093
분류 필터 인덱스 어레이 filtIdx 및 전치 인덱스 어레이 transposeIdx는 다음과 같은 순서의 단계들에 의해 도출된다:
1. 변수들 filtH[ x ][ y ], filtV[ x ][ y ], filtD0[ x ][ y ] 및 filtD1[ x ][ y ], 단, x, y = -2..CtbSizeY + 1이 다음과 같이 도출된다:
- x와 y 둘 모두가 짝수이거나 또는 x와 y 둘 모두가 홀수인 경우, 다음이 적용된다:
Figure pct00094
- 그렇지 않은 경우, filtH[ x ][ y ], filtV[ x ][ y ], filtD0[ x ][ y ] 및 filtD1[ x ][ y ]가 0과 동일하도록 설정된다.
2. 변수들 minY, maxY 및 ac는 다음과 같이 도출된다:
- ( y << 2 )가 ( min(CtbSizeY, 64)-8) [[( CtbSizeY - 8 )]]과 동일하고 ( yCtb + CtbSizeY )가 pic_height_in_luma_samples - 1보다 작은 경우, minY는 -2와 동일하게 설정되고, maxY는 3과 동일하게 설정되며 ac는 96과 동일하게 설정된다.
- 그렇지 않고, ( y << 2 )가 ( min(CtbSizeY, 64)-4) [[( CtbSizeY - 4 )]]과 동일하고 ( yCtb + CtbSizeY )가 pic_height_in_luma_samples - 1보다 작은 경우, minY는 0와 동일하게 설정되고, maxY는 5와 동일하게 설정되며 ac는 96과 동일하게 설정된다.
- 그렇지 않은 경우, minY는 -2와 동일하게 설정되고 maxY는 5와 동일하게 설정되며 ac는 64와 동일하게 설정된다.
3. 변수들 varTempH1[ x ][ y ], varTempV1[ x ][ y ], varTempD01[ x ][ y ], varTempD11[ x ][ y ] 및 varTemp[ x ][ y ], 단, x, y = 0..( CtbSizeY  1 ) >> 2가 다음과 같이 도출된다:
Figure pct00095
Figure pct00096
4. 변수들 dir1[ x ][ y ], dir2[ x ][ y ] 및 dirS[ x ][ y ], 단, x, y = 0..CtbSizeY - 1은 다음과 같이 도출된다:
- 변수들 hv1, hv0 및 dirHV는 다음과 같이 도출된다:
...
- 변수들 d1, d0 및 dirD는 다음과 같이 도출된다:
...
5. 변수들 avgVar[ x ][ y ], 단, x, y = 0..CtbSizeY - 1은 다음과 같이 도출된다:
Figure pct00097
6. 분류 필터 인덱스 어레이 filtIdx[ x ][ y ] 및 전치 인덱스 어레이 transposeIdx[ x ][ y ], 단, x = y = 0..CtbSizeY - 1은 다음과 같이 도출된다:
Figure pct00098
dirS[ x ][ y ]가 0과 동일하지 않을 때, filtIdx[ x ][ y ]는 다음과 같이 수정된다:
Figure pct00099
5.5 실시예 #5
다수의 종류들의 경계들(예를 들면, 슬라이스/브릭 경계, 360도 가상 경계)에 위치하는 샘플들의 경우, 패딩 프로세스는 한 번만 호출된다. 그리고 측면별로 몇 개의 라인들이 패딩되어야 하는지는 경계들에 대한 현재 샘플의 위치에 의존한다.
일 예에서, ALF 양측 패딩 방법이 적용된다. 대안적으로, 게다가, 대칭적인 양측 패딩 방법에서, 샘플이 2 개의 경계, 예를 들면, 위쪽 측면에 있는 하나의 경계 및 아래쪽 측면에 있는 하나의 경계에 있을 때, 도 27에 도시된 바와 같이, 몇 개의 샘플들이 패딩되는지는 보다 가까운 경계에 의해 결정된다. 한편, 분류 정보를 도출할 때, 도 27에서의 2 개의 경계 사이의 4 개의 라인만이 사용된다.
도 26은 4 개의 샘플 라인이 2 개의 경계를 갖는 경우 패딩 방법들의 예를 도시한다. 일 예에서, 도 26에서의 제1 경계는 ALF 가상 경계일 수 있고; 도 25에서의 제2 경계는 슬라이스/타일/브릭 경계 또는 360도 가상 경계일 수 있다.
5.6 실시예 #6
8.8.5.2 루마 샘플들에 대한 코딩 트리 블록 필터링 프로세스
이 프로세스의 입력들은 다음과 같다:
- 적응 루프 필터링 프로세스 이전의 재구성된 루마 픽처 샘플 어레이 recPictureL,
- 필터링된 재구성된 루마 픽처 샘플 어레이 alfPictureL,
- 현재 픽처의 좌측 상단 샘플에 상대적인 현재 루마 코딩 트리 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCtb, yCtb ).
이 프로세스의 출력은 수정된 필터링된 재구성된 루마 픽처 샘플 어레이 alfPictureL이다.
8.8.5.3 절에서의 필터 인덱스에 대한 도출 프로세스는 위치 ( xCtb, yCtb ) 및 재구성된 루마 픽처 샘플 어레이 recPictureL을 입력들로 하고, filtIdx[ x ][ y ] 및 transposeIdx[ x ][ y ], 단 x, y = 0..CtbSizeY - 1을 출력들로 하여 호출된다.
- 루마 샘플들의 주어진 어레이 recPicture 내의 대응하는 루마 샘플들 ( x, y ) 각각에 대한 위치들 ( hx  + i, vy  + j )(단, i, j = -3..3임)은 다음과 같이 도출된다:
- pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 xCtb + x - PpsVirtualBoundariesPosX[ n ]이 0보다 크거나 같고 3보다 작은 경우, 다음이 적용된다:
Figure pct00100
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 PpsVirtualBoundariesPosX[ n ]- xCtb - x가 0보다 크고 4보다 작은 경우, 다음이 적용된다:
Figure pct00101
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00102
-[[ pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries - 1에 대해 yCtb + y  PpsVirtualBoundariesPosY[ n ]이 0보다 크거나 같고 3보다 작은 경우, 다음이 적용된다:
Figure pct00103
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries  1에 대해 PpsVirtualBoundariesPosY[ n ] - yCtb - y가 0보다 크고 4보다 작은 경우, 다음이 적용된다:
Figure pct00104
- [[그렇지 않은 경우]], 다음이 적용된다:
Figure pct00105
- [[변수 applyVirtualBoundary는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, applyVirtualBoundary는 0과 동일하게 설정된다:
- 현재 코딩 트리 블록의 하단 경계는 픽처의 하단 경계이다.
- 현재 코딩 트리 블록의 하단 경계는 브릭의 하단 경계이고 loop_filter_across_bricks_enabled_flag는 0과 동일하다.
- 현재 코딩 트리 블록의 하단 경계는 슬라이스의 하단 경계이고 loop_filter_across_slices_enabled_flag는 0과 동일하다.
- 현재 코딩 트리 블록의 하단 경계는 픽처의 하단 가상 경계들 중 하나이며 pps_loop_filter_across_virtual_boundaries_disabled_flag는 1과 동일하다.
- 그렇지 않은 경우, applyVirtualBoundary가 1과 동일하게 설정된다.]]
- yCtb가 yCtb와 동일하고 y가 y와 동일한 상태에서 8.8.5.5에 명시된 바와 같이 루마 샘플들에 대한 수직 경계 위치 도출 프로세스를 호출하는 것에 의해 변수 boundaryPos1 및 boundaryPos2가 도출된다.
Figure pct00106
Figure pct00107
8.8.5.3 루마 샘플들에 대한 ALF 전치 및 필터 인덱스에 대한 도출 프로세스
이 프로세스의 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 샘플에 상대적인 현재 루마 코딩 트리 블록의 좌측 상단 샘플을 지정하는 루마 위치( xCtb, yCtb ).
- 적응 루프 필터링 프로세스 이전의 재구성된 루마 픽처 샘플 어레이 recPictureL.
이 프로세스의 출력들은 다음과 같다.
- 분류 필터 인덱스 어레이 filtIdx[ x ][ y ], 단, x, y = 0..CtbSizeY - 1,
- 전치 인덱스 어레이 transposeIdx[ x ][ y ], 단, x, y = 0..CtbSizeY - 1.
루마 샘플들의 주어진 어레이 recPicture 내의 대응하는 루마 샘플들 ( x, y ) 각각에 대한 위치들 ( hx  + i, vy  + j )(단, i, j = -2..5임)은 다음과 같이 도출된다:
- pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 xCtb + x - PpsVirtualBoundariesPosX[ n ]이 0보다 크거나 같고 2보다 작은 경우, 다음이 적용된다:
Figure pct00108
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 PpsVirtualBoundariesPosX[ n ]- xCtb - x가 0보다 크고 6보다 작은 경우, 다음이 적용된다:
Figure pct00109
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00110
-[[ pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries - 1에 대해 yCtb + y  PpsVirtualBoundariesPosY[ n ]이 0보다 크거나 같고 2보다 작은 경우, 다음이 적용된다:
Figure pct00111
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries - 1에 대해 PpsVirtualBoundariesPosY[ n ] - yCtb - y가 0보다 크고 6보다 작은 경우, 다음이 적용된다:
Figure pct00112
- 그렇지 않은 경우, 다음이 적용된다:
- yCtb + CtbSizeY가 pic_height_in_luma_samples보다 크거나 같은 경우, 다음이 적용된다:
Figure pct00113
- 그렇지 않고, y가 CtbSizeY - 4보다 작은 경우, 다음이 적용된다:
Figure pct00114
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00115
- yCtb가 yCtb와 동일하고 y가 y와 동일한 상태에서 8.8.5.5에 명시된 바와 같이 루마 샘플들에 대한 수직 경계 위치 도출 프로세스를 호출하는 것에 의해 변수 boundaryPos1 및 boundaryPos2가 도출된다.
-boundaryPos1이 -1과 동일하고 boundaryPos2가 -1과 동일한 경우, 다음이 적용된다:
Figure pct00116
- 그렇지 않고, boundaryPos1이 -1과 동일하지 않고 boundaryPos2가 -1과 동일한 경우, 다음이 적용된다:
- y가 boundaryPos1보다 작은 경우, 다음이 적용된다:
Figure pct00117
- 그렇지 않고, y가 boundaryPos1보다 크거나 같은 경우, 다음이 적용된다:
Figure pct00118
- 그렇지 않은 경우(boundaryPos1이 -1과 동일하지 않고 boundaryPos2가 -1과 동일하지 않은 경우), 다음이 적용된다:
- y가 boundaryPos1보다 작은 경우, 다음이 적용된다:
Figure pct00119
- 그렇지 않고, y가 boundaryPos2보다 크거나 같은 경우, 다음이 적용된다:
Figure pct00120
- 그렇지 않은 경우(y가 boundaryPos1보다 크고 boundaryPos2보다 작거나 같은 경우), 다음이 적용된다:
Figure pct00121
분류 필터 인덱스 어레이 filtIdx 및 전치 인덱스 어레이 transposeIdx는 다음과 같은 순서의 단계들에 의해 도출된다:
1. 변수들 filtH[ x ][ y ], filtV[ x ][ y ], filtD0[ x ][ y ] 및 filtD1[ x ][ y ], 단, x, y =  2..CtbSizeY + 1이 다음과 같이 도출된다:
- x와 y 둘 모두가 짝수이거나 또는 x와 y 둘 모두가 홀수인 경우, 다음이 적용된다:
Figure pct00122
- 그렇지 않은 경우, filtH[ x ][ y ], filtV[ x ][ y ], filtD0[ x ][ y ] 및 filtD1[ x ][ y ]가 0과 동일하도록 설정된다.
2. 변수들 minY, maxY 및 ac는 다음과 같이 도출된다:
- ( y << 2 )가 ( CtbSizeY - 8 )과 동일하고 ( yCtb + CtbSizeY )가 pic_height_in_luma_samples - 1보다 작은 경우, minY는 2와 동일하게 설정되고, maxY는 3과 동일하게 설정되며 ac는 96과 동일하게 설정된다.
- 그렇지 않고, ( y << 2 )가 ( CtbSizeY - 4 )와 동일하고 ( yCtb + CtbSizeY )가 pic_height_in_luma_samples - 1보다 작은 경우, minY는 0와 동일하게 설정되고, maxY는 5와 동일하게 설정되며 ac는 96과 동일하게 설정된다.
- yCtb가 yCtb와 동일하고 y가 y와 동일한 상태에서 8.8.5.5에 명시된 바와 같이 루마 샘플들에 대한 수직 경계 위치 도출 프로세스를 호출하는 것에 의해 변수 boundaryPos1 및 boundaryPos2가 도출된다.
- boundaryPos1이 -1과 동일하지 않고 boundaryPos2가 -1과 동일한 경우, 다음이 적용된다:
- y가 boundaryPos1 - 4와 동일한 경우, minY는 -2와 동일하게 설정되고, maxY는 3과 동일하게 설정되며, ac는 96과 동일하게 설정된다.
- 그렇지 않고, y가 boundaryPos1과 동일한 경우, minY는 0과 동일하게 설정되고, maxY는 5와 동일하게 설정되며, ac는 96과 동일하게 설정된다.
- 그렇지 않은 경우, minY는 -2와 동일하게 설정되고 maxY는 5와 동일하게 설정되며 ac는 64와 동일하게 설정된다.
- 그렇지 않고, boundaryPos1이 -1과 동일하지 않고 boundaryPos2가 -1과 동일하지 않은 경우, 다음이 적용된다:
- y가 boundaryPos1 - 4와 동일한 경우, minY는 -2와 동일하게 설정되고, maxY는 3과 동일하게 설정되며, ac는 96과 동일하게 설정된다.
- 그렇지 않고, y가 boundaryPos2와 동일한 경우, minY는 0과 동일하게 설정되고, maxY는 5와 동일하게 설정되며, ac는 96과 동일하게 설정된다.
- 그렇지 않고, y가 boundaryPos1과 동일하고 boundaryPos2가 boundaryPos2 + 8보다 크거나 같은 경우, minY는 0과 동일하게 설정되고, maxY는 5와 동일하게 설정되며, ac는 96과 동일하게 설정된다.
- 그렇지 않고, y가 boundaryPos1과 동일하고 boundaryPos2가 boundaryPos2 + 4와 동일한 경우, minY는 0과 동일하게 설정되고, maxY는 3과 동일하게 설정되며, ac는 128과 동일하게 설정된다.
- 그렇지 않고, y가 boundaryPos2 - 4와 동일하고 boundaryPos2가 boundaryPos2 + 8보다 크거나 같은 경우, minY는 -2와 동일하게 설정되고, maxY는 3과 동일하게 설정되며, ac는 96과 동일하게 설정된다.
- 그렇지 않은 경우, minY는 -2와 동일하게 설정되고 maxY는 5와 동일하게 설정되며 ac는 64와 동일하게 설정된다.
- 그렇지 않은 경우(boundaryPos1이 -1과 동일하고 boundaryPos2가 -1과 동일한 경우), minY는 -2와 동일하게 설정되고 maxY는 5와 동일하게 설정되며 ac는 64와 동일하게 설정된다.
- [[그렇지 않은 경우, minY는 -2와 동일하게 설정되고 maxY는 5와 동일하게 설정되며 ac는 64와 동일하게 설정된다.]]
3. 변수들 sumH[ x ][ y ], sumV[ x ][ y ], sumD0[ x ][ y ], sumD1[ x ][ y ] 및 sumOfHV[ x ][ y ](단, x, y = 0..( CtbSizeY - 1 ) >> 2)는 다음과 같이 도출된다:
Figure pct00123
...
8.8.5.4 크로마 샘플들에 대한 코딩 트리 블록 필터링 프로세스
이 프로세스의 입력들은 다음과 같다:
- 적응 루프 필터링 프로세스 이전의 재구성된 크로마 픽처 샘플 어레이 recPicture,
- 필터링된 재구성된 크로마 픽처 샘플 어레이 alfPicture,
- 현재 픽처의 좌측 상단 샘플을 기준으로 현재 크로마 코딩 트리 블록의 좌측 상단 샘플을 지정하는 크로마 위치 ( xCtbC, yCtbC ).
이 프로세스의 출력은 수정된 필터링된 재구성된 크로마 픽처 샘플 어레이 alfPicture이다.
현재 크로마 코딩 트리 블록의 폭 및 높이 ctbWidthC 및 ctbHeightC는 다음과 같이 도출된다:
Figure pct00124
필터링된 재구성된 크로마 샘플들 alfPicture[ x ][ y ]의 도출을 위해, 현재 크로마 코딩 트리 블록 recPicture[ x ][ y ] 내의 각각의 재구성된 크로마 샘플은 다음과 같이 필터링되며, 단, x = 0..ctbWidthC - 1, y = 0..ctbHeightC - 1이다:
- 크로마 샘플들의 주어진 어레이 recPicture 내의 대응하는 크로마 샘플들 ( x, y ) 각각에 대한 위치들 ( hx  + i, vy  + j )(단, i, j = -2..2임)은 다음과 같이 도출된다:
- pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 xCtbC + x - PpsVirtualBoundariesPosX[ n ] / SubWidthC가 0보다 크거나 같고 2보다 작은 경우, 다음이 적용된다:
Figure pct00125
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_ver_virtual_boundaries - 1에 대해 PpsVirtualBoundariesPosX[ n ] / SubWidthC - xCtbC - x가 0보다 크고 3보다 작은 경우, 다음이 적용된다:
Figure pct00126
- 그렇지 않은 경우, 다음이 적용된다:
Figure pct00127
- [[pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries - 1에 대해 yCtbC + y  PpsVirtualBoundariesPosY[ n ] / SubHeightC가 0보다 크거나 같고 2보다 작은 경우, 다음이 적용된다:
Figure pct00128
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n = 0..pps_num_hor_virtual_boundaries  1에 대해 PpsVirtualBoundariesPosY[ n ] / SubHeightC - yCtbC - y가 0보다 크고 3보다 작은 경우, 다음이 적용된다:
Figure pct00129
- 그렇지 않은 경우]], 다음이 적용된다:
Figure pct00130
- [[변수 applyVirtualBoundary는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, applyVirtualBoundary는 0과 동일하게 설정된다:
- 현재 코딩 트리 블록의 하단 경계는 픽처의 하단 경계이다.
- 현재 코딩 트리 블록의 하단 경계는 브릭의 하단 경계이고 loop_filter_across_bricks_enabled_flag는 0과 동일하다.
- 현재 코딩 트리 블록의 하단 경계는 슬라이스의 하단 경계이고 loop_filter_across_slices_enabled_flag는 0과 동일하다.
- 현재 코딩 트리 블록의 하단 경계는 픽처의 하단 가상 경계들 중 하나이며 pps_loop_filter_across_virtual_boundaries_disabled_flag는 1과 동일하다.
- 그렇지 않은 경우, applyVirtualBoundary가 1과 동일하게 설정된다.]]
- yCtb가 yCtb와 동일하고 y가 y와 동일한 상태에서 8.8.5.5에 명시된 바와 같이 루마 샘플들에 대한 수직 경계 위치 도출 프로세스를 호출하는 것에 의해 변수 boundaryPos1 및 boundaryPos2가 도출된다.
- 변수 boundaryPos1은 boundaryPos1 / SubWidthC와 동일하게 설정된다.
- 변수 boundaryPos2는 boundaryPos2 / SubWidthC와 동일하게 설정된다.
- 수평 루마 샘플 위치 y 및 applyVirtualBoundary에 따른 재구성된 샘플 오프셋들 r1 및 r2는 표 8-24에 명시되어 있다.
- 변수 curr은 다음과 같이 도출된다:
Figure pct00131
- 크로마 필터 계수들의 어레이 f[ j ] 및 크로마 클리핑 값들의 어레이 c[ j ]는 다음과 같이 도출되고, 단, j = 0..5이다:
Figure pct00132
- 변수 sum은 다음과 같이 도출된다
Figure pct00133
- 수정된 필터링된 재구성된 크로마 픽처 샘플 alfPicture[ xCtbC + x ][ yCtbC + y ]는 다음과 같이 도출된다:
- pcm_loop_filter_disabled_flag 및 pcm_flag[ ( xCtbC + x ) * SubWidthC ][ ( yCtbC + y ) * SubHeightC ] 둘 모두가 1과 동일한 경우, 다음이 적용된다:
Figure pct00134
- 그렇지 않은 경우(pcm_loop_filter_disabled_flag가 0과 동일하거나 pcm_flag[ x ][ y ]가 0과 동일한 경우), 다음이 적용된다:
Figure pct00135
Figure pct00136
Figure pct00137
8.8.5.5 루마 샘플들에 대한 수직 경계 위치 도출 프로세스
이 프로세스의 입력들은 다음과 같다:
- 현재 픽처의 좌측 상단 샘플을 기준으로 현재 루마 코딩 트리 블록의 좌측 상단 샘플의 수직 위치를 지정하는 루마 위치 yCtb.
- 현재 루마 코딩 트리 블록의 좌측 상단 샘플을 기준으로 현재 픽셀의 수직 위치를 지정하는 루마 위치 y.
이 프로세스의 출력은 다음과 같다.
- 위쪽 수직 경계 위치 boundaryPos1.
- 아래쪽 수직 경계 위치 boundaryPos2.
- 변수 boundaryPos1는 다음과 같이 도출된다:
- 변수 boundaryPos1는 -1과 동일하게 설정된다.
- pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n =  0..pps _ num _ hor _virtual_boundaries - 1에 대해 yCtb + y  PpsVirtualBoundariesPosY[ n ]이 0보다 크거나 같고 3보다 작은 경우, 다음이 적용된다:
Figure pct00138
- 그렇지 않고, pps_loop_filter_across_virtual_boundaries_disabled_flag가 1과 동일하고 임의의 n =  0..pps _ num _ hor _virtual_boundaries - 1에 대해 PpsVirtualBoundariesPosY[ n ]  yCtb  y가 0보다 크고 4보다 작은 경우, 다음이 적용된다:
Figure pct00139
- 변수 boundaryPos2는 다음과 같이 도출된다:
- 변수 boundaryPos2는 -1과 동일하게 설정된다.
- 현재 코딩 트리 블록의 하단 경계가 브릭의 하단 경계이고 loop_filter_across_bricks_enabled_flag가 0과 동일한 경우, 다음이 적용된다:
- CtbSizeY - y가 4보다 작은 경우, 변수 boundaryPos2는 CtbSizeY와 동일하게 설정된다.
- 그렇지 않고, 현재 코딩 트리 블록의 하단 경계가 슬라이스의 하단 경계이고 loop_filter_across_slices_enabled_flag가 0과 동일한 경우, 다음이 적용된다:
- CtbSizeY - y가 4보다 작은 경우, 변수 boundaryPos2는 CtbSizeY와 동일하게 설정된다.
- 그렇지 않고, 현재 코딩 트리 블록의 상단 경계가 브릭의 상단 경계이고 loop_filter_across_bricks_enabled_flag가 0과 동일한 경우, 다음이 적용된다:
- y가 3보다 작은 경우, 변수 boundaryPos2는 0과 동일하게 설정된다.
- 그렇지 않고, 현재 코딩 트리 블록의 상단 경계가 슬라이스의 상단 경계이고 loop_filter_across_slices_enabled_flag가 0과 동일한 경우, 다음이 적용된다:
- y가 3보다 작은 경우, 변수 boundaryPos2는 0과 동일하게 설정된다.
- 변수 boundaryPos1이 -1과 동일한 경우, 다음이 적용된다:
- 변수 boundaryPos1은 boundaryPos2와 동일하다.
- 변수 boundaryPos2는 -1과 동일하다.
- 변수 applyVirtualBoundary는 다음과 같이 도출된다:
- 다음 조건들 중 하나 이상이 참인 경우, applyVirtualBoundary는 0과 동일하게 설정된다:
- 현재 코딩 트리 블록의 하단 경계는 픽처의 하단 경계이다.
- 그렇지 않은 경우, applyVirtualBoundary가 1과 동일하게 설정된다.
- applyVirtualBoundary가 1과 동일한 경우, 다음이 적용된다:
- boundaryPos1이 -1과 동일한 경우, boundaryPos1은 CtbSizeY - 4와 동일하게 설정된다.
- 그렇지 않고, boundaryPos2가 -1과 동일한 경우, boundaryPos2는 CtbSizeY - 4와 동일하게 설정된다.
- boundaryPos1이 -1과 동일하지 않고 boundaryPos1이 -1과 동일하지 않은 경우 , 다음이 적용된다:
- boundaryPos1이 boundaryPos2와 동일한 경우, boundaryPos2는 -1과 동일하게 설정된다.
- 그렇지 않고, boundaryPos1이 boundaryPos2보다 큰 경우, 다음이 적용된다:
- 변수 tmpPos는 boundaryPos2와 동일하게 설정된다.
- 변수 boundaryPos2는 boundaryPos1과 동일하게 설정된다.
변수 boundaryPos1은 tmpPos와 동일하게 설정된다.
5.7 실시예 #7
CTU의 경우, 이는 어떠한 경계들(예를 들면, 픽처/슬라이스/타일/브릭/서브픽처 경계)과도 일치하지 않을 수 있다. 그렇지만, 이는 현재 유닛(예를 들면, 픽처/슬라이스/타일/브릭/서브픽처) 외부의 샘플들에 액세스할 필요가 있을 수 있다. 슬라이스 경계에 걸친 필터링이 디스에이블된 경우(예를 들면, loop_filter_across_slices_enabled_flag가 거짓인 경우), 현재 유닛 외부에 샘플을 패딩할 필요가 있다.
예를 들어, 도 28에서의 샘플(2801)(루마 샘플을 예로 듦)의 경우, ALF 필터링 프로세스에서 사용되는 샘플들은 도 29에서와 같이 패딩될 수 있다.
도 22는 비디오 프로세싱 장치(2200)의 블록 다이어그램이다. 장치(2200)는 본 명세서에 설명된 방법들 중 하나 이상을 구현하는 데 사용될 수 있다. 장치(2200)는 스마트폰, 태블릿, 컴퓨터, IoT(Internet of Things) 수신기 등에 구체화될 수 있다. 장치(2200)는 하나 이상의 프로세서(2202), 하나 이상의 메모리(2204) 및 비디오 프로세싱 하드웨어(2206)를 포함할 수 있다. 프로세서(들)(2202)는 본 문서에 설명된 하나 이상의 방법을 구현하도록 구성될 수 있다. 메모리(메모리들)(2204)는 본 명세서에 설명된 방법들 및 기술들을 구현하는 데 사용되는 데이터 및 코드를 저장하는 데 사용될 수 있다. 비디오 프로세싱 하드웨어(2206)는, 하드웨어 회로로, 본 문서에 설명된 일부 기술들을 구현하는 데 사용될 수 있다. 일부 실시예들에서, 비디오 프로세싱 하드웨어(2206)는 프로세서들(2202)(예를 들어, 그래픽 처리 유닛) 내부에 있을 수 있다.
일부 실시예들에서, 비디오 코딩 방법들은 도 22와 관련하여 설명된 바와 같이 하드웨어 플랫폼 상에서 구현되는 장치를 사용하여 구현될 수 있다.
도 23은 예시적인 비디오 프로세싱 방법(2300)의 플로차트이다. 이 방법은, 비디오의 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환을 위해, 변환 동안 사용할 하나 이상의 보간 필터를 결정하는 단계(2302) - 하나 이상의 보간 필터는 비디오에 대한 다수의 보간 필터들로부터의 것임 - 및 하나 이상의 보간 필터를 사용하여 변환을 수행하는 단계(2304)를 포함한다.
본 문서에 설명된 다양한 해결책들 및 실시예들은 해결책들의 리스트를 사용하여 더 설명된다.
섹션 4, 항목 1은 이하의 해결책들의 추가적인 예들을 제공한다.
1. 비디오 프로세싱 방법으로서, 비디오 픽처의 비디오 블록들과 그의 비트스트림 표현 간의 변환을 수행하는 단계를 포함하며, 비디오 블록들은 코딩 트리 블록들의 논리적 그룹화들을 사용하여 프로세싱되고, 코딩 트리 블록들은 하단 코딩 트리 블록의 하단 경계가 비디오 픽처의 하단 경계 외부에 있는지 여부에 기초하여 프로세싱되는, 방법.
2. 해결책 1의 방법으로서, 코딩 트리 블록을 프로세싱하는 단계는 코딩 트리 블록 내의 샘플들을 사용하여 코딩 트리 블록의 샘플 값들의 적응 루프 필터링을 수행하는 단계를 포함하는, 방법.
3. 해결책 1의 방법으로서, 코딩 트리 블록을 프로세싱하는 단계는 가상 경계들에 따라 코딩 트리 블록을 2 개의 부분으로 분할하는 것을 디스에이블시키는 것에 의해 코딩 트리 블록의 샘플 값들의 적응 루프 필터링을 수행하는 단계를 포함하는, 방법.
섹션 4, 항목 2는 이하의 해결책들의 추가적인 예들을 제공한다.
4. 비디오 프로세싱 방법으로서, 현재 비디오 블록의 코딩 트리 블록의 조건에 기초하여, 인루프 필터링 동안 가상 샘플들의 사용 상태를 결정하는 단계; 및 가상 샘플들의 사용 상태에 따라 비디오 블록과 비디오 블록의 비트스트림 표현 간의 변환을 수행하는 단계를 포함하는, 방법.
5. 해결책 4의 방법으로서, 사용 상태의 논리적 참 값은 현재 비디오 블록이 가상 경계에 의해 적어도 2 개의 부분으로 분할되고 한 부분에서의 샘플들을 필터링하는 것이 다른 부분으로부터의 정보를 활용하도록 허용되지 않는다는 것을 나타내는, 방법.
6. 해결책 4의 방법으로서, 사용 상태의 논리적 참 값은 가상 샘플들이 인루프 필터링 동안 사용된다는 것을 나타내고, 인루프 필터링은 현재 비디오 블록의 재구성된 샘플들의 수정된 값들을 사용하여 수행되는, 방법.
7. 해결책 4의 방법으로서, 사용 상태의 논리적 거짓 값은 블록에서의 샘플들을 필터링하는 것이 동일한 블록에서의 정보를 활용하도록 허용된다는 것을 나타내는, 방법.
8. 해결책 4의 방법으로서, 사용 상태의 논리적 참 값은 인루프 필터링이 재구성된 샘플들을 더 수정하지 않고 현재 비디오 블록의 재구성된 샘플들에 대해 수행된다는 것을 나타내는, 방법.
9. 해결책 4 내지 해결책 8 중 어느 하나의 방법으로서, 조건은 코딩 트리 블록이 특정 크기를 갖는 것으로 인해 사용 상태를 논리적 거짓 값으로 설정하도록 지정하는, 방법.
10. 해결책 4 내지 해결책 8 중 어느 하나의 방법으로서, 조건은 코딩 트리 블록이 특정 크기보다 큰 크기를 갖는 것으로 인해 사용 상태를 논리적 거짓 값으로 설정하도록 지정하는, 방법.
11. 해결책 4 내지 해결책 8 중 어느 하나의 방법으로서, 트리 블록이 특정 크기보다 작은 크기를 갖는
섹션 4, 항목 3은 이하의 해결책들의 추가적인 예들을 제공한다.
12. 해결책 5의 방법으로서, 조건은 현재 비디오 블록의 하단 경계가 비디오 픽처보다 작은 비디오 유닛의 하단 경계인지 또는 현재 비디오 블록의 하단 경계가 가상 경계인지에 의존하는, 방법.
13. 해결책 12의 방법으로서, 조건은 현재 비디오 블록의 하단 경계가 슬라이스 또는 타일 또는 브릭 경계의 하단 경계인지 여부에 의존하는, 방법.
14. 해결책 12의 방법으로서, 조건은 현재 비디오 블록의 하단 경계가 슬라이스 또는 타일 또는 브릭 경계의 하단 경계일 때 사용 상태를 논리적 참 값으로 설정하도록 지정하는, 방법.
15. 해결책 4 내지 해결책 12의 방법으로서, 조건은 현재 비디오 블록의 하단 경계가 픽처 경계의 하단 경계이거나 픽처 경계의 하단 경계 외부에 있을 때 사용 상태를 논리적 거짓 값으로 설정하도록 지정하는, 방법.
섹션 4, 항목 4는 이하의 해결책들의 추가적인 예들을 제공한다.
16. 비디오 프로세싱 방법으로서, 하나 이상의 비디오 슬라이스 또는 비디오 브릭으로 논리적으로 그룹화되는 비디오 픽처와 비디오 픽처의 비트스트림 표현 간의 변환 동안, 적응 루프 필터 프로세스에서 다른 슬라이스 또는 브릭 내의 샘플들의 사용을 디스에이블시키기로 결정하는 단계; 및 결정에 따라 변환을 수행하는 단계를 포함하는, 방법.
섹션 4, 항목 5는 이하의 해결책들의 추가적인 예들을 제공한다.
17. 비디오 프로세싱 방법으로서, 비디오 픽처의 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환 동안, 현재 비디오 블록이 비디오 픽처의 비디오 유닛의 경계에 위치하는 샘플들을 포함한다고 결정하는 단계; 및 결정에 기초하여 변환을 수행하는 단계를 포함하며, 변환을 수행하는 단계는 비디오 픽처 내의 모든 경계 유형들에 대해 동일한 통일된 방법을 사용하여 인루프 필터링 프로세스를 위한 가상 샘플들을 생성하는 단계를 포함하는, 방법.
18. 해결책 17의 방법으로서, 비디오 유닛은 슬라이스 또는 타일 또는 360도 비디오인, 방법.
19. 해결책 17의 방법으로서, 인루프 필터링은 적응 루프 필터링을 포함하는, 방법.
20. 해결책 17 내지 해결책 19 중 어느 하나의 방법으로서, 통일된 방법은 양측 패딩 방법인, 방법.
21. 해결책 17 내지 해결책 20 중 어느 하나의 방법으로서, 통일된 방법은 제1 라인 아래의 샘플들에 액세스하는 것이 허용되지 않고 패딩이 제1 라인 아래의 샘플들에 대한 가상 샘플들을 생성하는 데 활용될 때, 제2 라인 위의 샘플들에 액세스하는 것이 또한 허용되지 않도록 설정되고 패딩이 제2 라인 위의 샘플들에 대한 가상 샘플들을 생성하는 데 활용되는 것인, 방법.
22. 해결책 17 내지 해결책 20 중 어느 하나의 방법으로서, 통일된 방법은 제1 라인 위의 샘플들에 액세스하는 것이 허용되지 않고 패딩이 제1 라인 위의 샘플들에 대한 가상 샘플들을 생성하는 데 활용될 때, 제2 라인 아래의 샘플들에 액세스하는 것이 또한 허용되지 않도록 설정되고 패딩이 제2 라인 아래의 샘플들에 대한 가상 샘플들을 생성하는 데 활용되는 것인, 방법.
23. 해결책 21 또는 해결책 22의 방법으로서, 제1 라인과 필터링될 현재 샘플이 위치하는 현재 라인 사이의 거리와 제2 라인과 제1 라인 사이의 거리는 동일한, 방법.
섹션 4, 항목 6은 이하의 해결책들의 추가적인 예들을 제공한다.
24. 비디오 프로세싱 방법으로서, 비디오 픽처의 현재 비디오 블록과 그의 비트스트림 표현 간의 변환 동안, 변환 동안 비디오 픽처에 대해 이용 가능한 다수의 적응 루프 필터(ALF) 샘플 선택 방법들 중 하나를 적용하기로 결정하는 단계; 및 다수의 ALF 샘플 선택 방법들 중 하나를 적용하는 것에 의해 변환을 수행하는 단계를 포함하는, 방법.
25. 해결책 24의 방법으로서, 다수의 ALF 샘플 선택 방법들은 변환 동안 인루프 필터가 현재 비디오 블록에 적용되기 전에 샘플들이 선택되는 제1 방법 및 변환 동안 인루프 필터가 현재 비디오 블록에 적용된 후에 샘플들이 선택되는 제2 방법을 포함하는, 방법.
섹션 4, 항목 7은 이하의 해결책들의 추가적인 예들을 제공한다.
26. 비디오 프로세싱 방법으로서, 경계 규칙에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환 동안 비디오 픽처의 현재 비디오 블록의 샘플들에 대해 인루프 필터링 동작을 수행하는 단계 - 경계 규칙은 비디오 픽처의 가상 파이프라인 데이터 유닛(VPDU)에 걸쳐 있는 샘플들을 사용하는 것을 디스에이블시킴 -, 및 인루프 필터링 동작의 결과를 사용하여 변환을 수행하는 단계를 포함하는, 방법.
27. 해결책 26의 방법으로서, VPDU는 고정된 크기를 갖는 비디오 픽처의 영역에 대응하는, 방법.
28. 해결책 26 또는 해결책 27의 방법으로서, 경계 규칙은 디스에이블된 샘플들 대신에 인루프 필터링을 위해 가상 샘플들을 사용하도록 더 지정하는, 방법.
29. 해결책 28의 방법으로서, 가상 샘플들은 패딩에 의해 생성되는, 방법.
섹션 4, 항목 8은 이하의 해결책들의 추가적인 예들을 제공한다.
30. 비디오 프로세싱 방법으로서, 경계 규칙에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환 동안 비디오 픽처의 현재 비디오 블록의 샘플들에 대해 인루프 필터링 동작을 수행하는 단계 - 경계 규칙은, 비디오 유닛 경계에 걸쳐 있는 현재 비디오 블록의 위치들에 대해, 패딩을 사용하지 않고 생성되는 샘플들을 사용하도록 지정함 -; 및 인루프 필터링 동작의 결과를 사용하여 변환을 수행하는 단계를 포함하는, 방법.
31. 해결책 30의 방법으로서, 샘플들이 양측 패딩 기술을 사용하여 생성되는, 방법.
32. 해결책 30의 방법으로서, 인루프 필터링 동작은 인루프 필터링 동작 동안 대칭적으로 위치한 샘플들에 대해 동일한 가상 샘플 생성 기술을 사용하는 것을 포함하는, 방법.
33. 해결책 30 내지 해결책 32 중 어느 하나의 방법으로서, 현재 비디오 블록의 샘플들에 대한 인루프 필터링 동작은 인루프 필터링을 적용하기 전에 현재 비디오 블록의 샘플들의 리셰이핑을 수행하는 것을 포함하는, 방법.
섹션 4, 항목 9는 이하의 해결책들의 추가적인 예들을 제공한다.
34. 비디오 프로세싱 방법으로서, 경계 규칙에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환 동안 비디오 픽처의 현재 비디오 블록의 샘플들에 대해 인루프 필터링 동작을 수행하는 단계 - 경계 규칙은, 인루프 필터링 동작을 위해, 인루프 필터링 동안 사용되는 현재 비디오 블록의 샘플들이 비디오 픽처의 비디오 유닛의 경계에 걸쳐 있지 않도록 하는 치수들을 갖는 필터를 선택하는 것을 지정함 -; 및 인루프 필터링 동작의 결과를 사용하여 변환을 수행하는 단계를 포함하는, 방법.
섹션 4, 항목 10은 이하의 해결책들의 추가적인 예들을 제공한다.
35. 비디오 프로세싱 방법으로서, 경계 규칙에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환 동안 비디오 픽처의 현재 비디오 블록의 샘플들에 대해 인루프 필터링 동작을 수행하는 단계 - 경계 규칙은, 인루프 필터링 동작을 위해, 패딩된 샘플들이 인루프 필터링에 필요한지 여부에 기초하여 클리핑 파라미터들 또는 필터 계수들을 선택하는 것을 지정함 -; 및 인루프 필터링 동작의 결과를 사용하여 변환을 수행하는 단계를 포함하는, 방법.
36. 해결책 35의 방법으로서, 클리핑 파라미터들 또는 필터 계수들은 비트스트림 표현에 포함되는, 방법.
섹션 4, 항목 11은 이하의 해결책들의 추가적인 예들을 제공한다.
37. 비디오 프로세싱 방법으로서, 경계 규칙에 기초하여, 현재 비디오 블록과 현재 비디오 블록의 비트스트림 표현 간의 변환 동안 비디오 픽처의 현재 비디오 블록의 샘플들에 대해 인루프 필터링 동작을 수행하는 단계 - 경계 규칙은 현재 비디오 블록의 컬러 성분 아이덴티티에 의존함 -; 및 인루프 필터링 동작의 결과를 사용하여 변환을 수행하는 단계를 포함하는, 방법.
38. 해결책 37의 방법으로서, 경계 규칙이 루마 및/또는 상이한 컬러 성분들에 대해 상이한, 방법.
39. 해결책 1 내지 해결책 38 중 어느 하나의 방법으로서, 변환은 현재 비디오 블록을 비트스트림 표현으로 인코딩하는 것을 포함하는, 방법.
40. 해결책 1 내지 해결책 38 중 어느 하나의 방법으로서, 변환은 현재 비디오 블록의 샘플 값들을 생성하기 위해 비트스트림 표현을 디코딩하는 것을 포함하는, 방법.
41. 해결책 1 내지 해결책 38 중 어느 하나 이상에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 인코딩 장치.
42. 해결책 1 내지 해결책 38 중 어느 하나 이상에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 디코딩 장치.
43. 코드가 저장된 컴퓨터 판독 가능 매체로서, 코드는, 프로세서에 의한 실행 시에, 프로세서로 하여금 해결책 1 내지 해결책 38 중 어느 하나 이상에 기재된 방법을 구현하게 하는, 컴퓨터 판독 가능 매체.
도 30은 본 명세서에 개시된 다양한 기술들이 구현될 수 있는 예시적인 비디오 프로세싱 시스템(3000)을 도시하는 블록 다이어그램이다. 다양한 구현들은 시스템(3000)의 컴포넌트들의 일부 또는 전부를 포함할 수 있다. 시스템(3000)은 비디오 콘텐츠를 수신하기 위한 입력(3002)을 포함할 수 있다. 비디오 콘텐츠는 원시 또는 압축되지 않은 포맷, 예를 들면, 8 또는 10 비트 다중 성분 픽셀 값들로 수신될 수 있거나, 또는 압축된 또는 인코딩된 포맷으로 되어 있을 수 있다. 입력(3002)은 네트워크 인터페이스, 주변기기 버스 인터페이스, 또는 스토리지 인터페이스를 나타낼 수 있다. 네트워크 인터페이스의 예들은 이더넷, PON(passive optical network) 등과 같은 유선 인터페이스들 및 Wi-Fi 또는 셀룰러 인터페이스들과 같은 무선 인터페이스들을 포함한다.
시스템(3000)은 본 문서에 설명된 다양한 코딩 또는 인코딩 방법들을 구현할 수 있는 코딩 컴포넌트(3004)를 포함할 수 있다. 코딩 컴포넌트(3004)는 비디오의 코딩된 표현을 생성하기 위해 입력(3002)으로부터 코딩 컴포넌트(3004)의 출력으로의 비디오의 평균 비트레이트를 감소시킬 수 있다. 따라서 코딩 기술들은 때때로 비디오 압축 또는 비디오 트랜스코딩 기술들이라고 불린다. 코딩 컴포넌트(3004)의 출력은, 컴포넌트(3006)에 의해 표현된 바와 같이, 저장되거나 연결된 통신을 통해 전송될 수 있다. 입력(3002)에 수신되는 비디오의 저장된 또는 통신된 비트스트림(또는 코딩된) 표현은 디스플레이 인터페이스(3010)로 송신되는 픽셀 값들 또는 디스플레이 가능한 비디오를 생성하기 위해 컴포넌트(3008)에 의해 사용될 수 있다. 비트스트림 표현으로부터 사용자가 볼 수 있는 비디오를 생성하는 프로세스는 때때로 비디오 압축 해제라고 불린다. 게다가, 특정 비디오 프로세싱 동작들이 "코딩" 동작들 또는 툴들이라고 지칭되지만, 코딩 툴들 또는 동작들이 인코더에서 사용되고 코딩의 결과들을 반대로 행하는 대응하는 디코딩 툴들 또는 동작들은 디코더에 의해 수행될 것임이 이해될 것이다.
주변기기 버스 인터페이스 또는 디스플레이 인터페이스의 예들은 USB(universal serial bus) 또는 HDMI(high definition multimedia interface) 또는 Displayport 등을 포함할 수 있다. 스토리지 인터페이스들의 예들은 SATA(serial advanced technology attachment), PCI, IDE 인터페이스 등을 포함한다. 본 문서에서 설명되는 기술들은 디지털 데이터 프로세싱 및/또는 비디오 디스플레이를 수행할 수 있는 모바일 폰들, 랩톱들, 스마트폰들 또는 다른 디바이스들과 같은 다양한 전자 디바이스들에서 구체화될 수 있다.
도 31은 본 기술에 따른 비디오 프로세싱 방법(3100)의 플로차트 표현이다. 방법(3100)은, 동작(3110)에서, 비디오의 비디오 픽처에 있는 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 적응적 루프 필터 프로세스에서 현재 샘플에 대한 비디오 픽처의 다수의 비디오 영역들의 경계들에 걸쳐 위치하는 제1 샘플 세트를 패딩하는 방식을 결정하는 단계를 포함한다. 방법(3100)은, 동작(3120)에서, 결정에 따라 변환을 수행하는 단계를 또한 포함한다.
일부 실시예들에서, 적응적 루프 필터 프로세싱은 샘플들의 분류 또는 샘플들의 필터링을 포함한다. 일부 실시예들에서, 비디오 영역은 슬라이스, 브릭, 타일, 또는 서브픽처를 포함한다. 일부 실시예들에서, 방식은 제1 샘플 세트의 값들이 현재 샘플의 동일한 비디오 영역 내에 위치하는 제2 샘플 세트의 값들로 패딩된다는 것을 지정한다.
일부 실시예들에서, 제2 샘플 세트의 위치들은 수직 좌표들이 현재 샘플의 동일한 비디오 영역 내에 위치하는 가장 가까운 위치들을 획득하기 위해 수평 방향을 따라 제1 샘플 세트의 수직 좌표들을 클리핑하는 것에 기초하여 결정된다. 일부 실시예들에서, 제2 샘플 세트의 위치들은 수평 좌표들이 현재 샘플의 동일한 비디오 영역 내에 위치하는 가장 가까운 위치들을 획득하기 위해 수직 방향을 따라 제1 샘플 세트의 수평 좌표들을 선택적으로 클리핑하는 것에 기초하여 더 결정된다.
일부 실시예들에서, 제2 샘플 세트의 위치들은 수평 좌표들이 현재 샘플의 동일한 비디오 영역 내에 위치하는 가장 가까운 위치들을 획득하기 위해 수직 방향을 따라 제1 샘플 세트의 수평 좌표들을 클리핑하는 것에 기초하여 결정된다. 일부 실시예들에서, 제2 샘플 세트의 위치들은 수직 좌표들이 현재 샘플의 동일한 비디오 영역 내에 위치하는 가장 가까운 위치들을 획득하기 위해 수평 방향을 따라 제1 샘플 세트의 수직 좌표들을 선택적으로 클리핑하는 것에 기초하여 더 결정된다.
일부 실시예들에서, 제2 샘플 세트의 위치들은 현재 샘플의 동일한 비디오 영역 내에 위치하는 가장 가까운 위치들을 획득하기 위해 수평 방향 및 수직 방향 둘 모두를 따라 제1 샘플 세트의 위치들을 클리핑하는 것에 기초하여 결정된다. 일부 실시예들에서, 제1 샘플 세트 내의 샘플은 위치 (x1, y1)에 있고 샘플은 위치 (x2, y2)로 클리핑된다. 수평 방향을 따른 거리는 |x1-x2|로서 표기된다. 수직 방향을 따른 거리는 |y1-y2|로서 표기된다. 2 개의 위치 사이의 거리는 |x1-x2|+|y1-y2| 또는 (x1-x2)2+(y1-y2)2로서 표기된다.
일부 실시예들에서, 방식은 현재 샘플의 필터링이 디스에이블된다는 것을 지정한다. 일부 실시예들에서, 방식은 샘플들의 분류에서 제1 샘플 세트의 사용이 허용되지 않는다는 것을 지정한다. 일부 실시예들에서, 방식이 블록에 적용 가능한지 여부는 블록이 다수의 비디오 영역들의 경계와 일치하는지 여부에 기초한다. 일부 실시예들에서, 블록이 다수의 비디오 영역들의 어떠한 경계들과도 일치하지 않고 제1 샘플 세트의 샘플이 적응적 루프 필터 프로세스에서 필요한 경우에 방식이 블록에 적용 가능하다. 일부 실시예들에서, 방식은 (1) 블록이 다수의 비디오 영역들의 어떠한 경계들과도 일치하지 않고, (2) 적응적 루프 필터 프로세스에서 제1 샘플 세트의 샘플이 필요하며, (3) 제1 샘플 세트의 필터링이 허용되지 않는 경우에 블록에 적용 가능하다. 일부 실시예들에서, 방식은 (1) 블록이 다수의 비디오 영역들의 어떠한 경계들과 일치하지 않고, (2) 적응적 루프 필터 프로세스에서 제1 샘플 세트의 샘플이 필요하며, (3) 적응적 루프 필터 프로세스에서 블록의 동일한 비디오 영역 내에 위치하는 다른 샘플이 필요하고, (4) 제1 샘플 세트의 필터링이 허용되지 않는 경우에 블록에 적용 가능하다. 일부 실시예들에서, 비디오 영역은 슬라이스이다.
일부 실시예들에서, 패딩된 샘플들이 경계의 양쪽 측면들로부터의 샘플들을 사용하여 생성되는 대칭 패딩 방식은 제1 샘플 세트에 적용 가능하지 않다. 일부 실시예들에서, 패딩된 샘플들이 경계의 단일 측면으로부터의 샘플들을 사용하여 생성되는 일측 패딩 방식은 제1 샘플 세트에 적용 가능하지 않다.
도 32는 본 기술에 따른 비디오 프로세싱 방법(3200)의 플로차트 표현이다. 방법(3200)은, 동작(3210)에서, 비디오의 비디오 픽처에 있는 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 블록이 비디오 픽처의 다수의 비디오 영역들의 적어도 하나의 유형의 경계와 일치하는 경우에 적응적 루프 필터 프로세스에서 블록의 현재 샘플에 대한 샘플들을 생성하는 균일 패딩 동작을 결정하는 단계를 포함한다. 방법(3200)은, 동작(3220)에서, 결정에 기초하여 변환을 수행하는 단계를 또한 포함한다.
일부 실시예들에서, 균일 패딩 프로세스는 경계의 단일 측면을 따라 샘플들을 사용하는 것을 포함한다. 일부 실시예들에서, 균일 패딩 프로세스는 경계의 양쪽 측면들을 따라 샘플들을 사용하는 것을 포함한다. 일부 실시예들에서, 블록이 다수의 유형의 경계들과 일치하고 비디오 픽처의 다수의 비디오 영역들의 경계들에 걸쳐 위치하는 샘플들의 필터링이 디스에이블되는 경우에 균일 패딩 동작이 블록에 적용된다.
도 33은 본 기술에 따른 비디오 프로세싱 방법(3400)의 플로차트 표현이다. 방법(3300)은, 동작(3310)에서, 비디오의 비디오 픽처에 있는 블록과 비디오의 비트스트림 표현 사이의 변환을 위해, 다수의 비디오 영역들의 두 가지 유형의 경계들 사이에 위치하는 현재 샘플에 대한 적응적 루프 필터 프로세스에서 패딩 동작이 호출되는 방식을 결정하는 단계를 포함한다. 두 가지 유형의 경계들 중 하나는 360도 가상 경계를 포함한다. 방법(3300)은, 동작(3320)에서, 결정에 따라 변환을 수행하는 단계를 또한 포함한다.
일부 실시예들에서, 방식은 패딩 동작이 적응적 루프 필터 프로세스에서 한 번만 호출된다는 것을 지정한다. 일부 실시예들에서, 패딩 동작은 패딩된 샘플들이 경계의 양쪽 측면들로부터의 샘플들을 사용하여 생성되는 대칭 패딩 동작을 포함한다. 일부 실시예들에서, 패딩 동작은 패딩된 샘플들이 경계의 단일 측면으로부터의 샘플들을 사용하여 생성되는 일측 패딩 동작을 포함한다.
일부 실시예들에서, 방식은 패딩 동작이 순서에 따라 적응적 루프 필터 프로세스에서 적어도 하나의 다른 패딩 동작과 함께 호출된다는 것을 지정한다. 일부 실시예들에서, 패딩 동작은 적어도 하나의 다른 패딩 동작 이전에 적용된다. 패딩 동작은 패딩된 샘플들이 경계의 단일 측면으로부터의 샘플들을 사용하여 생성되는 일측 패딩 동작을 포함하고, 여기서 적어도 하나의 다른 패딩 동작은 패딩된 샘플들이 경계의 양쪽 측면들로부터의 샘플들을 사용하여 생성되는 대칭 패딩 동작을 포함한다. 일부 실시예들에서, 패딩 동작 이후의 패딩된 샘플들은 적어도 하나의 다른 패딩 동작에서 이용 가능한 샘플들로서 사용된다.
일부 실시예들에서, 두 가지 유형의 경계들 중 다른 유형이 다수의 비디오 영역들의 적응적 루프 필터 가상 경계 또는 실제 경계를 포함하는 경우에, 방식은 패딩 동작이 패딩된 샘플들이 경계의 양쪽 측면들로부터의 샘플들을 사용하여 생성되는 대칭 패딩 동작만을 포함한다는 것을 지정한다. 일부 실시예들에서, 2 가지 유형의 경계들 중 다른 유형이 비디오 픽처의 실제 경계를 포함하는 경우에, 방식은 패딩 동작이 패딩된 샘플들이 경계의 단일 측면으로부터의 샘플들을 사용하여 생성되는 일측 패딩 동작만을 포함한다는 것을 지정한다. 일부 실시예들에서, 두 가지 유형의 경계들 중 하나가 블록과 일치하지 않는 경우에, 방식은 패딩 동작이 패딩된 샘플들이 경계의 양쪽 측면들로부터의 샘플들을 사용하여 생성되는 대칭 패딩 동작만을 포함한다는 것을 지정한다. 일부 실시예들에서, 방식은 패딩 동작이 패딩된 샘플들이 경계의 양쪽 측면들로부터의 샘플들을 사용하여 생성되는 대칭 패딩 동작만을 포함한다는 것을 지정한다.
일부 실시예들에서, 변환은 비디오를 비트스트림 표현으로 인코딩하는 것을 포함한다. 일부 실시예들에서, 변환은 비트스트림 표현을 비디오로 디코딩하는 것을 포함한다.
전술한 내용으로부터, 현재 개시된 기술의 특정 실시예들이 예시 목적으로 본 명세서에 설명되었지만, 본 발명의 범위를 벗어나지 않고 다양한 수정들이 이루어질 수 있다는 것이 이해될 것이다. 그에 따라, 현재 개시된 기술은 첨부된 청구항들에 의한 경우를 제외하고는 제한되지 않는다.
개시된 기술의 일부 실시예들은 비디오 프로세싱 툴 또는 모드를 인에이블시키기로 의사 결정 또는 결정하는 것을 포함한다. 예에서, 비디오 프로세싱 툴 또는 모드가 인에이블될 때, 인코더는 비디오 블록의 프로세싱에서 툴 또는 모드를 사용하거나 구현할 것이지만, 툴 또는 모드의 사용에 기초하여 결과적인 비트스트림을 반드시 수정하는 것은 아닐 수 있다. 즉, 비디오 블록으로부터 비디오의 비트스트림 표현으로의 변환은 의사 결정 또는 결정에 기초하여 비디오 프로세싱 툴 또는 모드가 인에이블될 때 이를 사용할 것이다. 다른 예에서, 비디오 프로세싱 툴 또는 모드가 인에이블될 때, 디코더는 비디오 프로세싱 툴 또는 모드에 기초하여 비트스트림이 수정되었다는 지식을 사용하여 비트스트림을 프로세싱할 것이다. 즉, 비디오의 비트스트림 표현으로부터 비디오 블록으로의 변환은 의사 결정 또는 결정에 기초하여 인에이블된 비디오 프로세싱 툴 또는 모드를 사용하여 수행될 것이다.
개시된 기술의 일부 실시예들은 비디오 프로세싱 툴 또는 모드를 디스에이블시키기로 의사 결정 또는 결정하는 것을 포함한다. 예에서, 비디오 프로세싱 툴 또는 모드가 디스에이블될 때, 인코더는 비디오 블록을 비디오의 비트스트림 표현으로 변환하는 데 툴 또는 모드를 사용하지 않을 것이다. 다른 예에서, 비디오 프로세싱 툴 또는 모드가 디스에이블될 때, 디코더는 의사 결정 또는 결정에 기초하여 인에이블된 비디오 프로세싱 툴 또는 모드를 사용하여 비트스트림이 수정되지 않았다는 지식을 사용하여 비트스트림을 프로세싱할 것이다.
본 특허 문서에 설명된 주제 및 기능적 동작들의 구현들은, 본 명세서에 개시된 구조들 및 이들의 구조적 등가물들을 포함한, 다양한 시스템들, 디지털 전자 회로로, 또는 컴퓨터 소프트웨어, 펌웨어, 또는 하드웨어로, 또는 이들 중 하나 이상의 조합들로 구현될 수 있다. 본 명세서에 설명된 주제의 구현들은 하나 이상의 컴퓨터 프로그램 제품, 예를 들면, 데이터 프로세싱 장치에 의해 실행하기 위한 또는 데이터 프로세싱 장치의 동작을 제어하기 위한, 유형적(tangible)이고 비일시적인 컴퓨터 판독 가능 매체 상에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독 가능 매체는 머신 판독 가능 저장 디바이스, 머신 판독 가능 저장 기판, 메모리 디바이스, 머신 판독 가능 전파 신호를 실현하는 조성물(composition of matter), 또는 이들 중 하나 이상의 조합일 수 있다. "데이터 프로세싱 유닛" 또는 “데이터 프로세싱 장치"라는 용어는, 예로서, 프로그래밍 가능 프로세서, 컴퓨터, 또는 다수의 프로세서들 또는 컴퓨터들을 포함한, 데이터를 프로세싱하기 위한 모든 장치들, 디바이스들, 및 머신들을 포괄한다. 장치는, 하드웨어 외에도, 문제의 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들면, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은, 컴파일되는(compiled) 또는 인터프리트되는(interpreted) 언어들을 포함한, 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 독립형 프로그램(stand-alone program)으로서 또는 모듈, 컴포넌트, 서브루틴 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛으로서를 포함한, 임의의 형태로 배포(deploy)될 수 있다. 컴퓨터 프로그램이 파일 시스템에서의 파일에 반드시 대응하는 것은 아니다. 프로그램은 다른 프로그램들 또는 데이터(예를 들면, 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일 부분에, 문제의 프로그램에 전용된 단일 파일에, 또는 다수의 통합 파일들(coordinated files)(예를 들면, 하나 이상의 모듈, 서브 프로그램(sub program), 또는 코드 부분(portion of code)을 저장하는 파일들)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터에서 또는 하나의 사이트에 위치하거나 다수의 사이트들에 걸쳐 분산되고 통신 네트워크에 의해 상호연결되는 다수의 컴퓨터들에서 실행되도록 배포될 수 있다.
본 명세서에 설명된 프로세스들 및 논리 흐름들은 입력 데이터에 대해 작동하여 출력을 생성하는 것에 의해 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능 프로세서에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들이 또한 특수 목적 로직 회로, 예를 들면, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있고, 장치가 또한 이들로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는, 예로서, 범용 및 특수 목적 마이크로프로세서들 둘 모두, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소들은 명령어들을 수행하기 위한 프로세서 및 명령어들과 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들면, 자기, 자기 광학 디스크, 또는 광학 디스크를 포함할 것이거나, 또는 이들로부터 데이터를 수신하거나 이들로 데이터를 전송하도록 동작 가능하게 결합될 수 있거나, 또는 둘 모두일 것이다. 그렇지만, 컴퓨터가 그러한 디바이스들을 가질 필요는 없다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 매체는 모든 형태들의 비휘발성 메모리, 매체 및, 예로서, 반도체 메모리 디바이스들, 예를 들면, EPROM, EEPROM 및 플래시 메모리 디바이스들을 포함한, 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로에 의해 보완되거나 그에 통합될 수 있다.
본 명세서가, 도면과 함께, 단지 예시적인 것으로 간주되어야 하며, 여기서 예시적인은 예를 의미하는 것으로 의도된다. 본 명세서에서 사용되는 바와 같이, "또는"의 사용은, 문맥이 명확하게 달리 나타내지 않는 한, "및/또는"을 포함하는 것으로 의도된다.
본 특허 문서가 많은 구체적 사항들을 포함하지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 것의 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 특정 발명들의 특정 실시예들에 특정적일 수 있는 특징들에 대한 설명으로서 해석되어야 한다. 개별 실시예들의 맥락에서 본 특허 문서에 설명되는 특정 특징들이 또한 단일 실시예에서 조합하여 구현될 수 있다. 이와 달리, 단일 실시예의 맥락에서 설명되는 다양한 특징들이 또한 다수의 실시예들에서 개별적으로 또는 임의의 적합한 하위 조합으로 구현될 수 있다. 더욱이, 특징들이 특정 조합들로 기능하는 것으로 위에서 설명되고 심지어 처음에 그 자체로서 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징이 일부 경우에 그 조합으로부터 제거될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면에서 특정의 순서로 묘사되지만, 이것은, 바람직한 결과를 달성하기 위해, 그러한 동작들이 도시된 특정의 순서로 또는 순차적 순서로 수행되어야 하거나, 모든 예시된 동작들이 수행되어야 하는 것을 요구하는 것으로 이해되어서는 안된다. 더욱이, 본 특허 문서에 설명된 실시예들에서 다양한 시스템 컴포넌트들의 분리가 모든 실시예들에서 그러한 분리를 요구하는 것으로서 이해되어서는 안된다.
단지 몇 가지 구현들 및 예들이 설명되고 다른 구현들, 향상들 및 변형들이 이 특허 문서에 설명되고 예시된 것에 기초하여 이루어질 수 있다.

Claims (38)

  1. 비디오 프로세싱 방법으로서,
    비디오의 비디오 픽처에 있는 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 위해, 적응적 루프 필터 프로세스에서 현재 샘플에 대한 상기 비디오 픽처의 다수의 비디오 영역들의 경계들에 걸쳐 위치하는 제1 샘플 세트를 패딩하는 방식을 결정하는 단계; 및
    상기 결정에 따라 상기 변환을 수행하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 적응적 루프 필터 프로세싱은 샘플들의 분류 또는 샘플들의 필터링을 포함하는, 방법.
  3. 제1항 또는 제2항에 있어서, 비디오 영역은 슬라이스, 브릭, 타일, 또는 서브픽처를 포함하는, 방법.
  4. 제1항 내지 제3항 중 어느 하나 이상의 항에 있어서, 상기 방식은 상기 제1 샘플 세트의 값들이 상기 현재 샘플의 동일한 비디오 영역 내에 위치하는 제2 샘플 세트의 값들로 패딩된다는 것을 지정하는, 방법.
  5. 제4항에 있어서, 상기 제2 샘플 세트의 위치들은
    수직 좌표들이 상기 현재 샘플의 동일한 비디오 영역 내에 위치하는 가장 가까운 위치들을 획득하기 위해 수평 방향을 따라 상기 제1 샘플 세트의 수직 좌표들을 클리핑하는 것에 기초하여 결정되는, 방법.
  6. 제5항에 있어서, 상기 제2 샘플 세트의 상기 위치들은
    수평 좌표들이 상기 현재 샘플의 동일한 비디오 영역 내에 위치하는 가장 가까운 위치들을 획득하기 위해 수직 방향을 따라 상기 제1 샘플 세트의 수평 좌표들을 선택적으로 클리핑하는 것에 기초하여 더 결정되는, 방법.
  7. 제4항에 있어서, 상기 제2 샘플 세트의 위치들은
    수평 좌표들이 상기 현재 샘플의 동일한 비디오 영역 내에 위치하는 가장 가까운 위치들을 획득하기 위해 수직 방향을 따라 상기 제1 샘플 세트의 수평 좌표들을 클리핑하는 것에 기초하여 결정되는, 방법.
  8. 제7항에 있어서, 상기 제2 샘플 세트의 상기 위치들은
    수직 좌표들이 상기 현재 샘플의 동일한 비디오 영역 내에 위치하는 가장 가까운 위치들을 획득하기 위해 수평 방향을 따라 상기 제1 샘플 세트의 수직 좌표들을 선택적으로 클리핑하는 것에 기초하여 더 결정되는, 방법.
  9. 제4항에 있어서, 상기 제2 샘플 세트의 위치들은
    상기 현재 샘플의 동일한 비디오 영역 내에 위치하는 가장 가까운 위치들을 획득하기 위해 수평 방향 및 수직 방향 둘 모두를 따라 상기 제1 샘플 세트의 위치들을 클리핑하는 것에 기초하여 결정되는, 방법.
  10. 제5항 내지 제9항 중 어느 하나 이상의 항에 있어서, 상기 제1 샘플 세트 내의 샘플은 위치 (x1, y1)에 있고 상기 샘플은 위치 (x2, y2)로 클리핑되며, 상기 수평 방향을 따른 거리는 |x1-x2|로서 표기되고, 상기 수직 방향을 따른 거리는 |y1-y2|로서 표기되며, 2 개의 위치 사이의 거리는 |x1-x2|+|y1-y2| 또는 (x1-x2)2+(y1-y2)2로서 표기되는, 방법.
  11. 제1항 내지 제3항 중 어느 하나 이상의 항에 있어서, 상기 방식은 상기 현재 샘플의 필터링이 디스에이블된다는 것을 지정하는, 방법.
  12. 제1항 내지 제3항 중 어느 하나 이상의 항에 있어서, 상기 방식은 상기 샘플들의 분류에서 상기 제1 샘플 세트의 사용이 허용되지 않는다는 것을 지정하는, 방법.
  13. 제1항 내지 제12항 중 어느 하나 이상의 항에 있어서, 상기 방식이 상기 블록에 적용 가능한지 여부는 상기 블록이 상기 다수의 비디오 영역들의 경계와 일치하는지 여부에 기초하는, 방법.
  14. 제13항에 있어서, 상기 블록이 상기 다수의 비디오 영역들의 어떠한 경계들과도 일치하지 않고 상기 제1 샘플 세트의 샘플이 상기 적응적 루프 필터 프로세스에서 필요한 경우에 상기 방식이 상기 블록에 적용 가능한, 방법.
  15. 제13항에 있어서, 상기 방식은 (1) 상기 블록이 상기 다수의 비디오 영역들의 어떠한 경계들과도 일치하지 않고, (2) 상기 적응적 루프 필터 프로세스에서 상기 제1 샘플 세트의 샘플이 필요하며, (3) 상기 제1 샘플 세트의 필터링이 허용되지 않는 경우에 상기 블록에 적용 가능한, 방법.
  16. 제13항에 있어서, 상기 방식은 (1) 상기 블록이 상기 다수의 비디오 영역들의 어떠한 경계들과 일치하지 않고, (2) 상기 적응적 루프 필터 프로세스에서 상기 제1 샘플 세트의 샘플이 필요하며, (3) 상기 적응적 루프 필터 프로세스에서 상기 블록의 동일한 비디오 영역 내에 위치하는 다른 샘플이 필요하고, (4) 상기 제1 샘플 세트의 필터링이 허용되지 않는 경우에 상기 블록에 적용 가능한, 방법.
  17. 제13항 내지 제16항 중 어느 하나 이상의 항에 있어서, 상기 비디오 영역은 슬라이스인, 방법.
  18. 제1항 내지 제17항 중 어느 하나 이상의 항에 있어서, 패딩된 샘플들이 경계의 양쪽 측면들로부터의 샘플들을 사용하여 생성되는 대칭 패딩 방식은 상기 제1 샘플 세트에 적용 가능하지 않은, 방법.
  19. 제1항 내지 제17항 중 어느 하나 이상의 항에 있어서, 패딩된 샘플들이 경계의 단일 측면으로부터의 샘플들을 사용하여 생성되는 일측 패딩 방식은 상기 제1 샘플 세트에 적용 가능하지 않은, 방법.
  20. 비디오 프로세싱 방법으로서,
    비디오의 비디오 픽처에 있는 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 위해, 상기 블록이 상기 비디오 픽처의 다수의 비디오 영역들의 적어도 하나의 유형의 경계와 일치하는 경우에 적응적 루프 필터 프로세스에서 상기 블록의 현재 샘플에 대한 샘플들을 생성하는 균일 패딩 동작을 결정하는 단계; 및
    상기 결정에 기초하여 상기 변환을 수행하는 단계
    를 포함하는, 방법.
  21. 제20항에 있어서, 상기 균일 패딩 프로세스는 경계의 단일 측면을 따라 샘플들을 사용하는 것을 포함하는, 방법.
  22. 제20항에 있어서, 상기 균일 패딩 프로세스는 경계의 양쪽 측면들을 따라 샘플들을 사용하는 것을 포함하는, 방법.
  23. 제20항 내지 제22항 중 어느 하나 이상의 항에 있어서, 상기 블록이 다수의 유형의 경계들과 일치하고 상기 비디오 픽처의 상기 다수의 비디오 영역들의 경계들에 걸쳐 위치하는 샘플들의 필터링이 디스에이블되는 경우에 상기 균일 패딩 동작이 상기 블록에 적용되는, 방법.
  24. 비디오 프로세싱 방법으로서,
    비디오의 비디오 픽처에 있는 블록과 상기 비디오의 비트스트림 표현 사이의 변환을 위해, 다수의 비디오 영역들의 두 가지 유형의 경계들 사이에 위치하는 현재 샘플에 대한 적응적 루프 필터 프로세스에서 패딩 동작이 호출되는 방식을 결정하는 단계 - 상기 두 가지 유형의 경계들 중 하나는 360도 가상 경계를 포함함 -; 및
    상기 결정에 따라 상기 변환을 수행하는 단계
    를 포함하는, 방법.
  25. 제24항에 있어서, 상기 방식은 상기 패딩 동작이 상기 적응적 루프 필터 프로세스에서 한 번만 호출된다는 것을 지정하는, 방법.
  26. 제25항에 있어서, 상기 패딩 동작은 패딩된 샘플들이 경계의 양쪽 측면들로부터의 샘플들을 사용하여 생성되는 대칭 패딩 동작을 포함하는, 방법.
  27. 제25항에 있어서, 상기 패딩 동작은 패딩된 샘플들이 경계의 단일 측면으로부터의 샘플들을 사용하여 생성되는 일측 패딩 동작을 포함하는, 방법.
  28. 제24항에 있어서, 상기 방식은 상기 패딩 동작이 순서에 따라 상기 적응적 루프 필터 프로세스에서 적어도 하나의 다른 패딩 동작과 함께 호출된다는 것을 지정하는, 방법.
  29. 제28항에 있어서, 상기 패딩 동작은 상기 적어도 하나의 다른 패딩 동작 이전에 적용되고, 상기 패딩 동작은 패딩된 샘플들이 경계의 단일 측면으로부터의 샘플들을 사용하여 생성되는 일측 패딩 동작을 포함하며, 상기 적어도 하나의 다른 패딩 동작은 패딩된 샘플들이 경계의 양쪽 측면들로부터의 샘플들을 사용하여 생성되는 대칭 패딩 동작을 포함하는, 방법.
  30. 제29항에 있어서, 상기 패딩 동작 이후의 패딩된 샘플들은 상기 적어도 하나의 다른 패딩 동작에서 이용 가능한 샘플들로서 사용되는, 방법.
  31. 제24항에 있어서, 상기 두 가지 유형의 경계들 중 다른 유형이 상기 다수의 비디오 영역들의 적응적 루프 필터 가상 경계 또는 실제 경계를 포함하는 경우에, 상기 방식은 상기 패딩 동작이 패딩된 샘플들이 경계의 양쪽 측면들로부터의 샘플들을 사용하여 생성되는 대칭 패딩 동작만을 포함한다는 것을 지정하는, 방법.
  32. 제24항에 있어서, 상기 두 가지 유형의 경계들 중 다른 유형이 상기 비디오 픽처의 실제 경계를 포함하는 경우에, 상기 방식은 상기 패딩 동작이 패딩된 샘플들이 경계의 단일 측면으로부터의 샘플들을 사용하여 생성되는 일측 패딩 동작만을 포함한다는 것을 지정하는, 방법.
  33. 제24항에 있어서, 상기 두 가지 유형의 경계들 중 하나가 상기 블록과 일치하지 않는 경우에, 상기 방식은 상기 패딩 동작이 패딩된 샘플들이 경계의 양쪽 측면들로부터의 샘플들을 사용하여 생성되는 대칭 패딩 동작만을 포함한다는 것을 지정하는, 방법.
  34. 제24항에 있어서, 상기 방식은 상기 패딩 동작이 패딩된 샘플들이 경계의 양쪽 측면들로부터의 샘플들을 사용하여 생성되는 대칭 패딩 동작만을 포함한다는 것을 지정하는, 방법.
  35. 제1항 내지 제34항 중 어느 하나 이상의 항에 있어서, 상기 변환은 상기 비디오를 상기 비트스트림 표현으로 인코딩하는 것을 포함하는, 방법.
  36. 제1항 내지 제34항 중 어느 하나 이상의 항에 있어서, 상기 변환은 상기 비트스트림 표현을 상기 비디오로 디코딩하는 것을 포함하는, 방법.
  37. 제1항 내지 제36항 중 어느 하나 이상의 항에 기재된 방법을 구현하도록 구성된 프로세서를 포함하는 비디오 프로세싱 장치.
  38. 코드가 저장되어 있는 컴퓨터 판독 가능 매체로서, 상기 코드는, 프로세서에 의한 실행 시에, 상기 프로세서로 하여금 제1항 내지 제36항 중 어느 하나 이상의 항에 기재된 방법을 구현하게 하는, 컴퓨터 판독 가능 매체.
KR1020227000151A 2019-07-11 2020-07-13 적응적 루프 필터링에서의 샘플 패딩 KR102648121B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CNPCT/CN2019/095657 2019-07-11
CN2019095657 2019-07-11
PCT/CN2020/101589 WO2021004542A1 (en) 2019-07-11 2020-07-13 Sample padding in adaptive loop filtering

Publications (2)

Publication Number Publication Date
KR20220030991A true KR20220030991A (ko) 2022-03-11
KR102648121B1 KR102648121B1 (ko) 2024-03-18

Family

ID=74114384

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227000151A KR102648121B1 (ko) 2019-07-11 2020-07-13 적응적 루프 필터링에서의 샘플 패딩

Country Status (11)

Country Link
US (2) US11589042B2 (ko)
EP (1) EP3984223A4 (ko)
JP (2) JP7291845B2 (ko)
KR (1) KR102648121B1 (ko)
CN (2) CN117939170A (ko)
AU (1) AU2020309130B2 (ko)
BR (1) BR112022000542A2 (ko)
CA (1) CA3146773A1 (ko)
MX (1) MX2022000123A (ko)
WO (1) WO2021004542A1 (ko)
ZA (1) ZA202200537B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113994671B (zh) 2019-06-14 2024-05-10 北京字节跳动网络技术有限公司 基于颜色格式处理视频单元边界和虚拟边界
KR20220020268A (ko) 2019-06-14 2022-02-18 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 유닛 경계들 및 가상 경계들의 처리
JP7291846B2 (ja) 2019-07-09 2023-06-15 北京字節跳動網絡技術有限公司 適応ループフィルタリングのためのサンプル決定
WO2021004542A1 (en) 2019-07-11 2021-01-14 Beijing Bytedance Network Technology Co., Ltd. Sample padding in adaptive loop filtering
EP3984219A4 (en) 2019-07-15 2022-08-17 Beijing Bytedance Network Technology Co., Ltd. CLASSIFICATION IN AN ADAPTIVE LOOP FILTERING
MX2022000987A (es) * 2019-07-25 2022-10-28 Hfi Innovation Inc Metodo y aparato de filtrado de bucle adaptativo de componentes cruzados con limite virtual para codificacion de video.
CN114430902B (zh) 2019-09-22 2023-11-10 北京字节跳动网络技术有限公司 自适应环路滤波中的填充过程
JP7326600B2 (ja) 2019-09-27 2023-08-15 北京字節跳動網絡技術有限公司 異なるビデオユニット間の適応ループフィルタリング
JP7454042B2 (ja) 2019-10-10 2024-03-21 北京字節跳動網絡技術有限公司 適応ループ・フィルタリングにおける利用可能でないサンプル位置でのパディング・プロセス
MX2022006734A (es) 2019-12-11 2022-06-09 Beijing Bytedance Network Tech Co Ltd Relleno de muestra para filtrado de circuito adaptivo de componente cruzado.
CN116325728A (zh) 2020-06-30 2023-06-23 抖音视界有限公司 自适应环路滤波的边界位置
US20220394309A1 (en) * 2021-05-20 2022-12-08 Lemon Inc. On Padding Methods For Neural Network-Based In-Loop Filter
WO2023090198A1 (ja) * 2021-11-19 2023-05-25 シャープ株式会社 動画像符号化装置、動画像復号装置
WO2024002168A1 (en) * 2022-06-28 2024-01-04 Douyin Vision (Beijing) Co., Ltd. Padding methods for adaptive loop filter in video coding

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130272624A1 (en) * 2012-04-11 2013-10-17 Texas Instruments Incorporated Virtual Boundary Processing Simplification for Adaptive Loop Filtering (ALF) in Video Coding
US20190166363A1 (en) * 2017-11-28 2019-05-30 Qualcomm Incorporated Line buffer reduction for adaptive loop filtering in video coding

Family Cites Families (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7558320B2 (en) 2003-06-13 2009-07-07 Microsoft Corporation Quality control in frame interpolation with motion analysis
CN101207812B (zh) 2007-12-10 2010-04-07 海信集团有限公司 一种视频环路滤波方法
US10123050B2 (en) 2008-07-11 2018-11-06 Qualcomm Incorporated Filtering video data using a plurality of filters
CN102349107B (zh) 2009-02-10 2015-02-18 晶像股份有限公司 块噪声检测和滤波
US9094658B2 (en) 2010-05-10 2015-07-28 Mediatek Inc. Method and apparatus of adaptive loop filtering
US9083974B2 (en) 2010-05-17 2015-07-14 Lg Electronics Inc. Intra prediction modes
CN105516723B (zh) 2010-09-30 2018-07-27 三菱电机株式会社 运动图像编码装置及方法、运动图像解码装置及方法
US8861617B2 (en) 2010-10-05 2014-10-14 Mediatek Inc Method and apparatus of region-based adaptive loop filtering
CN106878729B (zh) 2010-10-05 2019-09-24 寰发股份有限公司 基于分区基础的自适应环路滤波方法和装置
US9525884B2 (en) * 2010-11-02 2016-12-20 Hfi Innovation Inc. Method and apparatus of slice boundary filtering for high efficiency video coding
JP5689563B2 (ja) 2011-05-10 2015-03-25 メディアテック インコーポレイテッド インループフィルターバッファーの削減方法及び装置
KR101956284B1 (ko) 2011-06-30 2019-03-08 엘지전자 주식회사 보간 방법 및 이를 이용한 예측 방법
US9641866B2 (en) 2011-08-18 2017-05-02 Qualcomm Incorporated Applying partition-based filters
US9357235B2 (en) 2011-10-13 2016-05-31 Qualcomm Incorporated Sample adaptive offset merged with adaptive loop filter in video coding
CN103891292B (zh) * 2011-10-24 2018-02-02 寰发股份有限公司 视频数据环路滤波处理方法及其装置
US20130107973A1 (en) * 2011-10-28 2013-05-02 Qualcomm Incorporated Loop filtering control over tile boundaries
US20130128986A1 (en) * 2011-11-23 2013-05-23 Mediatek Inc. Method and Apparatus of Slice Boundary Padding for Loop Filtering
US9538200B2 (en) 2012-01-19 2017-01-03 Qualcomm Incorporated Signaling of deblocking filter parameters in video coding
US9591331B2 (en) 2012-03-28 2017-03-07 Qualcomm Incorporated Merge signaling and loop filter on/off signaling
CN103518375B (zh) 2012-04-16 2017-08-18 寰发股份有限公司 用于视频数据的环路滤波器处理方法及其装置
US20130343447A1 (en) 2012-06-25 2013-12-26 Broadcom Corporation Adaptive loop filter (ALF) padding in accordance with video coding
KR102070622B1 (ko) 2012-11-23 2020-01-29 삼성전자주식회사 동영상을 위한 양자화 테이블 추정 방법 및 장치
US9596461B2 (en) 2012-11-26 2017-03-14 Qualcomm Incorporated Loop filtering across constrained intra block boundaries in video coding
WO2014170547A1 (en) 2013-04-17 2014-10-23 Nokia Corporation An apparatus, a method and a computer program for video coding and decoding
US9648335B2 (en) 2013-07-12 2017-05-09 Qualcomm Incorporated Bitstream restrictions on picture partitions across layers
GB2516824A (en) 2013-07-23 2015-02-11 Nokia Corp An apparatus, a method and a computer program for video coding and decoding
EP3761641A1 (en) 2013-11-15 2021-01-06 MediaTek Inc. Method of block-based adaptive loop filtering
KR102298599B1 (ko) 2014-04-29 2021-09-03 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 샘플 적응 오프셋 필터링에 대한 인코더측 결정
CN107148778A (zh) 2014-10-31 2017-09-08 联发科技股份有限公司 用于视频编码的改进的定向帧内预测方法
US10158836B2 (en) 2015-01-30 2018-12-18 Qualcomm Incorporated Clipping for cross-component prediction and adaptive color transform for video coding
US20160227222A1 (en) 2015-02-02 2016-08-04 Mediatek Inc. Multi-Standard Video Decoder with Novel Intra Prediction Decoding
US10057574B2 (en) 2015-02-11 2018-08-21 Qualcomm Incorporated Coding tree unit (CTU) level adaptive loop filter (ALF)
US20160241881A1 (en) 2015-02-13 2016-08-18 Mediatek Inc. Method and Apparatus of Loop Filters for Efficient Hardware Implementation
WO2016167538A1 (ko) 2015-04-12 2016-10-20 엘지전자(주) 비디오 신호의 인코딩, 디코딩 방법 및 그 장치
KR102539009B1 (ko) 2015-06-08 2023-05-31 브이아이디 스케일, 인크. 스크린 콘텐츠 코딩을 위한 인트라 블록 카피 모드
US10887597B2 (en) 2015-06-09 2021-01-05 Qualcomm Incorporated Systems and methods of determining illumination compensation parameters for video coding
WO2017045101A1 (en) * 2015-09-14 2017-03-23 Mediatek Singapore Pte. Ltd. Advanced deblocking filter in video coding
KR102432085B1 (ko) 2015-09-23 2022-08-11 노키아 테크놀로지스 오와이 360도 파노라마 비디오를 코딩하는 방법, 장치 및 컴퓨터 프로그램 제품
KR102345475B1 (ko) 2016-01-05 2022-01-03 한국전자통신연구원 잔차 신호에 대한 예측 방법 및 장치
EP3395073A4 (en) 2016-02-04 2019-04-10 Mediatek Inc. VIDEO ENCODING METHOD AND APPARATUS USING NON-LOCAL ADAPTIVE LOOP FILTERS
US11563938B2 (en) 2016-02-15 2023-01-24 Qualcomm Incorporated Geometric transforms for filters for video coding
US10419755B2 (en) 2016-05-16 2019-09-17 Qualcomm Incorporated Confusion of multiple filters in adaptive loop filtering in video coding
US10264282B2 (en) 2016-06-27 2019-04-16 Mediatek Inc. Method and apparatus of inter coding for VR video using virtual reference frames
KR20190035678A (ko) * 2016-07-08 2019-04-03 브이아이디 스케일, 인크. 지오메트리 투영을 이용한 360도 비디오 코딩
US10841581B2 (en) 2016-07-14 2020-11-17 Arris Enterprises Llc Region specific encoding and SAO-sensitive-slice-width-adaptation for improved-quality HEVC encoding
US11095922B2 (en) 2016-08-02 2021-08-17 Qualcomm Incorporated Geometry transformation-based adaptive loop filtering
CN109565591B (zh) 2016-08-03 2023-07-18 株式会社Kt 用于对视频进行编码和解码的方法和装置
US20180048907A1 (en) 2016-08-11 2018-02-15 Qualcomm Incorporated Video coding tools for in-loop sample processing
US20180054613A1 (en) 2016-08-22 2018-02-22 Mediatek Inc. Video encoding method and apparatus with in-loop filtering process not applied to reconstructed blocks located at image content discontinuity edge and associated video decoding method and apparatus
US10419757B2 (en) 2016-08-31 2019-09-17 Qualcomm Incorporated Cross-component filter
US11128862B2 (en) 2016-09-13 2021-09-21 Research and Telecommunications Research Insitute Video encoding/decoding method and device, and recording medium having bitstream stored therein
US10623737B2 (en) 2016-10-04 2020-04-14 Qualcomm Incorporated Peak sample adaptive offset
WO2018097607A1 (ko) 2016-11-22 2018-05-31 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
CN108111851B (zh) 2016-11-25 2020-12-22 华为技术有限公司 一种去块滤波方法及终端
US10555006B2 (en) 2016-12-22 2020-02-04 Qualcomm Incorporated Deriving bilateral filter information based on a prediction mode in video coding
US20180192074A1 (en) 2017-01-03 2018-07-05 Mediatek Inc. Video processing method for processing projection-based frame with 360-degree content represented by projection faces packed in 360-degree virtual reality projection layout
US10506230B2 (en) 2017-01-04 2019-12-10 Qualcomm Incorporated Modified adaptive loop filter temporal prediction for temporal scalability support
US11277635B2 (en) 2017-03-17 2022-03-15 Vid Scale, Inc. Predictive coding for 360-degree video based on geometry padding
EP3606077A4 (en) 2017-03-22 2021-01-06 Industry - University Cooperation Foundation Hanyang University LOOP FILTERING PROCESS ACCORDING TO AN ADAPTIVE PIXEL CLASSIFICATION STANDARD
WO2018182377A1 (en) 2017-03-30 2018-10-04 Samsung Electronics Co., Ltd. Method and apparatus for producing 360 degree image content on rectangular projection by selectively applying in-loop filter
US10778974B2 (en) 2017-07-05 2020-09-15 Qualcomm Incorporated Adaptive loop filter with enhanced classification methods
US20190044809A1 (en) 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller
EP3454556A1 (en) 2017-09-08 2019-03-13 Thomson Licensing Method and apparatus for video encoding and decoding using pattern-based block filtering
US10728573B2 (en) 2017-09-08 2020-07-28 Qualcomm Incorporated Motion compensated boundary pixel padding
CN111213378B (zh) 2017-10-09 2022-05-03 佳能株式会社 用于对像素块进行去块滤波的方法和装置
JP2021016016A (ja) 2017-10-20 2021-02-12 シャープ株式会社 動画像符号化装置及び動画像復号装置
CN117041536A (zh) 2017-11-01 2023-11-10 Vid拓展公司 用于简化视频译码中的自适应环路滤波器的方法
US10728549B2 (en) 2017-11-06 2020-07-28 Dolby Laboratories Licensing Corporation Adaptive loop filtering for high-dynamic range video
CN115941941A (zh) 2017-11-29 2023-04-07 韩国电子通信研究院 采用环内滤波的图像编码/解码方法和装置
WO2019131400A1 (ja) 2017-12-26 2019-07-04 シャープ株式会社 画像フィルタ装置、画像復号装置、および画像符号化装置
CN109996069B (zh) 2018-01-03 2021-12-10 华为技术有限公司 视频图像编解码方法及设备
US20190215518A1 (en) 2018-01-10 2019-07-11 Qualcomm Incorporated Histogram of gradient based optical flow
US20190238845A1 (en) 2018-01-26 2019-08-01 Qualcomm Incorporated Adaptive loop filtering on deblocking filter results in video coding
US11212438B2 (en) 2018-02-14 2021-12-28 Qualcomm Incorporated Loop filter padding for 360-degree video coding
US20190281273A1 (en) 2018-03-08 2019-09-12 Mediatek Inc. Adaptive loop filtering method for reconstructed projection-based frame that employs projection layout of 360-degree virtual reality projection
CN108449591A (zh) 2018-03-21 2018-08-24 天津大学 一种深度视频dmm模式简化方法
US20190306502A1 (en) 2018-04-02 2019-10-03 Qualcomm Incorporated System and method for improved adaptive loop filtering
WO2019208372A1 (ja) 2018-04-25 2019-10-31 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置、復号装置、符号化方法及び復号方法
US10904576B2 (en) 2018-04-27 2021-01-26 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method for generating a prediction image using a plurality of pixels generated outside of a boundary of a reference picture on which smoothing has been performed
EP3804315A4 (en) 2018-05-31 2022-03-09 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR PARTITIONING VIDEO BLOCKS INTO A SLOT FOR INTERPRETING VIDEO DATA
JP7473478B2 (ja) 2018-06-18 2024-04-23 インターデジタル ヴイシー ホールディングス, インコーポレイテッド イントラ予測におけるplanarモード及びdcモードの境界フィルタリング
CA3103003A1 (en) 2018-06-21 2019-12-26 Telefonaktiebolaget Lm Ericsson (Publ) Deblocking of video picture boundaries
US12034977B2 (en) 2018-06-28 2024-07-09 Electronics And Telecommunications Research Institute Video encoding/decoding method and device, and recording medium for storing bitstream
US11818340B2 (en) 2018-07-06 2023-11-14 Electronics And Telecommunications Research Institute Image encoding/decoding method and device, and recording medium in which bitstream is stored
US11094088B2 (en) 2018-08-31 2021-08-17 Mediatek Inc. Method and apparatus of in-loop filtering for virtual boundaries in video coding
CN113287316B (zh) 2018-10-23 2023-07-21 寰发股份有限公司 减少环路滤波缓冲器的方法及装置
CN109660797A (zh) * 2018-11-09 2019-04-19 北京达佳互联信息技术有限公司 自适应滤波方法、装置、电子设备及计算机可读介质
CN109600611B (zh) 2018-11-09 2021-07-13 北京达佳互联信息技术有限公司 环路滤波方法、环路滤波装置、电子设备和可读介质
US11044473B2 (en) 2018-12-21 2021-06-22 Qualcomm Incorporated Adaptive loop filtering classification in video coding
EP3895423A4 (en) * 2018-12-23 2022-06-22 Huawei Technologies Co., Ltd. ENCODER, DECODER AND RELATED METHODS USING AN ADAPTIVE LOOP FILTER
CN113383554B (zh) 2019-01-13 2022-12-16 北京字节跳动网络技术有限公司 LUT和共享Merge列表之间的交互
BR112021016925A2 (pt) 2019-02-27 2021-11-03 Huawei Tech Co Ltd Codificador, decodificador e métodos correspondentes
US11910024B2 (en) 2019-03-11 2024-02-20 Qualcomm Incorporated Boundary handling for adaptive loop filtering
CN113574889B (zh) 2019-03-14 2024-01-12 北京字节跳动网络技术有限公司 环路整形信息的信令和语法
CN115243056A (zh) 2019-03-24 2022-10-25 抖音视界有限公司 视频处理中的多参数自适应环路滤波
TWI739386B (zh) 2019-04-11 2021-09-11 聯發科技股份有限公司 具有適應性參數集之適應性迴路濾波器
CN113678462B (zh) 2019-04-15 2023-01-10 北京字节跳动网络技术有限公司 自适应环路滤波器中的裁剪参数推导
CN113767623B (zh) 2019-04-16 2024-04-02 北京字节跳动网络技术有限公司 用于视频编解码的自适应环路滤波
CN113994671B (zh) 2019-06-14 2024-05-10 北京字节跳动网络技术有限公司 基于颜色格式处理视频单元边界和虚拟边界
KR20220020268A (ko) 2019-06-14 2022-02-18 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 유닛 경계들 및 가상 경계들의 처리
JP7291846B2 (ja) 2019-07-09 2023-06-15 北京字節跳動網絡技術有限公司 適応ループフィルタリングのためのサンプル決定
WO2021006692A1 (ko) 2019-07-11 2021-01-14 삼성전자 주식회사 비디오 복호화 방법 및 장치, 비디오 부호화 방법 및 장치
US11432015B2 (en) 2019-07-11 2022-08-30 Qualcomm Incorporated Adaptive loop filtering across raster-scan slices
WO2021004542A1 (en) 2019-07-11 2021-01-14 Beijing Bytedance Network Technology Co., Ltd. Sample padding in adaptive loop filtering
US20220303587A1 (en) 2019-09-05 2022-09-22 Hfi Innovation Inc. Method and Apparatus for Adaptive Loop Filtering at Picture and Sub-Picture Boundary in Video Coding
US11303890B2 (en) 2019-09-05 2022-04-12 Qualcomm Incorporated Reusing adaptive loop filter (ALF) sub-picture boundary processing for raster-scan slice boundaries
JP7326600B2 (ja) 2019-09-27 2023-08-15 北京字節跳動網絡技術有限公司 異なるビデオユニット間の適応ループフィルタリング
US11115530B1 (en) 2020-06-23 2021-09-07 Bank Of America Corporation Integration of human agent and automated tools for interactive voice response (IVR) systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130272624A1 (en) * 2012-04-11 2013-10-17 Texas Instruments Incorporated Virtual Boundary Processing Simplification for Adaptive Loop Filtering (ALF) in Video Coding
US20190166363A1 (en) * 2017-11-28 2019-05-30 Qualcomm Incorporated Line buffer reduction for adaptive loop filtering in video coding

Also Published As

Publication number Publication date
ZA202200537B (en) 2023-11-29
JP7549081B2 (ja) 2024-09-10
CN114128278A (zh) 2022-03-01
JP7291845B2 (ja) 2023-06-15
AU2020309130B2 (en) 2023-06-08
CN117939170A (zh) 2024-04-26
CA3146773A1 (en) 2021-01-14
US12120297B2 (en) 2024-10-15
EP3984223A1 (en) 2022-04-20
JP2022539845A (ja) 2022-09-13
JP2023110010A (ja) 2023-08-08
AU2020309130A1 (en) 2022-02-10
US20230156189A1 (en) 2023-05-18
BR112022000542A2 (pt) 2022-03-15
KR102648121B1 (ko) 2024-03-18
MX2022000123A (es) 2022-02-16
WO2021004542A1 (en) 2021-01-14
US11589042B2 (en) 2023-02-21
EP3984223A4 (en) 2022-11-09
US20220141461A1 (en) 2022-05-05
CN114128278B (zh) 2023-12-05

Similar Documents

Publication Publication Date Title
KR102669852B1 (ko) 적응적 루프 필터링을 위한 샘플 결정
KR102648121B1 (ko) 적응적 루프 필터링에서의 샘플 패딩
JP7433346B2 (ja) ビデオ単位境界および仮想境界の処理
CN113994671B (zh) 基于颜色格式处理视频单元边界和虚拟边界
KR102707854B1 (ko) 적응적 루프 필터링에서의 분류
JP7318120B2 (ja) 適応ループフィルタリングにおけるパディングプロセス
JP7326600B2 (ja) 異なるビデオユニット間の適応ループフィルタリング
JP7454042B2 (ja) 適応ループ・フィルタリングにおける利用可能でないサンプル位置でのパディング・プロセス
KR102718068B1 (ko) 적응적 루프 필터링에서의 패딩 프로세스
KR102721536B1 (ko) 상이한 비디오 유닛들 간의 적응적 루프 필터링

Legal Events

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