KR20220041939A - 크로마에 대한 교차 성분 적응적 루프 필터 - Google Patents

크로마에 대한 교차 성분 적응적 루프 필터 Download PDF

Info

Publication number
KR20220041939A
KR20220041939A KR1020227008930A KR20227008930A KR20220041939A KR 20220041939 A KR20220041939 A KR 20220041939A KR 1020227008930 A KR1020227008930 A KR 1020227008930A KR 20227008930 A KR20227008930 A KR 20227008930A KR 20220041939 A KR20220041939 A KR 20220041939A
Authority
KR
South Korea
Prior art keywords
filter
ccalf
bits
coefficients
component
Prior art date
Application number
KR1020227008930A
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 KR20220041939A publication Critical patent/KR20220041939A/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/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/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/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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
    • 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

Landscapes

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

Abstract

이미지를 필터링하는 방법이 개시되며, 이 방법은: 참조 샘플을 둘러싸는 샘플들에 대응하는 필터 계수들 및 제1 성분 샘플 값들을 수신하는 단계, 및 교차 성분 필터 출력을 생성하기 위해 상기 필터 계수들 및 제1 성분 샘플 값들을 교차 성분 필터에 입력하는 단계를 포함하며; 여기서 상기 교차 성분 필터는 제한된 비트 수를 사용하여 상기 필터 계수들 및/또는 제1 성분 샘플 값들을 표현하여 상기 필터 출력을 생성한다.

Description

