KR20210117327A - 비디오 코딩에서 비선형 적응적 루프 필터링을 위한 방법 및 장치 - Google Patents

비디오 코딩에서 비선형 적응적 루프 필터링을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20210117327A
KR20210117327A KR1020217026713A KR20217026713A KR20210117327A KR 20210117327 A KR20210117327 A KR 20210117327A KR 1020217026713 A KR1020217026713 A KR 1020217026713A KR 20217026713 A KR20217026713 A KR 20217026713A KR 20210117327 A KR20210117327 A KR 20210117327A
Authority
KR
South Korea
Prior art keywords
alf
reconstructed
clipping
pixels
processing
Prior art date
Application number
KR1020217026713A
Other languages
English (en)
Inventor
첸-옌 라이
칭-예 첸
추-더 추앙
유-웬 후앙
Original Assignee
미디어텍 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 미디어텍 인크. filed Critical 미디어텍 인크.
Publication of KR20210117327A publication Critical patent/KR20210117327A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • 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

Abstract

재구성된 비디오의 적응적 루프 필터(ALF) 프로세싱을 위한 방법 및 장치가 개시된다. 하나의 방법에 따르면, ALF 프로세싱을 위한 클리핑 값들이 중심의 재구성된 픽셀의 비트 깊이에 따라 결정된다. 현재 블록에 대한 현재 ALF 출력이 도출되며, 상기 현재 ALF 출력은 원래 차분들에 대한 클리핑된 차분들의 가중합을 포함하고, 상기 원래 차분들의 각각은 비-중심 필터 위치에서의 제1 재구성된 픽셀과 상기 중심의 재구성된 픽셀 간에 계산되고, 상기 원래 차분들의 각각은 대응하는 클리핑 값에 따라 클리핑되어 하나의 클리핑된 차분을 형성한다. 다른 방법에서, 타겟 클리핑 값은 상기 타겟 클리핑 값이 0인 경우에도 항상 인코더 측에서 시그널링되거나 디코더 측에서 파싱된다. 다른 방법에서, 클리핑 값들은 고정-길이 코드를 사용하여 인코딩 또는 디코딩된다.

Description

