KR20140056342A - 파티션 기반 필터들을 적용하는 비디오 코딩 방법과 디바이스, 및 저장 매체 - Google Patents

파티션 기반 필터들을 적용하는 비디오 코딩 방법과 디바이스, 및 저장 매체 Download PDF

Info

Publication number
KR20140056342A
KR20140056342A KR1020147006869A KR20147006869A KR20140056342A KR 20140056342 A KR20140056342 A KR 20140056342A KR 1020147006869 A KR1020147006869 A KR 1020147006869A KR 20147006869 A KR20147006869 A KR 20147006869A KR 20140056342 A KR20140056342 A KR 20140056342A
Authority
KR
South Korea
Prior art keywords
filter
video data
partial
coefficients
video
Prior art date
Application number
KR1020147006869A
Other languages
English (en)
Other versions
KR101565266B1 (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 KR20140056342A publication Critical patent/KR20140056342A/ko
Application granted granted Critical
Publication of KR101565266B1 publication Critical patent/KR101565266B1/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/649Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding the transform being applied to non rectangular image segments
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • H04N19/64Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission
    • H04N19/647Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets characterised by ordering of coefficients or of bits for transmission using significance based coding, e.g. Embedded Zerotrees of Wavelets [EZW] or Set Partitioning in Hierarchical Trees [SPIHT]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Abstract

일반적으로, 기법들은 비디오 데이터를 코딩하는 경우 파티션 기반 필터들을 적용하는 것에 대해 설명된다. 적어도 하나의 프로세서를 포함하는 디바이스는 기법들을 구현하도록 구성될 수도 있다. 프로세서는 비디오 데이터의 제 1 부분의 경계 근처에 적용하기 위한 필터를 선택하고, 선택된 필터의 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 결정한다. 그 결정에 기초하여, 프로세서는 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 포함하지 않는 부분 필터를 결정한다. 프로세서는 부분 필터 내에 포함된 복수의 필터 계수들을 재정규화하고, 비디오 데이터의 제 1 부분의 경계 근처에 재정규화된 부분 필터를 적용하여 비디오 데이터의 필터링된 제 1 부분을 발생시킨다.

Description

파티션 기반 필터들을 적용하는 비디오 코딩 방법과 디바이스, 및 저장 매체{METHOD AND DEVICE FOR VIDEO CODING APPLYING PARITION-BASED FILTERS, AND STORAGE MEDIUM}
본 출원은 2011 년 8 월 18 일에 출원된 미국 가출원 제 61/525,128 호, 2011 년 8 월 19 일에 출원된 미국 가출원 제 61/525,606 호, 및 2011 년 9 월 6 일에 출원된 미국 가출원 제 61/531,528 호의 혜택을 주장하며, 여기서 이러한 미국 가출원들의 각각의 전체 내용들이 참조로써 본원에 포함된다.
기술분야
본 개시물은 데이터 압축에 관한 것으로, 좀더 구체적으로, 파티션 기반 필터들을 수반하는 데이터 압축에 관한 것이다.
데이터 압축은 데이터 저장 공간, 송신 대역폭, 또는 양자 모두의 소비를 감소시키기 위해 다양한 애플리케이션들에서 널리 이용된다. 데이터 압축의 예시적인 응용들은 디지털 비디오, 이미지, 발화, 및 오디오 코딩과 같은 시각적 혹은 청각적 미디어 데이터 코딩을 포함한다. 디지털 비디오 코딩은, 예를 들어, 디지털 텔레비전들, 디지털 집적 방송 시스템들, 무선 통신 디바이스들, 개인용 디지털 어시스턴트 (PDA) 들, 랩탑 혹은 데스크탑 컴퓨터들, 태블릿 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 비디오 게임 디바이스들, 셀룰러 혹은 위성 무선 전화들 등을 포함하여, 광 범위의 디바이스들에서 이용된다. 디지털 비디오 디바이스들은 보다 효율적으로 디지털 비디오를 송수신하기 위해 MPEG-2 표준, MPEG-4 표준, H.264/MPEG-4 고급 비디오 코딩 (AVC) 표준, 또는 (종종 신생 H.265 표준이라고 지칭되는) 신생 고효율 비디오 코딩 (HEVC) 표준과 같은 표준들에 따른 비디오 압축 기법들을 구현한다.
비디오 압축 기법들은 공간 예측, 모션 추정, 및 모션 보상을 수행하여 비디오 데이터에 내재하는 리던던시를 감소시키거나 제거할 수도 있다. 특히, 인트라 코딩은 주어진 비디오 프레임 내의 비디오에서 공간적 리던던시를 감소시키거나 제거하기 위해 공간 예측에 의존한다. 인터 코딩은 비디오 시퀀스의 인접한 프레임들 내의 비디오에서 시간적 리던던시를 감소시키거나 제거하기 위해 시간 예측에 의존한다. 인터 코딩을 위해, 비디오 인코더는 모션 추정을 수행하여 2 개 이상의 인접한 프레임들 사이의 매칭하는 유닛들 (이는 H.264/MPEG-4 AVC 표준과 같은 다양한 비디오 코딩 표준들에서 블록들이라고 지칭될 수도 있다) 의 이동을 추적한다. 모션 추정은 하나 이상의 참조 프레임들에서 대응하는 유닛들에 대한 현재의 프레임의 유닛들의 변위를 나타내는 모션 벡터들을 발생시킨다. 모션 보상은 모션 벡터를 이용하여 참조 프레임으로부터 예측 데이터를 발생시킨다. 모션 보상 후에, 원래의 유닛으로부터 예측 데이터를 감산함으로써 잔여 데이터가 형성된다.
비디오 인코더는 그 다음에 변환에 뒤이어 양자화 및 무손실 통계적 코딩 프로세스들을 적용하여 비디오 코딩 프로세스에 의해 생성된 잔여 데이터의 비트 레이트를 더 감소시킨다. 일부 사례들에서, 적용된 변환은 이산 코사인 변환 (DCT) 을 포함한다. 잔여 데이터에 DCT 을 적용함으로써 생성된 DCT 계수들은 그 다음에 양자화 및 (통상적으로 "엔트로피 코딩" 프로세스들이라고 알려진) 무손실 통계적 코딩 프로세스들을 겪어 비트스트림을 발생시킨다. 통계적 코딩 프로세스들의 예들은 컨텍스트 적응형 가변 길이 코딩 (CAVLC) 또는 컨텍스트 적응형 이진 산술 코딩 (CABAC) 을 포함한다. 비디오 디코더는 인코딩된 비트스트림을 수신하여 무손실 디코딩을 수행해 DCT 계수들을 압축해제하며, 비디오 디코더는 그 다음에 하나 이상의 역 DCT (IDCT) 들의 적용을 통해 공간 도메인으로 다시 변환시켜 유닛들의 각각에 대한 잔여 데이터를 형성한다. 잔여 데이터 및 모션 정보를 이용하여, 비디오 디코더는 인코딩된 비디오를 복원한다.
일반적으로, 본 개시물은 디블록킹 (de-blocking; DB) 필터, 샘플 적응형 오프셋 (sample adaptive offset; SAO) 필터, 및/또는 (종종 "ALF" 라고도 표기되는) 적응형 루프 (adaptive loop; AL) 필터와 같은 하나 이상의 파티션 기반 필터들의 적용을 통한 비디오 데이터를 코딩하는 기법들에 대한 것이다. 기법들은, 적응형 루프 필터들의 종래의 구현들과 비교하여 이러한 필터들을 구현하는데 요구되는 버퍼 용량을 감소시키고 한편으로는 또한 가능하게는 이러한 유형의 필터들의 종래의 구현들에서 일어나는 시각적 품질 문제들을 감소시킬 수도 있는 이러한 필터들을 적용하는 경우, 일반적으로 비디오 인코더 및/또는 비디오 디코더를 지칭할 수도 있는 비디오 코더가, 다수의 기법들을 수행하는 것을 가능하게 할 수도 있다.
동작 시에, 비디오 코더는 인코딩 목적 (예를 들어, 시간 예측에 있어서 모션 추정/압축을 수행하는 경우 비교를 위해) 또는 디코딩 목적 (예를 들어, 재생 목적 또는 저장 목적) 의 어느 일방을 위해 비디오 데이터를 복원하도록 비디오 데이터를 디코딩할 수도 있다. 비디오 데이터가 복원되면, 비디오 코더가 그 다음에 필터들을 적용하여 비디오 데이터의 블록들을 분리하는 경계들에 걸쳐 일어날 수도 있는 차이들을 평활화할 수도 있다. 이러한 차이들은 종종 (실질적으로 라운딩을 지칭하는 다른 방식인) 양자화로 인한 결과이며, 양자화는 비디오 디코더가 고차 변환 계수들을 제거하기 위해 수행함으로써 비디오 데이터를 압축시킬 수도 있는 것이다. (또한 불일치들을 포함할 수도 있는) 비디오 데이터의 인접한 블록 다음에 뷰잉되는 경우에 비디오 데이터의 블록에서의 불일치들이 일어날 수도 있도록 비디오 데이터의 블록을 변경하는 방식으로 비디오 데이터의 일 블록이 양자화될 수도 있다. 비디오 코더는 그 다음에 이러한 경계에 걸쳐 하나 이상의 필터들을 적용하여 이러한 불일치들 (이는 종종 "블록화 아티팩트들" 이라고 지칭되며, 여기서 용어 "블록화" 는 비디오 데이터를 블록들로 나누는 것을 수반하는 비디오 코딩의 양상을 지칭한다) 을 약화시킬 수도 있다.
종종 비디오 코더는 3 개의 필터들을 차례로 적용하며, 제 1 필터를 적용한 결과가 그 다음에 제 2 필터에 의해 필터링되는 등이다. 이러한 필터들이 적용될 수도 있는 속도를 개선시키기 위해, 기법들은 비디오 코더가 이러한 필터들의 소정의 계수들을 없애는 것을 가능하게 하여 "부분 필터들" 이라고 지칭될 수도 있는 것을 발생시킬 수도 있다. 이러한 부분 필터들은 다음 필터에 의해 생성된 결과에 보다 쉽게 적용될 수도 있는데, 보다 적은 픽셀들의 행들이 부분 필터들에 의해 필터링될 수도 있기 때문이다. 또한, 이러한 필터들이 블록 경계들에 걸쳐 적용되는 것을 고려하면, 종종 이러한 필터들의 적용은 이전 블록들의 행들이 버퍼링될 필요가 있음을 요구할 수도 있다. 기법들은 비디오 코더가 수직 방향으로 정렬된 필터 계수들을 제거하는 것을 가능하게 할 수도 있어, 보다 적은 행들이 필터링될 수도 있기 때문에 가능하게는 버퍼 요구사항들을 감소시키는 한편 또한 이러한 필터들의 보다 효율적인 응용을 증진한다.
일 양상에서, 복원된 비디오 데이터를 발생시키기 위해 비디오 데이터를 코딩하는 방법은, 인코딩된 비디오 데이터를 디코딩하는 경우, 미러 패딩을 수행해 복원된 비디오 데이터의 제 1 부분의 경계에 위치된 픽셀 값들을 미러링하여 이용가능하지 않은 비디오 데이터의 제 2 부분의 픽셀 값들을 대체하는 단계를 포함한다. 경계는 비디오 데이터의 제 1 부분을 비디오 데이터의 제 2 부분으로부터 분리한다. 방법은 또한 하나 이상의 필터들을 적용하여 미러링된 픽셀 값들 중 적어도 하나의 미러링된 픽셀 값을 필터링하는 단계를 포함한다.
다른 양상에서, 복원된 비디오 데이터를 발생시키기 위해 비디오 데이터를 코딩하기 위한 디바이스는 인코딩된 비디오 데이터를 디코딩하는 경우, 미러링 패딩을 수행해 복원된 비디오 데이터의 제 1 부분의 경계에 위치된 픽셀 값들을 미러링하여 이용가능하지 않은 비디오 데이터의 제 2 부분의 픽셀 값들을 대체하는 수단을 포함한다. 경계는 비디오 데이터의 제 1 부분을 비디오 데이터의 제 2 부분으로부터 분리한다. 디바이스는 또한 하나 이상의 필터들을 적용하여 미러링된 픽셀 값들 중 적어도 하나의 미러링된 픽셀 값을 필터링하는 수단을 포함한다.
다른 양상에서, 복원된 비디오 데이터를 발생시키기 위해 인코딩된 비디오 데이터를 코딩하기 위한 디바이스는, 인코딩된 비디오 데이터를 디코딩하는 경우, 미러 패딩을 수행해 복원된 비디오 데이터의 제 1 부분의 경계에 위치된 픽셀 값들을 미러링하여 이용가능하지 않은 비디오 데이터의 제 2 부분의 픽셀 값들을 대체하도록 구성된 하나 이상의 프로세서들을 포함한다. 경계는 비디오 데이터의 제 1 부분을 비디오 데이터의 제 2 부분으로부터 분리한다. 하나 이상의 프로세서들은 또한 하나 이상의 필터들을 적용하여 미러링된 픽셀 값들 중 적어도 하나의 미러링된 픽셀 값을 필터링하도록 구성된다.
다른 양상에서, 비일시적 컴퓨터 판독가능 저장 매체는, 실행 시, 디바이스의 하나 이상의 프로세서들로 하여금, 복원된 비디오 데이터를 발생시키기 위해 인코딩된 비디오 데이터를 디코딩하는 경우, 미러 패딩을 수행해 복원된 비디오 데이터의 제 1 부분의 경계에 위치된 픽셀 값들을 미러링하여 이용가능하지 않은 비디오 데이터의 제 2 부분의 픽셀 값들을 대체하게 하도록 하는, 저장된 명령들을 포함하며, 여기서 경계는 비디오 데이터의 제 1 부분을 비디오 데이터의 제 2 부분으로부터 분리하고, 하나 이상의 필터들을 적용하여 미러링된 픽셀 값들 중 적어도 하나의 미러링된 픽셀 값을 필터링한다.
다른 양상에서, 비디오 데이터를 코딩하는 방법은 비디오 데이터의 제 1 부분을 비디오 데이터의 제 2 부분으로부터 분리하는, 비디오 데이터의 제 1 부분의 경계 근처에 적용하기 위한 필터를 선택하는 단계를 포함하며, 여기서 필터는 복수의 필터 계수들을 포함한다. 방법은 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 결정하는 단계, 및 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수의 결정에 기초하여, 부분 필터를 결정하는 단계를 또한 포함하며, 여기서 부분 필터는 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 포함하지 않는다. 방법은 부분 필터 내에 포함된 복수의 필터 계수들을 재정규화는 단계, 및 디바이스로 비디오 데이터의 제 1 부분의 경계 근처에 재정규화된 부분 필터를 적용하여 비디오 데이터의 필터링된 제 1 부분을 발생시키는 단계를 또한 포함한다.
다른 양상에서, 비디오 데이터를 코딩하기 위한 디바이스는 비디오 데이터의 제 1 부분을 비디오 데이터의 제 2 부분으로부터 분리하는 비디오 데이터의 제 1 부분의 경계 근처에 적용하기 위한 필터를 선택하는 수단을 포함하며, 여기서 필터는 복수의 필터 계수들을 포함한다. 디바이스는 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 결정하는 수단, 및 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수의 결정에 기초하여, 부분 필터를 결정하는 수단을 또한 포함하며, 여기서 부분 필터는 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 포함하지 않는다. 디바이스는 또한 부분 필터 내에 포함된 복수의 필터 계수들을 재정규화는 수단, 및 디바이스로 비디오 데이터의 제 1 부분의 경계 근처에 재정규화된 부분 필터를 적용하여 비디오 데이터의 필터링된 제 1 부분을 발생시키는 수단을 포함한다.
다른 양상에서, 비디오 데이터를 코딩하기 위한 디바이스는 비디오 데이터의 제 1 부분을 비디오 데이터의 제 2 부분으로부터 분리하는 비디오 데이터의 제 1 부분의 경계 근처에 적용하기 위한 필터를 선택하도록 구성된 하나 이상의 프로세서들을 포함하며, 여기서 필터는 복수의 필터 계수들을 포함한다. 하나 이상의 프로세서들은 또한 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 결정하고, 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수의 결정에 기초하도록 구성된다. 하나 이상의 프로세서들은 또한 부분 필터를 결정하며 (여기서 부분 필터는 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 포함하지 않는다), 부분 필터 내에 포함된 복수의 필터 계수들을 재정규화하고, 비디오 데이터의 제 1 부분의 경계 근처에 재정규화된 부분 필터를 적용하여 비디오 데이터의 필터링된 제 1 부분을 발생시키도록 구성된다.
다른 양상에서, 비일시적 컴퓨터 판독가능 저장 매체는, 실행 시, 디바이스의 하나 이상의 프로세서들로 하여금, 비디오 데이터의 제 1 부분을 비디오 데이터의 제 2 부분으로부터 분리하는 비디오 데이터의 제 1 부분의 경계 근처에 적용하기 위한 필터를 선택하며 (여기서 필터는 복수의 필터 계수들을 포함한다), 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 결정하며, 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수의 결정에 기초하여, 부분 필터를 결정하며 (여기서 부분 필터는 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 포함하지 않는다), 부분 필터 내에 포함된 복수의 필터 계수들을 재정규화하고, 비디오 데이터의 제 1 부분의 경계 근처에 재정규화된 부분 필터를 적용하여 비디오 데이터의 필터링된 제 1 부분을 발생시키게 하도록 하는, 저장된 명령들을 포함한다.
본 기법들의 하나 이상의 양상들의 세부사항들이 첨부 도면들과 하기 설명에서 제시된다. 본 개시물에서 설명된 기법들의 다른 특색들, 목적들, 및 이점들은 설명 및 도면들로부터, 그리고 청구항들로부터 자명할 것이다.
도 1 은 본 개시물의 기법들을 구현할 수도 있는 비디오 인코딩 및 디코딩 시스템을 도시하는 블록 다이어그램이다.
도 2 는 본 개시물에서 설명된 파티션 기반 필터 기법들을 구현할 수도 있는 도 1 의 예에서 도시된 비디오 인코더의 예를 도시하는 블록 다이어그램이다.
도 3 은 본 개시물에서 설명된 파티션 기반 필터링 기법들을 구현할 수도 있는 도 1 의 예에서 도시된 비디오 디코더의 예를 도시하는 블록 다이어그램이다.
도 4a 내지 도 4e 는 본 개시물에서 설명된 기법들의 부분 필터링 양상들에 따라 필터링되는 비디오 데이터의 예시적인 블록을 도시하는 다이어그램들이다.
도 5a 및 도 5b 는 본 개시물에서 설명된 기법들의 미러 패딩 양상들에 따라 필터링되는 비디오 데이터의 예시적인 블록을 도시하는 다이어그램들이다.
도 6 은 본 개시물에서 설명된 기법들의 부분 필터링 양상들을 구현하는데서 비디오 코더의 예시적인 동작을 도시하는 플로차트이다.
도 7 은 본 개시물에서 설명된 기법들의 미러 패딩 양상들을 구현하는데서 비디오 코더의 예시적인 동작을 도시하는 플로차트이다.
도 1 은 본 개시물의 기법들을 구현할 수도 있는 비디오 인코딩 및 디코딩 시스템 (10) 을 도시하는 블록 다이어그램이다. 도 1 에 도시된 바와 같이, 시스템 (10) 은 목적지 디바이스 (14) 에 의한 디코딩을 위한 인코딩된 비디오를 발생시키는 소스 디바이스 (12) 를 포함한다. 소스 디바이스 (12) 는 통신 채널 (16) 을 통해 목적지 디바이스 (14) 에 인코딩된 비디오를 송신할 수도 있거나, 인코딩된 비디오를 저장 매체 (34) 또는 파일 서버 (36) 에 저장하여, 원하는 경우 인코딩된 비디오가 목적지 디바이스 (14) 에 의해 액세스될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 데스크탑 컴퓨터들, 노트북 (즉, 랩탑) 컴퓨터들, 태블릿 컴퓨터들, 셋 톱 박스들, (셀룰러 전화들이나 핸드셋들 및 이른바 스마트폰들을 포함하는) 전화 핸드셋들, 텔레비젼들, 카메라들, 디스플레이 디바이스들, 디지털 미디어 플레이어들, 비디오 게임 콘솔들 등을 포함하는 아주 다양한 디바이스들 중 임의의 것을 포함할 수도 있다.
많은 경우들에서, 이러한 디바이스들은 무선 통신을 위한 설비를 구비할 수도 있다. 따라서, 통신 채널 (16) 은 무선 채널을 포함할 수도 있다. 대안으로, 통신 채널 (16) 은 유선 채널, 무선 채널과 유선 채널의 조합, 또는 임의의 다른 유형의 통신 채널이나 무선 주파수 (RF) 스펙트럼 혹은 하나 이상의 물리적 송신 라인들과 같은, 인코딩된 비디오 데이터의 송신에 적절한 통신 채널들의 조합을 포함할 수도 있다. 일부 예들에서, 통신 채널 (16) 은 근거리 통신망 (LAN), 광역 통신망 (WAN), 또는 인터넷과 같은 글로벌 통신망과 같은 패킷 기반망의 일부를 형성할 수도 있다. 통신 채널 (16) 은, 따라서, 일반적으로, 유선 매체 또는 무선 매체의 임의의 적절한 조합을 포함하는, 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 비디오 데이터를 송신하기 위한, 임의의 적절한 통신 매체, 또는 상이한 통신 매체들의 집합을 표현한다. 통신 채널 (16) 은 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 가능하게 하기에 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
도 1 의 예에서 더 도시된 바와 같이, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 변조기/복조기 (22) ("모뎀 (22)"), 및 송신기 (24) 를 포함한다. 소스 디바이스 (12) 에서, 비디오 소스 (18) 는 비디오 캡쳐 디바이스와 같은 소스를 포함할 수도 있다. 비디오 캡쳐 디바이스는, 예로서, 비디오 카메라, 이전에 캡쳐된 비디오를 포함하는 비디오 아카이브, 비디오 컨텐츠 제공자로부터 비디오를 수신하기 위한 비디오 피드 인터페이스, 및/또는 소스 비디오로서 컴퓨터 그래픽스 데이터를 발생시키기 위한 컴퓨터 그래픽스 시스템 중 하나 이상을 포함할 수도 있다. 일 예로서, 비디오 소스 (18) 가 비디오 카메라인 경우, 소스 디바이스 (12) 및 목적지 디바이스 (14) 는 이른바 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 본 개시물에 설명된 기법들은, 그러나, 무선 애플리케이션들 또는 설정들로 제한되지 않고, 비디오 인코딩 및/또는 디코딩 능력들을 포함하는 비무선 디바이스들에 적용될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (16) 는, 따라서, 단지 본원에 설명된 기법들을 지원할 수 있는 코딩 디바이스들의 예들일 뿐이다.
비디오 인코더 (20) 는 캡쳐되거나, 사전 캡쳐되거나, 컴퓨터로 발생된 비디오를 인코딩할 수도 있다. 인코딩되면, 비디오 인코더 (20) 는 모뎀 (22) 에 이러한 인코딩된 비디오를 출력할 수도 있다. 모뎀 (22) 은 그 다음에 무선 통신 프로토콜과 같은 통신 표준에 따라 인코딩된 비디오를 변조할 수도 있으며, 그 결과 송신기 (24) 가 목적지 디바이스 (14) 에 변조되고 인코딩된 비디오 데이터를 송신할 수도 있다. 모뎀 (22) 은 다양한 믹서들, 필터들, 증폭기들, 또는 신호 변조를 위해 설계된 다른 컴포넌트들을 포함할 수도 있다. 송신기 (24) 는 증폭기들, 필터들, 및 하나 이상의 안테나들을 포함하여, 데이터를 송신하도록 설계된 회로들을 포함할 수도 있다.
비디오 인코더 (20) 에 의해 인코딩되는 캡쳐되거나, 사전 캡쳐되거나, 컴퓨터에 의해 발생된 비디오는 추후의 검색, 디코딩, 및 소비를 위해 저장 매체 (34) 또는 파일 서버 (36) 에 또한 저장될 수도 있다. 저장 매체 (34) 는 블루레이 디스크들, DVD 들, CD-ROM 들, 플래시 메모리, 또는 인코딩된 비디오를 저장하기 위한 임의의 다른 적절한 디지털 저장 매체들을 포함할 수도 있다. 목적지 디바이스 (14) 는 저장 매체 (34) 또는 파일 서버 (36) 상에 저장된 인코딩된 비디오에 액세스하며, 이러한 인코딩된 비디오를 디코딩하여 디코딩된 비디오를 발생시키고, 이러한 디코딩된 비디오를 재생할 수도 있다.
파일 서버 (36) 는 인코딩된 비디오를 저장하고 인코딩된 비디오 데이터를 목적지 디바이스 (14) 에 송신할 수 있는 임의의 유형의 서버일 수도 있다. 예시적인 파일 서버들은 (예를 들어, 웹사이트를 위한) 웹 서버, FTP 서버, 네트워크 연결 저장 (network attached storage; NAS) 디바이스들, 로컬 디스크 드라이브, 또는 인코딩된 비디오 데이터를 저장하고 목적지 디바이스에 인코딩된 비디오 데이터를 송신할 수 있는 임의의 다른 유형의 디바이스를 포함한다. 파일 서버 (36) 로부터의 인코딩된 비디오 데이터의 송신은 스트리밍 송신, 다운로드 송신, 또는 양자 모두의 조합일 수도 있다. 목적지 디바이스 (14) 는 인터넷 접속을 포함하여 임의의 표준 데이터 접속에 따라 파일 서버 (36) 에 액세스할 수도 있다. 이러한 접속은 무선 채널 (예를 들어, Wi-Fi 접속 또는 무선 셀룰러 데이터 접속), 유선 접속 (예를 들어, DSL, 케이블 모뎀 등), 유선 채널과 무선 채널 양자 모두의 조합, 또는 파일 서버 상에 저장된 인코딩된 비디오 데이터에 액세스하기에 적절한 임의의 다른 유형의 통신 채널을 포함할 수도 있다.
도 1 의 예에서의 목적지 디바이스 (14) 는 수신기 (26), 모뎀 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (29) 를 포함한다. 목적지 디바이스 (14) 의 수신기 (26) 는 채널 (16) 을 통해 정보를 수신하고, 모뎀 (28) 은 그 정보를 복조하여 비디오 디코더 (30) 를 위해 복조된 비트스트림을 생성한다. 채널 (16) 을 통해 통신된 정보는 연관된 인코딩된 비디오 데이터를 디코딩하는데서 비디오 디코더 (30) 에 의해 이용하기 위해 비디오 인코더 (20) 에 의해 발생된 다양한 구문 정보를 포함할 수도 있다. 이러한 구문은 또한 저장 매체 (34) 또는 파일 서버 (36) 상에 저장된 인코딩된 비디오 데이터와 함께 포함될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 비디오 데이터를 인코딩 또는 디코딩할 수 있는 각각의 인코더-디코더 (CODEC) 의 일부를 형성할 수도 있다.
목적지 디바이스 (14) 의 디스플레이 디바이스 (29) 는 뷰어에 의해 소비하기 위한 비디오 데이터를 프레젠팅할 수 있는 임의의 유형의 디스플레이를 표현한다. 목적지 디바이스 (14) 와 통합되는 것으로 도시되었지만, 디스플레이 디바이스 (29) 는 목적지 디바이스 (14) 와 통합될 수도 있거나, 그 외부에 있을 수도 있다. 일부 예들에서, 목적지 디바이스 (14) 는 통합 디스플레이 디바이스를 포함할 수도 있고, 외부 디스플레이 디바이스와 인터페이싱하도록 또한 구성될 수도 있다. 다른 예들에서, 목적지 디바이스 (14) 는 디스플레이 디바이스일 수도 있다. 일반적으로, 디스플레이 디바이스 (29) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 것을 포함할 수도 있다.
본 개시물은 일반적으로 비디오 디코더 (30) 와 같은 다른 디바이스에 구문 정보를 "시그널링" 하는 비디오 인코더 (20) 를 지칭할 수도 있다. 그러나, 비디오 인코더 (20) 는 구문 요소들을 비디오 데이터의 다양한 인코딩된 부분들과 연관시킴으로써 정보를 시그널링할 수도 있는 것으로 이해되어야 한다. 즉, 비디오 인코더 (20) 는 비디오 데이터의 다양한 인코딩된 부분들의 헤더들에 소정의 구문 요소들을 저장함으로써 데이터를 "시그널링" 할 수도 있다. 일부 경우들에서, 이러한 구문 요소들은 비디오 디코더 (30) 에 의해 수신되어 디코딩되기에 앞서 인코딩되고 저장될 수도 있다 (예를 들어, 저장 매체 (34) 또는 파일 서버 (36) 에 저장될 수도 있다). 따라서, 용어 "시그널링" 은, 이러한 통신이 실시간이나 거의 실시간 또는 시간의 기간에 걸쳐 발생하는, 예컨대, 인코딩할 시에 매체에 구문 요소들을 저장하는 경우에 발생할 수도 있는, 그 다음에 이러한 매체에 저장된 후에 언제든지 디코딩 디바이스에 의해 검색될 수도 있는 통신이든지, 압축된 비디오 데이터를 디코딩하는데 이용되는 구문 또는 다른 데이터의 통신을 일반적으로 지칭할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는 비디오 압축 표준, 예컨대 현재 개발 중에 있는 고효율 비디오 코딩 (HEVC) 표준에 따라 동작할 수도 있고, HEVC 테스트 모델 (HEVC Test Model; HM) 을 준수할 수도 있다. 대안으로, 비디오 인코더 (20) 및 비디오 디코더 (30) 는, 다르게는 MPEG-4, 파트 10, 고급 비디오 코딩 (AVC) 으로도 지칭되는 ITU-T H.264 표준과 같은 다른 사설 표준 혹은 산업 표준, 또는 이러한 표준들의 확장안들에 따라 동작할 수도 있다. 그러나, 본 개시물의 기법들은 임의의 특정 코딩 표준으로 제한되지 않는다. 다른 예들은 MPEG-2 및 ITU-T H.263 을 포함한다.
HM 은 비디오 데이터의 블록을 코딩 유닛 (coding unit; CU) 으로 지칭한다. 일반적으로, CU 가 H.264 의 매크로블록들과 연관된 사이즈 구별을 갖지 않는다는 것을 제외하고, CU 는 H.264 에 따라 코딩된 매트로블록과 유사한 목적을 갖는다. 따라서, CU 는 서브-CU 들로 분할될 수도 있다. 일반적으로, 본 개시물에서 CU 에 대한 언급들은 영상의 최대 코딩 유닛 (largest coding unit; LCU) 또는 LCU 의 서브 CU 를 지칭할 수도 있다. 예를 들어, 비트스트림 내의 구문 데이터는 픽셀들의 개수의 면에서 최대 코딩 유닛인 LCU 를 정의할 수도 있다. LCU는 서브 CU 들로 분할될 수도 있고, 각각의 서브 CU 는 서브 CU 들로 분할될 수도 있다. 비트스트림에 대한 구문 데이터는 최대 CU 심도라고 지칭되는, LCU 가 분할될 수도 있는 최대 횟수를 정의할 수도 있다. 이에 따라, 비트스트림은 또한 최소 코딩 유닛 (smallest coding unit; SCU) 을 정의할 수도 있다.
LCU 는 계층적 쿼드트리 데이터 구조와 연관될 수도 있다. 일반적으로, 쿼드트리 데이터 구조는 CU 당 하나의 노드를 포함하는데, 여기서 루트 노드는 LCU 에 대응한다. CU 가 4 개의 서브 CU 들로 분할되는 경우, CU 에 대응하는 노드는 서브 CU 들에 대응하는 4 개의 노드들의 각각에 대한 참조를 포함한다. 쿼드트리 데이터 구조의 각각의 노드는 대응하는 CU 에 대한 구문 데이터를 제공할 수도 있다. 예를 들어, 쿼드트리에서의 노드는 노드에 대응하는 CU 가 서브 CU 들로 분할되는지 여부를 나타내는 분할 플래그를 포함할 수도 있다. CU 에 대한 구문 요소들은 재귀적으로 정의될 수도 있고, CU 가 서브 CU 들로 분할되는지 여부에 의존할 수도 있다.
분할되지 않는 CU 는 하나 이상의 예측 유닛 (prediction unit; PU) 들을 포함할 수도 있다. 일반적으로, PU 는 대응하는 CU 의 전체 또는 일부를 표현하고, PU 에 대한 참조 샘플을 검색하기 위한 데이터를 포함한다. 예를 들어, PU 가 인트라 모드 인코딩되는 경우, PU 는 PU 에 대한 인트라 예측 모드를 설명하는 데이터를 포함할 수도 있다. 다른 예로서, PU 가 인터 모드 인코딩되는 경우, PU 는 PU 에 대한 하나 이상의 모션 벡터들을 정의하는 데이터를 포함할 수도 있다. 모션 벡터는 일반적으로 하나 이상의 참조 프레임들에서 동일한 곳에 위치되는 (co-located) CU 를 식별하는데, 여기서 용어 "참조 프레임" 은 PU 가 위치되는 프레임의 시간적으로 전 또는 후에 발생하는 프레임을 지칭한다. 모션 벡터를 정의하는 데이터는, 예를 들어, 모션 벡터의 수평 컴포넌트, 모션 벡터의 수직 컴포넌트, 모션 벡터에 대한 해상도 (예를 들어, 1/4 픽셀 정밀도 또는 1/8 픽셀 정밀도), 모션 벡터가 가리키는 참조 프레임, 식별된 참조 프레임이 현재의 프레임의 전 또는 후에 있는지 여부를 식별하는 예측 방향, 및/또는 모션 벡터에 대한 참조 리스트 (예를 들어, 리스트 0 또는 리스트 1) 를 설명할 수도 있다. PU(들)를 정의하는 CU 에 대한 데이터는, 예를 들어, CU 의 하나 이상의 PU 들로의 파티셔닝을 또한 설명할 수도 있다. 파티셔닝 모드들은 CU 가 코딩되지 않는지, 인트라 예측 모드 인코딩되는지, 또는 인터 예측 모드 인코딩되는지 여부 사이에서 상이할 수도 있다.
하나 이상의 모션 벡터들을 정의하는 하나 이상의 PU 들을 갖는 것과 더불어, CU 는 하나 이상의 변환 유닛 (transform units; TU) 들을 포함할 수도 있다. PU 를 이용하는 예측 다음에, 비디오 인코더는 PU 에 대응하는 CU 의 부분에 대한 잔여 값을 산출할 수도 있다. 잔여 값은 변환되고, 양자화되고, 스캐닝될 수도 있다. TU 는 PU 의 사이즈에 반드시 제한되는 것은 아니다. 따라서, TU 들은 동일한 CU 에 대해 대응하는 PU 들보다 더 크거나 더 작을 수도 있다. 일부 예들에서, TU 의 최대 사이즈는 대응하는 CU 의 사이즈일 수도 있다. 본 개시물은 CU, PU, 및/또는 TU 중 어느 하나 또는 그 조합을 지칭하기 위해 용어 "블록" 을 또한 이용한다.
일반적으로, 인코딩된 비디오 데이터는 예측 데이터 및 잔여 (residual) 데이터를 포함할 수도 있다. 비디오 인코더 (20) 는 인트라 예측 모드 또는 인터 예측 모드 동안 예측 데이터를 생성할 수도 있다. 인트라 예측은 일반적으로 동일한 영상의 이웃하는 이전에 코딩된 블록들에서의 참조 샘플들에 대해 영상의 블록에서의 픽셀 값들을 예측하는 것을 수반한다. 인터 예측은 일반적으로 이전에 코딩된 영상의 데이터에 대해 영상의 블록에서의 픽셀 값들을 예측하는 것을 수반한다.
인트라 예측 또는 인터 예측 다음에, 비디오 인코더 (20) 는 블록에 대한 잔여 픽셀 값들을 산출할 수도 있다. 잔여 값들은 일반적으로 블록에 대한 예측된 픽셀 값 데이터와 블록에 대한 실제 픽셀 값 데이터 사이의 차이들에 대응한다. 예를 들어, 잔여 값들은 코딩된 픽셀들과 예측 픽셀들 사이의 차이들을 나타내는 픽셀 차이 값들을 포함할 수도 있다. 일부 예들에서, 코딩된 픽셀들은 코딩될 픽셀들의 블록과 연관될 수도 있고, 예측 픽셀들은 코딩된 블록을 예측하는데 이용되는 픽셀들의 하나 이상의 블록들과 연관될 수도 있다.
블록의 잔여 값을 더 압축하기 위해, 잔여 값은 ("에너지" 라고도 지칭되는) 가능한 한 많은 데이터를 가능한 한 적은 계수들로 조밀하게 하는 변환 계수들의 세트로 변환될 수도 있다. 변환 기법들은 이산 코사인 변환 (DCT) 프로세스나 개념적으로 유사한 프로세스, 정수 변환들, 웨이블릿 (wavelet) 변환들, 또는 다른 유형의 변환들을 포함할 수도 있다. 변환은 픽셀들의 잔여 값들을 공간 도메인에서 변환 도메인으로 컨버팅한다. 변환 계수들은 원래의 블록과 원래는 동일한 사이즈인 계수들의 2 차원 메트릭스에 대응한다. 다시 말해, 딱 원래의 블록에서의 픽셀들만큼 많은 변환 계수들이 있다. 그러나, 변환으로 인해, 변환 계수들 중 많은 변환 계수는 0 과 같은 값들을 가질 수도 있다.
비디오 인코더 (20) 는 그 다음에 변환 계수들을 양자화하여 비디오 데이터를 더 압축할 수도 있다. 양자화는 일반적으로 상대적으로 큰 범위 내의 값들을 상대적으로 작은 범위 내의 값들과 맵핑하는 것을 수반함으로써, 양자화된 변환 계수들을 표현하는데 필요한 데이터의 양을 감소시킨다. 좀더 구체적으로, 양자화는 LCU 레벨에서 정의될 수도 있는 양자화 파라미터 (quantization parameter; QP) 에 따라 적용될 수도 있다. 이에 따라, LCU 내의 CU 들의 상이한 PU 들과 연관된 TU 들에서의 모든 변환 계수들에 동일한 양자화의 레벨이 적용될 수도 있다. 그러나, QP 그 자체를 시그널링하기 보다는, QP 에서의 변화 (즉, 델타) 가 LCU 로 시그널링될 수도 있다. 델타 QP 는 이전에 통신된 LCU 의 QP 와 같은 일부 참조 QP 와 관련하여 LCU 에 대한 양자화 파라미터에서의 변화를 정의한다.
양자화 다음에, 비디오 인코더 (20) 는 변환 계수들을 스캐닝하여, 양자화된 변환 계수들을 포함하는 2 차원 메트릭스로부터 1 차원 벡터를 생성할 수도 있다. 비디오 인코더 (20) 는 그 다음에 (통상적으로 부정확한 단어인 "엔트로피 인코딩" 으로 지칭되는) 통계적 무손실 인코딩을 수행해 결과적인 어레이를 인코딩하여 데이터를 한층 더 압축할 수도 있다. 일반적으로, 엔트로피 코딩은 양자화된 변환 계수들의 시퀀스 및/또는 다른 구문 정보를 집합적으로 압축하는 하나 이상의 프로세스들을 포함한다. 예를 들어, 델타 QP 들, 예측 벡터들, 코딩 유닛들, 필터들, 오프셋들, 또는 다른 정보와 같은 구문 요소들이 또한 엔트로피 코딩된 비트스트림에 포함될 수도 있다. 스캐닝된 계수들은 그 다음에, 예를 들어, 컨텐츠 적응형 가변 길이 코딩 (content adaptive variable length coding; CAVLC), 컨텍스트 적응형 이진 산술 코딩 (context adaptive binary arithmetic coding; CABAC), 또는 임의의 다른 통계적 무손실 코딩 프로세스를 통해, 임의의 구문 정보와 함께 엔트로피 코딩된다.
비디오 인코더 (20) 는 그 다음에 이전에 인코딩된 비디오 데이터를 복원하여, 이러한 비디오 데이터를 디코딩하고 모션 추정 및 보상을 수행하는 경우 참조로서 이용하기 위해 (대안으로 "참조 프레임 저장부" 라고 지칭될 수도 있는) 메모리에 비디오 데이터를 저장할 수도 있다. 이러한 비디오 데이터를 복원하기 위해, 비디오 인코더 (20) 는 양자화된 변환 계수들에 대해 역 양자화를 수행하여 변환 계수들을 출력할 수도 있으며, 이는 그 다음에 주파수 도메인에서 공간 도메인으로 변환되어 복원된 잔여 비디오 데이터를 형성한다. 비디오 인코더 (20) 는 그 다음에 이전에 식별된 참조 블록에 복원된 잔여 비디오 데이터를 가산하여 복원된 비디오 데이터의 블록을 형성한다. 일부 사례들에서, 비디오 인코더 (20) 는 복원된 비디오 데이터의 블록을 필터링하여 비디오 데이터를 (일 예로서, HEVC 에서 이용되는 바와 같은 슬라이스들, 파티션들, 트리블록들, LCU 들, 및/또는 CU 들을 지칭할 수도 있는) 파티션들로 세부 분할함으로써 초래되는 불연속들을 제거할 수도 있다.
설명을 위해, 비디오 인코더 (20) 는, 비디오 인코더 (20) 가 복원된 비디오 데이터의 블록에 제 1 디블록킹 (DB) 필터를, 뒤이어 DB 필터를 적용함으로 인한 출력에 샘플 적응형 오프셋 (SAO) 필터를, 그리고 그 다음에 SAO 필터를 적용함으로 인한 출력에 적응형 루프 필터 (ALF) 를 적용하는 캐스케이딩된 (cascaded) 방식으로 3 개의 필터들을 적용할 수도 있다. 통상적으로, 비디오 인코더 (20) 는 복원된 비디오 데이터의 블록들을 분리하는 경계에 걸쳐 이러한 필터들을 적용하여 2 개의 인접한 복원된 비디오 데이터의 블록들 사이의 불연속들을 평활화하거나 그렇지 않으면 감소시킨다. 이러한 경계는 가상 경계일 수도 있다 (이는 단일 비디오 블록 내에서 동일한 비디오 블록의 2 개의 부분들을 나누거나, 2 개의 비디오 블록들 사이의 경계를 의미한다). 또한, 비디오 인코더 (20) 는 통상적으로 판독 순서로 블록들을 프로세싱하여, 위에서 아래로, 왼쪽에서 오른쪽으로 프레임을 횡단한다. 그 결과, 비디오 인코더 (20) 는 통상적으로 이러한 인접한 복원된 블록들이 필터들의 즉각적인 적용이 요구될 수도 있는 경우 임의의 복원된 블록들의 하부 경계에 인접한 복원된 블록들은 생성하지 않는다. 이러한 복원된 비디오 블록들을 제공하는데서의 지연은 필터들의 적용에서의 지연을 가져올 수도 있어, 필터들이 이전 블록의 하부 부분 및 인접한 복원된 비디오 블록의 상부 부분에 적용될 수도 있도록, 비디오 인코더 (20) 가 라인 버퍼 또는 다른 메모리 구조를 포함하여 현재의 복원된 비디오 블록의 하부 행들을 버퍼링할 것을 요구한다.
그러나, 라인 버퍼들의 추가는 비디오 인코더 (20) 의 비용 및 전력 효율을 크게 증가시킬 수도 있다. 비디오 인코더 (20) 가 모바일 또는 (배터리 또는 다른 제한된 전원에 의해 전력이 공급되는 임의의 디바이스를 지칭할 수도 있는) 다른 전력 제한 디바이스에서 이용하도록 설계되는 경우, 확장 라인 버퍼들이 사용될 때에 비디오 인코더 (20) 의 전력 프로파일이 크게 증가될 수도 있어, 디바이스의 비디오 능력들을 크게 감소시킨다. 이러한 이유로, 비디오 인코더 (20) 는 다른 프로세스들을 수행하여 이러한 필터들의 적용과 연관된 지연을 감소시키고 가능하게는 라인 버퍼들의 사이즈를 감소시킬 수도 있다. 하나의 이러한 프로세스는 현재의 복원된 비디오 데이터의 블록의 하부 가장자리에 가장 가까운 픽셀 값들이 인접한 복원된 비디오 데이터의 블록의 실제 픽셀 값들 대신에 반복되는, 반복적인 "패딩" 프로세스를 수행하는 비디오 인코더 (20) 를 수반한다. 따라서, 비디오 인코더 (20) 는 가능하게는 인접한 복원된 비디오 데이터의 블록을 기다리는 것과 연관된 지연의 많은 부분을 없애고 가능하게는 라인 버퍼의 사이즈를 감소시킬 수도 있다. 그러나, 이러한 형태의 반복적인 패딩은, 그렇지 않으면 실제 픽셀 값들이 이용된 것으로 보이지 않을 수도 있는 불연속성들을 복원된 비디오 데이터에 종종 삽입하여 최적의 비디오 품질을 제공하지 않을 수도 있다. 비디오 디코더 (30) 는 동일한 문제들을 겪는 복원된 비디오 블록들에 대해 유사한 필터링 프로세스들을 구현할 수도 있다.
본 개시물에 설명된 기법들에 따르면, 일반적으로 비디오 인코더들 및/또는 비디오 디코더를 지칭할 수도 있는 비디오 코더는 종래의 필터들의 구현과 비교하여 이러한 필터들을 구현하는데 요구되는 라인 버퍼들 또는 다른 메모리 구조들의 사이즈를 감소시키는 한편, 또한 가능하게는 종래의 이러한 유형의 필터들의 구현에서 발생하는 시각적 품질 문제들을 감소시킬 수도 있는 방식으로 이러한 유형의 필터들을 적용할 수도 있다. 일 양상에서, 비디오 코더는 풀 필터들보다는 최대 코딩 유닛 (LCU) 들의 경계들과 같은 파티션 경계들에 부분 필터들을 적용할 수도 있으며, 이는 캐스케이딩 방식으로 이러한 유형의 필터들을 적용하는데 요구되는 시간의 양을 감소시킬 수도 있으며 (이는 2 개 이상의 필터들의 캐스케이딩 적용을 의미하는 것으로, 여기서 필터들 중 제 1 필터가 적용되고 제 1 필터를 적용한 것의 결과에 필터들 중 제 2 필터가 적용된다), 한편 또한 가능하게는 라인 버퍼 사이즈 요구사항들을 감소시킨다. 이러한 필터들은 비디오 데이터의 픽셀 값들이 필터링을 위해 이용가능하지 않을 필터의 이러한 ("탭들" 이라고도 지칭될 수도 있는) 계수들이 선택된 "풀" 필터로부터 제거됨으로써, 풀 필터의 필터 계수들의 오직 서브세트 또는 부분 양만을 갖는 필터를 발생시킨다는 점에서 부분적이다.
일부 사례들에서, 이러한 부분 필터들은 필터 x 축 및/또는 y 축 중 어느 일방의 축 상의 필터 탭들의 개수가 같지 않다는 점에서 비대칭이다. 다시 말해, 기법들은 현재의 복원된 비디오 블록에 필터의 적용을 위해 요구되는 인접한 복원된 비디오 블록의 라인들의 개수를 감소시킬 수도 있는 x 축 및/또는 y 축 중 일 축 또는 양 축 모두를 따라 바이어스를 갖는 필터들을 제공할 수도 있다. 예를 들어, 필터는 필터의 x 축 및 y 축 양자 모두를 따라 탭들을 포함할 수도 있다. 기법들은 y 축 필터 탭들에 대해 양의 y 축 바이어스를 갖는 필터를 제공할 수도 있으며, 이는 이러한 필터가 x 축 아래보다 x 축 위에서 보다 많은 y 축 탭들을 포함한다는 것을 의미한다. 이러한 면에서, 필터는 "비대칭" 인데, 필터가 필터 탭들의 x 축 필터 행의 위와 아래 양자 모두에 동일한 수의 y 축 탭들을 포함하지 않기 때문이다. 탭들의 개수가 x 축 아래에서 감소되기 때문에, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 현재의 복원된 비디오 블록 아래에 (그리고 가능하게는 바로 아래에) 위치된 복원된 비디오 블록의 행을 보다 적게 요구하거나 가능하게는 요구하지 않을 수도 있는 방식으로 비대칭 필터를 적용할 수도 있다. 이러한 면에서, 기법들은 라인 버퍼 사이즈 요구사항들을 감소시킬 수도 있고 심지어 이러한 목적으로 이용되는 라인 버퍼들을 모두 없앨 수도 있으며, 한편으로는, 일부 사례들에서, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 가 인접한 복원된 비디오 블록을 기다릴 필요가 없다는 면에서 코딩 지연을 또한 감소시킨다.
다른 사례들에서, 부분 필터들은 대칭이며, 여기서 이러한 대칭 부분 필터들은 필터 x 축 및 y 축의 어느 일 측 상에 동일한 개수의 필터 탭들을 포함하나, 선택된 대칭 풀 필터보다 x 축 및/또는 y 축을 따라 보다 적은 필터 탭들을 포함한다. 이러한 대칭 부분 필터들은 또한 일반적으로 y 축을 따라 보다 적은 필터 탭들을 포함할 수도 있어, 대칭 부분 필터들이 필터링되고 있는 현재의 복원된 비디오 블록 아래에 (그리고 통상적으로는 바로 아래에) 위치된 복원된 비디오 블록을 기다릴 필요 없이 적용될 수도 있다. 다시, 탭들의 개수가 x 축 아래에서 감소되기 때문에, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 현재의 복원된 비디오 블록 아래에 (그리고 가능하게는 바로 아래에) 위치된 복원된 비디오 블록의 행들을 보다 적게 요구하거나 가능하게는 요구하지 않을 수도 있는 방식으로 대칭 부분 필터를 적용할 수도 있다. 이러한 면에서, 상술된 바와 같이, 기법들은 라인 버퍼 사이즈 요구사항들을 감소시킬 수도 있고 심지어 이러한 목적으로 이용되는 라인 버퍼들을 모두 없앨 수도 있으며, 한편으로는, 일부 사례들에서, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 가 인접한 복원된 비디오 블록을 기다릴 필요가 없다는 면에서 코딩 지연을 또한 감소시킨다.
동작에서, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 비디오 데이터의 제 1 블록을 비디오 데이터의 제 2 블록으로부터 분리하는 비디오 데이터의 제 1 블록의 경계 근처에 적용하기 위한 필터를 선택하는데, 여기서 선택된 필터는 ("필터 탭들" 또는 "탭들" 이라고도 지칭될 수도 있는) 다수의 필터 계수들을 포함한다. 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 일 예로, 주관적 품질 향상, 또는 원래의 프레임과 복원된 프레임 사이의 에러들 최소화 (즉, 위너 필터 (Wiener filter) 기반) 를 포함하는 다수의 기준에 기초하여 필터를 선택할 수도 있다 (예를 들어, 필터 유형, 사이즈, 및 형상을 의미한다).
필터를 선택한 후에, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 결정할 수도 있다. 예를 들어, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 다른 필터의 적용으로 인해, 또는 현재의 제 1 블록에 인접한 제 2 블록이 아직 복원되지 않았기 때문에 이용가능하지 않을 수도 있는 필터 계수들을 결정할 수도 있다. 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수의 결정에 기초하여, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 부분 필터를 결정할 수도 있어, 이러한 부분 필터가 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능할 적어도 하나의 필터 계수 중 하나 이상을 포함한다. 다시 말해, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 비디오 데이터가 필터링을 위해 이용가능하지 않을 선택된 필터에 대해 특정된 필터 계수들 중 적어도 하나의 필터 계수를 제거할 수도 있다. 일부 사례들에서, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 비디오 데이터가 필터링을 위해 이용가능할 선택된 필터에 대해 특정된 필터 계수들 중 하나 이상의 필터 계수를 제거하여, 예를 들어, 하기에서 보다 상세히 설명된 바와 같이 대칭 필터를 발생시킬 수도 있다.
통상적으로, 선택된 필터에 대한 필터 계수들은 하나로 합해져 (필터 계수들이 정규화되는 것을 의미한다) 필터의 적용을 통해 비디오 데이터를 가산하거나 제거하지 않는다. 선택된 필터의 필터 계수들을 제거하여 부분 필터 (이는, 다시, 원래의 선택된 필터로부터의 하나 이상의 필터 계수들의 제거로 인해 "부분" 필터라고 칭해진다) 를 결정함으로써, 결과적인 부분 필터는 비정규화된다 (부분 필터의 필터 계수들이 하나로 합해지지 않는다는 것을 의미한다). 그 결과, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 부분 필터 내에 포함된 복수의 필터 계수들을 재정규화할 수도 있다. 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 그 다음에 비디오 데이터의 제 1 블록의 경계 근처에 재정규화된 부분 필터를 적용하여 비디오 데이터의 필터링된 제 1 블록을 발생시킬 수도 있다. 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 비디오 데이터의 다른 블록들을 복원하는데서 참조 비디오 데이터로 이용하기 위해 이러한 비디오 데이터의 필터링된 제 1 블록을 저장할 수도 있다.
또한, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 는 이러한 필터 또는 다른 필터를 적용하는 경우 "미러링된 패딩" 이라고 지칭되는 패딩의 형성을 수행할 수도 있으며, 이는 반복적인 픽셀들의 패딩을 이용하여 수정된 파티션들의 경계들에의 적응형 루프 필터들의 종래의 적용에서 생길 수도 있는 파티션들의 경계들에 도입되는 불연속들을 방지함으로써 디코딩된 비디오 데이터의 보다 좋은 시각적 품질을 제공할 수도 있다. 미러 패딩은 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 가 실제 픽셀 값들 대신에, 즉, 대체하여 블록의 현재의 경계 근처에 픽셀 값들을 미러링하여, 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 가 실제 픽셀 값들을 기다릴 필요 없이 상술된 필터들 중 하나 이상의 필터를 적용할 수도 있는 프로세스를 지칭할 수도 있다. 본 개시물에서 설명된 기법들의 미러 패딩 양상들은 라인 버퍼들의 사이즈를 감소시키거나 심지어 가능하게는 라인 버퍼들을 없앨 수도 있으며, 한편으로는 하기에서 보다 상세히 설명된 바와 같이 반복적인 또는 다른 패딩의 형태들과 비교하여 개선된 비디오 품질을 또한 증진시킬 수도 있다.
도 2 는 본 개시물에서 설명된 파티션 기반 필터 기법들을 구현할 수도 있는 예시적인 비디오 인코더 (20) 를 도시하는 블록 다이어그램이다. 비디오 인코더 (20) 는 비디오 슬라이스들 내의 비디오 블록들의 인트라 코딩 및 인터 코딩을 수행할 수도 있다. 인트라 코딩은 주어진 비디오 프레임 또는 영상 내의 비디오에서 공간적 리던던시를 감소시키거나 제거하기 위해 공간 예측에 의존한다. 인터 코딩은 비디오 시퀀스의 인접한 프레임들 또는 영상들 내의 비디오에서 시간적 리던던시를 감소시키거나 제거하기 위해 시간 예측에 의존한다. 인트라 모드 (I 모드) 는 여러 공간 기반의 압축 모드들 중 임의의 것을 지칭할 수도 있다. 단방향 예측 (P 모드) 또는 양방향 예측 (B 모드) 과 같은 인터 모드들은 여러 시간 기반 압축 모드들 중 임의의 것을 지칭할 수도 있다.
도 2 의 예에서, 비디오 인코더 (20) 는 모드 선택 유닛 (40), 모션 추정 유닛 (42), 모션 보상 유닛 (44), 인트라 예측 유닛 (46), 참조 영상 메모리 (64), 합산기 (50), 변환 모듈 (52), 양자화 유닛 (54), 및 엔트로피 인코딩 유닛 (56) 을 포함한다. 비디오 블록 복원을 위해, 비디오 인코더 (20) 는 역 양자화 유닛 (58), 역 변환 유닛 (60), 및 합산기 (62) 를 또한 포함한다. 필터 유닛 (63) 이 또한 포함되어 블록 경계들을 필터링해 복원된 비디오로부터 블록화 아티팩트들을 제거하는데, 여기서 구절 "블록화 아티팩트들" 은 영상들 또는 비디오 프레임들의 블록들, 예컨대 LCU 들 및 CU 들로의 파티셔닝으로 인해 발생하는 복원된 비디오 데이터에서의 아티팩트들을 지칭한다.
도 2 에 도시된 바와 같이, 비디오 인코더 (20) 는 인코딩될 슬라이스 내의 현재의 비디오 블록을 수신한다. 슬라이스는 다수의 비디오 블록들, 즉, 일 예로서, HEVC 에서 설명된 트리 블록들로 나눠질 수도 있다. 모드 선택 유닛 (40) 은 에러 결과들에 기초하여 현재의 비디오 블록에 대해 코딩 모드들, 인트라 또는 인터 중 하나를 선택할 수도 있다. 인트라 모드 또는 인터 모드가 선택되는 경우, 모드 선택 유닛 (40) 은 결과적인 인트라 또는 인터 코딩된 블록을 잔여 블록 데이터를 발생시키기 위해 합산기 (50) 에, 그리고 참조 영상으로서 이용하기 위해 인코딩된 블록을 복원하기 위해 합산기 (62) 에 제공한다. 인트라 예측 유닛 (46) 은 코딩될 현재 블록과 동일한 프레임 또는 슬라이스에서의 하나 이상의 이웃하는 블록들에 대해 현재의 비디오 블록의 인트라 예측 코딩을 수행하여 공간적 압축을 제공한다. 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 하나 이상의 참조 영상들에서의 하나 이상의 예측 블록들에 대해 현재의 비디오 블록의 인터 예측 코딩을 수행하여 시간적 압축을 제공한다.
인터 코딩의 경우에, 모션 추정 유닛 (42) 은 비디오 시퀀스에 대한 미리 결정된 패턴에 따라 비디오 슬라이스에 대한 인터 예측 모드를 결정하도록 구성될 수도 있다. 미리 결정된 패턴은 시퀀스에서의 비디오 슬라이스들을 P 슬라이스들, B 슬라이스들, 또는 일반화된 P/B (GPB) 슬라이스들로서 지정할 수도 있다. 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 은 고도로 집적될 수도 있지만, 개념적 목적들을 위해 별개로 예시되어 있다. 모션 추정 유닛 (42) 에 의해 수행되는 모션 추정은 비디오 블록들에 대한 모션을 추정하는 모션 벡터들을 발생시키는 프로세스이다. 모션 벡터는, 예를 들어, 참조 영상 내의 예측 블록에 대한 현재의 비디오 프레임 또는 영상 내의 비디오 블록의 PU 의 변위를 나타낼 수도 있다.
인터 예측 블록은, 참조 영상에서, 픽셀 차이의 관점에서 코딩될 비디오 블록의 PU 에 가깝게 매칭하는 것으로 발견되는 블록인데, 픽셀 차이는 절대 차의 합 (sum of absolute difference; SAD), 제곱 차의 합 (sum of square difference; SSD), 또는 다른 차이 메트릭들에 의해 결정될 수도 있다. 일부 예들에서, 비디오 인코더 (20) 는 참조 영상 메모리 (64) 에 저장된 참조 영상들의 서브-정수 픽셀 포지션 (sub-integer pixel position) 들에 대한 값들을 산출할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 참조 영상의 1/4 픽셀 포지션들, 1/8 픽셀 포지션들, 또는 다른 분수 픽셀 포지션들의 값들을 산출할 수도 있다. 따라서, 모션 추정 유닛 (42) 은 풀 픽셀 포지션들 및 분수 픽셀 포지션들에 대해 모션 검색을 수행하고 분수 픽셀 정밀도를 갖는 모션 벡터를 출력할 수도 있다.
모션 추정 유닛 (42) 은 PU 의 포지션을 참조 영상의 예측 블록의 포지션과 비교함으로써 인터 코딩된 슬라이스에서의 비디오 블록의 PU 에 대한 모션 벡터를 산출한다. 참조 영상은 제 1 참조 영상 리스트 (리스트 0) 또는 제 2 참조 영상 리스트 (리스트 1) 로부터 선택될 수도 있는데, 이들 각각은 참조 영상 메모리 (64) 에 저장된 하나 이상의 참조 영상들을 식별한다. 모션 추정 유닛 (42) 은 산출된 모션 벡터를 엔트로피 인코딩 유닛 (56) 및 모션 보상 유닛 (44) 에 전송한다.
모션 보상 유닛 (44) 에 의해 수행되는 모션 보상은 모션 추정에 의해 결정된 모션 벡터에 기초한 예측 블록의 패칭 (fetching) 또는 발생을 수반할 수도 있다. 현재의 비디오 블록의 PU 에 대한 모션 벡터를 수신할 시에, 모션 보상 유닛 (44) 은 참조 영상 리스트들 중 하나의 리스트에서 모션 벡터가 가리키는 예측 블록의 위치를 찾아낼 수도 있다. 비디오 인코더 (20) 는 코딩되고 있는 현재의 비디오 블록의 픽셀 값들로부터 예측 블록의 픽셀 값들을 감산함으로써 잔여 비디오 블록을 형성하여, 픽셀 차이 값들을 형성한다. 픽셀 차이 값들은 블록에 대한 잔여 데이터를 형성하며, 루마 (luma) 및 크로마 (chroma) 차이 컴포넌트들 양자 모두를 포함할 수도 있다. 합산기 (50) 는 이러한 감산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 표현한다. 모션 보상 유닛 (44) 은 또한 비디오 슬라이스의 비디오 블록들을 디코딩하는데서 비디오 디코더 (30) 에 의한 이용을 위해 비디오 블록들 및 비디오 슬라이스와 연관된 구문 요소들을 발생시킬 수도 있다.
대안으로, 비디오 인코더 (20) 는 비디오 인코더 (20) 가 공간적으로 이웃하는 블록들을 이용하여 현재의 블록을 예측하는 인트라 예측이라고 지칭되는 프로세스를 수행할 수도 있다. 인트라 예측은 I 프레임들에 대해 수행되고 슬라이스들로 제한될 수도 있어, 다른 시간적으로 근접한 프레임들에 대한 참조 없이 개개의 슬라이스들이 복원될 수도 있다. 일부 사례들에서, 2 개 이상의 공간적으로 이웃하는 블록들이 현재의 블록에 대한 참조 블록을 형성할 수도 있다. 인트라 예측은 인터 예측과 유사하게 현재의 블록에 대한 예측 블록을 발생시키도록 수행될 수도 있다.
어떤 경우에도, 모션 보상 유닛 (44) 이 현재의 비디오 블록에 대한 예측 블록을 발생시킨 이후에, 비디오 인코더 (20) 가 합산기 (50) 를 이용하여 현재의 비디오 블록으로부터 예측 블록을 감산함으로써 잔여 비디오 블록을 형성한다. 잔여 블록에서의 잔여 비디오 데이터는 이른바 CU 의 "코딩 노드" 에 포함되고 변환 모듈 (52) 에 전달될 수도 있다. 변환 모듈 (52) 은 변환, 예컨대 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환을 이용하여 잔여 비디오 데이터를 잔여 변환 계수들로 변환시킨다. 변환 모듈 (52) 은 잔여 비디오 데이터를 픽셀 도메인에서 주파수 도메인과 같은 변환 도메인으로 컨버팅할 수도 있다. 변환 모듈 (52) 은 각각의 변환의 유형에 관한 정보, 및 가능하게는 CU 와 연관된 TU 에서의 잔여 비디오 데이터에 적용되는 각각의 변환의 계수들을, 임의의 다른 변환 관련 정보와 함께 저장할 수도 있다.
변환 모듈 (52) 은 결과적인 변환 계수들을 양자화 유닛 (54) 에 전송할 수도 있다. 양자화 유닛 (54) 은 변환 계수들을 양자화하여 비트 레이트를 더 감소시킬 수도 있다. 양자화 프로세스는 계수들의 일부 또는 전부와 연관된 비트 심도를 감소시킬 수도 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수도 있다. 일부 예들에서, 양자화 유닛 (54) 은 그 다음에 양자화된 변환 계수들을 포함하는 메트릭스의 스캔을 수행할 수도 있다. 대안으로, 엔트로피 인코딩 유닛 (56) 이 스캔을 수행할 수도 있다.
양자화 다음에, 엔트로피 인코딩 유닛 (56) 이 일 형태의 통계적 무손실 인코딩 (이는 "엔트로피 인코딩" 이라고 지칭될 수도 있다) 을 수행하여 양자화된 변환 계수들을 인코딩한다. 예를 들어, 엔트로피 인코딩 유닛 (56) 은 컨텍스트 적응형 가변 길이 코딩 (CAVLC), 컨텍스트 적응형 이진 산술 코딩 (CABAC), 또는 다른 엔트로피 인코딩 기법을 수행할 수도 있다. 엔트로피 인코딩 다음에, 엔트로피 인코딩 유닛 (56) 은 비디오 디코더 (30) 에 인코딩된 비트스트림을 송신하거나, 추후 송신 또는 비디오 디코더 (30) 에 의한 검색을 위해 인코딩된 비트스트림을 보관할 수도 있다. 엔트로피 인코딩 유닛 (56) 은 또한 코딩되고 있는 현재의 비디오 슬라이스에 대한 모션 벡터들 및 다른 구문 요소들을 엔트로피 인코딩할 수도 있다.
역 양자화 유닛 (58) 및 역 변환 유닛 (60) 은, 각각, 역 양자화 및 역 변환을 적용하여, 참조 영상의 참조 블록으로서 추후 이용을 위해 픽셀 도메인에서 잔여 블록을 복원한다. 모션 보상 유닛 (44) 은 잔여 블록을 참조 영상 리스트들 중 하나의 참조 영상 리스트 내의 참조 영상들 중 하나의 참조 영상의 예측 블록에 가산함으로써 참조 블록을 산출할 수도 있다. 모션 보상 유닛 (44) 은 또한 복원된 잔여 블록에 하나 이상의 보간 필터들을 적용하여 모션 추정에서 이용하기 위해 서브 정수 픽셀 값들을 산출할 수도 있다. 합산기 (62) 는 모션 보상 유닛 (44) 에 의해 생성된 모션 보상된 예측 블록에 복원된 잔여 블록을 가산하여 참조 영상 메모리 (64) 에 저장을 위한 참조 블록을 생성한다. 참조 블록은 필터 유닛 (63) 에 의해 필터링되어 블록화 아티팩트들을 제거한다. 참조 블록은 그 다음에 참조 영상 메모리 (64) 에 저장된다. 참조 블록은 후속하는 비디오 프레임 또는 영상에서의 블록을 인터 예측하기 위해 참조 블록으로서 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 이용될 수도 있다.
필터 유닛 (63) 은 본 개시물에 설명된 기법들에 따른 파티션 기반 필터들 중 하나 이상의 파티션 기반 필터를 적용하는 모듈을 표현할 수도 있다. 이 점에 있어서, 필터 유닛 (63) 은 비디오 데이터의 제 1 블록을 비디오 데이터의 제 2 블록으로부터 분리하는 비디오 블록의 경계 근처에 적용하기 위한 풀 필터를 선택할 수도 있으며, 여기서 선택된 필터는 다수의 필터 계수들을 포함한다 (이는, 다시, "필터 탭들" 또는 "탭들" 이라고도 지칭될 수도 있다). 필터 유닛 (63) 은 이러한 상술된 것들을 포함하여 다수의 기준에 기초해 필터를 선택할 수도 있다. 선택된 풀 필터는 DB 필터, SOA 필터, ALF, 또는 가능하게는 지각되는 시각적 품질을 개선시키기 위해 복원된 비디오 블록들에 통상적으로 적용되는 임의의 다른 유형의 필터 중 하나 이상의 필터를 포함할 수도 있다.
풀 필터를 선택한 후에, 필터 유닛 (63) 은 풀 필터의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 결정할 수도 있다. 비디오 데이터가 필터링되는데 이용불가능할 풀 필터의 필터 계수들 중 적어도 하나의 필터 계수를 결정하는 이러한 프로세스는 도 4a - 도 4e 의 예에 대하여 보다 상세히 하기에서 설명된다. 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수의 결정에 기초하여, 이러한 부분 필터가 복수의 필터 계수들 중, 컨텐츠 데이터가 필터링되는데 이용가능할 적어도 하나의 필터 계수 중 하나 이상을 포함하도록 필터 유닛 (30) 은 부분 필터를 결정할 수도 있다. 다시 말해, 필터 유닛 (63) 은 비디오 데이터가 필터링을 위해 이용가능하지 않을 선택된 풀 필터에 대해 특정된 필터 계수들 중 적어도 하나의 필터 계수를 제거할 수도 있다. 필터 유닛 (63) 은 그 다음에 부분 필터 내에 포함된 복수의 필터 계수들을 재정규화하여 이러한 남은 필터 계수들이 다시 한번 하나로 합칠 수도 있다. 필터 유닛 (63) 은 그 다음에 비디오 데이터의 제 1 블록의 경계 근처에 재정규화된 부분 필터를 적용하여 비디오 데이터의 필터링된 제 1 블록을 발생시킬 수도 있다. 필터 유닛 (63) 은 비디오 데이터의 다른 부분들을 복원하는데서 참조 샘플로서 이용하기 위해 이러한 비디오 데이터의 필터링된 제 1 부분을 저장할 수도 있다. 필터 유닛 (63) 은 또한 이러한 필터 계수들이 비디오 디코더 (30) 와 같은 디코더에 전송될 수도 있도록 비디오 데이터의 필터링된 제 1 블록과 함께 선택된 풀 필터에 대한 필터 계수들을 저장할 수도 있으며, 여기서 비디오 디코더 (30) 는 상술된 것과 유사한 프로세스를 수행하여 재정규화된 부분 필터에 대한 필터 계수들을 도출할 수도 있다.
하나 이상의 부분 필터들을 적용하는 것에 더해 또는 (풀 필터 등과 같은) 다른 유형의 필터들을 적용하는 것과 별개로, 필터 유닛 (63) 은 이러한 필터들을 적용하는 경우 "미러링된 패딩" 이라고 지칭되는 일 유형의 패딩을 또한 수행할 수도 있으며, 이는 반복적인 픽셀들의 패딩을 이용하여 수정된 블록들의 경계들에서 종래의 필터들의 적용에서 생길 수도 있는 파티션들의 경계들에 도입되는 불연속들을 방지함으로써 디코딩된 비디오 데이터의 보다 좋은 시각적 품질을 제공할 수도 있다. 미러 패딩은 필터 유닛 (63) 이 실제 픽셀 값들 대신에 파티션의 현재의 경계 근처의 픽셀 값들을 미러링하여 필터 유닛 (63) 이 실제 픽셀 값들을 기다릴 필요 없이 상술된 필터들 중 하나 이상의 필터를 적용할 수도 있는 프로세스를 지칭할 수도 있다. 상술된 바와 같이, 본 개시물에서 설명된 기법들의 미러 패딩 양상들은 라인 버퍼들의 사이즈를 감소시키거나 심지어 가능하게는 라인 버퍼들을 없앨 수도 있으며, 한편으로는 하기에서 보다 상세히 설명된 바와 같이 반복적인 또는 다른 형태의 패딩과 비교하여 개선된 비디오 품질을 또한 증진시킬 수도 있다. 미러 패딩은 도 5a, 도 5b 에 대하여 하기에서 보다 상세히 설명된다.
필터 유닛 (63) 은 상이한 유형의 필터들의 캐스케이된 적용에 대해 반복적으로 기법들 중 하나 이상의 양상들을 구현할 수도 있다. 예를 들어, 필터 유닛 (63) 은 우선 DB 필터를 LCU 와 같은 비디오 데이터의 블록에 적용하는 경우 이러한 기법들을 적용할 수도 있다. 필터 유닛 (63) 은, 일 예로서, 비대칭 또는 대칭 부분 DB 필터를 발생시키기 위해 상술된 방식으로 대칭 풀 DB 필터를 적응시키며, 이러한 비대칭 또는 대칭 부분 DB 필터를 재정규화하고, 재정규화된 비대칭 또는 대칭 부분 DB 필터를 LCU 의 (일 예로서) 하단 경계의 픽셀 값들에 적용할 수도 있다. 필터 유닛 (63) 은 그 다음에 비대칭 또는 대칭 부분 SAO 필터를 발생시키기 위해 상술된 방식으로 대칭 풀 SAO 필터를 적응시키며, 이러한 비대칭 또는 대칭 부분 SAO 필터를 재정규화하고, 재정규화된 비대칭 또는 대칭 부분 SAO 필터를 LCU 의 (일 예로서) 하단 경계의 DB 필터링된 픽셀 값들에 적용할 수도 있다. 필터 유닛 (63) 은 또한 비대칭 또는 대칭 부분 ALF 를 발생시키기 위해 상술된 방식으로 대칭 풀 ALF 를 적응시키며, 이러한 비대칭 또는 대칭 부분 ALF 를 재정규화하고, 재정규화된 비대칭 또는 대칭 부분 ALF 를 LCU 의 (일 예로서) 하단 경계의 DB 및 SAO 필터링된 픽셀 값들에 적용할 수도 있다.
일부 사례들에서, 필터 유닛 (63) 은 대칭 풀 DB, SAO, 및 AL 필터들의 각각의 캐스케이딩된 적용에 대해 미러 패딩을 수행할 수도 있다. 대안으로, 필터 유닛 (63) 은 일부 대칭 풀 DB, SAO, 및 AL 필터들, 그리고 일부 재정규화된 비대칭 또는 대칭 부분 DB, SAO, 및 AL 필터들의 캐스케이딩된 적용에 대해 미러 패딩을 수행할 수도 있으며, 여기서 재정규화된 비대칭 또는 대칭 부분 DB, SAO, 및 AL 필터들은 본 개시물에 설명된 기법들과 일관되는 방식으로 발생될 수도 있다. 다시 말해, 기법들은 미러 패딩이 비대칭 부분 필터들의 적용과 연계하여 또는 그의 대안으로 수행될 수도 있도록 임의의 조합으로 (이는 다시 일반적으로 비디오 인코더 및 비디오 디코더 중 어느 하나를 지칭할 수도 있는) 비디오 코더에 의해 구현될 수도 있다.
도 3 은 본 개시물에 설명된 파티션 기반 필터링 기법들을 구현할 수도 있는 비디오 디코더 (30) 의 예를 보다 상세히 도시하는 블록 다이어그램이다. 도 3 의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (80), 예측 모듈 (81), 역 양자화 유닛 (86), 역 변환 유닛 (88), 합산기 (90), 디블록킹 필터 (91), 및 (디코딩된 영상 버퍼라고도 지칭될 수 있는) 참조 영상 메모리 (92) 를 포함한다. 예측 모듈 (81) 은 모션 보상 유닛 (82) 및 인트라 예측 유닛 (84) 을 포함한다. 비디오 디코더 (30) 는, 일부 예들에서, 도 2 로부터의 비디오 인코더 (20) 에 대해 설명된 인코딩 패스에 일반적으로 역순인 디코딩 패스를 수행할 수도 있다.
디코딩 프로세스 중에, 비디오 디코더 (30) 는 비디오 인코더 (20) 로부터 인코딩된 비디오 슬라이스의 비디오 블록들 및 연관된 구문 요소들을 표현하는 인코딩된 비디오 비트스트림을 수신한다. 비디오 디코더 (30) 의 엔트로피 디코딩 유닛 (80) 은 비트스트림을 엔트로피 디코딩하여 양자화된 계수들, 모션 벡터들, 및 다른 구문 요소들을 발생시킨다. 엔트로피 디코딩 유닛 (80) 은 모션 벡터들 및 다른 구문 요소들을 예측 모듈 (81) 에 포워딩한다. 비디오 디코더 (30) 는 비디오 슬라이스 레벨 및/또는 비디오 블록 레벨에서의 구문 요소들을 수신할 수도 있다.
비디오 슬라이스가 인트라 코딩된 (I) 슬라이스로서 코딩되는 경우, 예측 모듈 (81) 의 인트라 예측 유닛 (84) 은 현재의 프레임 또는 영상의 이전에 디코딩된 블록들로부터 시그널링된 인트라 예측 모드 및 데이터에 기초하여 현재의 비디오 슬라이스의 비디오 블록에 대한 예측 데이터를 발생시킬 수도 있다. 비디오 프레임이 인터 코딩된 (즉, B, P, 또는 GPB) 슬라이스로서 코딩되는 경우, 예측 모듈 (81) 의 모션 보상 유닛 (82) 은 엔트로피 디코딩 유닛 (80) 으로부터 수신된 모션 벡터들 및 다른 구문 요소들에 기초하여 현재의 비디오 슬라이스의 비디오 블록에 대한 예측 블록들을 생성한다. 예측 블록들은 참조 영상 리스트들 중 하나의 참조 영상 리스트 내의 참조 영상들 중 하나로부터 생성될 수도 있다. 비디오 디코더 (30) 는, 참조 영상 메모리 (92) 에 저장된 참조 영상들에 기초해 디폴트 구성 기법들을 이용하여 참조 프레임 리스트들, 리스트 0 및 리스트 1 을 구성할 수도 있다.
모션 보상 유닛 (82) 은 모션 벡터들 및 다른 구문 요소들을 파싱함으로써 현재의 비디오 슬라이스의 비디오 블록에 대한 예측 정보를 결정하고, 예측 정보를 이용하여 디코딩되고 있는 현재의 비디오 블록에 대한 예측 블록들을 생성한다. 예를 들어, 모션 보상 유닛 (82) 은, 비디오 슬라이스의 비디오 블록들을 코딩하는데 이용되는 예측 모드 (예를 들어, 인트라 예측 또는 인터 예측), 인터 예측 슬라이스 유형 (예를 들어, B 슬라이스, P 슬라이스, 또는 GPB 슬라이스), 슬라이스에 대한 참조 영상 리스트들 중 하나 이상의 참조 영상 리스트에 대한 구성 정보, 슬라이스의 각각의 인터 인코딩된 비디오 블록에 대한 모션 벡터들, 슬라이스의 각각의 인터 코딩된 비디오 블록에 대한 인터 예측 상태, 및 현재의 비디오 슬라이스에서의 비디오 블록들을 디코딩하기 위한 다른 정보를 결정하기 위해, 수신된 구문 요소들 중 일부를 이용한다.
모션 보상 유닛 (82) 은 보간 필터들에 기초한 보간을 또한 수행할 수도 있다. 모션 보상 유닛 (82) 은 비디오 블록들의 인코딩 동안 비디오 인코더 (20) 에 의해 이용되는 것과 같이 보간 필터들을 이용하여 참조 블록들의 서브 정수 픽셀들에 대한 보간된 값들을 산출할 수도 있다. 모션 보상 유닛 (82) 은 수신된 구문 요소들로부터 비디오 인코더 (20) 에 의해 이용되는 보간 필터들을 결정하고, 보간 필터들을 이용하여 예측 블록들을 생성할 수도 있다.
역 양자화 유닛 (86) 은 비트스트림에서 제공되고 엔트로피 디코딩 유닛 (80) 에 의해 디코딩된 양자화된 변환 계수들을 역 양자화, 즉, 양자화해제한다 (dequantize). 역 양자화 프로세스는 양자화의 정도, 및, 마찬가지로, 적용되어야 하는 역 양자화의 정도를 결정하기 위해, 비디오 슬라이스에서의 각각의 비디오 블록에 대해 비디오 인코더 (20) 에 의해 산출된 양자화 파라미터의 이용을 포함할 수도 있다. 역 변환 유닛 (88) 은, 픽셀 도메인에서 잔여 블록들을 생성하기 위해 변환 계수들에 역 변환, 예를 들어, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스를 적용한다.
모션 보상 유닛 (82) 이 모션 벡터들 및 다른 구문 요소들에 기초하여 현재의 비디오 블록에 대한 예측 블록을 발생시킨 후에, 비디오 디코더 (30) 는 역 변환 유닛 (88) 으로부터의 잔여 블록들을 모션 보상 유닛 (82) 에 의해 발생된 대응하는 예측 블록들과 합함으로써 디코딩된 비디오 블록을 형성한다. 합산기 (90) 는 이 합산 동작을 수행하는 컴포넌트 또는 컴포넌트들을 표현한다. 디코딩된 블록들을 필터링하기 위해 필터 유닛 (91) 이 적용되어 블록화 아티팩트들을 제거한다. 주어진 프레임 또는 영상에서의 디코딩된 비디오 블록들은 그 다음에 후속하는 모션 보상에 이용되는 참조 영상들을 저장하는 참조 영상 메모리 (92)에 저장된다. 참조 영상 메모리 (92) 는 도 1 의 디스플레이 디바이스 (32) 와 같은 디스플레이 디바이스 상에서의 추후의 프리젠테이션을 위해 디코딩된 비디오를 또한 저장한다.
필터 유닛 (91) 은 본 개시물에 설명된 기법들에 따른 파티션 기반 필터들 중 하나 이상의 파티션 기반 필터를 적용하는 모듈을 표현할 수도 있다. 이 점에 있어서, 필터 유닛 (91) 은 비디오 데이터의 제 1 블록을 비디오 데이터의 제 2 블록으로부터 분리하는 비디오 블록의 경계 근처에 적용하기 위한 풀 필터를 선택할 수도 있으며, 여기서 선택된 필터는 다수의 필터 계수들 (이는, 다시, "필터 탭들" 또는 "탭들" 이라고도 지칭될 수도 있다) 을 포함한다. 필터 유닛 (91) 은 인코딩된 비트스트림에 포함된 코딩된 필터 계수들로부터 필터를 결정할 수도 있으며, 이는 그 다음에 디코딩되어 디코딩된 필터 계수들을 형성한다. 통상적으로, 필터 유닛 (91) 은, 일 예로서, 비디오 인코더 (20) 의 필터 유닛 (63) 에 의해 선택된 풀 필터의 필터 계수들을 수신하고, 그 다음에 도 2 의 예에 도시된 비디오 인코더 (20) 에 대해 상술된 것과 유사한 방식으로 선택된 풀 필터 계수들로부터 필터 계수들을 도출할 수도 있다. 선택된 풀 필터는 DB 필터, SOA 필터, ALF, 또는 가능하게는 지각되는 시각적 품질을 개선시키기 위해 복원된 비디오 블록들에 통상적으로 적용되는 임의의 다른 유형의 필터 중 하나 이상의 필터를 포함할 수도 있다.
풀 필터를 선택한 후에, 필터 유닛 (91) 은 풀 필터의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 결정할 수도 있다. 비디오 데이터가 필터링되는데 이용불가능할 풀 필터의 필터 계수들 중 적어도 하나의 필터 계수를 결정하는 이러한 프로세스는 도 4a - 도 4e 의 예에 대하여 보다 상세히 하기에서 설명된다. 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수의 결정에 기초하여, 이러한 부분 필터가 복수의 필터 계수들 중, 컨텐츠 데이터가 필터링되는데 이용가능할 하나 이상의 필터 계수를 포함하도록 필터 유닛 (30) 은 부분 필터를 결정할 수도 있다. 다시 말해, 필터 유닛 (91) 은 비디오 데이터가 필터링을 위해 이용가능하지 않을 선택된 풀 필터에 대해 특정된 필터 계수들 중 적어도 하나의 필터 계수를 제거할 수도 있다. 필터 유닛 (91) 은 그 다음에 부분 필터 내에 포함된 복수의 필터 계수들을 재정규화하여 이러한 남은 필터 계수들을 다시 한번 하나로 합할 수도 있다. 필터 유닛 (91) 은 그 다음에 비디오 데이터의 제 1 블록의 경계 근처에 재정규화된 부분 필터를 적용하여 비디오 데이터의 필터링된 제 1 블록을 발생시킬 수도 있다. 필터 유닛 (91) 은 비디오 데이터의 다른 부분들을 복원하는데서 참조 샘플로서 이용하기 위해 이러한 비디오 데이터의 필터링된 제 1 블록을 저장할 수도 있다.
하나 이상의 부분 필터들을 적용하는 것에 더해 또는 (풀 필터 등과 같은) 다른 유형의 필터들을 적용하는 경우와 별도로, 필터 유닛 (91) 은 이러한 필터들을 적용하는 경우 "미러링된 패딩" 이라고 지칭되는 일 유형의 패딩을 또한 수행할 수도 있으며, 이는 반복적인 픽셀들의 패딩을 이용하여 수정된 블록들의 경계들에서 종래의 필터들의 적용에서 생길 수도 있는 파티션들의 경계들에 도입되는 불연속들을 방지함으로써 디코딩된 비디오 데이터의 보다 좋은 시각적 품질을 제공할 수도 있다. 미러 패딩은 필터 유닛 (91) 이 실제 픽셀 값들 대신에 파티션의 현재의 경계 근처의 픽셀 값들을 미러링하여 필터 유닛 (91) 이 실제 픽셀 값들을 기다릴 필요 없이 상술된 필터들 중 하나 이상의 필터를 적용할 수도 있는 프로세스를 지칭할 수도 있다. 상술된 바와 같이, 본 개시물에서 설명된 기법들의 미러 패딩 양상들은 라인 버퍼들의 사이즈를 감소시키거나 심지어 가능하게는 라인 버퍼들을 없앨 수도 있으며, 한편으로는 하기에서 보다 상세히 설명된 바와 같이 반복적인 또는 다른 패딩의 형태들과 비교하여 개선된 비디오 품질을 또한 증진시킬 수도 있다. 미러 패딩은 도 5a, 도 5b 에 대하여 하기에서 보다 상세히 설명된다.
필터 유닛 (91) 은 상이한 유형의 필터들의 캐스케이딩된 적용에 대해 반복하여 기법들 중 하나 이상의 양상들을 구현할 수도 있다. 예를 들어, 필터 유닛 (91) 은 우선 DB 필터를 LCU 와 같은 비디오 데이터의 블록에 적용하는 경우 이러한 기법들을 적용할 수도 있다. 필터 유닛 (91) 은, 일 예로서, 비대칭 또는 대칭 부분 DB 필터를 발생시키기 위해 상술된 방식으로 대칭 풀 DB 필터를 적응시키며, 이러한 비대칭 또는 대칭 부분 DB 필터를 재정규화하고, 재정규화된 비대칭 또는 대칭 부분 DB 필터를 LCU 의 (일 예로서) 하단 경계의 픽셀 값들에 적용할 수도 있다. 이러한 예에서, 필터 유닛 (91) 은 그 다음에 비대칭 또는 대칭 부분 SAO 필터를 발생시키기 위해 상술된 방식으로 대칭 풀 SAO 필터를 적응시키며, 이러한 비대칭 또는 대칭 부분 SAO 필터를 재정규화하고, 재정규화된 비대칭 또는 대칭 부분 SAO 필터를 LCU 의 (일 예로서) 하단 경계의 DB 필터링된 픽셀 값들에 적용할 수도 있다. 필터 유닛 (91) 은 또한 비대칭 또는 대칭 부분 ALF 를 발생시키기 위해 상술된 방식으로 대칭 풀 ALF 를 적응시키며, 이러한 비대칭 또는 대칭 부분 ALF 를 재정규화하고, 재정규화된 비대칭 또는 대칭 부분 ALF 를 LCU 의 (일 예로서) 하단 경계의 DB 및 SAO 필터링된 픽셀 값들에 적용할 수도 있다.
일부 사례들에서, 필터 유닛 (91) 은 대칭 풀 DB, SAO, 및 AL 필터들의 각각의 캐스케이딩된 적용에 대해 미러 패딩을 수행할 수도 있다. 대안으로, 필터 유닛 (91) 은 일부 대칭 풀 DB, SAO, 및 AL 필터들, 그리고 일부 재정규화된 비대칭 또는 대칭 부분 DB, SAO, 및 AL 필터들의 캐스케이딩된 적용에 대해 미러 패딩을 수행할 수도 있으며, 여기서 재정규화된 비대칭 또는 대칭 부분 DB, SAO, 및 AL 필터들은 본 개시물에 설명된 기법들과 일관되는 방식으로 발생될 수도 있다. 다시 말해, 기법들은 미러 패딩이 비대칭 부분 필터들의 적용과 연계하여 또는 그의 대안으로 수행될 수도 있도록 임의의 조합으로 (이는 다시 일반적으로 비디오 인코더 및 비디오 디코더 중 하나 이상을 지칭할 수도 있는) 비디오 코더에 의해 구현될 수도 있다.
도 4a - 도 4e 는 개시물에서 설명된 기법들의 부분 필터링 양상들에 따라 필터링되는 예시적인 비디오 데이터의 블록 (100) 을 도시하는 다이어그램들이다. 도 4a 는 비디오 데이터의 블록 (100) 을 도시하는 다이어그램으로서, 여기서 도 2 의 예에서 도시된 비디오 인코더 (20) 의 필터 유닛 (63) 및/또는 도 3 의 예에 도시된 비디오 디코더 (30) 의 필터 유닛 (91) 과 같은 비디오 인코더 및/또는 비디오 디코더의 필터 유닛은 처음에 캐스케이딩 방식으로 DB 필터, SAO 필터, 및 ALF 를 적용할 수도 있다. 하기에서 필터 유닛 (63) 에 대해 설명되지만, 기법들은 필터 유닛 (91) 에 의해 유사한 방식으로 구현될 수도 있다. 또한, 특정 비디오 인코더들 및/또는 비디오 디코더들에 대해 설명되지만, 기법들은 일반적으로 임의의 비디오 코딩 디바이스 또는 다른 컨텐츠 코딩 유닛이나 디바이스에 의해 구현될 수도 있다.
도 4a 의 예에 도시된 바와 같이 ("비디오 블록 (100)" 이라고도 지칭될 수도 있는) 비디오 데이터의 블록 (100) 은 픽셀 값들의 16×16 블록을 포함하며, 여기서 필터 유닛 (63) 의 예에서 도시된 각각의 정사각형은 단일 픽셀 값을 정의하는 데이터를 표현한다. 비디오 블록 (100) 은 복원된 비디오 블록을 표현할 수도 있고, 따라서, 또한 "복원된 비디오 블록 (100)" 이라고 지칭될 수도 있다. 도 4a 의 예에서 더 언급되는 바와 같이, 필터 유닛 (63) 은 비디오 블록 (100) 의 상부 13 개의 행들에 DB 필터를, 비디오 블록 (100) 의 상부 12 개의 행들에 SAO 필터를, 그리고 비디오 블록 (100) 의 상부 10 개의 행들에 ALF 를 적용한다. DB 필터가 하단에 인접한 비디오 데이터의 블록으로부터의 픽셀 값들을 요구하기 때문에 필터 유닛 (63) 은 하부 3 개의 행들에는 DB 필터를 적용하지 않았다. 블록 (100) 은 비디오 블록 (100) 의 하부 라인을 지칭하는 경계 (102) 에 의해 이러한 하단에 인접한 블록으로부터 분리될 수도 있다. 필터들이 캐스케이딩된 방식으로 적용되기 때문에, 일 필터를 적용한 결과가 라인에서의 다른 필터에 의해 더 필터링되며, 필터 유닛 (63) 이 DB 필터를 하부 3 개의 행들에 적용한 결과를 요구하기 때문에 필터 유닛 (63) 은 블록 (100) 의 하부 4 개의 행들에는 SAO 필터를 적용할 수 없다. 마찬가지로, 필터 유닛 (63) 이 SAO 필터를 하부 4 개의 행들에 적용한 결과를 요구하기 때문에 필터 유닛 (63) 은 하부 6 개의 행들에 ALF 를 적용할 수 없다.
ALF 는 ALF (104) 로 도 4a 의 예에서 도시된다. 다음의 도 4b - 도 4e 의 논의가 ALF (104) 에 초점을 맞추나, 기법들은 DB 필터 및 SAO 필터의 각각, 뿐만 아니라 캐스케이딩된 필터들의 임의의 다른 애플리케이션에 대해 적용될 수도 있다. 블록 도트들로서 도 4a 의 예에서 도시되는 임의의 필터 계수들을 제거하도록 수정되지 않는다는 점에서 ALF (104) 는 풀 ALF 를 표현할 수도 있다. 이러한 이유로, ALF 필터는 "풀 ALF (104)" 로 지칭될 수도 있다. 풀 ALF (104) 는 또한 x 축 및 y 축의 각각에 대한 탭들 또는 계수들의 개수가 동일하다는 점에서 대칭이다. 풀 ALF (104) 는 x 축의 위 및 아래에 2 개의 계수들을, 그리고 y 축의 오른쪽 및 왼쪽에 4 개의 계수들을 포함한다. 결과적으로, ALF (104) 는 "대칭 ALF (104)" 또는 "대칭 풀 ALF (104)" 라고 지칭될 수도 있다. 필터 유닛 (63) 은 대칭 풀 ALF (104) 를 선택하고 비디오 블록 (100) 의 상부 10 개의 행들에 대칭 풀 ALF (104) 를 적용한 것으로 가정된다.
다음으로 도 4b 의 예를 참조하면, 필터 유닛 (63) 은, ALF (104) 를 적용하는 경우, ALF (104) 가 픽셀 값 (105A) 을 필터링하기 위해 필터 계수 (106A) 를 포함할지라도, 픽셀 값 (105A) 이 필터링되는데 이용가능하지 않다는 것을 결정할 수도 있다 (도 4b 의 예에서 "X" 로 표시된다). 그 결과, 필터 유닛 (63) 은 (파선으로 그려진 흰색 도트로 표시되는 바와 같은) 필터 계수 (106A) 를 제거하여 비대칭 부분 필터 (108A) 를 발생시키며, 비대칭 부분 필터는 그 다음에 본 개시물에서 설명된 방식으로 재정규화된다. 필터 (108A) 가 x 축 아래에 1 개의 계수를 포함하고 x 축 위에 2 개의 계수들을 포함한다는 면에서 비대칭 부분 필터 (108A) 는 "비대칭" 일 수도 있다. 또한, 필터 (108A) 가 풀 필터 (104) 내에 포함된 모든 계수들을 포함하지 않는다는 면에서 비대칭 부분 필터 (108A) 는 "부분적" 이라고 할 수도 있다. 그러나, 필터 유닛 (63) 이 달리 풀 필터 (104) 를 적용할 수 없을 경우, 필터 유닛 (63) 은 비디오 블록 (100) 의 경계 (102) 로부터 6 번째 행에 비대칭 부분 필터 (108A) 를 적용할 수도 있다. 그 결과, 본 개시물에서 설명된 기법들은 종래의 필터링 기법들과 비교하여 필터링이 수행될 수도 있는 속도를 개선시킬 수도 있다. 또한, 복원되고 후속하여 필터링될 인접한 비디오 블록들을 기다릴 목적으로 비디오 데이터의 블록들을 저장하기 위해 추가적인 메모리가 요구되지 않는다는 점에서 기법들은 (없앨 필요가 없는 경우) 라인 버퍼들의 사이즈를 감소시킬 수도 있다.
다음으로 도 4c 의 예를 참조하면, 필터 유닛 (63) 은, ALF (104) 를 적용하는 경우, ALF (104) 가 픽셀 값 (105B) 를 필터링하기 위해 필터 계수들 (106A) 을 그리고 픽셀 값 (105A) 을 필터링하기 위해 필터 계수 (106B) 를 포함할지라도, 픽셀 값들 (105A 및 105B) 이 필터링되는데 이용가능하지 않다는 것을 결정할 수도 있다 (도 4b 의 예에서 "X 들" 로 표시된다) . 그 결과, 필터 유닛 (63) 은 (파선으로 그려진 흰색 도트로 표시되는) 필터 계수들 (106A, 106B) 을 제거하여 비대칭 부분 필터 (108B) 를 발생시킬 수도 있으며, 비대칭 부분 필터는 본 개시물에서 설명된 방식으로 재정규화될 수도 있다. 필터 (108B) 가 x 축 아래에는 계수들을 포함하지 않고 x 축 위에는 2 개의 계수들을 포함한다는 면에서 비대칭 부분 필터 (108B) 는 "비대칭" 일 수도 있다. 또한, 필터 (108B) 가 풀 필터 (104) 내에 포함된 모든 계수들을 포함하지 않는다는 면에서 비대칭 부분 필터 (108B) 는 "부분적" 이라고 할 수도 있다. 그러나, 필터 유닛 (63) 이 풀 필터 (104) 를 적용할 수 없을 경우, 필터 유닛 (63) 은 비디오 블록 (100) 의 경계 (102) 로부터 5 번째 행에 비대칭 부분 필터 (108B) 를 적용할 수도 있다. 그 결과, 다시, 본 개시물에서 설명된 기법들은 종래의 필터링 기법들과 비교하여 필터링이 수행될 수도 있는 속도를 개선시킬 수도 있다. 다시, 복원되고 후속하여 필터링될 인접한 비디오 블록들을 기다릴 목적으로 비디오 데이터의 블록들을 저장하기 위해 추가적인 메모리가 요구되지 않는다는 점에서 기법들은 (없앨 필요가 없는 경우) 라인 버퍼들의 사이즈를 감소시킬 수도 있다.
도 4d 및 도 4e 는 도 4a 의 예에서 도시된 것과 동일한 풀 ALF (104) 로부터 발생되거나 도출되는 대칭 필터들 (110A 및 110B) 을 이용하여 비디오 블록 (100) 에 대하여 기법들이 구현될 수도 있는 대안적인 방식을 도시한다. 설명을 쉽게 할 목적으로 대안적으로 설명되긴 하나, 필터 유닛 (63) 은 비대칭 필터들 (108A, 108B) 또는 대칭 필터들 (110A, 110B) 중 하나의 필터를 이용하여 픽셀 값 단위마다 비대칭 필터 또는 대칭 필터를 선택해 비디오 블록 (100) 의 경계 (102) 로부터 6 번째 또는 하단 행들에서의 픽셀 값들 중 임의의 하나의 픽셀 값을 필터링할 수도 있다. 이 점에 있어서, 필터 유닛 (63) 은 파티션 기반 방식으로 픽셀 값 × 픽셀 값 단위로 (이는 슬라이스 또는 프레임 레벨보다는 LCU 또는 파티션 레벨임을 의미한다) 필터들 (108A, 108B, 110A, 및 110B) 을 적응적으로 적용할 수도 있다.
예를 들어, 경계 (102) 의 하부로부터 4 번째 라인 위의 라인들에 (여기서 이러한 4 번째 라인 경계는 가상 경계라고 지칭될 수도 있다), 대칭이든 비대칭이든, 부분 필터들을 적용하는 경우, 필터 유닛 (63) 은 이러한 가상 경계 위의 라인들 (즉, 이러한 예들에서 경계 (102) 로부터 5 번째 라인 및 6 번째 라인) 에 대해 부분 ALF 를 항상 적용할 수도 있다. 일부 사례들에서, 필터 유닛 (63) 은 경계 (102) 로부터 6 번째 라인에 대해 오직 부분 ALF 만을 적용할 수도 있고, 경계 (102) 로부터 5 번째 라인에는 어떠한 ALF 도 적용하지 않을 수도 있다 (이는 SAO 필터를 적용한 결과가 저장된다는 것을 의미한다). 다른 사례들에서, 필터 유닛 (63) 은 일부 기준들, 예컨대, 이용불가능한 픽셀 값들을 갖는 풀 ALF (104) 의 다수의 계수들이 제 1 임계 수를 초과하는지 여부, 이용불가능한 픽셀 값들을 갖는 이러한 계수들의 합이 제 2 임계 값을 초과하는지 여부, 및/또는 이용불가능한 픽셀 값들을 갖는 이러한 계수들의 절대 값의 합이 제 3 임계 값을 초과하는지 여부에 기초하여 부분 필터들을 이용할지 여부를 결정할 수도 있다.
도 4d 의 예에서, 필터 유닛 (63) 은, ALF (104) 를 적용하는 경우, ALF (104) 가 픽셀 값 (105A) 을 필터링하기 위한 필터 계수들을 포함할지라도, 픽셀 값 (105A) 이 필터링되는데 이용가능하지 않다는 것을 결정할 수도 있다 (이는 도 4b 의 예에서 "X" 로 표시된다). 그 결과, 필터 유닛 (63) 은 (파선으로 그려진 흰색 도트로 표시되는 바와 같은) 필터 계수 (106A) 를 제거하는 한편 필터 계수 (106C) 를 또한 제거하여 필터 계수 (106C) 가 이용가능한 픽셀 값 (105C) 을 포함할지라도 대칭을 유지한다. 필터 유닛 (63) 은 그렇게 함으로써 대칭 부분 필터 (110A) 를 발생시키며, 대칭 부분 필터는 필터 (110A) 가 x 축 위와 아래 양자 모두에서 단일 필터 계수를 포함한다는 면에서 대칭이고 계수들 (106A 및 106C) 이 풀 ALF (104) 로부터 제거된다는 점에서 부분적이다. 그러나, 필터 유닛 (63) 은 필터 유닛 (63) 이 달리 풀 필터 (104) 를 적용할 수 없을 경우 비디오 블록 (100) 의 경계 (102) 로부터 6 번째 행에 대칭 부분 필터 (110A) 를 적용할 수도 있고, 그렇게 함으로써 가능하게는 상술된 속도 및 라인 버퍼 이점들을 제공한다.
다음으로 도 4e 의 예를 참조하면, 필터 유닛 (63) 은, ALF (104) 를 적용하는 경우, ALF (104) 가 픽셀 값 (105B) 을 필터링하기 위해 필터 계수들 (106A) 을 포함하고 픽셀 값 (105A) 을 필터링하기 위해 필터 계수 (106B) 를 포함할지라도, 픽셀 값들 (105A 및 105B) 이 필터링되는데 이용가능하지 않는다는 것을 결정할 수도 있다 (이는 도 4b 의 예에서 "X 들" 로 표시된다). 그 결과, 필터 유닛 (63) 은 (파선으로 그려진 흰색 도트로 표시된 바와 같은) 필터 계수들 (106A, 106B) 및 필터 계수들 (106C 및 106D) 을 제거하여 (이러한 필터 계수들이 이용가능한 픽셀 값들 (105D, 105E) 에 적용될지라도) 대칭을 유지함으로써 본 개시물에서 설명된 방식으로 재정규화될 수도 있는 대칭 부분 필터 (110B) 를 발생시킨다. 대칭 부분 필터 (110B) 는 필터 (110B) 가 x 축 아래와 위 양자 모두에 동일한 개수의 계수들을 포함한다 (즉, 도 4e 의 예에서 x 축 위와 아래 양자 모두에 필터 계수들이 없다) 는 면에서 "대칭" 일 수도 있다. 또한, 필터 (110B) 가 풀 필터 (104) 내에 포함된 모든 계수들을 포함하지 않는다는 면에서 대칭 부분 필터 (110B) 는 "부분적" 이라고 할 수도 있다. 그러나, 필터 유닛 (63) 은 필터 유닛 (63) 이 달리 풀 필터 (104) 를 적용할 수 없을 경우 비디오 블록 (100) 의 경계 (102) 로부터 5 번째 행에 대칭 부분 필터 (110B) 를 적용할 수도 있고, 그렇게 함으로써 가능하게는 상술된 속도 및 라인 버퍼 이점들을 제공한다.
도 5a - 도 5b 는 본 개시물에서 설명된 기법들의 미러 패딩 양상들에 따라 필터링되는 비디오 데이터 (120) 의 예시적인 블록을 도시하는 다이어그램들이다. 도 5a 는 비디오 데이터의 블록 (120) 을 도시하는 다이어그램으로서, 여기서 도 2 의 예에서 도시된 비디오 인코더 (20) 의 필터 유닛 (63) 및/또는 도 3 의 예에서 도시된 비디오 디코더 (30) 의 필터 유닛 (91) 과 같은 비디오 인코더 및/또는 비디오 디코더의 필터 유닛은 처음에 캐스케이딩된 방식으로 DB 필터, SAO 필터, 및 ALF 를 적용할 수도 있다. 하기에서 필터 유닛 (63) 에 대해 설명되지만, 기법들은 필터 유닛 (91) 에 의해 유사한 방식으로 구현될 수도 있다. 또한, 특정 비디오 인코더들 및/또는 비디오 디코더들에 대해 설명되지만, 기법들은 일반적으로 임의의 비디오 코딩 디바이스 또는 다른 컨텐츠 코딩 유닛이나 디바이스에 의해 구현될 수도 있다.
도 5a 의 예에서 도시된 바와 같이, ("비디오 블록 (120)" 이라고도 지칭될 수도 있는) 비디오 데이터의 블록 (120) 은 도 4a - 도 4e 의 예들에서 도시된 비디오 블록 (100) 과 같은 픽셀 값들의 16×16 블록을 포함할 수도 있으며, 여기서 필터 유닛 (63) 의 예에서 도시된 각각의 정사각형은 단일 픽셀 값을 정의하는 데이터를 표현한다. 비디오 블록 (120) 은 복원된 비디오 블록을 표현할 수도 있고, 따라서, 또한 "복원된 비디오 블록 (120)" 이라고 지칭될 수도 있다. 도 5a 의 예에서 더 언급되는 바와 같이, 필터 유닛 (63) 은 비디오 블록 (120) 의 상부 13 개의 행들에 DB 필터를, 비디오 블록 (120) 의 상부 12 개의 행들에 SAO 필터를, 그리고 비디오 블록 (120) 의 상부 10 개의 행들에 ALF 를 적용한다. DB 필터가 하단의 인접한 비디오 데이터의 블록으로부터의 픽셀 값들을 요구하기 때문에 필터 유닛 (63) 은 하부 3 개의 행들에는 DB 필터를 적용하지 않았다. 블록 (120) 은 비디오 블록 (120) 의 하부 라인을 지칭하는 경계 (120) 에 의해 이러한 하단의 인접한 블록으로부터 분리될 수도 있다. 필터들이 캐스케이딩된 방식으로 적용되기 때문에, 일 필터를 적용한 결과가 라인에서의 다른 필터에 의해 더 필터링되며, 필터 유닛 (63) 이 DB 필터를 하부 3 개의 행들에 적용한 결과를 요구하기 때문에 필터 유닛 (63) 은 블록 (120) 의 하부 4 개의 행들에는 SAO 필터를 적용할 수 없다. 마찬가지로, 필터 유닛 (63) 이 SAO 필터를 하부 4 개의 행들에 적용한 결과를 요구하기 때문에 필터 유닛 (63) 은 하부 6 개의 행들에 ALF 를 적용할 수 없다.
ALF 는 ALF (124) 로 도 4a 의 예에서 도시된다. 다음의 도 5b 의 논의가 ALF (124) 에 초점을 맞추지만, 기법들은 DB 필터 및 SAO 필터의 각각, 뿐만 아니라, 캐스케이딩된 필터들의 임의의 다른 애플리케이션에 적용될 수도 있다. ALF (124) 는 도 5a 의 예에서 블록 도트들로 도시되는 임의의 필터 계수들을 제거하도록 수정되지 않았다는 점에서 풀 ALF 를 표현할 수도 있다. 이러한 이유로, ALF 필터는 "풀 ALF (124)" 로 지칭될 수도 있다. 풀 ALF (124) 는 또한 x 축 및 y 축의 각각에 대한 탭들 또는 계수들의 개수가 동일하다는 점에서 대칭이다. 풀 ALF (124) 는 x 축의 위 및 아래에 2 개의 계수들을, 그리고 y 축의 오른쪽 및 왼쪽에 4 개의 계수들을 포함한다. 결과적으로, ALF (124) 는 "대칭 ALF (124)" 또는 "대칭 풀 ALF (124)" 라고 지칭될 수도 있다. 필터 유닛 (63) 은 대칭 풀 ALF (124) 를 선택하고 비디오 블록 (120) 의 상부 10 개의 행들에 대칭 풀 ALF (124) 를 적용한 것으로 가정된다.
대칭 풀 ALF (124) 를 적응시키기 보다는, 필터 유닛 (63) 은 미러 패딩을 수행하여 (도 5a 의 예에서 대각선으로 교차 해싱된 정사각형들로 도시되는) 하부 행의 픽셀 값들을 복제하고, 이러한 픽셀들을 미러링하여 비디오 블록 (120) 에 인접한 그리고 아래에 위치된 블록의 픽셀 값들의 최상부 행일 것을 대체한다. 또한, 필터 유닛 (63) 은, 비디오 블록 (124) 의 가장 마지막 행을 필터링하기 위해, 미러 패딩을 수행하여 비디오 블록 (124) 의 최하부 행 및 비디오 블록 (124) 의 하부에서 2 번째 행 양자 모두를 미러링한다 (이는 수평으로 그리고 수직으로 교차 해싱된 정사각형들로 도 5 의 예에서 도시된다). 필터 유닛 (63) 은 비디오 블록 (124) 에 인접하고 그 아래의 블록의 최상부 2 개의 행들을 대체하는 "미러 패딩 (126)" 으로 표시되는 2 개의 추가적인 행을 효과적으로 형성할 수도 있으며, 그렇게 함으로써 풀 ALF (124) 의 적용을 가능하게 한다.
이러한 픽셀 값들을 저장하기 위해 라인 버퍼가 요구될 수도 있음을 뜻하는 이러한 행들을 사실상 생성하는 것으로 도 5a 의 예에서 도시되나, 기법들은 실제 저장 요구사항들을 피하도록 수학적으로 구현될 수도 있다. 즉, 풀 ALF (124) 가 적용되는 미러 패딩 (126) 에 도시된 픽셀 값들은 단순히 비디오 블록 (124) 의 하부 2 개의 행들로부터 (원래의 형태로 또는 가능하게는 스케일링된 형태로) 취해져 사실상 별도의 라인 버퍼들에 이러한 값들을 복제하고 저장할 필요 없이 필터 메트릭스로 삽입될 수도 있다. 그 결과, 본 개시물에서 설명된 미러 패딩 기법들은 라인 버퍼 사이즈 증가를 초래하지는 않고, 가능하게는 상술된 속도 및 라인 버퍼 이점들을 제공할 수도 있다.
도 5b 는 비디오 블록 (120) 의 보다 내부의 행에 대한 미러 패딩 양상들의 적용을 도시한다. 이러한 면에서, 용어 "경계" 는 비디오 데이터의 2 개의 부분들 사이의 경계를 표시하기 위해 본 개시물에서 이용되며, 여기서 이러한 부분들은 동일한 비디오 블록 내에 또는 상이한 비디오 블록에 있을 수도 있다. 따라서, 용어 "경계" 는 2 개의 비디오 블록들을 분리하는 경계로 제한되는 것으로 해석되어서는 안되고, 비디오 데이터의 임의의 2 개의 부분들을 분리할 수도 있는 (위에서 논의된 이른바 "가상 경계" 를 포함하여) 임의의 경계를 포함할 수도 있다. 즉, 필터 유닛 (63) 은, 일부 사례들에서, 비디오 블록 (120) 의 하부로부터 5 번째 행과 같은 내부의 행들의 미러 패딩을 수행해 5 번째 행에서 이용가능한 픽셀 값들을 미러링하여 비디오 블록 (120) 의 하부로부터 4 번째 행에 위치된 (ALF 측면에서는) 이용불가능한 픽셀 값들을 대체해, 효과적으로 미러 패딩 (128) 을 생성한다. 다시, 미러 패딩 (128) 이 사실상 저장되는 것이 아니라 이용가능한 픽셀 값들이 미러 패딩 (128) 에 위치된 대응하는 계수들에 제공되는 그러한 방식으로 구현된다는 점에서 필터 유닛 (63) 은 패딩 (128) 을 효과적으로 생성한다. 이 점에 있어서, 기법들은 비디오 블록의 내부 또는 임의의 행이나 열에 적용될 수도 있고, 비디오 블록의 가장자리나 경계로 제한되어서는 안된다.
도 6 은, 본 개시물에서 설명된 기법들의 부분 필터링 양상들을 구현하고 있는, 도 1 - 도 3 의 예들에서 도시된 비디오 인코더 (20) 또는 비디오 디코더 (30) 와 같은 비디오 코더의 예시적인 동작을 도시하는 플로차트이다. 기법들이 특정 비디오 코더, 즉, 도 2 의 예에서 도시된 비디오 인코더 (20) 에 대해 설명되지만, 기법들은 도 3 의 예에서 도시된 비디오 디코더 (30) 와 같은 임의의 비디오 코더에 의해 구현될 수도 있다. 더불어, 특정 유형의 컨텐츠 데이터, 즉, 비디오 데이터에 대해 설명되지만, 기법들은 일반적으로 오디오 데이터, 텍스트 데이터, 이미지 데이터 등을 포함하여 임의의 유형의 컨텐츠 데이터에 대해 구현될 수도 있다.
처음에, 비디오 인코더 (20) 는 상술된 방식으로 비디오 데이터를 인코딩하여 인코딩된 비디오 데이터를 발생시킨다. 이러한 비디오 데이터를 인코딩하기 위해, 비디오 인코더 (20) 는, 비디오 데이터를 인코딩하여 인코딩된 비디오 데이터를 발생시킨 후에, 인코딩된 비디오 데이터를 디코딩하여 후속하는 비디오 데이터를 인코딩하는데 이용되는 복원된 비디오 데이터를 형성한다. 그 결과, 비디오 인코더 (20) 는 인코딩된 비디오 블록들을 디코딩하여 도 4a - 도 4e 의 예들에서 도시된 비디오 블록 (100) 과 같은 복원된 비디오 블록들을 형성할 수도 있다 (130). 비디오 인코더 (20) 는 필터링 유닛 (63) 을 불러와 비디오 블록 (100) 을 필터링할 수도 있다. 비디오 블록 (100) 을 필터링하기 위해, 필터링 유닛 (63) 은 필터를 선택하여 복원된 비디오 블록 (100) 에 적용할 수도 있다 (132). 필터를 선택한 후에, 필터링 유닛 (63) 은 복원된 비디오 블록 (100) 에 필터를 적용할 수도 있다. 일부 사례들에서, 필터링 유닛 (63) 은 선택된 필터의 적어도 하나의 계수가 위에서 보다 상세히 설명된 이유들로 이용가능하지 않은 적어도 하나의 픽셀 값에 적용될 것을 결정할 수도 있다 (134).
선택된 필터의 적어도 하나의 계수가 이용가능하지 않은 적어도 하나의 픽셀 값에 적용될 것이라는 결정하는 것에 대한 응답으로, 필터링 유닛 (63) 은 상술된 방식으로 도 4a - 도 4e 의 예들에서 도시된 부분 필터들 (108A, 108B, 110A, 110B) 와 같은 부분 필터를 발생시킬 수도 있다 (136). 필터링 유닛 (63) 은, 이러한 부분 필터를 발생시킨 다음에, 부분 필터의 계수들을 재정규화하여 이러한 계수들이 다시 한번 하나로 합해지도록 한다 (138). 필터링 유닛 (63) 은 하나 이상의 재정규화 알고리즘들에 따라 필터 계수들을 재정규화할 수도 있다.
예를 들어, 필터링 유닛 (63) 은 제 1 재정규화 알고리즘을 사용하여 발생된 부분 필터의 계수들을 재정규화할 수도 있다. 제 1 재정규화 알고리즘은 선택된 풀 필터 내에 포함된 복수의 필터 계수들을 합하여 복수의 풀 필터 계수들의 제 1 합을 계산하는 것을 포함한다. 다시 말해, 필터 유닛 (63) 은 선택된 필터의 필터 계수들을 합할 수도 있다. 이러한 알고리즘은 또한 부분 필터 내에 포함된 복수의 필터 계수들을 합하여 복수의 부분 필터 계수들의 제 2 합을 계산하는 것을 포함한다. 즉, 필터 유닛 (63) 은 부분 필터의 계수들을 합할 수도 있다. 필터링 유닛 (63) 은 그 다음에 부분 필터 내에 포함된 복수의 필터 계수들의 각각에 복수의 풀 필터 계수들의 제 1 합을 복수의 부분 필터 계수들의 제 2 합으로 나눈 결과를 곱합으로써 부분 필터의 재정규화된 계수들을 결정할 수도 있다. 이러한 제 1 재정규화 알고리즘은 다음의 의사 코드와 같이 표현될 수도 있다:
Figure pct00001
여기서 변수 "Coeff_all" 은 선택된 필터의 계수들 (C_l, ..., C_N) 의 합을 표시하며, 변수 "Coeff_part" 은 Coeff_all 으로부터 부분 필터의 정규화되지 않은 계수들 (C_l, ..., C_M) 의 합을 감산한 결과를 표시하고, 마지막 줄은 제거된 계수 (C_i, 여기서 i=M+l, ... , N) 에 Coeff_all 을 Coeff_part 로 나눈 결과를 곱함으로써 재정규화되는 부분 필터의 새로운 계수들 ("coeffs") 을 지칭한다.
대안으로, 필터링 유닛 (63) 은 풀 필터 (선택된 필터를 의미한다) 의 복수의 필터 계수들 중, 컨텐츠 데이터가 필터링되는데 이용가능하지 않을 적어도 하나의 필터 계수의 하나 이상을 부분 필터의 복수의 필터 계수들 중 하나 이상의 필터 계수에 가산하는 것을 수반하는 제 2 재정규화 알고리즘을 구현할 수도 있다. 이러한 제 2 재정규화 알고리즘은 다음의 의사 코드에 따라 표현될 수도 있다:
C_i 의 서브세트에 있어서 (i= M+ 1 , ... ,N), add C_k, k= 1 , ... , M
예를 들어,
C_(M+1)'= C_(M+1) + C_l, C_(M+2)'= C_(M+2) + C_3,... 또는
C_L' = C_L + (C_1 + C_2 +...+C_M).
이러한 의사 코드에 따르면, 픽셀 값들이 이용가능하지 않은 선택된 필터의 계수들은 C_i 로 표시되며, 여기서 i=M+l, ... , N 이다. 정규화되지 않은 부분 필터의 계수들은 C_k 로 표시되며, 여기서 k=l, ... , M 이다. 이러한 제 2 알고리즘에 대한 의사코드는 또한 어떻게 제거된 계수들이 부분 필터의 계수들에 가산되어 이러한 필터를 재정규화할 수도 있는지에 대한 2 개의 예들을 제공한다. 제 1 예에서, C_(M+1)' 은 부분 필터 (C_(M+1)) 의 정규화되지 않은 계수를 C_1 에 가산하여 계산되는 재정규화된 부분 필터의 계수를 표시한다. 제 1 예에서, C_(M+1), C_(M+2) 등으로 표시되는 제거된 계수들은 남은 계수들 (C_l, C_2, 등) 에 가산된다. 제 2 예에서, C_L' 은 제거된 계수들 (C_1, C_2, ... , C_M) 을 원래의 정규화되지 않은 남은 계수 (C_L) 에 가산함으로써 정규화되는 정규화된 계수를 표시한다.
일부 사례들에서, 재정규화는 상술된 이른바 "가상 경계" 로부터 계산된 거리에 기초하여 상이한 미리 정의된 부분 필터들을 선택함으로써 수행될 수도 있다. 테이블은 이미 재정규화된, 가상 거리로부터의 이러한 계산된 거리에 기초하여 필터 계수들을 명시할 수도 있다.
어쨌든, 부분 필터 계수들을 재정규화한 후에, 필터링 유닛 (63) 은 비디오 블록 (100) 에 재정규화된 부분 필터를 적용하여 필터링되어진 복원된 비디오 블록을 발생시킨다 (140). 필터링 유닛 (63) 은 그 다음에 이러한 비디오 블록 (100) 의 필터링이 완료되었는지 여부를 결정할 수도 있다 (142). 상술된 바와 같이, 필터링 유닛 (63) 은 캐스케이딩된 방식으로 다수의 필터들을 적용할 수도 있으며, 이들의 각각은 본 개시물에서 설명된 부분 필터링 기법들에 따라 적용될 수도 있다. 일부 사례들에서, 이러한 필터들 중 하나 이상의 필터는 적용되지 않을 수도 있다. 또한, 상술된 바와 같이, 필터링 유닛 (63) 은, 일 예로서, 하나 이상의 임계치들을 사용하여 이러한 필터들을 적응적으로 적용해, 본 개시물에서 설명된 기법들의 부분 필터링 및/또는 미러 패딩 양상들을 언제 수행할지를 결정할 수도 있다. 필터링이 아직 완료되지 않았다고 필터링 유닛 (63) 이 결정하는 경우 ("아니오" (142)), 필터링 유닛 (63) 은 상술된 방식으로 계속 비디오 블록 (100) 을 필터링할 수도 있다 (132-142). 필터링이 완료되었다고 필터링 유닛 (63) 이 결정하는 경우 ("예" (142)), 필터링 유닛 (63) 은 참조 영상 메모리 (64) 에 필터링되어진 복원된 비디오 블록 (100) 을 저장할 수도 있다 (144).
도 7 은, 본 개시물에서 설명된 기법들의 미러 패딩 양상들을 구현하고 있는, 도 1 - 도 3 의 예들에서 도시된 비디오 인코더 (20) 또는 비디오 디코더 (30) 와 같은 비디오 코더의 예시적인 동작을 도시하는 플로차트이다. 기법들이 특정 비디오 코더, 즉, 도 2 의 예에서 도시된 비디오 인코더 (20) 에 대해 설명되지만, 기법들은 도 3 의 예에 도시된 비디오 디코더 (30) 와 같은 임의의 비디오 코더에 의해 구현될 수도 있다. 더불어, 특정 유형의 컨텐츠 데이터, 즉, 비디오 데이터에 대해 설명되지만, 기법들은 일반적으로 오디오 데이터, 텍스트 데이터, 이미지 데이터 등을 포함하여 임의의 유형의 컨텐츠 데이터에 대해 구현될 수도 있다.
처음에, 비디오 인코더 (20) 는 상술된 방식으로 비디오 데이터를 인코딩하여 인코딩된 비디오 데이터를 발생시킨다. 이러한 비디오 데이터를 인코딩하기 위해, 비디오 인코더 (20) 는, 비디오 데이터를 인코딩하여 인코딩된 비디오 데이터를 발생시킨 후에, 인코딩된 비디오 데이터를 디코딩하여 후속하는 비디오 데이터를 인코딩하는데 이용되는 복원된 비디오 데이터를 형성한다. 그 결과, 비디오 인코더 (20) 는 인코딩된 비디오 블록들을 디코딩하여 도 4a - 도 4e 의 예들에서 도시된 비디오 블록 (120) 과 같은 복원된 비디오 블록들을 형성할 수도 있다 (150). 비디오 인코더 (20) 는 필터링 유닛 (63) 을 불러와 비디오 블록 (120) 을 필터링할 수도 있다. 비디오 블록 (120) 을 필터링하기 위해, 필터링 유닛 (63) 은 필터를 선택하여 복원된 비디오 블록 (100) 에 적용할 수도 있다 (152). 필터를 선택한 후에, 필터링 유닛 (63) 은 복원된 비디오 블록 (120) 에 필터를 적용할 수도 있다. 일부 사례들에서, 필터링 유닛 (63) 은 선택된 필터의 적어도 하나의 계수가 위에서 보다 상세히 설명된 이유들로 이용가능하지 않은 적어도 하나의 픽셀 값에 적용될 것을 결정할 수도 있다 (154).
선택된 필터의 적어도 하나의 계수가 이용가능하지 않은 적어도 하나의 픽셀 값에 적용될 것이라는 결정하는 것에 대한 응답으로, 필터링 유닛 (63) 은 상술된 방식으로 미러 패딩을 수행할 수도 있다 (156). 필터링 유닛 (63) 은, 미러 패딩을 수행한 다음에, 비디오 블록 (120) 에 선택된 필터 또는 부분 필터 중 어느 일방을 적용하여 필터링되어진 복원된 비디오 블록을 발생시킬 수도 있으며, 여기서 부분 필터는 상술된 방식으로 결정될 수도 있다 (158). 필터링 유닛 (63) 은 그 다음에 이러한 비디오 블록 (120) 의 필터링이 완료되었는지 여부를 결정할 수도 있다 (160). 상술된 바와 같이, 필터링 유닛 (63) 은 캐스케이딩된 방식으로 다수의 필터들을 적용할 수도 있으며, 이들의 각각은 본 개시물에서 설명된 부분 필터링 기법들에 따라 적용될 수도 있다. 일부 사례들에서, 이러한 필터들 중 하나 이상의 필터는 적용되지 않을 수도 있다. 또한, 상술된 바와 같이, 필터링 유닛 (63) 은, 일 예로서, 하나 이상의 임계치들을 사용하여 이러한 필터들을 적응적으로 적용해, 본 개시물에서 설명된 기법들의 부분 필터링 및/또는 미러 패딩 양상들을 언제 수행할지를 결정할 수도 있다. 필터링이 아직 완료되지 않았다고 필터링 유닛 (63) 이 결정하는 경우 ("아니오" (160)), 필터링 유닛 (63) 은 상술된 방식으로 계속 비디오 블록 (120) 을 필터링할 수도 있다 (152-160). 필터링이 완료되었다고 필터링 유닛 (63) 이 결정하는 경우 ("예" (160)), 필터링 유닛 (63) 은 참조 영상 메모리 (64) 에 필터링되어진 복원된 비디오 블록 (120) 을 저장할 수도 있다 (162).
이러한 방식으로, 본 기법들의 다양한 양상은 복원된 비디오 데이터를 발생시키 위해 인코딩된 비디오 데이터를 디코딩하는 방법에 대한 것일 수도 있다. 이러한 방법은, 인코딩된 비디오 데이터를 디코딩하는 경우, 디바이스로, 미러 패딩을 수행해 복원된 비디오 데이터의 제 1 부분의 경계에 위치된 픽셀 값들을 미러링하여 이용가능하지 않은 비디오 데이터의 제 2 부분의 픽셀 값들을 대체하는 단계를 포함할 수도 있으며, 여기서 경계는 비디오 데이터의 제 1 부분을 비디오 데이터의 제 2 부분으로부터 분리한다. 방법은, 디바이스로, 하나 이상의 필터들을 적용하여 미러링된 픽셀 값들 중 적어도 하나의 미러링된 픽셀 값을 필터링하는 단계를 또한 포함할 수도 있다.
일부 사례들에서, 필터들은 디블록킹 (DB) 필터, 샘플 적응형 오프셋 (SAO) 필터, 및 적응형 루프 필터 (ALF) 중 하나 이상의 필터를 포함한다. 다른 사례들에서, 부분은 최대 코딩 유닛 (LCU) 를 포함하고, 방법은 슬라이스 또는 프레임 레벨보다는 LCU 의 레벨에서 하나 이상의 필터들을 적용하여 LCU 를 필터링하는 단계를 포함한다.
일부 양상들에서, 방법은 하나 이상의 기준에 기초하여 하나 이상의 필터들을 적응적으로 적용하는 단계를 포함한다. 다른 양상들에서, 하나 이상의 필터들을 적용하는 것은 복수의 필터 계수들을 포함하는 풀 필터를 선택하는 것, 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 결정하는 것, 및 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수의 결정에 기초하여, 부분 필터를 결정하는 것을 포함한다. 부분 필터는 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 포함하지 않을 수도 있다. 필터를 적용하는 것은 부분 필터 내에 포함된 복수의 필터 계수들을 재정규화하는 것, 및 재정규화된 부분 필터를 적용하여 미러링된 픽셀 값들 중 적어도 하나의 미러링된 픽셀 값을 필터링하는 것을 또한 포함할 수도 있다.
일부 사례들에서, 방법을 수행하는 디바이스는 비디오 인코더를 포함하며, 여기서, 이러한 사례들에서, 방법은 비디오 인코더로 비디오 데이터를 인코딩하여 인코딩된 비디오 데이터를 발생시키는 단계를 또한 포함하고, 여기서 인코딩된 비디오 데이터를 디코딩하는 것은 인코딩된 비디오 데이터를 디코딩하여 비디오 데이터를 인코딩하는 경우에 참조 데이터로서 이용하기 위해 복원된 비디오 데이터를 발생시키는 것을 포함한다. 대안으로, 디바이스는 비디오 디코더를 포함할 수도 있다.
일부 사례들에서, 디바이스는 상술된 방법의 단계들의 각각을 수행하는 수단을 포함한다. 다른 사례들에서, 디바이스는 상술된 방법의 단계들을 수행하는 하나 이상의 프로세서들을 포함한다. 또 다른 사례들에서, 비일시적 컴퓨터 판독가능 매체는, 실행 시, 하나 이상의 프로세서로 하여금, 상술된 방법을 수행하게 하도록 하는 명령들을 저장한다.
본 기법들의 다양한 양상들이 상술된 HEVC 작업 초안에 포함되거나 그렇지 않으면 상세히 설명된다. 예를 들어, HEVC 작업 초안의 현재의 버전은 부분 필터와 관련하여 이러한 개시물에서 설명된 기법들의 양상들을 포함한다. 이러한 부분 필터링 기법들은 2012 년 4 월 27 일에서 2012 년 5 월 7 일 사이에 개최된 스위스 제네바에서의 제 9 차 회의에서 제시된 HEVC 작업 초안의 가장 최신 버전의 섹션 8.7.4.3 에서 제시된다. HEVC 작업 초안의 이러한 버전은 ITU-T SGI 6 WP3 의 JCT-VC (Joint Collaborative Team on Video Coding) 및 ISO/IEC JTC1/SC29/WG11 으로 발표되었다. HEVC 작업 초안의 이러한 버전의 섹션 8.7.4.3 이 하기에서 제시되며, 여기서 다양한 요소들, 변수들, 및 다른 아이템들에 대한 언급이 그 전체가 제시된 바와 같이 HEVC 작업 초안의 관점에서 보다 완전히 이해될 수도 있다. 그 결과, 이러한 요소들, 변수, 및 다른 아이템들의 각각에 대한 상세한 설명은 전체가 제공되지는 않는다.
8.7.4.3 루마 샘플들에 대한 코딩 트리 블록 필터링 프로세스
이러한 프로세스의 입력들은:
- ALF 이전의 복원된 루마 영상 샘플 어레이 (recPicture),
- 필터링되어진 복원된 루마 영상 샘플 어레이 (alfPicture)
- 루마 필터 계수들의 (AlfNumFilters)×(19) 어레이 (CL) 이다.
이러한 프로세스의 출력은 수정되며 필터링되어진 복원된 루마 영상 샘플 어레이 (alfPicture) 이다.
(1 << log2CbSize) 와 같은 현재의 영상 및 사이즈 (cbSize) 의 상부 왼쪽 루마 샘플들에 대해 코딩 블록의 상부 왼쪽 샘플을 명시하는 위치 (xC, yC) 를 갖는 현재의 루마 코딩 트리 블록에서의 각각의 루마 코딩 블록에 있어서, 각각의 코딩 유닛의 pcm_flag, pcm_loop_filter_disable_flag, 및 cu_transquant_bypass_flag 에 따라, 다음을 적용한다:
- 다음의 조건들 중 하나 이상의 조건이 참인 경우, 현재의 코딩 블록에 대해 적응형 루프 필터 프로세스가 적용되지 않는다.
- pcm_loop_filter_disable_flag 는 1 과 같고, pcm_flag 는 1 과 같다.
- cu_transquant_bypass_flag 는 1 과 같다.
- 그렇지 않으면, 다음이 적용된다.
- 하부조항 8.7.4.5 에서 명시된 바와 같은 코딩 블록 경계 패딩 프로세스는 ALF 이전에 복원된 영상 샘플 어레이 (recPicture) 를 불러오며, 루마 위치 (xC, yC), 현재의 코딩 블록 사이즈 (cbSize), 세분화도 (granularity) 블록 사이즈 (gbSize) 가 입력으로서 Min(cbSize, (CtbSize >> slice_granularity)) 로 설정되고, 출력은 패딩된 루마 샘플 어레이 (padBlock) 이다.
- 하부조항 8.7.3.3 에서 명시된 필터 인덱스 어레이 도출 프로세스는 입력들로서 루마 위치 (xC, yC) 및 코딩 블록의 사이즈 (cbSize) 를 불러오고, 출력은 2 차원 필터 인덱스 어레이 (fIdx) 이다.
- 변수 (vbLine) 는 CtbSize - 4 와 같게 설정된다.
- x, y = 0..(cbSize)-l 인 루마 영상 샘프 어레이의 필터링된 샘플들 (alfPicture[ xC + x, yC + y ]) 은 다음의 순서 단계들에 따라 도출된다:
1. 변수 (dist2VB) 는 다음과 같이 도출된다.
- (yC+CtbSize) 이 pic_height_in_luma_samples 이상인 경우, dist2VB 은 5 와 같게 설정된다.
- 그렇지 않으면, dist2VB 은 (((yC + y) % CtbSize) - vbLine) 와 같게 설정된다.
2. 변수들 (horPos[i] 및 verPos[i]) 은 각각 테이블 8 내지 테이블 14 및 테이블 8 내지 테이블 15 에 명시된다.
3. CL 에서 필터 계수들을 인덱싱하는데 이용되는 변수 (filtldx) 는 다음과 같이 도출된다.
filtldx = MapFiltFidx[fIdx [x, y]]
4. 필터링된 샘플 값은 다음과 같이 도출된다.
Figure pct00002
5. 필터링된 샘플 값은 다음과 같이 도출된다.
Figure pct00003
테이블 8 - 테이블 14 - 적응형 루프 필터 프로세스에 대한 horPos[i] 의 사양
Figure pct00004
테이블 8 - 테이블 15 - 적응형 루프 필터 프로세스에 대한 verPos[i] 의 사양
Figure pct00005
8.7.4.3.1 루마 샘플들에 대한 코딩 블록 필터 인덱스 어레이 도출 프로세스
이러한 프로세스의 입력들은:
- 현재의 영상의 상부 왼쪽 샘플에 대한 현재의 코딩 블록의 상부 왼쪽 샘플을 명시하는 위치 (xC, yC),
- 현재의 코딩 블록의 사이즈를 명시하는 변수 (cbSize) 이다.
이러한 프로세스의 출력은 (cbSize)×(cbSize) 의 2 차원 필터 인덱스 어레이 (fIdx) 이다.
필터 인덱스 어레이 (fIdx) 는 다음의 순서 단계들에 따라 도출된다:
1. 변수들 (xIdx 및 yIdx) 은 다음과 같이 도출되는데,
Figure pct00006
- xInterval 이 0 과 같은 경우, xIdx 은 3 과 같게 설정된다.
- 그렇지 않으면, xIdx 은 Min(3, xC/xlnterval) 와 같게 설정된다.
Figure pct00007
- yInterval 이 0 과 같은 경우, yIdx 은 3 과 같게 설정된다.
- 그렇지 않으면, yIdx 는 Min(3, yC/yInterval) 와 같게 설정된다.
2. x, y = 0..(cbSize)-l 인 필터 인덱스 값들 (fIdx[x, y]) 은 다음과 같이 도출된다.
Figure pct00008
이 개시물의 기법들은 모바일 폰과 같은 무선 통신 디바이스 핸드셋, 집적 회로 (IC), 또는 IC 들의 세트 (즉, 칩셋) 를 포함하여, 매우 다양한 디바이스들 또는 장치들로 구현될 수도 있다. 임의의 컴포넌트들, 모듈들, 또는 유닛들이 기능적 양상들을 강조하도록 제공되어 설명되었으며, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하는 것은 아니다. 본원에 설명된 기법들은 또한 하드웨어, 또는 하드웨어, 소프트웨어, 펌웨어의 임의의 조합으로 구현될 수도 있다. 모듈들, 유닛들, 또는 컴포넌트들로서 설명된 임의의 특색들은 집적 로직 디바이스로 함께, 또는 분산되긴 하나 상호동작가능한 로직 디바이스들로 별도로 구현될 수도 있다. 일부 경우들에서, 다양한 특색들은 집적된 회로 칩 또는 칩셋과 같은 집적 회로 디바이스로서 구현될 수도 있다.
소프트웨어로 구현되는 경우, 기법들은 프로세서에서 실행 시 상술된 방법들 중 하나 이상의 방법을 수행하는 명령들을 포함하는 컴퓨터 판독가능 매체에 의해 적어도 부분적으로 실현될 수도 있다. 컴퓨터 판독가능 매체는 물리적 비일시적 구조인 컴퓨터 판독가능 저장 매체를 포함할 수도 있고, 패키징 재료들을 포함할 수도 있는 컴퓨터 프로그램 제품의 일부를 형성할 수도 있다. 컴퓨터 판독가능 저장 매체는 동기식 동적 랜덤 액세스 메모리 (SDRAM) 과 같은 랜덤 액세스 메모리 (RAM), 판독 전용 메모리 (ROM), 비휘발성 랜덤 액세스 메모리 (NVRAM), 전기적으로 소거가능한 프로그램가능 판독 전용 메모리 (EEPROM), 플래시 메모리, 자기적 또는 광학적 데이터 저장 매체들 등을 포함할 수도 있다.
하나 이상의 디지털 신호 프로세서 (DSP) 들과 같은 하나 이상의 프로세서들, 범용 마이크로프로세서들, 주문형 반도체 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA) 들, 또는 임의의 다른 등가의 집적 또는 분산 논리 회로망에 의해 코드 또는 명령들이 실행될 수도 있다. 이에 따라, 본원에서 이용되는 바와 같은 용어 "프로세서" 는 앞서 언급한 구조들, 또는 본원에서 설명된 기법들을 구현하기에 적절한 임의의 다른 구조 중 임의의 것을 지칭할 수도 있다. 또한, 일부 양상들에서, 본원에 설명된 기능성은 인코딩 및 디코딩을 위해 구성된 전용 소프트웨어 모듈들 또는 하드웨어 모듈들 내에 제공될 수도 있거나, 결합된 비디오 코덱에 포함될 수도 있다. 또한, 기법들은 하나 이상의 회로들 또는 논리 요소들로 충분히 구현될 수 있다.
본 개시물에서 설명된 기법들은 본 개시물에서 설명된 기법들 중 하나 이상의 기법들을 구현하기 위한 회로부를 포함하는 다양한 집적 회로 디바이스들 중 임의의 디바이스를 이용하여 구현될 수도 있다. 이러한 회로부는 단일 집적 회로 칩으로, 또는 이른바 칩셋에서 다수의, 상호동작가능한 집적 회로 칩들로 제공될 수도 있다. 이러한 집적 회로 디바이스들은 다양한 애플리케이션들에서 이용될 수도 있으며, 이들 중 일부는 모바일 전화 핸드셋들과 같은 무선 통신 디바이스들에서의 이용을 포함할 수도 있다.
본 기법들의 다양한 양상들이 설명되었다. 이러한 양상들 및 다른 양상들은 다음의 청구항들의 범위 내에 있다.

