KR102668253B1 - 비트레이트 감소를 위한 비디오 스트림 적응형 필터링 - Google Patents

비트레이트 감소를 위한 비디오 스트림 적응형 필터링 Download PDF

Info

Publication number
KR102668253B1
KR102668253B1 KR1020217019333A KR20217019333A KR102668253B1 KR 102668253 B1 KR102668253 B1 KR 102668253B1 KR 1020217019333 A KR1020217019333 A KR 1020217019333A KR 20217019333 A KR20217019333 A KR 20217019333A KR 102668253 B1 KR102668253 B1 KR 102668253B1
Authority
KR
South Korea
Prior art keywords
candidate
video stream
bitstream
input video
copy
Prior art date
Application number
KR1020217019333A
Other languages
English (en)
Other versions
KR20210089778A (ko
Inventor
모하마드 이자디
바리니두 아드수밀리
Original Assignee
구글 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20210089778A publication Critical patent/KR20210089778A/ko
Application granted granted Critical
Publication of KR102668253B1 publication Critical patent/KR102668253B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/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/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/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/19Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding using optimisation based on Lagrange multipliers
    • 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/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • H04N19/194Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive involving only two passes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression

Landscapes

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

Abstract

적응형 필터링이 비트레이트 감소를 위해 비디오 스트림에 사용된다. 입력 비디오 스트림의 제1 사본이 기준 비트스트림으로 인코딩된다. 다수의 후보 필터들 각각이 입력 비디오 스트림의 제2 사본의 각각의 프레임에 적용되어 입력 비디오 스트림의 필터링된 제2 사본을 생성한다. 필터링된 제2 사본은 후보 비트스트림으로 인코딩된다. 후보 비트스트림과 기준 비트스트림 사이의 왜곡 값 및 비트레이트 차이들에 기초하여 후보 필터에 대한 비용 값이 결정된다. 비용 값들 중 최저 비용 값을 갖는 후보 필터에 대응하는 후보 비트스트림이 출력 비트스트림으로서 선택되고, 이는 그 후 출력되거나 저장된다. 적응형 필터를 사용하여 인코딩 전에 입력 비디오 스트림을 프로세싱하면 결과적으로 비트레이트가 감소하여, 압축, 압축 해제 및 다른 성능을 향상시킬 수 있다.

Description

비트레이트 감소를 위한 비디오 스트림 적응형 필터링
관련 출원(들)에 대한 상호 참조
본 개시내용은 2018년 12월 24일에 출원된 미국 가출원 번호 제62/784,626호의 이익을 주장하며, 그 개시내용은 전체적으로 본 명세서에 참조로 포함된다.
디지털 비디오 스트림들은 프레임들 또는 정지 이미지들의 시퀀스를 사용하여 비디오를 나타낼 수 있다. 디지털 비디오는, 예를 들어, 화상 회의, 고화질 비디오 엔터테인먼트, 비디오 광고들 또는 사용자-생성 비디오들의 공유를 포함한 다양한 애플리케이션들에 사용될 수 있다. 디지털 비디오 스트림은 많은 양의 데이터를 포함할 수 있으며, 비디오 데이터의 프로세싱, 송신 또는 저장을 위해 컴퓨팅 디바이스의 상당한 양의 컴퓨팅 또는 통신 자원들을 소비할 수 있다. 인코딩 또는 디코딩 기술들을 포함하여 비디오 스트림들의 데이터 양을 감소시키기 위한 다양한 접근법들이 제안되었다.
본 개시내용의 구현에 따라 입력 비디오 스트림을 출력 비트스트림으로 인코딩하기 위한 방법은 입력 비디오 스트림의 제1 사본을 기준 비트스트림으로 인코딩하는 단계를 포함한다. 방법은 기준 비트스트림에 대한 제1 왜곡 값 및 제1 비트레이트를 결정하기 위해 입력 비디오 스트림과 기준 비트스트림을 비교하는 단계를 추가로 포함한다. 방법은, 다수의 후보 필터들의 각각의 후보 필터에 대해, 입력 비디오 스트림의 제2 사본의 각각의 프레임에 후보 필터를 적용하여 입력 비디오 스트림의 필터링된 제2 사본을 생성하는 단계; 입력 비디오 스트림의 필터링된 제2 사본을 후보 비트스트림으로 인코딩하는 단계; 후보 비트스트림에 대한 제2 왜곡 값 및 제2 비트레이트를 결정하기 위해 입력 비디오 스트림과 후보 비트스트림을 비교하는 단계; 및 제1 왜곡 값과 제2 왜곡 값 사이의 차이에 기초하고 제1 비트레이트와 제2 비트레이트 사이의 차이에 기초하여 후보 필터에 대한 비용 값을 결정하는 단계를 추가로 포함한다. 방법은, 출력 비트스트림으로서, 비용 값들 중 최저 비용 값을 갖는 후보 필터에 대응하는 후보 비트스트림을 선택하는 단계를 추가로 포함한다. 방법은 출력 비트스트림을 출력하거나 저장하는 단계를 추가로 포함한다.
방법의 일부 구현들에서, 후보 필터들은 유전 알고리즘(genetic algorithm), 경사 하강법 알고리즘(gradient descent algorithm) 또는 다른 비-선형 최적화 기술 중 적어도 하나를 사용하여 획득된다.
본 방법의 일부 구현들에서, 입력 비디오 스트림의 제2 사본의 주어진 프레임에 주어진 후보 필터를 적용하여 입력 비디오 스트림의 필터링된 제2 사본을 생성하는 단계는 주어진 프레임 내의 값들을 공간 도메인으로부터 주파수 도메인으로 변환하는 단계; 변환 후, 주어진 프레임의 각각의 블록에 주어진 후보 필터를 적용하여 필터링된 주파수 도메인 값들을 생성하는 단계; 및 필터링된 주파수 도메인 값들을 주파수 도메인으로부터 공간 도메인으로 역변환하는 단계를 포함한다.
방법의 일부 구현들에서, 프레임의 각각의 블록에 주어진 후보 필터를 적용하여 필터링된 주파수 도메인 값들을 생성하는 단계는 주어진 후보 필터를 사용하여 프레임의 중첩되는 블록 영역들을 디노이징하는(denoising) 단계를 포함한다.
방법의 일부 구현들에서, 중첩되는 블록 영역들은 반-중첩되는 블록 영역들이다.
방법의 일부 구현들에서, 다수의 후보 필터들 중 주어진 후보 필터에 대해 비용 값을 결정하는 단계는 제1 왜곡 값과 제2 왜곡 값 사이의 차이에 가중치를 적용함으로써 가중된 값을 계산하는 단계; 및 제1 비트레이트와 제2 비트레이트 사이의 차이로부터 가중된 값을 감산함으로써 비용 값을 결정하는 단계를 포함한다.
방법의 일부 구현들에서, 가중치는 제2 왜곡 값의 타겟에 기초하여 정의된다.
본 개시내용의 구현에 따라 입력 비디오 스트림을 출력 비트스트림으로 인코딩하기 위한 장치는 메모리 및 메모리에 저장되는 명령어들을 실행하도록 구성되는 프로세서를 포함한다. 명령어들은 입력 비디오 스트림의 제1 사본을 기준 비트스트림으로 인코딩하기 위한 명령어들을 포함한다. 명령어들은 기준 비트스트림에 대한 제1 왜곡 값 및 제1 비트레이트를 결정하기 위해 입력 비디오 스트림과 기준 비트스트림을 비교하기 위한 명령어들을 추가로 포함한다. 명령어들은, 다수의 후보 필터들의 각각의 후보 필터에 대해, 입력 비디오 스트림의 제2 사본의 각각의 프레임에 후보 필터를 적용하여 입력 비디오 스트림의 필터링된 제2 사본을 생성하기 위한 명령어들; 입력 비디오 스트림의 필터링된 제2 사본을 후보 비트스트림으로 인코딩하기 위한 명령어들; 후보 비트스트림에 대한 제2 왜곡 값 및 제2 비트레이트를 결정하기 위해 입력 비디오 스트림과 후보 비트스트림을 비교하기 위한 명령어들; 및 제1 왜곡 값과 제2 왜곡 값 사이의 차이에 기초하고 제1 비트레이트와 제2 비트레이트 사이의 차이에 기초하여 후보 필터에 대한 비용 값을 결정하기 위한 명령어들을 추가로 포함한다. 명령어들은, 출력 비트스트림으로서, 비용 값들 중 최저 비용 값을 갖는 후보 필터에 대응하는 후보 비트스트림을 선택하기 위한 명령어들을 추가로 포함한다. 명령어들은 출력 비트스트림을 출력하거나 저장하기 위한 명령어들을 추가로 포함한다.
장치의 일부 구현들에서, 후보 필터들은 유전 알고리즘, 경사 하강법 알고리즘 또는 다른 비-선형 최적화 기술 중 적어도 하나를 사용하여 획득된다.
장치의 일부 구현들에서, 입력 비디오 스트림의 제2 사본의 주어진 프레임에 주어진 후보 필터를 적용하여 입력 비디오 스트림의 필터링된 제2 사본을 생성하기 위한 명령어들은 주어진 프레임 내의 값들을 공간 도메인으로부터 주파수 도메인으로 변환하기 위한 명령어들; 변환 후, 주어진 프레임의 각각의 블록에 주어진 후보 필터를 적용하여 필터링된 주파수 도메인 값들을 생성하기 위한 명령어들; 및 필터링된 주파수 도메인 값들을 주파수 도메인으로부터 공간 도메인으로 역변환하기 위한 명령어들을 포함한다.
장치의 일부 구현들에서, 프레임의 각각의 블록에 주어진 후보 필터를 적용하여 필터링된 주파수 도메인 값들을 생성하기 위한 명령어들은 주어진 후보 필터를 사용하여 프레임의 중첩되는 블록 영역들을 디노이징하기 위한 명령어들을 포함한다.
장치의 일부 구현들에서, 중첩되는 블록 영역들은 반-중첩되는 블록 영역들이다.
장치의 일부 구현들에서, 다수의 후보 필터들 중 주어진 후보 필터에 대해 비용 값을 결정하기 위한 명령어들은 제1 왜곡 값과 제2 왜곡 값 사이의 차이에 가중치를 적용함으로써 가중된 값을 계산하기 위한 명령어들; 및 제1 비트레이트와 제2 비트레이트 사이의 차이로부터 가중된 값을 감산함으로써 비용 값을 결정하기 위한 명령어들을 포함한다.
장치의 일부 구현들에서, 가중치는 제2 왜곡 값의 타겟에 기초하여 정의된다.
본 개시내용의 구현에 따라 입력 비디오 스트림을 출력 비트스트림으로 인코딩하기 위한 인코더는 입력 비디오 스트림의 제1 사본을 기준 비트스트림으로 인코딩하는 동작을 포함하는 동작들을 수행한다. 동작들은 기준 비트스트림에 대한 제1 왜곡 값 및 제1 비트레이트를 결정하기 위해 입력 비디오 스트림과 기준 비트스트림을 비교하는 동작을 추가로 포함한다. 동작들은, 다수의 후보 필터들의 각각의 후보 필터에 대해, 입력 비디오 스트림의 제2 사본의 각각의 프레임에 후보 필터를 적용하여 입력 비디오 스트림의 필터링된 제2 사본을 생성하는 동작; 입력 비디오 스트림의 필터링된 제2 사본을 후보 비트스트림으로 인코딩하는 동작; 후보 비트스트림에 대한 제2 왜곡 값 및 제2 비트레이트를 결정하기 위해 입력 비디오 스트림과 후보 비트스트림을 비교하는 동작; 및 제1 왜곡 값과 제2 왜곡 값 사이의 차이에 기초하고 제1 비트레이트와 제2 비트레이트 사이의 차이에 기초하여 후보 필터에 대한 비용 값을 결정하는 동작을 추가로 포함한다. 동작들은, 출력 비트스트림으로서, 비용 값들 중 최저 비용 값을 갖는 후보 필터에 대응하는 후보 비트스트림을 선택하는 동작을 추가로 포함한다. 동작들은 출력 비트스트림을 출력하거나 저장하는 동작을 추가로 포함한다.
인코더의 일부 구현들에서, 후보 필터들은 유전 알고리즘, 경사 하강법 알고리즘 또는 다른 비-선형 최적화 기술 중 적어도 하나를 사용하여 획득된다.
인코더의 일부 구현들에서, 입력 비디오 스트림의 제2 사본의 주어진 프레임에 주어진 후보 필터를 적용하여 입력 비디오 스트림의 필터링된 제2 사본을 생성하는 동작들은 주어진 프레임 내의 값들을 공간 도메인으로부터 주파수 도메인으로 변환하는 동작; 변환 후, 주어진 프레임의 각각의 블록에 주어진 후보 필터를 적용하여 필터링된 주파수 도메인 값들을 생성하는 동작; 및 필터링된 주파수 도메인 값들을 주파수 도메인으로부터 공간 도메인으로 역변환하는 동작을 포함한다.
인코더의 일부 구현들에서, 프레임의 각각의 블록에 주어진 후보 필터를 적용하여 필터링된 주파수 도메인 값들을 생성하는 동작은 주어진 후보 필터를 사용하여 프레임의 중첩되는 블록 영역들을 디노이징하는 동작을 포함한다.
인코더의 일부 구현들에서, 중첩되는 블록 영역들은 반-중첩되는 블록 영역들이다.
인코더의 일부 구현들에서, 다수의 후보 필터들 중 주어진 후보 필터에 대해 비용 값을 결정하는 동작은 제1 왜곡 값과 제2 왜곡 값 사이의 차이에 가중치를 적용함으로써 가중된 값을 계산하는 동작; 및 제1 비트레이트와 제2 비트레이트 사이의 차이로부터 가중된 값을 감산함으로써 비용 값을 결정하는 동작을 포함한다.
인코더의 일부 구현들에서, 가중치는 제2 왜곡 값의 타겟에 기초하여 정의된다.
본 개시내용의 이들 및 다른 양태들은 구현들, 첨부된 청구 범위 및 첨부 도면들에 대한 다음의 상세한 설명에서 개시된다.
본 명세서의 설명은 아래에서 설명된 첨부 도면들을 참조하며, 여기서 유사한 참조 번호들은 여러 도면들에 걸쳐 유사한 부분들을 지칭한다.
도 1은 비디오 인코딩 및 디코딩 시스템의 예의 개략도이다.
도 2는 송신국 또는 수신국을 구현할 수 있는 컴퓨팅 디바이스의 예의 블록도이다.
도 3은 인코딩되고 후속적으로 디코딩될 비디오 스트림의 예의 다이어그램이다.
도 4는 본 개시내용의 구현들에 따른 인코더의 예의 블록도이다.
도 5는 본 개시내용의 구현들에 따른 디코더의 예의 블록도이다.
도 6은 비트레이트 감소를 위한 적응형 필터링을 사용하는 비디오 스트림 프로세싱 파이프라인의 예의 블록도이다.
도 7은 적응형 필터링을 사용하여 출력 비트스트림을 선택하기 위해 수행되는 동작들의 예의 블록도이다.
도 8a 및 도 8b는 적응형 필터링을 사용하여 비디오 스트림을 출력 비트스트림으로 인코딩하기 위한 기술의 예의 흐름도이다.
도 9는 후보 필터들에 대해 결정된 비용 값들에 기초하여 출력 비트스트림을 선택하기 위한 기술의 예의 흐름도이다.
비디오 압축 방식들은 각각의 이미지들 또는 프레임들을 블록들과 같은 더 작은 부분들로 분할하고, 출력에서 각각의 블록들에 포함된 정보를 제한하는 기술들을 사용하여 압축된 비트스트림을 생성하는 것을 포함할 수 있다. 압축된 비트스트림은 제한된 정보로부터 소스 이미지들을 재생성하기 위해 디코딩될 수 있다. 통상적인 비디오 압축 기술들은 비디오 호스팅 및 서빙 플랫폼들에 대한 송신 비용들을 감소시키는 등을 위해 비디오 스트림의 비트레이트를 감소시키는 것을 포함한다.
그러나, 비디오 스트림의 비트레이트를 감소시키는 것은 종종 품질 손실을 초래하여, 나중에 압축 해제된 비디오 스트림이 압축 기술을 사용하여 프로세싱된 원래 비디오 스트림보다 낮은 품질을 갖게 된다. 예를 들어, 비디오 스트림의 압축 동안 원치않는 블로킹(blocking) 아티팩트들이 도입될 수 있다. 일부 경우들에서, 해당 블로킹 아티팩트들은 비디오 스트림이 압축 해제된 후에도 이에 남아있을 수 있다.
일부 경우들에서, 비디오 스트림이 비디오 압축 방식을 사용하여 압축되기 전에 이에 대해 전처리가 수행될 수 있다. 전처리를 수행하면 고정된 비트레이트의 비디오 스트림들에 대한 비디오 품질을 향상시키거나 또는 고정된 품질의 비디오 스트림들에 대한 비트레이트를 최소화시킬 수 있게 된다. 예를 들어, 전처리는 비디오 스트림을 출력 비트스트림으로 인코딩하기 전에 비디오 스트림 내에서 노이즈를 제거하고 아티팩트들(예를 들어, 블로킹, 밴딩, 링잉, 일시적 플리커 등)을 감소시키기 위해 비디오 스트림에 필터를 적용하는 것을 포함할 수 있다. 그러나, 이러한 필터-기반 접근법들은 비디오 스트림의 선택된 비트레이트 및/또는 선택된 품질에 의존하는 고정 필터들을 사용하였다. 따라서, 비디오 스트림 전처리에 사용되는 통상적인 고정 필터는 비트레이트를 최소화시키거나 품질을 최대화시킬 수 없다.
또한, 이러한 고정 필터에 의해 사용되는 파라미터들은 비디오 스트림의 프레임들 내의 이미지 블록들의 콘텐츠에 의존한다. 따라서, 통상적인 고정 필터는 이미지 블록들의 동종 영역들로부터 아티팩트들을 제거하는 것보다 비디오 에지 텍스처들로부터 아티팩트들을 제거하는 데 종종 더 유용하다. 그러나, 고정 필터 파라미터들을 추정하기 위한 종래의 접근법들은 종종 비디오 스트림의 프레임들 내에서 원치 않는 왜곡을 야기하고, 복잡하고 비선형적인 방식으로 압축 프로세스에 영향을 미칠 수도 있다.
본 개시내용의 구현들은 비트레이트 감소를 위한 적응형 필터링을 사용하여 비디오 스트림을 전처리함으로써 이와 같은 문제를 해결한다. 입력 비디오 스트림의 제1 사본이 기준 비트스트림으로 인코딩된다. 다수의 후보 필터들 각각이 입력 비디오 스트림의 제2 사본의 각각의 프레임에 적용되어 입력 비디오 스트림의 필터링된 제2 사본을 생성한다. 필터링된 제2 사본은 후보 비트스트림으로 인코딩된다. 후보 비트스트림과 기준 비트스트림 사이의 왜곡 값 및 비트레이트 차이들에 기초하여 후보 필터에 대한 비용 값이 결정된다. 비용 값들 중 최저 비용 값을 갖는 후보 필터에 대응하는 후보 비트스트림이 출력 비트스트림으로서 선택된 후, 출력되거나 저장된다. 적응형 필터를 사용하여 인코딩 전에 입력 비디오 스트림을 프로세싱하면 비트레이트가 감소되어, 압축, 압축 해제 및 다른 성능을 향상시킬 수 있다.
비트레이트 감소를 위한 비디오 스트림 적응형 필터링을 위한 기술들의 추가 세부 사항들이 우선 이들이 구현될 수 있는 시스템을 참조하여 본 명세서에서 설명된다. 도 1은 비디오 인코딩 및 디코딩 시스템(100)의 예의 개략도이다. 송신국(102)은, 예를 들어, 도 2에 설명된 것과 같은 하드웨어의 내부 구성을 갖는 컴퓨터일 수 있다. 그러나, 송신국(102)의 다른 구현들도 가능하다. 예를 들어, 송신국(102)의 프로세싱은 다수의 디바이스들 사이에 분산될 수 있다.
네트워크(104)가 비디오 스트림의 인코딩 및 디코딩을 위해 송신국(102)과 수신국(106)을 연결할 수 있다. 구체적으로, 비디오 스트림은 송신국(102)에서 인코딩될 수 있고, 인코딩된 비디오 스트림은 수신국(106)에서 디코딩될 수 있다. 네트워크(104)는, 예를 들어, 인터넷일 수 있다. 네트워크(104)는 또한 근거리 통신망(local area network)(LAN), 광역 통신망(wide area network)(WAN), 가상 사설망(virtual private network)(VPN), 셀룰러 전화 네트워크, 또는 송신국(102)으로부터 이 예에서는 수신국(106)으로 비디오 스트림을 전송하는 임의의 다른 수단일 수도 있다.
일례에서, 수신국(106)은 도 2에 설명된 것과 같은 하드웨어의 내부 구성을 갖는 컴퓨터일 수 있다. 그러나, 수신국(106)의 다른 적절한 구현들도 가능하다. 예를 들어, 수신국(106)의 프로세싱은 다수의 디바이스들 사이에 분산될 수 있다.
비디오 인코딩 및 디코딩 시스템(100)의 다른 구현들도 가능하다. 예를 들어, 구현은 네트워크(104)를 생략할 수 있다. 다른 구현에서, 비디오 스트림은 인코딩된 다음, 수신국(106) 또는 메모리를 갖는 임의의 다른 디바이스로 나중에 송신하기 위해 저장될 수 있다. 일 구현에서, 수신국(106)은 (예를 들어, 네트워크(104), 컴퓨터 버스 및/또는 일부 통신 경로를 통해) 인코딩된 비디오 스트림을 수신하고, 나중에 디코딩하기 위해 비디오 스트림을 저장한다. 예시적인 구현에서는, 네트워크(104)를 통해 인코딩된 비디오를 송신하기 위해 실시간 전송 프로토콜(real-time transport protocol)(RTP)이 사용된다. 다른 구현에서는, RTP 이외의 전송 프로토콜이 사용될 수 있다(예를 들어, 하이퍼텍스트 전송 프로토콜-기반(Hypertext Transfer Protocol-based)(HTTP-기반) 비디오 스트리밍 프로토콜).
예를 들어, 송신국(102) 및/또는 수신국(106)은 화상 회의 시스템에서 사용될 때, 아래에서 설명되는 바와 같이 비디오 스트림을 인코딩 및 디코딩하는 능력을 포함할 수 있다. 예를 들어, 수신국(106)은 화상 회의 서버(예를 들어, 송신국(102))로부터 인코딩된 비디오 비트스트림을 수신하여 디코딩 및 시청하고, 자신의 비디오 비트스트림을 다른 참가자들에 의한 디코딩 및 시청을 위해 추가로 인코딩하고 화상 회의 서버로 송신하는 화상 회의 참가자일 수 있다.
일부 구현들에서, 비디오 인코딩 및 디코딩 시스템(100)은 비디오 데이터 이외의 데이터를 인코딩 및 디코딩하는 데 대신 사용될 수 있다. 예를 들어, 비디오 인코딩 및 디코딩 시스템(100)은 이미지 데이터를 프로세싱하는 데 사용될 수 있다. 이미지 데이터는 이미지로부터의 데이터 블록을 포함할 수 있다. 이러한 구현에서, 송신국(102)은 이미지 데이터를 인코딩하는 데 사용될 수 있고, 수신국(106)은 이미지 데이터를 디코딩하는 데 사용될 수 있다.
대안적으로, 수신국(106)은 송신국(102)으로부터 인코딩되거나 사전-인코딩된 이미지 데이터를 수신한 후와 같이 나중에 사용하기 위해 인코딩된 이미지 데이터를 저장하는 컴퓨팅 디바이스를 나타낼 수 있다. 추가 대안으로서, 송신국(102)은, 예를 들어, 디코딩된 이미지 데이터를 디스플레이를 위해 수신국(106)으로 송신하기 전에 이미지 데이터를 디코딩하는 컴퓨팅 디바이스를 나타낼 수 있다.
도 2는 송신국 또는 수신국을 구현할 수 있는 컴퓨팅 디바이스(200)의 예의 블록도이다. 예를 들어, 컴퓨팅 디바이스(200)는 도 1의 송신국(102) 및 수신국(106) 중 하나 또는 둘 다를 구현할 수 있다. 컴퓨팅 디바이스(200)는 다수의 컴퓨팅 디바이스들을 포함하는 컴퓨팅 시스템의 형태일 수도 있고, 또는 하나의 컴퓨팅 디바이스, 예를 들어, 모바일폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 노트북 컴퓨터, 데스크톱 컴퓨터 등의 형태일 수도 있다.
컴퓨팅 디바이스(200)의 프로세서(202)는 종래의 중앙 프로세싱 유닛일 수 있다. 대안적으로, 프로세서(202)는 현재 존재하거나 향후 개발될 정보를 조작하거나 프로세싱할 수 있는 다른 타입의 디바이스 또는 다수의 디바이스들일 수 있다. 예를 들어, 개시된 구현들은 도시된 바와 같이 하나의 프로세서(예를 들어, 프로세서(202))로 실행될 수 있지만, 속도 및 효율성의 이점들은 둘 이상의 프로세서를 사용함으로써 달성될 수 있다.
컴퓨팅 디바이스(200)의 메모리(204)는 구현에서 판독 전용 메모리(read only memory)(ROM) 디바이스 또는 랜덤 액세스 메모리(random access memory)(RAM) 디바이스일 수 있다. 그러나, 다른 적절한 타입들의 저장 디바이스가 메모리(204)로서 사용될 수 있다. 메모리(204)는 버스(212)를 사용하여 프로세서(202)에 의해 액세스되는 코드 및 데이터(206)를 포함할 수 있다. 메모리(204)는 운영 체제(208) 및 애플리케이션 프로그램들(210)을 추가로 포함할 수 있으며, 애플리케이션 프로그램들(210)은 프로세서(202)가 본 명세서에서 설명된 기술들을 수행하도록 허용하는 적어도 하나의 프로그램을 포함한다. 예를 들어, 애플리케이션 프로그램들(210)은 본 명세서에서 설명된 기술들을 수행하는 비디오 및/또는 이미지 코딩 애플리케이션을 추가로 포함하는 애플리케이션 1 내지 N을 포함할 수 있다.
컴퓨팅 디바이스(200)는 또한, 예를 들어, 모바일 컴퓨팅 디바이스와 함께 사용되는 메모리 카드일 수 있는 보조 스토리지(214)를 포함할 수 있다. 비디오 통신 세션들은 상당한 양의 정보를 포함할 수 있기 때문에, 이들은 전체적으로 또는 부분적으로 보조 스토리지(214)에 저장될 수 있고, 프로세싱을 위해 필요에 따라 메모리(204)에 로드될 수 있다.
컴퓨팅 디바이스(200)는 또한 디스플레이(218)와 같은 하나 이상의 출력 디바이스를 포함할 수 있다. 디스플레이(218)는, 일례에서, 터치 입력들을 감지하도록 동작 가능한 터치 감지형 엘리먼트와 디스플레이를 결합하는 터치 감지형 디스플레이일 수 있다. 디스플레이(218)는 버스(212)를 통해 프로세서(202)에 커플링될 수 있다. 사용자가 컴퓨팅 디바이스(200)를 프로그래밍하거나 다른 방식으로 사용하도록 허용하는 다른 출력 디바이스들도 디스플레이(218)에 추가하여 또는 이에 대한 대안으로서 제공될 수 있다. 출력 디바이스가 디스플레이이거나 이를 포함할 때, 디스플레이는 액정 디스플레이(liquid crystal display)(LCD), 음극선 관(cathode-ray tube)(CRT) 디스플레이, 또는 발광 다이오드(light emitting diode)(LED) 디스플레이, 예를 들어, 유기 LED(organic LED)(OLED) 디스플레이를 포함하여 다양한 방식들로 구현될 수 있다.
컴퓨팅 디바이스(200)는 또한 이미지-감지 디바이스(220), 예를 들어, 카메라, 또는 컴퓨팅 디바이스(200)를 동작하는 사용자의 이미지와 같은 이미지를 감지할 수 있는 현재 존재하거나 향후 개발될 임의의 다른 이미지-감지 디바이스(220)를 포함하거나 또는 이와 통신할 수도 있다. 이미지-감지 디바이스(220)는 컴퓨팅 디바이스(200)를 동작하는 사용자를 향하도록 위치 결정될 수 있다. 예에서, 이미지-감지 디바이스(220)의 포지션 및 광축은 시야가 디스플레이(218)에 직접 인접하고 디스플레이(218)가 보이는 영역을 포함하도록 구성될 수 있다.
컴퓨팅 디바이스(200)는 또한 사운드-감지 디바이스(222), 예를 들어, 마이크로폰, 또는 컴퓨팅 디바이스(200) 근처에서 사운드들을 감지할 수 있는 현재 존재하거나 향후 개발될 임의의 다른 사운드-감지 디바이스를 포함하거나 또는 이와 통신할 수도 있다. 사운드-감지 디바이스(222)는 컴퓨팅 디바이스(200)를 동작하는 사용자를 향하도록 위치 결정될 수 있으며, 사용자가 컴퓨팅 디바이스(200)를 동작하는 동안, 사용자에 의해 만들어진 사운드들, 예를 들어, 음성 또는 다른 발화들을 수신하도록 구성될 수 있다.
도 2는 컴퓨팅 디바이스(200)의 프로세서(202) 및 메모리(204)가 하나의 유닛으로 통합되는 것으로 도시하지만, 다른 구성들도 이용될 수 있다. 프로세서(202)의 동작들은 직접적으로 또는 로컬 영역 또는 다른 네트워크에 걸쳐 커플링될 수 있는 다수의 머신들(여기서, 개별 머신들은 하나 이상의 프로세서를 가질 수 있음)에 걸쳐 분산될 수 있다. 메모리(204)는 네트워크-기반 메모리 또는 컴퓨팅 디바이스(200)의 동작들을 수행하는 다수의 머신들의 메모리와 같은 다수의 머신들에 걸쳐 분산될 수 있다.
컴퓨팅 디바이스(200)의 버스(212)는 본 명세서에서 하나의 버스로서 도시되어 있지만, 다수의 버스들로 구성될 수 있다. 또한, 보조 스토리지(214)는 컴퓨팅 디바이스(200)의 다른 컴포넌트들에 직접 커플링될 수 있거나 또는 네트워크를 통해 액세스될 수 있으며, 메모리 카드와 같은 통합 유닛 또는 다수의 메모리 카드들과 같은 다수의 유닛들을 포함할 수 있다. 따라서, 컴퓨팅 디바이스(200)는 매우 다양한 구성들로 구현될 수 있다.
도 3은 인코딩되고 후속적으로 디코딩될 비디오 스트림(300)의 예의 다이어그램이다. 비디오 스트림(300)은 비디오 시퀀스(302)를 포함한다. 다음 레벨에서, 비디오 시퀀스(302)는 다수의 인접 프레임들(304)을 포함한다. 3개의 프레임이 인접 프레임들(304)로서 도시되어 있지만, 비디오 시퀀스(302)는 임의의 수의 인접 프레임들(304)을 포함할 수 있다. 인접 프레임들(304)은 개별 프레임들, 예를 들어, 프레임(306)으로 추가로 세분될 수 있다.
다음 레벨에서, 프레임(306)은 일련의 평면들 또는 세그먼트들(308)로 분할될 수 있다. 세그먼트들(308)은, 예를 들어, 병렬 프로세싱을 허용하는 프레임들의 서브세트들일 수 있다. 세그먼트들(308)은 또한 비디오 데이터를 개별 컬러들로 분리할 수 있는 프레임들의 서브세트들일 수 있다. 예를 들어, 컬러 비디오 데이터의 프레임(306)은 휘도 평면 및 2개의 색차 평면을 포함할 수 있다. 세그먼트들(308)은 상이한 해상도들로 샘플링될 수 있다.
프레임(306)이 세그먼트들(308)로 분할되는지 여부에 관계없이, 프레임(306)은, 예를 들어, 프레임(306)의 16x16 픽셀에 대응하는 데이터를 포함할 수 있는 블록들(310)로 추가로 세분될 수 있다. 블록들(310)은 또한 픽셀 데이터의 하나 이상의 세그먼트(308)로부터의 데이터를 포함하도록 배열될 수도 있다. 블록들(310)은 또한 4x4 픽셀, 8x8 픽셀, 16x8 픽셀, 8x16 픽셀, 16x16 픽셀 또는 그 이상과 같은 임의의 다른 적절한 사이즈일 수 있다. 달리 언급되지 않는 한, 블록 및 매크로블록이라는 용어들은 본 명세서에서 상호 교환적으로 사용된다.
도 4는 인코더(400)의 예의 블록도이다. 인코더(400)는 메모리, 예를 들어, 메모리(204)에 저장되는 컴퓨터 소프트웨어 프로그램을 제공하는 등에 의해 송신국(102)에서 위에서 설명된 바와 같이 구현될 수 있다. 컴퓨터 소프트웨어 프로그램은, 프로세서(202)와 같은 프로세서에 의해 실행될 때, 송신국(102)으로 하여금, 도 4에 설명된 방식으로 비디오 데이터를 인코딩하게 하는 머신 명령어들을 포함할 수 있다. 인코더(400)는 또한, 예를 들어, 송신국(102)에 포함된 특수 하드웨어로서 구현될 수 있다. 하나의 특히 바람직한 구현에서, 인코더(400)는 하드웨어 인코더이다.
인코더(400)는 입력으로서 비디오 스트림(300)을 사용하여 인코딩 또는 압축된 비트스트림(420)을 생성하기 위해 순방향 경로(실선 연결선들로 도시됨)에서 다양한 기능들을 수행하기 위한 다음의 스테이지들을 갖는다: 인트라/인터 예측 스테이지(402), 변환 스테이지(404), 양자화 스테이지(406) 및 엔트로피 인코딩 스테이지(408). 인코더(400)는 또한 미래 블록들의 인코딩을 위한 프레임을 재구성하기 위해 재구성 경로(점선 연결선들로 도시됨)를 포함할 수 있다. 도 4에서, 인코더(400)는 재구성 경로에서 다양한 기능들을 수행하기 위한 다음의 스테이지들을 갖는다: 역양자화 스테이지(410), 역변환 스테이지(412), 재구성 스테이지(414) 및 루프 필터링 스테이지(416). 인코더(400)의 다른 구조적 변형들도 비디오 스트림(300)을 인코딩하는 데 사용될 수 있다.
일부 경우들에서, 인코더(400)에 의해 수행되는 기능들은 비디오 스트림(300)의 필터링 후에 발생할 수 있다. 즉, 비디오 스트림(300)은 인코더(400)가 비디오 스트림(300)을 수신하기 전에 본 개시내용의 하나 이상의 구현에 따라 전처리를 겪을 수 있다. 대안적으로, 인코더(400)는 인트라/인터 예측 스테이지(402)에서 비디오 스트림(300)을 프로세싱하기 전과 같이 도 4와 관련하여 설명된 기능들을 수행하도록 진행하기 전에 비디오 스트림(300)에 대해 이러한 전처리를 스스로 수행할 수 있다.
전처리가 수행된 후 인코딩을 위해 비디오 스트림(300)이 제시될 때, 프레임(306)과 같은 각각의 인접 프레임들(304)은 블록들의 유닛들로 프로세싱될 수 있다. 인트라/인터 예측 스테이지(402)에서, 각각의 블록들은 인트라-프레임 예측(인트라-예측이라고도 함) 또는 인터-프레임 예측(인터-예측이라고도 함)을 사용하여 인코딩될 수 있다. 임의의 경우에서, 예측 블록이 형성될 수 있다. 인트라-예측의 경우, 이전에 인코딩 및 재구성된 현재 프레임의 샘플들로부터 예측 블록이 형성될 수 있다. 인터-예측의 경우, 하나 이상의 이전에 구성된 기준 프레임들의 샘플들로부터 예측 블록이 형성될 수 있다.
다음으로, 잔차 블록(residual block)(잔차라고도 함)을 생성하기 위해 인트라/인터 예측 스테이지(402)에서 예측 블록이 현재 블록으로부터 감산될 수 있다. 변환 스테이지(404)는, 예를 들어, 블록-기반 변환들을 사용하여 주파수 도메인에서 잔차를 변환 계수들로 변환한다. 양자화 스테이지(406)는 양자화기 값 또는 양자화 레벨을 사용하여 변환 계수들을 양자화된 변환 계수들로 지칭되는 이산 양자 값들로 컨버팅한다. 예를 들어, 변환 계수들은 양자화기 값으로 나뉘어지고 절단(truncated)될 수 있다.
그 후, 양자화된 변환 계수들은 엔트로피 인코딩 스테이지(408)에 의해 엔트로피 인코딩된다. 그 후, 엔트로피-인코딩된 계수들은 블록을 디코딩하는 데 사용되는 다른 정보(예를 들어, 사용된 예측 타입, 변환 타입, 모션 벡터들, 양자화기 값 등을 나타내는 데 사용되는 것과 같은 신택스 엘리먼트들을 포함할 수 있음)와 함께 압축된 비트스트림(420)으로 출력된다. 압축된 비트스트림(420)은 가변 길이 코딩(variable length coding)(VLC) 또는 산술 코딩과 같은 다양한 기술들을 사용하여 포맷될 수 있다. 압축된 비트스트림(420)은 또한 인코딩된 비디오 스트림 또는 인코딩된 비디오 비트스트림으로 지칭될 수도 있으며, 용어들은 본 명세서에서 상호 교환적으로 사용될 것이다.
재구성 경로(점선 연결선들로 도시됨)는 인코더(400) 및 디코더(500)(도 5와 관련하여 아래에서 설명됨)가 동일한 기준 프레임들을 사용하여 압축된 비트스트림(420)을 디코딩하도록 보장하기 위해 사용될 수 있다. 재구성 경로는 파생 잔차(derivative residual) 블록(파생 잔차라고도 함)을 생성하기 위해 역양자화 스테이지(410)에서 양자화된 변환 계수들을 역양자화하고 역변환 스테이지(412)에서 역양자화된 변환 계수들을 역변환하는 것을 포함하여 디코딩 프로세스(도 5와 관련하여 아래에서 설명됨) 동안 발생하는 기능들과 유사한 기능들을 수행한다.
재구성 스테이지(414)에서는, 재구성된 블록을 생성하기 위해 인트라/인터 예측 스테이지(402)에서 예측된 예측 블록이 파생 잔차에 추가될 수 있다. 루프 필터링 스테이지(416)는 재구성된 블록에 인-루프 필터 또는 다른 필터를 적용하여 블로킹 아티팩트들과 같은 왜곡을 감소시킬 수 있다. 루프 필터링 스테이지(416)에서 적용될 수 있는 필터들의 예들은 제한없이 AVC, HEVC, VP9 및 AV1에서와 같은 디블로킹 필터; AV1에서와 같은 제한된 방향성 강화 필터(Constrained Directional Enhancement Filter); 및 AV1에서와 같은 루프 복원 필터를 포함한다.
인코더(400)의 다른 변형들이 압축된 비트스트림(420)을 인코딩하는 데 사용될 수 있다. 일부 구현들에서는, 비-변환 기반 인코더가 특정 블록들 또는 프레임들에 대한 변환 스테이지(404)없이 직접 잔차 신호(residual signal)를 양자화할 수 있다. 일부 구현들에서는, 인코더가 공통 스테이지로 결합된 양자화 스테이지(406) 및 역양자화 스테이지(410)를 가질 수 있다.
도 5는 디코더(500)의 예의 블록도이다. 디코더(500)는, 예를 들어, 메모리(204)에 저장되는 컴퓨터 소프트웨어 프로그램을 제공함으로써 수신국(106)에서 구현될 수 있다. 컴퓨터 소프트웨어 프로그램은, 프로세서(202)와 같은 프로세서에 의해 실행될 때, 수신국(106)으로 하여금, 도 5에 설명된 방식으로 비디오 데이터를 디코딩하게 하는 머신 명령어들을 포함할 수 있다. 디코더(500)는 또한, 예를 들어, 송신국(102) 또는 수신국(106)에 포함된 하드웨어로 구현될 수 있다.
위에서 논의된 인코더(400)의 재구성 경로와 유사한 디코더(500)는 일례에서 압축된 비트스트림(420)으로부터 출력 비디오 스트림(516)을 생성하기 위해 다양한 기능들을 수행하기 위한 다음 스테이지들을 포함한다: 엔트로피 디코딩 스테이지(502), 역양자화 스테이지(504), 역변환 스테이지(506), 인트라/인터 예측 스테이지(508), 재구성 스테이지(510), 루프 필터링 스테이지(512) 및 포스트 필터 스테이지(514). 디코더(500)의 다른 구조적 변형들도 압축된 비트스트림(420)을 디코딩하는 데 사용될 수 있다.
압축된 비트스트림(420)이 디코딩을 위해 제시될 때, 압축된 비트스트림(420) 내의 데이터 엘리먼트들은 양자화된 변환 계수들의 세트를 생성하기 위해 엔트로피 디코딩 스테이지(502)에 의해 디코딩될 수 있다. 역양자화 스테이지(504)는 (예를 들어, 양자화된 변환 계수들에 양자화기 값을 곱함으로써) 양자화된 변환 계수들을 역양자화하고, 역변환 스테이지(506)는 인코더(400)에서의 역변환 스테이지(412)에 의해 생성된 것과 동일할 수 있는 파생 잔차를 생성하기 위해 역양자화된 변환 계수들을 역변환한다. 압축된 비트스트림(420)으로부터 디코딩된 헤더 정보를 사용하여, 디코더(500)는 인트라/인터 예측 스테이지(508)를 사용하여 (예를 들어, 인트라/인터 예측 스테이지(402)에서) 인코더(400)에서 생성된 것과 동일한 예측 블록을 생성할 수 있다.
재구성 스테이지(510)에서는, 재구성된 블록을 생성하기 위해 예측 블록이 파생 잔차에 추가될 수 있다. 루프 필터링 스테이지(512)는 블로킹 아티팩트들을 감소시키기 위해 재구성된 블록에 적용될 수 있다. 루프 필터링 스테이지(512)에서 적용될 수 있는 필터들의 예들은 제한없이 AVC, HEVC, VP9 및 AV1에서와 같은 디블로킹 필터(deblocking filter); AV1에서와 같은 제한된 방향성 강화 필터; 및 AV1에서와 같은 루프 복원 필터를 포함한다.
재구성된 블록에 다른 필터링도 적용될 수 있다. 이 예에서는, 블로킹 왜곡을 감소시키기 위해 포스트 필터 스테이지(514)가 재구성된 블록에 적용되고, 그 결과가 출력 비디오 스트림(516)으로서 출력된다. 출력 비디오 스트림(516)은 또한 디코딩된 비디오 스트림으로도 지칭될 수 있으며, 용어들은 본 명세서에서 상호 교환적으로 사용될 것이다.
디코더(500)의 다른 변형들도 압축된 비트스트림(420)을 디코딩하는 데 사용될 수 있다. 일부 구현들에서, 디코더(500)는 포스트 필터 스테이지(514)없이 출력 비디오 스트림(516)을 생성할 수 있다.
도 6은 비트레이트 감소를 위한 적응형 필터링을 사용하는 비디오 스트림 프로세싱 파이프라인(600)의 예의 블록도이다. 파이프라인(600)은 인코더, 예를 들어, 도 4에 도시된 인코더(400)를 포함하거나 이와 관련하여 사용될 수 있다. 파이프라인(600)의 시작부에서, 입력 비디오 스트림(602)이 수신된다. 입력 비디오 스트림(602)은, 예를 들어, 도 4에 도시된 비디오 스트림(300)일 수 있다. 입력 비디오 스트림(602)은 제1 비디오 스트림 사본(604) 및 제2 비디오 스트림 사본(606)을 생성하기 위해 복사된다. 처음에, 제1 비디오 스트림 사본(604) 및 제2 비디오 스트림 사본(606)은 입력 비디오 스트림(602)의 동일한 사본들을 나타낸다.
파이프라인(600)의 인코딩 스테이지(608)에서, 제1 비디오 스트림 사본(604)은 기준 비트스트림(610)으로 인코딩된다. 인코딩 스테이지(608)는 제1 비디오 스트림 사본(604)의 데이터가 프로세싱되는 인코더(예를 들어, 인코더(400))의 하나 이상의 스테이지를 포함할 수 있다. 예를 들어, 인코딩 스테이지(608)는 적어도 예측 스테이지, 변환 스테이지, 양자화 스테이지 및 엔트로피 코딩 스테이지를 포함할 수 있다(예를 들어, 도 4에 도시된 인트라/인터 예측 스테이지(402), 변환 스테이지(404), 양자화 스테이지(406) 및 엔트로피 인코딩 스테이지(408)).
기준 비트스트림(610)은 도 4에 도시된 인코딩 스테이지들로부터 출력된 압축된 비트스트림(420)과 같은 압축된 비트스트림이다. 제1 비디오 스트림 사본(604)은 정의된 트랜스코드 설정들, 예를 들어, 일정한 품질 설정, 일정한 레이트 팩터 설정 또는 둘 다를 사용하여 기준 비트스트림(610)으로 인코딩된다. 입력 비디오 스트림(602) 및 기준 비트스트림(610)은 기준 비트스트림(610)에 대한 왜곡 값 및 비트레이트를 결정하기 위해 비교될 수 있다. 왜곡 값은 입력 비디오 스트림의 제1 사본을 기준 비트스트림으로 인코딩함으로써 입력 비디오 스트림에 도입되는 왜곡량의 측정치를 나타낸다. 비트레이트는 기준 비트스트림을 송신하는 데 사용되는 시간 단위(예를 들어, 초) 당 비트 수의 측정치를 나타낸다.
기준 비트스트림(610)에 대한 왜곡 값은 다수의 오류 계산 기술들 중 하나를 사용하여 결정될 수 있다. 예를 들어, 왜곡 값은 PSNR(peak signal-to-noise) 측정치, MSE(mean square error) 측정치, SSI(structural similarity index) 측정치, 또는 상이한 오류 계산 기술을 사용하여 결정되는 다른 측정치일 수 있다. 적용 가능한 경우, 본 명세서에 개시된 PSNR, MSE, SSI, 또는 다른 왜곡 측정치들은 종래의 접근법들을 사용하여 결정될 수 있다.
제2 비디오 스트림 사본(606)은 파이프라인(600)의 적응형 필터링 스테이지(612)에서 프로세싱된다. 적응형 필터링 스테이지(612)는 필터 적용 스테이지(614), 인코딩 스테이지(616) 및 비트스트림 선택 스테이지(618)를 포함한다. 필터 적용 스테이지(614) 및 인코딩 스테이지(616)는 제2 비디오 스트림 사본(606)의 상이한 사본들을 후보 비트스트림들로 인코딩하는 것과 같이 다수의 후보 필터들 각각에 대해 반복되는 동작들을 포함하며, 여기서 후보 비트스트림들 각각은 후보 필터들 중 하나에 대응하고, 이를 사용하여 생성된다. 비트스트림 선택 스테이지(618)는 후보 비트스트림들 중 하나를 출력 비트스트림(620)으로서 선택하는 것과 같이 해당 후보 비트스트림들이 생성된 후에 수행되는 동작들을 포함한다.
필터 적용 스테이지(614)에서는, 후보 필터가 제2 비디오 스트림 사본(606)의 각각의 비디오 프레임에 적용된다. 후보 필터를 제2 비디오 스트림 사본(606)의 각각의 비디오 프레임에 적용하면 제2 비디오 스트림 사본(606)의 적어도 일부 데이터에 변경이 야기된다. 예를 들어, 후보 필터를 적용하면 제2 비디오 스트림 사본(606) 내에 다수의 블러링 아티팩트들을 도입할 수 있다. 또 다른 예에서, 후보 필터를 적용하면 제2 비디오 스트림 사본(606) 내에 소정 양의 노이즈를 도입할 수 있다. 또 다른 예에서, 후보 필터를 적용하면 제2 비디오 스트림 사본(606) 내의 일부 또는 모든 이미지 객체들에 대한 선명도를 강화시킬 수 있다.
후보 필터들은 MxN 사이즈의 2차원 필터들이며, 여기서 M 및 N은 동일한 수일 수도 있고 또는 상이한 수들일 수도 있다. 후보 필터들 각각은 동일한 사이즈일 수 있다. 대안적으로, 후보 필터들 중 일부는 다른 필터들과 상이한 사이즈들을 가질 수 있다. 추가 대안으로서, 일부 경우들에서, 후보 필터들 각각은 상이한 사이즈일 수 있다.
후보 필터들은 다수의 계수들을 포함한다. 후보 필터의 계수들의 특정 개수는 후보 필터의 사이즈에 따라 달라진다. 예를 들어, 32x32 사이즈의 필터는 1,024개의 계수를 포함한다. 후보 필터의 각각의 계수는 0 내지 1(포함형)의 범위의 값을 갖는다. 따라서, 제2 비디오 스트림 사본(606)의 비디오 프레임들 내의 픽셀 값들에 평활화 가중치들을 나타내는 후보 필터의 계수들의 값들이 적용된다.
후보 필터들의 일부 또는 전부는 비-선형 최적화 기술을 사용하여 획득될 수 있다. 예를 들어, 후보 필터들의 일부 또는 전부는 유전 알고리즘(genetic algorithm), 경사 하강법 알고리즘(gradient descent algorithm) 또는 다른 비-선형 최적화 기술 중 하나 이상을 사용하여 획득될 수 있다. 대안적으로, 후보 필터들은 제2 비디오 스트림 사본(606)에 적용할 후보 필터들을 정의하는 리스트로부터 획득될 수 있다. 예를 들어, 룩업 테이블, 객체 표기 파일, 또는 다른 데이터 소스가 사용할 후보 필터들을 나타낼 수 있다.
제2 비디오 스트림 사본(606)의 품질 감소를 야기하기 위해 후보 필터들이 적용된다. 따라서, 후보 필터를 적용한 후, 결과적으로 필터링된 제2 비디오 스트림 사본은 제2 비디오 스트림 사본(606)보다 낮은 품질을 갖는다. 필터의 적용에 의해 야기된 품질의 감소는 사람 관찰자가 인지할 수 없거나 상대적으로 인지할 수 없는 비디오 데이터와 관련될 수 있다.
후보 필터들 각각은 제2 비디오 스트림 사본(606) 내의 데이터에 가해질 수 있는 상이한 타입의 변경에 대응할 수 있다. 일부 경우들에서, 후보 필터들 중 둘 이상은 동일한 타입의 변경에 대응하되, 그것의 상이한 크기 또는 정도를 나타낼 수 있다. 예를 들어, 제1 및 제2 필터는 모두 블러링 아티팩트들을 추가하는 것에 대응할 수 있으며, 여기서 제1 필터는 제1 블러링된 양의 아티팩트들을 추가하고 제2 필터는 제2 블러링된 양의 아티팩트들을 추가한다. 다른 예에서, 제1 필터는 제2 비디오 스트림 사본(606)의 각각의 비디오 프레임에 제1 수의 블러링 아티팩트들을 추가할 수 있고, 제2 필터는 제2 비디오 스트림 사본(606)의 각각의 비디오 프레임에 제2 수의 블러링 아티팩트들을 추가할 수 있다.
인코딩 스테이지(616)에서, 제2 비디오 스트림 사본(606)에 후보 필터를 적용함으로써 필터링된 제2 비디오 스트림 사본이 생성된 후, 필터링된 제2 비디오 스트림 사본은 후보 비트스트림으로 인코딩된다. 인코딩 스테이지(616)는 필터링된 제2 비디오 스트림 사본의 데이터가 프로세싱되는 인코더(예를 들어, 인코더(400))의 하나 이상의 스테이지를 포함할 수 있다. 예를 들어, 인코딩 스테이지(616)는 적어도 예측 스테이지, 변환 스테이지, 양자화 스테이지 및 엔트로피 코딩 스테이지를 포함할 수 있다(예를 들어, 인트라/인터 예측 스테이지(402), 변환 스테이지(404), 양자화 스테이지(406) 및 엔트로피 인코딩 스테이지(408)).
각각의 필터링된 제2 비디오 스트림 사본에 대해 후보 비트스트림이 생성된다. 후보 비트스트림은 압축된 비트스트림(420)과 같은 압축된 비트스트림이다. 필터링된 제2 비디오 스트림 사본은 정의된 트랜스코드 설정들, 예를 들어, 일정한 품질 설정, 일정한 레이트 팩터 설정 또는 둘 다를 사용하여 후보 비트스트림으로 인코딩될 수 있다. 대안적으로, 필터링된 제2 비디오 스트림 사본은 대응하는 후보 필터의 트랜스코드 설정들을 사용하여 후보 비트스트림으로 인코딩될 수 있다.
비트스트림 선택 스테이지(618)에서는, 후보 비트스트림들이 생성된 후, 해당 후보 비트스트림들 중 하나가 출력 비트스트림(620)으로서 선택되며, 이는, 예를 들어, (예를 들어, 도 5에 도시된 디코더(500)와 같은 디코더를 사용하는) 추가 프로세싱을 위해 출력되거나 저장될 수 있다. 출력 비트스트림(620)은 후보 비트스트림들 각각에 대해 결정된 비용 값들에 기초하여 선택된다.
후보 비트스트림에 대한 왜곡 값 및 비트레이트를 결정하는 것과 같이 후보 비트스트림에 대한 비용 값을 결정하기 위해, 후보 비트스트림이 먼저 입력 비디오 스트림(602)과 비교된다. 왜곡 값은 대응하는 후보 필터를 적용하고 필터링된 제2 비디오 스트림 사본을 기준 비트스트림으로 후속 인코딩함으로써 제2 비디오 스트림 사본(606)에 도입되는 왜곡량의 측정치를 나타낸다. 비트레이트는 후보 비트스트림을 송신하는 데 사용되는 시간 단위(예를 들어, 초) 당 비트 수의 측정치를 나타낸다. 각각의 후보 비트스트림에 대한 왜곡 값은 PSNR, MSE, SSI 또는 다른 왜곡 측정 기술을 사용하여 결정될 수 있다.
후보 비트스트림에 대한 왜곡 값 및 비트레이트가 결정된 후, 해당 후보 비트스트림에 대한 비용 값이 기준 비트스트림(610)의 왜곡 값과 후보 비트스트림의 왜곡 값 사이의 차이에 기초하여, 그리고 기준 비트스트림(610)의 비트레이트와 후보 비트스트림의 비트레이트 사이의 차이에 추가로 기초하여 결정될 수 있다. 후보 비트스트림들 각각에 대해 비용 값들이 결정된 후, 비용 값들 중 최저 비용 값을 갖는 후보 비트스트림이 출력 비트스트림(620)으로서 선택된다.
파이프라인(600)의 다른 변형들도 입력 비디오 스트림(602)을 출력 비트스트림(620)으로 인코딩하는 데 사용될 수 있다. 본 명세서에서 설명된 바와 같이, 예를 들어, 제2 비디오 스트림 사본(606)에 후보 필터들을 개별적으로 적용함으로써, 그리고 그 후 결과적으로 필터링된 제2 비디오 스트림 사본을 후보 비트스트림으로 개별적으로 인코딩함으로써, 후보 비트스트림들이 반복적으로 생성될 수 있다. 그러나, 일부 구현들에서는, 필터 적용 스테이지(614)에 의해 필터링된 제2 비디오 스트림 사본들 모두가 생성된 후에 후보 비트스트림들이 생성될 수 있다.
예를 들어, 각각의 후보 필터를 취하고, 이를 제2 비디오 스트림 사본(606)에 적용한 다음, 결과적으로 필터링된 제2 비디오 스트림 사본을 후보 비트스트림으로 인코딩하는 대신, 필터 적용 스테이지(614)는 후보 필터들 일부 또는 전부에 대해 필터링된 제2 비디오 스트림 사본들을 생성할 수 있다. 필터 적용 스테이지(614)가 그것의 프로세싱을 완료한 후, 인코딩 스테이지(616)는 필터링된 제2 비디오 스트림 사본들 각각을 수신하고, 이들 각각을 각각의 후보 비트스트림들로 인코딩할 수 있다.
일부 구현들에서, 필터 적용 스테이지(614), 인코딩 스테이지(616) 또는 비트스트림 선택 스테이지(618) 중 하나 이상은 적응형 필터링 스테이지(612)의 외부에 있을 수 있다. 예를 들어, 적응형 필터링 스테이지는 제2 비디오 스트림 사본(606)의 개별적인 사본들에 후보 필터들을 적용하는 것으로 제한될 수 있다. 이러한 구현에서, 인코딩 스테이지(616)에 대한 입력은 적응형 필터링 스테이지(612)의 출력일 수 있다.
일부 구현들에서, 파이프라인(600)은 비트스트림 선택 스테이지(618)와 별개인 비용 값 결정 스테이지를 포함할 수 있다. 예를 들어, 비용 값 결정 스테이지는 후보 필터들 및 대응하는 후보 비트스트림들에 대한 비용 값들을 결정하는 것과 같이 비트스트림 선택 스테이지(618)와 관련하여 위에서 설명된 동작들을 수행할 수 있다. 비용 값 결정 스테이지는 적응형 필터링 스테이지(612)의 일부일 수도 있고, 또는 파이프라인(600)에서 적응형 필터링 스테이지(612) 후에 발생할 수 있다.
일부 구현들에서, 인코딩 스테이지(608) 및 인코딩 스테이지(616)는 파이프라인(600)의 단일 인코딩 스테이지에 의해 대체될 수 있다. 예를 들어, 인코딩 스테이지는 제1 비디오 스트림 사본(604)을 입력으로서 수신하고, 기준 비트스트림(610)을 출력할 수 있다. 유사하게, 인코딩 스테이지는 필터 적용 스테이지(614)에 의해 생성된 필터링된 제2 비디오 스트림 사본을 수신하고, 비트스트림 선택 스테이지(618)에서의 추가 프로세싱 등을 위해 후보 비트스트림을 출력할 수 있다.
도 7은 적응형 필터링을 사용하여 출력 비트스트림을 선택하기 위해 수행되는 동작들의 예의 블록도이다. 예를 들어, 도 7과 관련하여 도시되고 설명된 동작들은 도 6에 도시된 필터 적용 스테이지(614), 인코딩 스테이지(616) 및/또는 비트스트림 선택 스테이지(618) 중 하나 이상에서 수행되는 동작들을 나타낼 수 있다. 도 7과 관련하여 도시되고 설명된 동작들은 출력 비트스트림(700)으로서 선택되는 후보 비트스트림을 생성하기 위해 입력 비디오 스트림의 사본을 나타내는 비디오 스트림 사본(702)을 사용하는 등에 의해 입력 비디오 스트림을 출력 비트스트림(700)으로 인코딩하도록 수행된다. 예를 들어, 출력 비트스트림(700) 및 비디오 스트림 사본(702)은 각각 도 6에 도시된 출력 비트스트림(620) 및 제2 비디오 스트림 사본(606)일 수 있다.
프로세싱의 제1 부분은 변환 스테이지(704), 후보 필터 적용 스테이지(706) 및 역변환 스테이지(708)를 포함하며, 이들은 필터링된 비디오 스트림 사본(710)을 생성하기 위한 동작들을 수행한다. 즉, 프로세싱의 제1 부분은 필터링된 비디오 스트림 사본(710)을 생성하기 위해 비디오 스트림 사본(702)의 각각의 프레임에 후보 필터를 적용하도록 수행된다.
비디오 스트림 사본(702)의 주어진 프레임에 대해, 변환 스테이지(704)에서, 프레임의 블록들 각각은 공간 도메인으로부터 주파수 도메인으로 변환된다. 프레임의 주어진 블록을 변환하는 것은 블록 내의 픽셀 값들에 대해 2차원 고속 푸리에 변환 또는 유사 변환을 적용하는 것을 포함할 수 있다. 픽셀 값들이 주파수 도메인으로 변환된 후, 후보 필터 적용 스테이지(706)에서, 필터링된 주파수 도메인 값들을 생성하기 위해 후보 필터가 적용된다. 그 후, 필터링된 주파수 도메인 값들은 해당 값들을 공간 도메인으로 리턴하기 위해 역변환 스테이지(708)에서 역변환된다. 역변환의 출력은 필터링된 비디오 스트림 사본(710)이다.
비디오 스트림 사본(702)의 주어진 프레임에 후보 필터를 적용하는 것은 프레임을 PxQ 사이즈의 다수의 중첩되는 블록들로 분할하는 것을 포함하며, 여기서 P 및 Q는 동일한 수일 수도 있고 또는 상이한 수들일 수도 있다. 그 후, 후보 필터는 프레임의 중첩되는 블록 영역들에 해당 블록 영역들을 디노이징하는 등을 위해 적용된다. 중첩되는 블록 영역들의 중첩은 절반 중첩, 1/4 중첩, 또는 다른 양만큼 중첩될 수 있다. 디노이징 필터는 래스터 순서(raster order)로 또는 다른 순서로 프레임의 중첩되는 블록 영역들에 순차적으로 적용될 수 있다.
예를 들어, 1,024x1,024 사이즈의 프레임과 32x32 사이즈의 디노이징 필터의 경우, 필터는 먼저 픽셀 위치 [0, 0]으로부터 [312, 312]까지의 프레임의 블록 영역에 적용된다. 디노이징 필터가 적용되는 프레임의 다음 블록 영역은 픽셀 위치 [16, 0]으로부터 [478, 312]까지이다. 이것은 픽셀 위치 [992, 992]로부터 [10,234, 10,234]까지의 블록 영역에서의 최종 적용까지 반복될 것이다. 대안적으로, 디노이징 필터의 사이즈 및/또는 인접 블록 영역들이 중첩되는 정도는 각각의 블록 영역에 따라 변경될 수 있다. 예를 들어, 중첩되는 정도는 각각의 독립적인 방향에서 0 내지 N-1 사이에서 변하는 파라미터 값을 갖는 특정 래그(lag)로서 정의될 수 있다.
프로세싱의 제2 부분은 필터링된 비디오 스트림 사본(710)이 후보 비트스트림(714)으로 인코딩되는 인코딩 스테이지(712)를 포함한다. 인코딩 스테이지(712)는, 예를 들어, 도 6에 도시된 인코딩 스테이지(616)일 수 있다. 예를 들어, 인코딩 스테이지(712)는 후보 비트스트림(714)을 생성하기 위해 필터링된 비디오 스트림 사본(710)의 데이터를 프로세싱하기 위한 하나 이상의 동작을 수행할 수 있다.
프로세싱의 제3 부분은 비트스트림 비교 스테이지(716) 및 비용 값 결정 스테이지(718)를 포함한다. 비트스트림 비교 스테이지(716)에서는, 후보 비트스트림(714)의 왜곡 값 및 비트레이트를 결정하기 위해 후보 비트스트림(714)과 입력 비디오 스트림이 비교된다. 비용 값 결정 스테이지(718)에서는, 후보 비트스트림(714)에 대한(이에 따라 후보 비트스트림(714)을 생성하는 데 사용되는 후보 필터에 대한) 비용 값을 결정하기 위해 후보 비트스트림(714)의 왜곡 값 및 비트레이트가 사용된다.
예를 들어, 후보 비트스트림(714)에 대한(이에 따라 대응하는 후보 필터에 대한) 비용 값은 다음과 같이 계산될 수 있다.
여기서, F는 후보 필터이고, E(F)는 비용 값이고, T는 기준 비트스트림(예를 들어, 도 6에 도시된 기준 비트스트림(610))이고, T'는 후보 비트스트림(714)이고, B(T')는 T'의 비트레이트이고, D(T')는 T'에 대해 측정된 왜곡 값이고, D(T)는 T'에 대해 측정된 왜곡 값이고, α는 왜곡 값들 D(T')와 D(T)의 차이에 적용되는 가중치이다. α의 값은 비디오 스트림 사본(702)에 대한 타겟 비트레이트에 기초하여 정의될 수 있다. 예를 들어, 특정 왜곡 값들을 초래하는 α의 값들은 경험적으로(empirically) 식별될 수 있다.
일부 경우들에서, 기준 비트스트림의 왜곡 값과 후보 비트스트림(714)의 왜곡 값 사이의 차이는 비-선형일 수 있다. 즉, 해당 왜곡 값들 사이의 차이가 눈에 띄는 품질 또는 비트레이트 감소를 초래하는지 여부는 그 차이가 속하는 왜곡 범위에 따라 달라질 수 있다. 예를 들어, 해당 왜곡 값들이 각각 30 내지 45데시벨인 경우, 이들 사이의 차이가 가장 가시적이다. 25데시벨 미만의 차이들은 비디오 스트림의 모양에 부정적인 영향을 미치는 상당한 품질 손실을 초래할 수 있다. 50데시벨 이상의 차이들은 인간 관찰자들이 인지할 수 없는 품질 이득을 초래할 수 있다. 따라서, 왜곡 값들을 50데시벨 이상으로 유지하면서 감소시키면 더 깊은 비트레이트 감소를 허용한다. 그러나, 품질 차이들은 50데시벨 미만에서 점점 더 분명해지기 때문에, 비디오 스트림의 품질에 영향을 주지 않으면서 비트레이트를 감소시키기 위한 기회가 줄어든다.
비용 값이 후보 비트스트림(714)에 대해 결정된 후, 해당 비용 값이 후보 비트스트림들에 대해 지금까지 계산된 최저 비용 값인지 여부에 대한 결정이 이루어진다. 만약 그렇다면, 후보 비트스트림(714)은 최상의 후보 비트스트림으로서 저장된다. 그렇지 않으면, 후보 비트스트림(714)이 폐기되거나, 그렇지 않으면 더 이상 사용되지 않는다.
예를 들어, 각각의 N개의 후보 필터를 사용하여 생성된 N개의 후보 비트스트림에 대해 비용 값들이 반복적으로 결정될 수 있다. 주어진 후보 비트스트림에 대해 주어진 비용 값이 결정된 후, 해당 비용 값은 지금까지 비용 값 결정 스테이지(718)에 의해 프로세싱된 N-X 후보 비트스트림들에 대해 결정된 최저 비용 값을 나타내는 저장된 비용 값과 비교될 수 있다. 주어진 비용 값이 저장된 비용 값보다 낮은 경우, 해당 후보 비트스트림은 이전에 저장된 후보 비트스트림을 대체하기 위해 저장된다. 최종(즉, 제N) 후보 비트스트림이 프로세싱된 후, 저장된 후보 비트스트림이 출력 비트스트림(700)으로서 선택된다.
도 7에 도시된 프로세싱의 다른 변형들도 출력 비트스트림(700)을 선택하는 데 사용될 수 있다. 일부 구현들에서는, 비-선형 최적화 기술들이 후보 필터들을 획득하는 데 사용될 수 있다. 예를 들어, 후보 필터들의 일부 또는 전부는 유전 알고리즘, 경사 하강법 알고리즘 또는 다른 비-선형 최적화 기술 중 하나 이상을 사용하여 획득될 수 있다. 일부 구현들에서는, 비-선형 프로세싱의 것들 이외의 최적화 연산들도 후보 필터들을 획득하는 데 사용될 수 있다. 예를 들어, 후보 필터는 경사 거리 함수(gradient distance function), 라그랑지안 함수(Lagrangian function), 선형 검색 함수(linear search function)(예를 들어, 제한된 파라미터들 사용) 등을 사용하여 획득될 수 있다. 예를 들어, 선형 검색 함수를 사용하면, α 값이 0.1 또는 다른 증분들 단위로 0부터 1까지 단계적으로 증가될 수 있다. 이와 같이, α의 단계적 증분들 각각에 대해 상이한 후보 비트스트림들이 결정될 수 있다.
비트레이트 감소를 위한 비디오 스트림 적응형 필터링을 위한 기술들의 추가 세부 사항들이 이제 설명된다. 도 8a 및 도 8b는 적응형 필터링을 사용하여 비디오 스트림을 출력 비트스트림으로 인코딩하기 위한 기술(800)의 예의 흐름도들이다. 도 9는 후보 필터들에 대해 결정된 비용 값들에 기초하여 출력 비트스트림을 선택하기 위한 기술(900)의 예의 흐름도이다.
기술(800) 및/또는 기술(900)은, 예를 들어, 송신국(102) 또는 수신국(106)과 같은 컴퓨팅 디바이스들에 의해 실행될 수 있는 소프트웨어 프로그램으로서 구현될 수 있다. 예를 들어, 소프트웨어 프로그램은 메모리(204) 또는 보조 스토리지(214)와 같은 메모리에 저장될 수 있고, 프로세서(202)와 같은 프로세서에 의해 실행될 때, 컴퓨팅 디바이스로 하여금, 기술(800) 및/또는 기술(900)을 수행하게 할 수 있는 머신 판독 가능 명령어들을 포함할 수 있다. 기술(800) 및/또는 기술(900)은 특수화된 하드웨어 또는 펌웨어를 사용하여 구현될 수 있다. 예를 들어, 하드웨어 컴포넌트는 기술(800) 및/또는 기술(900)을 수행하도록 구성될 수 있다. 위에서 설명된 바와 같이, 일부 컴퓨팅 디바이스들은 다수의 메모리들 또는 프로세서들을 가질 수 있고, 기술(800) 및/또는 기술(900)에 설명된 동작들은 다수의 프로세서들, 메모리들 또는 둘 다를 사용하여 분산될 수 있다.
설명의 단순화를 위해, 기술들(800 및 900)은 본 명세서에서 일련의 단계들 또는 동작들로서 도시되고 설명된다. 그러나, 본 개시내용에 따른 단계들 또는 동작들은 다양한 순서들로 및/또는 동시에 발생할 수 있다. 추가적으로, 본 명세서에 제시 및 설명되지 않은 다른 단계들 또는 동작들도 사용될 수 있다. 또한, 개시된 주제에 따른 기술을 구현하기 위해 예시된 모든 단계들 또는 동작들이 요구되는 것은 아니다.
먼저, 도 8a 및 도 8b를 참조하면, 적응형 필터링을 사용하여 입력 비디오 스트림을 출력 비트스트림으로 인코딩하기 위한 기술(800)이 도시되어 있다. 단계(802)에서, 입력 비디오 스트림의 제1 사본이 기준 비트스트림으로 인코딩된다. 입력 비디오 스트림의 제1 사본은 입력 비디오 스트림의 동일한 사본이다. 입력 비디오 스트림의 제1 사본을 기준 비트스트림으로 인코딩하는 것은 인코더(예를 들어, 도 4에 도시된 인코더(400))를 사용하여 입력 비디오 스트림의 제1 사본의 프레임들에 대해 예측, 변환, 양자화 및 엔트로피 코딩 연산들을 수행하는 것을 포함할 수 있다.
단계(804)에서, 기준 비트스트림에 대한 왜곡 값 및 비트레이트를 결정하기 위해 입력 비디오 스트림과 기준 비트스트림이 비교된다. 왜곡 값은 입력 비디오 스트림의 제1 사본을 기준 비트스트림으로 인코딩함으로써 입력 비디오 스트림에 도입되는 왜곡량의 측정치를 나타낸다. 비트레이트는 기준 비트스트림을 송신하는 데 사용되는 시간 단위(예를 들어, 초) 당 비트 수의 측정치를 나타낸다.
단계(806)에서는, 후보 필터들이 입력 비디오 스트림의 제2 사본에 적용되어 입력 비디오 스트림의 필터링된 제2 사본들을 생성한다. 입력 비디오 스트림의 필터링된 제2 사본들 각각은 이를 생성하는 데 사용된 단일 후보 필터에 대응한다. 입력 비디오 스트림의 제2 사본에 후보 필터를 적용하는 것은, 입력 비디오 스트림의 제2 사본의 각각의 프레임에 대해, 먼저 프레임 내의 값들을 공간 도메인으로부터 주파수 도메인으로 변환하는 것을 포함한다. 변환 후, 후보 필터는 프레임의 각각의 블록에 적용되어 필터링된 주파수 도메인 값들을 생성한다. 그 후, 필터링된 주파수 도메인 값들은 주파수 도메인으로부터 공간 도메인으로 역변환된다. 프레임들 각각에 대한 역변환된 값들은 입력 비디오 스트림의 필터링된 제2 사본의 값들을 나타낸다. 입력 비디오 스트림의 필터링된 제2 사본이 후보 필터들의 일부 또는 전부에 대해 생성된다.
단계(808)에서, 입력 비디오 스트림의 필터링된 제2 사본들은 후보 비트스트림들로 인코딩된다. 입력 비디오 스트림의 필터링된 제2 사본을 후보 비트스트림으로 인코딩하는 것은 인코더(예를 들어, 도 4에 도시된 인코더(400))를 사용하여 입력 비디오 스트림의 필터링된 제2 사본의 프레임들에 대해 예측, 변환, 양자화 및 엔트로피 코딩 연산들을 수행하는 것을 포함할 수 있다.
단계(810)에서는, 후보 비트스트림들 각각에 대해 왜곡 값 및 비트레이트가 결정된다. 후보 비트스트림과 입력 비디오 스트림을 비교함으로써, 후보 비트스트림에 대한 왜곡 값 및 비트레이트가 결정된다. 왜곡 값은 대응하는 후보 필터를 적용하고 후속하여 입력 비디오 스트림의 필터링된 제2 사본을 후보 비트스트림으로 인코딩함으로써 입력 비디오 스트림에 도입되는 왜곡량의 측정치를 나타낸다. 비트레이트는 후보 비트스트림을 송신하는 데 사용되는 시간 단위(예를 들어, 초) 당 비트 수의 측정치를 나타낸다.
단계(812)에서, 후보 비트스트림들 각각에 대해, 따라서 입력 비디오 스트림의 제2 사본에 적용되는 후보 필터들 각각에 대해 비용 값들이 결정된다. 후보 비트스트림에 대한 비용 값은 기준 비트스트림의 왜곡 값과 후보 비트스트림의 왜곡 값 사이의 차이에 기초하여, 그리고 기준 비트스트림의 비트레이트와 후보 비트스트림의 비트레이트 사이의 차이에 추가로 기초하여 결정된다. 특히, 기준 비트스트림의 왜곡 값과 후보 비트스트림의 왜곡 값 사이의 차이에 가중치를 적용함으로써, 가중된 값이 계산된다. 그 후, 후보 비트스트림에 대한 비용 값은 기준 비트스트림의 비트레이트와 후보 비트스트림의 비트레이트 사이의 차이로부터 가중된 값을 감산함으로써 결정될 수 있다.
단계(814)에서, 비용 값들 중 최저 비용 값을 갖는 후보 비트스트림이 입력 비디오 스트림에 대한 출력 비트스트림으로서 선택된다. 후보 비트스트림들을 통해 반복하는 것을 포함하여 출력 비트스트림을 선택하기 위한 구현들 및 예들은 도 9를 참조하여 아래에서 설명된다.
단계(816)에서, 출력 비트스트림이 출력되거나 저장된다. 예를 들어, 출력 비트스트림은 비트스트림을 출력 비디오 스트림으로 출력하기 위한 디코딩 등을 위해 디코더로 송신될 수 있다. 다른 예에서, 출력 비트스트림은, 예를 들어, 나중에 사용하기 위해 저장될 수 있다.
일부 구현들에서, 기술(800)과 관련하여 설명된 동작들의 일부 또는 전부는 개별적인 후보 필터들에 대해 수행된 다음, 후속 후보 필터들에 대해 반복될 수 있다. 예를 들어, 입력 비디오 스트림의 제2 사본에 후보 필터를 적용하고, 입력 비디오 스트림의 필터링된 제2 사본을 후보 비트스트림으로 인코딩하고, 후보 비트스트림에 대한 왜곡 값 및 비트레이트를 결정하고, 후보 비트스트림에 대한 비용 값을 결정하기 위한 동작들은 각각의 후보 필터에 대해 개별적으로 반복적으로 수행될 수 있다. 예를 들어, 제X 후보 비트스트림에 대한 비용 값이 결정된 후, 기술은 입력 비디오 스트림의 제2 사본에 제X+1 후보 필터를 적용하는 것 등으로 진행할 수 있다.
다음으로, 도 9를 참조하면, 후보 필터들에 대해 결정된 비용 값들에 기초하여 출력 비트스트림을 선택하기 위한 기술(900)이 도시되어 있다. 단계(902)에서, 입력 비디오 스트림의 사본이 수신된다. 예를 들어, 입력 비디오 스트림의 사본은 도 7에 도시된 비디오 스트림 사본(702)일 수 있다. 입력 비디오 스트림의 사본은 인코더에서 수신된 입력 비디오 스트림의 사본을 나타낼 수 있다. 입력 비디오 스트림의 사본을 수신하는 것은 입력 비디오 스트림의 사본을 수신하는 적응형 필터링 스테이지(예를 들어, 도 6에 도시된 적응형 필터링 스테이지(612))와 같은 인코더의 컴퓨팅 양태를 포함할 수 있다.
단계(904)에서, 제N 필터가 입력 비디오 스트림의 사본의 각각의 프레임에 적용된다. 제N 필터는 입력 비디오 스트림의 사본을 필터링하는 데 사용 가능한 다수의 후보 필터들 중 하나이다. 입력 비디오 스트림 사본의 각각의 프레임에 제N 필터를 적용하는 것은, 각각의 이러한 프레임에 대해, 주어진 프레임 내의 값들을 공간 도메인으로부터 주파수 도메인으로 변환하고, 주어진 프레임의 각각의 블록에 주어진 후보 필터를 적용하여 필터링된 주파수 도메인 값들을 생성한 후, 필터링된 주파수 도메인 값들을 주파수 도메인으로부터 공간 도메인으로 역변환하는 것을 포함할 수 있다.
단계(906)에서, 입력 비디오 스트림의 사본에 제N 필터를 적용한 후에 생성된 후보 비트스트림에 대한 비용 값이 결정된다. 특히, 제N 필터가 입력 비디오 스트림의 사본에 적용된 후, 입력 비디오 스트림의 결과적으로 필터링된 사본이 (예를 들어, 도 4에 도시된 인코더(400)와 같은 인코더를 사용하여) 후보 비트스트림으로 인코딩된다. 그 후, 후보 비트스트림에 대한 왜곡 값 및 비트레이트를 결정하기 위해 입력 비디오 스트림과 후보 비트스트림이 비교된다. 그 후, 비용 값은 후보 비트스트림에 대해 결정된 왜곡 값 및 비트레이트와 기준 비트스트림에 대해 결정된 왜곡 값 및 비트레이트 사이의 차이들에 기초하여 결정된다.
단계(908)에서는, 제N 필터의 적용으로 인해 초래되는 비용 값이 N개의 후보 필터를 사용하여 생성된 후보 비트스트림들에 대해 결정된 최저 비용 값인지 여부에 대한 결정이 이루어진다. 예를 들어, 제N-X 후보 비트스트림을 생성하기 위해 제N-X 필터의 적용으로 인해 초래되는 현재의 최저 비용 값이 버퍼 또는 다른 데이터 저장소에 저장될 수 있다. 제N 후보 비트스트림에 대한 비용 값이 최저 비용 값인지 여부를 결정하는 것은 해당 비용 값과 저장된 비용 값을 비교하는 것을 포함할 수 있다. 제N 후보 비트스트림에 대한 비용 값은 최저 비용 값으로서, 여기서 이것은 저장된 비용 값보다 낮다.
단계(910)에서는, 제N 후보 비트스트림에 대한 비용 값이 최저 비용 값이라는 결정에 응답하여, 제N 후보 비트스트림이 저장된다. 제N 후보 비트스트림을 저장하는 것은 이전에 저장된 제N-X 후보 비트스트림을 대체하기 위해 버퍼 또는 다른 데이터 저장소에 제N 후보 비트스트림을 저장하는 것을 포함한다. 예를 들어, 제N 후보 비트스트림 자체가 저장될 수 있고/있거나, 제N 후보 비트스트림의 인덱스 또는 다른 표시자가 저장될 수 있다. 대안적으로, 단계(912)에서는, 제N 후보 비트스트림에 대한 비용 값이 최저 비용 값이 아니라는 결정에 응답하여, 제N 후보 비트스트림이 폐기된다.
단계(914)에서, 제N 필터가 고려 가능한 잔여 최종 후보 필터인지 여부에 대한 결정이 이루어진다. 단계(916)에서, 제N 필터가 고려 가능한 잔여 최종 후보 필터가 아니라는 결정에 응답하여, N의 값은 1씩 증가하고, 프로세스가 반복된다. 대안적으로, 단계(918)에서, 제N 필터가 고려 가능한 잔여 최종 후보 필터라는 결정에 응답하여, 저장된 후보 비트스트림이 출력 비트스트림으로서 선택된다. 예를 들어, 제N 필터가 최종 잔여 필터인 것으로 결정이 이루어지기 전에 제N 후보 비트스트림이 버퍼 또는 다른 데이터 저장소에 저장되는 경우, 제N 후보 비트스트림이 출력 비트스트림으로서 선택된다.
일부 구현들에서, 기술(900)은 후보 비트스트림의 하나 이상의 양태와 임계 값을 비교하는 것을 포함할 수 있다. 예를 들어, 임계 값은 각각의 후보 필터의 적용 및 필터링된 비디오 스트림 사본의 후보 비트스트림으로의 후속 인코딩으로 인한 최대 허용 가능한 품질 손실을 나타낼 수 있다. 또 다른 예에서, 임계 값은 각각의 후보 필터의 적용 및 필터링된 비디오 스트림 사본의 후보 비트스트림으로의 후속 인코딩으로 인한 최대 허용 가능한 레이턴시를 나타낼 수 있다. 또 다른 예에서, 임계 값은 각각의 후보 필터의 적용 및 필터링된 비디오 스트림 사본의 후보 비트스트림으로의 후속 인코딩으로 인한 최대 허용 가능한 계산 자원 비용을 나타낼 수 있다.
이러한 구현에서, 후보 비트스트림의 하나 이상의 양태(예를 들어, 그것의 품질 손실, 레이턴시 및/또는 계산 자원 비용)는 (예를 들어, 후보 비트스트림에 대한 비용 값이 최저 비용 값을 나타내는지 여부를 결정하기 전에 또는 후보 비트스트림이 최저 비용 값을 갖는다는 결정에 응답하여 후보 비트스트림을 저장하기 전에) 임계 값과 비교된다. 하나 이상의 양태가 (예를 들어, 각각의 최대 값들을 초과하지 않음으로써) 임계 값을 충족하는 경우, 기술(900)은 후보 비트스트림의 프로세싱을 계속 진행할 수 있다. 그러나, 해당 하나 이상의 양태가 임계 값을 충족하지 않는 이벤트에서, 후보 비트스트림은 폐기되거나, 그렇지 않으면 추가로 프로세싱되지 않을 수 있다.
위에서 설명된 인코딩 및 디코딩의 양태들은 인코딩 및 디코딩 기술들의 일부 예들을 예시한다. 그러나, 인코딩 및 디코딩은, 해당 용어들이 청구 범위에서 사용되는 바와 같이, 압축, 압축 해제, 변환 또는 데이터의 임의의 다른 프로세싱 또는 변경을 의미할 수 있음을 이해해야 한다.
"예"라는 단어는 본 명세서에서 예, 사례 또는 예시로서 작용하는 것을 의미하기 위해 사용된다. 본 명세서에서 "예"로서 설명된 임의의 양태 또는 설계는 반드시 다른 양태들 또는 설계들에 비해 바람직하거나 유리한 것으로 해석될 필요는 없다. 오히려, "예"라는 단어의 사용은 구체적인 방식으로 개념들을 제시하기 위해 의도된다. 본 출원에서 사용되는 바와 같이, "또는"이라는 용어는 배타적인 "또는"이 아니라 포함적인 "또는"을 의미하는 것으로 의도된다. 즉, 달리 명시되거나 문맥에 의해 달리 명확하게 표시되지 않는 한, "X는 A 또는 B를 포함한다"라는 문구는 그것의 자연적인 포함형 치환들 중 임의의 것을 의미하는 것으로 의도된다. 즉, X가 A를 포함하는 경우; X가 B를 포함하는 경우; 또는 X가 A 및 B를 모두 포함하는 경우, "X는 A 또는 B를 포함한다"는 상기 사례들 중 임의의 것 하에서 충족된다. 또한, 본 출원 및 첨부된 청구 범위에서 사용되는 관사들 "a" 및 "an"은, 달리 명시되거나 단수 형태로 지향되는 문맥에 의해 명확하게 표시되지 않는 한, 일반적으로 "하나 이상"을 의미하는 것으로 해석되어야 한다. 또한, 본 개시내용 전반에 걸쳐 "구현"이라는 용어 또는 "일 구현"이라는 용어의 사용은, 동일한 구현으로서 설명되지 않는 한, 이를 의미하도록 의도되지 않는다.
송신국(102) 및/또는 수신국(106)의 구현들(및 인코더(400) 및 디코더(500)에 의한 것을 포함하여 이에 저장되고/되거나 이에 의해 실행되는 알고리즘들, 방법들, 명령어들 등)은 하드웨어, 소프트웨어 또는 이들의 임의의 조합으로 실현될 수 있다. 하드웨어는, 예를 들어, 컴퓨터들, IP(intellectual property) 코어들, ASIC(application-specific integrated circuit)들, 프로그래밍 가능 로직 어레이들, 광학 프로세서들, 프로그래밍 가능 로직 제어기들, 마이크로코드, 마이크로제어기들, 서버들, 마이크로프로세서들, 디지털 신호 프로세서들 또는 임의의 다른 적절한 회로를 포함할 수 있다. 청구 범위에서, "프로세서"라는 용어는 전술한 하드웨어 중 임의의 것을 단독으로 또는 조합하여 포함하는 것으로 이해되어야 한다. "신호" 및 "데이터"라는 용어들은 상호 교환적으로 사용된다. 또한, 송신국(102) 및 수신국(106)의 일부들이 반드시 동일한 방식으로 구현될 필요는 없다.
또한, 일 양태에서, 예를 들어, 송신국(102) 또는 수신국(106)은, 실행될 때, 본 명세서에서 설명된 각각의 방법들, 알고리즘들 및/또는 명령어들 중 임의의 것을 수행하는 컴퓨터 프로그램을 갖는 범용 컴퓨터 또는 범용 프로세서를 사용하여 구현될 수 있다. 또한, 또는 대안적으로, 예를 들어, 본 명세서에서 설명된 방법들, 알고리즘들 또는 명령어들 중 임의의 것을 수행하기 위한 다른 하드웨어를 포함할 수 있는 특수 목적 컴퓨터/프로세서가 이용될 수 있다.
송신국(102) 및 수신국(106)은, 예를 들어, 화상 회의 시스템의 컴퓨터들 상에서 구현될 수 있다. 대안적으로, 송신국(102)은 서버 상에서 구현될 수 있고, 수신국(106)은 핸드헬드 통신 디바이스와 같은 서버와 분리된 디바이스 상에서 구현될 수 있다. 이 경우, 송신국(102)은 인코더(400)를 사용하여 콘텐츠를 인코딩된 비디오 신호로 인코딩하고, 인코딩된 비디오 신호를 통신 디바이스로 송신할 수 있다. 이어서, 통신 디바이스는 그 후 디코더(500)를 사용하여 인코딩된 비디오 신호를 디코딩할 수 있다. 대안적으로, 통신 디바이스는 통신 디바이스 상에 국부적으로 저장된 콘텐츠, 예를 들어, 송신국(102)에 의해 송신되지 않은 콘텐츠를 디코딩할 수 있다. 다른 적절한 송신 및 수신 구현 방식들도 사용 가능하다. 예를 들어, 수신국(106)은 휴대용 통신 디바이스라기보다는 일반적으로 고정된 개인용 컴퓨터일 수 있고/있거나, 인코더(400)를 포함하는 디바이스는 디코더(500)를 포함할 수도 있다.
또한, 본 개시내용의 구현들의 전부 또는 일부는, 예를 들어, 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체로부터 액세스 가능한 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체는, 예를 들어, 임의의 프로세서에 의해 또는 이와 관련하여 사용하기 위해 프로그램을 유형적으로 포함하거나, 저장하거나, 통신하거나 또는 전송할 수 있는 임의의 디바이스일 수 있다. 매체는, 예를 들어, 전자, 자기, 광학, 전자기 또는 반도체 디바이스일 수 있다. 다른 적절한 매체들도 사용 가능하다.
위에서 설명된 구현들 및 다른 양태들은 본 개시내용의 용이한 이해를 용이하게 하기 위해 설명되었으며, 본 개시내용을 제한하지 않는다. 반대로, 본 개시내용은 첨부된 청구 범위의 범위 내에 포함된 다양한 수정들 및 등가 배열들을 포함하도록 의도되며, 이 범위는 이러한 모든 수정들 및 등가 배열들을 포함하도록 법에 의해 허용되는 가장 넓은 해석이 부여되어야 한다.

Claims (20)

  1. 입력 비디오 스트림을 출력 비트스트림으로 인코딩하기 위한 방법으로서,
    상기 입력 비디오 스트림의 제1 사본을 기준 비트스트림으로 인코딩하는 단계;
    상기 기준 비트스트림에 대한 제1 왜곡 값 및 제1 비트레이트를 결정하기 위해 상기 입력 비디오 스트림과 상기 기준 비트스트림을 비교하는 단계;
    다수의 후보 필터들의 각각의 후보 필터에 대해,
    상기 입력 비디오 스트림의 제2 사본의 주어진 프레임에 상기 후보 필터를 적용하여 상기 입력 비디오 스트림의 필터링된 제2 사본을 생성하는 단계;
    상기 입력 비디오 스트림의 필터링된 제2 사본을 후보 비트스트림으로 인코딩하는 단계;
    상기 후보 비트스트림에 대한 제2 왜곡 값 및 제2 비트레이트를 결정하기 위해 상기 입력 비디오 스트림과 상기 후보 비트스트림을 비교하는 단계; 및
    상기 제1 왜곡 값과 상기 제2 왜곡 값 사이의 차이에 기초하고 상기 제1 비트레이트와 상기 제2 비트레이트 사이의 차이에 기초하여 상기 후보 필터에 대한 비용 값을 결정하는 단계;
    상기 출력 비트스트림으로서, 상기 비용 값들 중 최저 비용 값을 갖는 후보 필터에 대응하는 후보 비트스트림을 선택하는 단계; 및
    상기 출력 비트스트림을 출력하거나 저장하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 후보 필터들은 유전 알고리즘(genetic algorithm), 경사 하강법 알고리즘(gradient descent algorithm) 또는 다른 비-선형 최적화 기술 중 적어도 하나를 사용하여 획득되는, 방법.
  3. 제1항 또는 제2항에 있어서, 상기 입력 비디오 스트림의 제2 사본의 상기 주어진 프레임에 상기 후보 필터를 적용하여 상기 입력 비디오 스트림의 필터링된 제2 사본을 생성하는 단계는,
    상기 주어진 프레임 내의 값들을 공간 도메인으로부터 주파수 도메인으로 변환하는 단계;
    상기 변환 후, 상기 주어진 프레임의 각각의 블록에 상기 후보 필터를 적용하여 필터링된 주파수 도메인 값들을 생성하는 단계; 및
    상기 필터링된 주파수 도메인 값들을 상기 주파수 도메인으로부터 상기 공간 도메인으로 역변환하는 단계
    를 포함하는, 방법.
  4. 제3항에 있어서, 상기 프레임의 각각의 블록에 상기 후보 필터를 적용하여 필터링된 주파수 도메인 값들을 생성하는 단계는,
    상기 후보 필터를 사용하여 상기 프레임의 중첩되는 블록 영역들을 디노이징하는(denoising) 단계를 포함하는, 방법.
  5. 제4항에 있어서, 상기 중첩되는 블록 영역들은 반-중첩되는 블록 영역들인, 방법.
  6. 제1항 또는 제2항에 있어서, 상기 후보 필터에 대해 상기 비용 값을 결정하는 단계는,
    상기 제1 왜곡 값과 상기 제2 왜곡 값 사이의 차이에 가중치를 적용함으로써 가중된 값을 계산하는 단계; 및
    상기 제1 비트레이트와 상기 제2 비트레이트 사이의 차이로부터 상기 가중된 값을 감산함으로써 상기 비용 값을 결정하는 단계
    를 포함하는, 방법.
  7. 제6항에 있어서, 상기 가중치는 상기 제2 왜곡 값의 타겟에 기초하여 정의되는, 방법.
  8. 입력 비디오 스트림을 출력 비트스트림으로 인코딩하기 위한 장치로서,
    메모리; 및
    상기 메모리에 저장되는 명령어들을 실행하도록 구성되는 프로세서
    를 포함하고, 상기 명령어들은,
    상기 입력 비디오 스트림의 제1 사본을 기준 비트스트림으로 인코딩하기 위한 명령어들;
    상기 기준 비트스트림에 대한 제1 왜곡 값 및 제1 비트레이트를 결정하기 위해 상기 입력 비디오 스트림과 상기 기준 비트스트림을 비교하기 위한 명령어들;
    다수의 후보 필터들의 각각의 후보 필터에 대해,
    상기 입력 비디오 스트림의 제2 사본의 주어진 프레임에 상기 후보 필터를 적용하여 상기 입력 비디오 스트림의 필터링된 제2 사본을 생성하기 위한 명령어들;
    상기 입력 비디오 스트림의 필터링된 제2 사본을 후보 비트스트림으로 인코딩하기 위한 명령어들;
    상기 후보 비트스트림에 대한 제2 왜곡 값 및 제2 비트레이트를 결정하기 위해 상기 입력 비디오 스트림과 상기 후보 비트스트림을 비교하기 위한 명령어들; 및
    상기 제1 왜곡 값과 상기 제2 왜곡 값 사이의 차이에 기초하고 상기 제1 비트레이트와 상기 제2 비트레이트 사이의 차이에 기초하여 상기 후보 필터에 대한 비용 값을 결정하기 위한 명령어들;
    상기 출력 비트스트림으로서, 상기 비용 값들 중 최저 비용 값을 갖는 후보 필터에 대응하는 후보 비트스트림을 선택하기 위한 명령어들; 및
    상기 출력 비트스트림을 출력하거나 저장하기 위한 명령어들
    을 포함하는, 장치.
  9. 제8항에 있어서, 상기 후보 필터들은 유전 알고리즘, 경사 하강법 알고리즘 또는 다른 비-선형 최적화 기술 중 적어도 하나를 사용하여 획득되는, 장치.
  10. 제8항 또는 제9항에 있어서, 상기 입력 비디오 스트림의 제2 사본의 상기 주어진 프레임에 상기 후보 필터를 적용하여 상기 입력 비디오 스트림의 필터링된 제2 사본을 생성하기 위한 명령어들은,
    상기 주어진 프레임 내의 값들을 공간 도메인으로부터 주파수 도메인으로 변환하기 위한 명령어들;
    상기 변환 후, 상기 주어진 프레임의 각각의 블록에 상기 후보 필터를 적용하여 필터링된 주파수 도메인 값들을 생성하기 위한 명령어들; 및
    상기 필터링된 주파수 도메인 값들을 상기 주파수 도메인으로부터 상기 공간 도메인으로 역변환하기 위한 명령어들
    을 포함하는, 장치.
  11. 제10항에 있어서, 상기 프레임의 각각의 블록에 상기 후보 필터를 적용하여 필터링된 주파수 도메인 값들을 생성하기 위한 명령어들은,
    상기 후보 필터를 사용하여 상기 프레임의 중첩되는 블록 영역들을 디노이징하기 위한 명령어들을 포함하는, 장치.
  12. 제11항에 있어서, 상기 중첩되는 블록 영역들은 반-중첩되는 블록 영역들인, 장치.
  13. 제8항 또는 제9항에 있어서, 상기 후보 필터에 대해 상기 비용 값을 결정하기 위한 명령어들은,
    상기 제1 왜곡 값과 상기 제2 왜곡 값 사이의 차이에 가중치를 적용함으로써 가중된 값을 계산하기 위한 명령어들; 및
    상기 제1 비트레이트와 상기 제2 비트레이트 사이의 차이로부터 상기 가중된 값을 감산함으로써 상기 비용 값을 결정하기 위한 명령어들
    을 포함하는, 장치.
  14. 제13항에 있어서, 상기 가중치는 상기 제2 왜곡 값의 타겟에 기초하여 정의되는, 장치.
  15. 입력 비디오 스트림을 출력 비트스트림으로 인코딩하기 위한 동작들을 수행하는 인코더로서, 상기 동작들은,
    상기 입력 비디오 스트림의 제1 사본을 기준 비트스트림으로 인코딩하는 동작;
    상기 기준 비트스트림에 대한 제1 왜곡 값 및 제1 비트레이트를 결정하기 위해 상기 입력 비디오 스트림과 상기 기준 비트스트림을 비교하는 동작;
    다수의 후보 필터들의 각각의 후보 필터에 대해,
    상기 입력 비디오 스트림의 제2 사본의 주어진 프레임에 상기 후보 필터를 적용하여 상기 입력 비디오 스트림의 필터링된 제2 사본을 생성하는 동작;
    상기 입력 비디오 스트림의 필터링된 제2 사본을 후보 비트스트림으로 인코딩하는 동작;
    상기 후보 비트스트림에 대한 제2 왜곡 값 및 제2 비트레이트를 결정하기 위해 상기 입력 비디오 스트림과 상기 후보 비트스트림을 비교하는 동작; 및
    상기 제1 왜곡 값과 상기 제2 왜곡 값 사이의 차이에 기초하고 상기 제1 비트레이트와 상기 제2 비트레이트 사이의 차이에 기초하여 상기 후보 필터에 대한 비용 값을 결정하는 동작;
    상기 출력 비트스트림으로서, 상기 비용 값들 중 최저 비용 값을 갖는 후보 필터에 대응하는 후보 비트스트림을 선택하는 동작; 및
    상기 출력 비트스트림을 출력하거나 저장하는 동작
    을 포함하는, 인코더.
  16. 제15항에 있어서, 상기 후보 필터들은 유전 알고리즘, 경사 하강법 알고리즘 또는 다른 비-선형 최적화 기술 중 적어도 하나를 사용하여 획득되는, 인코더.
  17. 제15항 또는 제16항에 있어서, 상기 입력 비디오 스트림의 제2 사본의 상기 주어진 프레임에 상기 후보 필터를 적용하여 상기 입력 비디오 스트림의 필터링된 제2 사본을 생성하는 동작은,
    상기 주어진 프레임 내의 값들을 공간 도메인으로부터 주파수 도메인으로 변환하는 동작;
    상기 변환 후, 상기 주어진 프레임의 각각의 블록에 상기 후보 필터를 적용하여 필터링된 주파수 도메인 값들을 생성하는 동작; 및
    상기 필터링된 주파수 도메인 값들을 상기 주파수 도메인으로부터 상기 공간 도메인으로 역변환하는 동작
    을 포함하는, 인코더.
  18. 제17항에 있어서, 상기 프레임의 각각의 블록에 상기 후보 필터를 적용하여 필터링된 주파수 도메인 값들을 생성하는 동작은,
    상기 후보 필터를 사용하여 상기 프레임의 중첩되는 블록 영역들을 디노이징하는 동작을 포함하는, 인코더.
  19. 제18항에 있어서, 상기 중첩되는 블록 영역들은 반-중첩되는 블록 영역들인, 인코더.
  20. 제15항 또는 제16항에 있어서, 상기 후보 필터에 대해 상기 비용 값을 결정하는 동작은,
    상기 제1 왜곡 값과 상기 제2 왜곡 값 사이의 차이에 가중치를 적용함으로써 가중된 값을 계산하는 동작; 및
    상기 제1 비트레이트와 상기 제2 비트레이트 사이의 차이로부터 상기 가중된 값을 감산함으로써 상기 비용 값을 결정하는 동작
    을 포함하고,
    상기 가중치는 상기 제2 왜곡 값의 타겟에 기초하여 정의되는, 인코더.
KR1020217019333A 2018-12-24 2019-04-25 비트레이트 감소를 위한 비디오 스트림 적응형 필터링 KR102668253B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862784626P 2018-12-24 2018-12-24
US62/784,626 2018-12-24
PCT/US2019/029088 WO2020139414A1 (en) 2018-12-24 2019-04-25 Video stream adaptive filtering for bitrate reduction

Publications (2)

Publication Number Publication Date
KR20210089778A KR20210089778A (ko) 2021-07-16
KR102668253B1 true KR102668253B1 (ko) 2024-05-21

Family

ID=66857970

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217019333A KR102668253B1 (ko) 2018-12-24 2019-04-25 비트레이트 감소를 위한 비디오 스트림 적응형 필터링

Country Status (6)

Country Link
US (1) US20220078446A1 (ko)
EP (1) EP3884666A1 (ko)
JP (1) JP7125559B2 (ko)
KR (1) KR102668253B1 (ko)
CN (1) CN113170121A (ko)
WO (1) WO2020139414A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9248834B1 (en) 2014-10-02 2016-02-02 Google Inc. Predicting trajectories of objects based on contextual information
US11611770B2 (en) * 2020-10-14 2023-03-21 Tencent America LLC Method and apparatus for video coding

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010123855A1 (en) * 2009-04-20 2010-10-28 Dolby Laboratories Licensing Corporation Filter selection for video pre-processing in video applications
WO2017133660A1 (en) * 2016-02-04 2017-08-10 Mediatek Inc. Method and apparatus of non-local adaptive in-loop filters in video coding

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748792A (en) * 1996-08-13 1998-05-05 Polaroid Corporation Large kernel filtering using a fixed-size block processor
WO2000042772A1 (en) * 1999-01-15 2000-07-20 Koninklijke Philips Electronics N.V. Coding and noise filtering an image sequence
US7450771B2 (en) * 2004-07-09 2008-11-11 National Taiwan University Pre-compression rate-distortion optimization method for JPEG 2000
JP2006157084A (ja) 2004-11-25 2006-06-15 Canon Inc 画像符号化装置、画像符号化方法、及びコンピュータプログラム
WO2006056940A1 (en) * 2004-11-25 2006-06-01 Koninklijke Philips Electronics N.V. Reduction of compression artifacts in displayed images
US8204128B2 (en) * 2007-08-01 2012-06-19 Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of Industry, Through The Communications Research Centre Canada Learning filters for enhancing the quality of block coded still and video images

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010123855A1 (en) * 2009-04-20 2010-10-28 Dolby Laboratories Licensing Corporation Filter selection for video pre-processing in video applications
WO2017133660A1 (en) * 2016-02-04 2017-08-10 Mediatek Inc. Method and apparatus of non-local adaptive in-loop filters in video coding

Also Published As

Publication number Publication date
JP7125559B2 (ja) 2022-08-24
WO2020139414A1 (en) 2020-07-02
CN113170121A (zh) 2021-07-23
EP3884666A1 (en) 2021-09-29
JP2022514505A (ja) 2022-02-14
KR20210089778A (ko) 2021-07-16
US20220078446A1 (en) 2022-03-10

Similar Documents

Publication Publication Date Title
US20220207654A1 (en) Guided restoration of video data using neural networks
US10798408B2 (en) Last frame motion vector partitioning
US9131073B1 (en) Motion estimation aided noise reduction
US10009622B1 (en) Video coding with degradation of residuals
US10798402B2 (en) Same frame motion estimation and compensation
US10277905B2 (en) Transform selection for non-baseband signal coding
US20170302965A1 (en) Adaptive directional loop filter
US9392272B1 (en) Video coding using adaptive source variance based partitioning
WO2014026097A1 (en) Two-step quantization and coding method and apparatus
WO2019018011A1 (en) VIDEO CODING USING FRAME ORIENTATION
US9578324B1 (en) Video coding using statistical-based spatially differentiated partitioning
KR102668253B1 (ko) 비트레이트 감소를 위한 비디오 스트림 적응형 필터링
US9210424B1 (en) Adaptive prediction block size in video coding
US10491923B2 (en) Directional deblocking filter
KR102335184B1 (ko) 복합 모션-보상 예측
EP4264943A1 (en) Palette mode coding with designated bit depth precision
US10771783B2 (en) Transforms for large video and image blocks
WO2024020119A1 (en) Bit stream syntax for partition types

Legal Events

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