크로마에 대한 교차 성분 적응적 루프 필터
본 발명은 비디오 성분의 블록들의 인코딩 또는 디코딩에 관한 것이다. 본 발명의 실시예들은 그러한 성분의 샘플들을 필터링하기 위한 필터를 제어할 때 특별하지만 배타적이지는 않은 용도가 있다. 특별히 그러나 배타적이지 않게, 적응적 루프 필터(adaptive loop filter)를 제어한다.
비디오 코딩은 이미지 코딩을 포함한다(이미지는 비디오의 단일 프레임과 동등하다). 비디오 코딩에서, 변환 계수들의 양자화 또는 모션 보상(종종 보간 필터들을 사용하여 수행됨)과 같은 일부 코딩 툴들은 종종 왜곡 편향들/효과들(시스템적인 것으로 보이거나 적어도 주어진 콘텍스트에서 랜덤하지 않은 왜곡들)을 도입한다. 해당 편향들/아티팩트들을 보상하고 코딩 효율을 개선시키기(또는 적어도 양호한 레벨의 코딩 효율을 유지하기) 위해, 포스트 필터(post-filter) 또는 인루프 필터(in-loop filter)라고 불리는 일부 특정 코딩 툴들이 사용된다. 디블로킹 필터(deblocking filter, DBF), 샘플 적응적 오프셋(sample adaptive offset, SAO) 필터 또는 적응적 루프 필터(ALF)는 그러한 코딩 툴들의 일부 예들이다. 인루프 필터들이 현재 프레임에 제공하는 이미지 품질 향상이 현재 프레임에 기초하여 코딩되는 후속 프레임들에 대한 향상된 코딩 효율을 가능하게 하도록, 코딩 루프 내에서 인루프 필터들이 적용된다. 예를 들어, DCT 계수들의 양자화는 비디오 압축에 효율적이지만 종종 압축된 샘플 블록들의 경계들에 블로킹 아티팩트들(편향들)을 도입한다. 디블로킹 필터는 그러한 아티팩트들로 인해 발생하는 바람직하지 않은 효과들을 감소시킨다. (디코딩된 프레임이 다른 프레임에 대한 모션 보상을 위한 참조 프레임으로서 역할하기 전에) 코딩 루프 내에서 디코딩된 프레임을 (DBF를 사용하여) 디블로킹하는 것은 (예를 들면, 예를 들어, 프레임을 디스플레이하기 직전에) 코딩 루프 밖에서 프레임을 디블로킹하는 것과 비교하여 모션 보상의 코딩 효율을 크게 향상시킨다.
본 발명은 특히 디코딩된 프레임들/이미지들에서의 바람직하지 않은 압축 아티팩트들을 감소시키기 위해 인루프 필터로서 또한 적용되는 적응적 루프 필터(ALF)에 관한 것이다. ALF는 VCEG/MPEG(Video Coding Experts Group/Moving Picture Experts Group) 표준화 그룹들에 의해 연구되었으며, VVC(Versatile Video Coding) 표준에서, 예를 들어, VVC Test Model 소프트웨어의 다섯 번째 버전(VTM-5.0 또는 VVC 초안 버전 5)에서 사용하기 위해 고려되고 있다. 루마 채널의 샘플 값들을 사용하여 크로마 채널의 샘플 값들에 대해 이루어진 아티팩트들의 추가적인 오류 정정을 추정하는 ALF에 대한 보조 필터인 CCALF(Cross Component ALF)가 JVET-O0636, Joint Video Experts Team (JVET), 15th Meeting: Gothenburg, SE, 3-12 July 2019에서 제안되었다. 각각의 크로마 채널에 대해 CCALF가 적용될 수 있다.
본 발명은 교차 성분 필터를 단순화하는 것에 의해 CCALF 프로세스의 일 부분의 코딩 성능을 개선시키는 것에 관한 것이다.
본 발명의 실시예들은 필터 계수들 또는 교차 성분 입력 샘플들 중 어느 하나 또는 양쪽 모두의 (내부 비트 깊이에 비해) 감소된 비트 깊이의 표현을 사용하는 것에 관한 것이다. 이러한 제한은 비트 시프트 연산 및/또는 필터 계수들/입력 샘플들의 특정 비트들을 무시하는 것에 의해 수행될 수 있다.
본 발명의 일 양태에서, 이미지 부분을 필터링하는 방법이 제공되며, 이 방법은: 참조 샘플을 둘러싸는 샘플들에 대응하는 필터 계수들 및 제1 성분 샘플 값들을 수신하는 단계, 및 교차 성분 필터 출력을 생성하기 위해 상기 필터 계수들 및 제1 성분 샘플 값들을 교차 성분 필터에 입력하는 단계를 포함하며; 여기서 상기 교차 성분 필터는 제한된 비트 수를 사용하여 상기 필터 계수들 및/또는 제1 성분 샘플 값들을 표현하여 상기 필터 출력을 생성한다.
그러한 방식으로, 필터 계산이 단순화되고 대부분의 CCALF 코딩 개선이 놀랍게도 유지된다.
선택적으로, 상기 제한된 비트 수는 내부 비트 깊이에 의해 정의되는 비트 수보다 낮다.
효율적인 구현을 위해, 상기 필터 계수들 및/또는 제1 성분 샘플 값들을 표현하기 위한 상기 제한된 비트 수는 필터 출력이 16 개 이하의 비트로 표현될 수 있도록 되어 있다.
선택적으로, 이 방법은 상기 교차 성분 필터 출력을 상이한 성분에 대응하는 필터의 출력과 결합시키는 단계를 더 포함한다. 선택적으로, 상기 제1 성분은 루마 성분이고 상이한 성분은 크로마 성분이다.
효율적인 구현을 위해, 이 방법은 필터 곱셈 연산 이전에 비트 수를 감소시키기 위해 비트 시프트 연산을 수행하는 단계를 포함한다. 이것은 단순화된 필터 계산을 가능하게 한다.
샘플 값들의 제한
본 발명의 일 양태에서, 샘플 값들을 표현하는 데 사용되는 비트 수가 감소된다.
선택적으로, 제3 변형에 따르면, 제한하는 것은 특정 비트들만을 고려하는 것에 의해 샘플 값의 정밀도를 감소시키는 것을 포함한다.
선택적으로, 미리 정의된 수의 최하위 비트들; 예를 들어, 최하위 비트, 최하위 2 비트, 최하위 3 비트 또는 최하위 4 비트가 무시된다.
선택적으로, 미리 정의된 수의 최상위 비트들; 예를 들어, 최상위 8 비트, 최상위 7 비트, 최상위 6 비트, 최상위 5 비트 또는 최상위 4 비트가 유지된다.
추가의 단순화를 위해, 이 방법은 최상위 제거된 비트를 사용하여 샘플 값을 반올림하는 단계를 포함할 수 있다.
선택적으로, 제4 변형에 따르면, 샘플 값들을 상기 필터에 입력하는 단계는 상기 제1 성분 샘플 값과 참조 샘플 값의 값들의 차이를 표현하는 수치를 입력하는 단계를 포함한다.
선택적으로, 이 방법은 고정된 클리핑 파라미터 C에 의해 정의되는 클리핑 함수에 기초하여 상기 차이를 클리핑하는 단계를 더 포함한다.
클리핑 함수 K는 다음과 같이 표현될 수 있고:
Figure pct00001
여기서 C는 클리핑 파라미터이고 d는 차이를 표현하는 수치이다. 따라서 클리핑 함수에 대한 입력들은 차이를 표현하는 수치와 클리핑 파라미터이고, 출력은 -C의 최고값 또는 C와 d 중 작은 쪽 값이다.
하나의 유리한 실시예에서, C는 2(IBitDepth-n)-1이고, 여기서 IBitDepth는 샘플 값들을 표현하는 데 사용되는 비트 수이며, n은 n < IBitDepth를 충족시키는 정수이다. 선택적으로, n=2 또는 3이다.
계수 값들의 제한
본 발명의 일 양태에서, 필터 계수 값들을 표현하는 데 사용되는 비트 수가 감소된다.
선택적으로, 제2 변형에 따르면, 제한하는 것은 필터 계수들의 가능한 값들의 범위를 제한하는 것을 포함한다. 이것은 계수들이 보다 적은 비트들로 표현될 수 있게 하고 후속 계산들을 보다 간단하게 만든다.
선택적으로, 제1 변형에 따르면, 상기 제한하는 것은 입력 계수 값의 감소된 고정 소수점 소수 정밀도(fixed-point decimal precision)를 사용하는 것을 포함한다.
특정 이점들을 갖는 실시예들은 감소된 고정 소수점 소수 정밀도가 8 비트, 7 비트, 또는 6 비트 중 하나인 경우를 포함한다.
하나의 선택적인 실시예에서, 범위를 제한하는 것은 임계치보다 높은 비트를 사용하지 않는 것을 포함하고; 예를 들어, 임계치는 고정 소수점 소수 정밀도의 7 번째 비트, 6 번째 비트, 5 번째 비트, 4 번째 비트 또는 3 번째 비트이다.
본 발명의 하나의 유리한 구현에서, 각각의 곱셈은 비트 단위 시프트 및 덧셈 연산들 - 이들은 하드웨어 및 소프트웨어 양쪽 모두에서 구현하기 더 간단함 - 로 대체된다. 이에 따라, 필터 연산은 샘플 값들과 필터 계수의 곱셈을 포함할 수 있고, 상기 곱셈 연산을 비트 단위 시프트 및 덧셈 연산들로 대체하기 위해 상기 곱셈이 비트 단위 시프트 및/또는 다른 필터 계수와의 결합을 통해 구현된다.
필터 형상
본 발명의 다른 양태에서, 필터의 형상에 대한 수정들이 제안된다. 그러한 수정들은 CCALF에 의해 제공되는 이득을 유지하면서 고려될 샘플들의 수를 감소시키는 것(따라서 결과적인 계산들을 단순화하는 것)을 포함한다.
선택적으로, 각각의 제1 성분 샘플 값은 참조 샘플을 기준으로 정의된 위치에 있는 위치에서의 샘플 값이며, 샘플의 위치는 필터 형상에 의해 정의된다.
구현의 편의를 위해, 필터 형상은 16 개 이하의 샘플을 포함하도록 되어 있다.
일 실시예에서, 필터 형상은 상기 제1 성분 샘플이 상기 참조 샘플을 기준으로 위치 (x+u, y+v)를 갖는 패턴을 포함하며, 여기서 u 및 v는 [-2,2] 정수 간격에 속한다.
다른 실시예에서, 필터 형상은 모든 샘플이 상기 참조 샘플을 기준으로 위치 (x+u, y+v)를 갖는 패턴을 포함하며, 여기서 u는 [-2,2]에 속하고 v는 [-1,2]에 속한다. 일 변형에서, 필터는 '다이아몬드 형상'이고; 예를 들어, 여기서 |u|=2일 때 v는 [0,1]에 속한다.
일 실시예에서, 필터 형상은 모든 샘플이 상기 참조 샘플을 기준으로 위치 (x+u, y+v)를 갖는 패턴을 포함하며, 여기서 u는 [-1,1]에 속하고 v는 [-1,2]에 속한다. 일 변형에서, 필터는 '다이아몬드 형상'이고; 예를 들어, 여기서 |u|=1일 때 v는 [0,1]에 속한다.
다른 실시예에서, 필터 형상은 모든 샘플이 상기 참조 샘플을 기준으로 위치 (x+u, y+v)를 갖는 패턴을 포함하며, 여기서 u,v는 [0,1]에 속한다.
시그널링
본 발명의 실시예들은 또한 CCALF 필터 계수들을 비트스트림에서 시그널링하는 것에 관한 것이다. 본 발명의 목적은 CCALF와 연관된 비트레이트 비용을 최소화하기 위해 시그널링을 개선시키는 것이다.
선택적으로, 이 방법은 상기 필터 계수 및/또는 샘플 값들에 대한 감소된 수의 비트들을 비트스트림에서 시그널링하는 단계를 더 포함한다. 이것은 상이한 이미지들의 일관된 처리를 가능하게 하고 필요한 경우 프로세싱의 유연성을 가능하게 한다.
본 발명의 일 양태에 따르면, 이 방법은: 주어진 성분에 대해 교차 성분 적응적 루프 필터(CCALF)가 표시되는지를 결정하는 단계; 및 비트스트림으로부터 상기 필터 계수들을 디코딩 및/또는 인코딩하는 단계를 더 포함한다.
본 발명의 다른 양태에 따르면, CCALF를 사용하여 인코딩된 이미지 부분을 디코딩하는 방법이 제공되며, 이 방법은: 주어진 성분에 대해 CCALF가 표시되는지를 결정하는 단계; 비트스트림으로부터 CCALF 계수들을 디코딩하는 단계; 및 상기 CCALF 계수들을 사용하여 상기 이미지 부분을 디코딩하는 단계를 포함하며; 여기서 상기 CCALF 계수들은 프리픽스 없이 비트스트림에 인코딩된다.
이 양태는 종래 기술에 대한 단순화를 나타내며, CCALF 성능의 상당한 저하 없이 보다 낮은 비트레이트를 결과한다 - 본 명세서에서 설명된 바와 같이 필터 계수들을 표현하는 데 사용되는 비트 수를 감소시키는 것과 결합될 때 특히 그렇다 -.
선택적으로, 주어진 성분에 대해 CCALF가 표시되는지를 결정하는 단계는 플래그를 디코딩하는 단계를 포함한다.
본 발명의 다른 양태에 따르면, 교차 성분 적응적 루프 필터(CCALF)를 사용하여 이미지 부분을 인코딩하는 방법이 제공되며, 이 방법은: 주어진 성분에 대해 CCALF가 표시되는지를 결정하는 단계; CCALF 계수들을 비트스트림에 인코딩하는 단계; 및 상기 CCALF 계수들을 사용하여 상기 이미지 부분을 인코딩하는 단계를 포함하며; 여기서 상기 CCALF 계수들은 고정된 표현을 사용하여 슬라이스 헤더에 인코딩된다.
선택적으로, 주어진 성분에 대해 CCALF가 표시되는지를 결정하는 상기 단계는 플래그를 상기 슬라이스 헤더에 인코딩하는 단계를 포함한다.
제1 대안에서, 구현의 용이함을 위해, CCALF 계수들이 슬라이스 헤더에 직접 인코딩될 수 있다.
CCALF 계수들은 부호 있는 단항 코딩을 사용하여 비트스트림에 인코딩될 수 있다. 그러한 코딩 스킴은 인코딩 및 디코딩하기 간단하며, 그렇게 하기 위해 다른 파라미터들(예를 들면, 프리픽스)에 의존하지 않는다.
선택적으로, 제3 대안에 따르면, 부호 있는 단항 코딩은: 계수의 부호를 나타내는 비트; 및 계수의 크기를 나타내는 1과 동일한 비트들의 시리즈를 포함한다.
선택적으로, 제2 대안에 따르면, 부호 있는 단항 코딩은: 계수가 0인지 여부를 나타내는 비트스트림 내의 제1 비트, 계수가 0이 아닌 경우, 계수의 부호를 나타내는 비트, 및 계수의 크기를 나타내는 1과 동일한 비트들의 시퀀스를 포함한다.
선택적으로, 제1 비트가 1과 동일한 것은 계수가 0임을 나타낸다.
선택적으로, 부호 비트가 1과 동일한 것은 계수가 음수임을 나타낸다.
선택적으로, 파싱의 용이함을 위해, 부호 있는 단항 코딩은 계수의 시그널링의 끝을 나타내는 시퀀스의 끝에 0과 동일한 비트를 더 포함한다.
본 발명의 또 다른 양태들은 청구항 48에 의해 한정된 바와 같은 이미지를 필터링하기 위한 디바이스에 관한 것이다.
본 발명의 또 다른 양태들은 청구항 49 및 청구항 50에 의해 제각기 한정되는 바와 같은 인코더 및 디코더에 관한 것이다.
본 발명의 또 다른 양태들은 청구항 51에 의해 한정된 바와 같은 프로그램에 관한 것이다. 프로그램은 그 자체로 제공될 수 있거나 또는 캐리어 매체 상에, 캐리어 매체에 의해 또는 캐리어 매체 내에 담겨 있을 수 있다. 캐리어 매체는 비일시적일 수 있으며, 예를 들어, 저장 매체, 상세하게는 컴퓨터 판독 가능 저장 매체일 수 있다. 캐리어 매체는 또한 일시적일 수 있으며, 예를 들어, 신호 또는 다른 전송 매체일 수 있다. 신호는, 인터넷을 포함한, 임의의 적합한 네트워크를 통해 전송될 수 있다.
본 발명의 추가의 특징들은 다른 독립 청구항들 및 종속 청구항들에 의해 특징지어진다.
본 발명의 일 양태에서의 임의의 특징은, 임의의 적절한 조합으로, 본 발명의 다른 양태들에 적용될 수 있다. 상세하게는, 방법 양태들이 장치 양태들에 적용될 수 있으며, 그 반대의 경우도 마찬가지이다.
게다가, 하드웨어로 구현되는 특징들이 소프트웨어로 구현될 수 있으며, 그 반대의 경우도 마찬가지이다. 본 명세서에서의 소프트웨어 및 하드웨어 특징들에 대한 임의의 언급은 그에 따라 해석되어야 한다.
본 명세서에 기술된 바와 같은 임의의 장치 특징은 또한 방법 특징으로서 제공될 수 있으며, 그 반대의 경우도 마찬가지이다. 본 명세서에서 사용되는 바와 같이, 기능식(means plus function) 특징들은 대안적으로, 그들의 대응하는 구조, 예컨대, 적합하게 프로그래밍된 프로세서 및 연관된 메모리의 관점에서 표현될 수 있다.
또한, 본 발명의 임의의 양태들에서 기술되고 정의되는 다양한 특징들의 특정 조합들이 독립적으로 구현 및/또는 공급 및/또는 사용될 수 있음을 이해해야 한다.
본 발명의 실시예들이 이제 이하의 도면들을 참조하여, 단지 예로서, 설명될 것이다.
도 1은 VTM-5.0의 전형적인 디코딩 루프 내의 어디에서 ALF가 이루어지는지를 도시한다;
도 2는 VTM-5.0에서의 ALF 필터링의 개관을 제공하는 플로차트이다;
도 3은 VTM-5.0의 ALF에 추가적으로 CCALF 필터링의 개관을 제공하는 플로차트이다;
도 4a는 본 발명의 실시예에 따른 CCALF 필터에 대한 필터 형상 및 계수 배열을 제공한다;
도 4b는 CCALF 필터 계수의 전형적인 비트 단위 메모리 표현을 도시한다;
도 4c는 10 비트 내부 비트 깊이를 갖는 CCALF 필터링 동안 사용되는 샘플 값들의 전형적인 비트 단위 메모리 표현을 도시한다;
도 4d는 CCALF 필터링을 수행하는 동안 CCALF 필터 계수와 샘플 값의 곱셈의 출력의 전형적인 비트 단위 메모리 표현을 도시한다;
도 4e는 CCALF 필터링을 수행하는 동안 CCALF 필터 계수들과 샘플 값들의 곱셈들의 결과들을 합산하기 위해 수행되는 덧셈 연산들의 출력의 전형적인 비트 단위 메모리 표현을 도시한다;
도 5a는 본 발명의 제1 변형의 예에 따른 계수 값들의 정밀도를 감소시키는 것에 의해 CCALF 필터 계수의 비트 수를 감소시키는 비트 단위 메모리 표현을 도시한다;
도 5b는 본 발명의 제2 변형의 예에 따른 가능한 계수 값들의 범위를 제한하는 것에 의해 CCALF 필터 계수의 비트 수를 감소시키는 비트 단위 메모리 표현을 도시한다;
도 5c는 본 발명의 제1 변형과 제2 변형을 결합시킨 예에 따른 계수 값들의 정밀도를 감소시키는 것에 의해 그리고 가능한 계수 값들의 범위를 제한하는 것에 의해 CCALF 필터 계수의 비트 수를 감소시키는 비트 단위 메모리 표현을 도시한다;
도 5d는 본 발명의 제3 변형의 예에 따른 최하위 비트들을 무시하는 것에 의해 필터링 프로세스의 내부에서 사용되는 샘플 값의 비트 수를 감소시키는 비트 단위 메모리 표현을 도시한다;
도 6a는 본 발명의 제4 변형의 예에 따른 필터링 프로세스의 내부에서 사용되는 샘플 값들의 차이의 비트 단위 메모리 표현을 도시한다;
도 6b는 본 발명의 제4 변형의 예에 따른 필터링 프로세스의 내부에서 비트 수를 감소시키기 위해 클리핑 연산을 사용할 때 샘플 값들의 차이의 비트 단위 메모리 표현을 도시한다;
도 6c는 본 발명의 제3 변형과 제4 변형을 결합시킨 예에 따른 필터링 프로세스의 내부에서 비트 수를 감소시키기 위해 클리핑 연산을 사용하고 최하위 비트들을 무시할 때 샘플 값들의 차이의 비트 단위 메모리 표현을 도시한다;
도 7a는 본 발명의 변형들에 따른 CCALF 필터링을 수행하는 동안 CCALF 필터 계수와 샘플 값의 곱셈의 출력의 전형적인 비트 단위 메모리 표현을 도시한다;
도 7b는 본 발명의 변형들에 따른 CCALF 필터링을 수행하는 동안 CCALF 필터 계수들과 샘플 값들의 곱셈들의 결과들을 합산하기 위해 수행되는 덧셈 연산들의 출력의 전형적인 비트 단위 메모리 표현을 도시한다;
도 7c는 본 발명의 제5 변형에 따른 CCALF 필터링 프로세스에서 사용되는 비트들 및 연산들의 수를 감소시키기 위해 16 개의 샘플을 사용하는 CCALF 필터의 예에 대한 필터 형상 및 계수 배열을 제공한다;
도 7d는 본 발명의 제5 변형에 따른 CCALF 필터링 프로세스에서 사용되는 비트들 및 연산들의 수를 감소시키기 위해 16 개의 샘플을 사용하는 CCALF 필터의 예에 대한 필터 형상 및 계수 배열을 제공한다;
도 7e는 본 발명의 제5 변형에 따른 CCALF 필터링 프로세스에서 사용되는 비트들 및 연산들의 수를 감소시키기 위해 12 개의 샘플을 사용하는 CCALF 필터의 예에 대한 필터 형상 및 계수 배열을 제공한다;
도 7f는 본 발명의 제5 변형에 따른 CCALF 필터링 프로세스에서 사용되는 비트들 및 연산들의 수를 감소시키기 위해 8 개의 샘플을 사용하는 CCALF 필터의 예에 대한 필터 형상 및 계수 배열을 제공한다;
도 7g는 본 발명의 제5 변형에 따른 CCALF 필터링 프로세스에서 사용되는 비트들 및 연산들의 수를 감소시키기 위해 4 개의 샘플을 사용하는 CCALF 필터의 예에 대한 필터 형상 및 계수 배열을 제공한다;
도 8은 본 발명의 실시예들에 따른 인코딩 방법의 단계들을 예시하는 플로차트이다;
도 9는 본 발명의 실시예들에 따른 디코딩 방법의 단계들을 예시하는 플로차트이다;
도 10은 본 발명의 하나 이상의 실시예가 구현될 수 있는 데이터 통신 시스템을 개략적으로 예시하는 블록 다이어그램이다;
도 11은 본 발명의 하나 이상의 실시예가 구현될 수 있는 프로세싱 디바이스의 컴포넌트들을 예시하는 블록 다이어그램이다;
도 12는 본 발명의 하나 이상의 실시예가 구현될 수 있는 네트워크 카메라 시스템을 예시하는 다이어그램이다;
도 13은 본 발명의 하나 이상의 실시예가 구현될 수 있는 스마트 폰을 예시하는 다이어그램이다.
아래에서 기술되는 본 발명의 실시예들은 이미지들의 인코딩 및 디코딩을 개선시키는 것에 관한 것이다.
본 명세서에서, "시그널링"은 필터를 제어하기 위한 하나 이상의 파라미터에 관한 정보, 예를 들어, 모드/스킴의 사용, 비사용, 인에이블 또는 디스에이블 또는 다른 필터 제어 관련 정보를 비트스트림에 삽입(제공/포함/인코딩)하는 것 또는 비트스트림으로부터 추출/획득(디코딩)하는 것을 지칭할 수 있다.
본 명세서에서, "슬라이스"라는 용어는 이미지 부분의 예로서 사용된다(그러한 이미지 부분의 다른 예들은 타일 또는 타일(들)의 그룹/세트인 타일 그룹일 것이다). 본 발명의 실시예들이 또한, 슬라이스 대신에, 이미지 부분(예를 들면, 타일 또는 타일 그룹), 및 (슬라이스 헤더 대신에) 이미지 부분/타일/타일 그룹에 대한 헤더, (슬라이스 유형 대신에) 이미지 부분/타일/타일 그룹의 유형, 및 (슬라이스 통계 대신에) 이미지 부분/타일/타일 그룹에 대한 통계와 같은 적절하게 수정된 파라미터/값/신택스에 기초하여 구현될 수 있음이 이해된다. 슬라이스 헤더 또는 시퀀스 파라미터 세트(SPS) 대신에, 적응 파라미터 세트(APS) 또는 타일(그룹) 헤더가 또한 ALF 또는 CCALF 파라미터들(또는 (CC)ALF 필터링을 사용하는 것에 대한 정보)를 시그널링하는 데 사용될 수 있음이 또한 이해된다. (CC)ALF 파라미터들(또는 (CC)ALF 필터링을 사용하는 것에 대한 정보)를 시그널링하기 위해 APS가 사용될 때, (CC)ALF 파라미터들(또는 (CC)ALF 필터링을 사용하는 것에 대한 정보)를 획득하기 위해 어느 APS가 사용되어야 하는지를, 예를 들어, 적응 세트 식별자(aps_id)를 지시하는 것에 의해, 지시하기 위해 슬라이스 헤더 또는 타일 그룹 헤더가 사용될 수 있다. 슬라이스, 타일 그룹, 타일, 코딩 트리 유닛(CTU)/최대 코딩 유닛(LCU), 코딩 트리 블록(CTB), 코딩 유닛(CU), 예측 유닛(PU), 변환 유닛(TU), 또는 픽셀들/샘플들의 블록 중 임의의 것이 이미지 부분이라고 지칭될 수 있음이 또한 이해된다.
필터 또는 툴이 "활성"으로서 기술될 때는, 필터/툴이 "인에이블되거나" 또는 "사용 가능하거나" 또는 "사용되고"; "비활성"으로서 기술될 때는, 필터/툴이 "디스에이블되거나" 또는 "사용 가능하지 않거나" 또는 "사용되지 않으며"; "클래스"가 하나 이상의 요소의 그룹, 그룹화한 것(grouping), 카테고리 또는 분류를 지칭한다는 것이 또한 이해된다. 게다가, 플래그가 "활성"으로서 기술될 때, 이는 플래그가 관련 필터/툴이 "활성"임을 나타낸다는 것을 의미한다는 것이 또한 이해된다.
적응적 루프 필터(ALF)
도 1은 VTM-5.0의 전형적인 디코딩 루프 내의 어디에서 ALF가 이루어지는지를 도시한다. 101에서, 이미지 부분(예를 들면, 슬라이스)이 코딩 트리 유닛(CTU: VVC에서의 최대 코딩 유닛, 전형적으로 128x128 샘플/픽셀 크기임)의 단위로 디코딩된다. CTU는 직사각형 블록들 또는 코딩 유닛들(CU)로 분할되며, 이들은 특정 예측 스킴/모드, 및, 종종, 잔차 블록의 손실 인코딩을 사용하여 인코딩된다. 블록 기반 인코딩의 사용으로 인해, 인코딩된 블록들 사이의 경계들에서 블로킹 아티팩트들이 보일 수 있다. 102에서, 디코딩된 이미지 부분은 이어서 해당 아티팩트들을 감소/제거하기 위해 DBF에 의해 프로세싱된다. 전형적으로, 블록 예측을 위한 잔차(블록)를 인코딩하기 위해, (몇몇 계수들에서의 잔차 에너지를 압축하기 위해) 잔차 값들이 DCT 유사 변환을 사용하여 변환되고, 변환된 계수들이 인코딩 비용을 감소시키기 위해 양자화된다. 이러한 양자화는 종종 재구성된 블록들(즉, 프레임 버퍼(106)에 저장되는 참조 프레임들에서의 블록들)에 얼마간의 링잉(ringing) 아티팩트들을 도입한다. 103에서, DBF의 출력 이미지 부분은 이어서 SAO 필터에 의해 프로세싱되는데, 이는 낮은 계산 비용으로 이러한 아티팩트들을 중 일부를 감소시키는 데 유용하다. 104에서, SAO 필터의 출력 이미지 부분은 이어서 ALF에 의해 프로세싱된다. ALF는, 예를 들어, "링잉"과 같은 아티팩트들을 더 감소시킬 수 있다. ALF는 상위 차수 오류 모델링 능력을 가지고 있지만 계산 비용이 보다 높다. ALF의 출력 이미지 부분은 이어서 출력(예를 들면, 디스플레이 또는 디스플레이와 통신하기 위한 통신 인터페이스)(105)으로 보내진다. 이는 또한, (시간 예측 툴들이 사용될 때) 시간 예측을 위해 사용될 수 있도록, 프레임 버퍼(106)에 (그 안에 저장된 참조 프레임의 일 부분으로서) 넣어질 수 있다. 이것이 DBF, SAO 필터 및 ALF가 "인루프" 필터라고 불리는 이유이다. 인코더는 인루프 필터들 중 일부를 디스에이블시킴으로써 디코딩 시에 이들이 바이패스될 수 있도록(즉, 필터링이 수행되지 않고 디스에이블된 툴에 대응하는 단계의 출력이 그의 입력과 동일하도록) 할 수 있다. 또한, 일부 경우에, 프로세싱되는 이미지 부분은 슬라이스로 제한되지 않고 하나 또는 다수의 슬라이스를 포함하는 전체 프레임(full frame)일 수 있으며, (둘 이상이 존재하는 경우) 슬라이스 경계들에 걸쳐 필터들을 적용하여 해당 경계들에서 아티팩트를 감소시킬 수 있다. 다중 성분 이미지(예를 들면, YCrCb 포맷으로 된 이미지)의 경우, DBF, SAO 필터 또는 ALF 프로세싱이 각각의 성분에 개별적으로 그리고 어쩌면 상이하게(예를 들면, 다른 성분에 대해 상이한 필터링 파라미터를 사용하여) 적용된다.
도 2는 VTM-5.0에서의 ALF 필터링에 대한 개관을 제공한다. 각각의 채널(루마 채널: Y 및 크로마 채널들: Cb 및 Cr)에 대해, 입력 이미지 부분(201, 202, 203)이 필터링 파라미터들(204, 205, 206)과 함께 적응적 루프 필터링(ALF) 프로세스(207, 208, 209)에 제공된다. ALF 프로세스들은 각각의 채널에 대한 프로세싱된 출력 이미지 부분(210, 211, 212)을 생성한다. 208, 209에서의 ALF 크로마 프로세싱은 양쪽 크로마 채널들에 대해 동일하지만 205 및 206에서 제공되는 특정 파라미터들 덕분에 각각의 채널에 대해 상이하게 작동하도록 구성될 수 있다. 207에서 수행되는 ALF 루마 프로세싱은 208에서 수행되는 ALF 크로마 프로세싱보다 종종 더 복잡하다. 이것에 대한 두 가지 이유가 있다. 첫 번째 이유는, 루마 채널들이 종종 보다 평활한 크로마 채널보다 더 많은 구조들(윤곽들, 텍스처들 등)을 포함하기 때문에, 루마 채널 콘텐츠가 크로마 채널보다 프로세싱/인코딩하기 종종 더 복잡하다는 것이다. 두 번째 이유는 인간의 눈이 크로마 채널들에서의 오류들보다 루마 채널에서의 오류들에 더 민감하다는 것이다. 따라서, 보다 나은 코딩 이득 및 보다 나은 시각적 품질을 제공하기 위해 루마 채널에 대해 보다 진보되고 복잡한(즉, 보다 많은 전력을 소모하고/하거나 보다 느린) 프로세싱이 선호된다.
204, 205, 및 206에서 제공되는 입력 파라미터들 정보는 적응 파라미터 세트(APS)에서 및/또는 슬라이스 헤더에서 전송된다. 204, 205 및 206은 또한 어떤 공통 정보를 공유할 수 있다.
ALF 프로세싱(207, 208, 209)이 각각의 채널에서 병렬로 수행될 수 있는데, 그 이유는 각각의 채널의 작업 결과가 다른 채널들의 작업 결과들과 독립적이기 때문이다. 병렬 프로세싱에 대한 그러한 기회는 프로세싱에 소요되는 총 시간을 줄일 수 있고 하드웨어 또는 소프트웨어 중 어느 하나로 효율적으로 구현될 수 있다.
204, 205 및 206에서 제공되는 입력 파라미터들 정보는 내부 비트 깊이 정보를 또한 포함할 수 있다. 내부 비트 깊이는 샘플 값들을 표현하는 데 사용될 수 있는 최대 비트 수이다(즉, 샘플 값들의 정밀도를 나타낸다). VTM-5.0에서, 크로마 채널들에 대한 내부 비트 깊이와 상이한 루마 채널에 대한 내부 비트 깊이를 사용하는 것이 허용된다(비트 깊이 정보는 양쪽 채널 유형들 - 루마 및 크로마 -에 대한 시퀀스 파라미터 세트(SPS)에서 시그널링된다). 이하의 설명에서, 'IBDL'은 루마에 대한 내부 비트 깊이를 지칭할 것이고, 'IBDC'는 크로마에 대한 내부 비트 깊이를 지칭할 것이다. 내부 비트 깊이에 대해 'IBD'를 사용할 때, 이는 IBDL이 IBDC와 동일한 것으로 간주된다는 것을 의미한다. 언급되지 않거나 명시되지 않을 때, 내부 비트 깊이는 논의되고 있는 프로세스에 영향을 미치지 않거나, 내부 비트 깊이(들)가 정통 방식으로 처리되므로 생략되었다.
도 3은, 교차 성분 ALF(CCALF) 프로세싱을 사용하기 위해, 도 2에서의 ALF 필터링의 확장을 제공한다.
각각의 크로마 채널(202, 203)에 대해, 루마 채널(201)의 입력 이미지 부분이 필터링 파라미터들(305, 306)과 함께 교차 성분 적응적 루프 필터링(CCALF) 프로세스(308, 309)에 제공된다. CCALF 필터링 프로세스의 출력은 311, 312에서 ALF 크로마 필터링 프로세스(208, 209)의 출력에 가산되어 각각의 크로마 채널에 대한 프로세싱된 출력 이미지 부분(313, 314)을 생성한다. 308, 309에서의 CCALF 프로세싱은 양쪽 크로마 채널들에 대해 동일하지만 305 및 306에서 제공되는 특정 파라미터들 덕분에 각각의 채널에 대해 상이하게 작동하도록 구성될 수 있다. 예를 들어, 각각의 크로마 채널은 특정 필터 계수들로 프로세싱될 수 있다.
일부 변형들에서, 예를 들어, YUV 4:2:0 색상 표현을 사용하는 비디오들의 경우, 크로마 채널은 루마 채널에 비해 서브샘플링된다. 그러한 변형들에서, CCALF 필터링 프로세스(308, 309)는 각각의 루마 샘플 위치들에 대해 적용되지 않고, 크로마 샘플 위치를 업샘플링할 때 획득되는 정수 루마 샘플 위치에 대해서만 적용된다. 따라서 YUV 4:2:0 표현에서, 필터링은 루마 샘플 위치들의 1/4에만 적용된다.
ALF 필터링 프로세스들(207, 208 및 209)과 CCALF 필터링 프로세스들(308 및 309)은 독립적이며, 따라서 병렬로 수행될 수 있다. 도 2와 비교하여, 각각의 채널에 대한 2 개의 크로마 필터의 결과들을 결합시키기 위해 311 및 312에서 수행되는 덧셈 연산들에 의해 도 3에서 지연시간이 도입된다. 그렇지만, CCALF 및 크로마 ALF가 전형적으로 루마 ALF보다 덜 복잡하기 때문에, VTM-5.0에서, 추가적인 지연시간 없이 3 개의 채널의 전체 프로세싱을 달성하는 것이 실현 가능해야 한다 - 즉, 속도 결정 단계가 루마 ALF일 가능성이 있으며, 이에 따라 다른 2 개의 채널에서의 추가적인 지연시간이 전체 프로세스의 지연시간에 영향을 미치지 않는다 -.
305 및 306에서 제공되는 입력 파라미터들 정보는 적응 파라미터 세트(APS)에서 및/또는 슬라이스 헤더에서 전송된다. 305 및 306은 또한 어떤 공통 정보를 공유할 수 있다.
일 변형에서, 305 및 306은 선형 콘볼루션 필터에 대한 필터 계수들(예를 들어 도 4 참조)을 포함한다. 하나의 대안에서, 305 및 306은, 예를 들어, 비선형 ALF 필터링을 위해 VTM-5.0에서 사용되는 것과 유사한, 비선형 필터에 대한 필터 계수들 및 클리핑 파라미터들을 포함한다. 선형 필터들과 비선형 필터들 양쪽 모두는 코딩 성능에서 이득을 제공하는 것으로 밝혀졌지만, 선형 필터들이 덜 복잡하며 이에 따라 특정 구현들에서 선호될 수 있다.
일부 변형들에서, 305 및 306에서 제공되는 입력 파라미터들 정보는 채널들 간에 데이터(예를 들면, 샘플 값들)을 '정규화'하기 위해(즉, 비슷한 정밀도 값들을 사용하기 위해) 일부 왼쪽 또는 오른쪽 비트 단위 시프트 연산들 파라미터들(또는 곱셈/나눗셈 연산들 파라미터들)을 추론하기 위해 IBDL 및 IBDC를 포함할 수 있다.
일부 변형들에서, ALF 필터링이 수행되지 않은 경우에도 CCALF가 적용될 수 있음이 이해된다. 루마 채널 또는 다른 종류의 채널들이 크로마 채널 이외의 다른 종류의 채널을 정정하는 데 사용될 수 있음이 또한 이해된다. 예를 들어, 적색 채널이 RGB 색상 표현을 사용하는 비디오에서의 녹색 채널 및/또는 청색 채널을 정정하는 데 사용될 수 있다.
일부 변형들에서 둘 이상의 채널이 다른 채널의 오류를 감소시키는 데 사용될 수 있다는 것이 또한 이해된다. 예를 들어, 양쪽 크로마 채널들(202 및 203)의 입력 이미지 부분들이 양쪽 모두 CCALF 필터로 필터링될 수 있고 각각의 이미지 부분의 필터링의 결과가 루마 채널에 남아 있는 오류들을 정정하기 위해 ALF 루마 필터링(207)의 출력에 가산될 수 있다. 그러한 변형들은 크로마 채널이 루마 채널에 비해 서브샘플링될 때 특히 적용 가능할 수 있다. 예를 들어, YUV 4:2:0 색상 표현에서, 크로마 샘플들에 대해 4 개의 상이한 필터가 사용될 수 있는데, 하나의 크로마 샘플 위치로 다운샘플링되고/되거나 그와 연관되는 4 개의 루마 샘플 위치 각각에 대해 하나의 필터가 사용될 수 있다. 환언하면, 2x2 루마 샘플 블록에 대해, 제1 필터는 2x2 블록에서 위치 (0,0)에 있는 루마 샘플을 정정하기 위해 대응하는 크로마 위치에 적용되고, 제2 필터, 제3 필터 및 제4 필터는, 제각기, 위치 (0,1), (1,0) 및 (1,1)에 있는 루마 샘플을 정정하기 위해 동일한 크로마 샘플 위치에 적용된다. 일 변형에서, 4 개의 루마 샘플 위치에 대해 단지 하나의 CCALF 필터가 사용되지만, 루마 샘플들과 동일한 그리드 상에 정렬되는 크로마 샘플들을 획득하기 위해, 필터링된 크로마 샘플 값들이 크로마 샘플들을 업샘플링하는 것에 의해 획득된다.
도 4a는 선형 콘볼루션 필터로 CCALF를 수행할 때 사용될 수 있는 필터 형상(401)의 예를 도시한다. 이 필터 형상은 YUV 4:2:0 색상 표현을 사용하는 비디오의 크로마 채널에서의 오류를 정정하기 위해 루마 채널을 필터링하는 데 아주 적합하지만, 다른 종류들의 색상 표현들에도 사용될 수 있다. 각각의 상자는 참조 샘플 위치(회색 점이 있는 배경을 갖는 상자) 주위에 위치되는 샘플들에 대응한다. 각각의 상자에 있는 각각의 숫자는 상자의 위치에 있는 샘플에 적용할 필터 계수의 인덱스에 대응한다.
한 위치
Figure pct00002
에 있는 Cb 성분 크로마 샘플은 그의 값에 다음 양을 가산하는 것에 의해 필터링/정정되며:
Figure pct00003
여기서
Figure pct00004
는 Cb 크로마 성분에 대한 필터의 인덱스
Figure pct00005
를 갖는 필터 계수들이다.
유사한 필터링이 Cr 성분에 대해 그러나
Figure pct00006
필터 계수들을 사용하여 적용된다.
동일한 필터링을 달성하기 위해 이하의 수식 표기법을 사용하는 것에 의해 표기법이 단순화되며:
Figure pct00007
여기서
Figure pct00008
는 위치 (x,y)를 갖는 참조 샘플(401에서 회색 점이 있는 배경을 갖는 상자)로부터 오프셋
Figure pct00009
에 있는 필터 형상 내의 샘플
Figure pct00010
에 대해 적용할 필터 계수이다.
수학식 2의 구현은 전형적으로 고정 소수점 계산을 사용하여 실수 연산을 근사화하기 위해 정수 연산들을 사용하여 수행된다. 수학식 2는 그러면 다음과 같이 다시 써질 수 있고:
Figure pct00011
여기서 <<는 정수 왼쪽 비트 단위 시프트 연산이고, >>는 정수 오른쪽 비트 단위 시프트 연산이며, B는 필터 계수들
Figure pct00012
의 고정 소수점 표현의 소수 정밀도(전형적으로 10 비트)(도 4b 참조)이고;
Figure pct00013
는 코덱의 IBD와 동일한 정수 정밀도(전형적으로 10 비트, 도 4c 참조)를 갖는 정수 샘플 값이다.
YUV 4:2:0 색상 표현에서, 루마 샘플 위치 (x, y)는 가장 가까운 정수 업샘플링된 크로마 위치에 대응한다:
Figure pct00014
이다.
일부 변형들에서, IBDL이 IBDC보다 클 때, 수학식 3은 다음과 같이 다시 써질 수 있고:
Figure pct00015
또는
Figure pct00016
또는
Figure pct00017
IBDL이 IBDC보다 낮을 때, 수학식 3은 다음과 같이 다시 써질 수 있으며:
Figure pct00018
또는, B+IBDL이 IBDC보다 엄밀히 더 높은 경우, 동등하게:
Figure pct00019
여기서 B1 = B + IBDL - IBDC이다.
수학식 4, 수학식 5, 수학식 6 및 수학식 7에서의 추가적인 비트 단위 시프트 연산 또는 수학식 8에서의 수정된 비트 단위 시프트 파라미터는 크로마 샘플 값들과 동일한 정밀도를 유지하기 위해 필터링의 결과를 정규화할 수 있게 한다. 이를 달성하기 위해, 수학식 4에서 루마 샘플 값들이 정규화되고; 수학식 5에서 루마 샘플 값들과 계수 값들의 곱셈의 결과가 정규화되거나, 수학식 6, 수학식 7 및 수학식 8에서 곱셈 출력들의 합계의 결과(즉, 필터링의 결과)가 정규화된다.
수학식 6은 또한 동일한 결과들을 가지면서 수학식 8에서와 같이 다시 써질 수 있다.
수학식 7에서, 괄호는 의도적으로 비트 단위 시프트 주위에 놓여 있지 않은데, 왜냐하면 IBDL이 IBDC보다 낮을 때, 왼쪽 시프트가 어디에서 수행되든 간에 계산된 결과가 동일할 것이기 때문이다. 이것은 그러면 하드웨어 또는 소프트웨어 설계 선택의 문제이다. 대안적으로, 수학식 4에서의 시프트된 값은 또한 (IBDL - IBDC) 만큼 오른쪽 시프트를 적용하기 전에 1 << (IBDC - IBDL - 1)을 추가하는 것에 의해 반올림될 수 있다.
하드웨어/소프트웨어 설계의 측면에서, IBDL이 IBDC보다 클 때, 수학식 8 수식화에 따른 구현이 선호될 수 있는데 왜냐하면 보다 적은 연산들을 필요로 하기 때문이다. IBDL이 항상 IBDC보다 높은 특정 경우에, 곱셈의 입력의 비트 수를 제한하기 위해 수학식 4가 선호될 수 있다: 수학식 4를 사용하는 시스템 구현에서 얻어지는 비트 수는 그러면 (IBDL이 처리될 필요가 있는 최악의 경우이기 때문에) 해당 시스템에서 IBDL을 취할 수 있는 최댓값에 비해 IBDC를 취할 수 있는 최댓값에 의존할 것이다. IBDC가 IBDL보다 클 때, 곱셈의 입력 비트 깊이를 증가시키지 않기 위해 수학식 8을 사용하는 것이 바람직할 수 있는데 IBDC를 취할 수 있는 최댓값이 IBDL을 취할 수 있는 최댓값보다 항상 더 클 때 특히 그렇다.
수학식 8은 IBDC의 최댓값이 IBDL의 최댓값과 동일할 때 최상의 절충안이다.
B + IBDL이 IBDC보다 엄밀히 더 높지 않은 경우, 수학식 8은 다음으로 다시 써질 수 있으며:
Figure pct00020
여기서 B2 = IBDC - IBDL - B이다.
도 4b는 수학식 3에서의 CCALF 필터 계수들의 전형적인 비트 단위 메모리 표현을 도시한다. CCALF 필터 계수의 비트 단위 표현(402)은 전형적으로 실수의 고정 소수점 값 근사치를 저장하기 위해 (2의 보수 표현의) 16 비트 부호 있는 정수 표현을 사용한다. 10 비트 정밀도는 소수 부분에 대해 사용되며, 다른 비트들은 정수 부분과 부호를 저장하는 데 사용된다.
도 4c는, 16 비트 정수 메모리 공간(403)(또는 레지스터)에 저장될 때, VTM-5.0에서 10 비트 내부 비트 깊이에 대해 수학식 3에서의 샘플 값들의 전형적인 비트 단위 메모리 표현을 도시한다. X자로 표시된 상자들은 사용되지 않는 비트들을 나타낸다.
도 4d는, CCALF 필터 계수 표현이 도 4b에서 사용되는 것에 대응할 때, 10 비트 내부 비트 깊이 샘플 값과 CCALF 필터 계수의 곱셈(예를 들어, 주어진 i에 대해
Figure pct00021
)의 결과를 저장하기 위한 32 비트 부호 있는 정수의 전형적인 비트 단위 메모리 표현을 도시한다. 알 수 있는 바와 같이, 24 비트 정밀도(403의 10 비트 정밀도 + 402의 14 비트 정밀도) + 부호에 대한 1 비트(즉, 25 비트 부호 있는 정수 표현)가 필요하다.
도 4e는, CCALF 필터 계수 표현이 도 4b에서 사용되는 것에 대응할 때 그리고 도 4a에서의 필터 패턴을 사용할 때, 10 비트 내부 비트 깊이 샘플 값들과 CCALF 필터 계수들의 곱셈들의 결과들의 누적(합계)(예를 들어,
Figure pct00022
)의 중간 결과들을 저장하기 위한 32 비트 부호 있는 정수의 전형적인 비트 단위 메모리 표현을 도시한다. 이것은, 도 4b에서와 같이, 18 개의 25 비트 부호 있는 정수의 합계를 저장하는 데 필요한 비트 단위 메모리에 대응한다. 알 수 있는 바와 같이, 29 비트 정밀도(403의 10 비트 정밀도 + 402의 14 비트 정밀도 + 18 개의 덧셈의 최악의 경우 결과를 저장하기 위한 5 비트) + 부호에 대한 1 비트(즉, 30 비트 부호 있는 정수 표현)가 필요하다.
본 발명의 실시예들에 따르면, 도 4b의 전형적인 계수 표현을 사용할 때와 비교하여 CCALF 필터링에 대한 수학식 3에서의 필터링 연산들이 매우 단순화되며, 논리 게이트들의 수가 비용이 들고 곱셈을 수행하기 위한 게이트들의 수가 입력들의 최대 비트 수에 의존하는 경우 하드웨어 전용 설계에 대해 특히 그렇다. 놀랍게도 상당한 설계 단순화를 수반할 때 허용 가능한 코딩 효율에 대한 영향으로 상당한 단순화가 달성될 수 있다는 것이 밝혀졌다. 일반적으로, 아래에 개시된 단순화는 필터 계수들
Figure pct00023
또는 교차 성분 입력 샘플들
Figure pct00024
중 어느 하나 또는 양쪽 모두의 (내부 비트 깊이에 비해) 감소된 비트 깊이의 표현을 사용하는 것에 관한 것이다. 제한된 비트 깊이 표현은 제1 성분 샘플들의 내부 비트 깊이와 비교하여 제한되거나, 또는 전형적인 필터 계수 비트 깊이와 비교하여 제한된다(양쪽 모두의 통상적인 예는 10 비트임).
비트 깊이의 감소들의 특정 조합들이 - 예를 들어, 16 비트 아키텍처에서 수행될 수 있는 계산으로 이어질 때 - 특히 유리하다는 것이 이해되어야 한다. 어느 경우든, 제한된 수의 비트들을 사용하는 계산들이 보다 빠르며, 이는 (단순히 ALF와 비교하여) CCALF의 (증가된 시간 또는 계산 능력 중 어느 하나의) 추가적인 비용이 보다 낮다는 것을 의미한다.
수학식 3에서 곱셈 입력들의 비트 수를 감소시키는 제1 변형은 고정 소수점 소수 정밀도를 감소시키는 것이다. 이것은 도 4b에서 최하위 비트들 중 일부를 제거하는 것에 의해 행해질 수 있다. 예를 들어, 10 비트 대신에 7 비트를 사용하는 것은 CCALF의 코딩 이득을 너무 많이 감소시키지 않기 위한 (예를 들어, 10 비트 샘플 내부 비트 깊이가 사용될 때의) 좋은 절충안을 나타내는 것으로 밝혀졌다. 일부 변형들에서, 10 비트 대신에 6 비트를 사용하는 것은 CCALF의 코딩 이득을 조금 더 감소시키지만 여전히 흥미로운 하드웨어 설계 절충안이다.
도 5a는, 고정 소수점 소수 정밀도를 10 비트 대신에 7 비트로 제한할 때, 수학식 3에서의 CCALF 필터 계수들의 비트 단위 메모리 표현의 예를 도시한다. 402의 비트 단위 표현은 이어서 501에서 13 비트(정밀도에 대한 12 비트와 부호에 대한 1 비트)로 감소된다.
수학식 3에서의 곱셈 입력들의 비트 수를 감소시키는 제2 변형은 필터 계수들의 가능한 값들의 범위를 제한하는 것이다. 이것은 도 4b에 도시된 최상위 비트들 중 일부를 제거하는 것에 의해 달성될 수 있다. 놀랍게도 계수들의 가능한 값들의 범위를 상당히 제한할 때에도 CCALF가 여전히 효율적으로 작동할 수 있다는 것이 밝혀졌다. 이것이 특별히 놀라운 이유는 그 효과가 CCALF에 특정적이기 때문이며, 이 효과가, 예를 들어, ALF로는 재현되지 않는다 - 그렇게 하는 것은 코딩 이득에 대한 보다 높은 손실을 도입한다 -. 본 발명자들이 루마 샘플들의 구배들이 강한 곳에서의(예를 들면, 예를 들어, 에지들 근처에서의) 크로마 오류들이 일반적으로 더 강하고 루마 샘플 구배들과 상관 관계가 있기 때문에 해당 위치에서 교차 성분 ALF가 가장 유용하다는 것을 발견했기 때문에, 그러한 단순화의 코딩 효율에 대한 놀라울 정도로 낮은 영향이 설명될 수 있다. 더욱이, 해당 구역들에서의 CCALF 출력은 일반적으로 작은/제한된 값이다(반면에 다른 곳에서는 대체로 0이다). 따라서, (실수 영역에서의) 수학적으로 최적의 필터 계수들은 일반적으로 작은 크기를 가지며, 적은 수의 비트들을 사용하는 (고정 소수점 십진수의) 정수 표현들에 의해 잘 근사화될 수 있다. 따라서 코딩 성능의 증가의 대부분이 계수들의 서브세트로부터 달성될 수 있다. 본 발명의 실시예들은 코딩 성능에 크게 영향을 미치지 않으면서 계산들을 단순화하기 위해 이 속성을 이용한다. 이것은 또한 아래에 제시될 제3 변형 및 제4 변형이 작동되는 이유를 설명한다: 샘플들/계수들의 정밀도를 감소시키는 것은 CCALF 출력의 작은 값의 추정에 크게 영향을 미치지 않는 일종의 '반올림 오차 노이즈(rounding error noise)'를 생성한다.
요약하면, 다음이 밝혀졌다:
i. 계수들을 -0.03125 내지 0.03125의 범위로 제한하는 것(예를 들면, 소수점 정밀도의 6 번째 비트보다 상위의 어떠한 비트도 사용하지 않는 것)은 허용 가능한 코딩 영향을 갖는다
ii. 계수들을 -0.0625 내지 0.0625의 범위로 제한하는 것(예를 들면, 소수점 정밀도의 5 번째 비트보다 상위의 어떠한 비트도 사용하지 않는 것)은 상당한 코딩 영향을 갖지 않는다
iii. 계수들을 -0.125 내지 0.125의 범위로 제한하는 것(예를 들면, 소수점 정밀도의 4 번째 비트보다 상위의 어떠한 비트도 사용하지 않는 것)은 거의 코딩 영향을 갖지 않는다
iv. 계수들을 -0.25 내지 0.25의 범위로 제한하는 것(예를 들면, 소수점 정밀도의 3 번째 비트보다 상위의 어떠한 비트도 사용하지 않는 것)은 무시할 만한 코딩 영향을 갖는다
v. 계수들을 -0.015625 내지 0.015625의 범위로 제한하는 것(예를 들면, 소수점 정밀도의 7 번째 비트보다 상위의 어떠한 비트도 사용하지 않는 것)은 특정 구현들에서 허용될 수 있는 코딩 영향을 갖는다.
범위의 한계 값들은 사용 가능한 계수 값들에 포함될 수 있거나 포함되지 않을 수 있다. 이 세 가지 범위를 사용하는 예들이 아래에서 상술되지만, 대안적인 범위들이 또한 사용될 수 있다.
이하의 설명에서, 결과들이 제공된다. 이러한 결과들은 JVET-N01010 문서에 정의된 "SDR 비디오에 대한 JVET 공통 테스트 조건들 및 소프트웨어 참조 구성들"을 사용하여; 그러나 적용되는 테스트 조건들을 비디오 시퀀스들의 처음 17 개의 프레임으로 제한하여 획득되었다. 따라서, 본 발명의 변형들은 참조로서 사용된 VTM-5.0 소프트웨어(또는 VTM-6.0 소프트웨어를 제공하기 위한 개발 프로세스 동안, 나중의 중간 개발 버전)에 더하여 구현되었다. 참조(예를 들면, VTM-5.0)와 비교하여 루마 채널 및 양쪽 크로마 채널들에 대한 "모두 인트라(all intra)"(AI), "랜덤 액세스(random access)"(RA), "저지연(low-delay) B"(LB) 및 "저지연 P"(LP) 구성들의 평균 BD 레이트 코딩 이득 결과들이 획득된다. 이러한 평균 채널 코딩 이득들은 루마 코딩 이득들의 14배를 각각의 크로마 채널의 코딩 이득들에 합산하고 합계를 16으로 나누어 평균 YUV 코딩 이득을 획득하는 것에 의해 결합된다. 이것은 크로마 채널들이 루마 채널보다 인코딩하기 더 쉽기 때문에 루마와 크로마 채널 결과들을 결합시키는 종래의 방법이다. AI, RA LB 및 LP 구성들에서 획득되는 평균 YUV 코딩 이득이 함께 평균화되고, 코딩 이득 비교들을 제공하기 위해 이러한 최종 평균 코딩 이득 값들이 함께 비교된다. 코딩 이득 비교들은 (상이한 것으로 명시적으로 지정되지 않을 때) 참조 소프트웨어(즉, VTM-5.0 또는 나중의 중간 개발 버전)인 참조의 백분율로서 표현되며, CCALF는, JVET-O0636 기고문에 명시된 바와 같이, 그에 더하여 구현되지만 그것을 단순화하기 위한 본 발명은 포함하지 않는다. 비교된 변형은 해당 참조를 단순화하는 것(즉, 동일한 VTM-5.0 또는 나중의 중간 개발 버전을 사용하는 것, 및 그에 더하여 구현되지만 본 발명으로 단순화된 CCALF)에 의해 구현된다. 백분율은 (동일한 품질에 대한 레이트 감소의 백분율로 표현되는 평균 BD 레이트 이득인) 변형의 코딩 이득과 참조의 코딩 이득(또한 평균 BD 레이트 이득) 사이의 비를 계산하는 것에 의해 획득된다. 참고로, VTM-5.0에 더하여 참조 CCALF를 사용하는 것은 VTM-5.0에 비해 약 -1.2%의 평균 YUV 코딩 이득을 제공한다.
아래에 제공되는 코딩 이득 비교 결과들은 정보 제공적이며, 다른 인코더 구현에 더하여 또는 다른 코덱 사양에 더하여 본 발명을 구현할 때 보고된 코딩 이득들의 백분율은 상이할 수 있다.
다음 설명에서, 범위 표기법들은 다음과 같은 의미로 사용될 것이다:
- ]x,y[는 x와 y를 포함하지 않는, x와 y 사이의 값 범위를 의미한다,
- [x,y[는 x를 포함하지만 y를 포함하지 않는, x와 y 사이의 값 범위를 의미한다.
- ]x,y]는 y를 포함하지만 x를 포함하지 않는, x와 y 사이의 값 범위를 의미한다.
- [x,y]는 x와 y를 포함하는, x와 y 사이의 값 범위를 의미한다.
범위 [-0.03125;0.03125[에 있는 계수를 사용하는 것(즉, 고정 소수점 소수 정밀도의 6 번째 비트보다 상위의 어떠한 비트도 사용하지 않는 것)은 CCALF의 대부분의 코딩 이득을 유지하면서 곱셈에 사용할 비트 수를 크게 감소시킨다. 이 변형의 예는 도 5b에 예시되어 있다.
도 5b는, 10 비트의 고정 소수점 소수 정밀도를 사용하고 계수들의 가능한 값들의 범위를 범위 [-0.03125;0.03125[로 제한할 때, 수학식 3에서의 CCALF 필터 계수들의 비트 단위 메모리 표현의 예를 도시한다. 402의 비트 단위 표현은 이어서 502에서 6 비트(정밀도에 대한 5 비트와 부호에 대한 1 비트)로 감소된다.
도 5c에 예시된 바와 같이 제2 변형(도 5b)이 제1 변형(도 5a)과 결합될 수 있다.
도 5c는, 고정 소수점 소수 정밀도를 10 비트 대신에 7 비트로 제한하고 계수들의 가능한 값들의 범위를 범위 [-0.03125;0.03125[로 제한할 때, 수학식 3에서의 CCALF 필터 계수들의 비트 단위 메모리 표현의 예를 도시한다. 402의 비트 단위 표현은 이어서 503에서 3 비트(정밀도에 대한 2 비트와 부호에 대한 1 비트)로 감소된다.
각각의 곱셈을 2 개의 덧셈/뺄셈(부호 처리에 의존함) 및 비트 단위 시프트(도 5c에 예시된 경우)로 대체하는 것이 가능하도록 계수들을 범위 ]-0.03125;0.03125[로 제한하는 것(즉, 필터 계수가 {-0.0234375, -0.015625, -0.0078125, 0, 0.0078125, 0.015625, 0.0234375} 값 세트 내의 값들만을 취할 수 있음)에 의해 단순화를 조금 더 진행하는 것이 가능하다. 예를 들어, 수학식 3에서의 곱셈들이, 예를 들어, 다음으로 대체될 수 있으며:
Figure pct00025
여기서 <<는 정수 왼쪽 비트 단위 시프트 연산이고, >>는 정수 오른쪽 비트 단위 시프트 연산이며, B는 필터 계수들
Figure pct00026
의 고정 소수점 표현의 소수 정밀도(7 비트)이고(도 5c 참조);
Figure pct00027
는 코덱의 내부 비트 깊이(전형적으로 10 비트, 도 4c 참조)와 동일한 정수 정밀도를 갖는 정수 샘플 값이다.
곱셈은 심지어 단지 하나의 덧셈/뺄셈(부호 처리에 의존함) 및 비트 단위 시프트로 대체될 수 있다. 그렇지만, 이것은 CCALF의 코딩 이득에 보다 많은 손실을 도입한다. 이는, 예를 들어, 고정 소수점 소수 정밀도의 정밀도를 6 비트로 제한하고 계수를 범위 ]-0.03125;0.03125[로 제한할(즉, 필터 계수가 {-0.015625, 0, 0.015625} 값 세트 내의 값들만을 취할 수 있을) 때 행해질 수 있다. 이는 또한, 예를 들어, 고정 소수점 소수 정밀도의 정밀도를 7 비트로 제한하고 계수를 범위 ]-0.015625;0.015625[로 제한할(즉, 필터 계수가 {-0.0078125, 0, 0.078125} 값 세트 내의 값들만을 취할 수 있을) 때 행해질 수 있다. 제1 대안을 사용하는 것은 10 비트 소수 정밀도를 사용하고 범위 ]-1;1[ 내의 필터 계수들을 사용하는 것과 비교하여 CCALF 이득의 약 78%를 유지할 수 있게 한다. 제2 대안을 사용하는 것은 CCALF 이득의 약 76%를 유지할 수 있게 한다.
일부 다른 대안들에서, 계수들에 대한 값들의 범위는 [-0.0625;0.0625[, ]-0.0625;0.0625[, [-0.125;0.125[, ]-0.125;0.125[, [-0.25;0.25] 또는 ]-0.25;0.25]이다. 즉, 계수들의 (소수 부분) 정밀도를 위해 1 개, 2 개 또는 3 개의 추가적인 최상위 비트가 유지된다. 예를 들어, 도 5c에 대한 대안으로서, 필터 계수들을 위해 2 비트 대신에 3 비트 또는 4 비트가 유지된다. 그러한 대안들에서, 추가적인 비트는 도 5c에서 유지되는 것보다 1 또는 2 상위 비트이다. 이 네 가지 대안 중 제2 대안 및 제4 대안은, 제각기, 곱셈을 3 개의 덧셈/뺄셈 및 4 개의 덧셈/뺄셈(부호 처리에 의존함)과 비트 단위 시프트로 대체할 수 있게 한다.
수학식 3에서의 곱셈 입력들의 비트 수를 감소시키는 제3 변형은 샘플 값들의 정밀도를 감소시키는 것이다. 이것은 샘플 값들의 최하위 비트들을 고려하지 않는 것(CPU 구현을 사용하여 오른쪽으로의 비트 단위 시프트를 사용하는 것과 동등함)에 의해 행해질 수 있다. 예를 들어, 수학식 3은 다음과 같이 다시 써질 수 있으며:
Figure pct00028
여기서 DB는 데드 비트들(dead bits)(즉, 무시되는/고려되지 않는 비트들)의 수에 대응한다. 이 변형에 대한 곱셈에서 사용되는 샘플 값들
Figure pct00029
의 비트 단위 표현의 예는 도 5d에 예시되어 있다.
도 5d는, 수학식 3에서의 곱셈 연산들의 하드웨어 구현을 단순화하기 위해 샘플 값들의 정밀도를 10 비트 대신에 6 비트로 제한할 때, VTM-5.0에서의 10 비트 내부 비트 깊이에 대한 수학식 3에서 사용되는 샘플 값들의 비트 단위 메모리 표현의 예를 도시한다. X자로 표시된 상자들은 사용되지 않는 비트들을 나타낸다. 403의 비트 단위 표현은 504에서 6 비트로 감소된다.
대안은 (예를 들면, 최상위 제거된 비트가 1인 경우 감소된 비트 수를 갖는 표현에 1을 추가하는 것 또는 원하지 않는 비트들을 제거하기/고려하지 않기 전에 최상위 제거된 비트의 1에 대응하는 값을 동등하게 추가하는 것에 의해), 예를 들어, 최상위 제거된 비트 값을 사용하여 샘플 값을 "반올림"하는 것이다. 그러한 대안이 샘플 정밀도를 감소시키는 것이 CCALF의 코딩 효율에 보다 큰 정도로 영향을 미칠 때는 관심을 끌지만, 최하위 비트들만을 무시하는 것과 비교하여 추가적인 연산들 및/또는 메모리를 사용하는 것을 또한 암시한다.
VTM-5.0가 CCALF를 사용하는 것에 의해 개선되는 맥락에서, 필터링 연산들을 수행할 때 샘플 값들의 최상위 6 비트만을 유지하는 것이 코딩 효율에 크게 영향을 미치지 않는다는 것이 밝혀졌다. 예를 들어, 내부 비트 깊이가 10 비트인 경우, CCALF 효율에 낮은 영향을 미치면서 샘플 값들의 최하위 4 비트가 무시될 수 있다. 샘플 값들의 최상위 6 비트 미만을 유지하는 것이 가능하지만 CCALF의 코딩 효율을 떨어뜨린다. 예를 들어, 필터링 연산들을 수행할 때 샘플 값들의 최상위 4 비트를 유지하는 것(즉, 10 비트 샘플들에 대해 최하위 6 비트를 제거하는 것)은 여전히 놀랍도록 관심을 끄는 이득을 제공한다(평균적으로, 10 비트 샘플들에 대해 전체 샘플 정밀도를 사용하는 것에 비해 CCALF 이득의 약 88%가 유지된다). 반면에 최상위 5 비트를 유지하는 것은 전체 샘플 정밀도를 사용하는 것에 비해 CCALF 이득의 약 95%를 유지할 수 있게 한다. 최상위 6 비트를 사용하면, 이득의 약 98% 결과가 유지된다. 최상위 6 비트 초과를 유지하는 것은 결과들을 약간만 향상시킨다. 예를 들어, 최상위 7 또는 8 비트를 유지하는 것(즉, 10 비트 내부 비트 깊이의 최하위 3 또는 2 비트를 제거하는 것)은 전체 샘플 정밀도를 갖는 CCALF 이득의 약 99% 결과를 제공한다.
제4 변형에서, 수학식 2로 표현되는 바와 같은 CCALF 필터링은 VTM-5.0에서 비선형 ALF(NLALF)의 필터링 수식화에 더 가깝게 수정되며:
Figure pct00030
여기서
Figure pct00031
는 여전히 필터 계수이지만, 참조 샘플로부터 오프셋
Figure pct00032
에 있는 필터 형상 내의 샘플
Figure pct00033
과 위치 (x,y)를 갖는 참조 샘플
Figure pct00034
(401에서 회색 점이 있는 배경을 갖는 상자)의 값 사이의 차이 값을 나타내는 수치와 곱해진다. 차이 값을 나타내는 수치는 참조 샘플에 인접한 샘플들에 대한 차이와 동등한 구배일 수 있다. 구배를 사용하는 것은 참조 샘플에 인접하기도 하고 인접하지 않기도 하는 샘플들에 대한 차이의 정규화를 나타낸다.
수학식 12는 수학식 2가 수학식 3에서의 정수 연산들로 구현된 것과 동일한 방식으로 정수 연산들로 구현될 수 있으며:
Figure pct00035
여기서 <<는 정수 왼쪽 비트 단위 시프트 연산이고, >>는 정수 오른쪽 비트 단위 시프트 연산이며, B는 필터 계수들
Figure pct00036
의 고정 소수점 표현의 소수 정밀도(전형적으로 10 비트)이고(도 4b 참조);
Figure pct00037
Figure pct00038
는 코덱의 내부 비트 깊이(전형적으로 10 비트, 도 4c 참조)와 동일한 정수 정밀도를 갖는 정수 샘플 값이다. 이 수식화를 사용할 때,
Figure pct00039
의 비트 단위 표현에 비해 부호를 나타내는 1 비트가
Figure pct00040
의 비트 단위 표현에 추가된다. 이것은 도 6a에 예시되어 있다. 일부 대안들에서,
Figure pct00041
은 항상 0과 동일하며 비트스트림에 코딩되지 않는다. 다른 대안들에서,
Figure pct00042
이 반드시 0과 동일한 것은 아니며 곱셈
Figure pct00043
는 참조 샘플에 대한 차이를 사용하지 않는 다른 변형들에서의 곱셈들처럼 처리된다.
도 6a는, 16 비트 정수 메모리 공간(601)(또는 레지스터)에 저장될 때, VTM-5.0에서 10 비트 내부 비트 깊이에 대해 수학식 13에서의 샘플 값들의 차이
Figure pct00044
의 비트 단위 메모리 표현을 도시한다. X자로 표시된 상자들은 사용되지 않는 비트들을 나타낸다.
하드웨어 설계 관점에서, 참조 샘플과의 차이는 비용이 들지 않는데, 왜냐하면 그것이 루마 샘플들의 NLALF 필터링을 위해 이미 존재하기/계산되어 있기 때문이다(CCALF 필터의 필터 형상이 NLALF에서의 루마에 대한 필터의 형상에 포함되어 있기 때문이다).
수학식 3의 필터링을 사용할 때의 CCALF의 코딩 이득은 수학식 13의 필터링을 사용할 때와 비슷하다.
이 표현을 사용하는 것의 한 가지 장점은
Figure pct00045
곱셈의 입력들의 비트 수를 감소시키기 위해, 보다 적은 수의 비트들이 표현되도록 요구하는 범위에 유지되기 위해 차이 값들이 클리핑될 수 있다는 것이며:
Figure pct00046
여기서 K는 클리핑 함수이며, 예를 들어:
Figure pct00047
또는 동등하게:
Figure pct00048
이고; 여기서 C는 클리핑 파라미터이며 d는 차이를 나타내는 수치이다. 이 표현과 VTM-5.0에서의 비선형 ALF 사이의 특별한 차이점은 클리핑 파라미터 C가 모든 샘플 위치에 대해 동일하고 그의 값이 고정되며 곱셈의 입력인
Figure pct00049
를 저장하기 위한 비트 수를 제한하기 위해 선택되는 반면, 비선형 ALF에서는 클리핑 파라미터 C가 각각의 샘플 위치마다 달라지며 그의 값이 필터 계수들과 함께 (APS에서) 전송된다는 것임에 유의해야 한다.
C의 특히 유리한 고정된 값들은
Figure pct00050
Figure pct00051
또는
Figure pct00052
인 것으로 밝혀졌으며, 여기서 IBitDepth는 코덱의 내부 비트 깊이(즉, 샘플 값들을 표현하기 위한 비트 수)이다. 예를 들어, 10 비트 내부 비트 깊이의 경우, C의 양호한 값들은 255 또는 127이다. 이 예시적인 클리핑 연산은 그러면 곱셈의 입력에서 2 또는 3 비트를 절감할 수 있게 한다.
C의 보다 작은 값들을 사용하는 것이 가능하지만, CCALF의 코딩 효율을 감소시키는 경향이 있는 반면, 보다 높은 값들은 클리핑 프로세스에 의해 제공되는 단순화 효과를 감소시킨다. 이에 따라, 클리핑 파라미터 C의 일반화는
Figure pct00053
이고, 여기서 n은 IbitDepth보다 작은 정수이다. n의 낮은 값들에 대해, 코딩 효율의 감소가 보다 낮지만, 단순화와 연관된 장점들도 보다 낮으며; n의 높은 값들에 대해서는 그 반대이다.
도 6b는, 16 비트 정수 메모리 공간(602)(또는 레지스터)에 저장될 때, 10 비트 내부 비트 깊이 및 C=255에 대해 수학식 14에서의 클리핑된 차이
Figure pct00054
를 저장하기 위한 비트 단위 메모리 표현의 예를 제공한다.
클리핑된 차이 값
Figure pct00055
의 하위 정밀도 비트들을 무시하기 위해, 제4 변형이 제3 변형과 결합될 수 있다. 특히 유리한 조합은, CCALF 코딩 이득이 크게 영향을 받지 않도록, 제2 변형에서와 동일한 수의 하위 비트 제거를 유지하는 것이다. 이 예는 도 6c에 의해 예시되어 있다.
도 6c는 내부 비트 깊이가 10 비트이고 C=255이며 최하위 4 비트가 무시되는 경우
Figure pct00056
를 저장하기 위한 비트 단위 메모리 표현의 예를 제공한다. 그러면 곱셈의 입력에서, 10 비트 대신에,
Figure pct00057
를 표현하는 데 4 개의 남아 있는 정밀도 비트와 603의 부호에 대한 1 비트만이 필요하다. 이는 계산되는 비트 수의 상당한 절감을 나타내고, 보다 간단한 구현을 결과한다.
일부 실시예들에서, 4 개의 변형의 조합들이 수행된다. 예를 들어, 곱셈 연산의 출력 결과가 10 개의 정밀도 비트와 1 개의 부호 비트로 표현될 수 있음으로써, 곱셈들의 결과들의 합계가 최대 15 개의 비트와 1 개의 부호 비트로 표현될 수 있도록(따라서 16 비트 레지스터 또는 메모리 공간에서 표현 가능/저장 가능하도록), 변형 1, 변형 2, 변형 3 및 선택적으로 변형 4가 조합된다. 그러한 실시예는 특히 하드웨어 구현에 아주 적합하다. 도 7a 및 도 7b는, 크로마 샘플 값에 결과들을 가산하기 위한 최종 반올림 및 비트 시프트 이전의, 필터링 연산들의 중간 표현(곱셈 출력) 및 최종 표현(결과들의 합계)의 예를 예시한다.
도 7a는 (예를 들어, 도 5d에서와 같이) 샘플 값의 최상위 8 비트만을 유지할 때, 계수의 소수 부분에 대한 7 비트 정밀도를 유지할 때, 그리고 계수들에 대한 [-0.03125;0.03125[ 또는 ]-0.03125;0.03125[ 범위(즉, 예를 들어, 도 5c에서와 같이 계수들을 저장하기 위한 2 비트와 부호 비트)를 유지할 때
Figure pct00058
를 저장하기 위한 비트 단위 메모리 표현의 예를 제공한다. 곱셈 결과들은 그러면 10 비트와 1 개의 부호 비트로 저장될 수 있다.
상이한 루마 비트 깊이 IBDL 및 크로마 비트 깊이 IBDC를 처리하기 위한 수학식 4, 및 수학식 11(단, BB = IBDL - KB이고 KB는 루마 샘플 값들에 대해 유지되는 최상위 정밀도 비트들의 수와 동일함(예를 들면, 이 예에서 KB=8)을 사용할 때, 수학식 3은 다음과 같이 다시 써질 수 있으며:
Figure pct00059
여기서 B3 = DB + (IBDL - IBDC) = 2.IBDL - IBDC - KB이고, B4 = BDPC -B3이며, BDPC는 계수의 소수 부분에 대한 비트 수(예를 들면, 이 예에서 계수들의 소수 부분의 7 비트 정밀도에 대해 BDPC = 7)이고,
Figure pct00060
는 계수들의 정수 표현(즉, 이 예에서, 범위 [-0.03125;0.03125[ 또는 ]-0.03125;0.03125[에 있는 고정 소수점 값들을 나타내는 정수 값들, 이 예에서, 정수 범위 [-4;3] 또는 [-3;3]에 있는 값들을 취하는 정수 값들)이다. 이 방정식은
Figure pct00061
에 대해 유효하다.
Figure pct00062
이고
Figure pct00063
일 때(즉,
Figure pct00064
일 때), 수학식 16은 다음으로 대체될 수 있고:
Figure pct00065
Figure pct00066
이고
Figure pct00067
일 때, 수학식 16은 다음으로 대체될 수 있으며:
Figure pct00068
Figure pct00069
일 때, 수학식 16은 다음으로 대체될 수 있다:
Figure pct00070
주어진 예에서, KB=8인 경우, 10 비트 루마 및 크로마 비트 깊이(즉, IBDL=IBDC=10)에 대해, 수학식 16은 다음과 같이 써질 수 있다:
Figure pct00071
그 결과 각각의 계수는 2 비트와 부호 비트에 의해 표현되고, 각각의 샘플은 8 비트의 감소된 수 및 선택적으로(구현/설계 선택에 따라) 부호 비트(0과 동일함)에 의해 표현된다 - 그리고 이에 따라 곱셈 결과는 8 비트와 부호에 의해 표현될 수 있다 -.
도 7a는 또한 샘플 값의 최상위 6 비트(예를 들어, 도 5d에서보다 2 개 더 많은 상위 비트를 가짐)만을 유지할 때, 계수의 소수 부분에 대한 7 비트 정밀도를 유지할 때, 그리고 계수들에 대한 [-0.125;0.125[ 또는 ]-0.125;0.125[ 범위(즉, 예를 들어, 도 5c에서보다 2 개 더 많은 상위 비트를 갖는 것과 같이 계수들을 저장하기 위한 4 비트와 부호 비트)를 유지할 때
Figure pct00072
를 저장하기 위한 비트 단위 메모리 표현의 예를 제공하는 데 유효하다. 곱셈 결과들은 그러면 10 비트와 1 개의 부호 비트로 저장될 수 있다.
해당 주어진 예에서, KB=6이다. 10 비트 루마 및 크로마 비트 깊이(즉, IBDL=IBDC=10)에 대해, 수학식 16은 다음과 같이 써질 수 있다:
Figure pct00073
도 7b는,
Figure pct00074
가 도 7a에서 설명된 바와 같이 표현되고 계산될 때, 합산 연산들
Figure pct00075
을 계산하고 저장하기 위한 비트 단위 메모리 표현의 예를 제공한다. 이것은 필터가 도 4a에 따라 18 개의 곱셈 결과의 17 개의 별개의 덧셈을 갖는 경우에 대한 것임이 이해되어야 한다. (고정 소수점 값을 저장하는 10 비트 정수 값들을 고려할 때) 17 개의 덧셈 중 최악의 경우는 15 비트와 부호 비트로 저장될 수 있는 정수 값들 -210 = -1024의 18배, 즉 -18432이다 - 이는 덧셈 결과가 15 비트와 부호 비트를 사용하여 표현될 수 있음을 의미한다 -.
추가의(제5) 변형에서, 필터링 프로세스에서 18 개의 샘플 대신에, 16 개 이하의 샘플이 사용되도록, 도 4a의 필터 패턴이 수정된다. 따라서 합산 연산들에서, 1 비트가 절감될 수 있다. 더욱이, 이는 일부 곱셈 연산들이 제거되므로 필터링 계산을 단순화하는 장점이 있다. 예를 들어 도 4b에서는, 29 개의 정밀도 비트와 1 개의 부호 비트를 사용하는 대신에, 28 개의 정밀도 비트와 1 개의 부호 비트만이 사용될 것이고, 도 7b에서는, 15 개의 정밀도 비트를 사용하는 대신에, 14 개의 정밀도 비트만이 사용될 것이다. 해당 제5 변형을 사용하는 일부 대안들에서, 덧셈 연산들에서 절감되는 비트는 곱셈 결과들의 정밀도를 증가시키는 데 사용된다. 예를 들어, 도 7a에서, 10 개 대신에 11 개의 정밀도 비트가 사용될 것이다. 하나의 대안에서, 10 개의 정밀도 비트의 소수 부분이 1 비트만큼(7 비트로부터 8 비트로) 증가된다. 이것은 계수 값들의 소수 부분에 하나의 하위 정밀도 비트를 추가하는 것에 의해 달성될 수 있다. 예를 들어 도 5c에서, 최우측의 사용되는 비트의 오른쪽에 있는 비트가 또다시 사용될 것이다. 대안적으로, 이것은, 제3 변형이 사용되는 경우, 샘플 값에 대해 정밀도 비트를 1 개 더 사용하는 것에 의해 달성될 수 있다. 예를 들어 도 5d에서, 최우측의 사용되는 비트의 오른쪽에 있는 비트가 또다시 사용될 것이다. 제2 대안에서, 10 개의 정밀도 비트의 정수 부분이 1 비트만큼(3 비트로부터 4 비트로) 증가된다. 이것은 계수 값들에 하나의 상위 정밀도 비트를 추가하는 것(즉, 가능한 계수 값들의 범위를 증가시키는 것)에 의해 달성된다. 예를 들어 도 5c에서, 최좌측의 사용되는 비트의 왼쪽에 있는 비트가 또다시 사용될 것이다.
이러한 제5 변형 대안들은 레지스터들이 고정된 크기를 갖는 기존의 하드웨어를 사용할 때, 그리고 결과들이 레지스터들에 들어맞을 때마다 곱셈의 비용이 동일한 경우(예를 들어, CPU가 미리 정의된 크기들의 레지스터들 또는 메모리 위치들을 암시하는 연산을 프로세싱하기 위한 명령어들로서 실행되는 소프트웨어 구현의 경우) 특히 관심을 끈다. 비트들의 일부가 사용되지 않더라도, 하드웨어 설계가 (예를 들면, 개발 속도/비용 문제로) 고정 크기 연산들을 구현하기 위해 기존의 미리 정의된 회로 템플릿들을 사용할 때에도 이는 관심 대상이다. 그러면, 양쪽 경우에, 양쪽 모두가, 예를 들어, 16 비트 입력들과 32 비트 출력으로 구현되는 경우, 예를 들어 10 비트 또는 11 비트에 대한 곱셈의 (실행 지연시간의 측면에서 및/또는 구현에 사용되는 논리 게이트들의 수의 측면에서의) 비용은 변하지 않지만, CCALF의 코딩 이득은 두 번째 버전에서 약간 더 양호한데, 왜냐하면 정밀도 비트를 1개 더 사용하기 때문이다.
대안으로, 합산 연산들에서 2 비트(또는 그 이상)가 절감될 수 있도록 필터링에서 8 개의(또는 그 이하의) 샘플이 사용되며, 예를 들어, 8 개의 샘플이 사용되는(2 비트가 절감되는) 도 7f, 또는 4 개의 샘플만이 사용되는(3 비트가 절감되는) 도 7g를 참조한다. 해당 대안의 변형들에서, 합계에서 절감되는 2 비트(또는 그 이상)는, 예를 들어, 필터링 프로세스 동안, 보다 많은 정밀도를 갖고 16 비트 레지스터들의 정밀도를 완전히 사용하기 위해 곱셈의 입력들 간에 재분배된다.
도 7c는 필터링을 위해 16 개의 샘플만을 사용하는 필터 패턴(706)의 일 예를 제공한다. 해당 필터 패턴의 경우, 필터링 연산들이 다음과 같이 된다:
Figure pct00076
샘플들의 이러한 선택은 '다이아몬드' 형상이라고 기술될 수 있으며, 여기서 각각의 샘플은 참조 샘플을 기준으로 위치 (x+u, y+v)를 가지며 여기서 u
Figure pct00077
[-2,2]이고 v
Figure pct00078
[-1,2]이며, |u|=2일 때 v
Figure pct00079
[0,1]이다.
도 7d는 필터링을 위해 16 개의 샘플을 사용하는 필터 패턴(707)의 다른 예를 제공한다. 이 패턴은 YUV 4:2:0 비디오 표현을 사용할 때 도 7c에서의 패턴보다 더 적합하며, 크로마 샘플 서브샘플링된 위치는 707에서 샘플 5, 샘플 6, 샘플 9 및 샘플 10의 위치의 중간에 위치한다. 일 변형에 따르면, 2 개 이상의 필터 패턴이 이용 가능하며, YUV 4:2:0에서의 크로마 서브샘플링에 따라 하나의 필터 패턴이 선택된다. 하나의 대안에서, 필터 패턴 인덱스가 비트스트림에서, 예를 들어, 파라미터 세트(예를 들면, SPS 또는 PPS)에서 제공/시그널링된다. 해당 필터 패턴의 경우, 필터링 연산들이 다음과 같이 된다:
Figure pct00080
샘플들의 이러한 선택은 참조 샘플을 기준으로 위치 (x+u, y+v)를 가지는 각각의 샘플로서 기술될 수 있으며 여기서 u
Figure pct00081
[-1,2]이고 v
Figure pct00082
[-1,2]이다.
도 7e는 필터링을 위해 12 개의 샘플을 사용하는 필터 패턴(708)의 예를 제공한다. 이 패턴은 도 7c에서의 패턴보다 적은 수의 샘플들에 액세스할 수 있게 하고, 보다 적은 계수들을 비트스트림에 코딩할 수 있게 하지만, 합산 연산들에서 사용되는 비트 수를 더 감소시키게 할 수는 없다. 해당 필터 패턴의 경우, 필터링 연산들이 다음과 같이 된다:
Figure pct00083
샘플들의 이러한 선택은 참조 샘플을 기준으로 위치 (x+u, y+v)를 가지는 각각의 샘플로서 기술될 수 있으며 여기서 u
Figure pct00084
[-1,1]이고 v
Figure pct00085
[-1,2]이다.
도 7f는 필터링을 위해 8 개의 샘플만을 사용하는 필터 패턴(709)의 예를 제공한다. 이 패턴은, 도 7c에서의 패턴과 비교하여, 합산 연산들에서 사용되는 비트 수를 1만큼 더 줄일 수 있게 한다. 이는 그러면 도 4a에서의 패턴에 비해 2 비트만큼 줄일 수 있게 한다. 해당 필터 패턴의 경우, 필터링 연산들이 다음과 같이 된다:
Figure pct00086
샘플들의 이러한 선택은 '다이아몬드' 형상이라고 기술될 수 있으며, 여기서 각각의 샘플은 참조 샘플을 기준으로 위치 (x+u, y+v)를 가지며 여기서 u
Figure pct00087
[-1,1]이고 v
Figure pct00088
[-1,2]이며, |u|=1일 때 v
Figure pct00089
[0,1]이다.
도 7g는 필터링을 위해 4 개의 샘플만을 사용하는 필터 패턴(710)의 예를 제공한다. 이 패턴은, 도 7f에서의 패턴과 비교하여, 합산 연산들에서 사용되는 비트 수를 1만큼 더 줄일 수 있게 한다. 이는 그러면 도 4a에서의 패턴에 비해 3 비트만큼 줄일 수 있게 한다. 해당 필터 패턴의 경우, 필터링 연산들이 다음과 같이 된다:
Figure pct00090
샘플들의 이러한 선택은 참조 샘플을 기준으로 위치 (x+u, y+v)를 가지는 각각의 샘플로서 기술될 수 있으며 여기서 u 및 v 양쪽 모두는 [0,1]에 속한다.
일부 다른 변형들에서, 덧셈의 비용은 본질적으로 0이다. 곱셈 출력/결과가 16 비트(즉, 15 개의 정밀도 비트 + 1 개의 부호 비트)의 부호 있는 숫자이도록 곱셈 입력들이 제한된다. 이어서, 샘플 값들을 위해 10 비트가 사용되는 경우, 계수 값들은, 5 비트와 1 개의 부호 비트로 표현될 수 있도록, 주어진 범위로 제한되고 주어진 정밀도를 갖는다. 이러한 변형들 중 일부에서, 곱셈 연산들은 16 비트 레지스터들에서 수행된다.
일 실시예에서, 계수들의 소수 정밀도는 비트스트림에서, 예를 들어, 파라미터 세트(예를 들면, APS, SPS 또는 PPS)에서, 또는 슬라이스 헤더에서, 제1 정밀도 정보로서 시그널링된다.
일 실시예에서, 계수들의 범위(또는 가능한 범위들의 세트에서의 인덱스)는 비트스트림에서, 예를 들어, 파라미터 세트(예를 들면, APS, SPS 또는 PPS)에서, 또는 슬라이스 헤더에서, 제2 정밀도 정보로서 시그널링된다.
일 실시예에서, 샘플 값들에 대한 유지된 비트들의 수(즉, KB) 또는 대안적으로 데드 비트들의 수(즉, DB)는 비트스트림에서, 예를 들어, 파라미터 세트(예를 들면, APS, SPS 또는 PPS)에서, 또는 슬라이스 헤더에서, 제3 정밀도 정보로서 시그널링된다.
일 실시예에서, 제1 정밀도 정보, 제2 정밀도 정보 및/또는 제3 정밀도 정보 중 임의의 것의 조합은 비트스트림에서, 예를 들어, 파라미터 세트(예를 들면, APS, SPS 또는 PPS)에서, 또는 슬라이스 헤더에서 시그널링된다.
일 변형에서, 비트스트림에서 시그널링되는 제1 정밀도 정보, 제2 정밀도 정보 및/또는 제3 정밀도 정보 중 임의의 것의 그러한 조합의 허용된 값들은 곱셈 연산이 고정된 최대 비트 수, 예를 들어, 16을 사용하여 계산될 수 있는 최악의 경우를 보장해야 한다. 대안으로, 최악의 경우는 덧셈 연산 동안 사용되는 최대 비트 수도 고려한다.
일 실시예에서, 제1 정밀도 정보, 제2 정밀도 정보 및/또는 제3 정밀도 정보 중 임의의 것의 조합에 대한 가능한 값들의 세트에서의 인덱스가 시그널링된다.
일 변형에서, 그러한 세트들은 곱셈 연산이 고정된 최대 비트 수, 예를 들어, 16을 사용하여 계산될 수 있는 최악의 경우를 보장하기 위해 정의된다. 대안으로, 최악의 경우는 덧셈 연산 동안 사용되는 최대 비트 수도 고려한다.
제1 정밀도 정보, 제2 정밀도 정보 및/또는 제3 정밀도 정보 중 임의의 것의 조합이 제1 정밀도 정보 및 제2 정밀도 정보(즉, 소수 정밀도 및 유지된 범위)를 포함하는 실시예들에 대한 대안에서, 대안은 가수 크기(비트 수 단위) 및 부동 소수점 표현의 고정된 지수를 시그널링하는 것이다.
하나의 대안에서, 필터 계수들에 대해 고정 소수점 표현을 사용하는 대신에, 제한된 수의 비트 연산들을 사용하여 계산되도록 보장하는 특정 부동 소수점 표현이 사용된다. 환언하면, 각각의 계수 인덱스에 대해 제1 정밀도 정보, 제2 정밀도 정보 및/또는 제3 정밀도 정보 중 임의의 것의 조합이 시그널링된다.
설명된 예들, 변형들 및/또는 실시예들에서, 샘플 값들의 사용되는 비트 깊이 및 정밀도에 따라, 동등한 수학적 결과를 제공하기 위해, (동일한 정밀도를 유지하기 위해) 동일한 양만큼 계수들의 표현의 최하위 비트들을 시프트하면서, 계수 범위들이 위 및/또는 아래로 시프트될(즉, 2의 거듭제곱과 곱해질) 수 있음이 이해된다. 즉, 계수 값[의 범위](또는 샘플 값들)이 임의의 샘플 값(또는 계수 값[의 범위]) 스케일링의 역의 양만큼 스케일링된다:
Figure pct00091
이것은 비트 시프트와 동일한데, 그 이유는 B만큼의 왼쪽 비트 단위 시프트는 2B와의 곱셈과 동등하고, 오른쪽 시프트는 2B에 의한 정수 나눗셈과 거의 동등하다(차이점은 음수의 경우 반올림이 왼쪽 시프트에 대해 마이너스 무한대를 향하고 정수 나눗셈에 대해 0을 향한다는 것이다).
샘플 값들 및/또는 필터 계수들의 비트 단위 표현의 단순화가 위의 비트 단위 연산들을 통해 '필터링 동안' 수행되었지만, 필터링 이전에 이러한 값들을 별도로 프리프로세싱하는 것도 가능하다는 점이 또한 이해되어야 한다.
시그널링
도 3에서의 입력 CCALF 파라미터들(305, 306)은 상이한 입도 레벨들에서 CCALF를 인에이블/디스에이블시키기 위한 플래그들을 포함할 수 있다. 플래그들의 시그널링의 예는 아래에서 제공된다.
특정 실시예들에서, 하나의 플래그가 파라미터 세트: 예를 들어, 시퀀스 파라미터 세트(SPS) 또는 픽처 파라미터 세트(PPS)에서 시그널링된다. 이 플래그는 시퀀스 레벨 또는 픽처 레벨에서 CCALF 툴을 활성화시키거나 활성화시키지 않는 것을 가능하게 한다. 픽처에서 CCALF 툴이 활성일 때, 슬라이스 헤더에서 크로마 성분당 하나의 플래그가 시그널링된다. 이는 슬라이스에서 크로마 성분마다 CCALF를 인에이블시키거나 디스에이블시키는 것을 가능하게 한다. 슬라이스에서 CCALF가 인에이블될 때(즉, 적어도 하나의 크로마 성분에 대해 CCLAF가 인에이블될 때), CCALF가 인에이블되어 있는 각각의 크로마 성분에 대해, (Cb 성분에 대한) ccalf_ctb_flag_cb[x][y] 또는 (Cr 성분에 대한) ccalf_ctb_flag_cr[x][ y] 플래그가 슬라이스의 각각의 CTU의 CTU 데이터에 인코딩되며, x,y는 픽처에서의 수평 및 수직 CTU 좌표들/인덱스이다. 플래그들은 CCALF가 크로마 CTB에서 인에이블되는지 디스에이블되는지를 시그널링하는 것을 가능하게 한다. CCALF가 크로마 CTB에서 인에이블될 때, (예를 들면, 위에서 논의된 바와 같이) CTB 루마 샘플들을 사용하는 CCALF를 통해 크로마 샘플들이 정정/필터링된다.
플래그들은 CABAC(Context Adaptive Binary Arithmetic Coding)를 사용하여 시그널링되며, 크로마 성분당 3 개의 CABAC 콘텍스트가 있다. 인덱스 componentIdx를 갖는 주어진 크로마 성분에 대해, (존재할 때/이용 가능할 때) 동일한 슬라이스에 속하는 상단([x][y-1]) 좌측( [x-1][y]) CTU에서 활성인 (Cb 성분에 대한) ccalf_ctb_flag_cb 또는 (Cr 성분에 대한) ccalf_ctb_flag_cr의 수를 카운트하는 것 및 해당 값을 콘텍스트 인덱스로서 사용하는 것에 의해 콘텍스트가 선택된다.
ccalf_ctb_flag_cb[x][y] 및 ccalf_ctb_flag_cr[x][y] 시그널링의 예는, VTM-5.0에 대응하는 Versatile Video Coding(Draft 5)에서와 동일한 표기법 및 규약을 사용하여, 표 1에 주어져 있다.
Figure pct00092
표 1 coding_tree_unit( ) 신택스
일 실시예에 따르면, 구체적으로 슬라이스에 대해 필터 계수들을 적응시키고 전송할 수 있기 위해, 그리고 슬라이스 파라미터들에 대해 종래에 수행되는 바와 같이, CCALF 필터들의 계수들이 슬라이스 헤더에서 시그널링된다. CCALF가 주어진 크로마 성분에 대해 활성인 것으로 표시되는 경우, 대응하는 필터의 각각의 계수는 순차적으로 비트스트림에 인코딩/비트스트림으로부터 디코딩된다.
CCALF의 계수들은 전형적으로 골롬(Golomb) 가변 길이 코드들을 사용하여 코딩된다. 그렇지만, 위에서 논의된 계수들을 표현하는 비트들의 감소를 구현할 때, 코딩이 단순화될 수 있다. 구체적으로, 계수 값들을 저장하기 위한 비트 수가 감소되므로, 코딩 효율의 손실 없이 파싱하기 더 간단한 코딩 방법을 사용하는 것이 가능하다.
특히, 골롬 코딩은 계수를 올바르게 디코딩하기 위해 '튜닝 가능한 파라미터'(M)의 시그널링을 필요로 하며; 이것은 비트스트림 오버헤드를 증가시킨다. 본 발명은 어떤 다른 파라미터도 참조하지 않고 슬라이스 헤더에서 계수들을 직접 시그널링하는 것에 관한 것이다. 환언하면, 계수들은 (즉, '튜닝 가능한 파라미터'에 대한 참조 없이) 고정된 표현을 사용하여 인코딩된다. 이것은 코드워드가 (추론되거나 명시적으로 코딩되는) 구분자(delimiter)가 없는 단일 요소라는 점에서 '프리픽스 프리(prefix-free)' 또는 '콤마 프리(comma-free)'라고 기술될 수 있다.
위에서 논의된 제1 변형과 제2 변형을 결합시킬 때 특히 적합한 제1 대안에서, 계수 값들의 사용된/유효 비트들은 어떤 압축도 없이 비트스트림에 이와 같이(즉, 값이 무엇이든 간에, 코드를 표현하는 고정된 수의 비트로서) 저장된다. 일 예로서, 계수들이 도 5c에서와 같이 표현되는 경우, 계수는 비트스트림에 3 비트로 저장될 수 있다: 예를 들어, 부호 비트 뒤에 2 개의 소수 정밀도 비트가 온다.
제2 대안에서, 낮은 크기의 계수들의 비용을 감소시키기 위해 일종의 부호 있는 단항 코딩이 사용된다. 비트스트림 내의 제1 비트는 계수가 0인지 여부를 나타내고, 계수가 0이 아닌 경우, 한 비트는 계수의 부호를 나타내며, 1과 동일한 비트들의 시퀀스는 계수의 크기를 나타낸다. 1과 동일한 비트들의 수는 '계수의 정수 표현'의 절댓값 - 1과 동일하다. 계수의 정수 표현은 503에서의 정수 숫자의 비트들에 의해 표현되는 정수 값이다. '- 1'이 사용되는 이유는, 0과의 상등(equality to zero) 정보가 이미 코딩되어 있기 때문이다. 이어서, 절댓값이 가능한/인가된 최댓값보다 낮은 경우, 0과 동일한 비트는 숫자의 시그널링의 끝을 나타낸다. 이는 절댓값 - 1의 단항 코딩에 대응한다. 이 표현에 대한 디코딩 프로세스는 표 2에 설명된 알고리즘으로 요약될 수 있다.
Figure pct00093
표 2 제2 대안의 계수 디코딩 알고리즘
가능한 계수 값들의 비대칭 범위가 사용되는 일부 대안들에서, ‘CCALF_MAX_COEFF_VALUE’가 ‘- CCALF_MIN_COEFF_VALUE’와 동일하지 않을 때, 표 2에서 경우일 수 있는 바와 같이, 숫자의 가능한/인가된 최댓값은 음수와 양수에 대해 상이하다. 예를 들어, 도 5c의 표현이 사용되는 경우 그리고 가능한 계수 값들의 범위가 [-0.03125;0.03125[ (즉, [-0.03125; 0.0234375])인 경우, 가능한/인가된 최댓값은 음수에 대해 (-0.03125가 정수 -4로 표현되기 때문에) 4이고 양수에 대해 (0.0234375가 정수 3으로 표현되기 때문에) 3이다. 해당 예에서, 첫 번째 비트가 1과 동일한 것은 숫자가 0임을 의미하고, 부호 비트가 1과 동일한 것은 숫자가 음수임을 의미한다. 비트스트림에서의 계수들의 표현은 다음과 같다: ‘-0.03125에 대한 01111’(즉, -4 = CCALF_MIN_COEFF_VALUE), -0.0234375에 대한 ‘01110’(즉, -3), -0.015625에 대한 ‘0110’(즉, -2), -0.0078125에 대한 ‘010’(즉, -1), 0.0에 대한 ‘1’, 0.0078125에 대한 ‘000’(즉, 1), 0.015625에 대한 ‘0010’(즉, 2), 및 0.0234375에 대한 ‘0011’(즉 3 = CCALF_MAX_COEFF_VALUE). 일부 대안들에서, 첫 번째 비트가 1과 동일한 것은 숫자가 0이 아님을 의미할 수 있다. 일부 대안들에서, 부호 비트가 1과 동일한 것은 숫자가 양수임을 의미할 수 있다. 일부 대안들에서, 숫자의 단항 코딩은 (숫자가 최댓값보다 낮은 경우) 0과 동일한 비트들의 시퀀스와 이에 뒤이은 1과 동일한 비트일 수 있다.
제3 대안에서, 비트스트림은 먼저 계수의 절댓값에 대한 정수 표현의 단항 코딩을 제공한다. 정수 표현이 0이 아닌 경우, 부호 비트가 그에 뒤따른다. 표 3에서의 알고리즘은 이 표현에 대한 디코딩 프로세스의 예를 설명한다. 이 제3 대안에서, 계수의 절댓값을 디코딩하기 전에 부호가 알려져 있지 않다. 단항 코딩에 사용되는 최댓값이 그러면 양수 값과 음수 값에 대해 동일하다(표 3에서의 CCALF_MAX_COEFF_ABSOLUTE_VALUE). 예를 들어, 가능한 계수 값 세트의 범위가 [-0.0234375; 0.0234375]와 동일한 경우(즉, CCALF_MAX_COEFF_ABSOLUTE_VALUE=3인 경우) 도 5c의 표현이 사용된다. 비트스트림에서의 계수들의 표현은 다음과 같다: -0.0234375에 대한 ‘1111’(즉, -3), -0.015625에 대한 ‘1101’(즉, -2), -0.0078125에 대한 ‘101’(즉, -1), 0.0에 대한 ‘0’, 0.0078125에 대한 ‘100’(즉, 1), 0.015625에 대한 ‘1100’(즉, 2), 및 0.0234375에 대한 ‘1110’(즉 3).
Figure pct00094
표 3 제3 대안의 계수 디코딩 알고리즘
일부 변형들에서, CCALF 필터들의 계수들은 APS(또는 다른 파라미터 세트)에서 시그널링된다. 슬라이스 헤더에서 slice_ccalf_enable_flag_cb가 1과 동일할 때, 슬라이스 헤더는 또한 Cb 크로마 성분에 대한 CCALF 필터의 필터 계수들이 검색되어야 하는 APS(또는 다른 파라미터 세트)의 APS(또는 다른 파라미터 세트) 인덱스/식별자를 제공한다. 슬라이스 헤더에서 slice_ccalf_enable_flag_cr이 1과 동일할 때, 슬라이스 헤더는 또한 Cr 크로마 성분에 대한 CCALF 필터의 필터 계수들이 검색되어야 하는 APS(또는 다른 파라미터 세트)의 APS(또는 다른 파라미터 세트) 인덱스를 제공한다. 도 4a에 예시된 것과 같은 필터 패턴을 사용할 때, 비트스트림에 존재하는 필터 계수들의 수는 필터 형상에서 사용되는 샘플들의 수보다 적은데, 그 이유는 일부 계수들이 여러 샘플 위치들과 공유되기 때문이다.
본 발명의 실시예들의 구현
전술한 실시예들 중 하나 이상은 하나 이상의 전술한 실시예의 방법 단계들을 수행하는 인코더 또는 디코더의 형태로 구현될 수 있다. 이하의 실시예들은 그러한 구현들을 예시한다.
예를 들어, 전술한 실시예들 중 임의의 것에 따른 적응적 루프 필터는 도 8에서의 인코더에 의해 수행되는 포스트 필터링(9415) 또는 도 9에서의 디코더에 의해 수행되는 포스트 필터링(9567)에서 사용될 수 있다.
도 8은 본 발명의 실시예에 따른 인코더의 블록 다이어그램을 예시한다. 인코더는 연결된 모듈들에 의해 표현되며, 각각의 모듈은 본 발명의 하나 이상의 실시예에 따른 이미지들의 시퀀스의 이미지를 인코딩하는 적어도 하나의 실시예를 구현하는 방법의 적어도 하나의 대응하는 단계를, 예를 들어, 디바이스의 중앙 프로세싱 유닛(CPU)에 의해 실행되는 프로그래밍 명령어들의 형태로, 구현되도록 구성된다.
원래 디지털 이미지들(i0 내지 in)의 시퀀스(9401)는 인코더(9400)에 의해 입력으로서 수신된다. 각각의 디지털 이미지는, 때때로 픽셀들이라고도 지칭되는(이후부터, 픽셀들이라고 지칭됨), 샘플들의 세트에 의해 표현된다. 인코딩 프로세스의 구현 이후에 인코더(9400)에 의해 비트스트림(9410)이 출력된다. 비트스트림(9410)은 슬라이스들과 같은 복수의 인코딩 유닛들 또는 이미지 부분들에 대한 데이터를 포함하고, 각각의 슬라이스는 슬라이스를 인코딩하는 데 사용되는 인코딩 파라미터들의 인코딩 값들을 전송하기 위한 슬라이스 헤더, 및 인코딩된 비디오 데이터를 포함하는 슬라이스 보디(slice body)를 포함한다.
입력 디지털 이미지들(i0 내지 in)(9401)은 모듈(9402)에 의해 픽셀 블록들로 분할된다. 블록들은 이미지 부분들에 대응하고 가변 크기들일 수 있다(예를 들면, 4x4, 8x8, 16x16, 32x32, 64x64, 128x128 픽셀들 및 여러 직사각형 블록 크기들이 또한 고려될 수 있다). 각각의 입력 블록에 대해 코딩 모드가 선택된다. 두 가지 계열의 코딩 모드들, 즉 공간 예측 코딩(인트라 예측)에 기초한 코딩 모드들과 시간 예측에 기초한 코딩 모드들(인터 코딩, MERGE, SKIP)이 제공된다. 가능한 코딩 모드들이 테스트된다.
모듈(9403)은, 인코딩될 주어진 블록이 인코딩될 상기 블록의 이웃의 픽셀들로부터 계산되는 예측자에 의해 예측되는, 인트라 예측 프로세스를 구현한다. 인트라 코딩이 선택되는 경우 잔차를 제공하기 위해, 선택된 인트라 예측자의 표시 및 주어진 블록과 그의 예측자 간의 차이가 인코딩된다.
시간 예측은 모션 추정 모듈(9404) 및 모션 보상 모듈(9405)에 의해 구현된다. 먼저, 참조 이미지들(9416)의 세트 중에서 참조 이미지가 선택되고, 인코딩될 주어진 블록에 (픽셀 값 유사도 면에서 가장 가까운) 최근접 영역인, 참조 영역 또는 이미지 부분이라고도 불리는, 참조 이미지의 일 부분이 모션 추정 모듈(9404)에 의해 선택된다. 이어서, 모션 보상 모듈(9405)은 선택된 영역을 사용하여 인코딩될 블록을 예측한다. 잔차 블록/데이터라고도 불리는, 선택된 참조 영역과 주어진 블록 간의 차이가 모션 보상 모듈(9405)에 의해 계산된다. 선택된 참조 영역은 모션 정보(예를 들면, 모션 벡터)를 사용하여 표시된다.
따라서, 이들 경우(공간 및 시간 예측) 둘 모두에서, SKIP 모드에 있지 않을 때 원래 블록으로부터 예측자를 감산하는 것에 의해 잔차가 계산된다.
모듈(9403)에 의해 구현되는 INTRA 예측에서, 예측 방향이 인코딩된다. 모듈들(9404, 9405, 9416, 9418, 9417)에 의해 구현되는 인터 예측에서, 시간 예측을 위해 그러한 모션 벡터를 식별해 주기 위한 적어도 하나의 모션 벡터 또는 정보(데이터)가 인코딩된다.
인터 예측이 선택되는 경우 모션 벡터 및 잔차 블록에 관련된 정보가 인코딩된다. 비트레이트를 더욱 감소시키기 위해, 모션이 동질적이라고 가정하면, 모션 벡터 예측자에 대한 차이에 의해 모션 벡터가 인코딩된다. 모션 정보 예측자 후보들의 세트로부터의 모션 벡터 예측자들은 모션 벡터 예측 및 코딩 모듈(9417)에 의해 모션 벡터들 필드(9418)로부터 획득된다.
인코더(9400)는 레이트-왜곡 기준과 같은 인코딩 비용 기준을 적용하는 것에 의해 코딩 모드를 선택하기 위한 선택 모듈(9406)을 추가로 포함한다. 중복성을 더욱 감소시키기 위해, (DCT와 같은) 변환이 변환 모듈(9407)에 의해 잔차 블록에 적용되고, 획득되는 변환된 데이터는 이어서 양자화 모듈(9408)에 의해 양자화되고 엔트로피 인코딩 모듈(9409)에 의해 엔트로피 인코딩된다. 마지막으로, SKIP 모드에 있지 않고 선택된 코딩 모드가 잔차 블록의 인코딩을 필요로 할 때, 인코딩되고 있는 현재 블록의 인코딩된 잔차 블록은 비트스트림(9410)에 삽입된다.
인코더(9400)는 또한 후속 이미지들의 모션 추정을 위한 참조 이미지(예를 들면, 참조 이미지들/픽처들(9416) 내의 참조 이미지들)를 생성하기 위해 인코딩된 이미지의 디코딩을 수행한다. 이것은 인코더 및 비트스트림을 수신하는 디코더가 동일한 참조 프레임들(예를 들면, 재구성된 이미지들 또는 재구성된 이미지 부분들이 사용됨)을 가질 수 있게 한다. 역 양자화(inverse quantization)("역양자화(dequantization)") 모듈(9411)은 양자화된 데이터의 역 양자화("역양자화")를 수행하며, 이어서 역변환 모듈(9412)에 의해 수행되는 역변환이 뒤따른다. 인트라 예측 모듈(9413)은 예측 정보를 사용하여 주어진 블록에 대해 어느 예측자를 사용할지를 결정하고, 모션 보상 모듈(9414)은 모듈(9412)에 의해 획득되는 잔차를 참조 이미지들(9416)의 세트로부터 획득되는 참조 영역에 실제로 가산한다. 이어서, 픽셀들의 재구성된 프레임(이미지 또는 이미지 부분들)을 필터링하여 참조 이미지들(9416)의 세트에 대한 다른 참조 이미지를 획득하기 위해 모듈(9415)에 의해 포스트 필터링이 적용된다.
도 9는 본 발명의 실시예에 따른, 인코더로부터 데이터를 수신하는 데 사용될 수 있는 디코더(9560)의 블록 다이어그램을 예시한다. 디코더는 연결된 모듈들에 의해 표현되며, 각각의 모듈은 디코더(9560)에 의해 구현되는 방법의 대응하는 단계를, 예를 들어, 디바이스의 CPU에 의해 실행될 프로그래밍 명령어들의 형태로, 구현되도록 구성된다.
디코더(9560)는 인코딩된 유닛들(예를 들면, 이미지 부분, 블록 또는 코딩 유닛에 대응하는 데이터)을 포함하는 비트스트림(9561)을 수신하고, 각각의 인코딩된 유닛은 인코딩 파라미터들에 대한 정보를 포함하는 헤더 및 인코딩된 비디오 데이터를 포함하는 보디로 구성된다. 도 8과 관련하여 설명된 바와 같이, 인코딩된 비디오 데이터는 엔트로피 인코딩되고, 모션 정보(예를 들면, 모션 벡터 예측자들의 인덱스들)는, 주어진 이미지 부분(예를 들면, 블록 또는 CU)에 대해, 미리 결정된 수의 비트들에 인코딩된다. 수신된 인코딩된 비디오 데이터는 모듈(9562)에 의해 엔트로피 디코딩된다. 잔차 데이터는 이어서 모듈(9563)에 의해 역양자화되고, 이어서 픽셀 값들을 획득하기 위해 모듈(9564)에 의해 역변환이 적용된다.
코딩 모드를 나타내는 모드 데이터가 또한 엔트로피 디코딩되고, 그 모드에 기초하여, 이미지 데이터의 인코딩된 블록들(유닛들/세트들/그룹들)에 대해 INTRA 유형 디코딩 또는 INTER 유형 디코딩이 수행된다. INTRA 모드의 경우에, INTRA 예측자는 비트스트림에 명시되는 인트라 예측 모드에 기초하여 인트라 예측 모듈(9565)에 의해 결정된다(예를 들면, 인트라 예측 모드는 비트스트림에 제공되는 데이터를 사용하여 결정 가능하다). 모드가 INTER 모드인 경우, 인코더에 의해 사용되는 참조 영역을 찾기(식별하기) 위해 비트스트림으로부터 모션 예측 정보가 추출/획득된다. 모션 예측 정보는, 예를 들어, 참조 프레임 인덱스 및 모션 벡터 잔차를 포함한다. 모션 벡터를 획득하기 위해 모션 벡터 디코딩 모듈(9570)에 의해 모션 벡터 예측자가 모션 벡터 잔차에 가산된다.
모션 벡터 디코딩 모듈(9570)은 모션 예측에 의해 인코딩되는 각각의 이미지 부분(예를 들면, 현재 블록 또는 CU)에 대해 모션 벡터 디코딩을 적용한다. 일단 현재 블록에 대한 모션 벡터 예측자의 인덱스가 획득되면, 이미지 부분(예를 들면, 현재 블록 또는 CU)과 연관된 모션 벡터의 실제 값이 디코딩되어 모듈(9566)에 의해 모션 보상을 적용하는 데 사용될 수 있다. 모듈(9566)이 모션 보상을 수행할 수 있도록, 디코딩된 모션 벡터에 의해 표시되는 참조 이미지 부분이 참조 이미지들(9568)의 세트로부터 추출/획득된다. 후속적으로 디코딩되는 모션 벡터들의 예측에 사용되기 위해 모션 벡터 필드 데이터(9571)가 디코딩된 모션 벡터로 업데이트된다.
마지막으로, 디코딩된 블록이 획득된다. 적절한 경우, 포스트 필터링 모듈(9567)에 의해 포스트 필터링이 적용된다. 디코딩된 비디오 신호(9569)가 최종적으로 획득되고 디코더(9560)에 의해 제공된다.
도 10은 본 발명의 하나 이상의 실시예가 구현될 수 있는 데이터 통신 시스템을 예시한다. 데이터 통신 시스템은 데이터 통신 네트워크(9200)를 통해 데이터 스트림(9204)의 데이터 패킷들을 수신 디바이스, 이 경우에 클라이언트 단말(9202)로 전송하도록 동작 가능한 전송 디바이스, 이 경우에 서버(9201)를 포함한다. 데이터 통신 네트워크(9200)는 WAN(Wide Area Network) 또는 LAN(Local Area Network)일 수 있다. 그러한 네트워크는, 예를 들어, 무선 네트워크(Wifi/802.11a 또는 b 또는 g), 이더넷 네트워크, 인터넷 네트워크 또는 여러 상이한 네트워크들로 구성된 혼합 네트워크일 수 있다. 본 발명의 특정 실시예에서, 데이터 통신 시스템은 서버(9201)가 동일한 데이터 콘텐츠를 다수의 클라이언트들로 송신하는 디지털 텔레비전 방송 시스템일 수 있다.
서버(9201)에 의해 제공되는 데이터 스트림(9204)은 비디오 및 오디오 데이터를 나타내는 멀티미디어 데이터로 구성될 수 있다. 오디오 및 비디오 데이터 스트림들은, 본 발명의 일부 실시예들에서, 마이크로폰 및 카메라를, 제각기, 사용하여 서버(9201)에 의해 캡처될 수 있다. 일부 실시예들에서, 데이터 스트림들은 서버(9201)에 저장되거나 또는 서버(9201)에 의해 다른 데이터 제공자로부터 수신되거나 또는 서버(9201)에서 생성될 수 있다. 서버(9201)는, 특히 인코더에 대한 입력으로서 제시되는 데이터의 더 간결한 표현인 전송을 위한 압축된 비트스트림을 제공하기 위해, 비디오 및 오디오 스트림들을 인코딩하기 위한 인코더를 구비하고 있다. 전송되는 데이터의 양에 대한 전송되는 데이터의 품질의 더 양호한 비를 달성하기 위해, 비디오 데이터의 압축은, 예를 들어, HEVC(High Efficiency Video Coding) 포맷 또는 H.264/AVC(Advanced Video Coding) 포맷 또는 VVC(Versatile Video Coding) 포맷을 따를 수 있다. 클라이언트(9202)는, 디스플레이 디바이스에서 비디오 이미지를 재생하고 스피커에 의해 오디오 데이터를 재생하기 위해, 전송된 비트스트림을 수신하고 재구성된 비트스트림을 디코딩한다.
이 실시예에서 스트리밍 시나리오가 고려되지만, 본 발명의 일부 실시예들에서 인코더와 디코더 사이의 데이터 통신이, 예를 들어, 광학 디스크와 같은, 미디어 저장 디바이스를 사용하여 수행될 수 있다는 것이 이해될 것이다. 본 발명의 하나 이상의 실시예에서, 최종 이미지에서 필터링된 픽셀들을 제공하기 위해 이미지의 재구성된 픽셀들에 적용하기 위한 보상 오프셋들을 나타내는 데이터와 함께 비디오 이미지가 전송될 수 있다.
도 11은 본 발명의 적어도 하나의 실시예를 구현하도록 구성된 프로세싱 디바이스(9300)를 개략적으로 예시한다. 프로세싱 디바이스(9300)는 마이크로컴퓨터, 워크스테이션, 사용자 단말 또는 경량 휴대용 디바이스와 같은 디바이스일 수 있다. 디바이스/장치(9300)는 다음과 같은 것들에 연결되는 통신 버스(9313)를 포함한다:
- CPU로 표기된, 마이크로프로세서와 같은, 중앙 프로세싱 유닛(9311);
- 디바이스(9300)를 동작시키고/시키거나 본 발명을 구현하기 위한 컴퓨터 프로그램들/명령어들을 저장하기 위한, ROM으로 표기된, 판독 전용 메모리(9307);
- 본 발명의 실시예들의 방법의 실행 가능 코드는 물론, 디지털 이미지들의 시퀀스를 인코딩하는 방법 및/또는 본 발명의 실시예들에 따른 비트스트림을 디코딩하는 방법을 구현하는 데 필요한 변수들 및 파라미터들을 기록하도록 구성된 레지스터들을 저장하기 위한, RAM으로 표기된, 랜덤 액세스 메모리(9312); 및
- 프로세싱될 디지털 데이터가 그를 통해 전송되거나 수신되는 통신 네트워크(9303)에 연결된 통신 인터페이스(9302).
임의로, 장치(9300)는 다음과 같은 컴포넌트들을 또한 포함할 수 있다:
- 본 발명의 하나 이상의 실시예의 방법들을 구현하기 위한 컴퓨터 프로그램들 및 본 발명의 하나 이상의 실시예의 구현 동안 사용되거나 생성되는 데이터를 저장하기 위한, 하드 디스크와 같은, 데이터 저장 수단(9304);
- 디스크(9306)(예를 들면, 저장 매체)에 대한 디스크 드라이브(9305) - 디스크 드라이브(9305)는 디스크(9306)로부터 데이터를 판독하거나 상기 디스크(9306)에 데이터를 기입하도록 구성됨 -; 또는
- 키보드(9310), 터치스크린 또는 임의의 다른 포인팅/입력 수단을 통해, 데이터를 디스플레이하고/하거나 사용자와의 그래픽 인터페이스로서 역할하기 위한 스크린(9309).
장치(9300)는, 예를 들어, 디지털 카메라(9320) 또는 마이크로폰(9308)과 같은, 다양한 주변기기들에 연결될 수 있으며, 각각의 주변기기는 멀티미디어 데이터를 장치(9300)에 공급하기 위해 입출력 카드(도시되지 않음)에 연결된다.
통신 버스(9313)는 장치(9300)에 포함되거나 이에 연결되는 다양한 요소들 간의 통신 및 상호운용성을 제공한다. 버스의 표현은 제한적이지 않으며, 특히 중앙 프로세싱 유닛(9311)은 장치(9300)의 임의의 요소에 직접 또는 장치(9300)의 다른 요소를 통해 명령어들을 통신하도록 동작 가능하다.
디스크(9306)는, 예를 들어, 재기입 가능(rewritable)하거나 그렇지 않은 콤팩트 디스크(CD-ROM), ZIP 디스크 또는 메모리 카드와 같은 임의의 정보 매체로 대체될 수 있으며, 일반적으로, 장치에 통합되거나 통합되지 않은 마이크로컴퓨터 또는 프로세서에 의해 판독되고, 어쩌면 이동식이며, 실행이 구현될 본 발명에 따른 디지털 이미지들의 시퀀스를 인코딩하는 방법 및/또는 비트스트림을 디코딩하는 방법을 가능하게 하는 하나 이상의 프로그램을 저장하도록 구성된 정보 저장 수단으로 대체될 수 있다.
실행 가능 코드는 판독 전용 메모리(9307)에, 하드 디스크(9304)에 또는, 예를 들어, 이전에 기술된 바와 같은 디스크(9306)와 같은 이동식 디지털 매체에 저장될 수 있다. 변형에 따르면, 프로그램들의 실행 가능 코드는, 실행되기 전에 장치(9300)의 저장 수단들 중 하나, 예를 들어, 하드 디스크(9304)에 저장되기 위해, 통신 네트워크(9303)를 통해 인터페이스(9302)를 거쳐 수신될 수 있다.
중앙 프로세싱 유닛(9311)은 전술한 저장 수단들 중 하나에 저장되는 명령어들인, 본 발명에 따른 프로그램 또는 프로그램들의 소프트웨어 코드의 명령어들 또는 부분들의 실행을 제어하고 지시하도록 구성된다. 전원을 켤 때, 비휘발성 메모리에, 예를 들어, 하드 디스크(9304), 디스크(9306)에 또는 판독 전용 메모리(9307)에 저장되어 있는 프로그램 또는 프로그램들은 랜덤 액세스 메모리(9312)로 전송되고, 그러면 랜덤 액세스 메모리(9312)는 프로그램 또는 프로그램들의 실행 가능 코드는 물론 본 발명을 구현하는 데 필요한 변수들 및 파라미터들을 저장하기 위한 레지스터들을 포함한다.
이 실시예에서, 장치는 본 발명을 구현하기 위해 소프트웨어를 사용하는 프로그램 가능한 장치이다. 그렇지만, 대안적으로, 본 발명은 하드웨어로(예를 들어, ASIC(Application Specific Integrated Circuit)의 형태로) 구현될 수 있다.
또한, 본 발명의 다른 실시예들에 따르면, 전술한 실시예에 따른 디코더가 컴퓨터, 모바일 폰(셀룰러 폰), 태블릿 또는 사용자에게 콘텐츠를 제공/디스플레이할 수 있는 임의의 다른 유형의 디바이스(예를 들면, 디스플레이 장치)와 같은 사용자 단말에 제공되어 있는 것이 이해된다. 또 다른 실시예에 따르면, 전술한 실시예에 따른 인코더는 인코더가 인코딩할 콘텐츠를 캡처하여 제공하는 카메라, 비디오 카메라 또는 네트워크 카메라(예를 들면, 폐쇄 회로 텔레비전 또는 비디오 감시 카메라)를 또한 포함하는 이미지 캡처 장치에 제공되어 있다. 2 개의 그러한 실시예가 도 12 및 도 13를 참조하여 아래에서 제공된다.
도 12는 네트워크 카메라(9452) 및 클라이언트 장치(9454)를 포함하는 네트워크 카메라 시스템(9450)을 예시하는 다이어그램이다.
네트워크 카메라(9452)는 이미징 유닛(9456), 인코딩 유닛(9458), 통신 유닛(9460) 및 제어 유닛(9462)을 포함한다. 네트워크 카메라(9452)와 클라이언트 장치(9454)는 네트워크(9200)를 통해 서로 통신할 수 있도록 상호 연결된다. 이미징 유닛(9456)은 렌즈와 이미지 센서(예를 들면, CCD(charge coupled device) 또는 CMOS(complementary metal oxide semiconductor))를 포함하며, 물체의 이미지를 캡처하고 이미지에 기초하여 이미지 데이터를 생성한다. 이 이미지는 정지 이미지 또는 비디오 이미지일 수 있다. 이미징 유닛은 (광학적으로 또는 디지털적으로) 줌잉 또는 패닝하도록 제각기 구성된 줌잉 수단 및/또는 패닝 수단을 또한 포함할 수 있다. 인코딩 유닛(9458)은 전술한 실시예들 중 하나 이상에서 설명된 상기 인코딩 방법들을 사용하여 이미지 데이터를 인코딩한다. 인코딩 유닛(9458)은 전술한 실시예들에서 설명된 인코딩 방법들 중 적어도 하나를 사용한다. 다른 경우에, 인코딩 유닛(9458)은 전술한 실시예들에서 설명된 인코딩 방법들의 조합을 사용할 수 있다.
네트워크 카메라(9452)의 통신 유닛(9460)은 인코딩 유닛(9458)에 의해 인코딩되는 인코딩된 이미지 데이터를 클라이언트 장치(9454)로 전송한다. 게다가, 통신 유닛(9460)은 또한 클라이언트 장치(9454)로부터 커맨드들을 수신할 수 있다. 커맨드들은 인코딩 유닛(9458)에 의한 인코딩에 대한 파라미터들을 설정하는 커맨드들을 포함한다. 제어 유닛(9462)은 통신 유닛(9460)에 의해 수신되는 커맨드들 또는 사용자 입력에 따라 네트워크 카메라(9452) 내의 다른 유닛들을 제어한다.
클라이언트 장치(9454)는 통신 유닛(9464), 디코딩 유닛(9466) 및 제어 유닛(9468)을 포함한다. 클라이언트 장치(9454)의 통신 유닛(9464)은 커맨드들을 네트워크 카메라(9452)로 전송할 수 있다. 게다가, 클라이언트 장치(9454)의 통신 유닛(9464)은 네트워크 카메라(9452)로부터 인코딩된 이미지 데이터를 수신한다. 디코딩 유닛(9466)은 전술한 실시예들 중 하나 이상에서 설명된 상기 디코딩 방법들을 사용하여 인코딩된 이미지 데이터를 디코딩한다. 다른 경우에, 디코딩 유닛(9466)은 전술한 실시예들에서 설명된 디코딩 방법들의 조합을 사용할 수 있다. 클라이언트 장치(9454)의 제어 유닛(9468)은 통신 유닛(9464)에 의해 수신되는 사용자 조작 또는 커맨드들에 따라 클라이언트 장치(9454) 내의 다른 유닛들을 제어한다. 클라이언트 장치(9454)의 제어 유닛(9468)은 또한 디코딩 유닛(9466)에 의해 디코딩되는 이미지를 디스플레이하도록 디스플레이 장치(9470)를 제어할 수 있다.
클라이언트 장치(9454)의 제어 유닛(9468)은 또한 네트워크 카메라(9452)에 대한 파라미터들, 예를 들어, 인코딩 유닛(9458)에 의한 인코딩에 대한 파라미터들의 값들을 지정하기 위해 GUI(Graphical User Interface)를 디스플레이하도록 디스플레이 장치(9470)를 제어할 수 있다. 클라이언트 장치(9454)의 제어 유닛(9468)은 또한 디스플레이 장치(9470)에 의해 디스플레이되는 GUI에 입력되는 사용자 조작에 따라 클라이언트 장치(9454) 내의 다른 유닛들을 제어할 수 있다. 클라이언트 장치(9454)의 제어 유닛(9468)은 또한 디스플레이 장치(9470)에 의해 디스플레이되는 GUI에 입력되는 사용자 조작에 따라 네트워크 카메라(9452)에 대한 파라미터들의 값들을 지정하는 커맨드들을 네트워크 카메라(9452)에 전송하도록 클라이언트 장치(9454)의 통신 유닛(9464)을 제어할 수 있다.
도 13은 스마트 폰(9500)을 예시하는 다이어그램이다. 스마트 폰(9500)은 통신 유닛(9502), 디코딩/인코딩 유닛(9504), 제어 유닛(9506) 및 디스플레이 유닛(9508)을 포함한다.
통신 유닛(9502)은 네트워크(9200)를 통해 인코딩된 이미지 데이터를 수신한다. 디코딩/인코딩 유닛(9504)은 통신 유닛(9502)에 의해 수신되는 인코딩된 이미지 데이터를 디코딩한다. 디코딩/인코딩 유닛(9504)은 전술한 실시예들 중 하나 이상에서 설명된 상기 디코딩 방법들을 사용하여 인코딩된 이미지 데이터를 디코딩한다. 디코딩/인코딩 유닛(9504)은 또한 전술한 실시예들에서 설명된 인코딩 또는 디코딩 방법들 중 적어도 하나를 사용할 수 있다. 다른 경우에, 디코딩/인코딩 유닛(9504)은 전술한 실시예들에서 설명된 디코딩 또는 인코딩 방법들의 조합을 사용할 수 있다.
제어 유닛(9506)은 통신 유닛(9502)에 의해 수신되는 사용자 조작 또는 커맨드들에 따라 스마트 폰(9500) 내의 다른 유닛들을 제어한다. 예를 들어, 제어 유닛(9506)은 디코딩/인코딩 유닛(9504)에 의해 디코딩되는 이미지를 디스플레이하도록 디스플레이 유닛(9508)을 제어한다.
스마트 폰은 이미지들 또는 비디오들을 레코딩하기 위한 이미지 레코딩 디바이스(9510)(예를 들어, 디지털 카메라 및 연관된 회로)를 추가로 포함할 수 있다. 그러한 레코딩된 이미지들 또는 비디오들은 제어 유닛(9506)의 지시에 따라 디코딩/인코딩 유닛(9504)에 의해 인코딩될 수 있다. 스마트 폰은 모바일 디바이스의 배향을 감지하도록 구성된 센서들(9512)을 추가로 포함할 수 있다. 그러한 센서들은 가속도계, 자이로스코프, 나침반, GPS(global positioning) 유닛 또는 유사한 위치 센서들을 포함할 수 있다. 그러한 센서들(9512)은 스마트 폰이 배향을 변경하는지를 결정할 수 있고 그러한 정보는 비디오 스트림을 인코딩할 때 사용될 수 있다.
본 발명이 실시예들을 참조하여 기술되었지만, 본 발명이 개시된 실시예들로 제한되지 않는다는 것이 이해되어야 한다. 첨부된 청구항들에 한정된 바와 같은, 본 발명의 범위를 벗어나지 않으면서 다양한 변경들 및 수정이 이루어질 수 있음이 본 기술 분야의 통상의 기술자에 의해 이해될 것이다. 본 명세서(임의의 첨부된 청구항들, 요약서 및 도면들을 포함함)에 개시된 특징들 전부, 및/또는 그렇게 개시된 임의의 방법 또는 프로세스의 단계들 전부는, 그러한 특징들 및/또는 단계들 중 적어도 일부가 상호 배타적인 조합들을 제외한, 임의의 조합으로 조합될 수 있다. 본 명세서(임의의 첨부된 청구항들, 요약서 및 도면들을 포함함)에 개시된 각각의 특징은, 달리 명시적으로 언급되지 않는 한, 동일한, 동등한 또는 유사한 목적을 달성하는 대안적인 특징들로 대체될 수 있다. 따라서, 달리 명시적으로 언급되지 않는 한, 개시된 각각의 특징은 일반적인 일련의 동등하거나 유사한 특징들의 일 예에 불과하다.
또한, 예를 들면, 디코딩 프로세스 동안, 비교, 결정, 평가, 선택, 실행, 수행 또는 고려를 실제로 수행하는 대신에, 표시된 또는 결정된/추론된 결과가 프로세싱에서 사용될 수 있도록, 위에서 기술된 비교, 결정, 평가, 선택, 실행, 수행 또는 고려, 예를 들어, 인코딩 또는 필터링 프로세스 동안 이루어진 선택의 임의의 결과가 비트스트림에서의 데이터, 예를 들면, 결과를 나타내는 플래그 또는 정보에 표시되거나 그로부터 결정 가능/추론 가능할 수 있음이 이해된다.
청구항들에서, “포함하는(comprising)”이라는 단어는 다른 요소들 또는 단계들을 배제하지 않으며, 단수 관사(“a” 또는 “an”)는 복수를 배제하지 않는다. 상이한 특징들이 상호 상이한 종속 청구항들에서 인용되고 있다는 단순한 사실은 이러한 특징들의 조합이 유리하게 사용될 수 없다는 것을 나타내지 않는다. 청구항들에 나오는 참조 번호들은 예시에 불과하고, 청구항들의 범위를 제한하는 효과를 갖지 않아야 한다.
선행 실시예들에서, 기술되는 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은, 하나 이상의 명령어 또는 코드로서, 컴퓨터 판독 가능 매체 상에 저장되거나 그를 통해 전송될 수 있고 하드웨어 기반 프로세싱 유닛에 의해 실행될 수 있다.
컴퓨터 판독 가능 매체는 데이터 저장 매체와 같은 유형적 매체에 대응하는 컴퓨터 판독 가능 저장 매체, 또는, 예를 들면, 통신 프로토콜에 따라, 한 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함한 통신 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터 판독 가능 매체는 일반적으로 (1) 비일시적인 유형적 컴퓨터 판독 가능 저장 매체 또는 (2) 신호 또는 반송파(carrier wave)와 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는 이 개시에서 설명되는 기술들의 구현을 위한 명령어들, 코드 및/또는 데이터 구조들을 검색하기 위해 하나 이상의 컴퓨터 또는 하나 이상의 프로세서에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 매체를 포함할 수 있다.
제한이 아닌 예로서, 그러한 컴퓨터 판독 가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 원하는 프로그램 코드를 명령어들 또는 데이터 구조들의 형태로 저장하는 데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 연결(connection)이 컴퓨터 판독 가능 매체라고 적절히 지칭된다. 예를 들어, 명령어들이 동축 케이블, 광섬유 케이블, 연선(twisted pair), DSL(digital subscriber line), 또는 적외선, 전파(radio), 및 마이크로파와 같은 무선 기술들을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 전송되는 경우, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 전파, 및 마이크로파와 같은 무선 기술들은 매체의 정의에 포함된다. 그렇지만, 컴퓨터 판독 가능 저장 매체 및 데이터 저장 매체가 연결, 반송파, 신호, 또는 다른 일시적 매체를 포함하지 않고, 그 대신에 비일시적, 유형적 저장 매체에 관한 것임이 이해되어야 한다. 디스크(disk) 및 디스크(disc)는, 본 명세서에서 사용되는 바와 같이, CD(compact disc), 레이저 디스크, 광학 디스크, DVD(digital versatile disc), 플로피 디스크 및 블루레이 디스크를 포함하고, 여기서 디스크(disk)는 보통 데이터를 자기적으로 재생하는 반면, 디스크(disc)는 데이터를 레이저를 사용하여 광학적으로 재생한다. 상기한 것들의 조합들이 컴퓨터 판독 가능 매체의 범위 내에 또한 포함되어야 한다.
명령어들은, 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로프로세서, ASIC(application specific integrated circuit), FPGA(field programmable logic array), 또는 다른 동등한 집적 또는 개별 로직 회로와 같은, 하나 이상의 프로세서에 의해 실행될 수 있다. 그에 따라, "프로세서"라는 용어는, 본 명세서에서 사용되는 바와 같이, 전술한 구조물 또는 본 명세서에 설명된 기술들의 구현에 적당한 임의의 다른 구조물 중 임의의 것을 지칭할 수 있다. 추가적으로, 일부 양태들에서, 본 명세서에 기술된 기능성은 인코딩 및 디코딩을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수 있거나, 또는 결합된 코덱(combined codec)에 통합될 수 있다. 또한, 기술들은 하나 이상의 회로 또는 로직 요소에서 완전히 구현될 수 있다.

Claims (36)

  1. 이미지 부분을 필터링하는 방법으로서,
    참조 샘플을 둘러싸는 샘플들에 대응하는 필터 계수들 및 제1 성분 샘플 값들을 수신하는 단계, 및
    교차 성분 필터 출력을 생성하기 위해 상기 필터 계수들 및 제1 성분 샘플 값들을 교차 성분 필터에 입력하는 단계
    를 포함하며;
    상기 교차 성분 필터는 제한된 비트 수를 사용하여 상기 필터 계수들을 표현하여 상기 필터 출력을 생성하는, 방법.
  2. 제1항에 있어서, 상기 제한된 비트 수는 내부 비트 깊이에 의해 정의되는 비트 수보다 낮은, 방법.
  3. 제1항 또는 제2항에 있어서, 상기 필터 계수들 및/또는 제1 성분 샘플 값들을 표현하기 위한 상기 제한된 비트 수는 상기 필터 출력이 16 개 이하의 비트로 표현될 수 있도록 되어 있는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 교차 성분 필터 출력을 상이한 성분에 대응하는 필터의 출력과 결합시키는 단계를 더 포함하는, 방법.
  5. 제4항에 있어서, 상기 제1 성분은 루마 성분이고 상기 상이한 성분은 크로마 성분인, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 샘플 값들을 상기 필터에 입력하는 단계는 상기 제1 성분 샘플 값과 참조 샘플 값의 값들의 차이를 표현하는 수치를 입력하는 단계를 포함하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 제한하는 것은 필터 계수들의 가능한 값들의 범위를 제한하는 것을 포함하는, 방법.
  8. 제7항에 있어서, 가능한 값들의 범위를 제한하는 것은 상기 필터 계수들을 표현하는 데 사용되는 상기 제한된 비트 수로부터 상기 필터 계수에 대한 절댓값을 결정하는 것을 포함하는, 방법.
  9. 제7항 또는 제8항에 있어서, 상기 제한하는 것은 필터 계수 값의 감소된 고정 소수점 소수 정밀도(fixed-point decimal precision)를 사용하는 것을 포함하는, 방법.
  10. 제9항에 있어서, 상기 감소된 고정 소수점 소수 정밀도는 7 비트인, 방법.
  11. 제7항 내지 제10항 중 어느 한 항에 있어서, 상기 필터 계수들의 가능한 값들의 범위는 2의 거듭제곱 값들에 대응하고, 각각의 2의 거듭제곱 값의 지수는 상기 필터 계수들을 표현하는 상기 제한된 비트 수로부터 도출되는, 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서, 필터 연산은 샘플 값들과 필터 계수의 곱셈을 포함하고, 상기 곱셈 연산을 비트 단위 시프트 및 덧셈 연산들로 대체하기 위해 상기 곱셈이 비트 단위 시프트 및/또는 다른 필터 계수와의 결합을 통해 구현되는, 방법.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서, 상기 제1 성분 샘플 값은 참조 샘플을 기준으로 정의된 위치에 있는 위치에서의 샘플 값이며, 상기 샘플의 상기 위치는 필터 형상에 의해 정의되는, 방법.
  14. 제13항에 있어서, 상기 필터 형상은 16 개 이하의 샘플을 포함하도록 되어 있는, 방법.
  15. 제14항에 있어서, 상기 필터 형상은 8 개 이하의 샘플을 포함하도록 되어 있는, 방법.
  16. 제14항 또는 제15항에 있어서, 상기 필터 형상은 모든 샘플이 위치 (x,y)에 있는 상기 참조 샘플을 기준으로 위치 (x+u, y+v)를 갖는 패턴을 포함하며, u는 [-1,1]에 속하는 수평 오프셋이고 v는 [-1,2]에 속하는 수직 오프셋인, 방법.
  17. 제16항에 있어서, |u|=1일 때 v는 [0,1]에 속하는, 방법.
  18. 제1항 내지 제17항 중 어느 한 항에 있어서,
    주어진 성분에 대해 교차 성분 적응적 루프 필터(CCALF)가 표시되는지를 결정하는 단계; 및
    비트스트림으로부터 상기 필터 계수들을 디코딩하는 단계
    를 더 포함하는, 방법.
  19. 제1항 내지 제17항 중 어느 한 항에 있어서,
    주어진 성분에 대해 CCALF가 표시되는지를 결정하는 단계; 및
    상기 필터 계수들을 비트스트림에 인코딩하는 단계
    를 더 포함하는, 방법.
  20. CCALF를 사용하여 인코딩되는 이미지 부분을 디코딩하는 방법으로서,
    주어진 성분에 대해 CCALF가 표시되는지를 결정하는 단계;
    비트스트림으로부터 CCALF 계수들을 디코딩하는 단계; 및
    상기 CCALF 계수들을 사용하여 상기 이미지 부분을 디코딩하는 단계
    를 포함하며;
    상기 CCALF 계수들은 프리픽스 없이 상기 비트스트림에 표현되는, 방법.
  21. 제18항 또는 제20항에 있어서, 주어진 성분에 대해 CCALF가 표시되는지를 결정하는 상기 단계는 플래그를 디코딩하는 단계를 포함하는, 방법.
  22. 교차 성분 적응적 루프 필터(CCALF)를 사용하여 이미지 부분을 인코딩하는 방법으로서,
    주어진 성분에 대해 CCALF가 표시되는지를 결정하는 단계;
    CCALF 계수들을 비트스트림에 인코딩하는 단계; 및
    상기 CCALF 계수들을 사용하여 상기 이미지 부분을 인코딩하는 단계
    를 포함하며;
    상기 CCALF 계수들은 고정된 표현을 사용하여 파라미터 세트에 표현되는, 방법.
  23. 제19항 또는 제22항에 있어서, 주어진 성분에 대해 CCALF가 표시되는지를 결정하는 상기 단계는 플래그를 상기 슬라이스 헤더에 인코딩하는 단계를 포함하는, 방법.
  24. 제19항 내지 제23항 중 어느 한 항에 있어서, 상기 CCALF 계수들은 파라미터 세트에 직접 인코딩되는, 방법.
  25. 제24항에 있어서, 상기 파라미터 세트는 적응 파라미터 세트(APS)인, 방법.
  26. 제19항 내지 제23항 중 어느 한 항에 있어서, 상기 CCALF 필터 계수들은 고정 길이 코드를 사용하여 상기 비트스트림에 표현되는, 방법.
  27. 제26항에 있어서, 상기 고정 길이 코드는:
    상기 계수의 부호를 나타내는 비트; 및
    상기 계수의 크기를 나타내는 비트들의 시리즈를 포함하는, 방법.
  28. 제26항에 있어서, 상기 고정 길이 코드는:
    상기 계수가 0인지 여부를 나타내는 상기 비트스트림 내의 제1 비트,
    상기 계수가 0이 아닌 경우; 상기 계수의 부호를 나타내는 비트, 및
    상기 계수의 크기를 나타내는 1과 동일한 비트들의 시퀀스를 포함하는, 방법.
  29. 제28항에 있어서, 상기 제1 비트가 1과 동일한 것은 상기 계수가 0임을 나타내는, 방법.
  30. 제28항 또는 제29항에 있어서, 상기 부호 비트가 1과 동일한 것은 상기 계수가 음수임을 나타내는, 방법.
  31. 제1항 내지 제19항 또는 제22항 내지 제30항 중 어느 한 항의 방법을 사용하여 이미지를 인코딩하는 방법.
  32. 제1항 내지 제21항 또는 제24항 내지 제30항 중 어느 한 항의 방법을 사용하여 이미지를 디코딩하는 방법.
  33. 이미지의 일 부분을 필터링하기 위한 디바이스로서,
    참조 샘플을 둘러싸는 샘플들에 대응하는 필터 계수들 및 제1 성분 샘플 값들을 수신하기 위한 수단, 및
    교차 성분 필터 출력을 생성하기 위해 상기 필터 계수들 및 제1 성분 샘플 값들을 교차 성분 필터에 입력하기 위한 수단
    을 포함하며;
    상기 교차 성분 필터는 제한된 비트 수를 사용하여 상기 필터 계수들을 표현하여 상기 필터 출력을 생성하는, 디바이스.
  34. CCALF를 사용하여 인코딩되는 이미지 부분을 디코딩하기 위한 디코더로서,
    주어진 성분에 대해 CCALF가 표시되는지를 결정하기 위한 수단;
    비트스트림으로부터 CCALF 계수들을 디코딩하기 위한 수단; 및
    상기 CCALF 계수들을 사용하여 상기 이미지 부분을 디코딩하기 위한 수단
    을 포함하며;
    상기 CCALF 계수들은 프리픽스 없이 상기 비트스트림에 인코딩되는, 디코더.
  35. 교차 성분 적응적 루프 필터(CCALF)를 사용하여 이미지 부분을 인코딩하기 위한 인코더로서,
    주어진 성분에 대해 CCALF가 표시되는지를 결정하기 위한 수단;
    CCALF 계수들을 비트스트림에 인코딩하기 위한 수단; 및
    상기 CCALF 계수들을 사용하여 상기 이미지 부분을 인코딩하기 위한 수단
    을 포함하며;
    상기 CCALF 계수들은 고정된 표현을 사용하여 파라미터 세트에 표현되는, 인코더.
  36. 프로그램으로서, 컴퓨터 또는 프로세서에 의해 실행될 때, 상기 컴퓨터 또는 프로세서로 하여금 제1항 내지 제32항 중 어느 한 항의 방법을 수행하게 하는, 프로그램.
KR1020227008930A 2019-08-20 2020-08-18 크로마에 대한 교차 성분 적응적 루프 필터 KR20220041939A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1911952.8 2019-08-20
GB1911952.8A GB2586484B (en) 2019-08-20 2019-08-20 A filter
PCT/EP2020/073122 WO2021032751A1 (en) 2019-08-20 2020-08-18 Cross-component adaptive loop filter for chroma

Publications (1)

Publication Number Publication Date
KR20220041939A true KR20220041939A (ko) 2022-04-01

Family

ID=68099488

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227008930A KR20220041939A (ko) 2019-08-20 2020-08-18 크로마에 대한 교차 성분 적응적 루프 필터

Country Status (9)

Country Link
US (1) US20220312006A1 (ko)
EP (1) EP4018650A1 (ko)
JP (2) JP7308983B2 (ko)
KR (1) KR20220041939A (ko)
CN (1) CN114258683A (ko)
BR (1) BR112022000953A2 (ko)
GB (1) GB2586484B (ko)
TW (1) TWI793438B (ko)
WO (1) WO2021032751A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021040483A1 (ko) 2019-08-29 2021-03-04 엘지전자 주식회사 영상 코딩 장치 및 방법
CN114586349A (zh) * 2019-08-29 2022-06-03 Lg 电子株式会社 基于滤波编译视频的设备和方法
CN117676135A (zh) * 2019-10-18 2024-03-08 北京字节跳动网络技术有限公司 子图片与环路滤波之间的相互影响
JP7389252B2 (ja) * 2019-10-29 2023-11-29 北京字節跳動網絡技術有限公司 クロスコンポーネント適応ループフィルタ
CN113132739B (zh) * 2019-12-31 2022-11-01 杭州海康威视数字技术股份有限公司 边界强度确定、编解码方法、装置及其设备
CN115299064A (zh) 2020-03-11 2022-11-04 抖音视界有限公司 基于颜色格式的自适应参数集信令通知
WO2021244420A1 (en) 2020-05-31 2021-12-09 Beijing Bytedance Network Technology Co., Ltd. Palette mode with local dual tree modetype definition
WO2023201930A1 (en) * 2022-04-20 2023-10-26 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing
WO2024027566A1 (en) * 2022-08-02 2024-02-08 Mediatek Inc. Constraining convolution model coefficient

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130083844A1 (en) * 2011-09-30 2013-04-04 In Suk Chong Coefficient coding for sample adaptive offset and adaptive loop filter
US9591331B2 (en) * 2012-03-28 2017-03-07 Qualcomm Incorporated Merge signaling and loop filter on/off signaling
CN104769950B (zh) * 2012-09-28 2018-11-13 Vid拓展公司 用于视频编码中的色度信号增强的交叉平面滤波
US9686561B2 (en) * 2013-06-17 2017-06-20 Qualcomm Incorporated Inter-component filtering
US20150382016A1 (en) * 2014-06-27 2015-12-31 Mitsubishi Electric Research Laboratories, Inc. Method for Processing Multi-Component Video and Images
US20160105685A1 (en) * 2014-10-08 2016-04-14 Qualcomm Incorporated Boundary filtering and cross-component prediction in video coding
US10972728B2 (en) * 2015-04-17 2021-04-06 Interdigital Madison Patent Holdings, Sas Chroma enhancement filtering for high dynamic range video coding
EP3286918A1 (en) * 2015-04-21 2018-02-28 VID SCALE, Inc. Artistic intent based video coding
KR102460912B1 (ko) * 2015-07-08 2022-10-28 인터디지털 매디슨 페턴트 홀딩스 에스에이에스 교차 평면 필터링을 이용한 향상된 크로마 코딩
WO2017123487A1 (en) * 2016-01-15 2017-07-20 Vid Scale, Inc. System and method for enhanced motion compensation using adaptive filtering
US10419757B2 (en) * 2016-08-31 2019-09-17 Qualcomm Incorporated Cross-component filter
TWI814890B (zh) * 2018-08-17 2023-09-11 大陸商北京字節跳動網絡技術有限公司 簡化的跨分量預測
US11159789B2 (en) * 2018-10-24 2021-10-26 City University Of Hong Kong Generative adversarial network based intra prediction for video coding
US11095921B2 (en) * 2018-12-18 2021-08-17 Tencent America LLC Method and apparatus for video encoding or decoding
KR20210123300A (ko) * 2019-02-02 2021-10-13 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 버퍼 관리
US20220248007A1 (en) * 2019-06-24 2022-08-04 Sharp Kabushiki Kaisha Systems and methods for reducing a reconstruction error in video coding based on a cross-component correlation
US11197030B2 (en) * 2019-08-08 2021-12-07 Panasonic Intellectual Property Corporation Of America System and method for video coding

Also Published As

Publication number Publication date
GB201911952D0 (en) 2019-10-02
EP4018650A1 (en) 2022-06-29
JP2022539656A (ja) 2022-09-13
CN114258683A (zh) 2022-03-29
GB2586484B (en) 2023-03-08
US20220312006A1 (en) 2022-09-29
WO2021032751A1 (en) 2021-02-25
JP2023123772A (ja) 2023-09-05
GB2586484A (en) 2021-02-24
TWI793438B (zh) 2023-02-21
JP7308983B2 (ja) 2023-07-14
BR112022000953A2 (pt) 2022-04-12
TW202110181A (zh) 2021-03-01

Similar Documents

Publication Publication Date Title
JP7308946B2 (ja) 非線形クリッピングのアダプティブループフィルタ
KR20220041939A (ko) 크로마에 대한 교차 성분 적응적 루프 필터
JP7164535B2 (ja) 統合された画像再構成及び映像符号化
RU2768016C1 (ru) Системы и способы применения фильтров деблокирования к восстановленным видеоданным
CN105706449B (zh) 样本自适应偏移控制
KR102130480B1 (ko) 영상의 재구성된 샘플 세트에 대한 보상 오프셋들의 인코딩/디코딩을 최적화하는 방법 및 장치
KR102423809B1 (ko) 적응형 컬러 공간 변환 코딩
KR20210135273A (ko) 적응 루프 필터
EP3080988B1 (en) Parameter derivation for entropy coding of a syntax element
CN117528097A (zh) 跨分量自适应环路滤波器
US9277211B2 (en) Binarization scheme for intra prediction residuals and improved intra prediction in lossless coding in HEVC
WO2013159119A1 (en) Parameter determination for exp-golomb residuals binarization for lossless intra hevc coding
US10085020B2 (en) Sample adaptive filtering with offsets
RU2770650C1 (ru) Системы и способы применения фильтров деблокирования к восстановленным видеоданным
US20190306534A1 (en) Unification of deblocking filter and adaptive loop filter
JP7490803B2 (ja) シンタックスエレメントを使用するビデオ処理
CN115349228A (zh) 视频记录的符号数据隐藏
US11388443B2 (en) Harmonization of deblocking conditions in video coding
TWI834773B (zh) 使用適應性迴路濾波器以編碼和解碼影像之一或多個影像部分的方法、裝置和電腦可讀儲存媒體
JP7495457B2 (ja) 適応色空間変換の符号化
GB2613960A (en) A filter

Legal Events

Date Code Title Description
A201 Request for examination