Claims (40)

  1. 비디오 데이터를 코딩하는 방법으로서,
    상기 비디오 데이터의 제 1 부분을 상기 비디오 데이터의 제 2 부분으로부터 분리하는 상기 비디오 데이터의 제 1 부분의 경계 근처에 적용하기 위한 필터를 선택하는 단계로서, 상기 필터는 복수의 필터 계수들을 포함하는, 상기 필터를 선택하는 단계;
    상기 복수의 필터 계수들 중, 상기 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 결정하는 단계;
    상기 복수의 필터 계수들 중, 상기 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수의 결정에 기초하여, 부분 필터를 결정하는 단계로서, 상기 부분 필터는 상기 복수의 필터 계수들 중, 상기 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 포함하지 않는, 상기 부분 필터를 결정하는 단계;
    상기 부분 필터 내에 포함된 상기 복수의 필터 계수들을 재정규화하는 단계; 및
    상기 비디오 데이터의 필터링된 제 1 부분을 발생시키기 위해 상기 비디오 데이터의 상기 제 1 부분의 경계 근처에 재정규화된 상기 부분 필터를 적용하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 필터를 선택하는 단계는 상기 필터의 유형, 사이즈, 및 형상 중 하나 이상을 선택하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  3. 제 1 항에 있어서,
    선택된 상기 필터는 디블록킹 (deblocking; DB) 필터, 샘플 적응형 오프셋 (sample adaptive offset; SAO) 필터, 및 적응형 루프 필터 (adaptive loop filter; ALF) 중 하나의 필터를 포함하는, 비디오 데이터를 코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 부분은 최대 코딩 유닛 (largest coding unit; LCU) 을 포함하고,
    상기 비디오 데이터의 상기 부분을 필터링하기 위해 하나 이상의 부분 필터들을 적용하는 것은 상기 LCU 를 필터링하기 위해 슬라이스 또는 프레임 레벨보다는 상기 LCU 의 레벨에서 상기 하나 이상의 부분 필터들을 적용하는 것을 포함하는, 비디오 데이터를 코딩하는 방법.
  5. 제 1 항에 있어서,
    하나 이상의 부분 필터들을 적용하는 것은 하나 이상의 기준에 기초하여 하나 이상의 상기 부분 필터들을 적응적으로 적용하는 것을 포함하는, 비디오 데이터를 코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 부분 필터를 결정하는 단계는 비대칭 부분 필터를 결정하는 단계를 포함하고,
    상기 비대칭 부분 필터는 풀 필터의 복수의 필터 계수들 중, 상기 비디오 데이터가 필터링되는데 이용가능하고 상기 비대칭 부분 필터의 x 축 및 y 축 중 하나 이상의 축에 대해 비대칭 방식으로 배열된 하나 이상의 필터 계수를 포함하는, 비디오 데이터를 코딩하는 방법.
  7. 제 1 항에 있어서,
    상기 부분 필터를 결정하는 단계는 대칭 부분 필터를 결정하는 단계를 포함하고,
    상기 대칭 부분 필터는 풀 필터의 복수의 필터 계수들 중 상기 비디오 데이터가 필터링되는데 이용가능하고 상기 대칭 부분 필터의 x 축 및 y 축 중 하나 이상의 축에 대해 대칭 방식으로 배열된 하나 이상의 필터 계수를 포함하는, 비디오 데이터를 코딩하는 방법.
  8. 제 1 항에 있어서,
    상기 복수의 필터 계수들을 재정규화하는 단계는 제 1 재정규화 알고리즘 또는 제 2 재정규화 알고리즘 중 어느 일방에 따라 상기 복수의 필터 계수들을 재정규화하는 단계를 포함하고,
    상기 제 1 재정규화 알고리즘은,
    선택된 풀 필터 내에 포함된 상기 복수의 필터 계수들을 합하여 복수의 풀 필터 계수들의 제 1 합을 계산하는 것;
    상기 부분 필터 내에 포함된 상기 복수의 필터 계수들을 합하여 복수의 부분 필터 계수들의 제 2 합을 계산하는 것; 및
    상기 복수의 풀 필터 계수들의 상기 제 1 합을 상기 복수의 부분 필터 계수들의 상기 제 2 합으로 나눈 결과를 상기 부분 필터 내에 포함된 상기 복수의 필터 계수들의 각각에 곱함으로써 상기 부분 필터에 대한 상기 복수의 필터 계수들을 계산하는 것을 포함하며,
    상기 제 2 재정규화 알고리즘은 상기 풀 필터의 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수들 중 하나 이상을 상기 부분 필터의 복수의 필터 계수들 중 하나 이상의 필터 계수에 가산하는 것을 포함하는, 비디오 데이터를 코딩하는 방법.
  9. 제 1 항에 있어서,
    미러 패딩을 수행해 상기 비디오 데이터의 상기 제 1 부분의 경계에 위치된 픽셀 값들을 미러링하여, 이용가능하지 않은 상기 비디오 데이터의 제 2 부분의 픽셀 값들을 대체하는 단계를 또한 포함하고,
    상기 재정규화된 부분 필터를 적용하는 단계는 상기 재정규화된 부분 필터를 적용하여, 미러링된 상기 픽셀 값들 중 적어도 하나의 미러링된 픽셀 값을 필터링하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  10. 제 1 항에 있어서,
    상기 방법은,
    비디오 인코더로 상기 비디오 데이터를 인코딩하여 인코딩된 비디오 데이터를 발생시키는 단계, 및
    상기 비디오 인코더로 인코딩된 비디오 데이터를 디코딩하여 상기 비디오 데이터를 인코딩하는 경우에 참조 데이터로서 이용하기 위한 복원된 비디오 데이터를 발생시키는 단계를 또한 포함하는, 비디오 데이터를 코딩하는 방법.
  11. 제 1 항에 있어서,
    엔트로피 디코딩을 수행해 상기 비디오 데이터의 상기 제 1 부분을 엔트로피 디코딩하여 변환 계수들을 생성하는 단계;
    역 양자화를 수행해 상기 변환 계수들을 양자화해제하고 양자화해제된 변환 계수들을 발생시키는 단계;
    역 변환을 수행해 상기 양자화해제된 변환 계수들을 주파수 도메인에서 공간 도메인으로 변환시키고 잔여 비디오 데이터를 발생시키는 단계; 및
    상기 잔여 비디오 데이터로부터 상기 비디오 데이터를 복원하여 상기 비디오 데이터의 상기 제 1 부분의 복원된 버전을 발생시키는 단계를 또한 포함하는, 비디오 데이터를 코딩하는 방법.
  12. 비디오 데이터를 코딩하기 위한 디바이스로서,
    상기 비디오 데이터의 제 1 부분을 상기 비디오 데이터의 제 2 부분으로부터 분리하는 상기 비디오 데이터의 제 1 부분의 경계 근처에 적용하기 위한 필터를 선택하는 수단으로서, 상기 필터는 복수의 필터 계수들을 포함하는, 상기 필터를 선택하는 수단;
    상기 복수의 필터 계수들 중, 상기 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 결정하는 수단;
    상기 복수의 필터 계수들 중, 상기 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수의 결정에 기초하여, 부분 필터를 결정하는 수단으로서, 상기 부분 필터는 상기 복수의 필터 계수들 중, 상기 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 포함하지 않는, 상기 부분 필터를 결정하는 수단;
    상기 부분 필터 내에 포함된 상기 복수의 필터 계수들을 재정규화하는 수단; 및
    상기 비디오 데이터의 필터링된 제 1 부분을 발생시키기 위해 상기 비디오 데이터의 상기 제 1 부분의 경계 근처에 재정규화된 상기 부분 필터를 적용하는 수단을 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  13. 제 12 항에 있어서,
    상기 필터를 선택하는 수단은 상기 필터의 유형, 사이즈, 및 형상 중 하나 이상을 선택하는 수단을 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  14. 제 12 항에 있어서,
    선택된 상기 필터는 디블록킹 (deblocking; DB) 필터, 샘플 적응형 오프셋 (sample adaptive offset; SAO) 필터, 및 적응형 루프 필터 (adaptive loop filter; ALF) 중 하나의 필터를 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  15. 제 12 항에 있어서,
    상기 부분은 최대 코딩 유닛 (largest coding unit; LCU) 을 포함하고,
    상기 비디오 데이터의 상기 부분을 필터링하기 위해 하나 이상의 상기 부분 필터들을 적용하는 수단은 상기 LCU 를 필터링하기 위해 슬라이스 또는 프레임 레벨보다는 상기 LCU 의 레벨에서 상기 하나 이상의 부분 필터들을 적용하는 수단을 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  16. 제 12 항에 있어서,
    하나 이상의 부분 필터들을 적용하는 수단은 하나 이상의 기준에 기초하여 상기 하나 이상의 부분 필터들을 적응적으로 적용하는 수단을 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  17. 제 12 항에 있어서,
    상기 부분 필터를 결정하는 수단은 비대칭 부분 필터를 결정하는 수단을 포함하고,
    상기 비대칭 부분 필터는 풀 필터의 복수의 필터 계수들 중 상기 비디오 데이터가 필터링되는데 이용가능하고 상기 비대칭 부분 필터의 x 축 및 y 축 중 하나 이상의 축에 대해 비대칭 방식으로 배열된 하나 이상의 필터 계수를 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  18. 제 12 항에 있어서,
    상기 부분 필터를 결정하는 수단은 대칭 부분 필터를 결정하는 수단을 포함하고,
    상기 대칭 부분 필터는 풀 필터의 복수의 필터 계수들 중 상기 비디오 데이터가 필터링되는데 이용가능하고 상기 대칭 부분 필터의 x 축 및 y 축 중 하나 이상의 축에 대해 대칭 방식으로 배열된 하나 이상의 필터 계수를 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  19. 제 12 항에 있어서,
    상기 복수의 필터 계수들을 재정규화하는 수단은 제 1 재정규화 알고리즘 또는 제 2 재정규화 알고리즘 중 어느 일방에 따라 상기 복수의 필터 계수들을 재정규화하는 수단을 포함하고,
    상기 제 1 재정규화 알고리즘은,
    선택된 상기 풀 필터 내에 포함된 상기 복수의 필터 계수들을 합하여 복수의 풀 필터 계수들의 제 1 합을 계산하는 것;
    상기 부분 필터 내에 포함된 상기 복수의 필터 계수들을 합하여 복수의 부분 필터 계수들의 제 2 합을 계산하는 것; 및
    상기 복수의 풀 필터 계수들의 상기 제 1 합을 상기 복수의 부분 필터 계수들의 상기 제 2 합으로 나눈 결과를 상기 부분 필터 내에 포함된 상기 복수의 필터 계수들의 각각에 곱함으로써 상기 부분 필터에 대한 상기 복수의 필터 계수들을 계산하는 것을 포함하며,
    상기 상기 제 2 재정규화 알고리즘은 상기 풀 필터의 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수들 중 하나 이상을 상기 부분 필터의 복수의 필터 계수들 중 하나 이상의 필터 계수에 가산하는 것을 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  20. 제 12 항에 있어서,
    미러 패딩을 수행해 상기 비디오 데이터의 상기 제 1 부분의 경계에 위치된 픽셀 값들을 미러링하여, 이용가능하지 않은 상기 비디오 데이터의 제 2 부분의 픽셀 값들을 대체하는 수단을 더 포함하고,
    상기 재정규화된 부분 필터를 적용하는 수단은 상기 재정규화된 부분 필터를 적용하여, 미러링된 상기 픽셀 값들 중 적어도 하나의 미러링된 픽셀 값을 필터링하는 수단을 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  21. 비디오 데이터를 코딩하기 위한 디바이스로서,
    하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은,
    상기 비디오 데이터의 제 1 부분을 상기 비디오 데이터의 제 2 부분으로부터 분리하는 상기 비디오 데이터의 제 1 부분의 경계 근처에 적용하기 위한 필터를 선택하고, 복수의 필터 계수들 중, 상기 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 결정하며, 상기 복수의 필터 계수들 중, 상기 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수의 결정에 기초하여, 부분 필터를 결정하고, 상기 부분 필터 내에 포함된 상기 복수의 필터 계수들을 재정규화하며, 상기 비디오 데이터의 필터링된 제 1 부분을 발생시키기 위해 상기 비디오 데이터의 상기 제 1 부분의 경계 근처에 재정규화된 상기 부분 필터를 적용하도록 구성되며,
    상기 필터는 상기 복수의 필터 계수들을 포함하며,
    상기 부분 필터는 상기 복수의 필터 계수들 중, 상기 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 포함하지 않는, 비디오 데이터를 코딩하기 위한 디바이스.
  22. 제 21 항에 있어서,
    상기 하나 이상의 프로세서들은 또한 상기 필터의 유형, 사이즈, 및 형상 중 하나 이상을 선택하도록 구성되는, 비디오 데이터를 코딩하기 위한 디바이스.
  23. 제 21 항에 있어서,
    선택된 상기 필터는 디블록킹 (deblocking; DB) 필터, 샘플 적응형 오프셋 (sample adaptive offset; SAO) 필터, 및 적응형 루프 필터 (adaptive loop filter; ALF) 중 하나의 필터를 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  24. 제 21 항에 있어서,
    상기 부분은 최대 코딩 유닛 (largest coding unit; LCU) 을 포함하고,
    상기 하나 이상의 프로세서들은 또한 상기 LCU 를 필터링하기 위해 슬라이스 또는 프레임 레벨보다는 상기 LCU 의 레벨에서 하나 이상의 상기 부분 필터들을 적용하도록 구성되는, 비디오 데이터를 코딩하기 위한 디바이스.
  25. 제 21 항에 있어서,
    상기 하나 이상의 프로세서들은 또한 하나 이상의 기준에 기초하여 하나 이상의 상기 부분 필터들을 적응적으로 적용하도록 구성되는, 비디오 데이터를 코딩하기 위한 디바이스.
  26. 제 21 항에 있어서,
    상기 하나 이상의 프로세서들은 또한 비대칭 부분 필터를 결정하도록 구성되고,
    상기 비대칭 부분 필터는 풀 필터의 복수의 필터 계수들 중 상기 비디오 데이터가 필터링되는데 이용가능하고 상기 비대칭 부분 필터의 x 축 및 y 축 중 하나 이상의 축에 대해 비대칭 방식으로 배열된 하나 이상의 필터 계수를 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  27. 제 21 항에 있어서,
    상기 하나 이상의 프로세서들은 또한 대칭 부분 필터를 결정하도록 구성되고,
    상기 대칭 부분 필터는 풀 필터의 복수의 필터 계수들 중 상기 비디오 데이터가 필터링되는데 이용가능하고 상기 대칭 부분 필터의 x 축 및 y 축 중 하나 이상의 축에 대해 대칭 방식으로 배열된 하나 이상의 필터 계수를 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  28. 제 21 항에 있어서,
    상기 하나 이상의 프로세서들은 또한 제 1 재정규화 알고리즘 또는 제 2 재정규화 알고리즘 중 어느 일방에 따라 상기 복수의 필터 계수들을 재정규화하도록 구성되고,
    상기 제 1 재정규화 알고리즘은,
    선택된 풀 필터 내에 포함된 상기 복수의 필터 계수들을 합하여 복수의 풀 필터 계수들의 제 1 합을 계산하는 것;
    상기 부분 필터 내에 포함된 상기 복수의 필터 계수들을 합하여 복수의 부분 필터 계수들의 제 2 합을 계산하는 것; 및
    상기 복수의 풀 필터 계수들의 상기 제 1 합을 상기 복수의 부분 필터 계수들의 상기 제 2 합으로 나눈 결과를 상기 부분 필터 내에 포함된 상기 복수의 필터 계수들의 각각에 곱함으로써 상기 부분 필터에 대한 상기 복수의 필터 계수들을 계산하는 것을 포함하며,
    상기 제 2 재정규화 알고리즘은 상기 풀 필터의 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수들 중 하나 이상을 상기 부분 필터의 복수의 필터 계수들 중 하나 이상의 필터 계수에 가산하는 것을 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  29. 제 21 항에 있어서,
    상기 하나 이상의 프로세서들은 또한 미러 패딩을 수행해 상기 비디오 데이터의 상기 제 1 부분의 경계에 위치된 픽셀 값들을 미러링하여, 이용가능하지 않은 상기 비디오 데이터의 제 2 부분의 픽셀 값들을 대체하고, 상기 재정규화된 부분 필터를 적용하여, 미러링된 상기 픽셀 값들 중 적어도 하나의 미러링된 픽셀 값을 필터링하도록 구성되는, 비디오 데이터를 코딩하기 위한 디바이스.
  30. 제 21 항에 있어서,
    상기 디바이스는 비디오 인코더를 포함하고,
    상기 하나 이상의 프로세서들은 또한 상기 비디오 데이터를 상기 비디오 인코더로 인코딩하여 인코딩된 비디오 데이터를 발생시키고, 상기 인코딩된 비디오 데이터를 디코딩하여, 상기 비디오 데이터를 인코딩하는 경우 참조 데이터로서 이용하기 위한 복원된 비디오 데이터를 발생시키도록 구성되는, 비디오 데이터를 코딩하기 위한 디바이스.
  31. 제 21 항에 있어서,
    상기 디바이스는 비디오 디코더를 포함하는, 비디오 데이터를 코딩하기 위한 디바이스.
  32. 저장된 명령들을 포함하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 실행 시, 비디오 코딩 디바이스의 하나 이상의 프로세서들로 하여금,
    상기 비디오 데이터의 제 1 부분을 상기 비디오 데이터의 제 2 부분으로부터 분리하는 상기 비디오 데이터의 제 1 부분의 경계 근처에 적용하기 위한 필터를 선택하고;
    복수의 필터 계수들 중, 상기 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 결정하며;
    상기 복수의 필터 계수들 중, 상기 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수의 결정에 기초하여, 부분 필터를 결정하고;
    상기 부분 필터 내에 포함된 상기 복수의 필터 계수들을 재정규화하며;
    상기 비디오 데이터의 필터링된 제 1 부분을 발생시키기 위해 상기 비디오 데이터의 상기 제 1 부분의 경계 근처에 재정규화된 상기 부분 필터를 적용하게 하도록 하며,
    상기 필터는 상기 복수의 필터 계수들을 포함하고,
    상기 부분 필터는 상기 복수의 필터 계수들 중, 상기 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수를 포함하지 않는, 비일시적 컴퓨터 판독가능 저장 매체.
  33. 제 31 항에 있어서,
    실행 시 상기 적어도 하나의 프로세서들로 하여금 필터를 선택하게 하도록 하는 상기 명령들은, 실행 시, 상기 하나 이상의 프로세서들로 하여금, 상기 필터의 유형, 사이즈, 및 형상 중 하나 이상을 선택하게 하도록 하는 명령들을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  34. 제 32 항에 있어서,
    상기 필터는 디블록킹 (deblocking; DB) 필터, 샘플 적응형 오프셋 (sample adaptive offset; SAO) 필터, 및 적응형 루프 필터 (adaptive loop filter; ALF) 중 하나의 필터를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  35. 제 32 항에 있어서,
    상기 부분은 최대 코딩 유닛 (largest coding unit; LCU) 을 포함하고,
    실행 시 상기 하나 이상의 프로세서들로 하여금 상기 비디오 데이터의 상기 부분을 필터링하기 위해 하나 이상의 부분 필터들을 적용하게 하도록 하는 상기 명령들은, 실행 시, 상기 하나 이상의 프로세서들로 하여금, 상기 LCU 를 필터링하기 위해 슬라이스 또는 프레임 레벨보다는 상기 LCU 의 레벨에서 상기 하나 이상의 부분 필터들을 적용하게 하도록 하는 명령들을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  36. 제 32 항에 있어서,
    실행 시 상기 하나 이상의 프로세서로 하여금 하나 이상의 부분 필터들을 적용하게 하도록 하는 상기 명령들은, 실행 시, 상기 하나 이상의 프로세서로 하여금, 하나 이상의 기준에 기초하여 상기 하나 이상의 부분 필터들을 적응적으로 적용하게 하도록 하기 위한 명령들을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  37. 제 32 항에 있어서,
    실행 시 상기 하나 이상의 프로세서로 하여금 부분 필터를 결정하게 하도록 하는 상기 명령들은, 실행 시, 상기 하나 이상의 프로세서로 하여금, 비대칭 부분 필터를 결정하게 하도록 하는 명령들을 포함하고,
    상기 비대칭 부분 필터는 풀 필터의 복수의 필터 계수들 중 상기 비디오 데이터가 필터링되는데 이용가능하고 상기 비대칭 부분 필터의 x 축 및 y 축 중 하나 이상의 축에 대해 비대칭 방식으로 배열된 하나 이상의 필터 계수를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  38. 제 32 항에 있어서,
    실행 시 상기 하나 이상의 프로세서로 하여금 부분 필터를 결정하게 하도록 하는 상기 명령들은, 실행 시, 상기 하나 이상의 프로세서로 하여금, 대칭 부분 필터를 결정하게 하도록 하는 명령들을 포함하고,
    상기 대칭 부분 필터는 풀 필터의 복수의 필터 계수들 중 상기 비디오 데이터가 필터링되는데 이용가능하고 상기 대칭 부분 필터의 x 축 및 y 축 중 하나 이상의 축에 대해 대칭 방식으로 배열된 하나 이상의 필터 계수를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  39. 제 32 항에 있어서,
    실행 시 상기 하나 이상의 프로세서로 하여금, 상기 복수의 필터 계수들을 재정규화하게 하도록 하는 상기 명령들은, 실행 시, 상기 하나 이상의 프로세서로 하여금, 제 1 재정규화 알고리즘 또는 제 2 재정규화 알고리즘 중 어느 일방에 따라 상기 복수의 필터 계수들을 재정규화하게 하도록 하는 명령들을 포함하고,
    상기 제 1 재정규화 알고리즘은,
    선택된 풀 필터 내에 포함된 상기 복수의 필터 계수들을 합하여 복수의 풀 필터 계수들의 제 1 합을 계산하는 것;
    상기 부분 필터 내에 포함된 상기 복수의 필터 계수들을 합하여 복수의 부분 필터 계수들의 제 2 합을 계산하는 것; 및
    상기 복수의 풀 필터 계수들의 상기 제 1 합을 상기 복수의 부분 필터 계수들의 상기 제 2 합으로 나눈 결과를 상기 부분 필터 내에 포함된 상기 복수의 필터 계수들의 각각에 곱함으로써 상기 부분 필터에 대한 상기 복수의 필터 계수들을 계산하는 것을 포함하며,
    상기 제 2 재정규화 알고리즘은 상기 풀 필터의 복수의 필터 계수들 중, 비디오 데이터가 필터링되도록 이용가능하지 않을 적어도 하나의 필터 계수들 중 하나 이상을 상기 부분 필터의 복수의 필터 계수들 중 하나 이상의 필터 계수에 가산하는 것을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  40. 제 32 항에 있어서,
    실행 시, 상기 하나 이상의 프로세서들로 하여금, 미러 패딩을 수행해 상기 비디오 데이터의 제 1 부분의 경계에 위치된 픽셀 값들을 미러링하여, 이용가능하지 않은 상기 비디오 데이터의 제 2 부분의 픽셀 값들을 대체하게 하도록 하는 명령들을 더 포함하고,
    실행 시 상기 하나 이상의 프로세서로 하여금 상기 재정규화된 부분 필터를 적용하게 하도록 하는 명령들은, 실행 시, 상기 하나 이상의 프로세서로 하여금, 상기 재정규화된 부분 필터를 적용하여, 미러링된 상기 픽셀 값들 중 적어도 하나의 미러링된 픽셀 값을 필터링하게 하도록 하는 명령들을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020147006869A 2011-08-18 2012-08-15 파티션 기반 필터들을 적용하는 비디오 코딩 방법과 디바이스, 및 저장 매체 KR101565266B1 (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201161525128P 2011-08-18 2011-08-18
US61/525,128 2011-08-18
US201161525606P 2011-08-19 2011-08-19
US61/525,606 2011-08-19
US201161531528P 2011-09-06 2011-09-06
US61/531,528 2011-09-06
US13/585,657 2012-08-14
US13/585,657 US9641866B2 (en) 2011-08-18 2012-08-14 Applying partition-based filters
PCT/US2012/050960 WO2013048630A1 (en) 2011-08-18 2012-08-15 Method and device for video coding applying parition - based filters, and storage medium

Publications (2)

Publication Number Publication Date
KR20140056342A true KR20140056342A (ko) 2014-05-09
KR101565266B1 KR101565266B1 (ko) 2015-11-02

Family

ID=47712650

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147006869A KR101565266B1 (ko) 2011-08-18 2012-08-15 파티션 기반 필터들을 적용하는 비디오 코딩 방법과 디바이스, 및 저장 매체

Country Status (6)

Country Link
US (1) US9641866B2 (ko)
EP (1) EP2745516B1 (ko)
JP (1) JP6022570B2 (ko)
KR (1) KR101565266B1 (ko)
CN (1) CN103748875B (ko)
WO (1) WO2013048630A1 (ko)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016200242A1 (ko) * 2015-06-11 2016-12-15 한양대학교 산학협력단 적응적인 디블록킹 필터링을 이용하는 영상 부호화 방법과 영상 복호화 방법 및 장치
WO2016204531A1 (ko) * 2015-06-16 2016-12-22 엘지전자(주) 블록 경계에 따라 적응적으로 필터링을 수행하는 방법 및 장치
KR20200086935A (ko) * 2019-01-10 2020-07-20 세종대학교산학협력단 미러 패딩을 이용한 손 동작 인식 장치 및 그 방법
WO2021101205A1 (ko) * 2019-11-18 2021-05-27 엘지전자 주식회사 영상 코딩 장치 및 방법
WO2021118296A1 (ko) * 2019-12-12 2021-06-17 엘지전자 주식회사 루프 필터링을 제어하는 영상 코딩 장치 및 방법
WO2021118295A1 (ko) * 2019-12-12 2021-06-17 엘지전자 주식회사 루프 필터링을 제어하기 위한 영상 코딩 장치 및 방법
US11095888B2 (en) 2017-04-06 2021-08-17 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method
KR20220066897A (ko) * 2019-10-02 2022-05-24 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 비트스트림에서의 서브픽처 시그널링을 위한 신택스
US11956432B2 (en) 2019-10-18 2024-04-09 Beijing Bytedance Network Technology Co., Ltd Interplay between subpictures and in-loop filtering

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101215152B1 (ko) * 2011-04-21 2012-12-24 한양대학교 산학협력단 인루프 필터링을 적용한 예측 방법을 이용한 영상 부호화/복호화 방법 및 장치
CN108337522B (zh) * 2011-06-15 2022-04-19 韩国电子通信研究院 可伸缩解码方法/设备、可伸缩编码方法/设备和介质
JP2014197723A (ja) * 2012-01-06 2014-10-16 ソニー株式会社 画像処理装置および方法
US20130208808A1 (en) * 2012-02-08 2013-08-15 Panasonic Corporation Image coding method and image decoding method
US8983218B2 (en) 2012-04-11 2015-03-17 Texas Instruments Incorporated Virtual boundary processing simplification for adaptive loop filtering (ALF) in video coding
US9635360B2 (en) * 2012-08-01 2017-04-25 Mediatek Inc. Method and apparatus for video processing incorporating deblocking and sample adaptive offset
TWI652935B (zh) 2012-09-28 2019-03-01 Vid衡器股份有限公司 視訊編碼方法及裝置
US9819965B2 (en) * 2012-11-13 2017-11-14 Intel Corporation Content adaptive transform coding for next generation video
US9596461B2 (en) 2012-11-26 2017-03-14 Qualcomm Incorporated Loop filtering across constrained intra block boundaries in video coding
GB2509707B (en) * 2013-01-04 2016-03-16 Canon Kk A method, device, computer program, and information storage means for encoding or decoding a video sequence
US20140254659A1 (en) * 2013-03-11 2014-09-11 Mediatek Inc. Video coding method using at least evaluated visual quality and related video coding apparatus
US9111336B2 (en) 2013-09-19 2015-08-18 At&T Intellectual Property I, Lp Method and apparatus for image filtering
US9237359B2 (en) 2013-09-25 2016-01-12 Qualcomm Incorporated Filtering video data in video coding
CA2942903A1 (en) * 2014-03-16 2015-09-24 Vid Scale, Inc. Method and apparatus for the signaling of lossless video coding
US10104397B2 (en) * 2014-05-28 2018-10-16 Mediatek Inc. Video processing apparatus for storing partial reconstructed pixel data in storage device for use in intra prediction and related video processing method
US10291813B2 (en) 2015-04-23 2019-05-14 Google Llc Sheet generator for image processor
CN113810691A (zh) 2015-07-08 2021-12-17 交互数字麦迪逊专利控股公司 用于使用交叉平面滤波的增强色度编码的方法和装置
TW201842782A (zh) * 2017-04-06 2018-12-01 美商松下電器(美國)知識產權公司 編碼裝置、解碼裝置、編碼方法及解碼方法
JP6919424B2 (ja) * 2017-08-31 2021-08-18 沖電気工業株式会社 映像符号化装置、映像復号装置、及び映像処理システム
SG11202012700UA (en) * 2018-06-28 2021-01-28 Huawei Tech Co Ltd Memory access window and padding for motion vector refinement and motion compensation
US11094088B2 (en) * 2018-08-31 2021-08-17 Mediatek Inc. Method and apparatus of in-loop filtering for virtual boundaries in video coding
US11765349B2 (en) 2018-08-31 2023-09-19 Mediatek Inc. Method and apparatus of in-loop filtering for virtual boundaries
EP4192016A1 (en) * 2018-10-23 2023-06-07 HFI Innovation Inc. Method and apparatus for reduction of in-loop filter buffer
CN109600611B (zh) * 2018-11-09 2021-07-13 北京达佳互联信息技术有限公司 环路滤波方法、环路滤波装置、电子设备和可读介质
GB2580173B (en) 2018-12-21 2022-07-27 Canon Kk A filter
US20220150511A1 (en) * 2018-12-21 2022-05-12 Electronics And Telecommunications Research Institute Image encoding/decoding method and device, and recording medium having bitstream stored therein
US11044473B2 (en) * 2018-12-21 2021-06-22 Qualcomm Incorporated Adaptive loop filtering classification in video coding
KR20210100737A (ko) 2018-12-23 2021-08-17 후아웨이 테크놀러지 컴퍼니 리미티드 인코더, 디코더 및 적응 루프 필터를 사용한 대응 방법들
US11252434B2 (en) * 2018-12-31 2022-02-15 Tencent America LLC Method for wrap-around padding for omnidirectional media coding
US11089335B2 (en) 2019-01-14 2021-08-10 Mediatek Inc. Method and apparatus of in-loop filtering for virtual boundaries
EP3867858A1 (en) * 2019-02-27 2021-08-25 Google LLC Grayscale histogram generation
US11910024B2 (en) 2019-03-11 2024-02-20 Qualcomm Incorporated Boundary handling for adaptive loop filtering
US11159791B2 (en) * 2019-03-16 2021-10-26 Mediatek Inc. Method and apparatus for signaling adaptive loop filter parameters in video coding
WO2020249124A1 (en) * 2019-06-14 2020-12-17 Beijing Bytedance Network Technology Co., Ltd. Handling video unit boundaries and virtual boundaries based on color format
WO2020262928A1 (ko) * 2019-06-23 2020-12-30 엘지전자 주식회사 비디오/영상 코딩 시스템에서 디블록킹 필터링 방법 및 장치
KR20220030953A (ko) 2019-07-09 2022-03-11 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 적응적 루프 필터링을 위한 샘플 결정
CN117939170A (zh) 2019-07-11 2024-04-26 北京字节跳动网络技术有限公司 自适应环路滤波中的样点填充
CN114175637B (zh) 2019-07-15 2024-04-12 北京字节跳动网络技术有限公司 自适应环路滤波中的分类
WO2021025167A1 (en) * 2019-08-08 2021-02-11 Panasonic Intellectual Property Corporation Of America System and method for video coding
CN114270850A (zh) * 2019-08-08 2022-04-01 松下电器(美国)知识产权公司 用于视频编码的系统和方法
EP4018652A4 (en) 2019-09-22 2022-11-02 Beijing Bytedance Network Technology Co., Ltd. FILLING METHOD IN AN ADAPTIVE LOOP FILTER
CN114450954A (zh) 2019-09-27 2022-05-06 北京字节跳动网络技术有限公司 不同视频单元之间的自适应环路滤波
WO2021068906A1 (en) 2019-10-10 2021-04-15 Beijing Bytedance Network Technology Co., Ltd. Padding process at unavailable sample locations in adaptive loop filtering
JP7180001B2 (ja) 2019-12-24 2022-11-29 テレフオンアクチーボラゲット エルエム エリクソン(パブル) 適応ループフィルタ処理のための仮想境界処理

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8045615B2 (en) 2005-05-25 2011-10-25 Qualcomm Incorporated Deblock filtering techniques for video coding according to multiple video standards
CA2614475A1 (en) 2005-07-29 2007-03-22 Samsung Electronics Co., Ltd. Deblocking filtering method considering intra-bl mode and multilayer video encoder/decoder using the same
US8804831B2 (en) 2008-04-10 2014-08-12 Qualcomm Incorporated Offsets at sub-pixel resolution
EP2157799A1 (en) 2008-08-18 2010-02-24 Panasonic Corporation Interpolation filter with local adaptation based on block edges in the reference frame
US8611435B2 (en) 2008-12-22 2013-12-17 Qualcomm, Incorporated Combined scheme for interpolation filtering, in-loop filtering and post-loop filtering in video coding
EP2265026A1 (en) 2009-06-16 2010-12-22 Canon Kabushiki Kaisha Method and device for deblocking filtering of SVC type video streams during decoding
KR20110001990A (ko) 2009-06-30 2011-01-06 삼성전자주식회사 영상 데이터의 인 루프 필터링 장치 및 방법과 이를 이용한 영상 부호화/복호화 장치
CN102098501B (zh) 2009-12-09 2013-05-08 中兴通讯股份有限公司 一种视频图像去块效应的方法和装置
KR101175421B1 (ko) * 2009-12-14 2012-08-20 삼성메디슨 주식회사 적응형 클러터 필터링 방법 및 그를 위한 초음파 시스템
JP2011147050A (ja) 2010-01-18 2011-07-28 Sony Corp 画像処理装置および方法
WO2011125445A1 (ja) 2010-03-31 2011-10-13 シャープ株式会社 画像フィルタ装置、符号化装置、および、復号装置
CN110430428B (zh) * 2010-06-17 2022-02-11 夏普株式会社 解码装置、编码装置、解码方法以及编码方法
SG196792A1 (en) 2010-07-09 2014-02-13 Samsung Electronics Co Ltd Method and apparatus for encoding video using adjustable loop filtering, and method and apparatus for decoding video using adjustable loop filtering
US9525884B2 (en) * 2010-11-02 2016-12-20 Hfi Innovation Inc. Method and apparatus of slice boundary filtering for high efficiency video coding
EP2708027B1 (en) 2011-05-10 2019-12-25 MediaTek Inc. Method and apparatus for reduction of in-loop filter buffer
JP2013118605A (ja) 2011-06-28 2013-06-13 Sony Corp 画像処理装置と画像処理方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016200242A1 (ko) * 2015-06-11 2016-12-15 한양대학교 산학협력단 적응적인 디블록킹 필터링을 이용하는 영상 부호화 방법과 영상 복호화 방법 및 장치
US11616987B2 (en) 2015-06-11 2023-03-28 Dolby Laboratories Licensing Corporation Method for encoding and decoding image using adaptive deblocking filtering, and apparatus therefor
WO2016204531A1 (ko) * 2015-06-16 2016-12-22 엘지전자(주) 블록 경계에 따라 적응적으로 필터링을 수행하는 방법 및 장치
US10448015B2 (en) 2015-06-16 2019-10-15 Lg Electronics Inc. Method and device for performing adaptive filtering according to block boundary
US11095888B2 (en) 2017-04-06 2021-08-17 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method
US11863741B2 (en) 2017-04-06 2024-01-02 Panasonic Intellectual Property Corporation Of America Encoder, decoder, encoding method, and decoding method
KR20200086935A (ko) * 2019-01-10 2020-07-20 세종대학교산학협력단 미러 패딩을 이용한 손 동작 인식 장치 및 그 방법
KR20220066897A (ko) * 2019-10-02 2022-05-24 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 비트스트림에서의 서브픽처 시그널링을 위한 신택스
US11956432B2 (en) 2019-10-18 2024-04-09 Beijing Bytedance Network Technology Co., Ltd Interplay between subpictures and in-loop filtering
WO2021101205A1 (ko) * 2019-11-18 2021-05-27 엘지전자 주식회사 영상 코딩 장치 및 방법
WO2021118295A1 (ko) * 2019-12-12 2021-06-17 엘지전자 주식회사 루프 필터링을 제어하기 위한 영상 코딩 장치 및 방법
WO2021118296A1 (ko) * 2019-12-12 2021-06-17 엘지전자 주식회사 루프 필터링을 제어하는 영상 코딩 장치 및 방법
US11647232B2 (en) 2019-12-12 2023-05-09 Lg Electronics Inc. Image coding device and method for controlling loop filtering
US11683532B2 (en) 2019-12-12 2023-06-20 Lg Electronics Inc. Image coding device and method for controlling loop filtering

Also Published As

Publication number Publication date
KR101565266B1 (ko) 2015-11-02
US20130044809A1 (en) 2013-02-21
JP2014524708A (ja) 2014-09-22
JP6022570B2 (ja) 2016-11-09
CN103748875B (zh) 2016-12-07
WO2013048630A1 (en) 2013-04-04
CN103748875A (zh) 2014-04-23
EP2745516A1 (en) 2014-06-25
US9641866B2 (en) 2017-05-02
EP2745516B1 (en) 2016-06-01

Similar Documents

Publication Publication Date Title
KR101565266B1 (ko) 파티션 기반 필터들을 적용하는 비디오 코딩 방법과 디바이스, 및 저장 매체
US10477232B2 (en) Search region determination for intra block copy in video coding
US9854275B2 (en) Quantization in video coding
US20180199062A1 (en) Intra prediction techniques for video coding
KR101607788B1 (ko) 비디오 코딩에서 슬라이스 경계들 또는 타일 경계들 주위의 루프 필터링
US10313682B2 (en) Determining regions when performing intra block copying
US9432696B2 (en) Systems and methods for low complexity forward transforms using zeroed-out coefficients
KR101670563B1 (ko) 타일 경계들에 걸친 루프 필터링 제어
US11470339B2 (en) Residual prediction for intra block copying
KR101539312B1 (ko) 비디오 프로세싱에 대한 라인 버퍼 감소를 위한 방법 및 장치
US20150071357A1 (en) Partial intra block copying for video coding
CA3092999A1 (en) Position dependent intra prediction combination extended with angular modes
US20100322303A1 (en) Video encoding/decoding method and apparatus
KR20160016861A (ko) 잔차 차동 펄스 코드 변조 (dpcm) 확장들 및 변환 스킵, 회전 및 스캔들과의 조화

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee