KR20220004972A - 비디오 코딩 시 잔차 처리 방법 - Google Patents

비디오 코딩 시 잔차 처리 방법 Download PDF

Info

Publication number
KR20220004972A
KR20220004972A KR1020217033578A KR20217033578A KR20220004972A KR 20220004972 A KR20220004972 A KR 20220004972A KR 1020217033578 A KR1020217033578 A KR 1020217033578A KR 20217033578 A KR20217033578 A KR 20217033578A KR 20220004972 A KR20220004972 A KR 20220004972A
Authority
KR
South Korea
Prior art keywords
residual
residuals
encoder
encoding
signal
Prior art date
Application number
KR1020217033578A
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
Priority claimed from GBGB1903844.7A external-priority patent/GB201903844D0/en
Priority claimed from GBGB1904014.6A external-priority patent/GB201904014D0/en
Priority claimed from GBGB1904492.4A external-priority patent/GB201904492D0/en
Priority claimed from GBGB1905325.5A external-priority patent/GB201905325D0/en
Priority claimed from GBGB1909701.3A external-priority patent/GB201909701D0/en
Application filed by 브이-노바 인터내셔널 리미티드 filed Critical 브이-노바 인터내셔널 리미티드
Publication of KR20220004972A publication Critical patent/KR20220004972A/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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/33Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
    • 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/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/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • 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/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • 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/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • 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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/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/187Methods 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 scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/31Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the temporal domain
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/36Scalability techniques involving formatting the layers as a function of picture distortion after decoding, e.g. signal-to-noise [SNR] scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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

Abstract

본 발명의 양태들에 따르면, 잔차 데이터가 기본 스트림의 데이터, 예를 들어 서로 다른 비디오 코딩 기술을 사용하여 인코딩된 비디오의 프레임을 정정하거나 향상시키는 데 사용될 수 있는 잔차 데이터 세트를 수정하는 방법이 제공된다. 입력 신호를 인코딩하는 방법이 제공될 수 있음, 상기 방법은, 입력 신호를 수신하는 단계; 입력 신호와 하나 이상의 각각의 해상도들의 하나 이상의 재구성된 신호들 사이의 차이에 기초하여 하나 이상의 잔차 세트들을 생성하는 단계; 선택된 잔차 모드에 기초하여 하나 이상의 잔차 세트들을 수정하는 단계; 및 하나 이상의 수정된 잔차 세트들을 인코딩하여 하나 이상의 각각의 인코딩된 스트림들을 생성하는 단계를 포함하며, 상기 인코딩하는 단계는 하나 이상의 수정된 잔차 세트들을 변형하는 단계를 포함하고, 상기 수정하는 단계는 선택된 잔차 모드에 기초하여 인코딩되지 않은 잔차 서브셋을 선택하는 단계를 포함한다. 인코더가 또한 제공될 수 있다.

Description

비디오 코딩 시 잔차 처리 방법
하이브리드 하위호환형(backward-compatible) 코딩 기술은 예를 들어 제WO 2014/170819호 및 제WO 2018/046940호에서 이전에 제안되었으며, 그 내용은 본원에 참조로서 통합된다.
데이터 스트림을 인코딩된 데이터의 제1 부분과 인코딩된 데이터의 제2 부분으로 파싱하고; 인코딩된 데이터의 제1 부분을 신호의 제1 렌디션으로 디코딩하기 위한 제1 디코더를 구현하고; 인코딩된 데이터의 제2 부분을 재구성 데이터로 디코딩하기 위한 제2 디코더를 구현하되, 재구성 데이터는 신호의 제1 렌디션을 수정하는 방법을 지정하고; 신호의 제1 렌디션에 재구성 데이터를 적용하여 신호의 제2 렌디션을 생성하는 방법이 그 내부에 제안된다.
잔차 요소 세트가 신호의 제1 시간 샘플의 렌디션을 재구성하는데 사용될 수 있는 추가물이 그 내부에 추가로 제안된다. 제1 시간 샘플과 관련된 시공간 상관 요소 세트가 생성된다. 시공간 상관 요소 세트는 복수의 잔차 요소들 사이의 공간적 상관의 정도, 및 렌디션에 기초한 제1 기준 데이터와 신호의 제2 시간 샘플의 렌디션에 기초한 제2 기준 데이터 사이의 시간적 상관의 정도를 나타낸다. 시공간 상관 요소 세트는 출력 데이터를 생성하는 데 사용된다. 언급된 바와 같이, 잔차 세트는 전체 데이터 크기를 감소시키도록 인코딩된다.
신호가 재구성되면 사용자에 대한 전반적인 인상을 손상시키지 않는 목표의 균형을 유지하면서 전체 데이터 크기를 더욱 줄이기 위한 최적화가 추구되며; 처리 속도와 복잡도를 최적화한다.
본 발명의 양태들에 따르면, 잔차 데이터가 기본 스트림의 데이터, 예를 들어 레거시 비디오 코딩 기술을 사용하여 인코딩된 비디오의 프레임을 정정하거나 향상시키는 데 사용될 수 있는 잔차 데이터 세트를 수정하는 방법이 제공된다.
제1 양태에 따르면, 입력 신호를 인코딩하는 방법이 제공되며, 상기 방법은, 입력 신호를 수신하는 단계; 입력 신호와 하나 이상의 각각의 해상도들의 하나 이상의 재구성된 신호들 사이의 차이에 기초하여 하나 이상의 잔차 세트들을 생성하는 단계; 선택된 잔차 모드에 기초하여 하나 이상의 잔차 세트들을 수정하는 단계; 및 하나 이상의 수정된 잔차 세트들을 인코딩하여 하나 이상의 각각의 인코딩된 스트림들을 생성하는 단계를 포함하며, 상기 인코딩하는 단계는 하나 이상의 수정된 잔차 세트들을 변형하는 단계를 포함하고, 상기 수정하는 단계는 선택된 잔차 모드에 기초하여 인코딩되지 않은 잔차 서브셋을 선택하는 단계를 포함한다.
입력 신호는 바람직하게는 이미지, 더 바람직하게는 복수의 프레임을 포함하는 비디오 신호일 수 있다. 잔차는 비디오 프레임의 픽쳐 요소들 또는 요소들에 해당할 수 있다. 이들은 "차이의 픽쳐"로 볼 수 있다. 잔차 세트는 각각이 특정 신호 요소에 대응하는 하나 이상의 잔차들을 포함할 수 있다. 한 경우에, 잔차 세트는 하나 이상의 해상도에서 입력 이미지 또는 프레임의 픽셀들에 대응하는 잔차 값들을 포함할 수 있다. 인코딩은 일련의 동작들, 예를 들어 변환, 양자화 및 엔트로피 인코딩을 포함할 수 있다. 수정은 변환된 계수들이 수정된 잔차들을 기반으로 하여 변경 사항들이 파이프라인을 통해 전파되고 변환 계산이 감소되도록 잔차들의 변환 이전에 발생한다.
인코딩 전에 잔차를 수정함으로써, 전체 데이터 크기가 감소될 수 있고 및/또는 계산 효율이 최적화될 수 있는 한편, 일단 신호가 디코더에서 재구성되면 시청자 경험에 대한 잠재적 영향의 균형을 맞출 수 있다. 수정은 인코딩 동작의 양자화 파라미터를 변경하거나, 또는 하나 이상의 잔차 세트들의 서브셋을 삭제하거나 선택 해제하는 것을 포함할 수 있다. 선택된 잔차 모드에 기초하여 인코딩하지 않을 잔차 서브셋을 선택하는 단계는 변환을 위해 복수의 잔차들을 선택 해제하거나 변환 계수 세트를 0으로 양자화함으로써 구현될 수 있으며, 여기서 변환 계수들은 대응하는 입력 잔차들을 나타낸다. 다른 경우에, 잔차 서브셋을 전파하지 않는 것은 서브셋에 대한 값들을 0으로 설정하는 것을 포함할 수 있다. 변환 전에 잔차들을 선택 해제하면 수정, 선택 및 분석의 입도가 향상될 수 있다.
입력 신호는 제1 해상도에 있을 수 있다. 상기 방법은, 입력 신호를 다운샘플링하여 제2 해상도에서 다운샘플링된 신호를 생성하는 단계; 기본 인코더로부터 기본 인코딩된 신호를 수신하는 단계로서, 상기 기본 인코딩된 신호는 기본 인코더를 사용하여 다운샘플링된 신호를 인코딩함으로써 생성되는, 상기 수신하는 단계; 기본 인코딩된 신호로부터의 신호를 재구성하여 하나 이상의 재구성된 신호들 내의 제1 재구성된 신호를 생성하는 단계; 및 제1 재구성된 신호를 입력 신호와 비교하여 하나 이상의 잔차 세트들 내의 제1 잔차 세트를 생성하는 단계를 더 포함할 수 있다. 다운샘플링된 신호의 인코딩은 원격 또는 제3자 컴포넌트에 의해 수행될 수 있으며, 선택적으로는 레거시, 기존 또는 미래 구현 코덱과 같이 원격으로 구현될 수 있다. 잔차들은 인코딩 및 재구성 프로세스에 의해 도입된 아티팩트들을 정정하는 데 사용될 수 있다.
제1 재구성된 신호를 입력 신호와 비교하여 하나 이상의 잔차 세트들 중 제1 세트를 생성하는 것은, 기본 인코딩된 신호를 디코딩하여 기본 디코딩된 신호를 생성하는 단계; 및 기본 디코딩된 신호와 다운샘플링된 버전의 입력 신호 사이의 차이를 사용하여 제1 잔차 세트를 생성하는 단계를 포함할 수 있으며, 상기 방법은, 제1 잔차 세트를 사용하여 기본 디코딩된 신호를 정정하여 정정된 디코딩된 버전을 생성하고; 정정된 디코딩된 버전을 업샘플링하고; 정정된 디코딩된 신호와 입력 신호 사이의 차이를 사용하여 제2 잔차 세트를 생성함으로써 하나 이상의 잔차 세트들 내의 제2 잔차 세트를 생성하는 단계를 더 포함하며, 수정하는 단계는 제1 및 제2 잔차 세트 중 하나 이상에 대해 개별적으로 수행된다. 각 잔차 세트는 유사한 방식으로 수정되거나 또는 다르게 수정되거나 또는 전혀 수정되지 않을 수 있다. 따라서, 잔차들은 이들이 사용되는 방법을 최적화하기 위해 수정될 수 있다. 예를 들어, 가장 높은 레벨에서 더 많은 충실도가 필요할 수 있으며, 잔차들이 기본 코딩 방식에서 아티팩트들을 수정하는 경우, 다른 잔차들이 더 중요할 수 있다. 이 방식으로, 특정 잔차 서브셋들을 필터링함으로써, 비트 레이트가 감소되고/되거나 다른 정정들을 위해 더 많은 용량을 허용할 수 있다.
제1 잔차 세트는 제1 공간 해상도에 있을 수 있고 제2 잔차 세트는 제2 공간 해상도에 있으며, 제1 공간 해상도는 제2 공간 해상도보다 낮다. 예를 들어, 제1 잔차 세트는 표준 화질 또는 고화질(SD 또는 HD)일 수 있고, 제2 잔차 세트는 고화질 또는 초고화질(HD 또는 UHD)일 수 있다.
수정하는 단계는, 하나 이상의 잔차 세트들 내의 잔차들을 랭크시키는 단계; 및 랭크에 기초하여 잔차들을 필터링하는 단계를 포함할 수 있다. 필터링하는 단계는 미리 결정된 또는 동적으로 가변적인 임계값에 기초할 수 있다. 잔차들을 필터링하고 랭크시킴으로써, 서브셋은 높은 우선순위 잔차들은 인코딩되지만 낮은 우선순위 잔차들은 선택 해제되도록 조정될 수 있으며, 따라서 인코딩 파이프라인의 효율성이 최적화된다. 우선순위는 시공간적 특성들을 포함한 다양한 인자들에 기초할 수 있다.
수정하는 단계는, 각 잔차 또는 잔차 그룹과 연관된 스코어를 결정하는 단계로서, 상기 스코어는 각 잔차 또는 잔차 그룹의 상대적 중요도를 나타낼 수 있으며, 인코딩되지 않을 잔차 서브셋의 선택은 각 잔차 또는 잔차 그룹과 연관된 스코어에 기초할 수 있다. 잔차들을 스코어링하는 것은 수정 프로세스에 대한 높은 수준의 제어를 제공한다. 결정하는 것은 또한 획득하거나, 계산하거나 또는 수신하는 것일 수 있다. 스코어는 또한 메트릭으로 간주될 수 있다. 스코어 또는 메트릭은 특정 잔차, 잔차 타일 또는 잔차 코딩 단위와 연관될 수 있으며, 여기서 타일은 미리 결정된 크기의 인접 잔차 그룹, 잔차 세트를 구성하는 복수의 타일들을 나타낸다.
스코어는 입력 신호의 하나 이상의 공간적 및/또는 시간적 특성들에 기초할 수 있다. 스코어는 입력 신호의 콘트라스트 레벨 또는 텍스처의 레벨 또는 둘 다에 기초할 수 있다. 예들에서, 입력 신호의 루마가 분석되어 스코어를 결정할 수 있다.
상기 방법은, 하나 이상의 잔차 세트들을 양자화하는 단계를 포함할 수 있다. 하나 이상의 잔차 세트들을 양자화하는 단계는 가변 크기의 데드존을 적용하는 단계를 포함할 수 있다. 데드존은 양자화 스텝 폭의 함수로 결정될 수 있다. 하나 이상의 잔차 세트들을 양자화하는 단계는, 제1 단계에서 하나 이상의 잔차 세트들을 양자화하여 수정을 달성하는 단계; 및 제2 단계에서 하나 이상의 잔차 세트들을 양자화하여 인코딩을 달성하는 단계를 포함할 수 있다. 제1 단계에서 양자화하는 단계는 스코어에 기초하여 선택적일 수 있다. 제1 양자화 단계는 사전 양자화 단계로 생각될 수 있다. 사전 양자화는 이미지, 프레임 또는 잔차 세트의 콘트라스트가 특히 낮아, 우선순위 잔차들이 매우 낮은 값들에 집중되는 경우 특히 유용할 수 있다.
수정하는 단계는, 스코어를 범위 세트와 비교하는 단계를 포함할 수 있으며, 제1 범위에 속하는 스코어에 응답하여, 잔차 또는 잔차 그룹은 인코딩되지 않으며; 제2 범위에 속하는 스코어에 응답하여, 잔차 또는 잔차 그룹은 양자화 데드존과 비교되며, 잔차 또는 잔차 그룹은 이들이 상기 데드존에 속할 경우 인코딩되지 않으며; 제3 범위에 속하는 스코어 응답하여, 잔차 또는 잔차 그룹은 제1 양자화 스텝 폭으로 사전 양자화되며; 제4 범위에 속하는 스코어에 응답하여, 잔차 또는 잔차 그룹은 수정 없이 인코딩을 위해 전달된다.
하나 이상의 잔차 세트들을 수정하는 단계는, 잔차들 또는 잔차 그룹들에 대한 분류를 획득하는 단계; 및 상기 분류에 기초하여 수정하는 단계를 적용하는 단계를 포함할 수 있다. 분류는 예를 들어 배경 또는 전경을 포함할 수 있다. 분류를 획득하는 단계는, 입력 신호의 또는 하나 이상의 잔차 세트들의 하나 이상의 공간적 및/또는 시간적 특성들에 기초하여 잔차들 또는 잔차 그룹들을 분류하는 단계를 포함한다.
하나 이상의 공간적 및/또는 시간적 특성들은, 하나 이상의 신호 요소들 또는 신호 요소 그룹들 간 공간적 활동; 하나 이상의 신호 요소들 또는 신호 요소 그룹들 간 콘트라스트의 레벨; 하나 이상의 공간 방향들의 변화의 척도; 하나 이상의 신호 요소들 또는 신호 요소 그룹들 간 시간적 활동; 하나 이상의 시간 방향들의 변화 측정도; 하나 이상의 잔차들 간 공간적 활동; 하나 이상의 잔차들 간 시간적 활동; 및 하나 이상의 잔차 세트들 중 서로 다른 세트들 간 차이 또는 하나 이상의 잔차 세트들 중 서로 다른 세트들 간 하나 이상의 공간적 및/또는 시간적 특성들의 차이를 포함하는 그룹으로부터 선택된 하나 이상을 포함할 수 있다.
수정하는 단계는, 잔차들이 상기 인코딩에서 인코딩되어야 하는지 여부를 나타내는 제어 플래그들을 설정하는 단계를 포함할 수 있으며, 인코딩하는 단계는 제어 플래그들에 기초하여 선택적으로 수행된다. 처리 중에 0 또는 1 값이 주입되거나 특정 블록들이 완전히 스킵될 수 있음에 유의한다. 그러나, 처리는 여전히 잔차에 상대적이다. 즉, 잔차 값 세트를 0으로 효과적으로 설정한다. 이는 비파괴적 선택으로 생각할 수 있다.
수정하는 단계는, 잔차 가중치 세트를 수신하는 단계로서, 상기 잔차 가중치들은 제로 값들을 포함하는, 상기 수신하는 단계; 및 하나 이상의 잔차 세트들 중 한 세트 내의 잔차들에 상기 잔차 가중치 세트를 적용하여 가중화된 잔차 세트를 생성하는 단계를 포함할 수 있다. 잔차 가중치 세트를 적용하는 단계 이후에, 상기 방법은 임계값 세트를 사용하여 상기 가중화된 잔차 세트를 임계화하는 단계를 더 포함할 수 있다. 잔차들을 가중화함으로써, 수정에 높은 레벨의 유연성을 적용할 수 있다. 가중치들은 비-이진 값들의 행렬일 수 있으며, 이와 같이, 각 잔차에 비-이진 값이 할당될 수 있으며, 이 값은 유연하고 확장 가능하며 많은 양의 세부 사항으로 잔차들을 필터링하거나 우선순위를 지정하는 데 사용할 수 있다. 잔차 가중치 세트 및 임계값 세트 중 하나 이상은 입력 신호의 등급화에 기초하여 결정될 수 있다. 마찬가지로, 등급화는 잔차들 또는 잔차들을 이용한 입력 신호의 재구성된 버전에 기초할 수 있다. 이 후자의 예는 수정이 재구성된 버전의 분석을 기반으로 개선되도록 반복 또는 피드백의 요소를 포함할 수 있다.
잔차 가중치 세트는 잔차 마스크를 포함할 수 있다. 잔차 마스크는 원격 위치로부터 수신될 수 있다. 잔차 마스크는 인코딩하기 전에 입력 신호의 전처리에 기초하여 사전 생성될 수 있다. 따라서, 원격 위치는 계산 비용이 많이 드는 운동을 수행할 수 있으며 인코더는 '덤(dumb)'일 수 있다. 잔차 마스크들은 특정 비디오에 대해 한 번 생성되며 다수의 인코더들에 걸쳐 및/또는 여러 번 재사용되어 리소스 사용량을 줄일 수 있다. 다른 이점들 중에서, 잔차 마스크들의 이러한 원격 스토리지는 잔차 마스크들의 확장 가능 인코딩 또는 재생을 제공할 수 있다. 다른 이점에서, 복잡한 알고리즘이 적용되너 마스크의 중앙 복합 분석 및 결정을 용이하게 하는 상세한 기계 학습 기반 알고리즘과 같은 잔차 마스크들을 생성할 수 있으며, 이와 같이 마스크는 원격 위치에서 검색됨으로써 개선될 수 있다. 검색된 마스크는 입력 신호가 비디오인 입력 신호의 모든 프레임들에 사용될 수 있거나, 또는 각 프레임에 대해 서로 다른 마스크가 사용될 수 있다.
수정하는 단계는 잔차들의 코딩 단위들에 대해 수행될 수 있다.
추가 양태에 따르면, 입력 신호를 인코딩하는 방법이 제공될 수 있으며, 상기 방법은, 입력 신호를 수신하는 단계; 입력 신호와 재구성된 신호 사이의 차이에 기초하여 잔차 세트를 생성하는 단계; 잔차 세트에 대응하는 지각 메트릭 세트를 결정하는 단계; 지각 메트릭 세트에 기초하여 잔차 세트를 선택적으로 사전 양자화하는 단계; 및 하나 이상의 수정된 잔차 세트들을 변환 및 양자화하여 하나 이상의 각각의 인코딩된 스트림들을 생성하는 단계를 포함한다. 따라서, 변환 및 양자화하는 단계는 보다 효율적으로 이루어질 수 있다. 지각 메트릭은 효율성과 사용자 또는 시청자 경험 사이의 균형을 맞추는 것을 용이하게 한다.
지각 메트릭 세트를 결정하는 단계는, 잔차 그룹 세트의 각 주어진 잔차 그룹에 대해, 지각 메트릭이 상기 주어진 잔차 그룹을 위해 사용되어야 하는지 여부를 결정하는 단계; 지각 메트릭이 사용되어야 한다는 결정에 응답하여, 주어진 잔차 그룹에 대한 적어도 하나의 지각 메트릭을 획득하는 단계를 포함할 수 있다. 따라서, 메트릭은 영향을 미칠 수 있는 수준에서 결정될 수 있다.
상기 방법은 하나 이상의 잔차들에 대한 지각 메트릭과 범위 세트를 비교하는 단계를 포함할 수 있으며, 제1 범위에 속하는 지각 메트릭에 응답하여, 하나 이상의 잔차들이 인코딩되지 않으며; 제2 범위에 속하는 지각 메트릭에 응답하여, 하나 이상의 잔차들은 사전 양자화 데드존과 비교되며, 하나 이상의 잔차들은 이들이 데드존 내에 있는 경우 인코딩되지 않으며; 제3 범위에 속하는 지각 메트릭에 응답하여, 하나 이상의 잔차들은 사전 양자화 스텝 폭으로 사전 양자화되며; 제4 범위에 속하는 상기 지각 메트릭에 응답하여, 하나 이상의 잔차들은 수정 없이 인코딩을 위해 전달된다.
상기 구현 양태들 중 어느 하나의 방법을 수행하도록 구성된 인코더가 또한 제공될 수 있다.
추가 양태에 따르면, 제1 잔차 세트를 수신 및 인코딩하여 제1 인핸스먼트 스트림을 생성하는 제1 인코더; 제2 잔차 세트를 수신 및 인코딩하여 제2 인핸스먼트 스트림을 생성하는 제2 인코더를 포함하는, 입력 비디오를 인코딩하기 위한 인코더가 제공될 수 있으며, 제1 잔차 세트는 입력 비디오의 제1 버전과 입력 비디오의 제1 재구성된 버전의 비교에 기초하며, 제1 재구성된 버전은 기본 인코더로부터 도출되고, 기본 인코더는 제1 및 제2 인코더들과 다르며, 제2 잔차 세트는 입력 비디오의 제2 버전과 입력 비디오의 제2 재구성된 버전의 비교에 기초하고, 제2 재구성된 버전은 제1 재구성된 버전으로부터 도출되며, 제1 및 제2 인코더들 중 하나 이상은 제1 및 제2 잔차 세트 중 각각의 세트 내의 비제로 값들의 서브셋이 각각의 제1 및 제2 인핸스먼트 레벨 스트림들에 존재하지 않도록 인코딩하기 전에 잔차들을 선택적으로 전처리하도록 구성된다.
제1 및 제2 인코더들은 각 비디오 프레임에 대한 코딩 단위 세트를 각각 독립적으로 처리할 수 있다.
추가 양태에 따르면, 제1 잔차 세트를 수신 및 인코딩하여 제1 인핸스먼트 스트림을 생성하는 제1 인코더; 제2 잔차 세트를 수신 및 인코딩하여 제2 인핸스먼트 스트림을 생성하는 제2 인코더; 구성 데이터를 수신하는 구성 인터페이스를 포함하는 입력 비디오를 인코딩하는 인코더가 제공될 수 있으며, 제1 잔차 세트는 입력 비디오의 제1 버전과 입력 비디오의 제1 재구성된 버전의 비교에 기초하며, 제1 재구성된 버전은 기본 인코더로부터 도출되고, 기본 인코더는 제1 및 제2 인코더들과 다르며, 제2 잔차 세트는 입력 비디오의 제2 버전과 입력 비디오의 제2 재구성된 버전의 비교에 기초하고, 제2 재구성된 버전은 제1 재구성된 버전으로부터 도출되며, 구성 데이터는 제1 및 제2 인코더들 중 하나 이상에 대한 잔차 마스크들을 포함하며, 비제로 값들의 서브셋이 제1 및 제2 인코더들 중 각각의 인코더는 각각의 제1 및 제2 인핸스먼트 레벨 스트림들에 존지하지 않도록 인코딩하기 전에 제1 및 제2 잔차 세트 중 각각의 세트에 잔차 마스크들을 선택적으로 적용하도록 구성된다.
본 발명의 추가 양태들에 따르면, 프로세서에 의해 실행될 때 프로세서가 상기 양태들의 방법들 중 어느 하나를 수행하도록 하는 컴퓨터 판독 가능 매체가 제공될 수 있다.
도 1은 인코딩 프로세스의 하이 레벨 개략도를 도시한다;
도 2는 디코딩 프로세스의 하이 레벨 개략도를 도시한다;
도 3은 인코딩 프로세스 및 특정 인코딩 단계들의 하이 레벨 개략도를 도시한다;
도 4는 디코딩 프로세스 및 특정 디코딩 단계들의 하이 레벨 개략도를 도시한다;
도 5는 인코딩 프로세스 및 잔차 처리의 하이 레벨 개략도를 도시한다;
도 6은 추가 디코딩 프로세스의 하이 레벨 개략도를 도시한다;
도 7은 인코딩 프로세스 및 잔차 모드 제어의 하이 레벨 개략도를 도시한다;
도 8은 분류 및 잔차 가중화를 도시한다;
도 9a 내지 9c는 클라우드 구성을 도시한다;
도 10은 본원에 설명된 개념의 흐름도를 도시한다;
도 11은 대응하는 액션들을 식별하는 데 사용될 수 있는 지각 메트릭의 범위들을 도시한다; 및
도 12는 지각 메트릭 및 도 11의 범위들이 특정 예에 따라 적용될 수 있는 방법의 흐름도를 도시한다.
본 발명은 방법들에 관한 것이다. 특히, 본 발명은 신호들을 인코딩 및 디코딩하는 방법들에 관한 것이다. 데이터를 처리하는 것은, 이에 제한되는 것은 아니나, 데이터를 획득, 도출, 출력, 수신 및 재구성하는 것을 포함할 수 있다.
본원에 논의된 코딩 기술은 비디오 코딩 형식, 기본 코덱(예를 들어, AVC, HEVC 또는 임의의 기타 현재 또는 향후 코덱)을 서로 다른 기술을 사용하여 인코딩된, 코딩된 데이터의 인핸스먼트 레벨과 결합하는 유연하고, 적응 가능하고, 매우 효율적이며 계산적으로 저렴한 코딩 형식이다. 이 기술은 기본 코덱을 사용하여 인코딩된 다운 샘플링된 소스 신호를 사용하여 기본 스트림을 형성한다. 인핸스먼트 스트림은 예를 들어 해상도를 증가시키거나 프레임 레이트를 증가시킴으로써 기본 스트림을 정정하거나 향상시키는 인코딩된 잔차 세트를 사용하여 형성된다. 계층 구조에는 다수의 레벨들의 인핸스먼트 데이터가 있을 수 있다. 특정 배열들에서, 기본 스트림은 하드웨어 디코더에 의해 디코딩될 수 있는 반면 인핸스먼트 스트림은 소프트웨어 구현에 적합할 수 있다.
새로운 코딩 기술에 사용되는 임의의 최적화는 인핸스먼트 스트림의 특정 요구 사항들 또는 제약들에 맞게 조정되고 복잡도는 낮아야 한다. 이러한 요구 사항들 또는 제약들은 다음과 같다: 인핸스먼트 스트림의 소프트웨어 디코딩의 필요성으로 인한 계산 능력의 잠재적인 감소; 디코딩된 잔차 세트와 디코딩된 프레임의 조합에 대한 필요성; 잔차 데이터의 가능한 구조, 즉 넓은 범위에 걸쳐 매우 가변적인 데이터 값들을 갖는 0 값들의 상대적으로 높은 비율; 양자화된 계수 블록의 뉘앙스; 및 인핸스먼트 스트림의 구조가 다양한 컴포넌트들로 분리된 이산 잔차 프레임 세트임. 인핸스먼트 스트림에 대한 제약들은 인핸스먼트 스트림이 기본 디코딩된 비디오의 개별 프레임들을 효과적으로 정정하거나 향상시킬 수 있도록 하기 위해 간단하고 빠른 엔트로피 코딩 작업이 필수적임을 의미한다는 점에 유의한다. 일부 시나리오들에서는 기본 스트림도 결합 전에 실질적으로 동시에 디코딩되어 리소스들에 부담을 준다는 점에 유의한다.
한 경우에, 본원에 설명된 방법들은 비디오 신호의 서로 다른 색상 성분들을 반영하는 소위 데이터 평면들에 적용될 수 있다. 예를 들어, 본원에 설명된 방법들은 서로 다른 색상 채널들을 반영하는 YUV 또는 RGB의 서로 다른 평면들에 적용될 수 있다. 서로 다른 색상 채널들은 병렬로 처리될 수 있다. 따라서, 본원에 설명된 바와 같은 잔차 세트에 대한 참조는 다수의 잔차 세트들을 포함할 수 있으며, 각 색상 성분은 결합된 인핸스먼트 스트림의 일부를 형성하는 서로 다른 잔차 세트를 갖는다. 각 스트림의 컴포넌트들은 임의의 논리적 순서로 대조될 수 있다. 예를 들어, 동일한 레벨의 각 평면이 그룹화되어 함께 전송될 수 있거나, 대안적으로는, 각 평면의 다른 레벨에 대한 잔차 세트가 함께 전송될 수 있다.
이 본 문서는 바람직하게는 다음의 ISO/I EC 문서들을의 요건들을 충족한다: "저복잡도 비디오 코딩 향상을 위한 제안 요청" ISO/I EC JTC1/SC29/WG11 N17944, 중국 마카오, 2018년 10월 및 "저복잡도 비디오 코딩 향상에 대한 요구사항" ISO/I EC JTC1/SC29/WG11 N 18098, 중국 마카오, 2018년 10월(이는 본원에 참조로서 통합됨). 또한, 본원에 설명된 접근 방식들은 V-Nova International Ltd.에 의해 공급되는 제품들에 통합될 수 있다.
현재 설명된 기술들이 적용될 수 있는 제안된 인코딩 방식의 일반적인 구조는 기본 코덱으로 인코딩된 다운샘플링된 소스 신호를 사용하고, 기본 코덱의 디코딩된 출력에 제1 레벨의 정정 데이터를 추가한 다음, 정정된 픽쳐의 업샘플링된 버전에 추가 레벨의 인핸스먼트 데이터를 추가한다. 따라서, 스트림들은 기본 스트림 및 인핸스먼트 스트림으로 간주된다. 이 구조는 많은 상황들에 큰 유연성과 적응성을 허용하는 다수의 자유도를 생성하여, 코딩 형식을 오버더톱(over-the-top; OTT) 전송, 라이브 스트리밍, 라이브 초고화질(UHD) 방송 등을 포함한 많은 사용 사례에 적합하게 만든다. 기본 코덱의 디코딩된 출력은 보기 위한 것은 아니지만, 이는 더 낮은 해상도로 완전히 디코딩된 비디오이므로 출력이 기존 디코더들과 호환되며, 적합하다고 판단되는 경우, 더 낮은 해상도의 출력으로도 사용 가능하다. 특정 경우에, 기본 코덱은 기본 스트림을 생성하는 데 사용될 수 있다. 기본 코덱은 모듈식 또는 "블랙 박스" 방식으로 제어되는 독립형 코덱을 포함할 수 있다. 본원에 설명된 방법들은 프로세서에 의해 실행되고 하드웨어 및/또는 소프트웨어 구현 기본 코덱들에 대한 함수 호출을 만드는 컴퓨터 프로그램 코드를 통해 구현될 수 있다.
일반적으로, 본원에 사용된 "잔차"라는 용어는 기준 어레이 또는 기준 프레임의 값과 데이터의 실제 어레이 또는 프레임 간의 차이를 지칭한다. 어레이는 코딩 단위를 나타내는 1차원 또는 2차원 어레이일 수 있다. 예를 들어, 코딩 단위는 입력 비디오 프레임의 유사한 크기 영역에 대응하는 2x2 또는 4x4 잔차 값 세트일 수 있다. 이 일반화된 예는 수행된 인코딩 동작들 및 입력 신호의 특성에 대해 불가지론적이라는 점에 유의해야 한다. 본원에 사용된 "잔차 데이터"에 대한 언급은 잔차 세트, 예를 들어, 잔차 세트 자체 또는 잔차 세트에 대해 수행되는 데이터 처리 동작 세트의 출력을 지칭한다. 본 설명 전반에 걸쳐, 일반적으로 잔차 세트는 복수의 잔차들 또는 잔차 요소들을 포함하며, 각 잔차 또는 잔차 요소는 신호 요소, 즉 신호 또는 원본 데이터의 요소에 대응한다. 신호는 이미지 또는 비디오일 수 있다. 이러한 예들에서, 잔차 세트는 비디오의 이미지 또는 프레임에 해당하며, 각 잔차는 신호의 픽셀과 연관되며, 픽셀은 신호 요소이다. 본원에 개시된 예들은 전체 데이터 크기를 감소시키면서 인코딩 파이프라인 또는 최종적으로 디코딩된 이미지에 영향을 미치기 위해 이러한 잔차들이 어떻게 수정(즉, 처리)될 수 있는지를 설명한다. 잔차들 또는 세트들은 잔차 요소(또는 잔차) 단위로 처리되거나, 타일 또는 코딩 단위가 잔차 세트의 인접 서브셋인 타일당 또는 코딩 단위당과 같은 그룹 단위로 처리될 수 있다. 한 경우에, 타일은 더 작은 코딩 단위의 그룹을 포함할 수 있다. 처리는 비디오의 각 프레임에 대해 수행되거나 순차적으로 설정된 프레임 수에 대해서만 수행될 수 있다.
일반적으로, 인핸스먼트 스트림들 각각 또는 둘 다 네트워크 추상화 계층 단위(Network Abstraction Layer Unit; NALU) 세트를 사용하여 하나 이상의 인핸스먼트 비트스트림들로 캡슐화될 수 있다. NALU는 올바른 기본 재구성된 프레임에 인핸스먼트를 적용하기 위해 인핸스먼트 비트스트림을 캡슐화하기 위한 것을 말한다. NALU는 예를 들어 인핸스먼트가 적용되어야 하는 기본 디코더 재구성된 프레임 비트스트림을 포함하는 NALU에 대한 기준 인덱스를 포함할 수 있다. 이러한 방식으로, 인핸스먼트는 디코딩된 출력 비디오를 생성하기 위해 기본 스트림 및 결합된 각 비트스트림의 프레임들에 동기화될 수 있다(즉, 인핸스먼트 레벨의 각 프레임의 잔차가 기본 디코딩된 스트림의 프레임과 결합됨). 픽쳐 그룹은 다수의 NALU들을 나타낼 수 있다.
기본 스트림이 인핸스먼트 스트림 내에서 두 가지(또는 서브 레벨)의 인핸스먼트와 함께 제공되는 위에서 설명된 초기 프로세스로 돌아가면, 일반화된 인코딩 프로세스의 일 예가 도 1의 블록도에 도시된다. 입력된 전체 해상도 비디오(100)는 다양한 인코딩된 스트림들(101, 102, 103)을 생성하기 위해 처리된다. 제1 인코딩된 스트림(인코딩된 기본 스트림)은 기본 코덱(예를 들어, AVC, HEVC 또는 임의의 기타 코덱)에 입력 비디오의 다운샘플링된 버전을 공급하여 생성된다. 인코딩된 기본 스트림은 기본 계층 또는 기본 레벨로 지칭될 수 있다. 제2 인코딩된 스트림(인코딩된 레벨 1 스트림)은 재구성된 기본 코덱 비디오와 입력 비디오의 다운샘플링된 버전 간의 차이를 취하여 얻은 잔차를 처리하여 생성된다. 제3 인코딩된 스트림(인코딩된 레벨 2 스트림)은 재구성된 기본 코딩된 비디오의 정정 버전의 업샘플링된 버전과 입력 비디오 간의 차이를 취하여 얻은 잔차를 처리하여 생성된다. 특정 경우에, 도 1의 컴포넌트들은 일반적인 저 복잡도 인코더를 제공할 수 있다. 특정 경우에, 인핸스먼트 스트림들은 저 복잡도 인코더의 일부를 형성하는 인코딩 프로세스에 의해 생성될 수 있으며, 저 복잡도 인코더는 독립적인 기본 인코더 및 디코더(예를 들어, 기본 코덱으로서 패키징됨)를 제어하도록 구성될 수 있다. 다른 경우에, 기본 인코더 및 디코더는 저 복잡도 인코더의 일부로 제공될 수 있다. 한 경우에, 도 1의 저 복잡도 인코더는 기본 코덱의 래퍼 형태로 볼 수 있으며, 기본 코덱의 기능은 저 복잡도 인코더를 구현하는 엔티티로부터 숨겨질 수 있다.
다운샘플링 컴포넌트(105)에 의해 예시된 다운샘플링 동작은 입력 비디오에 적용되어 기본 코덱의 기본 인코더(113)에 의해 인코딩될 다운샘플링된 비디오를 생성할 수 있다. 다운샘플링은 수직 및 수평 방향 둘 다에서 수행되거나, 또는 대안적으로는 수평 방향으로만 수행될 수 있다. 기본 인코더(113) 및 기본 디코더(114)는 기본 코덱에 의해(예를 들어, 공통 코덱의 서로 다른 기능들로서) 구현될 수 있다. 기본 코덱, 및/또는 기본 인코더(113) 및 기본 디코더(114) 중 하나 이상은 적절하게 구성된 전자 회로부(예를 들어, 하드웨어 인코더/디코더) 및/또는 프로세서에 의해 실행되는 컴퓨터 프로그램 코드를 포함할 수 있다.
각 인핸스먼트 스트림 인코딩 프로세스는 반드시 업샘플링 단계를 포함하지 않을 수 있다. 예를 들어 도 1에서, 제1 인핸스먼트 스트림은 개념적으로 정정 스트림인 반면, 제2 인핸스먼트 스트림은 인핸스먼트 레벨을 제공하기 위해 업샘플링된다.
인핸스먼트 스트림을 생성하는 프로세스를 보다 상세하게 살펴보면, 인코딩된 레벨 1 스트림을 생성하기 위해, 인코딩된 기본 스트림이 기본 디코더(114)에 의해 디코딩된다(즉, 인코딩된 기본 스트림에 디코딩 동작이 적용되어 디코딩된 기본 스트림을 생성함). 디코딩은 기본 코덱의 디코딩 기능 또는 모드에 의해 수행될 수 있다. 그런 다음, 디코딩된 기본 스트림과 다운샘플링된 입력 비디오 간의 차이가 레벨 1 비교기(110)에서 생성된다(즉, 다운샘플링된 입력 비디오와 디코딩된 기본 스트림에 감산 동작이 적용되어 제1 잔차 세트를 생성함). 비교기(110)의 출력은 제1 잔차 세트, 예를 들어, 기본 인코더(113), 기본 디코더(114) 및 다운샘플링 블록(105)의 출력에서 각 피쳐 요소에 대해 잔차 값이 결정되는 잔차 데이터의 표면 또는 프레임으로 지칭될 수 있다.
그런 다음, 차이는 제1 인코더(115)(즉, 레벨 1 인코더)에 의해 인코딩되어 인코딩된 레벨 1 스트림(102)을 생성한다(즉, 제1 잔차 세트에 인코딩 동작이 적용되어 제1 인핸스먼트 스트림을 생성함).
위에서 언급된 바와 같이, 인핸스먼트 스트림은 제1 인핸스먼트 레벨(102) 및 제2 인핸스먼트 레벨(103)을 포함할 수 있다. 제1 인핸스먼트 레벨(102)은 정정된 스트림, 예를 들어, 입력 비디오(100)보다 낮은 해상도에서 기본 인코딩된/디코딩된 비디오 신호에 정정 레벨을 제공하는 스트림인 것으로 간주될 수 있다. 제2 인핸스먼트 레벨(103)은 정정된 스트림을 원래의 입력 비디오(100)러 변환하는, 예를 들어, 정정된 스트림으로부터 재구성되는 신호에 인핸스먼트 또는 정정 레벨을 적용하는 추가 인핸스먼트 레벨인 것으로 간주될 수 있다.
도 1의 예에서, 제2 인핸스먼트 레벨(103)은 추가 잔차 세트를 인코딩함으로써 생성된다. 추가 잔차 세트는 레벨 2 비교기(119)에 의해 생성된다. 레벨 2 비교기(119)는 예를 들어, 디코딩된 레벨 1 스트림의 업샘플링된 버전, 예를 들어 업샘플링 컴포넌트(117)의 출력과 입력 비디오(100) 간의 차이를 결정한다. 업샘플링 컴포넌트(117)에 대한 입력은 제1 인코더(115)의 출력에 제1 디코더(즉, 레벨 1 디코더)를 적용함으로써 생성된다. 이는 디코딩된 레벨 1 잔차 세트를 생성한다. 그런 다음, 이들은 합산 컴포넌트(120)에서 기본 디코더(114)의 출력과 결합된다. 이는 기본 디코더(114)의 출력에 레벨 1 잔차를 효과적으로 적용한다. 레벨 1 인코딩 및 디코딩 프로세스의 손실이 레벨 2 잔차로 정정되도록 한다. 합산 컴포넌트(120)의 출력은 디코더에서 인코딩된 기본 스트림(101) 및 인코딩된 레벨 1 스트림(102)에 레벨 1 처리를 적용한 출력을 나타내는 시뮬레이션된 신호로서 보여 질 수 있다.
언급된 바와 같이, 업샘플링된 스트림은 추가 잔차 세트를 생성하는 입력 비디오와 비교된다(즉, 업샘플링된 재생성된 스트림에 차분 동작이 적용되어 추가 잔차 세트를 생성함). 그런 다음, 추가 잔차 세트는 인코딩된 레벨 2 인핸스먼트 스트림으로서 제2 인코더(121)(즉, 레벨 2 인코더)에 의해 인코딩된다(즉, 그런 다음 추가 잔차 세트에 인코딩 동작이 적용되어 인코딩된 추가 인핸스먼트 스트림을 생성함).
따라서, 도 1에 예시되고 위에서 설명된 바와 같이, 인코딩 프로세스의 출력은 기본 스트림, 및 바람직하게는 제1 인핸스먼트 레벨 및 추가 인핸스먼트 레벨을 포함하는 하나 이상의 인핸스먼트 스트림들이다. 3개의 스트림들(101, 102 및 103)은 입력 비디오(100)를 나타내는 비디오 인코딩 프레임워크에 대한 결합된 스트림을 생성하기 위해, 제어 헤더들과 같은 추가 정보와 함께 또는 없이 결합될 수 있다. 도 1에 도시된 컴포넌트들은 예를 들어, 특정 레벨의 해상도에서 프레임의 2x2 또는 4x4 부분에 해당하는, 데이터의 블록들 또는 코딩 단위들에 대해 동작할 수 있다는 점에 유의해야 한다. 컴포넌트들은 블록 간 종속성 없이 동작하므로, 프레임 내의 다수의 블록들 또는 코딩 단위들에 병렬로 적용될 수 있다. 이는 블록들 사이에 종속성(예를 들어, 공간 종속성 또는 시간 종속성)이 있는 비교의 비디오 인코딩 방식들과 다르다. 비교의 비디오 인코딩 방식의 종속성은 병렬 처리 레벨을 제한하고 훨씬 더 높은 복잡도를 요구한다.
도 1은 잔차 모드 선택 블록(140)을 예시한다. 잔차 모드(RM)가 선택된 경우, 어떤 잔차들이 변환 및 인코딩되어야 하는지, 즉 어떤 잔차들이 제1 및/또는 제2 인코더들(115 및 121)에 의해 처리되어야 하는지를 결정하기 위해 잔차들이 처리(즉, 수정 및/또는 랭크 및 선택)된다. 바람직하게는 이 처리는 엔트로피 인코딩 전에 수행된다. 잔차 모드 선택(140)은 잔차의 처리 또는 수정을 구성 또는 활성화할 수 있는 선택적 단계로서, 즉 잔차 처리가 선택된 모드에 따라 수행된다. 예를 들어, "잔차 모드(RM)"는 잔차 전처리 모드에 대응할 수 있으며, 여기서 인핸스먼트 계층들에 대한 잔차들은 인코딩 이전에 전처리된다. 이 모드는 요구 사항들에 따라 턴 온 및 턴 오프될 수 있다. 예를 들어, 잔차 모드는 하나 이상의 제어 헤더들 또는 필드들을 통해 구성될 수 있다. 대안 실시예들에서, 잔차들은 항상 수정(즉, 전처리)될 수 있으므로 모드의 선택이 필요하지 않다. 이 경우에, 잔차 전처리는 하드 코딩될 수 있다. 잔차 처리의 예들은 아래에 상세히 기술될 것이다. 잔차 모드는, 선택되는 경우, 레벨 1 및 레벨 2 인코딩 동작들 중 하나 이상 내에서, 바람직하게는 인코딩 서브-컴포넌트들 이전의 단계에서 잔차들을 필터링하는 작용을 할 수 있다.
대응하는 일반화된 디코딩 프로세스는 도 2의 블록도에 도시되어 있다. 도 2는 도 1의 저 복잡도 인코더에 대응하는 저 복잡도 디코더를 나타낸다고 할 수 있다. 저 복잡도 디코더는 추가 디코딩 정보를 포함하는 헤더들(204)과 함께 저 복잡도 인코더에 의해 생성된 3개의 스트림들(101, 102, 103)을 수신한다. 인코딩된 기본 스트림(101)은 저복잡도 인코더에서 사용되는 기본 코덱에 대응하는 기본 디코더(210)에 의해 디코딩된다. 인코딩된 레벨 1 스트림(102)은 도 1의 제1 인코더(115)에 의해 인코딩된 제1 잔차 세트를 디코딩하는 제1 디코더(211)(즉, 레벨 1 디코더)에 의해 수신된다. 제1 합산 컴포넌트(212)에서, 기본 디코더(210)의 출력은 제1 디코더(211)로부터 획득된 디코딩된 잔차와 결합된다. 레벨 1 재구성된 비디오 신호라고 할 수 있는 결합된 비디오는 업샘플링 컴포넌트(213)에 의해 업샘플링된다. 인코딩된 레벨 2 스트림(103)은 제2 디코더(214)(즉, 레벨 2 디코더)에 의해 수신된다. 제2 디코더(214)는 도 1의 제2 인코더(121)에 의해 인코딩된 바와 같이 제2 잔차 세트를 디코딩한다. 헤더들(204)이 제2 디코더(214)에 의해 사용되는 것으로 도 2에 도시되어 있지만, 이들은 기본 디코더(210) 뿐만 아니라 제1 디코더(211)에 의해 사용될 수도 있다. 제2 디코더(214)의 출력은 디코딩된 제2 잔차 세트이다. 이들은 제1 잔차 세트 및 업샘플링 컴포넌트(213)에 대한 입력에 대해 더 높은 해상도일 수 있다. 제2 합산 컴포넌트(215)에서, 제2 디코더(214)로부터의 제2 잔차 세트는 업샘플링 컴포넌트(213)의 출력, 즉 업샘플링된 재구성된 레벨 1 신호와 결합되어 디코딩된 비디오(250)를 재구성한다.
저 복잡도 인코더에 따라, 도 2의 저 복잡도 디코더는 비디오 신호의 주어진 프레임의 서로 다른 블록들 또는 코딩 단위들에 대해 병렬로 동작할 수 있다. 추가로, 기본 디코더(210), 제1 디코더(211) 및 제2 디코더(214) 중 둘 이상에 의한 디코딩은 병렬로 수행될 수 있다. 이는 블록 간 종속성이 없기 때문에 가능하다.
디코딩 프로세스에서, 디코더는 헤더들(204)(이는 글로벌 구성 정보, 픽쳐 또는 프레임 구성 정보, 및 데이터 블록 구성 정보를 포함할 수 있음)을 파싱하고 이러한 헤더들에 기초하여 저 복잡도 디코더를 구성할 수 있다. 입력 비디오를 재생성하기 위해, 저 복잡도 디코더는 기본 스트림, 제1 인핸스먼트 스트림 및 추가 또는 제2 인핸스먼트 스트림 각각을 디코딩할 수 있다. 스트림의 프레임들은 동기화된 다음 결합되어 디코딩된 비디오(250)를 도출할 수 있다. 디코딩된 비디오(250)는 저 복잡도 인코더 및 디코더의 구성에 따라 원래의 입력 비디오(100)의 손실 또는 무손실 재구성일 수 있다. 많은 경우에, 디코딩된 비디오(250)는 손실이 디코딩된 비디오(250)의 지각에 감소되거나 최소한의 영향을 미치는 원래의 입력 비디오(100)의 손실 재구성일 수 있다.
도 1 및 2 각각에서, 레벨 2 및 레벨 1 인코딩 동작들은 변환, 양자화 및 엔트로피 인코딩의 단계들을 (예를 들어, 해당 순서로) 포함할 수 있다. 마찬가지로, 디코딩 단계에서, 잔차는 엔트로피 디코더, 역양자화기 및 역변환 모듈을 통해 (예를 들어, 해당 순서로) 전달될 수 있다. 임의의 적절한 인코딩 및 대응하는 디코딩 동작이 사용될 수 있다. 그러나, 바람직하게는, 레벨 2 및 레벨 1 인코딩 단계는 (예를 들어, 인코딩 장치에서 하나 이상의 중앙 또는 그래픽 처리 장치들에 의해 실행되는 바와 같이) 소프트웨어에서 수행될 수 있다.
본원에 설명된 변환은 아다마르(Hadamard) 기반 변환과 같은 방향성 분해 변환을 사용할 수 있다. 둘 다 잔차들의 평탄화된 코딩 단위들(즉, 2x2 또는 4x4 잔차 블록들)에 적용되는 작은 커널 또는 행렬을 포함할 수 있다. 변환에 대한 보다 상세한 내용들은 예를 들어 본원에 참조로 통하보딘 특허 출원 제PCT/EP2013/059847호 또는 제PCT/GB2017/052632호에서 찾을 수 있다. 인코더는 예를 들어 적용될 커널의 크기 사이에서, 사용될 다양한 변환들 사이에서 선택할 수 있다.
변환은 잔차 정보를 4개의 표면들로 변환할 수 있다. 예를 들어, 변환은 다음의 구성 요소들을 생성할 수 있다: 평균, 수직, 수평 및 대각선.
요약하면, 본원의 방법들 및 장치들은 다양한 인코딩 및/또는 디코딩 접금 방식에 따라서 작동하는 인핸스먼트 계층에 대한 베이스라인으로 작동하는 기존 인코딩 및/또는 디코딩 알고리즘(예를 들어, AVC/H.264, HEVC/H.265 등과 같은 MPEG 표준 알고리즘뿐만 아니라, VP9, AV1 등과 같은 비표준 알고리즘)을 통해 구축되는 전반적인 접근 방식을 기반으로 한다. 본 예들의 전반적인 접근 방식의 이면에 있는 아이디어는 MPEG 계열의 알고리즘들에서 사용되는 블록 기반 접근 방식들을 사용하는 것과 달리 비디오 프레임을 계층적으로 인코딩/디코딩하는 것이다. 프레임을 계층적으로 인코딩하는 것은 전체 프레임에 대한 잔차를 생성한 다음, 데시메이트된 프레임 등을 생성하는 것을 포함한다.
풀 사이즈 비디오 프레임에 대한 비디오 압축 잔차 데이터는 LoQ-2(예를 들어, HD 비디오 프레임의 경우 1920 x 1080)로 지칭될 수 있는 반면, 데시메이트된 프레임의 비디오 압축 잔차 데이터는 LoQ-x로 지칭될 수 있으며, 여기서 x는 계층적 데시메이션에 해당하는 숫자를 나타낸다. 도 1 및 2의 설명된 예들에서, 변수 x는 제1 및 제2 인핸스먼트 스트림들을 나타내는 1 및 2의 값들을 가질 수 있다. 따라서 압축 잔차들이 생성되는 두 개의 계층적 레벨들이 있다. 레벨들에 대한 다른 명명 방식들도 어떠한 기능의 변경 없이 적용될 수 있다(예를 들어, 본원에 설명된 레벨 1 및 레벨 2 인핸스먼트 스트림들은 대안적으로는 레벨 1 및 레벨 2 스트림들으로 지칭될 수 있음 - 최고 해상도로부터의 카운트다운을 나타냄).
보다 상세한 인코딩 프로세스가 도 3의 블록도에 도시되어 있다. 인코딩 프로세스는 점선으로 표시된 것처럼 두 부분들로 나뉜다. 점선 아래는 인코더(300)의 기본 레벨로서, 이는 하드웨어 또는 소프트웨어에서 유용하게 구현될 수 있다. 점선 위는 소프트웨어에서 유용하게 구현될 수 있는 인핸스먼트 레벨이다. 인코더(300)는 인핸스먼트 레벨 프로세스들만을 포함하거나, 필요에 따라 기본 레벨 프로세스드로가 인핸스먼트 레벨 프로세스들의 조합을 포함할 수 있다. 인코더(300)는 특히 인핸스먼트 레벨에서 소프트웨어로 유용하게 구현될 수 있다. 이 배열은 예를 들어, 기본 레벨을 제공하는 레거시 하드웨어 인코더가 펌웨어(예를 들어, 소프트웨어) 업데이트를 사용하여 업그레이드되도록 하며, 여기서 펌웨어는 인핸스먼트 레벨을 제공하도록 구성된다. 최신 장치들에서는, 기본 레벨과 인핸스먼트 레벨 둘 다 하드웨어 및/또는 하드웨어와 소프트웨어의 조합으로 제공될 수 있다.
일반 레벨에서의 인코더 기술은 다음과 같다. 인코더(300)는 입력 신호(30)를 수신하기 위한 입력(I)을 포함한다. 입력 신호(30)는 입력 비디오 신호를 포함할 수 있으며, 여기서 인코더는 프레임 단위로 적용된다. 입력(I)은 다운 샘플러(305D) 및 처리 블록(300-2)에 연결된다. 다운 샘플러(305D)는 도 1의 다운샘플링 컴포넌트(105)에 대응할 수 있고, 처리 블록(300-2)은 도 1의 제2 인코더(121)에 대응할 수 있다. 다운 샘플러(305D)는 인코더(300)의 기본 레벨에서의 기본 코덱(32)으로 출력한다. 기본 코덱(320)은 도 1의 기본 인코더(113) 및 기본 디코더(114)를 구현할 수 있다. 다운 샘플러(305D)는 또한 처리 블록(300-1)으로 출력한다. 처리 블록(300-1)은 도 1의 제1 인코더(115)에 대응할 수 있다. 처리 블록(300-1)은 출력을 업샘플러(305U)로 전달하고, 이는 차례로 처리 블록(300-2)으로 출력한다. 업샘플러(305U)는 도 1의 업샘플링 컴포넌트(117)에 대응할 수 있다. 처리 블록들(300-2, 300-1) 각각은 다음의 모듈들 중 하나 이상을 포함한다: 변환 블록(310), 양자화 블록(320), 엔트로피 인코딩 블록(330) 및 잔차 처리 블록(350). 잔차 블록(350)은 변환 블록(310) 이전에 발생할 수 있고/있거나 처리 블록들(300)에서 잔차 처리를 제어할 수 있다. 처리 순서는 도면들에 설명된 대로일 수 있다.
이 예에서 전체(또는 최고) 해상도 비디오와 같은 입력 신호(30)는 인코더(300)에 의해 처리되어 다양한 인코딩된 스트림들을 생성한다. 기본 인코딩된 스트림은 다운 샘플러(305D)를 사용하여, 기본 레벨에서의 기본 코덱(320)(예를 들어, AVC, HEVC 또는 임의의 기타 코덱)에 입력 비디오(30)의 다운샘플링된 버전을 공급하여 생성된다. 기본 인코딩된 스트림은 기본 코덱(320)의 기본 인코더의 출력을 포함할 수 있다. 제1 인코딩된 스트림(인코딩된 레벨 1 스트림)은 인코딩된 기본 스트림을 재구성하여 기본 재구성을 생성한 다음, 기본 재구성과 입력 비디오(30)의 다운샘플링된 버전 간의 차이를 취함으로써 생성된다. 인코딩된 기본 스트림을 재구성하는 것은 기본 코덱으로부터 디코딩된 기본 스트림을 수신하는 것을 포함할 수 있다(즉, 처리 블록(300-1)에 대한 입력은 도 1에 도시된 바와 같은 기본 디코딩된 스트림을 포함함). 그런 다음, 차분 신호는 블록(300-1)에서 처리되어 인코딩된 레벨 1 스트림을 생성한다. 블록(300-1)은 변환 블록(310-1), 양자화 블록(320-1) 및 엔트로피 인코딩 블록(330-1)을 포함한다. 제2 인코딩된 스트림(인코딩된 레벨 2 스트림)은 업샘플러(305U)를 사용하여 기본 재구성의 정정된 버전을 업샘플링하고, 기본 재구성의 정정된 버전과 입력 신호(30) 간의 차이를 취함으로써 생성된다. 그런 다음, 이 차분 신호는 블록(300-2)에서 처리되어 인코딩된 레벨 2 스트림을 생성한다. 블록(300-2)은 변환 블록(310-2), 양자화 블록(320-2), 엔트로피 인코딩 블록(330-2) 및 잔차 처리 블록(350-2)을 포함한다. 처리 블록(300-1)에 따라, 블록들은 도면들에 도시된 순서로(예를 들어, 잔차 처리 후 변환 후, 양자화 후 엔트로피 인코딩) 수행될 수 있다.
임의의 알려진 양자화 방식은 잔차 신호들을 양자로 생성하는 데 유용할 수 있으므로, 특정 변수들은 특정 이산 크기들만 가정할 수 있다. 한 경우에, 양자화하는 것은 미리 결정된 스텝-폭에 의한 분할을 수행하는 것을 포함한다. 이는 둘 모두의 레벨들(1 및 2)에서 적용될 수 있다. 예를 들어, 블록(320)에서 양자화하는 것은 변환된 잔차 값들을 스텝-폭으로 나누는 것을 포함할 수 있다. 스텝-폭은 미리 결정, 예를 들어, 원하는 양자화 레벨에 따라 선택될 수 있다. 한 경우에, 스텝-폭으로의 분할은 역 스텝-폭에 의한 곱셈으로 변환될 수 있으며, 이는 하드웨어에서 보다 효율적으로 구현될 수 있다. 이 경우에, 블록(320)에서와 같이 역양자화하는 것은 스텝-폭을 곱하는 것을 포함할 수 있다. 본원에 기술된 엔트로피 인코딩은 런 렝스 인코딩(run length encoding; RLE)을 포함할 수 있으며, 그런 다음 인코딩된 출력을 처리하는 것은 허프만(Huffman) 인코더를 사용하여 처리된다. 특정 경우에, 엔트로피 인코딩이 바람직한 경우 이러한 방식들 중 하나만 사용될 수 있다.
인코딩된 기본 스트림은 기본 레벨 스트림으로 지칭될 수 있다.
도 3은 변환 블록(310) 이전에 위치된 잔차 처리 블록들(350-2, 350-1)을 예시한다. 잔차 처리가 변환 이전에 표시되어 있지만, 선택적으로 처리 단계는 예를 들어 인코딩 프로세스의 후반과 같이 다른 곳에 배치될 수 있다; 그러나, 변환 단계 이전에 위치될 때, 잔차 처리는 효율성이 파이프라인을 통해 전파되기 때문에 인코딩 파이프라인을 통해 가장 큰 영향을 미칠 수 있다. 예를 들어, 잔차 값들이 초기 단계에서 (예를 들어, 0으로 설정하여) 필터링되면, 이는 처리 블록들(300) 내의 후속 단계들에서 수행되어야 하는 계산의 양을 줄인다. 잔차 처리 블록(350)은 잔차 모드 선택 블록(140)(도 3에 도시되지 않음, 도 1에 도시됨)에 의해 활성화 또는 구성될 수 있다. 예를 들어, 잔차 모드가 선택(예를 들어, 턴 온)되면, 잔차 처리 블록(350)은 활성화될 수 있다. 잔차 모드는 제1 및 제2 인핸스먼트 스트림들에 대해 독립적으로 선택될 수 있다(예를 들어, 잔차 처리 블록들(350-2 및 350-1)은 하나가 오프이고 다른 하나가 온일 수 있는 경우 별도로 활성화 및 적용될 수 있음).
잔차 처리 블록은 잔차 세트를 수정하도록 구성된다. 잔차 처리 블록(310)의 어떤 특정 기능은 아래에서 상세히 설명되어 있지만, 잔차 처리 블록(310)은 개념적으로 잔차들을 수정하는 기능을 한다. 이는 일종의 필터링이나 전처리로 볼 수 있다. 특정 예들에서, 잔차는 필터링 또는 전처리의 일부로 랭크되거나 우선순위가 주어질 수 있으며, 이에 따라 더 높은 랭크 또는 우선순위를 가진 것들은 추가 처리를 위해 전달되는 반면 더 낮은 랭크 또는 우선순위를 가진 것들은 추가 처리를 위해 전달되지 않는다(예를 들어, 0 또는 해당하는 낮은 값으로 설정됨). 사실상, 잔차 처리 블록은 변환이 잔차의 서브셋에 대해 동작하도록 변환 전에 하나 이상의 잔차들을 '없애도록' 구성된다.
잔차 처리 블록(310)은 L2 및 L1 경로에서 동일할 수 있거나, 이들 스트림의 상이한 특성을 반영하도록 상이하게 구성될 수 있다(또는 특정 경로에 포함되지 않을 수 있음).
특정 예들은 각기 다른 잔차 처리 모드들을 구현할 수 있다. 잔차 모드 선택 블록(140)은 잔차들이 처리되어야 하는지 여부 및 또한 특정 실시예들에서 수행되는 처리 유형을 나타낼 수 있다. 일반적으로, 인코더(도 1의 저 복잡도 인코더 또는 도 3의 인코더(300)와 같은)는 잔차 모드를 선택하고 구현하는 잔차 모드 제어 컴포넌트(140) 및 하나 이상의 인핸스먼트 스트림들과 관련하여 선택된 잔차 모드에 대한 처리를 구현하는 잔차 모드 구현 컴포넌트들을 포함할 수 있다. 다른 경우에, 잔차 처리 블록(350)만이 더 높은 제어 기능 없이(예를 들어, 제어 컴포넌트(140)와 같은 상위 레벨 제어 컴포넌트 내에서) 인핸스먼트 인코딩의 각 레벨 내에서 제공될 수 있다. 이 후자의 경우에, 잔차 모드 제어 컴포넌트(140)의 기능은 도 1의 제1 및/또는 제2 인코더들(115 및 121)에 통합되는 것으로 보일 수 있다.
구현될 수 있는 잔차 모드들의 예들은, 잔차 처리가 수행되지 않는 모드에 제한되는 것은 아니나, 특정 잔차에 0 또는 1을 곱하는 이진 모드, 잔차에 가중치 인자를 곱하는 가중치 모드, 특정 블록들 또는 코딩 단위들이 처리되지 않도록 하는 제어 모드(예를 들어, 2x2 또는 4x4 코딩 단위의 모든 잔차 값들을 0으로 설정하는 것과 동일), 잔차가 목록 내에서 랭크되거나 우선순위가 부여되고 랭크 또는 우선순위에 기반하여 추가 처리되도록 선택되는 랭크 또는 우선순위 모드, 잔차 인코딩을 구성하는 데 사용되는 스코어가 잔차에 주어지는 스코어링 모드 및 잔차 및/또는 픽쳐 요소들이 분류되고 해당 잔차가 분류화에 기반하여 수정되거나 필터링되는 분류화 모드를 포함한다.
본원에 나타낸 바와 같이, 잔차가 (예를 들어, 도 1의 비교기들(110 및/또는 119)에 의해) 계산되면, 잔차들이 인코딩되고 전송되는 방법을 결정하기 위해 잔차들이 처리될 수 있다. 앞서 설명된 바와 같이, 잔차들은 원래 형태의 이미지 신호와 재구성된 형태의 이미지 신호를 비교하여 계산된다. 예를 들어, 한 경우에, L-2 인핸스먼트 스트림에 대한 잔차들은 원래 형태의 이미지 신호(예를 들어, 도면들에 표시된 입력 비디오)로부터 업샘플링의 출력을 빼서 결정된다. 업샘플링에 대한 입력은 시뮬레이션된 디코딩에 따른 신호의 재구성이라고 할 수 있다. 다른 경우에, L-1 인핸스먼트 스트림에 대한 잔차들은 다운샘플링된 형태의 원래 이미지 신호(예를 들어, 다운샘플링의 출력)으로부터 기본 디코더에 의해 출력된 이미지 스트림을 빼서 결정된다.
잔차들을 처리하기 위해, 예를 들어 선택된 잔차 모드에서, 잔차들이 분류될 수 있다. 예를 들어, 잔차 모드를 선택하기 위해 및/또는 특정 모드 내에서 전처리를 선택적으로 적용하기 위해 잔차들이 분류될 수 있다. 잔차들의 분류화 프로세스는, 예를 들어, 입력 이미지의 특정 공간적 및/또는 시간적 특성에 기초하여 수행될 수 있다. 이는 입력 비디오(100)로부터 잔차 모드 선택 컴포넌트(140)로의 입력에 의해 도 1에 표시된다. 다른 예들에서, 입력은 다운샘플링된 비디오 및/또는 잔차들 자체를 포함하는 인코더 내의 다른 신호들에서 올 수 있다.
한 예에서, 입력 이미지는, 각 요소(예를 들어, 픽셀 또는 다수의 픽셀들을 포함하는 영역) 및/또는 요소 그룹(예를 들어, 2x2 또는 4x4 픽셀 영역을 포함하는 코딩 단위 또는 코딩 단위 세트를 포함하는 타일)의 경우, 해당 요소 및/또는 요소 그룹이 특정 공간적 및/또는 시간적 특성들을 가지고 있는지 여부를 결정하도록 처리된다. 예를 들어, 요소는 각각의 공간적 및/또는 시간적 특성들에 대해 이를 분류하는 방법을 결정하기 위해 하나 이상의 임계값들에 대해 측정된다. 공간적 특성들은 특정 요소들 또는 요소 그룹들 간의 공간적 활동의 레벨(예를 들어, 인접 요소들 간에 얼마나 많은 변화들이 존재하는지) 또는 특정 요소들 간 및/또는 요소 그룹들 간의 콘트라스트의 레벨(예를 들어, 요소 그룹이 하나 이상의 다른 요소 그룹들과 얼마나 다른 지)를 포함한다. 한 경우에, 콘트라스트 메트릭은 하나 이상의 해상도들에서 비디오 프레임에 대해 계산될 수 있으며, 이는 분류화를 위한 기초로 사용될 수 있다. 이 콘트라스트 메트릭은 픽쳐 요소당 레벨(예를 들어, 잔차 요소당 레벨에 대응)에서 및/또는 그룹 레벨(예를 들어, 타일들, 코딩 단위들 또는 잔차 블록들에 대응)에서 결정될 수 있다. 공간적 특성들은 공간적 방향 세트(예를 들어, 2D 평면 이미지의 경우 수평 및/또는 수직 방향들)의 변화의 척도일 수 있다. 시간적 특성들은 특정 요소 및/또는 요소 그룹에 대한 시간적 활동(예를 들어, 요소 및/또는 요소 그룹이 하나 이상의 이전 및/또는 미래 프레임들에 대한 병치된 요소들 및/또는 요소 그룹 간에 얼마나 다른 지)을 포함할 수 있다. 시간적 특성들은 시간적 방향의(예를 들어, 시계열에 따른) 변화의 척도일 수 있다. 특성들은 요소 및/또는 요소 그룹별로 결정될 수 있다; 이는 픽셀당 및/또는 2x2 또는 4x4 잔차 블록당 및/또는 타일(예를 들어, 잔차 블록 그룹)당일 수 있다. 추가 실시예에서, 텍스처나 디테일의 레벨(예를 들어, 얼마나 많은 디테일이 요소 또는 요소 그룹으로 표현되는지)이 사용될 수 있다. 텍스처 또는 디테일의 레벨을 나타내는 텍스처 메트릭은 콘트라스트 메트릭과 유사한 방식으로 결정될 수 있다. 본원에 설명된 메트릭들은 0 내지 1 또는 0% 내지 100% 또는 0 내지 255(즉, 8비트 정수)와 같은 미리 정의된 범위 내에서 표현되도록 정규화될 수 있다. 타일은 16x16 세트의 픽쳐 요소들 또는 잔차들(예를 들어, 8x8의 2x2 코딩 단위 세트 또는 4x4의 4x4 코딩 단위 세트)를 포함할 수 있다.
이러한 공간적 및/또는 시간적 특성들은 요소 그룹의 복잡도 측정을 결정하기 위해 결합 및/또는 가중될 수 있다. 특정 경우에, 본원에 설명된 복잡한 측정 또는 다른 메트릭들은 인코딩 이전에(예를 들어, 비디오 파일에 대한 초기 처리 단계에서) 결정되고 잔차 처리를 적용하기 위해 인코딩 단계에서 검색될 수 있다. 마찬가지로, 메트릭들은 예를 들어 프레임 또는 평면 그룹에 대해 주기적으로 계산될 수 있다. 또한, 다수의 상이한 메트릭들이 상이한 잔차 세트들에 대해 저장 및 사용될 수 있으며, 예를 들어, 상이한 메트릭이 프레임의 각 평면에 대해 사전 계산될 수 있고 잔차들의 해당 평면에 대한 후속 비교에 사용될 수 있다.
예를 들어 요소 그룹이 정적일 때, 시청자들은 작은 디테일을 더 쉽게 발견할 수 있으므로 시간적 특성들이 중요하며, 따라서 잔차 정보를 보존하는 것이 중요할 수 있다. 예를 들어, 특정 정적 잔차 요소들의 우선순위는 일시적인 잔차 요소들의 비교 세트보다 높을 수 있다. 또한, 고해상도(예를 들어, L-2 인핸스먼트 스트림)로 녹화된 원본 비디오의 노이즈 소스는 작지만 일시적인 잔차 값들(예를 들어, -2 또는 -1 또는 1 또는 2의 정규 분포 값들)을 많이 생성할 수 있다 - 이러한 값들은 인핸스먼트 레벨 인코더들에서 잔차 처리 전에 더 낮은 우선순위가 주어지고/지거나 0으로 설정될 수 있다.
분류화는 요소 및/또는 요소 그룹의 공간적 및/또는 시간적 특성들에 기초하여 각 요소 및/또는 요소 그룹에 개별 가중치를 연관시킬 수 있다. 가중치는 0과 1 사이의 정규화된 값일 수 있다.
하나의 잔차 모드에서, 주어진 잔차 세트를 인코딩하고 전송할지 여부에 대한 결정이 이루어질 수 있다. 예를 들어, 한 잔차 모드에서, 특정 잔차들(및/또는 잔차 블록들 - 본원에 설명된 2x2 또는 4x4 블록들과 같은)은 랭킹 컴포넌트들 및/또는 선택 컴포넌트들에 의해 L-2 또는 L-1 인핸스먼트 처리 파이프라인들을 따라 선택적으로 포워딩될 수 있다. 다시 말해, 도 1의 L-2 및 L-1 인코딩 컴포넌트들에서 서로 다른 잔차 모드들이 서로 다른 잔차 처리를 가질 수 있다. 예를 들어, 한 잔차 모드에서, 특정 잔차들은 추가 L-2 또는 L-1 인코딩을 위해 포워딩되지 않을 수 있으며, 예를 들어, 변환, 양자화 및 엔트로피 인코딩되지 않을 수 있다. 한 경우에, 특정 잔차들은 잔차 값을 0으로 설정함으로써 및/또는 잔차 또는 잔차를 포함하는 그룹과 관련된 특정 제어 플래그를 설정함으로써 포워딩되지 않을 수 있다. 제어 플래그들은 아래에서 더 자세히 설명될 것이다.
한 잔차 모드에서, 0 또는 1의 이진 가중치가 예를 들어, 위에서 논의된 컴포넌트들에 의해 잔차들에 적용될 수 있다. 이는 선택적 잔차 처리가 "온"인 모드에 해당할 수 있다. 이 모드에서, 가중치 0은 특정 잔차들을 "무시"하는 것에 대응할 수 있으며, 예를 들어, 인핸스먼트 파이프라인에서 추가 처리를 위해 이들을 포워딩하지 않을 수 있다. 다른 잔차 모드에서, 가중화되지 않을 수 있다(또는 가중치가 모든 잔차들에 대해 1로 설정될 수 있음); 이는 선택적 잔차 처리가 "오프"인 모드에 해당할 수 있다. 또 다른 잔차 모드에서, 0 내지 1의 정규화된 가중치가 잔차 또는 잔차 그룹에 적용될 수 있다. 이는 디코더에서 비디오 신호를 재구성하기 위한 중요성 또는 "유용성" 가중치를 나타낼 수 있다. 여기서 1은 잔차가 정상적으로 사용됨을 나타내고 1 미만의 값들은 잔차의 중요성을 감소시킨다. 다른 경우에, 정규화된 가중치는 다른 범위에 있을 수 있으며, 예를 들어 0 내지 2 사이의 범위는 1보다 큰 가중치를 갖는 특정 잔차들을 두드러지게 할 수 있다.
위에서 설명된 잔차 모드들에서, 잔차 및/또는 잔차 그룹은 할당된 가중치로 곱해질 수 있으며, 가중치는 대응하는 요소 세트 및/또는 요소 그룹에 적용된 분류화 프로세스에 따라 할당될 수 있다. 예를 들어, 한 경우에, 각 요소 또는 요소 그룹은 미리 정의된 정수 세트 또는 범위(예를 들어, 0 내지 9의 10개의 클래스들)로부터 선택된 정수 값으로 표현되는 클래스가 할당될 수 있다. 그런 다음, 각 클래스는 해당 가중치 값(예를 들어, 클래스 0의 경우 0, 클래스 1의 경우 0.1 또는 일부 다른 비선형 매핑)을 가질 수 있다. 클래스과 가중치 값 사이의 관계는 예를 들어, 디코더에서 및/또는 인코더 내에서 픽쳐 품질 측정을 기반으로, 분석 및/또는 실험에 의해 결정될 수 있다. 그런 다음, 가중치는 대응하는 잔차 및/또는 잔차 그룹, 예를 들어, 요소 및/또는 요소 그룹에 해당하는 잔차 및/또는 잔차 그룹을 곱하는 데 사용될 수 있다. 한 경우에, 이 대응은 공간적일 수 있는데, 예를 들어, 잔차는 특정 입력 요소 값을 기반으로 계산되고 분류화는 특정 입력 요소 값에 적용되어 잔차에 대한 가중치를 결정한다. 다시 말해, 분류화는 입력 이미지의 요소들 및/또는 요소 그룹에 대해 수행될 수 있으며, 여기서 입력 이미지는 비디오 신호의 프레임일 수 있지만, 이 분류화로부터 결정된 가중치들은 요소들 및/또는 요소 그룹보다는 같은 위치에 배치된 잔차들 및/또는 잔차 그룹에 가중치를 부여하는 데 사용된다. 이 방식으로, 특성화는 인코딩 프로세스와 별도의 프로세스로 수행될 수 있으며, 따라서 이는 잔차 프로세스의 인코딩과 병렬로 계산될 수 있다.
수정할 적절한 잔차들을 식별하기 위해, 프로세스는 잔차 세트를 분석하고 특성들 또는 패턴들을 식별할 수 있다. 대안으로, 프로세스는 해당 잔차 세트에 대응하는 원래의 입력 신호를 분석할 수 있다. 또한, 프로세스는 잔차 세트(또는 수정된 세트)에 의해 재구성된 이미지에 대한 효과를 예측할 수 있다. 예측은 잔차들을 하위 레벨로부터의 신호와 결합함으로써 이미지를 재구성하고, 재구성된 신호를 분석하고 그에 따라 또는 반복적으로 잔차들을 처리하는 것을 포함할 수 있다.
특정 잔차들이 잔차 값을 0으로 설정함으로써 및/또는 잔차 또는 잔차를 포함하는 그룹과 관련된 특정 제어 플래그를 설정함으로써 포워딩되지 않을 수 있는 방법이 위에서 설명되었다. 후자의 경우, 플래그 또는 이진 식별자 세트가 사용될 수 있으며, 각각은 잔차의 요소 또는 요소 그룹에 대응한다. 각 잔차는 플래그 세트와 비교될 수 있으며 플래그들을 기반으로 변환되는 것이 방지될 수 있다. 이 방식으로, 잔차 처리는 비파괴적일 수 있다. 대안으로, 잔차들은 플래그들에 기반하여 삭제될 수 있다. 플래그 세트는 각 세트 또는 잔차를 독립적으로 처리할 필요 없이 잔차들 또는 잔차 그룹에 대해 반복적으로 사용될 수 있고 기준으로 사용될 수 있기 때문에 더욱 유리하다. 예를 들어, 각 프레임은 잔차가 처리 및 인코딩되어야 하는지 여부를 나타내는 마스크 역할을 하는 이진 비트맵을 가질 수 있다. 이 경우에, 대응하는 마스크 값이 1인 잔차들만이 인코딩될 수 있고, 대응하는 마스크 값이 0인 잔차들이 집합적으로 0으로 설정될 수 있다.
랭킹 및 필터링 모드에서, 잔차 세트는 우선순위 또는 랭크가 할당될 수 있으며, 그런 다음 임계값과 비교되어 어떤 잔차들이 선택 해제되거나 '제거'되어야 하는지를 결정한다. 임계값은 미리 결정될 수 있거나, 또는 원하는 픽쳐 품질, 전송 레이트 또는 컴퓨팅 효율에 따라 가변될 수 있다. 예를 들어, 우선순위 또는 랭크는 주어진 값 범위 내의 값, 예를 들어, 0 내지 1 사이의 부동 소수점 값들 또는 0 내지 255 사이의 정수 값들일 수 있다. 범위의 상위 끝(예를 들어, 1 또는 255)은 가장 높은 랭크 또는 우선순위를 나타낼 수 있다. 이 경우에, 임계값은 범위 내의 값으로 설정될 수 있다. 비교 시, 임계값 미만의 해당 랭크 또는 우선순위 값들이 있는 잔차들은 선택 해제(예를 들어, 0으로 설정)될 수 있다.
도 3의 인코더에 대응하는 디코딩 프로세스를 수행하는 디코더(400)는 도 4의 블록도에 도시되어 있다. 디코딩 프로세스는 점선으로 표시된 것처럼 두 부분들로 나뉜다. 점선 아래는 디코더(400)의 기본 레벨로서, 이는 하드웨어에서 유용하게 구현될 수 있다. 점선 위는 소프트웨어에서 유용하게 구현될 수 있는 인핸스먼트 레벨이다. 디코더(400)는 인핸스먼트 레벨 프로세스들만을 포함하거나, 필요에 따라 기본 레벨 프로세스들과 인핸스먼트 레벨 프로세스들의 조합을 포함할 수 있다. 디코더(400)는 소프트웨어에서, 특히 인핸스먼트 레벨에서 유용하게 구현될 수 있으며, 레거시 디코딩 기술, 특히 레거시 하드웨어 기술 위에 적절하게 위치할 수 있다. 레거시 기술에 의해, 이미 시장에 출시되어 있고, 교체하는 데 불편하거나 및/또는 비용이 많이 들며, 여전히 신호들을 디코딩하는 목적으로 사용될 수 있는 앞서 개발되고 판매되는 오래된 기술을 의미한다. 다른 경우에, 기본 레벨은 임의의 기존 및/또는 미래의 비디오 인코딩 툴 또는 기술을 포함할 수 있다.
일반 레벨에서의 디코더 기술은 다음과 같다. 디코더(400)는 추가 디코딩 정보를 포함하는 선택적 헤더들과 함께 인코딩된 기본 스트림, 인코딩된 레벨 1 스트림 및 인코딩된 레벨 2 스트림을 포함하는 하나 이상의 입력 신호들을 수신하기 위한 입력(도시되지 않음)을 포함한다. 디코더(400)는 기본 레벨에서의 기본 디코더(420), 및 인핸스먼트 레벨에서의 처리 블록들(400-1 및 400-2)을 포함한다. 업샘플러(405U)는 또한 처리 블록들(400-1 및 400-2) 사이에 제공되어 처리 블록(400-1)에 의해 출력된 신호의 업샘플링된 버전을 처리 블록(400-2)에 제공한다. 기본 디코더(420)는 도 2의 기본 디코더(210)에 대응할 수 있고, 처리 블록(400-1)은 도 2의 제1 디코더(211)에 대응할 수 있고, 처리 블록(400-2)은 도 2의 제2 디코더(214)에 대응할 수 있고, 업샘플러(405U)는 도 2의 업샘플러(213)에 대응할 수 있다.
디코더(400)는 하나 이상의 입력 신호들을 수신하고 인코더(300)에 의해 생성된 3개의 스트림들을 지휘한다. 인코딩된 기본 스트림은 인코더(300)에서 사용되는 기본 코덱(420)에 대응하고, 기본 레벨에서 인코딩 프로세스를 반전시키는 역할을 하는 기본 디코더(420)로 보내지고 이에 의해 디코딩된다. 인코딩된 레벨 1 스트림은 인코더(300)에 의해 생성된 제1 잔차 세트를 재생성하기 위해 디코더(400)의 블록(400-1)에 의해 처리된다. 블록(400-1)은 인코더(300)의 처리 블록(300-1)에 대응하고, 기본 레벨에서 블록(300-1)의 처리를 반전시키거나 실질적으로 반전시키는 역할을 한다. 기본 디코더(420)의 출력은 인코딩된 레벨 1 스트림으로부터 획득된 제1 잔차 세트와 결합된다. 결합된 신호는 업샘플러(405U)에 의해 업샘플링된다. 인코딩된 레벨 2 스트림은 블록(400-2)에 의해 처리되어 인코더(300)에 의해 생성된 추가 잔차를 재생성한다. 블록(400-2)은 인코더(300)의 처리 블록(300-2)에 대응하고, 기본 레벨에서 블록(300-2)의 처리를 반전시키거나 실질적으로 반전시키는 역할을 한다. 업샘플러(405U)로부터의 업샘플링된 신호는 인코딩된 레벨 2 스트림으로부터 획득된 추가 잔차와 결합되어 입력 신호(30)의 레벨 2 재구성을 생성한다. 처리 블록(400-2)의 출력은 도 2의 디코딩된 비디오(250)와 유사한 디코딩된 비디오로서 보여 질 수 있다.
위에서 언급한 바와 같이, 인핸스먼트 스트림은 두 개의 스트림들, 즉 인코딩된 레벨 1 스트림(제1 인핸스먼트 레벨) 및 인코딩된 레벨 2 스트림(제2 인핸스먼트 레벨)을 포함할 수 있다. 인코딩된 레벨1 스트림은 정정된 픽쳐를 생성하기 위해 기본 스트림의 디코딩된 버전과 결합될 수 있는 정정 데이터 세트를 제공한다.
도 5는 도 1의 인코더(300)를 보다 상세히 도시한다. 인코딩된 기본 스트림은 기본 인코더(320E)에 의해 직접 생성되고, 필요에 따라 양자화되고 엔트로피 인코딩될 수 있다. 특정 경우에, 이러한 후자의 프로세스들은 기본 인코더(320E)에 의한 인코딩의 일부로서 수행될 수 있다. 인코딩된 레벨 1 스트림을 생성하기 위해, 인코딩된 기본 스트림은 인코더(300)에서 디코딩된다(즉, 인코딩된 기본 스트림에 기본 디코딩 블록(320D)에서 디코딩 동작이 적용됨). 기본 디코딩 블록(320D)은 인코더(300)의 기본 레벨의 일부로서 도시되고, 대응하는 기본 인코딩 블록(320E)과 별도로 도시된다. 예를 들어, 기본 디코더(320D)는 기본 인코더(320E) 형태의 인코딩 컴포넌트를 기본 코덱으로 보완하는 디코딩 컴포넌트일 수 있다. 다른 예들에서, 기본 디코딩 블록(320D)은 대신 인핸스먼트 레벨의 일부일 수 있으며, 특히 처리 블록(300-1)의 일부일 수 있다.
도 5로 돌아가서, 기본 디코딩 블록(320D)으로부터 출력된 디코딩된 기본 스트림과 다운샘플링된 입력 비디오 간의 차이가 생성된다(즉, 다운샘플링된 입력 비디오와 디코딩된 기본 스트림에 감산 동작(310-S)이 적용되어 제1 잔차 세트를 생성함). 여기서, 잔차라는 용어는 당업계에 알려진 것과 동일한 방식으로 사용된다; 즉, 잔차는 기준 신호 또는 프레임과 원하는 신호 또는 프레임 간의 오차 또는 차이들을 나타낸다. 여기서, 기준 신호 또는 프레임은 디코딩된 기본 스트림이고, 원하는 신호 또는 프레임은 다운샘플링된 입력 비디오이다. 따라서, 제1 인핸스먼트 레벨에 사용된 잔차는 향후 디코딩된 기본 스트림을 기본 인코딩 동작에 사용된 다운샘플링된 입력 비디오의 근사치 또는 더 가까운 근사치로 '정정'할 수 있기 때문에 정정 신호로 간주될 수 있다. 이는 기본 코덱의 변칙 또는 기타 특성들을 정정할 수 있으므로 유용하다. 이들에는, 그 중에서도, 기본 코덱에 의해 적용되는 모션 보상 알고리즘, 기본 코덱에 의해 적용되는 양자화 및 엔트로피 인코딩, 기본 코덱에 의해 적용되는 블록 조정이 포함된다.
도 3의 블록(300-1)의 컴포넌트들은 도 5에 더 자세히 도시된다. 특히, 제1 잔차 세트는 인코딩된 레벨 1 스트림을 생성하기 위해 변환, 양자화 및 엔트로피 인코딩된다. 도 5에서, 제1 잔차 세트에 변환 동작(310-1)이 적용되고; 변환된 잔체 세트에 양자화 동작(320-1)이 적용되어 양자화된 잔차 세트를 생성하며; 양자화된 잔차 세트에 엔트로피 인코딩 동작(330-1)이 적용되어 제1 인핸스먼트 레벨에서 인코딩된 레벨 1 스트림을 생성한다. 그러나, 다른 예들에서 양자화 단계(320-1)만이 수행될 수 있거나, 또는 변환 단계(310-1)만이 수행될 수 있다는 점에 유의해야 한다. 엔트로피 인코딩은 사용되지 않을 수 있거나, 변환 단계(110-1) 및 양자화 단계(320-1) 중 하나 또는 둘 모두에 추가하여 선택적으로 사용될 수 있다. 엔트로피 인코딩 동작은 허프만 인코딩 동작 또는 런 렝스 인코딩(RLE) 동작, 또는 허프만 인코딩 동작과 RLE 동작 모두의 조합과 같은, 임의의 적합한 유형의 엔트로피 인코딩일 수 있다. 잔차 처리 동작(350-2, 350-1)은 변환 동작(310-2, 310-1) 또는 둘 다 이전에 특정 실시예들에서 제공될 수 있다. 잔차 처리 동작(350)은 본원에 설명된 바와 같은 잔차 전처리하는 것, 예를 들어, 블록에 의해 수신된 잔차들을 필터링하여 수신된 잔차들의 서브셋만을 변환 동작(310)에 전달하는 것(또는 다른 말로 특정 잔차 값들을 0으로 설정하여 원래 값들이 파이프라인의 후속 동작들 내에서 처리되지 않도록 하는 것)을 적용한다.
위에서 언급한 바와 같이, 인핸스먼트 스트림은 인코딩된 레벨 1 스트림(제1 인핸스먼트 레벨) 및 인코딩된 레벨 2 스트림(제2 인핸스먼트 레벨)을 포함할 수 있다. 제1 인핸스먼트 레벨은 기본 레벨에서 정정된 비디오를 인에이블시키는 것, 즉, 예를 들어 인코더 및/도는 디코더 변칙을 정정하는 것으로 간주될 수 있다. 제2 인핸스먼트 레벨은 정정된 비디오를 원래의 입력 비디오 또는 그에 가까운 근사값으로 변환하는 데(예를 들어, 디테일 또는 선명도를 추가하는 데) 사용할 수 있는 추가 인핸스먼트 레벨로 간주될 수 있다. 예를 들어, 제2 인핸스먼트 레벨은 다운샘플링 동안 손실되는 미세한 디테일을 추가할 수 있고/있거나 변환 동작(310-1) 및 양자화 동작(320-1) 중 하나 이상에 의해 도입되는 오차로부터 정정하는 것을 도울 수 있다.
도 3 및 5를 참조하면, 인코딩된 레벨 2 스트림을 생성하기 위해, 추가 인핸스먼트 레벨 정보가 블록(300-2)에서의 추가 잔차 세트를 생성 및 인코딩함으로써 생성된다. 추가 잔차 세트는 디코딩된 기본 스트림(기준 신호 또는 프레임)의 정정된 버전의 (업샘플러(305U)를 통한) 업샘플링된 버전과 입력 신호(30)(원하는 신호 또는 프레임) 간의 차이이다.
디코더(400)에서 생성되는 디코딩된 기본 스트림의 정정된 버전의 재구성을 달성하기 위해, 블록(300-1)의 처리 단계들 중 적어도 일부는 디코더(200)의 프로세스들을 모방하고 변환 및 양자화 프로세스들 중 적어도 일부 손실들 및 변칙들을 고려하도록 반전된다. 이를 위해, 블록(300-1)은 역 양자화 블록(320-1i) 및 역 변환 블록(310-1i)을 포함한다. 양자화된 제1 잔차 세트는 역 양자화 블록(320-1i)에서 역으로 양자화되고, 제1 잔차 세트의 디코더 측 버전을 재생성하기 위해 인코더(100)의 역 변환 블록(310-1i)에서 역으로 변환된다.
디코더(320D)로부터의 디코딩된 기본 스트림은 제1 잔차 세트의 이 향상된 디코더 측 버전과 결합된다(즉, 제1 잔차 세트의 디코더 측 버전 및 디코딩된 기본 스트림에 대해 합산 동작(310-C)이 수행됨). 합산 동작(310-C)은 디코더에서 모든 가능성으로 생성되는 입력 비디오의 다운샘플링된 버전의 재구성(즉, 재구성된 기본 코텍 비디오)를 생성한다. 도 3 및 5에 예시된 바와 같이, 재구성된 기본 코텍 비디오는 업샘플러(305U)에 의해 업샘플링된다.
그런 다음, 업샘플링된 신호(즉, 기준 신호 또는 프레임)는 입력 신호(30)(즉, 원하는 신호 또는 프레임)와 비교되어 제2 잔차 세트를 생성한다(즉, 업샘플링된 재생성된 스트림에 차분 동작(300-S)이 적용되어 추가 잔차 세트를 생성함). 그런 다음, 제2 잔차 세트는 블록(300-2)에서 처리되어 인코딩된 레벨 2 스트림이 된다(즉, 그런 다음, 추가 또는 제2 잔차 세트에 인코딩 동작이 적용되어 인코딩된 추가 또는 제2 인핸스먼트 스트림을 생성함).
특히, 제2 잔차 세트가 변환된다(즉, 추가 잔차 세트에 대해 변환 동작(310-2)이 수행되어 추가 변환된 잔차 세트를 생성함). 그런 다음, 변환된 잔차는 제1 잔차 세트와 관련하여 위에서 설명된 방식으로 양자화되고 엔트로피 인코딩된다(즉, 변환된 잔차 세트에 양자화 동작(320-2)이 적용되어 양자화된 추가 잔차 세트를 생성하고; 양자화된 추가 잔차 세트에 엔트로피 인코딩 동작(320-2)이 적용되어 추가 인핸스먼트 레벨 정보를 포함하는 인코딩된 레벨 2 스트림을 생성함). 그러나, 양자화 단계(20-1)만이 수행될 수 있거나, 또는 변환 및 양자화 단계만이 수행될 수 있다. 엔트로피 인코딩이 선택적으로 추가로 사용될 수 있다. 바람직하게는, 엔트로피 인코딩 동작은 허프만 인코딩 동작 또는 런 렝스 인코딩(RLE) 동작, 또는 둘 다일 수 있다.
블록(300-1)과 유사하게, 잔차 처리 동작(350-2)은 이 블록의 인코딩 동작 이전에 잔차를 전처리, 즉 필터링하는 역할을 한다.
따라서, 도 3 및 5에 예시되고 위에서 설명된 바와 같이, 인코딩 프로세스의 출력은 기본 레벨에서의 기본 스트림, 및 바람직하게는 제1 인핸스먼트 레벨 및 추가 인핸스먼트 레벨을 포함하는 인핸스먼트 레벨에서의 하나 이상의 인핸스먼트 스트림들이다. 이전 예들과 관련하여 논의된 바와 같이, 도 5의 동작들은 블록 간 의존성이 없기 때문에 프레임의 색상 성분의 블록들 또는 코딩 단위들에 병렬로 적용될 수 있다. 색상 성분 세트 내의 각 색상 성분의 인코딩은 또한 (예를 들어, 도 5의 동작들이 (프레임의 수) * (색상 성분의 수) * (프레임당 코딩 단위의 수)에 따라 복제되도록) 병렬로 수행될 수 있다. 상이한 색상 성분들은 프레임당 상이한 수의 코딩 단위들을 가질 수 있다는 점에 또한 유의해야 한다. 예를 들어, 인간의 시각은 색상 변화보다 밝기 변화를 더 많이 감지할 수 있으므로 루마(예를 들어, Y) 성분은 채도(예를 들어, U 또는 V) 성분 세트보다 더 높은 해상도로 처리될 수 있다.
인코딩된 기본 스트림 및 하나 이상의 인핸스먼트 스트림들은 디코더(400)에서 수신된다. 도 6은 도 4의 디코더를 더욱 상세하게 도시한다.
인코딩된 기본 스트림은 인코더(300)에서 수신된 입력 신호(30)의 기본 재구성을 생성하기 위해 기본 디코더(420)에서 디코딩된다. 이러한 기본 재구성은 더 낮은 품질 레벨에서 신호(30)의 가시적 렌디션을 제공하기 위해 실제로 사용될 수 있다. 그러나, 이 기본 재구성 신호의 주요 목적은 입력 신호(30)의 고품질 렌디션을 위한 기반을 제공하는 것이다. 이를 위해, 디코딩된 기본 스트림은 처리 블록(400-1)에 제공된다. 처리 블록(400-1)은 또한 인코딩된 레벨 1 스트림을 수신하고 인코더(300)에 의해 적용된 임의의 인코딩, 양자화 및 변환을 반전시킨다. 블록(400-1)은 엔트로피 디코딩 프로세스(430-1), 역양자화 프로세스(420-1), 및 역변환 프로세스(410-1)를 포함한다. 선택적으로, 인코더에서 대응하는 블록(300-1)에서 수행되는 동작들에 따라 이들 단계들 중 하나 이상만 수행될 수 있다. 이러한 대응하는 단계들을 수행함으로써, 제1 잔차 세트를 포함하는 디코딩된 레벨 1 스트림이 디코더(400)에서 이용가능하게 된다. 제1 잔차 세트는 기본 디코더(420)로부터의 디코딩된 기본 스트림과 결합된다(즉, 디코딩된 기본 스트림과 디코딩된 제1 잔차 세트에 대한 합산 동작(410-C)이 수행되어 입력 비디오의 다운샘플링된 버전의 재구성 - 즉, 재구성된 기본 코덱 비디오를 생성함) 그런 다음, 도 4 및 6에 예시된 바와 같이, 재구성된 기본 코덱 비디오는 업샘플러(405U)에 의해 업샘플링된다.
추가로, 그리고 선택적으로 병렬로, 인코딩된 레벨 2 스트림은 디코딩된 추가 잔차 세트를 생성하기 위해 도 2의 블록(400-2)에서 처리된다. 블록(300-2)을 처리하는 것과 마찬가지로, 처리 블록(400-2)은 엔트로피 디코딩 프로세스(430-2), 역 양자화 프로세스(420-2) 및 역 변환 프로세스(410-2)를 포함한다. 물론, 이러한 동작들은 인코더(300)의 블록(300-2)에서 수행되는 동작들에 대응할 것이고, 이들 단계들 중 하나 이상은 필요에 따라 생략될 수 있다. 블록(400-2)은 추가 잔차 세트를 포함하는 디코딩된 레벨 2 스트림을 생성하고, 이들은 동작(400-C)에서 업샘플러(405U)의 출력과 합산되어 입력 신호(30)의 레벨 2 재구성을 생성한다. 레벨 2 재구성은 도 2의 250과 같은 디코딩된 출력 비디오로 볼 수 있다. 특정 예들에서, 업샘플러(405U)로 전달되는 재구성된 비디오를 획득하고 보는 것도 가능할 수 있다 - 이는 제1 인핸스먼트 레벨을 갖지만 레벨 2 재구성보다 낮은 해상도에 있을 수 있다.
따라서, 위에서 예시되고 설명된 바와 같이, 디코딩 프로세스의 출력은 (선택적) 기본 재구성 및 상위 레벨에서의 원래의 신호 재구성이다. 이 예는 서로 다른 프레임 해상도에서 인코딩 및 디코딩된 비디오를 만드는 데 특히 적합하다. 예를 들어, 입력 신호(30)는 1920 x 1080 해상도의 프레임들을 포함하는 HD 비디오 신호일 수 있다. 특정 경우에, 기본 재구성 및 레벨 2 재구성은 둘 다 디스플레이 장치에 의해 사용될 수 있다. 예를 들어, 네트워크 트래픽의 경우, 레벨 2 스트림은 레벨 1 및 기본 스트림들보다 더 많이 중단될 수 있다(다운샘플링이 각 방향의 차원성을 2만큼 감소시키는 최대 4배의 데이터 양을 포함할 수 있음). 이 경우에, 트래픽이 발생하면, 디스플레이 장치는 레벨 2 스트림이 중단되는 동안(예를 들어, 레벨 2 재구성이 사용될 수 없는 동안) 기본 재구성을 디스플레이하는 것으로 되돌아간 다음, 네트워크 상태가 개선되면 레벨 2 재구성을 디스플레이하는 것으로 돌아갈 수 있다. 디코딩 장치가 리소스 제약들을 겪을 때, 예를 들어, 시스템 업데이트를 수행하는 셋톱 박스가 기본 재구성을 출력하기 위한 동작 기본 디코더(220)를 가질 수 있지만 레벨 2 재구성을 계산하기 위한 처리 용량을 갖지 않을 수 있을 때 유사한 접근 방식이 적용될 수 있다.
인코딩 배열은 또한 비디오 배포자들이 비디오를 이기종 장치 세트에 배포할 수 있도록 하며; 기본 디코더(220)만 있는 것들은 기본 재구성을 보는 반면, 인핸스먼트 레벨을 갖는 것들은 더 높은 품질 레벨 2 재구성을 볼 수 있다. 비교 사례에서, 두 장치 세트들 모두 서비스하기 위해서는 별도의 해상도들에서의 두 개의 전체 비디오 스트림들이 필요했다. 레벨 2 및 레벨 1 인핸스먼트 스트림들이 잔차 데이터를 인코딩함에 따라, 레벨 2 및 레벨 1 인핸스먼트 스트림들이 보다 효율적으로 인코딩될 수 있다. 예를 들어, 잔차 데이터의 분포는 일반적으로 0 부근의 질량을 가지며(즉, 차이가 없는 경우), 일반적으로 0에 대한 작은 값들의 범위를 취한다. 이는 특히 양자화 이후의 경우일 수 있다. 대조적으로, 다른 해상도의 전체 비디오 스트림들은 디코더로의 전송을 위해 더 높은 비트율을 요구하는 비제로 평균 또는 중앙값을 갖는 서로 다른 분포들을 가질 것이다.
도 4 및 6의 예들에서 알 수 있는 바와 같이, 잔차 모드들은 인코더에서 적용될 수 있고 디코더는 임의의 추가 잔차 처리를 필요로 하지 않을 수 있다. 그러나, 잔차 처리가 인코더에서 적용될 때, 디코더에서 수신되는 레벨 1 및/또는 레벨 2 인핸스먼트 스트림들은 잔차 처리가 인코더에서 적용되지 않는 비교 사례와 다를 수 있다. 예를 들어, 잔차 처리가 예를 들어 본원에 설명된 임의의 예들에 따라 적용될 때, 레벨 1 및/또는 레벨 2 인핸스먼트 스트림들은 일반적으로 엔트로피 인코딩 단계들에 의해 더 효율적으로 압축될 수 있는 더 많은 수의 0 값들을 포함할 것이다.
도 7은 위에서 설명되고 예시된 인코딩 프로세스의 구현 예를 예시한다. 명확하게 식별할 수 있는 것처럼, 스트림의 인코딩 및 디코딩 단계들이 자세히 확장되었다.
일반적으로, 단계들은 잔차 필터링 모드 단계, 변환 단계, 양자화 단계 및 엔트로피 인코딩 단계를 포함한다. 인코딩 프로세스는 잔차 필터링 모드가 선택되었는지를 식별한다. 잔차 필터링 모드는 잔차 랭크의 형태를 포함할 수 있다. 가장 낮은 레벨에서, 랭크는 이진일 수 있으며, 예를 들어, 잔차들은 0 또는 1로 랭크되고, 잔차들이 0으로 랭크되면 이들은 추가 처리를 위해 선택되지 않을 수 있으며; 1로 랭크된 잔차들만 추가 처리를 위해 전달될 수 있다. 다른 경우에, 랭크는 더 많은 수의 레벨들을 기반으로 할 수 있다. 잔차 모드가 선택되면, 잔차 필터링 단계가 수행될 수 있다(예를 들어, 제1 잔차 단계에서 잔차 랭킹 동작이수행되어 랭크된 잔차 세트를 생성할 수 있음). 랭크된 잔차 세트는 모든 잔차들이 제1 인핸스먼트 스트림(또는 정정 스트림)으로 인코딩되지 않도록 필터링될 수 있다. 특정 경우에, 랭킹 및 필터링 단계들은 단일 단계로 결합될 수 있다. 즉, 일부 잔차 값들은 필터링되는 반면 다른 잔차 값들은 인코딩을 위해 전달된다.
도 7의 예에서, 잔차 값들이 하나 이상의 인핸스먼트 레벨들 내에서 인코딩하기 전에 처리되도록 잔차 모드가 적용되는 경우, 잔차 처리의 결과(예를 들어, 수정된 잔차 세트)는 인코딩된 레벨 1 또는 레벨 2 스트림들을 생성하기 위해 변환, 양자화 및 엔트로피 인코딩된다. 잔차 모드가 선택되지 않은 경우, 잔차 값들은 변환, 양자화 및 엔트로피 인코딩을 위한 잔차 처리 컴포넌트를 통해 전달될 수 있다.
위에서 언급된 바와 같이, 일반적으로 변환된 계수들보다 잔차들을 '제거'하는 것이 바람직하다. 이는 예를 들어, 랭크 또는 기타 분류화를 기반으로 잔차들을 필터링함으로써, 초기 단계에서 잔차들을 처리하여, 나중에 계산 비용이 더 많이 드는 단계들에서 계산들을 단순화하기 위해 값들을 0으로 설정할 수 있음을 의미하기 때문이다. 또한, 특정 경우에, 블록 또는 타일 레벨에서 잔차 모드가 설정될 수 있다. 이 경우에, 특정 코딩 단위에 대응하는 모든 잔차 값들에 대해 또는 특정 코딩 단위 그룹에 대해 잔차 전처리(즉, 잔차 모드)가 선택될 수 있다. 블록 간 종속성이 없으므로, 특정 잔차 값들은 전처리되는 반면 다른 잔차 값들은 전처리되지 않아도 상관 없다. 블록 또는 타일 레벨에서 잔차 모드를 선택할 수 있다는 것은 제안된 인코딩 방식의 유연성을 향상시킨다.
잔차를 수정하는 것 외에 또는 그 대신에 후속 양자화 단계의 양자화 파라미터들이 수정될 수 있다는 것이 추가로 고려된다. 특정 예에서, 잔차들이 변환되는 것을 막는 임계값에 따라, 양자화기의 데드존이 수정될 수 있다. 데드존은 값들이 양자화되지 않은 스펙트럼 영역이다. 이 데드존은 임계값으로부터의 거리에 해당하거나 (예를 들어, 스텝 폭의) 승수일 수 있다. 추가 예에서, 양자화기의 스텝 폭들은 처리에 기초하여 수정될 수 있다.
마찬가지로, 양자화 동작의 피드백 메커니즘은 잔차 처리 동작에 영향을 미칠 수 있다. 예를 들어, 변환 계수가 0으로 양자화되거나 양자화되지 않는 경우, 변환 계수를 기반으로 하는 잔차는 변환될 필요가 없고 선택 해제될 수 있다.
추가 예에서, 잔차들에 대해 양자화의 제1 단계가 수행되는 '사전 양자화' 동작이 (예를 들어, 도면들에 도시된 양자화 동작(320)에 추가하여 그리고 그 전에) 수행될 수 있다. 잔차들의 수정은 '사전 양자화'를 포함하거나 (사전) 양자화된 잔차들에 대해 추가 수정이 수행될 수 있다. 블록(320)에서 잔차들의 수정 후에 추가 양자화 동작이 수행될 수 있다. 특정 경우에, '사전 양자화'는 또한 데드존을 적용하는 것을 포함할 수 있고, 데드존은 (예를 들어, 주어진 잔차 요소 및/또는 잔차 요소 그룹에 대해 결정된 바와 같은) 양자화 스텝 폭에 기초하여 구성될 수 있다. 사전 양자화에 대한 자세한 내용은 도 11과 관련하여 아래에서 제공될 것이다.
도 7은 인코딩 파이프라인의 하나 이상의 나중 단계들에서 잔차 모드를 적용하는데 사용될 수 있는 잔차 모드 제어 블록(360-1)을 예시한다. 여기서 잔차 모드 제어는 L1 경로에서만 표시되지만 L2 경로에서도 구성될 수 있다. 잔차 모드 제어 블록(360-1)은 양자화(320-1) 블록과 엔트로피 코딩(330-1) 블록 사이에 위치된는 것이 바람직하다. 이 경우에, 잔차 값들은 잔차 모드 선택 블록(350-1)에서 분류화되고, 랭크되고/되거나 스코어가 할당될 수 있지만, 잔차 값들의 수정은 잔차 모드 선택 블록(350-1)보다 나중에 발생할 수 있다. 도면에는 도시되지 않았지만, 잔차 모드 제어 블록(360-1)은 변환 동작(310-1) 및 양자화 동작(320-1) 중 하나 이상을 제어할 수 있다. 한 경우에, 잔차 모드 선택 블록(350-1)은 (예를 들어, 위에서 설명된 바와 같은) 잔차 요소들에 대한 제어 플래그들을 설정할 수 있고, 이러한 제어 플래그들이 잔차 모드 제어 블록(360-1)에 의해 사용되어 변환 동작(310-1) 및 양자화 동작(320-1) 중 하나 이상, 또는 양자화 동작(320-1) 이후의 추가 동작을 제어할 수 있다. 한 경우에, 모든 잔차 값들은 변환 동작(310-1) 및 양자화 동작(320-1)에 의해 처리되지만 잔차 모드 제어 블록(360-1)을 통해 필터링되고, 가중되고/되거나 0으로 설정될 수 있다. 다른 경우에, 양자화 동작(320-1)은 (이진 랭크 및 우선순위를 포함하는) 잔차의 랭크 또는 우선순위에 기초하여 더 거친 레벨의 양자화를 적용하도록 구성될 수 있어서, 양자화 동작(320-1)은 보다 큰 비율의 잔차 값들을 잔차 모듈이 활성화되지 않는 경우와 비교하여 0으로 효과적으로 설정한다.
잔차 모드 제어 블록(360-1)은 또한 선택적으로 피드백의 정도를 제공하고 처리가 적절한 효과를 갖는지 또는 조정되어야 하는지를 결정하기 위해 처리의 효과 후에 잔차들을 분석한다.
도 8은 적용되는 잔차 모드의 예(800)를 도시한다. 예(800)는 등급화(즉, 분류화) 및 가중화가 적용되는 일 예에 관한 것이다. 본 예를 참조하여 설명된 개념들은 또한 부분적으로 다른 잔차 모드들에 적용될 수 있다. 이 예는 L-2 스트림에 관한 것이지만 유사한 컴포넌트 세트가 L-1 스트림에 제공될 수 있다. 이 예는 2x2 코딩 단위를 참조하여 설명되지만 다른 코딩 단위들 및/또는 픽셀 그룹화들이 사용될 수도 있다. 입력 이미지 요소 세트(801)(픽셀 값 ij로 표시됨 - 예를 들어, 이들은 YUV 또는 RGB 중 하나와 같은 특정 색상 성분을 나타내는 16비트 또는 8비트 정수일 수 있으며, 여기서 i는 이미지 행을 나타내고 j는 이미지 열을 나타냄)는 등급화 프로세스(802)를 통해 분류되어 클래스 표시 세트(803)를 (예를 들어, 5개의 클래스를 나타내는 0 내지 4의 정수 범위에서) 생성한다. 클래스는 콘트라스트 및/또는 텍스처의 레벨을 나타낼 수 있다. 다른 예들에서, "클래스"는 픽셀들 또는 잔차들의 그룹화에 대한 콘트라스트 및/또는 텍스처 메트릭과 같은 메트릭에 대한 범위를 포함할 수 있다.
그런 다음, 도 8에서, 클래스 표시(803)는 클래스 표시(803)와 연관된 가중치 세트(805)를 검색하기 위해 가중치 매핑 컴포넌트(804)에 의해 사용된다. 이 단순한 예에서, 가중치들은 0 내지 1 사이의 값 세트이다. 각 클래스는 룩-업 테이블로부터 검색될 수 있는 연관된 가중치를 가질 수 있다. 다른 경우에, 각 가중치는 클래스 또는 메트릭 값의 함수일 수 있다(예를 들어, 일 예로서 도 8의 가중치들은 클래스 값의 1/10이지만 클래스 값과 가중치 사이의 관계는 룩업 테이블에 의해 설정된 임의의 관계일 수 있음).
도 8에서 병렬로, 재구성된 업샘플링된 요소 세트(806)(요소들 u,j로 표시됨)는 감산 컴포넌트(807)에 의해 입력 이미지 요소(801)로부터 감산되어 초기 잔차 세트(808)(요소 h로 표시됨)를 생성한다. 도면에 도시되는 바와 같이, 잔차 값들의 각 코딩 단위 또는 블록은 특정 해상도에서 픽쳐 요소들 및/또는 재구성된 픽쳐 요소들의 해당 코딩 단위 또는 블록과 연관될 수 있다(레벨 1 잔차들에 대해, 유사한 프로세스가 적용될 수 있지만 픽쳐 요소들은 다운샘플링된 픽셀들에 대응할 수 있음). 그런 다음, 잔차들(808) 및 가중치 세트(805)는 잔차들(808)에 가중치 세트(805)를 곱하는 가중치 곱셈 컴포넌트(809)에 입력되어 수정된 잔차 세트(810)(r'ij로 표시됨)를 출력한다. 보이는 바와 같이, 가중치 0은 잔차들의 서브셋을 0으로 설정하도록 작용할 수 있다(812 참조). 도 8의 예에서와 같이, 원래의 잔차 값(r10)은 추가 처리로 전달되지 않고, 대신 0으로 설정된다. 비제로 가중치가 적용된 잔차들(811과 같음)은 추가 처리를 위해 전달되지만 수정되었다. 이진 가중치들이 있는 단순한 경우(예를 들어, 두 개의 클래스)에, 가중치 1은 잔차 값이 수정 없이 처리되어야 함을 나타낼 수 있다. 비제로 가중치들은 이들이 인코딩되는 방법을 수정하는 방식으로 잔차들을 수정할 수 있다. 예를 들어, 블록(802)에서의 등급화는 이미지 등급화를 포함할 수 있고, 이에 의해 잔차들은 특정 픽셀들의 이미지 등급화에 기초하여 수정된다. 다른 경우에, 블록(802)에서의 등급화는 루마 및 콘트라스트 중 하나 이상에 기초하여 특정 그룹화에 이미지 값들(801)을 할당하는 것을 포함할 수 있다. 다른 예들에서, 블록(802)에서의 등급화는 4개의 요소들의 코딩 단위에 대한 단일 클래스 및 가중치를 선택할 수 있다.
특정 경우에, 특성화는 인코더에서 멀리 떨어진 위치에서 수행되며 인코더에 전달될 수 있다. 예를 들어, 사전 녹화된 영화 또는 텔레비전 쇼는 잔차 세트 또는 잔차 그룹에 대한 가중치 세트(805)를 결정하기 위해 (예를 들어, 등급화(802) 및 가중치 매핑(804)을 적용함으로써) 한 번 처리될 수 있다. 이러한 가중치들은 네트워크를 통해 인코더로 전달될 수 있으며, 예를 들어, 이들은 아래에서 더 상세히 설명되는 바와 같이, 도 9a 내지 9c를 참조하여 설명된 잔차 마스크들을 포함할 수 있다.
한 경우에, 잔차들을 가중하는 것 대신에, 또는 잔차를 가중할 뿐만 아니라, 잔차들을 분류화 프로세스로부터 도출된 하나 이상의 임계값들과 비교할 수 있다. 예를 들어, 분류화 프로세스는 연관된 가중치 및 임계값 세트 또는 연관된 임계값 세트만을 갖는 클래스 세트를 결정할 수 있다. 이 경우에, 잔차들은 결정된 임계값들과 비교되며, 특정한 하나 이상의 임계값들 아래로 떨어지는 잔차들은 폐기되고 인코딩되지 않는다. 예를 들어, 추가적인 임계 처리가 도 8로부터의 수정된 잔차에 적용될 수 있고/있거나 가중치 매핑(804) 및 가중치 곱셈(809) 단계들이 임계 매핑 및 임계 적용 단계들로 대체될 수 있다. 일반적으로, 이 예에 대한 두 경우 모두에서, 분류화 프로세스가 대응하는 이미지 요소들에 적용될 수 있는 분류화 프로세스에 기초한 추가 처리를 위해 잔차가 수정된다.
도 8에 예시된 바와 같이, 하나의 특정 구현의 경우, 로컬 등급화 단계는 선택적일 수 있다(예를 들어, 점선으로 표시됨). 이 경우에, 클래스 표시들(803) 및 가중치들의 세트(805) 중 하나 이상은 (예를 들어, 원격 위치로부터 및/또는 저장된 파일로부터) 로컬 프로세스에 의해 획득될 수 있다.
상기에 설명된 잔차 모드 처리 방법들은 인코더에 적용될 수 있지만 디코더에는 적용되지 않을 수 있다. 따라서 이는 통신을 개선하기 위해 인코더에서 증가된 리소스들을 고려할 수 있는 비대칭 인코딩의 한 형태를 나타낸다. 예를 들어, 잔차들은 인코더와 디코더 사이에서 전송되는 데이터의 크기를 줄이기 위해 가중될 수 있어, (예를 들어, 폐기되는 잔차들은 디코더에서 감소된 검출 가능성을 갖는 경우) 제한된 비트 레이트에 대한 품질의 증가를 허용한다. 잔차 가중화는 변환 및 양자화에 복잡한 영향을 미칠 수 있다. 따라서, 잔차 가중치들은 변환 및 양자화 동작들을 제어하기 위해, 예를 들어, 특정 가용 대역폭이 주어지면 비트 스트림을 최적화하기 위해 적용될 수 있다.
특정 예들에서, 인코더(또는 인코딩 프로세스)는 하나 이상의 원격 장치들과 통신할 수 있다. 도 9a는 네트워크(910)(도면에서 클라우드로 표시됨)를 통해 통신하는 인코더(900)를 도시한다. 인코더는 이전 도면들로부터의 인코더들 중 어느 하나의 구현, 예를 들어, 도 1의 저 복잡도 인코더 또는 도 3, 5 또는 7 중 어느 하나의 인코더(300)를 포함할 수 있다. 한 경우에, 인코더(900)는 네트워크(910)를 통해 구성 데이터를 수신하고/하거나 네트워크(910)를 통해 구성 데이터를 전송할 수 있다. 도 9a의 예에서, 인코더는 인코더 파라미터들 및 잔차 마스크들 중 하나 이상을 수신한다. 인코더 파라미터들은 인코더(900)를 제어하는 하나 이상의 파라미터들에 대한 값들을 포함할 수 있다. 한 경우에, 인코더 파라미터들은 기본 인코더, 레벨 1 스트림에 대한 처리 컴포넌트들 및 레벨 2 스트림에 대한 처리 컴포넌트들 중 하나 이상에 대한 파라미터들을 포함할 수 있다. 인코더 파라미터들은 각 스트림에 대한 스트림 해상도, 양자화, 시퀀스 처리, 비트레이트 및 코덱 중 하나 이상을 구성하는 데 사용될 수 있다. 잔차 마스크들은 잔차 세트를 적용하기 위해, 예를 들어 2x2 또는 4x4 잔차 그룹화(즉, 블록들)에 적용하기 위해 예를 들어, 0 내지 1의 가중치로 구성될 수 있다. 잔차 마스크들은 도 8의 클래스 표시(803) 및 가중치 세트(805) 중 하나와 유사할 수 있다. 잔차 마스크들은 잔차당 또는 잔차 그룹당(예를 들어, 코딩 단위 또는 블록) 레벨에서 적용될 수 있다. 잔차 마스크는 비디오의 각 프레임에 대한 표면으로서 공급될 수 있다(이에 의해 서로 다른 색상 성분들에 대해 다수의 표면들이 있을 수 있음). 마스크가 그룹 레벨에서 적용되는 경우, 임의의 수신된 표면은 감소된 해상도에 있을 수 있다(예를 들어, 2x2 코딩 블록의 경우, 마스크는 잔차 가중치 값들을 포함하는 반 해상도(half-resolution)의 비디오를 포함할 수 있음). 잔차 마스크들은 디코더로의 블록들의 전달을 위한 및/또는 인코딩을 위한 우선순위를 나타낼 수 있다. 다른 경우에, 잔차 마스크들은 블록들의 처리를 제어하는 가중치를 포함할 수 있으며, 예를 들어 특정 블록들은 시각적으로 향상되거나 가중될 수 있다. 가중치는 하나 이상의 잔차 블록들에 적용된 클래스(예를 들어, 레이블 또는 숫자 값)를 기반으로 설정될 수 있다. 특정 경우에, 잔차 마스크들은 잔차 값들을 인코딩할지 여부를 나타내는 이진 마스크들(예를 들어, 이진 비트맵들)일 수 있다.
특정 경우에, 인코더는 복수의 비트레이트들에서 인코딩들을 수행하도록 적응될 수 있다. 이 경우에, 인코더 파라미터들은 복수의 비트레이트들 각각에 대해 공급될 수 있다. 특정 경우에, 네트워크로부터 수신되는 구성 데이터는 프레임 데이터당 및 블록 데이터당 글로벌 구성 데이터 중 하나 이상으로 제공될 수 있다. 예들에서, 잔차 마스크들 및 시간적 시그널링은 프레임 단위로 제공될 수 있다. 예를 들어, 복수의 비트레이트들은 통신 채널의 가용 용량, 예를 들어 측정된 대역폭 및/또는 원하는 사용, 예를 들어 10Mbps 다운링크 채널 중 2Mbps를 사용에 기초하여 설정될 수 있다.
인코더(900)로부터 통신되는 구성 데이터는 기본 코덱 유형, 요구되는 비트레이트의 세트 및 시퀀스 정보 중 하나 이상을 포함할 수 있다. 기본 코덱 유형은 현재 처리 세트에 사용되는 기본 인코더의 유형을 나타낼 수 있다. 특정 경우에, 다른 기본 인코더들이 사용될 수 있다. 한 경우에, 기본 인코더는 수신된 기본 코덱 유형 파라미터들에 기초하여 선택될 수 있고; 다른 경우에, 기본 코덱 유형은 인코더 내의 로컬 처리를 기반으로 선택되고 네트워크를 통해 통신될 수 있다. 요구되는 비트레이트 세트는 기본 스트림 및 두 개의 인핸스먼트 스트림들 중 하나 이상을 인코딩하는 데 사용되는 하나 이상의 비트레이트들을 나타낼 수 있다. 서로 다른 스트림들은 서로 다른(또는 각각의) 비트 레이트들을 사용할 수 있다. 인핸스먼트 스트림들은 사용 가능한 경우 추가 대역폭을 사용할 수 있고; 예를 들어 대역폭을 사용할 수 없는 경우, 대역폭은 인코딩된 기본 스트림 및 레벨 1 스트림에 의해 사용되어 주어진 비트레이트에서 1 품질 레벨을 제공할 수 있으며;. 그런 다음, 인코딩된 레벨 2 스트림은 추가 개선을 제공하기 위해 제2 비트 레이트를 사용할 수 있다. 이 접근 방식은 기본 스트림 및 레벨 1 스트림 대신 기본 스트림 및 레벨 2 스트림에 차등적으로 적용될 수도 있다. 본원에 설명된 잔차 처리는 인핸스먼트 스트림들 중 하나 이상의 비트 레이트를 제어하기 위해 비트 레이트 파라미터들과 함께 사용될 수 있다.
한 경우에, 네트워크를 통해 수신된 인코더 파라미터들은 인코더에 의해 적용될 잔차 모드들 중 하나 이상을 나타낼 수 있다. 다시, 잔차 모드는 프레임당, 타일당, 및/또는 블록 또는 코딩 단위 당 레벨에서 설정될 수 있다. 인코더 파라미터들은 각 스트림에 대한 모드들을 개별적으로 나타내거나 두 인핸스먼트 스트림들에 대한 공통 모드를 나타낼 수 있다. 잔차 모드 파라미터들은 본원에 설명된 잔차 모드 선택 컴포넌트들에 의해 수신될 수 있다. 특정 경우에, 잔차 모드 선택 컴포넌트들은 생략될 수 있고, 잔차 모드 파라미터들은 인코더의 다른 컴포넌트들에 의해 직접 수신될 수 있는데, 예를 들어 본원의 예들의 컴포넌트들은 인코더의 클라우드 인터페이스로부터 잔차 모드 파라미터들을 수신할 수 있다. 특정 경우에, 각 잔차 모드는 정수 값에 의해 나타낼 수 있다. 잔차 모드는 어떤 형태의 잔차 (전)처리가 적용될 것인지를 나타낼 수 있다.
한 경우에, 인코더(900)는 원격 또는 클라우드 구성과 관련된 다양한 구성 설정들을 가질 수 있다. "디폴트" 모드일 수 있는 한 모드에서, 인코더(900)는 본원에 설명된 인코딩을 수행하기 위해 초기 구성 파라미터들을 검색하기 위해 네트워크를 통해 원격 프로그램 호출을 하도록 구성될 수 있다. "커스텀" 모드일 수 있는 다른 모드에서, 인코더(900)는 특정 사용자 구성, 예를 들어 인코더(900)에 의해 사용되는 특정 툴 세트 및/또는 이러한 툴들에 대한 구성들을 나타내는 로컬 파라미터 값들을 검색할 수 있다. 한 경우에, 인코더(900)는 어떤 파라미터들이 원격 장치로부터 검색되어야 하는지 및 어떤 파라미터들이 로컬 스토리지로부터 검색되어야 하는지를 나타내는 다양한 모드들을 가질 수 있다.
도 9b는 인코더(900)가 네트워크(910)를 통해 원격 제어 서버(920)로 및/또는 이로부터 구성 데이터를 송신 및/또는 수신할 수 있음을 도시한다. 제어 서버(920)는 데이터를 수신하거나 전송하기 위한 애플리케이션 프로그래밍 인터페이스를 구현하는 서버 컴퓨팅 장치를 포함할 수 있다. 예를 들어, 제어 서버(920)는 RESTful 인터페이스를 구현할 수 있으며, 이에 의해 데이터는 (보안) 하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol; HTTP) 요청들 및 응답들에 의해 통신될 수 있다. 다른 경우에, (예를 들어, 전송 또는 애플리케이션 계층에서) 특정 통신 프로토콜을 사용하여 구현된 사이드 채널은 네트워크(910)를 통해 제어 서버(920)와 인코더(900) 사이의 통신을 위해 사용될 수 있다. 네트워크(910)는 근거리 및 광역 네트워크들을 포함하는, 하나 이상의 유선 및/또는 무선 네트워크들을 포함할 수 있다. 한 경우에, 네트워크(910)는 인터넷을 포함할 수 있다.
도 9c는 인코더(900)가 네트워크(910)를 통해 예를 들어 원격 제어 서버(920)와 통신하도록 구성된 구성 인터페이스(930)를 포함할 수 있는 방법을 도시한다. 구성 인터페이스(930)는 예를 들어 이더넷 및/또는 무선 어댑터와 같은 하드웨어 인터페이스, 및/또는 하나 이상의 통신 네트워크들을 통해 통신하기 위한 통신 스택을 제공하는 소프트웨어를 포함할 수 있다. 도 9c에서, 인코더(900)에 의해 사용 및/또는 저장되는 구성 파라미터들 및 설정들(932)은 구성 인터페이스(930)를 사용하여 네트워크를 통해 통신된다. 예를 들어 하나 이상의 메모리들 또는 레지스터들에 저장될 수 있는 인코더 구성 파라미터들은 구성 인터페이스로부터 수신된다(934). 한 경우에, 인코더 구성 파라미터들은 예를 들어 도면들에 도시된 바와 같이, 인코더 내의 다운샘플링, 기본 인코더 및 기본 디코더 컴포넌트들 중 하나 이상을 제어할 수 있다. 구성 인터페이스는 또한 L-1 제어 데이터(936) 및 L-2 제어 데이터(938) 데이터를 L-1 및 L-2 스트림 제어 컴포넌트 각각에 전달한다. 이러한 컴포넌트들은 각 인핸스먼트 스트림에서 툴 사용을 구성할 수 있다. 한 경우에, L-1 및 L-2 스트림 제어 컴포넌트들은 (예를 들어, 도면에 도시되고 본원에 설명된 바와 같은) 잔차 모드 선택, 변환, 양자화, 잔차 모드 제어 및 엔트로피 인코딩 컴포넌트들 중 하나 이상을 제어한다.
본원에 설명된 클라우드 구성을 사용하면 구현 이점들을 제공할 수 있다. 예를 들어, 인코더(900)는 예를 들어, 네트워크 제어 시스템들 및 측정들을 기반으로 원격으로 제어될 수 있다. 인코더(900)는 또한 예를 들어 하나 이상의 원격 데이터 소스들 또는 제어 서버들에 의해 제공되는 측정들 또는 전처리를 기반으로, 추가 데이터와 함께 향상 처리를 제공하는 펌웨어를 업그레이드함으로써 새로운 기능을 제공하도록 업그레이드될 수 있다. 이는 레거시 하드웨어 장치들을 업그레이드하고 제어하는 유연한 방법을 제공한다.
특정 예들에서, 잔차들은 특정 레벨의 품질 또는 해상도에서 오차 또는 차이로 간주될 수 있다. 설명된 예들에서, 두 가지 레벨의 품질 또는 해상도가 있으므로 두 잔차 세트(L-1 및 L-2)가 있다. 본원에 설명된 각 잔차 세트는 서로 다른 형태의 오차 또는 차이를 모델링한다. 예를 들어, L-1 잔차는 일반적으로 기본 인코더의 특성들, 예를 들어 인코딩 프로세스의 일부로 기본 인코더에 의해 도입되는 올바른 아티팩트들에 대해 정확하다. 대조적으로, 예를 들어, L-2 잔차들은 일반적으로 L-1 보정에 의해 도입된 차이 및 품질 레벨의 이동에 의해 도입된 복잡한 효과(예를 들어, L-1 인코딩 파이프라인에 의해, 4 또는 16픽셀의 영역과 같은, 더 넓은 공간 스케일에 걸쳐 생성되는 아티팩트들)를 정정한다. 이는 한 잔차 세트에 대해 수행된 동작들이 다른 잔차 세트에 대해 반드시 동일한 효과를 제공할 것인지가 분명하지 않으며, 예를 들어 각 잔차 세트는 서로 다른 통계적 패턴들 및 상관관계 세트를 가질 수 있음을 의미한다.
본원에 설명된 예들에서, 잔차들은 인코딩 파이프라인에 의해 인코딩된다. 이는 변환, 양자화 및 엔트로피 인코딩 동작들을 포함할 수 있다. 이는 잔차 랭킹, 가중화 및 필터링도 포함할 수 있다. 이러한 파이프라인들은 도 1 및 3a 및 3b에 도시된다. 그런 다음, 잔차들은 예를 들어 하이브리드 스트림으로서 기본 스트림과 결합될 수 있는(또는 개별적으로 전송될 수 있는) L-1 및 L-2 인핸스먼트 스트림들으로서 디코더로 전송된다. 한 경우에, 기본 스트림과 두 가지 인핸스먼트 스트림들을 모두 포함하는 하이브리드 데이터 스트림에 대해 비트 레이트가 설정된 다음, 설정된 비트 레이트를 충족하기 위해 처리 중인 데이터를 기반으로 개별 스트림들에 서로 다른 적응형 비트 레이트들이 적용된다(예를 들어 낮은 레벨의 아티팩트들로 지각되는 고품질 비디오는 프레임 단위 레벨에서도 다른 개별 스트림들에 비트 레이트를 적응적으로 할당하여 구성할 수 있으므로, 이미지 데이터가 변경됨에 따라 변경될 수 있는, 가장 지각적으로 영향력 있는 개별 스트림들에 의해 제한된 데이터가 사용될 수 있음).
본원에 설명된 잔차 세트는 희소 데이터로 볼 수 있으며, 예를 들어, 많은 경우에 주어진 픽셀이나 영역에는 차이가 없고 결과적인 잔차 값은 0이다. 잔차 분포를 살펴보면, 확률 질량의 대부분은 0에 가깝게 위치된 작은 잔차 값에 할당된다 - 예를 들어 특정 비디오의 경우, -2, -1, 0, 1, 2 등의 값들이 가장 자주 발생한다. 특정 경우에, 잔차 값들의 분포는 0에 대해 대칭이거나 거의 대칭이다. 특정 테스트 비디오의 경우에, 잔차 값들의 분포는 약 0에 대한 대수 또는 지수 분포(예를 들어, 대칭 또는 거의 대칭)와 유사한 모양을 취하는 것으로 밝혀졌다. 잔차 값들의 정확한 분포는 입력 비디오 스트림의 내용에 따라 달라질 수 있다.
잔차들은 그 자체로 2차원 이미지, 예를 들어 차이의 델타 이미지로 취급될 수 있다. 이러한 방식으로 볼 때, 데이터의 희소성은 잔차 이미지들에서 볼 수 있는 "점들", 작은 "선들", "가장자리들", "모서리들" 등과 같은 특징들을 관련시키는 것으로 볼 수 있다. 이러한 특징들은 일반적으로 (예를 들어, 공간 및/또는 시간에서) 완전히 상관되지 않는 것으로 밝혀졌다. 이들은 도출된 이미지 데이터의 특성들(예를 들어 원본 비디오 신호의 픽셀 특성들)과 다른 특성들을 가지고 있다.
잔차의 특성들은 이들이 도출된 이미지 데이터의 특성들과 다르기 때문에, 일반적으로 예를 들어 전통적인 MPEG(Moving Picture Experts Group) 인코딩 및 디코딩 표준에서 볼 수 있는 것과 같은, 표준 인코딩 접근 방식을 적용할 수 없다. 예를 들어, 많은 비교 체계들은 큰 변환(예를 들어, 정상 비디오 프레임에서 픽셀 영역들의 큰 변환)을 사용한다. 잔차들의 특성들로 인해, 예를 들어 위에서 설명된 바와 같이, 잔차 이미지들에 이러한 비교적 큰 변환들을 사용하는 것은 매우 비효율적이다. 예를 들어, 일반 이미지의 영역을 위해 설계된 큰 블록을 사용하여 잔차 이미지의 작은 점을 인코딩하는 것은 매우 어려울 것이다.
본원에 설명된 특정 예들은 대신 작고 단순한 변환 커널들(예를 들어, 2x2 또는 4x4 커널들 - 방향성 분해 및 방향성 분해 제곱 - 본원에 제시된 바와 같음)을 사용하여 이러한 문제들을 해결한다. 본원에 설명된 변환은 아다마드 행렬(예를 들어, 평탄화된 2x2 코딩 블록에 대한 4x4 행렬 또는 평탄화된 4x4 코딩 블록에 대한 16x16 행렬)을 사용하여 적용될 수 있다. 이는 비교의 비디오 인코딩 접근 방식들과 다른 방향으로 이동한다. 이러한 새로운 접근 방식들을 잔차 블록들에 적용하면 압축 효율성이 생성된다. 예를 들어, 특정 변환들은 효율적으로 압축될 수 있는 비상관 계수들(예를 들어, 공간에서)를 생성한다. 계수들 간의 상관 관계가 활용될 수 있지만, 예를 들어 잔차 이미지들의 라인들의 경우, 인코딩 복잡도를 유발할 수 있으며, 이는 레거시 및 저-리소스 장치들에서 구현하기 어렵고, 종종 정정되어야 하는 다른 복잡한 아티팩트들을 생성한다. 특정 잔차 값들을 0으로 설정하여 잔차들을 전처리하면(즉, 처리를 위해 이러한을 포워딩하지 않음) 리소스 사용은 물론 비트레이트 및 스트림 대역폭을 관리하는 제어 가능하고 유연한 방법을 제공할 수 있다. 예를 들어, 높은 계산 부하 및/또는 감소된 대역폭의 시간 동안 더 큰 잔차 서브셋을 선택 해제하기 위해 공격적 잔차 모드 설정들이 활성화될 수 있다. 잔차 전처리는 인코딩 파이프라인들 내에서 양자화 파라미터들을 제어하기 위한 보완적인 제어 경로를 제공할 수 있다.
본원에 설명된 특정 예들는 또한 잔차의 시간적 특성들뿐만 아니라 예를 들어 공간적 특성들도 고려한다. 예를 들어, 잔상 "이미지들"에서 관찰될 수 있는 "가장자리들" 및 "점들"과 같은 잔차 이미지들의 세부사항들은 시간적 상관 관계를 거의 나타내지 않는다. 이는 잔차 이미지들의 "가장자리들"이 정상 비디오 스트림에서 지각되는 가장자리처럼 변환되거나 회전하지 않는 경우가 종종 있기 때문이다. 예를 들어, 잔차 이미지들 내에서, "가장자리들"은 실제로 시간이 지남에 따라 모양이 바뀔 수 있다. 예를 들어, 머리 회전은 다수의 잔차 이미지 "가장자리들" 내에서 캡처될 수 있지만 표준 방식으로 움직이지 않을 수 있다("가장자리"는 조명, 스케일 팩터, 인코딩 팩터 등과 같은 인자들에 따라 달라지는 복잡한 차이들을 반영하기 때무임). 잔차 이미지들의 이러한 시간적 측면들, 예를 들어 순차적인 잔차 "프레임들" 또는 "픽쳐들"을 포함하는 잔차 "비디오"는 일반적으로 기존 이미지들, 예를 들어, 정상 비디오 프레임들의 시간적 측면(예를 들어 Y, U 또는 V 평면들에서의)과 다르다. 따라서, 기존의 인코딩 방식들을 잔차 이미지들에 적용하는 방법은 명확하지 않으며; 실제로, 비교의 비디오 인코딩 방식들 및 표준들로부터의 모션 보상 접근 방식들은 잔차 데이터를 (예를 들어 유용한 방식으로) 인코딩할 수 없다는 것으로 밝혀졌다. 그러나, 이러한 시간적 특성들을 잔차 랭킹 및 필터링의 기초로 사용함으로써, 디코딩된 비디오 신호의 지각에 거의 영향을 미치지 않는 잔차 정보를 폐기하는 것이 가능할 수 있다. 예를 들어, 일시적인 잔차들은 전처리 단계에 의해 정상 양자화 데드존 위에 있더라도 선택 해제될 수 있다. 하나 이상의 루마 및 콘트라스트를 기반으로 한 등급화 및/또는 스코어링은 지각 품질에 최소한의 영향을 미치면서 잔차 신호의 에너지를 줄이는 또 다른 방법(인간의 지각은 특정 루마 및 콘트라스트 패턴들이 덜 관찰될 수 있도록 편향되기 때문임)을 제공할 수도 있다. 예를 들어, 콘트라스트 차이들에 대한 민감도는 평균 콘트라스트 레벨에 따라 달라질 수 있으며, 이는 낮은 평균 콘트라스트에서 설정된 크기의 콘트라스트 차이들이 더 높은 평균 콘트라스트 레벨에서 동일한 콘트라스트 차이들보다 덜 감지할 수 있음을 효과적으로 의미한다. 이 경우에, 코딩 단위가 낮은 평균 콘트라스트를 갖는 것으로 분류되는 경우, 잔차들은 중간 평균 콘트라스트 블록들과 비교하여 덜 인지될 것이기 때문에 선택 해제(또는 더 많이 다운 가중)될 수 있다. 서로 다른 공간 주파수들(즉, 텍스처들)에 대해 유사한 효과들이 감지되며, 특정 텍스처들은 다른 것들보다 더 잘 관찰된다. 예를 들어, 작은 스케일의 높은 공간 주파수들은 해결할 수 없으므로 이와 관련된 것으로 표시되는 잔차들(예를 들어 명시적 등급화를 통해 또는 대표적인 메트릭 평가를 통해)에 더 낮은 우선순위 또는 랭크가 부여될 수 있다.
더욱이, 많은 비교의 비디오 인코딩 접근 방식들은 기존 비디오 데이터에 대한 디폴트로서 시간적 예측 및 모션 보상을 제공하려고 시도한다. 이러한 "빌트 인" 접근 방식들은 순차적 잔차 이미지들에 적용될 때 실패할 뿐만 아니라, 이들은 불필요한 처리 리소스들을 차지할 수 있다(예를 들어 이러한 리소스들이 실제로 비디오 인코딩을 손상시키는 동안 사용될 수 있음). 할당된 비트 레이트를 차지하는 불필요한 비트들을 생성할 수도 있다. 이러한 문제들을 해결하는 방법은 기존 접근 방식들에서 명확하지 않다.
본원에 설명된 원리들 중 일부를 특정 사용 사례 예에 통합하면, 인코더는 먼저 입력 비디오를 분석하여 신호의 특정 공간적 및/또는 시간적 특성들을 식별할 수 있다. 이러한 특성들로부터, 인코더는 가중된 잔차 마스크를 생성할 수 있다. 예를 들어 입력 신호가 비디오의 높은 비율이 실제로 프레임 중앙에 위치된 초상화인 뉴스 방송이라고 가정해 보자. 따라서, 비디오 신호의 배경은 일시적으로 실질적으로 변하지 않으며, 시청자가 보고 싶어하는 세부 사항은 프레임 중앙에 있는 초상화의 표정 및 디테일에 있음이 확인될 것이다. 따라서, 잔차 마스크들은 처리될 가장 중요한 잔차들이 화면의 이 영역 내에 위치됨을 강조할 것이다. 그런 다음, 인코더가 입력 비디오 인코딩하기 시작한다. 잔차들이 변환 계수들로 변환되기 전의 잔차 처리 단계에서, 각 프레임의 잔차들은 잔차 가중 마스크와 비교되며 잔차들이 가중화된다. 인코더에 의해 설정된 미리 결정된 임계값에 따르면, 잔차들 중 덜 중요한 잔차들(가중 마스크에 따라)는 선택 해제되고 변환되지 않는다. 따라서, 잔차 마스크 중 덜 중요한 잔차 마스크는 파이프라인을 통해 전파되지 않는다. 요약하면, 이 예에서, 컴퓨팅 리소스들을 줄이고 전체 데이터 크기를 줄이기 위해 이미지들 중 가장 중요한 잔차들만 처리된다.
유사한 예에서, 입력 비디오가 스포츠를 나타낸다고 가정해 보자. 이 예에서, 인코더는 입력 비디오를 분석하고 비디오의 각 프레임에 대한 잔차 마스크 세트를 준비할 수 있다. 예를 들어, 잔차 마스크들은 운동장의 배경보다 액션이 빠르게 움직이는 부분과 같이 디테일이 필요한 픽쳐들의 영역을 우선시할 수 있다. 여기서 각 프레임은 0 내지 1 사이의 값에 따라 잔차둘아 가중된 다음, 임계값에 따라 필터링 및 선택 해제되는 특정 잔차 가중 마스크와 비교될 수 있다.
이제 인코더가 입력 비디오를 분석하는 대신, 중앙 서버가 입력 비디오의 유형에 따라 잔차 가중 마스크를 제안한다고 가정해 보자. 중앙 서버는 예를 들어 스포츠, 영화, 뉴스 등을 다루는 잔차 가중 마스크 세트를 제공할 수 있다. 인코더가 잔차를 처리함에 따라, 인코더는 처리 중인 입력 신호의 유형에 따라 잔차 가중 마스크 세트를 사용할 수 있다.
마지막 예에서, 중앙 서버는 입력 신호의 중앙 집중식 분석을 기반으로 비교의 잔차 가중 마스크 세트를 제공할 수 있으므로, 인코더가 더 단순해질 수 있고 분석이 계산적으로 강력하고 능력이 있는 중앙 서버에서 수행되며 인코더가 능률화될 수 있다. 즉, 인코더는 '덤(dumb)'일 수 있으며, 계산 집약적 분석을 수행한 중앙 서버가 제안한 마스크에 따라 잔차들 각각을 처리할 때 제공된 잔차 마스크 세트를 활용할 수 있다.
완성도를 위해, 도 10은 흐름도의 형태로 본원에 설명된 개념의 광범위한 원리를 예시한다. 방법(1000)은, 입력 신호를 수신하는 단계(단계 1001); 하나 이상의 잔차 세트들을 생성하는 단계(단계 1002); 하나 이상의 잔차 세트를 수정하는 단계(단계 1003); 및 하나 이상의 잔차 세트들을 인코딩하는 단계(단계 1004)를 포함한다. 신호는 비디오 신호를 포함할 수 있으며, 단계(1001)에서의 입력 신호는 비디오의 프레임을 포함할 수 있으며, 여기서 방법은 복수의 프레임들에 대해 반복된다. 방법은 본원에 설명된 인코더들 중 어느 하나의 처리를 수행하도록 구성될 수 있다. 방법은 기본 인코딩된 스트림, 제1 레벨(L-1) 인코딩된 스트림 및 제2 레벨(L-2) 인코딩된 스트림 중 하나 이상을 전송하는 단계를 더 포함할 수 있다.
대응하는 디코딩 방법들이 또한 제공될 수 있다. 예를 들어, 복수의 인코딩된 스트림들을 재구성된 출력 비디오로 디코딩하는 방법은, 제1 기본 인코딩된 스트림을 수신하는 단계; 제1 코덱에 따라 제1 기본 인코딩된 스트림을 디코딩하여 제1 출력 비디오를 생성하는 단계; 하나 이상의 추가 인코딩된 스트림들을 수신하는 단계; 하나 이상의 추가 디코딩된 스트림들을 디코딩하여 잔차 세트를 생성하는 단계; 및 잔차 세트와 제1 비디오를 결합하여 디코딩된 비디오를 생성하는 단계를 포함한다. 설명된 대로 추가 적응이 이루어질 수 있다.
도 10의 방법(1000)에서, 하나 이상의 잔차 세트들을 수정하는 단계는, 잔차 세트의 사전 분석에 기초하여 잔차 세트를 랭크시키는 정하는 단계; 및 전송 및 인코딩될 잔차 서브셋을 선택하는 단계를 포함할 수 있다. 일 예에서, 방법(1000)은 잔차 세트를 분석하고, 분석에 기초하여 다음 단계들을 수행하거나 수행하지 않는 것을 포함한다: 잔차 세트를 랭크시키는 단계; 및 변환 및 인코딩될 잔차 서브셋을 선택하는 단계. 일 예에서, 방법(1000)은 랭크시키는 단계 및/또는 선택하는 단계가 분석에 기초하여 차등적으로 수행되도록, 잔차 세트를 분석하고, 잔차 세트를 랭크시키고, 변환 및 인코딩될 잔차 서브셋을 선택하는 단계를 포함한다. 이러한 예들에서, 인코딩 단계(1004)의 일부로서 변환을 적용하는 단계는 선택된 잔차 서브셋에 대해 수행된다. 이들 단계들은 본원에 설명된 바와 같이 레벨 1 및 레벨 2 잔차 세트들 중 하나 이상에 대해 수행될 수 있다.
특정 경우에, 방법(1000)의 단계(1003)은, 잔차 가중치 세트를 수신하는 단계; 및 잔차 세트에 잔차 가중치 세트를 적용하여 수정된 잔차들을 생성하는 단계를 포함한다. 예를 들어, 이는 도 8의 예에 따라 또는 이 예의 변형으로서 적용될 수 있다. 한 경우에, 이 예는 임계값 세트를 사용하여 수정된 잔차들을 임계값으로 지정하도록 적응될 수 있다. 특정 예들에서, 잔차 가중치 세트 및 임계값 세트 중 하나 이상이 입력 비디오의 등급화에 기초하여 결정된다. 특정 예들에서, 잔차 가중치 세트는 원격 위치로부터 수신되는 잔차 마스크를 포함한다. 특정 예들에서, 잔차 가중치 세트 및 임계값 세트 중 하나 이상이 잔차 그룹들에 적용된다. 잔차 마스크는 기본 경우의 이진 마스크일 수 있으며, 이에 의해 잔차들은 "처리될" 또는 "폐기될" 것으로 랭크될 수 있다.
잔차 세트를 수정하여 파이프라인의 효율성을 개선하기 위해 사전 양자화 단계가 포함될 수 있는 방법이 위에서 설명되었다. 요약하면, 프로세스가 잔차 세트에 대응하는 지각 메트릭 세트를 결정하고; 지각 메트릭 세트에 기초하여 잔차 세트를 선택적으로 사전 양자화하고; 하나 이상의 각각의 인코딩된 스트림들을 생성하기 위해 하나 이상의 수정된 잔차 세트들을 변환 및 양자화할 수 있다고 설명되었다.
도 11은 이러한 사전 양자화가 구현될 수 있는 방법의 도면을 예시한다. 도 11에서, 지각 메트릭의 값들을 나타내는 축(1110)이 도시되어 있다. 프로세스는 하나 이상의 잔차들에 대한 지각 메트릭을 축(1110)으로 표시된 범위 세트와 비교한다. 한 경우의 지각 메트릭은 2x2 또는 4x4 코딩 단위당, 또는 16x16 타일에 대해 결정될 수 있다. 지각 메트릭은 적어도 루마(예를 들어, Y) 픽쳐 요소들에 기초하여 결정될 수 있다. 지각 메트릭은 (예를 들어, 픽쳐 요소들 및 잔차들이 이미지 행렬의 동일한 공간 인덱스에 관련된 경우) 주어진 잔차 세트에 대응하는 픽쳐 요소들에 대해 결정될 수 있다. 지각 메트릭은 위에서 설명된 바와 같이 텍스처 및 콘트라스트 중 하나 이상에 기초할 수 있다. 개념적으로, 특정 잔차에 대응하는 지각 메트릭이 시각화된 축(1110)을 따라 놓여 있는 곳은 해당 잔차에 대해 어떤 조치가 취해져야 하는지를 나타낸다. 도 11의 축(1110)은 높은 지각 메트릭이 음수이고(예를 들어, 잔차를 필터링하는 데 사용됨) 낮은 지각 메트릭이 높은 우선순위(예를 들어 처리를 위해 잔차들을 전달하는 데 사용됨)를 나타내지만 물론 이것은 반전될 수 있음을 의미한다. 시각적으로 표시된 것은 중요한 잔차들이 축 왼쪽에 해당 지각 메트릭이 있고 덜 중요한 잔차들이 축 오른쪽에 해당 지각 메트릭이 있다는 것이다.
제1 범위(1118)에 속하는 지각 메트릭에 응답하여, 하나 이상의 잔차들이 인코딩되지 않는다. 즉, 제1 범위(1112)의 메트릭들을 갖는 잔차들은 '제거'되거나, 또는 대안으로 0 값으로 설정 또는 양자화된다. 개념적으로, 마커(1124) 이후의 모든 잔차들은 '없어진다'.
제2 범위(1116)에 속하는 지각 메트릭에 응답하여, 하나 이상의 잔차들이 사전 양자화 데드존과 비교되며, 여기서 하나 이상의 잔차들은 이들이 데드존 내에 있으면 인코딩되지 않는다. 데드존은 잔차에 대한 양자화 스텝 폭의 함수(예를 들어, 스텝 폭의 5배)일 수 있다. 스텝 폭은 잔차 위치(예를 들어, 잔차 또는 잔차 그룹)에 따라 변하는 동적 파라미터 또는 모든 잔차들에 대한 정적 파라미터일 수 있다. 시작 마커(1122)와 모든 마커(1124) 사이에 메트릭이 있는 모든 잔차가 정의된 데드존 내에 있는 경우 제거될 수 있으며, 여기서 시작 마커(1122)는 데드존을 사용하여 잔차들이 '제거'되기 시작하는 위치를 나타내고 모든 마커(1124)는 모든 잔차들이 '제거'되는 위치(예를 들어 해당 값에 관계없이)를 나타낸다. 임계값이라는 용어는 본원에서 마커라는 용어와 상호 교환적으로 사용될 수 있지만, 우리는 도 11의 축과 더 밀접하고 시각적으로 대응하기 위해 마커라는 용어를 사용한다.
마커 또는 임계값(1120)과 시작 마커(1122) 사이의 제3 범위(1114)에 속하는 지각 메트릭에 응답하여, 하나 이상의 잔차들이 사전 양자화 스텝 폭으로 사전 양자화된다. 이러한 잔차들 중 어느 것도 제거 않지만 나중에 인코딩에서 정상 양자화 동작들과 다른 파라미터 세트로 사전 양자화된다. 예를 들어, 사전 양자화 스텝 폭은 추구 양자화에 사용되는 스텝 폭의 배수(예를 들어 일반 스텝 폭의 두 배)일 수 있다.
제4 범위(1112)에 속하는 지각 메트릭에 응답하여, 하나 이상의 잔차들이 수정 없이 인코딩을 위해 전달된다. 따라서 우선순위가 높은 잔차들(즉, 좋은 지각 메트릭)은 수정되지 않는다.
도 12는 지각 메트릭이 이들이 대응하는 잔차 세트에 따라 계산되고 수정될 수 있는 방법 및 해당 액션에 대한 범위들이 계산되거나 식별될 수 있는 방법을 흐름도(1200)에서 개념적으로 예시한다. 이 프로세스는 인접 잔차 그룹, 즉 잔차 세트의 인접 서브셋을 고려한다. 이는 위에서 설명된 바와 같은 코딩 단위 또는 타일일 수 있다. 그룹과 연관된 픽쳐 요소들의 콘트라스트, 텍스처 또는 루마 중 하나 이상에 기초하여 블록(1208)에서 초기 지각 메트릭이 먼저 식별된다. 지각 메트릭은 위에서 설명된 것과 유사한 방식으로 결정될 수 있으며, 또한 위에서 설명된 바와 같이(예를 들어, 도 8을 참조하여) 하나 이상의 픽쳐 요소들 및 잔차들에 기초할 수 있다. 이러한 용어들은 이 문서의 다른 곳에서도 사용되었으며 다른 곳에서 설명된 것과 유사한 방식으로,다른 특성들이 지각 메트릭을 계산하는 데 동일하게 사용될 수 있다. 특정 경우에, 초기 지각 메트릭이 계산된 다음, 추후 비교를 위해 미리 정의된 범위 내에서 정규화될 수 있다.
방법의 나머지 블록들은 도 11에 예시된 것과 유사한 임계값 세트와 비교를 수행한다. 블록(1224)에서, 잔차의 그룹화를 위한 (추후) 양자화 동작으로부터의 스텝 폭(SW)이 검색되고 제1 임계값을 결정하는 데 사용된다. 범위들 및 임계값들은 도 11과 관련하여 위에 설명되어 있다. 블록(1224)은 도 11의 임계값(1120)에 대한 값을 결정할 수 있다. 생성된 지각 메트릭이 제1임계값보다 작은 경우(결정(220)에서 "예"), 모든 잔차들이 유지된다. 즉, 메트릭이 범위(1112)에 있다. 메트릭이 제1 임계값보다 작지 않은 경우(결정(1220)에서 "아니오"), 블록(1228)에서 추가 임계값 세트가 생성된다. 이들은 도 11의 임계값들(1122 및 1124) 또는 다른 임계값 세트를 포함할 수 있다. 이러한 임계값들은 잔차들을 필터링할 때 평활 임계값의 한 형태로 볼 수 있다. 블록(1230)에서, 지각 메트릭은 결정 블록(1230)에서 제2 임계값(예를 들어, 임계값(1122))과 비교된다. 지각 메트릭이 다음 범위(1114)에 있는 경우, 블록(1232)에서 잔차들이 결정된 스텝 폭으로 사전 양자화된다. 메트릭이 추가 범위에 있는 경우, 결정 블록(1234)에서 메트릭이 추가 제3 임계값과 비교된다. 제3 임계값은 임계값(1124)을 포함할 수 있으며, 이 비교에 기초하여, 그룹화의 모든 잔차들이 블록(1236)에서 제거되거나, 그룹 또는 잔차 세트의 일부가 데드존을 적용함으로써, 즉 위에서 설명된 바와 같은 데드존 확장에 의해 제거된다.
예를 들어 스트리밍 서버 또는 클라이언트 장치 또는 데이터 저장소로부터 디코딩하는 클라이언트 장치에서 구현된, 인코더 및 디코더 모두에서, 본원에 설명된 방법들 및 프로세스들은 코드(예를 들어, 소프트웨어 코드) 및/또는 데이터로서 구현될 수 있다. 인코더 및 디코더는 데이터 압축 분야에서 잘 알려진 바와 같이 하드웨어 또는 소프트웨어로 구현될 수 있다. 예를 들어, 특별히 프로그래밍된 그래픽 처리 장치(GPU) 또는 특별히 설계된 필들 프로그램 가능 게이트 어레이(FPGA)를 사용하는 하드웨어 가속은 특정 효율성을 제공할 수 있다. 완성도를 위해, 이러한 코드 및 데이터는 하나 이상의 컴퓨터 판독 가능 매체에 저장될 수 있으며, 이는 컴퓨터 시스템에서 사용하기 위한 코드 및/또는 데이터를 저장할 수 있는 임의의 장치 또는 매체를 포함할 수 있다. 컴퓨터 시스템이 컴퓨터 판독 가능 매체에 저장된 코드 및/또는 데이터를 판독하고 실행할 때, 컴퓨터 시스템은 컴퓨터 판독 가능 저장 매체에 저장된 데이터 구조 및 코드로 구현된 방법들 및 프로세스들을 수행한다. 특정 실시예들에서, 본원에 설명된 방법들 및 프로세스들의 단계들 중 하나 이상은 프로세서(예를 들어 컴퓨터 시스템 또는 데이터 저장 시스템의 프로세서)에 의해 수행될 수 있다.
일반적으로, 이 텍스트에 설명되거나 도면들에 예시된 기능 중 어느 하나는 소프트웨어, 펌웨어(예를 들어, 고정 논리 회로부), 프로그램 가능 또는 프로그램 불가능 하드웨어, 또는 이러한 구현들의 조합을 사용하여 구현될 수 있다. 본원에서 사용된 "컴포넌트" 또는 "기능"이라는 용어들은 일반적으로 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합을 나타낸다. 예를 들어, 소프트웨어 구현의 경우에, "컴포넌트" 또는 "기능"이라는 용어들은 처리 장치 또는 장치들에서 실행될 때 지정된 태스크들을 수행하는 프로그램 코드를 지칭할 수 있다. 컴포넌트들 및 기능들을 별개의 단위들로 분리하는 예시는 이러한 소프트웨어 및/또는 하드웨어 및 태스크들의 임의의 실제 또는 개념적 물리적 그룹화 및 할당을 반영할 수 있다.

Claims (33)

  1. 입력 신호를 인코딩하는 방법에 있어서, 상기 방법은,
    입력 신호를 수신하는 단계;
    상기 입력 신호와 하나 이상의 각각의 해상도들에서 하나 이상의 재구성된 신호들 사이의 차이에 기초하여 하나 이상의 잔차 세트들을 생성하는 단계;
    선택된 잔차 모드에 기초하여 상기 하나 이상의 잔차 세트들을 수정하는 단계; 및
    상기 하나 이상의 수정된 잔차 세트들을 인코딩하여 하나 이상의 각각의 인코딩된 스트림들을 생성하는 단계를 포함하며,
    상기 인코딩하는 단계는 상기 하나 이상의 수정된 잔차 세트를 변환하는 단계를 포함하고,
    상기 수정하는 단계는 상기 선택된 잔차 모드에 기초하여 인코딩되지 않을 잔차 세트를 선택하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서, 상기 입력 신호는 제1 해상도에 있으며, 상기 벙법은,
    상기 입력 신호를 다운샘플링하여 제2 해상도에서 다운샘플링된 신호를 생성하는 단계;
    기본 인코더로부터 기본 인코딩된 신호를 수신하는 단계로서, 상기 기본 인코딩된 신호는 상기 기본 인코더를 사용하여 상기 다운샘플링된 신호를 인코딩하여 생성되는, 상기 수신하는 단계;
    상기 기본 인코딩된 신호로부터 신호를 재구성하여 상기 하나 이상의 재구성된 신호들 내의 제1 재구성된 신호를 생성하는 단계; 및
    상기 제1 재구성된 신호를 상기 입력 신호와 비교하여 상기 하나 이상의 잔차 세트들 내의 제1 잔차 세트를 생성하는 단계를 더 포함하는, 방법.
  3. 청구항 2에 있어서, 상기 제1 재구성된 신호를 상기 입력 신호와 비교하여 상기 하나 이상의 잔차 세트들 중 제1 세트를 생성하는 단계는,
    상기 기본 인코딩된 신호를 디코딩하여 기본 디코딩된 신호를 생성하는 단계; 및
    상기 기본 디코딩된 신호와 상기 다운샘플링된 버전의 상기 입력 신호 사이의 차이를 사용하여 상기 제1 잔차 세트를 생성하는 단계를 포함하며,
    상기 방법은,
    상기 제1 잔차 세트를 사용하여 상기 기본 디코딩된 신호를 정정하여 정정된 디코디된 버전을 생성하고;
    상기 정정된 디코딩된 버전을 업샘플링하고;
    상기 정정된 디코딩된 신호와 상기 입력 신호 사이의 차이를 사용하여 제2 잔차 세트를 생성함으로써 상기 하나 이상의 잔차 세트들 내의 상기 제2 잔차 세트를 생성하는 단계를 더 포함하며,
    상기 수정하는 단계는 상기 제1 및 제2 잔차 세트들을 중 하나 이상에 대해 개별적으로 수행되는, 방법.
  4. 청구항 1에 있어서, 제1 잔차 세트는 상기 제1 공간 해상도에 있고, 제2 잔차 세트는 제2 공간 해상도에 있으며, 상기 제1 공간 해상도는 상기 제2 공간 해상도보다 낮은, 방법.
  5. 청구항 1 내지 4 중 어느 한 항에 있어서, 상기 수정하는 단계는, 상기 하나 이상의 잔차 세트들 내에서 잔차들을 랭크시키는 단계; 및
    상기 랭킹에 기초하여 상기 잔차들을 필터링하는 단계를 포함하는, 방법.
  6. 청구항 1 내지 5 중 어느 한 항에 있어서, 상기 수정하는 단계는,
    각 잔차 또는 잔차 그룹과 연관된 스코어를 결정하는 단계를 포함하며,
    상기 스코어는 각 잔차 또는 잔차 그룹의 상대적 중요도를 나타내고,
    상기 인코딩되지 않을 잔차 서브셋을 선택하는 단계는 각 잔차 또는 잔차 그룹과 연관된 상기 스코어에 기초하는, 방법.
  7. 청구항 5에 있어서, 상기 스코어는 상기 입력 신호의 하나 이상의 공간적 및/또는 시간적 특성들에 기초하는, 방법.
  8. 청구항 5 또는 6에 있어서, 상기 스코어는 상기 입력 신호의 콘트라스트의 레벨 또는 텍스처의 레벨 또는 둘 다에 기초하는, 방법.
  9. 청구항 1 내지 8 중 어느 한 항에 있어서,
    상기 하나 이상의 잔차 세트들을 양자화하는 단계를 포함하는, 방법.
  10. 청구항 9에 있어서, 상기 하나 이상의 잔차 세트들을 양자화하는 단계는 가변 크기의 데드존을 적용하는 단계를 포함하는, 방법.
  11. 청구항 10에 있어서, 상기 데드존은 양자화 스텝 폭의 함수로 결정되는, 방법.
  12. 청구항 9 내지 11 중 어느 한 항에 있어서, 상기 하나 이상의 잔차 세트들을 양자화하는 단계는,
    제1 단계에서 상기 하나 이상의 잔차 세트들을 양자화하여 상기 수정을 달성하는 단계; 및
    제2 단계에서 상기 하나 이상의 잔차 세트들을 양자화하여 상기 인코딩을 달성하는 단계를 포함하는, 방법.
  13. 청구항 12에 있어서, 청구항 6 내지 8 중 어느 한 항에 따른 경우, 상기 제1 단계에서 상기 양자화하는 단계는 상기 스코어에 기초하여 선택적인, 방법.
  14. 청구항 5 내지 8항 중 어느 한 항에 있어서, 상기 수정하는 단계는,
    상기 스코어를 범위 세트와 비교하는 단계를 포함하며,
    제1 범위에 속하는 상기 스코어에 응답하여, 상기 잔차 또는 잔차 그룹은 인코딩되지 않으며;
    제2 범위에 속하는 상기 스코어에 응답하여, 상기 잔차 또는 잔차 그룹은 양자화 데드존과 비교되며, 상기 잔차 또는 잔차 그룹은 이들이 상기 데드존에 속할 경우 인코딩되지 않으며;
    제3 범위에 속하는 상기 스코어 응답하여, 상기 잔차 또는 잔차 그룹은 제1 양자화 스텝 폭으로 사전 양자화되며;
    제4 범위에 속하는 상기 스코어에 응답하여, 상기 잔차 또는 잔차 그룹은 수정 없이 인코딩을 위해 전달되는, 방법.
  15. 청구항 1 내지 14 중 어느 한 항에 있어서, 상기 하나 이상의 잔차 세트들을 수정하는 단계는,
    잔차들 또는 잔차 그룹들에 대한 분류를 획득하는 단계; 및
    상기 분류에 기초하여 상기 수정하는 단계를 적용하는 단계를 포함하는, 방법.
  16. 청구항 15에 있어서, 분류를 획득하는 단계는,
    상기 입력 신호 또는 상기 하나 이상의 잔차 세트들의 하나 이상의 공간적 및/또는 시간적 특성들에 기초하여 잔차들 또는 잔차 그룹들을 분류하는 단계를 포함하는, 방법.
  17. 청구항 16에 있어서, 상기 하나 이상의 공간적 및/또는 시간적 특성들은,
    하나 이상의 신호 요소들 또는 신호 요소 그룹들 간 공간적 활동;
    하나 이상의 신호 요소들 또는 신호 요소 그룹들 간 콘트라스트의 레벨;
    하나 이상의 공간 방향들의 변화의 척도;
    하나 이상의 신호 요소들 또는 신호 요소 그룹들 간 시간적 활동;
    하나 이상의 시간 방향들의 변화의 척도;
    하나 이상의 잔차들 간 공간적 활동;
    하나 이상의 잔차들 간 시간적 활동; 및
    상기 하나 이상의 잔차 세트들 중 서로 다른 세트들 간 차이 또는 상기 하나 이상의 잔차 세트들 중 서로 다른 세트들 간 하나 이상의 공간적 및/또는 시간적 특성들의 차이를 포함하는 그룹으로부터 선택된 하나 이상을 포함하는, 방법.
  18. 청구항 1 내지 17 중 어느 한 항에 있어서, 상기 수정하는 단계는,
    잔차들이 상기 인코딩에서 인코딩되어야 하는지 여부를 나타내는 제어 플래그들을 설정하는 단계를 포함하며,
    상기 인코딩하는 단계는 상기 제어 플래그들에 기초하여 선택적으로 수행되는, 방법.
  19. 청구항 1 내지 18 중 어느 한 항에 있어서, 상기 수정하는 단계는,
    잔차 가중치 세트를 수신하는 단계로서, 상기 잔차 가중치들은 제로 값들을 포함하는, 상기 수신하는 단계; 및
    상기 하나 이상의 잔차 세트들 중 한 세트 내의 잔차들에 상기 잔차 가중치 세트를 적용하여 가중화된 잔차 세트를 생성하는 단계를 포함하는, 방법.
  20. 청구항 19에 있어서, 상기 잔차 가중치 세트를 적용하는 단계 이후에, 임계값 세트를 사용하여 상기 가중화된 잔차 세트를 임계화하는 단계를 포함하는, 방법.
  21. 청구항 20에 있어서, 상기 잔차 가중치 세트 및 상기 임계값 세트 중 하나 이상은 상기 입력 신호의 등급화에 기초하여 결정되는, 방법.
  22. 청구항 19 내지 21 중 어느 한 항에 있어서, 상기 잔차 가중치 세트는 잔차 마스크를 포함하는, 방법.
  23. 청구항 22에 있어서, 상기 잔차 마스크는 원격 위치로부터 수신되는, 방법.
  24. 청구항 22 또는 23에 있어서, 상기 잔차 마스크는 인코딩하기 전에 상기 입력 신호의 전처리에 기초하여 사전 생성되는, 방법.
  25. 청구항 19 내지 24 중 어느 한 항에 있어서, 상기 수정하는 단계는 잔차들의 코딩 단위들에 대해 수행되는, 방법.
  26. 입력 신호를 인코딩하는 방법에 있어서, 상기 방법은,
    입력 신호를 수신하는 단계;
    상기 입력 신호와 재구성된 신호 사이의 차이에 기초하여 잔차 세트를 생성하는 단계;
    상기 잔차 세트에 대응하는 지각 메트릭 세트를 결정하는 단계;
    상기 지각 메트릭 세트에 기초하여 상기 잔차 세트를 선택적으로 사전 양자화하는 단계; 및
    상기 하나 이상의 수정된 잔차 세트들을 변환 및 양자화하여 하나 이상의 각각의 인코딩된 스트림들을 생성하는 단계를 포함하는, 방법.
  27. 청구항 26에 있어서, 지각 메트릭 세트를 결정하는 단계는,
    잔차 그룹 세트의 각 주어진 잔차 그룹에 대해,
    지각 메트릭이 상기 주어진 잔차 그룹을 위해 사용되어야 하는지 여부를 결정하는 단계;
    상기 지각 메트릭이 사용되어야 한다는 결정에 응답하여, 상기 주어진 잔차 그룹에 대한 적어도 하나의 지각 메트릭을 획득하는 단계를 포함하는, 방법.
  28. 청구항 26 또는 27에 있어서,
    하나 이상의 잔차들에 대한 지각 메트릭과 범위 세트를 비교하는 단계를 포함하며,
    제1 범위에 속하는 상기 지각 메트릭에 응답하여, 상기 하나 이상의 잔차들이 인코딩되지 않으며;
    제2 범위에 속하는 상기 지각 메트릭에 응답하여, 상기 하나 이상의 잔차들은 사전 양자화 데드존과 비교되며, 상기 하나 이상의 잔차들은 이들이 상기 데드존 내에 있는 경우 인코딩되지 않으며;
    제3 범위에 속하는 상기 지각 메트릭에 응답하여, 상기 하나 이상의 잔차들은 사전 양자화 스텝 폭으로 사전 양자화되며;
    제4 범위에 속하는 상기 지각 메트릭에 응답하여, 상기 하나 이상의 잔차들은 수정 없이 인코딩을 위해 전달되는, 방법.
  29. 청구항 1 내지 28 중 어느 한 항의 방법을 수행하도록 구성된 인코더.
  30. 비일시적 컴퓨터 판독 가능 저장 매체로서, 프로세서에 의해 실행 시, 상기 프로세서가 청구항 1 내지 28 중 어느 한 항의 방법들을 수행하도록 하는 인스트럭션들을 저장하는, 비일시적 컴퓨터 판독 가능 저장 매체.
  31. 입력 비디오를 인코딩하는 인코더에 있어서,
    제1 잔차 세트를 수신 및 인코딩하여 제1 인핸스먼트 스트림을 생성하는 제1 인코더;
    제2 잔차 세트를 수신 및 인코딩하여 제2 인핸스먼트 스트림을 생성하는 제2 인코더를 포함하며,
    상기 제1 잔차 세트는 상기 입력 비디오의 제1 버전과 상기 입력 비디오의 제1 재구성된 버전의 비교에 기초하며, 상기 제1 재구성된 버전은 기본 인코더로부터 도출되고, 상기 기본 인코더는 상기 제1 및 제2 인코더들과 다르며,
    상기 제2 잔차 세트는 상기 입력 비디오의 제2 버전과 상기 입력 비디오의 제2 재구성된 버전의 비교에 기초하고, 상기 제2 재구성된 버전은 상기 제1 재구성된 버전으로부터 도출되며,
    상기 제1 및 제2 인코더들 중 하나 이상은 상기 제1 및 제2 잔차 세트 중 각각의 세트 내의 비제로 값들의 서브셋이 각각의 제1 및 제2 인핸스먼트 레벨 스트림들에 존재하지 않도록 인코딩하기 전에 잔차들을 선택적으로 전처리하도록 구성되는, 인코더.
  32. 청구항 31에 있어서, 상기 제1 및 제2 인코더들은 각 비디오 프레임에 대한 코딩 단위 세트를 각각 독립적으로 처리하는, 인코더.
  33. 입력 비디오를 인코딩하는 인코더에 있어서,
    제1 잔차 세트를 수신 및 인코딩하여 제1 인핸스먼트 스트림을 생성하는 제1 인코더;
    제2 잔차 세트를 수신 및 인코딩하여 제2 인핸스먼트 스트림을 생성하는 제2 인코더;
    구성 데이터를 수신하는 구성 인터페이스를 포함하며,
    상기 제1 잔차 세트는 상기 입력 비디오의 제1 버전과 상기 입력 비디오의 제1 재구성된 버전의 비교에 기초하며, 상기 제1 재구성된 버전은 기본 인코더로부터 도출되고, 상기 기본 인코더는 상기 제1 및 제2 인코더들과 다르며,
    상기 제2 잔차 세트는 상기 입력 비디오의 제2 버전과 상기 입력 비디오의 제2 재구성된 버전의 비교에 기초하고, 상기 제2 재구성된 버전은 상기 제1 재구성된 버전으로부터 도출되며,
    상기 구성 데이터는 상기 제1 및 제2 인코더들 중 하나 이상에 대한 잔차 마스크들을 포함하며,
    비제로 값들의 서브셋이 상기 제1 및 제2 인코더들 중 각각의 인코더는 각각의 제1 및 제2 인핸스먼트 레벨 스트림들에 존지하지 않도록 인코딩하기 전에 상기 제1 및 제2 잔차 세트 중 각각의 세트에 상기 잔차 마스크들을 선택적으로 적용하도록 구성되는, 인코더.
KR1020217033578A 2019-03-20 2019-12-13 비디오 코딩 시 잔차 처리 방법 KR20220004972A (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
GBGB1903844.7A GB201903844D0 (en) 2019-03-20 2019-03-20 A method of encoding and decoding a video
GB1903844.7 2019-03-20
GB1904014.6 2019-03-23
GBGB1904014.6A GB201904014D0 (en) 2019-03-23 2019-03-23 Video coding technology
GB1904492.4 2019-03-29
GBGB1904492.4A GB201904492D0 (en) 2019-03-29 2019-03-29 Video coding technology
GB1905325.5 2019-04-15
GBGB1905325.5A GB201905325D0 (en) 2019-04-15 2019-04-15 Video coding technology
GB1909701.3 2019-07-05
GBGB1909701.3A GB201909701D0 (en) 2019-07-05 2019-07-05 Video coding technology
PCT/GB2019/053547 WO2020188229A1 (en) 2019-03-20 2019-12-13 Processing of residuals in video coding

Publications (1)

Publication Number Publication Date
KR20220004972A true KR20220004972A (ko) 2022-01-12

Family

ID=68965928

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217033584A KR20210153060A (ko) 2019-03-20 2019-12-13 비디오 인코더의 레이트 제어
KR1020217033578A KR20220004972A (ko) 2019-03-20 2019-12-13 비디오 코딩 시 잔차 처리 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020217033584A KR20210153060A (ko) 2019-03-20 2019-12-13 비디오 인코더의 레이트 제어

Country Status (11)

Country Link
US (2) US20220191509A1 (ko)
EP (2) EP3942815A1 (ko)
JP (2) JP2022529580A (ko)
KR (2) KR20210153060A (ko)
CN (2) CN113994688A (ko)
AU (2) AU2019435415A1 (ko)
BR (2) BR112021018466A2 (ko)
CA (2) CA3133774A1 (ko)
GB (2) GB2597860B (ko)
MX (2) MX2021011339A (ko)
WO (2) WO2020188230A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024010362A1 (ko) * 2022-07-06 2024-01-11 주식회사 케이티 영상 부호화/복호화 방법 및 비트스트림을 저장하는 기록 매체

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201905400D0 (en) * 2019-04-16 2019-05-29 V Nova Int Ltd Video coding technology
GB2599341A (en) 2020-07-28 2022-04-06 V Nova Int Ltd Management system for multilayer encoders and decoders and method thereof
GB202103498D0 (en) 2021-03-12 2021-04-28 V Nova Int Ltd Processing of residuals in video coding
GB2611131B (en) 2022-03-31 2023-11-22 V Nova Int Ltd Pre-analysis for video encoding
GB2611129B (en) 2022-03-31 2024-03-27 V Nova Int Ltd Signal processing with overlay regions
GB2619096A (en) 2022-05-27 2023-11-29 V Nova Int Ltd Enhancement interlacing
GB2620994A (en) 2022-08-22 2024-01-31 V Nova Int Ltd Encoding and decoding of pre-processing renditions of input videos
GB2623148A (en) * 2023-06-07 2024-04-10 V Nova Int Ltd Constant rate factor video encoding control

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5734677A (en) * 1995-03-15 1998-03-31 The Chinese University Of Hong Kong Method for compression of loss-tolerant video image data from multiple sources
EP1442602A1 (en) * 2001-10-26 2004-08-04 Koninklijke Philips Electronics N.V. Spatial scalable compression scheme using adaptive content filtering
EP1695555A1 (en) * 2003-12-08 2006-08-30 Koninklijke Philips Electronics N.V. Spatial scalable compression scheme with a dead zone
US20090141809A1 (en) * 2007-12-04 2009-06-04 Sony Corporation And Sony Electronics Inc. Extension to the AVC standard to support the encoding and storage of high resolution digital still pictures in parallel with video
EP2249569A1 (en) * 2009-05-08 2010-11-10 Imec Cross-layer optimization for transmission of video codec over wireless networks
WO2011084918A1 (en) * 2010-01-06 2011-07-14 Dolby Laboratories Licensing Corporation High performance rate control for multi-layered video coding applications
WO2011125211A1 (ja) * 2010-04-08 2011-10-13 株式会社 東芝 画像符号化方法及び画像復号化方法
CN104620583A (zh) * 2012-05-14 2015-05-13 卢卡·罗萨托 基于支持信息的残差数据的编码和重构
KR102001415B1 (ko) * 2012-06-01 2019-07-18 삼성전자주식회사 다계층 비디오 코딩을 위한 레이트 제어 방법, 이를 이용한 비디오 인코딩 장치 및 비디오 신호 처리 시스템
PL2941872T3 (pl) * 2013-01-02 2019-03-29 Dolby Laboratories Licensing Corporation Kompatybilne wstecznie kodowanie dla sygnałów wideo o ultra wysokiej rozdzielczości z rozszerzonym zakresem dynamicznym
PL2987325T3 (pl) 2013-04-15 2019-04-30 V Nova Int Ltd Kodowanie i dekodowanie wstecznie kompatybilnego sygnału hybrydowego
EP2816805B1 (en) * 2013-05-29 2020-12-30 BlackBerry Limited Lossy data compression with conditional reconstruction reinfinement
US9591316B2 (en) * 2014-03-27 2017-03-07 Intel IP Corporation Scalable video encoding rate adaptation based on perceived quality
US9628803B2 (en) * 2014-11-25 2017-04-18 Blackberry Limited Perceptual image and video coding
GB2544800A (en) * 2015-11-27 2017-05-31 V-Nova Ltd Adaptive bit rate ratio control
GB2547934B (en) * 2016-03-03 2021-07-07 V Nova Int Ltd Adaptive video quality
GB2553557B (en) * 2016-09-08 2022-04-20 V Nova Int Ltd Data processing apparatuses, methods, computer programs and computer-readable media
GB2553556B (en) 2016-09-08 2022-06-29 V Nova Int Ltd Data processing apparatuses, methods, computer programs and computer-readable media

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024010362A1 (ko) * 2022-07-06 2024-01-11 주식회사 케이티 영상 부호화/복호화 방법 및 비트스트림을 저장하는 기록 매체

Also Published As

Publication number Publication date
EP3942809A1 (en) 2022-01-26
BR112021018450A8 (pt) 2022-06-21
AU2019435415A1 (en) 2021-10-14
CN113994688A (zh) 2022-01-28
WO2020188229A1 (en) 2020-09-24
GB202114969D0 (en) 2021-12-01
CA3133777A1 (en) 2020-09-24
BR112021018450A2 (ko) 2021-11-23
AU2019435947A1 (en) 2021-10-14
GB2599508A (en) 2022-04-06
BR112021018466A2 (pt) 2021-11-23
US20220191509A1 (en) 2022-06-16
MX2021011338A (es) 2021-12-10
KR20210153060A (ko) 2021-12-16
GB2597860B (en) 2023-07-26
MX2021011339A (es) 2021-12-10
GB2599508B (en) 2024-01-10
US20220191521A1 (en) 2022-06-16
JP2022529580A (ja) 2022-06-23
GB2597860A (en) 2022-02-09
WO2020188230A1 (en) 2020-09-24
GB202114840D0 (en) 2021-12-01
CA3133774A1 (en) 2020-09-24
CN113785580A (zh) 2021-12-10
EP3942815A1 (en) 2022-01-26
JP2022526498A (ja) 2022-05-25

Similar Documents

Publication Publication Date Title
KR20220004972A (ko) 비디오 코딩 시 잔차 처리 방법
US11610341B2 (en) Apparatus and method for performing artificial intelligence (AI) encoding and AI decoding on image
US11200702B2 (en) AI encoding apparatus and operation method of the same, and AI decoding apparatus and operation method of the same
WO2020188273A1 (en) Low complexity enhancement video coding
US20220385911A1 (en) Use of embedded signalling for backward-compatible scaling improvements and super-resolution signalling
US20220217345A1 (en) Quantization of residuals in video coding
US20220182654A1 (en) Exchanging information in hierarchical video coding
US20220272342A1 (en) Quantization of residuals in video coding
WO2023187308A1 (en) Pre-analysis for video encoding
WO2022189806A1 (en) Processing of residuals in video coding
US20220329802A1 (en) Quantization of residuals in video coding
KR20230136121A (ko) 인공 신경망을 사용한 프로그래시브 데이터 압축
EA045392B1 (ru) Обработка остатков при кодировании видео
US11272185B2 (en) Hierarchical measurement of spatial activity for text/edge detection
WO2023111574A1 (en) Digital image processing
GB2623003A (en) Quantization of residuals in video coding