비디오 코딩에서 비선형 적응적 루프 필터링을 위한 방법 및 장치
관련 출원에 대한 상호 참조
본 발명은 2019년 1월 25일에 출원된 미국 임시 특허출원 No.62/796,608 및 2019년 4월 11일에 출원된 미국 임시 특허출원 No. 62/832,349에 대한 우선권을 주장한다. 상기 미국 임시 특허 출원들은 그 전체가 참조로 여기에 편입된다.
본 발명은 비디오 코딩 시스템에서 적응적 루프 필터(adaptive loop filter, ALF) 프로세싱에 관한 것이다. 특히, 본 발명은 비디오 인코더 또는 디코더에서의 비선형 ALF 프로세싱에 관한 것이다.
모션 추정(motion estimation)은 비디오 시퀀스에서 시간적 중복성(temporal redundancy)을 활용하기 위한 효과적인 인터-프레임(inter-frame) 코딩 기술이다. 모션보상(motion-compensated) 인터-프레임 코딩은 다양한 국제 비디오 코딩 표준에서 널리 사용되어 왔다. 다양한 코딩 표준에서 채택된 모션 추정은 흔히 블록-기반 기술이며, 여기서 코딩 모드 및 모션 벡터와 같은 모션 정보가 각각의 매크로 블록 또는 유사한 블록 구성에 대해 결정된다. 또한, 인트라-코딩(intra-coding)도 적응적으로 적용되며, 여기서 픽처는 다른 픽처를 참조하지 않고 프로세싱된다. 인터-예측된(inter-predicted) 또는 인트라-예측된(intra-predicted) 레지듀(residues)는 보통 변환, 양자화 및 엔트로피 코딩에 의해 더 프로세싱되어 압축된 비디오 비트스트림을 생성한다. 인코딩 프로세스 동안, 특히 양자화 프로세스에서 코딩 아티팩트(artefacts)가 도입된다. 최신 코딩 시스템에서는 코딩 아티팩트를 완화하기 위해, 재구성된 비디오에 추가 프로세싱이 적용되어 화상 품질을 향상시켰다. 상기 추가 프로세싱은 흔히 인-루프(in-loop) 작업으로 구성되어, 인코더 및 디코더가 동일한 참조 픽처들을 도출하여 개선된 시스템 성능을 달성한다.
도 1a는 인-루프 프로세싱을 포함하는 예시적인 적응적 인터/인트라 비디오 코딩 시스템을 도시한다. 인터 예측을 위해, 모션 추정(Motion Estimation, ME)/모션 보상(Motion Compensation, MC)(112)이 다른 픽처 또는 픽처들로부터의 비디오 데이터에 기초한 예측 데이터를 제공하기 위해 사용된다. 스위치(114)는 인트라 예측(110) 또는 인터-예측 데이터를 선택하고, 선택된 예측 데이터는 가산기(116)에 공급되어 레지듀(residues)라고도 하는 예측 오류를 형성한다. 예측 오류는 그 다음 변환(Transformation, T)(118)에 이어 양자화(Quantization, Q)(120)에 의해 프로세싱된다. 변환되고 양자화된 레지듀는 그 다음 압축된 비디오 데이터에 상응하는 비디오 비트스트림을 형성하기 위해 엔트로피 인코더(122)에 의해 코딩된다. 변환 계수와 관련된 비트스트림이 그 다음 모션, 모드 및 이미지 영역과 관련된 기타 정보와 같은 부가 정보로 채워진다. 부가 정보는 필요한 대역폭을 줄이기 위해 엔트로피 코딩을 받을 수도 있다. 이에 따라, 부가 정보와 관련된 데이터가 도 1a에 도시된 바와 같이 엔트로피 인코더(122)에 제공된다. 인터-예측 모드가 사용될 때, 참조 픽처 또는 픽처들이 인코더 단에서도 재구성되어야 한다. 결과적으로, 상기 변환되고 양자화된 레지듀는 역양자화(Inverse Quantization, IQ)(124) 및 역변환(Inverse Transformation, IT)(126)에 의해 프로세싱되어 레지듀를 복구한다. 그 다음, 상기 레지듀는 비디오 데이터를 재구성하기 위해 재구성(Reconstruction, REC)(128)에서 예측 데이터(136)에 다시 더해진다. 재구성된 비디오 데이터는 참조 픽처 버퍼(134)에 저장될 수 있고 다른 프레임의 예측을 위해 사용될 수 있다.
도 1a에 도시된 바와 같이, 인커밍(incoming) 비디오 데이터는 인코딩 시스템에서 일련의 처리를 거친다. REC(128)로부터 재구성된 비디오 데이터는 일련의 프로세싱으로 인해 다양한 손상을 받을 수 있다. 따라서, 비디오 품질 향상을 위해 재구성된 비디오 데이터가 참조 픽처 버퍼(134)에 저장되기 전에 상기 재구성된 비디오 데이터에 다양한 인-루프 프로세싱이 적용된다. 고효율 비디오 코딩(High Efficiency Video Coding, HEVC) 표준이 개발중에, 화질 향상을 위해 디블록킹 필터(Deblocking Filter, DF)(130), 적응적 샘플 오프셋(Sample Adaptive Offset, SAO)(131) 및 적응적 루프 필터(Adaptive Loop Filter, ALF)(132)가 개발되었다. 인-루프 필터 정보는 디코더가 필요한 정보를 적절하게 복구할 수 있도록 비트스트림에 편입되어야 할 수 있다. 따라서, SAO 및 ALF로부터의 인-루프 필터 정보는 비트스트림으로의 편입을 위해 엔트로피 인코더(122)에 제공된다. 도 1a에서는, DF(130)가 재구성된 비디오에 먼저 적용되고; 그 다음 SAO(131)가 DF-프로세싱된 비디오에 적용되고; 그리고 ALF(132)가 SAO-프로세싱된 비디오에 적용된다. 그러나 DF, SAO 및 ALF 간의 처리 순서는 재배열될 수 있다.
도 1a의 인코더에 대한 대응하는 디코더가 도 1b에 도시되어 있다. 상기 변환되고 양자화된 레지듀, SAO/ALF 정보 및 기타 시스템 정보를 복구하기 위해 비디오 비트스트림은 비디오 디코더(142)에 의해 디코딩된다. 디코더 측에서는 ME/MC 대신 모션 보상(MC)(113)만 수행된다. 디코딩 프로세스는 인코더 측의 재구성 루프와 유사하다. 복구된 변환되고 양자화된 레지듀, SAO/ALF 정보 및 기타 시스템 정보는 비디오 데이터를 재구성하는 데 사용된다. 재구성된 비디오는 최종의 향상된 디코딩된 비디오를 생성하기 위해 DF(130), SAO(131) 및 ALF(132)에 의해 더 프로세싱된다.
HEVC에서 코딩 프로세스는 최대 코딩 유닛(Largest Coding Unit, LCU)에 따라 적용된다. LCU는 쿼드트리를 사용하여 코딩 유닛으로 적응적으로 분할된다. 각각의 리프(leaf) CU에서 DF가 각각의 8x8 블록에 대해 수행되고, HEVC 테스트 모델 버전 4.0(HM-4.0)에서 DF가 8x8 블록 경계들에 적용된다. 각각의 8x8 블록에 대해, 수직(vertical) 블록 경계들에 걸쳐 수평 필터링이 먼저 적용되고, 그 다음 수평(horizontal) 블록 경계들에 걸쳐 수직 필터링이 적용된다. 루마(luma) 블록 경계의 프로세싱 동안, 각 측의 4개 픽셀이 필터 파라미터 유도에 관여되며, 필터링 후 각 측에서 최대 3개 픽셀이 변경될 수 있다. 수직 블록 경계들에 걸친 수평 필터링의 경우, 필터링되지 않은 재구성된 픽셀들(즉, pre-DF 픽셀들)이 필터 파라미터 유도에 사용되며 필터링을 위한 소스 픽셀들로도 사용된다. 수평 블록 경계들에 걸친 수직 필터링의 경우, 필터링되지 않은 재구성된 픽셀들(즉, pre-DF 픽셀들)이 필터 파라미터 유도에 사용되고, DF 중간 픽셀들(즉, 수평 필터링 후의 픽셀들)이 필터링에 사용된다. 크로마(chroma) 블록 경계의 DF 프로세싱의 경우, 각 측의 2개 픽셀이 필터 파라미터 유도에 관여되고, 필터링 후 각 측에서 많아도 1개 픽셀이 변경된다. 수직 블록 경계들에 걸친 수평 필터링의 경우, 필터링되지 않은 재구성된 픽셀들이 필터 파라미터 유도에 사용되고 필터링을 위한 소스 픽셀들로 사용된다. 수평 블록 경계들에 걸친 수직 필터링의 경우, DF 프로세싱된 중간 픽셀들(즉, 수평 필터링 후의 픽셀들)이 필터 파라미터 유도에 사용되며 필터링을 위한 소스 픽셀로도 사용된다.
적응적 샘플 오프셋(SAO)(131)은 도 1a에 도시된 바와 같이 HM-4.0에서도 채택된다. SAO는 프로세싱이 하나의 픽셀에만 적용되는 필터링의 특별한 경우로 간주될 수 있다. SAO에서는, 픽셀들을 상이한 그룹(카테고리 또는 클래스라고도 함)으로 분류하기 위해 픽셀 분류가 먼저 수행된다. 각 픽셀에 대한 픽셀 분류는 3x3 윈도우를 기반으로 한다. 하나의 픽처 또는 영역의 모든 픽셀들을 분류할 때, 픽셀들의 각 그룹에 대해 하나의 오프셋이 도출되어 전송된다. ALF는 HEVC(High Efficiency Video Coding)에서는 채택하지 않는다. 그러나 ALF는 VVC(Versatile Video Coding)라는 새로운 비디오 코딩 표준을 위해 고려되고 있다. ALF의 필터 계수는 필터링된 샘플들과 원본 샘플들 간의 왜곡 합계를 최소화함으로써 유도된다. 또한, 상기 유도된 필터 계수는 온/오프 제어 플래그로 비트스트림에서 시그널링된다. 하나의 슬라이스에 여러 필터를 사용할 수 있으며, 필터 선택은 블록-기반 분류에 의한 암시적 선택과 시그널링된 구문(syntax)에 의한 명시적 선택을 포함한다.
HM-4.0에서는, 블록 경계에서 아티팩트의 가시성을 줄이기 위해 DF가 8x8 블록 경계에 적용된다. 도 2는 블록(210)의 수직 경계(212) 및 블록(220)의 수평 경계(222)를 도시하며, 여기서 8x8 블록이 부분적으로(4x8 또는 8x4) 도시되어 있다. 하나의 픽처에서, 모든 수직 경계들이 병렬로 수평으로 필터링될 수 있고, 그 다음 모든 수평 경계들이 병렬로 수직으로 필터링될 수 있다. 루마 경계를 프로세싱하는 동안, 각 측의 4개 픽셀(p0-p3, q0-q3)이 필터 파라미터 유도에 관여되며, 필터링 후 각 측의 많아도 3개 픽셀(p0-p2, q0-q2)이 변경될 수 있다. 루마 수평 DF의 경우, pre-DF 픽셀들(즉, 수평 DF 이전의 픽셀들)이 필터 파라미터 유도 및 필터링에 사용된다. 루마 수직 DF의 경우, pre-DF 픽셀들이 필터 파라미터를 유도하는 데 사용되며, H-DF 픽셀들(즉, 수평 DF 이후의 픽셀들)이 필터링에 사용된다. 크로마 경계의 프로세싱 동안, 각 측의 2개 픽셀(p0-p1, q0-q1)이 필터 파라미터 유도에 관여되며, 필터링 후 각 측의 많아도 1개 픽셀(p0, q0)이 변경된다. 크로마 수평 DF의 경우, pre-DF 픽셀들이 필터 파라미터 유도 및 필터링에 사용된다. 크로마 수직 DF의 경우, H-DF 픽셀들이 필터 파라미터 유도 및 필터링에 사용된다.
HM-4.0에서는, SAO가 루마 및 크로마 컴포넌트에 적용되며, 각각의 루마 컴포넌트가 독립적으로 프로세싱된다. SAO는 하나의 픽처를 여러개의 LCU-정렬 영역으로 나눌 수 있으며, 각 영역은 2개의 밴드 오프셋(Band Offset, BO) 타입, 4개의 에지 오프셋(Edge Offset, EO) 타입 및 노우(no) 프로세싱(OFF) 중 하나의 SAO 타입을 선택할 수 있다. 각각의 프로세싱될(to-be-processed)(필터링될(to-be-filtered) 이라고도 함) 픽셀에 대해, BO는 픽셀 강도를 사용하여 픽셀을 밴드(band)로 분류한다. 픽셀 강도 범위는 도 3에 도시된 바와 같이 32개의 밴드로 균등하게 나눠진다. 픽셀 분류 후, 각 밴드의 모든 픽셀들에 대해 하나의 오프셋이 유도되고, 중심 16개 밴드 또는 외곽 16개 밴드의 오프셋들이 선택되어 코딩된다. EO의 경우, 픽셀을 카테고리로 분류하기 위해 프로세싱될 2개의 이웃하는 픽셀들을 사용한다. 도 4에 도시된 바와 같이 4개의 EO 타입이 0°, 90°, 135°, 및 45°에 대응한다. BO와 유사하게, 카테고리 0을 제외한 각 카테고리의 모든 픽셀들에 대해 하나의 오프셋이 유도되고, 여기서 카테고리 0은 제로(zero) 오프셋을 사용하도록 된다. 표 1은 EO 픽셀 분류를 나타내며, 여기서 "C"는 분류될 픽셀을 표시한다.
카테고리 조건
1 C < 2개 이웃
2 C < 1개 이웃 && C == 1개 이웃
3 C > 1개 이웃 && C == 1개 이웃
4 C > 2개 이웃
0 위의 어디에도 해당되지 않음
HM-4.0에서, ALF는 도 5에 도시된 바와 같이 루마 및 크로마에 대해 크로스11x5(510) 및 스노우플레이크5x5(520)의 두 가지 필터 형상 옵션을 가진다. 각각의 픽처에서, 루마 컴포넌트가 하나의 형상을 선택할 수 있고, 크로마 컴포넌트가 하나의 형상을 선택할 수 있다. 최대 16개의 루마 필터 및 많아도 1개의 크로마 필터가 각 픽처에 대해 적용될 수 있다. ALF의 국지화(localization)를 허용하기 위해, 루마 픽셀들이 필터를 선택하기 위한 두 가지 모드가 있다. 하나는 영역-기반 적응(Region-Based Adaptation, RA) 모드이고, 다른 하나는 블록-기반 적응(Block-Based Adaptation, BA) 모드이다. RA 모드는 하나의 루마 픽처를 16개 영역으로 나눈다. 픽처 크기가 일단 알려지면, 16개 영역이 결정되고 고정된다. 영역들은 병합될 수 있으며, 병합 후 각 영역에 대해 하나의 필터가 사용된다. BA 모드는 각 4x4 블록에 대한 속성(property)으로 에지 활동 및 방향을 사용한다. 도 6에 도시된 바와 같이, 4x4 블록(610)의 속성을 계산하려면 5x5 픽셀(612)이 필요하다. 4x4 블록들의 속성이 계산된 후, 그것들은 15개의 카테고리로 분류된다. 카테고리는 병합될 수 있으며, 병합 후 각각의 카테고리에 대해 하나의 필터가 사용된다. 크로마 컴포넌트들의 경우, 상대적으로 플랫(flat)하기 때문에 국지적 적응이 사용되지 않으며, 한 픽처의 2개 컴포넌트가 하나의 필터를 공유한다.
최근 생겨난 VVC(Versatile Video Coding) 표준의 개발 중에, 성능을 개선하기 위해 보다 유연한 ALF가 개시되었다. 블록-기반 분류의 경우, 하나의 픽처가 여러개의 4x4 루마 블록으로 분할되고, 각각의 4x4 루마 블록에 대해 하나의 그룹 인덱스가 유도된다. 상기 그룹 인덱스는 필터 세트에서 루마 필터를 선택하는 데 사용된다. 필터 계수들에 필요한 데이터를 줄이기 위해, 일부 계수들은 전송될 필요가 없도록 하나의 4x4 블록의 특성에 기초하여 필터 계수들이 회전될(rotated) 수 있다. VVC에서는 최대 25개의 그룹이 하나의 루마 필터 세트의 ALF에 사용될 수 있으며, 이는 그래디언트(gradients) 크기에 기초한 5개 활동 레벨과 그래디언트 방향에 기초한 5개의 방향과 관련된다. 상이한 그룹들이 하나의 필터를 공유할 수 있고, 여기서 여러 그룹들이 하나의 병합된 그룹으로 병합될 수 있고 하나의 병합된 그룹은 하나의 필터를 가진다.
LCU-기반 프로세싱이 DF, SAO 및 ALF에 대해 사용될 때, 전체 디코딩 프로세스는 다수 LCU의 병렬 프로세싱을 위해 LCU-파이프라이닝(pipelining) 방식을 이용한 래스터(raster) 스캔으로 LCU에 의해 수행될 수 있다. 이 경우 하나의 LCU 행(row)을 프로세싱하려면 위의 LCU 행으로부터의 픽셀들이 필요하기 때문에, 라인 버퍼들이 DF, SAO 및 ALF에 필요하다. 오프-칩 라인 버퍼(예를 들어, DRAM)가 사용되면 외부 메모리 대역폭과 전력 소비가 증가될 것이고, 온-칩 라인 버퍼(예를 들어, SRAM)가 사용되면 칩 면적이 증가될 것이다. 따라서, 라인 버퍼가 픽처 버퍼보다 이미 훨씬 작다하여도, 라인 버퍼를 줄이는 것이 여전히 바람직하다.
도 7은 LCU-기반 디코딩에 있어서 DF, SAO 및 ALF에 필요한 루마 라인 버퍼의 수를 설명한다. 현재 LCU(current LCU)(하부의 수평(H.) LCU 경계(710) 및 좌측의 수직(V.) LCU 경계(712))가 주어지면, 라인 A-J가 먼저 수평 DF에 의해 프로세싱되고 그 다음 수직 DF에 의해 프로세싱된다. 다음으로, 라인 K-N에 대한 수평 DF는, 라인 K-N에 대한 수직 DF를 위한 H-DF 픽셀들의 라인 버퍼들을 피하기 위해 하위 LCU가 사용 가능할 때까지 지연시키는 것이 좋고, 이들은 지금 순간 프로세싱될 수 없는데 이는 하위 LCU가 아직 사용 가능하지 않고, 4-픽셀 스트라이프(720)에 의해 예시된 바와 같이, DF는 필터 파라미터를 유도하고 필터링하기 위해 수평 경계의 각 측 상에 4개의 pre-DF 픽셀 및 4개의 H-DF 픽셀이 각각 필요하기 때문이다. 따라서, pre-DF 픽셀들의 4개 라인 K-N이 DF를 위해 저장되어야 한다. 다음으로, SAO가 DF 출력 픽셀에 적용될 것이다. 라인 K-N에 대한 수직 DF는 라인 K를 변경하지 않을 것이기 때문에, 3x3 정사각형(730)으로 예시된 바와 같이, 수평 DF가 SAO를 위해 라인 K에 추가로 적용되어 라인 J를 프로세싱할 수 있다. 라인 K의 H-DF 픽셀은 라인 버퍼에 저장되지 않으며 하위 LCU가 올 때 다시 생성되어야 하며 이는 하드웨어의 문제가 아닌 점에 유의하여야 한다. SAO가 라인 A-J를 프로세싱한 후, 4x4 정사각형(740)으로 예시된 바와 같이, 4x4 블록 속성이 계산될 수 있다. 5x5 지원 영역(742)이 표시된다. 이때 ALF가 라인 A-H를 프로세싱할 수 있다. 그 후에는, 하위 LCU가 올 때까지 현재 LCU에 대해 더 이상의 프로세스가 수행될 수 없다. 하위 LCU가 오면, 라인 K-P가 먼저 DF에 의해 프로세싱되고 그 다음 라인 K-P가 SAO에 의해 프로세싱된다. 라인 K에 SAO가 적용될 때 라인 J가 필요하다. 따라서, DF 출력 픽셀들의 하나의 라인(J)은 SAO를 위해 저장되어야 한다. 다음으로, 라인 I-P에 대해 4x4 블록 속성이 계산된다. 마지막으로, 라인 I-P가 ALF에 의해 필터링될 수 있다. 라인 I가 ALF에 의해 필터링될 때, 필터 형상(750)으로 예시된 바와 같이 라인 G-K가 필요하고 필터의 중심(center)(752)이 표시된다. 그러나 라인 I-J의 블록 속성을 계산하려면 여전히 라인 F-J가 필요하다. 따라서, SAO 출력 픽셀들의 5개 라인(F-J)이 ALF를 위해 저장되어야 한다. 모두 합해서, 전체의 인-루프 필터링은 10개의 루마 라인 버퍼를 필요로 한다. 전체 디코딩 시스템이 고려될 때, 인트라 루마 예측은 이미 pre-DF 픽셀들의 하나의 라인(N)을 저장하고 있기 때문에, 이 루마 라인 버퍼가 공유될 수 있다. 더욱이, 필터 인덱스 라인 버퍼가 라인 G-J에 대해 BA 모드 필터 선택을 저장하는 데 사용될 수 있다면, 라인 I-J를 필터링하는 동안 블록 속성을 다시 계산할 필요가 없다. 이러한 방식으로, SAO 출력 픽셀들의 하나의 라인(F)이 ALF를 위해 저장될 수 있다. 필터 인덱스 라인 버퍼는 4x4 블록당 4비트만 필요로 하며, 이는 픽셀 라인 버퍼와 비교할 때 약 10%에 불과하다.
도 8은 LCU-기반 디코딩에 있어서 DF, SAO 및 ALF에 필요한 크로마 라인 버퍼의 수를 설명한다. 현재 LCU(수평(H.) LCU 경계(810) 및 수직(V.) LCU 경계(812))가 주어지면, 라인 A-M이 먼저 수평 DF에 의해 프로세싱되고, 그 다음 라인 A-L이 수직 DF에 의해 프로세싱된다. 다음으로, 라인 N의 pre-DF 픽셀들의 라인 버퍼를 인트라 크로마 예측에서 공유하기 위해 하위 LCU가 올 때까지 라인 N에 대한 수평 DF를 지연시키는 것이 좋다. 라인 M-N에 대한 수직 DF에 대해서는, 하위 LCU를 기다려야 한다. 2-픽셀 스트라이프로 도시된 바와 같이, 크로마 DF는 2개의 H-DF 픽셀을 판독하고 경계의 각 측 상에 하나의 픽셀을 기록할 수 있음을 기억해야한다. 따라서, H-DF 픽셀들의 하나의 라인(M)과 pre-DF 픽셀들의 하나의 라인(N)은 DF를 위해 저장되어야 한다. 다음으로, SAO가 DF 출력 픽셀들에 적용될 것이다. 라인 M-N에 대한 수직 DF는 라인 M을 변경하지 않을 것이기 때문에, 라인 M의 H-DF 픽셀들도 라인 M의 DF 출력 픽셀들이며, SAO는 3x3 정사각형(810)으로 표시된 바와 같이 라인 L을 프로세싱할 수 있다. SAO가 라인 A-L을 프로세싱한 후, ALF가 라인 A-J를 프로세싱할 수 있다. 그 후에는, 하위 LCU가 올 때까지 현재 LCU에 대해 더 이상의 프로세스가 행해질 수 없다. 하위 LCU가 오면, 라인 N-P가 먼저 수평 DF에 의해 프로세싱되고, 그 다음 라인 M-P가 수직 DF에 의해 그리고 SAO에 의해 프로세싱된다. SAO가 라인 M을 프로세싱할 때, 라인 L이 필요하다. 따라서, DF 출력 픽셀 들의 하나의 라인(L)이 SAO를 위해 저장되어야 한다. 마지막으로, 라인 K-P가 ALF로 필터링될 수 있다. 라인 K가 필터링될 때, 필터의 중심(822)이 표시된 필터 형상(820)에 의해 도시된 바와 같이, 라인 I-M이 필요하다. 따라서, SAO 출력 픽셀 들의 4개 라인(I-L)이 ALF를 위해 저장되어야 한다. 모두 합해서, 전체의 인-루프 필터링은 7개의 크로마 라인 버퍼를 필요로 한다.
라인 버퍼 사용을 줄이기 위한 가상 경계
SAO 및 ALF의 라인 버퍼 요구사항을 제거하기 위해, 여기서는 가상 경계(virtual boundary, VB)의 개념을 도입한다. 도 9a에 도시된 바와 같이, VB는 N개 픽셀만큼 상향 시프트된 수평 LCU 경계이다. 도 9b에서, VB는 N개 픽셀만큼 좌측 시프트된 수직 LCU 경계이다. 각각의 LCU에 대해, SAO 및 ALF는 하위 LCU가 오기 전에 VB 위의 픽셀들을 프로세싱할 수 있지만 하위 LCU가 올 때까지 VB 아래의 픽셀들을 프로세싱할 수 없고, 이는 DF에 기인한다. HM-4.0의 DF를 고려하면, 제안된 VB와 수평 LCU 경계 사이의 공간은 루마에 대해 3개의 픽셀(즉, 도 9a 및 도 9b에서 N=3) 및 크로마에 대해 1개의 픽셀(즉, 도 9a 및 도 9b에서 N=1)이다. SAO 및 ALF는, 데이터가 임의의 추가 라인 버퍼를 사용하지 않고서 제때에 사용할 수 있는 경우가 아니면, VB의 일 측 상의 프로세싱될 모든 픽셀이 VB의 다른 측으로부터의 데이터 액세스를 필요로 하지 않을 것을 보장하기 위해 수정되었다.
JVET 11차 회의에서는, 차세대 비디오 코딩 표준인 다기능 비디오 코딩(VVC)의 초안에 4x4 블록-기반 적응을 갖는 ALF가 채택되었다. 하나의 4x4 블록의 경우, 블록 속성을 계산하는 데 하나의 8x8 윈도우가 필요하며, 필터 풋프린트는 루마에 대해 하나의 7x7 다이아몬드 필터 및 크로마에 대해 하나의 5x5 다이아몬드 필터이다. 따라서, 가상 경계 없이 필요한 라인 버퍼는, 4개의 루마 DF 라인 버퍼와 2개의 크로마 DF 라인 버퍼 위에 추가로 7개의 루마 라인 버퍼와 3개의 크로마 라인 버퍼이다. 가상 경계의 개념은 라인 버퍼 사용을 줄이기 위해 여전히 VVC에 적용될 수 있다. 위의 설명에서, 최대 코딩 유닛(LCU)은 VVC에서는 코딩 트리 유닛CTU(coding tree unit, CTU)으로 재명명된다. 그러나 현재의 ALF 설계의 피처에 맞도록 몇몇 수정이 제안되어 있다.
비선형 ALF
VTM3.0(VVC(Versatile Video Coding) 테스트 모델 버전 3.0)에서, 적응적 루프 필터의 필터링 프로세스는 다음과 같이 수행된다:
Figure pct00001
위의 식에서, 샘플 I(x+i,y+j)는 입력 샘플이고, O(x,y)는 필터링된 출력 샘플(즉, 필터 결과)이며, w(i,j)는 필터 계수를 나타낸다. 재구성된(reconstructed) 샘플에 ALF가 적용되므로, 샘플 I(x+i,y+j)는 재구성된 샘플에 해당한다. ALF 프로세싱의 중심 위치에서 중심의 재구성된 픽셀은 (i, j) = (0, 0), 즉 I(i, j)에 해당한다. 실제로 VTM3.0에서는, 고정 소수점 정도(fixed point precision) 계산을 위해 정수 연산을 사용하여 구현된다:
Figure pct00002
위의 식에서, L은 필터 길이를 나타내며, w(i,j)는 고정 소수점 정도에서 필터 계수이다.
식 (1)은 코딩 효율성에 영향을 미치지 않고, 다음 표현으로 다시 구성될 수 있다:
Figure pct00003
위의 식에서, w(i,j)는 w(0,0)을 제외하고 식 (1)에서와 동일한 필터 계수이며, 이는 식 (3)에서는 1과 같지만 식 (1)에서는
Figure pct00004
과 같다.
위의 식 (3)의 필터 공식을 사용하여, 이웃 샘플 값들(I(x+i,y+j))이 필터링되는 현재 샘플 값(I(x,y))과 매우 다를 때 이웃 샘플 값들의 영향을 줄이기 위해 간단한 클리핑 함수(clipping function)를 사용함으로써 ALF를 보다 효율적으로 만들기 위해 비선형성(nonlinearity)을 쉽게 도입할 수 있다.
JVET-M0385((2019년 1월 9일 ~18일에 마라케슈에서 개최된 ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29/WG 11, 13차 회의에서 연합 비디오 개발팀(Joint Video Exploration Team, JVET)의 J. Taquet 등의 "비선형 적응적 루프 필터(Non-Linear Adaptive Loop Filter)", 문서: JVET- M0385))에서, 비선형 ALF가 공개되었다. 그것은 테스트 소프트웨어 VTM3.0에서 적응적 루프 필터의 입력 샘플 값에 적응적 클리핑 연산을 도입한다. 이 적응적 클리핑의 목표는 필터링될 입력 샘플 값과 필터의 다른 이웃 입력 샘플 값들 간의 차분(difference)을 제한하기 위해 약간의 비선형성을 도입하는 것이다.
JVET-M0385에 따르면, ALF 필터 연산은 다음과 같이 수정된다:
Figure pct00005
위의 식에서, O'(x,y)는 수정된 ALF 필터 출력에 해당하고, I(x,y)는 ALF 이전의 샘플에 해당하며, K(d,b)=min(b,max(-b,d))는 클리핑 함수이고, k(i,j)는 (i,j)에서 필터 계수에 의존하는 클리핑 파라미터이다. 인코더는 최적의 k(i,j)를 찾기 위해 최적화를 수행한다. 식 (4)에서 보여지는 바와 같이, 클리핑 함수는 ALF의 중심에서 벗어난(off-center) 재구성된 픽셀(즉, I(x+i,y+j),(i,j)≠(0,0))과 중심의 재구성된 픽셀(즉, I(x,y))간의 차분에 해당하는, 차분 (I(x+i,y+j)-I(x,y))에 적용된다. 식 (4)에 따르면, 상기 차분(I(x+i,y+j)-I(x,y))은 k(i,j) 클리핑 파라미터를 갖는 클리핑 함수에 의해 클리핑된다. 항 K(I(x+i,y+j)-I(x,y),k(i,j))는 본 개시에서 클리핑된 차분으로 지칭된다. 즉, 수정된 ALF 출력 O'(x,y)은 클리핑된 차분의 가중합(즉,
Figure pct00006
)을 포함한다. 식 (4)에서 보여지는 바와 같이, 비-중심(non-center) 필터 위치와 중심의 재구성된 픽셀 간의 차분 (I(x+i,y+j)-I(x,y))의 가중합은 새로운 항 K(I(x+i,y+j)-I(x,y),k(i,j))로 수정된다. 항 (I(x+i,y+j)-I(x,y))은 비-중심 필터 위치와 중심의 재구성된 픽셀 간의 원래 차분(original difference)으로 지칭된다.
JVET-M0385에 따른 구현에서, 클리핑 파라미터 k(i,j)는 각각의 ALF 필터에 대해 지정되며, 여기서 필터 계수당 하나의 클리핑 값이 시그널링된다. 이것은 루마(Luma) 필터당 비트스트림에서 12개의 클리핑 값이 시그널링되고, 크로마(Chroma) 필터에 대해 6개의 클리핑 값이 시그널링됨을 의미한다.
시그널링 비용과 인코더 복잡성을 제한하기 위해, JVET-M0385에서 클리핑 값들은 가능한 값들의 작은 세트로 제한된다. 또한, 인터(Inter) 슬라이스들에 대해 단지 4개의 가능한 값들이 사용되고 인트라(Intra) 슬라이스들에 대해 3개의 가능한 값들이 사용된다.
로컬 차분들의 분산(variance)은 흔히 크로마보다 루마에서 더 높기 때문에, 루마 및 크로마 필터들에 대해 두 가지 상이한 세트가 사용된다. 또한, 필요하지 않은 경우 클리핑이 비활성화될 수 있도록, 각 세트에는 최대 샘플 값이 포함된다.
JVET-M0385에 따라 클리핑 값들의 제안된 세트들이 표 2에 제공된다.
허용된 클리핑 값들
인트라(INTRA) 인터(INTER)
루마(LUMA) { 10, 102, 1024 } { 6, 32, 181, 1024 }
크로마(CHROMA) { 4, 24, 1024 } { 4, 25, 161, 1024 }
클리핑 값들은 세트 내의 클리핑 값의 인덱스에 대응하는 골롬(Golomb) 인코딩을 사용하여 슬라이스 헤더에 인코딩된다.
클리핑 값들은 세트 내의 클리핑 값의 인덱스에 대응하는 k차 지수-골롬(exponential-Golomb) 코드를 사용하여 슬라이스 헤더에 인코딩된다.
또한, 비-중심 계수가 0이 아닌 경우에만, 대응하는 클리핑 값들이 시그널링된다. 즉, 클리핑 값을 디코딩하기 전에 필터 계수가 먼저 재구성되어야 한다. 구문(syntax) 테이블이 표 3에 제공된다.
ALF 데이터에 대한 구문 테이블의 예시.
alf_data( ) { Descriptor
alf_chroma_idc tu(v)
alf_luma_clip u(1)
if( alf_choma_idc )
alf_chroma_clip u(1)
alf_luma_num_filters_signalled_minus1 tb(v)
if( alf_luma_num_filters_signalled_minus1 > 0 ) {
for( filtIdx = 0; filtIdx < NumAlfFilters; filtIdx++ )
alf_luma_coeff_delta_idx[ filtIdx ] tb(v)
}
alf_luma_coeff_delta_flag u(1)
if ( !alf_luma_coeff_delta_flag && alf_luma_num_filters_signalled_minus1 > 0 )
alf_luma_coeff_delta_prediction_flag u(1)
alf_luma_min_eg_order_minus1 ue(v)
for( i = 0; i < 3; i++ )
alf_luma_eg_order_increase_flag[ i ] u(1)
if ( alf_luma_coeff_delta_flag ) {
for( sigFiltIdx = 0; sigFiltIdx <= alf_luma_num_filters_signalled_minus1; sigFiltIdx++ )
alf_luma_coeff_flag[ sigFiltIdx ] u(1)
}
for( sigFiltIdx = 0; sigFiltIdx <= alf_luma_num_filters_signalled_minus1; sigFiltIdx++ ) {
if ( alf_luma_coeff_flag[ sigFiltIdx ] ) {
for ( j = 0; j < 12; j++ ) {
alf_luma_coeff_delta_abs[ sigFiltIdx ][ j ] uek(v)
if( alf_luma_coeff_delta_abs[ sigFiltIdx ][ j ] )
alf_luma_coeff_delta_sign[ sigFiltIdx ][ j ] u(1)
}
}
}
if( alf_luma_clip ) {
alf_luma_clip_min_eg_order_minus1 ue(v)
for( i = 0; i < 3; i++ )
alf_luma_clip_eg_order_increase_flag[ i ] u(1)
for ( sigFiltIdx = 0; sigFiltIdx <= alf_luma_num_filters_signalled_minus1; sigFiltIdx++ ) {
if ( alf_luma_coeff_flag[ sigFiltIdx ] ) {
for ( j = 0; j < 12; j++ ) {
if( filterCoefficients[ sigFiltIdx ][ j ] )
alf_luma_clip_idx[ sigFiltIdx ][ j ] uek(v)
}
}
}
}
if ( alf_chroma_idc > 0 ) {
alf_chroma_min_eg_order_minus1 ue(v)
for( i = 0; i < 2; i++ )
alf_chroma_eg_order_increase_flag[ i ] u(1)
for( j = 0; j < 6; j++ ) {
alf_chroma_coeff_abs[ j ] uek(v)
if( alf_chroma_coeff_abs[ j ] > 0 )
alf_chroma_coeff_sign[ j ] u(1)
}
}
if ( alf_chroma_idc > 0 && alf_chroma_clip ) {
alf_chroma_clip_min_eg_order_minus1 ue(v)
for( i = 0; i < 2; i++ )
alf_chroma_clip_eg_order_increase_flag[ i ] u(1)
for( j = 0; j < 6; j++ ) {
if( alf_chroma_coeff_abs[ j ] )
alf_chroma_clip_idx[ j ] uek(v)
}
}
}
가상 경계를 사용하는 ALF에 대한 감소된 버퍼 요건
JVET-M0301((2019년 1월 9일 ~18일에 마라케슈에서 개최된 ITU-T SG 16 WP 3 및 ISO/IEC JTC 1/SC 29/WG 11, 13차 회의에서 연합 비디오 개발팀(JVET)의 A. Kotra 등의 "비-CE: 루프 필터 라인 버퍼 감소(Loop filter line buffer reduction)", 문서: JVET-M0301))에서, ALF(adaptive loop filter)의 라인 버퍼 요건을 감소시키는 메커니즘이 공개되었다. 그 기고는 "N"개 샘플만큼 상향 시프트된 수평 CTU 경계들인 가상 경계(VB)의 개념을 사용한다. 수정된 ALF 블록 분류 및 수정된 ALF 필터링이 필요한 라인 버퍼의 수를 감소시키기 위해 가상 경계에 가까운 샘플들에 적용된다. 수정된 ALF 블록 분류는 VB 위에 있는 샘플들만 사용하여 VB 위에 있는 주어진 4 x 4 블록을 분류한다. 유사하게 VB 아래의 4 x 4 블록의 분류를 위해, VB 아래 라인들에 속하는 샘플들이 사용된다. 수정된 ALF 필터링은 원래의 ALF 필터의 조건부 비활성화 및 트렁케이티드(truncated) 버전의 조합을 사용한다.
가상 경계에서의 트렁케이티드 ALF 필터링
필터의 트렁케이티드 버전이 가상 경계들에 가까운 라인들에 속하는 루마 샘플들의 필터링에 사용된다. 이러한 필터의 트렁케이티드 버전은 N=4 및 N=6 경우 모두에 사용될 수 있다. 유사하게, 필터의 트렁케이티드 버전은 크로마 ALF 필터링에도 사용된다.
ALF 필터링의 트렁케이티드 버전에 부가하여, ALF 필터링의 조건부 비활성화도 고려된다.
패딩된 계수들의 절대값 합이 문턱값(T) 곱하기 패딩되지 않은 계수들의 절대값 합보다 크면, 필터는 이들 각각의 라인에 대해 비활성화된다. 도 10a-10f는 가상 경계에서 수정된 루마 ALF 필터 프로세싱의 예들을 도시한다. 도 10a는 라인 M 필터링을 위해 수정된 ALF를 도시하고, 도 10b는 라인 H 필터링을 위해 수정된 ALF를 도시하고, 도 10c는 라인 L 필터링을 위해 수정된 ALF를 도시하고, 도 10d는 라인 I 필터링을 위해 수정된 ALF를 도시하고, 도 10e는 라인 J 필터링을 위해 수정된 ALF를 도시하고, 도 10f는 라인 K 필터링을 위해 수정된 ALF를 도시한다.
예를 들어, 라인 M과 H에 대해, (2*abs(c0)>(T*(2*(abs(c1)+abs(c2)+abs(c3)+abs(c4)+abs(c5)+abs(c6)+abs(c7)+abs(c8)+abs(c9)+abs(c10)+abs(c11))+abs(c12)))이면, 라인 M과 H에 대해 ALF 필터링이 비활성화된다.
유사하게, 라인 L과 I에 대해, (2*(abs(c0)+abs(c1)+abs(c2)+abs(c3))>(T*(2*(abs(c4)+abs(c5)+abs(c6)+abs(c7)+abs(c8)+abs(c9)+abs(c10)+abs(c11))+abs(c12)))이면, 라인 L과 I에 대해 ALF 필터링이 비활성화된다.
유사하게, 라인 J와 K에 대해, (2*(abs(c0)+abs(c1)+abs(c2)+abs(c3)+abs(c4)+abs(c5)+abs(c6)+abs(c7)+abs(c8))>(T*(2*(abs(c9)+abs(c10)+abs(c11))+abs(c12)))이면, 라인 J와 K에 대해 ALF 필터링이 비활성화된다.
위에서, T는 일반적으로 0과 1 사이의 소수 값을 취할 수 있는 문턱값이다. 예를 들어, T 값은 0.5, 0.6 또는 0.7일 수 있다.
도 11a-11d는 가상 경계에서 수정된 크로마 ALF 필터 프로세싱의 예들을 도시한다. 도 11a는 라인 N 필터링을 위해 수정된 ALF를 도시하고, 도 11b는 라인 K 필터링을 위해 수정된 ALF를 도시하고, 도 11c는 라인 M 필터링을 위해 수정된 ALF를 도시하고, 도 11d는 라인 L 필터링을 위해 수정된 ALF를 도시한다.
라인 N과 K에 대해, (2*abs(c0)>(T*(2*(abs(c1)+abs(c2)+abs(c3)+abs(c4)+abs(c5))+abs(c6))))이면, 라인 N과 K에 대해 ALF 필터링이 비활성화된다.
라인 M과 L에 대해, ((2*(abs(c0)+abs(c1)+ abs(c2)+abs(c3))>(T*(2*(abs(c4)+abs(c5))+abs(c6))))이면, 라인 M과 L에 대해 ALF 필터링이 비활성화되고, 여기서 함수 abs(x)는 다음과 같이 정의된다:
Figure pct00007
발명의 간략 요약
재구성된(reconstructed) 비디오의 적응적 루프 필터(Adaptive Loop Filter, ALF) 프로세싱을 위한 방법 및 장치가 개시된다. 이 방법에 따르면, 재구성된 픽셀들이 수신되고, 상기 재구성된 픽셀들은 현재 블록을 포함한다. ALF 프로세싱을 위한 하나 이상의 클리핑 값들이 ALF 프로세싱의 중심 위치에서 중심의 재구성된 픽셀의 비트 깊이(bit depth)에 따라 결정된다. 현재 ALF 출력이 상기 현재 블록에 대해 도출되며, 상기 현재 ALF 출력은 원래 차분들(original differences)에 대한 클리핑된 차분들(clipped differences)의 가중합을 포함하고, 상기 각각의 원래 차분들은 비-중심(non-center) 필터 위치에서 제1 재구성된 픽셀과 상기 중심의 재구성된 픽셀 간에 계산되고, 상기 원래 차분들의 각각은 대응하는 클리핑 값에 따라 클리핑되어 하나의 클리핑된 차분을 형성한다. 필터링된 재구성된 픽셀들이 제공되며, 상기 필터링된 재구성된 픽셀들은 현재 ALF 출력을 포함한다.
일 실시예에서, 상이한 비트 깊이들에 대해 클리핑 값들의 상이한 세트들이 사용된다. 다른 실시예에서, 인트라(Intra) 및 인터(Inter) 코딩 모드들에 대해 클리핑 값들의 상이한 세트들이 사용된다. 또 다른 실시예에서, 재구성된 루마 픽셀들 및 재구성된 크로마 픽셀들에 대해 클리핑 값들의 상이한 세트들이 사용된다. 일 실시예에서, 상기 재구성된 픽셀들은 루마 픽셀들에 상응한다. 다른 실시예에서, 상기 재구성된 픽셀들은 크로마 픽셀들에 상응한다. 상기 클리핑 값들은 슬라이스(slice), 타일(tile) 또는 타일 그룹(tile group)에 시그널링될 수 있다.
일 실시예에서, 제1 비트 깊이에 대한 제1 클리핑 값들은, 상기 제1 클리핑 값들을 N 비트만큼 좌측-시프팅 또는 우측-시프팅하는 것에 상응하는 적어도 하나의 연산에 의해, 제2 비트 깊이에 대한 제2 클리핑 값들로부터 도출되고, N은 양의 정수이다.
일 실시예에서, ALF 프로세싱은 인코더 측에서 상기 재구성된 픽셀들에 적용된다. 다른 실시예에서, ALF 프로세싱은 디코더 측에서 상기 재구성된 픽셀들에 적용된다.
재구성된 비디오의 적응적 루프 필터(ALF) 프로세싱을 위한 다른 방법 및 장치가 개시된다. 이 방법에 따르면, 하나 이상의 클리핑 값들이 ALF 프로세싱을 위해 결정되며, 여기서 타켓 클리핑 값은 상기 타겟 클리핑 값이 0인 경우에도 항상 인코더 측에서 시그널링되거나 또는 디코더 측에서 파싱된다.
재구성된 비디오의 적응적 루프 필터(ALF) 프로세싱을 위한 또 다른 방법 및 장치가 개시된다. 이 방법에 따르면, ALF 프로세싱을 위해 하나 이상의 클리핑 값들이 결정되고, 여기서 상기 하나 이상의 클리핑 값들은 고정-길이 코드를 사용하여 인코더 측에서 인코딩되거나 디코더 측에서 디코딩된다. 일 실시예에서, 상기 고정-길이 코드는 2비트 코드에 상응한다. 다른 실시예에서, 상기 고정-길이 코드는 트렁케이티드 유너리 코드(truncated unary codes)에 상응한다.
도 1a는 DF, SAO 및 ALF 인-루프 프로세싱을 포함하는 예시적인 적응적 인터/인트라 비디오 인코딩 시스템을 도시한다.
도 1b는 DF, SAO 및 ALF 인-루프 프로세싱을 포함하는 예시적인 적응적 인터/인트라 비디오 디코딩 시스템을 도시한다.
도 2는 수직 경계 및 수평 경계가 도시된 블록 경계에서 아티팩트의 가시성을 감소시키기 위해 8x8 블록 경계에 적용된 디블록킹 필터 프로세스의 일 예를 도시한다.
도 3은 밴드 오프셋(Band Offset, BO)의 일 예로서, 여기서 픽셀 강도 범위는 32개의 밴드로 균등하게 분할되고 각각의 밴드에 대해 오프셋 값이 결정된다.
도 4는 SAO(Sample Adaptive Offset)를 적용하기 위해 현재 픽셀에 대해 카테고리를 결정하기 위해, HEVC(High Efficiency Video Coding) 표준에서 사용되는 0°, 90°, 135° 및 45°에 상응하는 에지 오프셋(Edge Offset, EO) 윈도우를 도시한다.
도 5는 적응적 루프 필터(ALF)의 일 예를 도시하며, 여기서 ALF는 루마 및 크로마에 대해 cross11x5 및 snowflake5x5에 상응하는 2개의 필터 형상 옵션을 가진다.
도 6은 적응적 루프 필터(ALF)에 대한 블록 적응(block adaptation, BA) 모드에서 4x4 블록의 에지 속성 계산의 일 예를 도시한다.
도 7은 LCU-기반 디코딩에 있어서 DF, SAO 및 ALF에 필요한 루마 라인 버퍼의 수의 예를 보여준다.
도 8은 LCU-기반 디코딩에 있어서 DF, SAO 및 ALF에 필요한 크로마 라인 버퍼의 수의 예를 보여준다.
도 9a는 수평 LCU 경계를 N 픽셀만큼 상향 시프트함에 의한 VB의 일 예를 도시한다.
도 9b는 수직 LCU 경계를 N 픽셀만큼 좌측 시프트함에 의한 VB의 일 예를 도시한다.
도 10a 내지 도 10f는 가상 경계에서 수정된 루마 ALF 필터 프로세싱의 예들을 도시하며, 여기서 도 10a는 라인 M 필터링을 위해 수정된 ALF를 도시하고, 도 10b는 라인 H 필터링을 위해 수정된 ALF를 도시하고, 도 10c는 라인 L 필터링을 위해 수정된 ALF를 도시하고, 도 10d는 라인 I 필터링을 위해 수정된 ALF를 도시하고, 도 10e는 라인 J 필터링을 위해 수정된 ALF를 도시하고, 도 10f는 라인 K 필터링을 위해 수정된 ALF를 도시한다.
도 11a 내지 11d는 가상 경계에서 수정된 크로마 ALF 필터 프로세싱의 예들을 도시하며, 도 11a는 라인 N 필터링을 위해 수정된 ALF를 도시하고, 도 11b는 라인 K 필터링을 위해 수정된 ALF를 도시하고, 도 11c는 라인 M 필터링을 위해 수정된 ALF를 도시하고, 도 11d는 라인 L 필터링을 위해 수정된 ALF를 도시한다.
도 12는 동일한 색상을 갖는 샘플들에 루마 컴포넌트에 대한 7x7 필터 및 크로마 컴포넌트에 대한 5x5 필터에 대해 동일한 클리핑 값들이 사용되는 예들을 도시한다.
도 13은 본 발명의 일 실시예에 따른 재구성된 비디오의 예시적인 ALF 프로세싱에 대한 흐름도를 도시하며, 여기서 ALF 프로세싱을 위한 클리핑 값들은 필터링되는 중심의 재구성된 픽셀의 비트 깊이에 의존한다.
도 14는 본 발명의 일 실시예에 따른 재구성된 비디오의 예시적인 ALF 프로세싱에 대한 흐름도를 도시하며, 여기서 타겟 클리핑 값은 상기 타겟 클리핑 값이 0인 경우에도 항상 인코더 측에서 시그널링되거나 또는 디코더 측에서 파싱된다.
도 15는 본 발명의 일 실시예에 따른 재구성된 비디오의 예시적인 ALF 프로세싱에 대한 흐름도를 도시하며, 여기서 클리핑 값들은 고정-길이 코드를 사용하여 인코더 측에서 인코딩되거나 디코더 측에서 디코딩된다.
다음 설명은 본 발명을 수행하기 위해 가장 잘 고려된 형태에 대한 것이다. 이 설명은 본 발명의 일반적인 원리를 설명하기 위한 것이며 제한적인 의미로 받아들여서는 안된다. 본 발명의 범위는 첨부된 청구범위를 참조하여 가장 잘 정해진다.
방법 1
JVET-M0385에서는 비선형 ALF가 제안된다. 그것은 VTM3.0에서의 적응적 루프 필터의 필터링 프로세스에 적응적 클리핑 연산(clipping operation)을 도입한다. 클리핑 값들의 4개의 상이한 세트들이 제안되고, 클리핑 값들이 세트 내의 클리핑 값 인덱스를 사용하여 슬라이스 헤더에 인코딩된다. 4개 세트들의 모든 클리핑 값들은 미리 정의되며, 클리핑 값 세트의 선택은 현재 코딩된 모드(즉, 인트라 또는 인터)와 현재 코딩된 색상 컴포넌트(즉, 루마 또는 크로마)를 기반으로 한다. 이 방법에 따라, 적응적 클리핑 값들의 세트가 현재 샘플 값들의 비트-깊이(bit-depth)에 기초하여 제안되고, 그러한 현재 샘플 값들은 ALF 프로세싱의 중심 위치에서 중심의 재구성된 픽셀들에 대응한다. 예를 들어, 클리핑 값들의 4개의 상이한 세트들이 있으며, 각 세트의 선택은 현재 코딩된 모드 및 현재 코딩된 컴포넌트를 기반으로 할 수 있다. 예를 들어, 현재 샘플의 비트-깊이가 10비트와 같을 때, 4개의 클리핑 세트 값들은 {10, 102, 1024}, {6, 32, 181, 1024}, {4, 24, 1024}, 및 {4, 25, 161, 1024}로 설정된다. 현재 샘플의 비트-깊이가 8비트와 같을 때, 모든 클리핑 세트 값들은 2만큼 우측 시프트될 것이고, 즉, {10>>2, 102>>2, 1024>>2}, {6>>2, 32>>2, 181>>2, 1024>>2}, {4>>2, 24>>2, 1024>>2}, 및 {4>>2, 25>>2, 161>>2, 1024>>2}가 될 것이다. 현재 샘플의 비트-깊이가 12비트와 같을 때, 모든 클리핑 세트 값들은 2만큼 좌측 시프트될 것이고, 즉, {10<<2, 102<<2, 1024<<2}, {6<<2, 32<<2, 181<<2, 1024<<2}, {4<<2, 24<<2, 1024<<2}, 및 {4<<2, 25<<2, 161<<2, 1024<<2}가 될 것이다.
다른 실시예에서, 사용 가능한 클리핑 값의 수는 현재 샘플의 비트-깊이에 기초하여 상이할 수 있다. 예를 들어, 현재 샘플의 비트-깊이가 10비트와 같으면, 클리핑 값들의 4개 세트들은 {10, 102, 1024}, {6, 32, 181, 1024}, {4, 24, 1024}, 및 {4, 25, 161, 1024}로 설계된다. 그러나, 현재 샘플의 비트-깊이가 12비트이면, 100보다 큰 클리핑 값만 사용될 수 있다. 현재 샘플의 비트-깊이가 8비트와 같으면, 100보다 작은 클리핑 값만 사용될 수 있다. 인덱스 선택은 슬라이스 헤더, 타일 그룹 헤더, 또는 적응 파라미터 세트에서 ALF 필터 계수로 시그널링될 수 있다.
방법 2
JVET-M0385에서, 필터 풋프린트는 루마 컴포넌트에 대해 대칭 7x7 다이아몬드 필터 및 크로마 컴포넌트에 대해 대칭 5x5 다이아몬드 필터이기 때문에, 클리핑 값들을 시그널링하기 위해, 슬라이스, 타일 또는 타일 그룹에서 루마 컴포넌트에 대해 추가 12개의 파라미터와 크로마 컴포넌트에 대해 추가 6개의 파라미터가 있을 것이다.
이 방법에 따르면, 시그널링되는 클리핑 값들의 수가 감소된다. 일 실시예에서, 시그널링되는 클리핑 값들의 수를 더 줄이기 위해, 중심 위치로부터 동일한 거리를 갖는 ALF 필터에서의 샘플들은 동일한 클리핑 값들을 공유할 수 있다. 이러한 방식으로, 루마 컴포넌트에 대해 3개의 추가 파라미터와 크로마 컴포넌트에 대해 2개의 추가 파라미터만 시그널링될 필요가 있다. 예를 들어, 도 12에 도시된 바와 같이, 동일한 색상을 갖는 샘플들에는 루마 컴포넌트에 대한 7x7 필터(1210) 및 크로마 컴포넌트에 대한 5x5 필터(1220)에 대해 동일한 클리핑 값들이 사용된다. 다른 실시예에서, 단지 하나의 클리핑 값이 시그널링될 필요가 있고, 상이한 거리들을 갖는 다른 클리핑 값들은 오프셋을 더하거나 비율을 곱함으로써 유도될 수 있으며, 여기서 상기 오프셋 또는 상기 비율은 하나의 상이한 거리에서의 클리핑 값을 상기 시그널링된 클리핑 값과 비교함으로써 결정된다. 상기 오프셋 또는 비율은 미리 정의된 0이 아닌 값일 수 있고, 상기 값은 QP, 픽처 해상도, 샘플 비트-깊이에 따라 다르거나, 또는 상기 오프셋 또는 비율은 슬라이스, 타일, 타일 그룹, 또는 적응 파라미터 세트에 시그널링될(signaled) 수 있다.
상기 방법은 크로마 ALF 필터 클리핑 값을 도출하기 위해 적용될 수도 있다. 다른 실시예에서, 크로마 컴포넌트에 대해, 클리핑 값들의 세트는 루마 컴포넌트의 클리핑 값에 기초하여 도출될 수 있다. 크로마 클리핑 세트는 루마 컴포넌트의 클리핑 세트를 직접 재사용하거나, 또는 재사용 후 일부 수정을 수행할 수 있다. 예를 들어, 미리 정의된 0이 아닌 오프셋 또는 비율이 크로마에 대한 클리핑 값 세트를 정제(refine)하기 위해 사용될 수 있다. 크로마 클리핑 값들은 상기 오프셋 또는 비율을 결정하기 위한 QP, 픽처 해상도, 또는 샘플 비트-깊이에 따라 달라질 수 있다. 또한, 상기 오프셋 또는 비율은 슬라이스, 타일, 타일 그룹, 또는 적응 파라미터 세트에 직접 시그널링될 수 있다.
다른 실시예에서, 상기 클리핑 기술은 또한 ALF 필터링의 출력 및 현재 샘플에 사용될 수 있다. ALF 필터는 다음과 같이 수정된다:
Figure pct00008
위의 식에서, M(d,b)=min(b,max(-b,d))는 클리핑 함수이고, m(i,j)는 (i,j) 필터 계수에 의존하는 클리핑 파라미터이다. 인코더는 최적의 m(i,j)를 찾기 위해 최적화를 수행한다.
위에 설명된 k(i,j)와 같이 클리핑 파라미터 m(i,j)는 클리핑 값의 모든 수정을 적용할 수 있다.
다른 실시예에서, 상기 클리핑 기술은 ALF 필터링의 출력 및 현재 샘플에만 사용될 수 있다. ALF 필터는 다음과 같이 수정된다:
Figure pct00009
위에 설명된 k(i,j)와 같이 클리핑 파라미터 m(i,j)는 클리핑 값의 모든 수정을 적용할 수 있다.
방법 3
JVET-M0385에서는, 비-중심 계수가 0이 아닌 경우에만 해당 클리핑 값들이 시그널링된다. 즉, 클리핑 값을 디코딩하기 전에 먼저 필터 계수들이 재구성되어야 한다. 그러나 이로 인해 약간의 대기 시간(latency) 또는 파싱(parsing) 스루풋 문제가 생길 것이다. 이 문제를 해결하기 위해 다음의 방법이 제안된다. 일 실시예에서는, 비-중심 계수가 0인 경우에도 해당 클리핑 값들이 항상 시그널링된다. 다른 실시예에서는, alf_luma_coeff_delta_prediction_flag에 의해 표시된 바와 같은 필터 계수 예측이 표 4의 예시적인 구문 테이블에 도시된 바와 같이 사용될 때, 해당 클리핑 값들(즉, alf_luma_clip_idx [][] )이 항상 시그널링된다. 그러나 필터 계수 예측이 활성화되지 않으면, 해당 클리핑 값들이 조건부로 시그널링된다. 표 4에 나타낸 바와 같이, alf_luma_clip_idx[sigFiltIdx][j]는 filterCoefficients[sigFiltIdx][j] 또는 alf_luma_coeff_delta_prediction_flag가 0이 아닌 경우에만 시그널링된다.
ALF 데이터에 대한 구문 테이블의 예시.
alf_data( ) { Descriptor
alf_chroma_idc tu(v)
alf_luma_clip u(1)
if( alf_choma_idc )
alf_chroma_clip u(1)
...
if ( !alf_luma_coeff_delta_flag && alf_luma_num_filters_signalled_minus1 > 0 )
alf_luma_coeff_delta_prediction_flag u(1)
...
if( alf_luma_clip ) {
alf_luma_clip_min_eg_order_minus1 ue(v)
for( i = 0; i < 3; i++ )
alf_luma_clip_eg_order_increase_flag[ i ] u(1)
for ( sigFiltIdx = 0; sigFiltIdx <= alf_luma_num_filters_signalled_minus1; sigFiltIdx++ ) {
if ( alf_luma_coeff_flag[ sigFiltIdx ] ) {
for ( j = 0; j < 12; j++ ) {
if( filterCoefficients[ sigFiltIdx ][ j ] || alf_luma_coeff_delta_prediction_flag)
alf_luma_clip_idx[ sigFiltIdx ][ j ] uek(v)
}
}
}
}
...
고정 필터 세트들이 허용되는 경우, 고정 필터에 정의된 필터 계수들이 필터 계수들을 예측하기 위해 사용될 수도 있다. 따라서, 클리핑 값들의 시그널링 기준도 이 요소를 고려해야 한다. 상기 실시예를 포함하는 예시적인 구문 테이블이 표 5에 도시되어 있다. 이에 따라, 필터 계수 예측이 활성화될 때(즉, 예측자가 (alf_luma_use_fixed_filter_flag && alf_luma_fixed_filter_usage[ filtidx ])로 표시된 바와 같이 하나의 고정된 필터임 또는 (alf_luma_coeff_delta_prediction_flag)로 표시된 바와 같이 이전의 시그널링된 필터임), 클리핑 값들이 항상 시그널링된다. 필터 계수 예측이 비활성화되면, 필터 계수가 0이 아닐 때 클리핑 값들이 시그널링된다.
ALF 데이터에 대한 구문 테이블의 예시.
for ( sigFiltIdx = 0; sigFiltIdx <= alf_luma_num_filters_signalled_minus1; sigFiltIdx++ ) {
if ( alf_luma_coeff_flag[ sigFiltIdx ] ) {
for ( j = 0; j < 12; j++ ) {
if( filterCoefficients[ sigFiltIdx ][ j ]
|| alf_luma_coeff_delta_prediction_flag
|| ( alf_luma_use_fixed_filter_flag && alf_luma_fixed_filter_usage[ filtidx ]))
alf_luma_clip_idx[ sigFiltIdx ][ j ] uek(v)
}
}
}
다른 실시예에서는, 클리핑 값들을 시그널링하는 구문이 단순화된다. k차 지수 골롬 코드가 하나의 고정-길이 코드, 예를 들어, 표 6 및 표 7의 예시적인 구문 테이블에 나타낸 바와 같이 2비트(즉, 표 6에서 u(2)를 사용하는 alf_luma_clip_idx[][] 및 alf_chroma_clip_idx[], 여기서 u(u)는 2비트를 사용하는 무부호(unsigned) 정수를 의미함) 또는 트렁케이티드 유너리 코드(truncated unary codes)(즉, 표 7에서 tu(v)를 사용하는 alf_luma_clip_idx[][] 및 alf_chroma_clip_idx[], 여기서 tu(v)는 최대 maxVal 비트(maxVal은 구문 요소의 의미론에 정의됨)를 사용하는 트렁케이티드 유너리를 의미함)에 의해 대체되고, 여기서 회색 영역의 텍스트는 삭제된 텍스트에 해당한다.
ALF 데이터에 대한 구문 테이블의 예시.
alf_data( ) { Descriptor
...
if( alf_luma_clip ) {
alf_luma_clip_min_eg_order_minus1 ue(v)
for( i = 0; i < 3; i++ )
alf_luma_clip_eg_order_increase_flag[ i ] u(1)
for ( sigFiltIdx = 0; sigFiltIdx <= alf_luma_num_filters_signalled_minus1; sigFiltIdx++ ) {
if ( alf_luma_coeff_flag[ sigFiltIdx ] ) {
for ( j = 0; j < 12; j++ ) {
if( filterCoefficients[ sigFiltIdx ][ j ])
alf_luma_clip_idx[ sigFiltIdx ][ j ] u(2)
}
}
}
}
...
if ( alf_chroma_idc > 0 && alf_chroma_clip ) {
alf_chroma_clip_min_eg_order_minus1 ue(v)
for( i = 0; i < 2; i++ )
alf_chroma_clip_eg_order_increase_flag[ i ] u(1)
for( j = 0; j < 6; j++ ) {
if( alf_chroma_coeff_abs[ j ] )
alf_chroma_clip_idx[ j ] u(2)
}
}
...
ALF 데이터에 대한 구문 테이블의 예시.
alf_data( ) { Descriptor
...
if( alf_luma_clip ) {
alf_luma_clip_min_eg_order_minus1 ue(v)
for( i = 0; i < 3; i++ )
alf_luma_clip_eg_order_increase_flag[ i ] u(1)
for ( sigFiltIdx = 0; sigFiltIdx <= alf_luma_num_filters_signalled_minus1;
sigFiltIdx++ ) {
if ( alf_luma_coeff_flag[ sigFiltIdx ] ) {
for ( j = 0; j < 12; j++ ) {
if( filterCoefficients[ sigFiltIdx ][ j ] || alf_luma_coeff_delta_prediction_flag)
alf_luma_clip_idx[ sigFiltIdx ][ j ] tu(v)
}
}
}
}
...
if ( alf_chroma_idc > 0 && alf_chroma_clip ) {
alf_chroma_clip_min_eg_order_minus1 ue(v)
for( i = 0; i < 2; i++ )
alf_chroma_clip_eg_order_increase_flag[ i ] u(1)
for( j = 0; j < 6; j++ ) {
if( alf_chroma_coeff_abs[ j ] )
alf_chroma_clip_idx[ j ] tu(v)
}
}
...
앞서 제안된 방법들 중 임의의 것은 인코더 및/또는 디코더에서 구현될 수 있다. 예를 들어, 제안된 방법들 중 임의의 것은 인코더 및/또는 디코더의 인-루프 필터링 모듈에서 구현될 수 있다. 대안적으로, 제안된 방법들 중 임의의 것은 인코더 및/또는 디코더의 인-루프 필터링 모듈에 결합된 회로로서 구현될 수 있다.
도 13은 본 발명의 일 실시예에 따른 재구성된 비디오의 예시적인 ALF 프로세싱의 흐름도를 도시하며, 여기서 ALF 프로세싱을 위한 클리핑 값들은 필터링되는 중심의 재구성된 픽셀의 비트 깊이에 의존한다. 흐름도에 도시된 단계들은 인코더 측의 하나 이상의 프로세서(예를 들어, 하나 이상의 CPU) 상에 실행 가능한 프로그램 코드로 구현될 수 있다. 흐름도에 도시된 단계들은 또한 흐름도의 단계들을 수행하도록 마련된 하나 이상의 전자 디바이스 또는 프로세서와 같은 하드웨어 기반으로 구현될 수 있다. 이 방법에 따르면, 단계 1310에서 재구성된 픽셀들이 수신되고, 상기 재구성된 픽셀들은 현재 블록을 포함한다. 단계 1320에서, ALF 프로세싱의 중심 위치에서 중심의 재구성된 픽셀의 비트 깊이에 따라 ALF 프로세싱을 위한 하나 이상의 클리핑 값들이 결정된다. 단계 1330에서 상기 현재 블록에 대해 현재 ALF 출력이 도출되고, 상기 현재 ALF 출력은 원래 차분들에 대한 클리핑된 차분들의 가중합을 포함하고 상기 원래 차분들의 각각은 비-중심 필터 위치에서의 제1 재구성된 픽셀과 상기 중심의 재구성된 픽셀 간에 계산되며, 상기 원래 차분들의 각각은 대응하는 클리핑 값에 따라 클리핑되어 하나의 클리핑된 차분을 형성한다. 단계 1340에서 필터링된 재구성된(filtered-reconstructed) 픽셀들이 제공되며, 상기 필터링된 재구성된 픽셀들은 상기 현재 ALF 출력을 포함한다.
도 14는 본 발명의 일 실시예에 따른 재구성된 비디오의 예시적인 ALF 프로세싱의 흐름도를 도시하며, 여기서 타겟 클리핑 값은 상기 타겟 클리핑 값이 0인 경우에도 항상 인코더 측에서 시그널링되거나 디코더 측에서 파싱된다. 이 방법에 따르면, 단계 1410에서 재구성된 픽셀들이 수신되고, 상기 재구성된 픽셀들은 현재 블록을 포함한다. 단계 1420에서 ALF 프로세싱을 위해 하나 이상의 클리핑 값이 결정되며, 여기서 타겟 클리핑 값은 상기 타겟 클리핑 값이 0인 경우에도 항상 인코더 측에서 시그널링되거나 디코더 측에서 파싱된다. 단계 1430에서 상기 현재 블록에 대해 현재 ALF 출력이 도출되며, 상기 현재 ALF 출력은 원래 차분들에 대한 클리핑된 차분들의 가중합을 포함하고 상기 원래 차분들의 각각은 비-중심 필터 위치에서의 제1 재구성된 픽셀과 중심의 재구성된 픽셀 간에 계산되고, 상기 원래 차분들의 각각은 대응하는 클리핑 값에 따라 클리핑되어 하나의 클리핑된 차분을 형성한다. 단계 1440에서 필터링된 재구성된 픽셀들이 제공되며, 상기 필터링된 재구성된 픽셀들은 상기 현재 ALF 출력을 포함한다.
도 15는 본 발명의 일 실시예에 따른 재구성된 비디오의 예시적인 ALF 프로세싱의 흐름도를 도시하며, 여기서 클리핑 값들은 고정-길이 코드를 사용하여 인코더 측에서 인코딩되거나 디코더 측에서 디코딩된다. 이 방법에 따르면, 단계 1510에서 재구성된 픽셀들이 수신되고, 상기 재구성된 픽셀들은 현재 블록을 포함한다. 단계 1520에서 ALF 프로세싱을 위해 하나 이상의 클리핑 값이 결정되고, 상기 하나 이상의 클리핑 값들은 고정-길이 코드를 사용하여 인코더 측에서 인코딩되거나 디코더 측에서 디코딩된다. 단계 1530에서 상기 현재 블록에 대해 현재 ALF 출력이 도출되며, 상기 현재 ALF 출력은 원래 차분들에 대한 클리핑된 차분들의 가중합을 포함하고 상기 원래 차분들의 각각은 비-중심 필터 위치에서의 제1 재구성된 픽셀과 중심의 재구성된 픽셀 간에 계산되고, 상기 원래 차분들의 각각은 대응하는 클리핑 값에 따라 클리핑되어 하나의 클리핑된 차분을 형성한다. 단계 1540에서 필터링된 재구성된 픽셀들이 제공되며, 상기 필터링된 재구성된 픽셀들은 상기 현재 ALF 출력을 포함한다.
도시된 흐름도는 본 발명에 따른 비디오 코딩의 예를 예시하기 위한 것이다. 이 분야의 기술자는 본 발명의 사상을 벗어나지 않고 본 발명을 실시하기 위해 각 단계를 수정하거나, 단계들을 재배열하거나, 하나의 단계를 분할하거나, 단계들을 결합할 수 있을 것이다. 본 개시에서는, 본 발명의 실시예를 구현하기 위한 예를 설명하기 위해 특정 구문(syntax) 및 의미론(semantics)이 사용되었다. 이 분야의 기술자는 본 발명의 사상을 벗어나지 않고 상기 구문 및 의미론을 등가의 구문 및 의미론으로 대체함으로써 본 발명을 실시할 수 있을 것이다.
상기 설명은 이 분야의 통상의 기술자가 특정 응용 및 그 요건의 맥락에서 제공된 바와 같이 본 발명을 실시할 수 있도록 제공된 것이다. 설명된 실시예들에 대한 다양한 수정이 이 분야의 기술자들에게 명백할 것이며, 본 명세서에서 정의된 일반적인 원리들은 다른 실시예들에 적용될 수 있을 것이다. 따라서, 본 발명은 도시되고 설명된 특정 실시예들에 제한되도록 의도되지 않으며, 본 명세서에 개시된 원리들 및 신규한 특징들에 부합하는 가장 넓은 범위가 부여되어야 할 것이다. 위의 상세한 설명에는, 본 발명의 완전한 이해를 제공하기 위해 다양한 특정 세부사항이 예시되어 있다. 그럼에도 불구하고, 본 발명이 실시될 수 있음이 이 분야의 기술자들에 의해 이해될 것이다.
상술한 바와 같은 본 발명의 실시예는 다양한 하드웨어, 소프트웨어 코드들, 또는 둘 모두의 조합으로 구현될 수 있다. 예를 들어, 본 발명의 일 실시예는 본 명세서에서 설명된 프로세싱을 수행하기 위해 비디오 압축 칩에 통합된 하나 이상의 회로 또는 비디오 압축 소프트웨어에 통합된 프로그램 코드일 수 있다. 본 발명의 일 실시예는 또한 본 명세서에서 설명된 프로세싱을 수행하기 위해 디지털 신호 프로세서(DSP) 상에서 실행될 프로그램 코드일 수 있다. 본 발명은 또한 컴퓨터 프로세서, 디지털 신호 프로세서, 마이크로프로세서, 또는 필드 프로그래밍 가능 게이트 어레이(FPGA)에 의해 수행될 다수의 기능을 포함할 수 있다. 이들 프로세서는 본 발명에 의해 구현되는 특정 방법을 정의하는 머신-판독가능 소프트웨어 코드 또는 펌웨어 코드를 실행함으로써, 본 발명에 따른 특정 작업을 수행하도록 구성될 수 있다. 소프트웨어 코드 또는 펌웨어 코드는 상이한 프로그래밍 언어 및 상이한 포맷 또는 스타일로 개발될 수 있다. 소프트웨어 코드는 또한 상이한 타겟 플랫폼들에 대해 컴파일링될 수도 있다. 그러나, 본 발명에 따른 작업을 수행하기 위한 소프트웨어 코드의 상이한 코드 포맷, 스타일 및 언어와, 코드를 구성하는 다른 수단은 본 발명의 사상 및 범위를 벗어나지 않을 것이다.
본 발명은 그 사상 또는 본질적인 특성을 벗어나지 않고 다른 특정 형태로 구현될 수 있다. 설명된 예시들은 모든 면에서 예시적인 것일 뿐 제한적인 것으로 고려되어서는 안된다. 따라서, 본 발명의 범위는 전술한 설명보다는 첨부된 청구범위에 의해 나타내어진다. 청구항들과 등가의 의미 및 범위 내에 있는 모든 변경은 청구항들의 범위 내에 포함되어야 할 것이다.

Claims (19)

  1. 재구성된 비디오의 적응적 루프 필터(Adaptive Loop Filter, ALF) 프로세싱을 위한 방법으로서,
    현재 블록을 포함하는 재구성된 픽셀들을 수신하는 단계;
    상기 ALF 프로세싱의 중심 위치에서 중심의 재구성된 픽셀의 비트 깊이(bit depth)에 따라 상기 ALF 프로세싱을 위한 하나 이상의 클리핑 값(clipping values)을 결정하는 단계;
    상기 현재 블록에 대한 현재 ALF 출력을 도출하는 단계 - 상기 현재 ALF 출력은 원래 차분들의 클리핑된 차분들의 가중합(weighted sum)을 포함하고, 상기 원래 차분들의 각각은 비-중심(non-center) 필터 위치에서의 제1 재구성된 픽셀과 상기 중심의 재구성된 픽셀 간에 계산되고, 상기 원래 차분들의 각각은 대응하는 클리핑 값에 따라 클리핑되어 하나의 클리핑된 차분을 형성함 -; 및
    상기 현재 ALF 출력을 포함하는 필터링된 재구성된 픽셀들을 제공하는 단계
    를 포함하는, ALF 프로세싱을 위한 방법.
  2. 제1 항에 있어서,
    상이한 비트 깊이들에 대해 클리핑 값들의 상이한 세트들이 사용되는, 방법.
  3. 제1 항에 있어서,
    인트라(Intra) 및 인터(Inter) 코딩 모드들에 대해 클리핑 값들의 상이한 세트들이 사용되는, 방법.
  4. 제1 항에 있어서,
    재구성된 루마(luma) 픽셀들 및 재구성된 크로마(chroma) 픽셀들에 대해 클리핑 값들의 상이한 세트들이 사용되는, 방법.
  5. 제1 항에 있어서,
    제1 비트 깊이에 대한 제1 클리핑 값들은, 상기 제1 클리핑 값들을 N 비트들만큼 좌측-시프팅 또는 우측-시프팅하는 것에 상응하는 적어도 하나의 연산에 의해, 제2 비트 깊이에 대한 제2 클리핑 값들로부터 도출되고, N은 양의 정수인, 방법.
  6. 제1 항에 있어서,
    상기 재구성된 픽셀들은 루마 픽셀들에 상응하는, 방법.
  7. 제1 항에 있어서,
    상기 재구성된 픽셀들은 크로마 픽셀들에 상응하는, 방법.
  8. 제1 항에 있어서,
    상기 ALF 프로세싱은 인코더 측에서 상기 재구성된 픽셀들에 적용되는, 방법.
  9. 제1 항에 있어서,
    상기 ALF 프로세싱은 디코더 측에서 상기 재구성된 픽셀들에 적용되는, 방법.
  10. 제1 항에 있어서,
    상기 하나 이상의 클리핑 값은 슬라이스(slice), 타일(tile) 또는 타일 그룹(tile group)에서 시그널링되는, 방법.
  11. 재구성된 비디오의 적응적 루프 필터(ALF) 프로세싱을 위한 장치로서,
    현재 블록을 포함하는 재구성된 픽셀들을 수신하고;
    ALF 프로세싱의 중심 위치에서 중심의 재구성된 픽셀의 비트 깊이에 따라 상기 ALF 프로세싱을 위한 하나 이상의 클리핑 값을 결정하고;
    상기 현재 블록에 대한 현재 ALF 출력을 도출하고 - 상기 현재 ALF 출력은 원래 차분들의 클리핑된 차분들의 가중합을 포함하고, 상기 원래 차분들의 각각은 비-중심 필터 위치에서의 제1 재구성된 픽셀과 상기 중심의 재구성된 픽셀 간에 계산되고, 상기 원래 차분들의 각각은 대응하는 클리핑 값에 따라 클리핑되어 하나의 클리핑된 차분을 형성함 -;
    상기 현재 ALF 출력을 포함하는 필터링된 재구성된 픽셀들을 제공하도록
    마련된 하나 이상의 전자 회로 또는 프로세서를 포함하는, ALF 프로세싱을 위한 장치.
  12. 재구성된 비디오의 적응적 루프 필터(ALF) 프로세싱을 위한 방법으로서,
    현재 블록을 포함하는 재구성된 픽셀들을 수신하는 단계;
    상기 ALF 프로세싱을 위한 하나 이상의 클리핑 값을 결정하는 단계 - 타겟 클리핑 값은 상기 타겟 클리핑 값이 0인 경우에도 항상 인코더 측에서 시그널링되거나 디코더 측에서 파싱됨 -;
    상기 현재 블록에 대한 현재 ALF 출력을 도출하는 단계 - 상기 현재 ALF 출력은 원래 차분들의 클리핑된 차분들의 가중합을 포함하고, 상기 원래 차분들의 각각은 비-중심 필터 위치에서의 제1 재구성된 픽셀과 중심 필터 위치에서의 중심의 재구성된 픽셀 간에 계산되고, 상기 원래 차분들의 각각은 대응하는 클리핑 값에 따라 클리핑되어 하나의 클리핑된 차분을 형성함 -; 및
    상기 현재 ALF 출력을 포함하는 필터링된 재구성된 픽셀들을 제공하는 단계
    를 포함하는, ALF 프로세싱을 위한 방법.
  13. 제12 항에 있어서,
    상기 하나 이상의 클리핑 값은 슬라이스, 타일 또는 타일 그룹에서 시그널링되는, 방법.
  14. 재구성된 비디오의 적응적 루프 필터(ALF) 프로세싱을 위한 장치로서,
    현재 블록을 포함하는 재구성된 픽셀들을 수신하고;
    상기 ALF 프로세싱을 위한 하나 이상의 클리핑 값을 결정하고 - 타겟 클리핑 값은 상기 타겟 클리핑 값이 0인 경우에도 항상 인코더 측에서 시그널링되거나 디코더 측에서 파싱됨 -;
    상기 현재 블록에 대한 현재 ALF 출력을 도출하고 - 상기 현재 ALF 출력은 원래 차분들의 클리핑된 차분들의 가중합을 포함하고, 상기 원래 차분들의 각각은 비-중심 필터 위치에서의 제1 재구성된 픽셀과 중심 필터 위치에서의 중심의 재구성된 픽셀 간에 계산되고, 상기 원래 차분들의 각각은 대응하는 클리핑 값에 따라 클리핑되어 하나의 클리핑된 차분을 형성함 -;
    상기 현재 ALF 출력을 포함하는 필터링된 재구성된 픽셀들을 제공하도록
    마련된 하나 이상의 전자 회로 또는 프로세서를 포함하는, ALF 프로세싱을 위한 장치.
  15. 재구성된 비디오의 적응적 루프 필터(ALF) 프로세싱을 위한 방법으로서,
    현재 블록을 포함하는 재구성된 픽셀들을 수신하는 단계;
    상기 ALF 프로세싱을 위한 하나 이상의 클리핑 값들을 결정하는 단계 - 상기 하나 이상의 클리핑 값들은 고정-길이 코드를 사용하여 인코더 측에서 인코딩되거나 디코더 측에서 디코딩됨 -;
    상기 현재 블록에 대한 현재 ALF 출력을 도출하는 단계 - 상기 현재 ALF 출력은 원래 차분들의 클리핑된 차분들의 가중합을 포함하고, 상기 원래 차분들의 각각은 비-중심 필터 위치에서의 제1 재구성된 픽셀과 중심 필터 위치에서의 중심의 재구성된 픽셀 간에 계산되고, 상기 원래 차분들의 각각은 대응하는 클리핑 값에 따라 클리핑되어 하나의 클리핑된 차분을 형성함 -; 및
    상기 현재 ALF 출력을 포함하는 필터링된 재구성된 픽셀들을 제공하는 단계
    를 포함하는, ALF 프로세싱을 위한 방법.
  16. 제15 항에 있어서,
    상기 고정-길이 코드는 2비트 코드들에 상응하는, 방법.
  17. 제15 항에 있어서,
    상기 고정-길이 코드는 트렁케이티드 유너리 코드들(truncated unary codes)에 상응하는, 방법.
  18. 제15 항에 있어서,
    상기 하나 이상의 클리핑 값은 슬라이스, 타일 또는 타일 그룹에서 시그널링되는, 방법.
  19. 재구성된 비디오의 적응적 루프 필터(ALF) 프로세싱을 위한 장치로서,
    현재 블록을 포함하는 재구성된 픽셀들을 수신하고;
    ALF 프로세싱을 위한 하나 이상의 클리핑 값을 결정하고 - 상기 하나 이상의 클리핑 값은 고정-길이 코드를 사용하여 인코더 측에서 인코딩되거나 디코더 측에서 디코딩됨 -;
    상기 현재 블록에 대한 현재 ALF 출력을 도출하고 - 상기 현재 ALF 출력은 원래 차분들의 클리핑된 차분들의 가중합을 포함하고, 상기 원래 차분들의 각각은 비-중심 필터 위치에서의 제1 재구성된 픽셀과 중심 필터 위치에서의 중심의 재구성된 픽셀 간에 계산되고, 상기 원래 차분들의 각각은 대응하는 클리핑 값에 따라 클리핑되어 하나의 클리핑된 차분을 형성함 -;
    상기 현재 ALF 출력을 포함하는 필터링된 재구성된 픽셀들을 제공하도록
    마련된 하나 이상의 전자 회로 또는 프로세서를 포함하는, ALF 프로세싱을 위한 장치.
KR1020217026713A 2019-01-25 2020-01-21 비디오 코딩에서 비선형 적응적 루프 필터링을 위한 방법 및 장치 KR20210117327A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962796608P 2019-01-25 2019-01-25
US62/796,608 2019-01-25
US201962832349P 2019-04-11 2019-04-11
US62/832,349 2019-04-11
PCT/CN2020/073567 WO2020151714A1 (en) 2019-01-25 2020-01-21 Method and apparatus for non-linear adaptive loop filtering in video coding

Publications (1)

Publication Number Publication Date
KR20210117327A true KR20210117327A (ko) 2021-09-28

Family

ID=71735436

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217026713A KR20210117327A (ko) 2019-01-25 2020-01-21 비디오 코딩에서 비선형 적응적 루프 필터링을 위한 방법 및 장치

Country Status (6)

Country Link
US (2) US11477448B2 (ko)
EP (1) EP3915253A4 (ko)
KR (1) KR20210117327A (ko)
CN (1) CN113785569B (ko)
TW (1) TWI737137B (ko)
WO (1) WO2020151714A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BR112021022051A2 (pt) * 2019-05-04 2021-12-28 Huawei Tech Co Ltd Codificador, decodificador e métodos correspondentes usando um filtro loop adaptativo
US11418779B2 (en) 2019-06-11 2022-08-16 Qualcomm Incorporated Clipping indices coding for adaptive loop filter in video coding
CN113766248B (zh) * 2019-06-25 2022-10-18 北京大学 环路滤波的方法与装置
CN115643402B (zh) * 2019-12-28 2023-09-19 北京达佳互联信息技术有限公司 用于对视频数据进行编码的方法、设备和介质
US20220103825A1 (en) * 2020-09-30 2022-03-31 Qualcomm Incorporated Constraining operational bit depth of adaptive loop filtering for coding of video data at different bit depth
US11750846B2 (en) * 2021-03-22 2023-09-05 Tencent America LLC Method and apparatus for video filtering
WO2024017200A1 (en) * 2022-07-18 2024-01-25 Mediatek Inc. Method and apparatus for adaptive loop filter with tap constraints for video coding
WO2024016983A1 (en) * 2022-07-20 2024-01-25 Mediatek Inc. Method and apparatus for adaptive loop filter with geometric transform for video coding

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9094658B2 (en) * 2010-05-10 2015-07-28 Mediatek Inc. Method and apparatus of adaptive loop filtering
WO2012094750A1 (en) 2011-01-14 2012-07-19 Ebrisk Video Inc. Adaptive loop filtering using multiple filter shapes
US9807395B2 (en) * 2011-01-18 2017-10-31 Dolby International Ab Video decoder with reduced dynamic range transform with inverse transform shifting memory
US9277228B2 (en) 2011-07-18 2016-03-01 Qualcomm Incorporated Adaptation parameter sets for video coding
US9432700B2 (en) * 2011-09-27 2016-08-30 Broadcom Corporation Adaptive loop filtering in accordance with video coding
RU2718230C2 (ru) 2011-11-08 2020-03-31 Кт Корпорейшен Способ декодирования видеосигнала
US10708622B2 (en) * 2011-12-20 2020-07-07 Texas Instruments Incorporated Adaptive loop filtering (ALF) for video coding
US9596463B2 (en) 2012-02-22 2017-03-14 Qualcomm Incorporated Coding of loop filter parameters using a codebook in video coding
BR112014029917A2 (pt) 2013-04-05 2017-07-25 Sony Corp aparelho e método de processamento de imagem.
CN107925762B (zh) 2015-09-03 2020-11-27 联发科技股份有限公司 基于神经网络的视频编解码处理方法和装置
US20190045224A1 (en) 2016-02-04 2019-02-07 Mediatek Inc. Method and apparatus of non-local adaptive in-loop filters in video coding
US10419755B2 (en) * 2016-05-16 2019-09-17 Qualcomm Incorporated Confusion of multiple filters in adaptive loop filtering in video coding
EP3297282A1 (en) * 2016-09-15 2018-03-21 Thomson Licensing Method and apparatus for video coding with adaptive clipping
US20180091812A1 (en) 2016-09-23 2018-03-29 Apple Inc. Video compression system providing selection of deblocking filters parameters based on bit-depth of video data
US10469876B2 (en) * 2016-12-22 2019-11-05 Mediatek Inc. Non-local adaptive loop filter combining multiple denoising technologies and grouping image patches in parallel
US10419758B2 (en) * 2017-03-16 2019-09-17 Mediatek Inc. Non-local adaptive loop filter processing
WO2018174593A1 (ko) 2017-03-22 2018-09-27 김기백 적응적인 화소 분류 기준에 따른 인루프 필터링 방법
EP3632110A1 (en) * 2017-07-05 2020-04-08 ARRIS Enterprises LLC Post-filtering for weighted angular prediction
WO2019135655A1 (ko) * 2018-01-08 2019-07-11 삼성전자주식회사 영상 부호화 방법 및 장치, 영상 복호화 방법 및 장치

Also Published As

Publication number Publication date
US11477448B2 (en) 2022-10-18
US20220394246A1 (en) 2022-12-08
TW202034701A (zh) 2020-09-16
TWI737137B (zh) 2021-08-21
CN113785569A (zh) 2021-12-10
CN113785569B (zh) 2023-09-08
EP3915253A1 (en) 2021-12-01
WO2020151714A1 (en) 2020-07-30
US11909965B2 (en) 2024-02-20
EP3915253A4 (en) 2022-11-09
US20220094919A1 (en) 2022-03-24

Similar Documents

Publication Publication Date Title
US11909965B2 (en) Method and apparatus for non-linear adaptive loop filtering in video coding
EP2708027B1 (en) Method and apparatus for reduction of in-loop filter buffer
US11743458B2 (en) Method and apparatus for reduction of in-loop filter buffer
WO2021013178A1 (en) Method and apparatus of cross-component adaptive loop filtering with virtual boundary for video coding
AU2013248857B2 (en) Method and apparatus for loop filtering across slice or tile boundaries
KR101752612B1 (ko) 비디오 코딩을 위한 샘플 적응적 오프셋 프로세싱의 방법
US20220303587A1 (en) Method and Apparatus for Adaptive Loop Filtering at Picture and Sub-Picture Boundary in Video Coding
US8913656B2 (en) Method and apparatus for in-loop filtering
WO2021052361A1 (en) Method and apparatus of constrained cross-component adaptive loop filtering for video coding
US11523138B2 (en) Method and apparatus for cross component filtering
RU2783342C1 (ru) Способ и устройство для нелинейной адаптивной контурной фильтрации при кодировании видео

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant