KR20110063857A - 보간 필터들 및 오프셋들을 이용한 디지털 비디오 코딩 - Google Patents

보간 필터들 및 오프셋들을 이용한 디지털 비디오 코딩 Download PDF

Info

Publication number
KR20110063857A
KR20110063857A KR1020117010119A KR20117010119A KR20110063857A KR 20110063857 A KR20110063857 A KR 20110063857A KR 1020117010119 A KR1020117010119 A KR 1020117010119A KR 20117010119 A KR20117010119 A KR 20117010119A KR 20110063857 A KR20110063857 A KR 20110063857A
Authority
KR
South Korea
Prior art keywords
sub
interpolation filters
block
interpolation
video
Prior art date
Application number
KR1020117010119A
Other languages
English (en)
Other versions
KR101437719B1 (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 KR20110063857A publication Critical patent/KR20110063857A/ko
Application granted granted Critical
Publication of KR101437719B1 publication Critical patent/KR101437719B1/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • 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/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop

Landscapes

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

Abstract

본 발명은, 보간 필터들 및 오프셋들을 사용하여 디지털 비디오 데이터를 인코딩하기 위한 기술들을 설명한다. 인코더는, 프레임들 또는 슬라이스들과 같은 이전에 인코딩된 비디오 유닛들에 대해 획득된 이력 보간 결과들에 기초하여 서브-픽셀 정확도 모션 추정을 위해 보간 필터들을 선택하도록 구성될 수도 있다. 또한, 인코더는, 기준 유닛과 코딩될 유닛 사이의 차이들에 기초하여 보간 이후 오프셋들을 계산하고 그 오프셋들을 서브-픽셀 위치들에 할당하도록 구성될 수도 있다. 오프셋들의 계산 및 할당은 모션 추정 이전에 수행될 수도 있다. 모션 추정은, 모션 탐색이, 오프셋들이 이전에 부가되었던 서브-픽셀 위치들을 고려하고, 비-제로 오프셋을 갖는 서브-픽셀 위치들을 평가하도록 정제될 수도 있다. 몇몇 경우들에서, 주어진 유닛에 대한 보간 필터 선택, 오프셋 계산, 및/또는 정제된 모션 추정은, 단일 인코딩 패스로 수행될 수도 있다.

Description

보간 필터들 및 오프셋들을 이용한 디지털 비디오 코딩{DIGITAL VIDEO CODING WITH INTERPOLATION FILTERS AND OFFSETS}
본 출원은, 2008년 10월 3일자로 출원되었고 그 전체가 여기에 참조로서 포함되는 미국 가출원 제 61/102,789호의 이점을 주장한다.
본 발명은 디지털 비디오 코딩에 관한 것으로, 더 상세하게는, 보간 필터들 및 오프셋들이 사용되는 비디오 코딩 기술들에 관한 것이다.
디지털 비디오 능력들은, 디지털 텔레비전, 디지털 다이렉트 브로드캐스트 시스템, 무선 브로드캐스트 시스템, 개인 휴대 정보 단말기 (PDA), 랩탑 또는 데스크탑 컴퓨터, 디지털 카메라, 디지털 레코딩 디바이스, 비디오 게이밍 디바이스, 비디오 게임 콘솔, 셀룰러 또는 위성 무선 전화기 등을 포함하는 광범위한 범위의 디바이스들에 포함될 수 있다. 디지털 비디오 디바이스는, 디지털 비디오 정보를 더 효율적으로 송신 및 수신하기 위해, MPEG-2, MPEG-4, 또는 ITU-T H.264/MPEG-4, Part 10, 진보된 비디오 코딩 (AVC), 또는 다른 표준들과 같은 비디오 압축 기술들을 구현한다. 비디오 압축 기술들은, 비디오 시퀀스들에 고유한 리던던시를 감소시키거나 제거하기 위해 공간 예측 및/또는 시간 예측을 수행할 수도 있다.
인트라-코딩은, 소정의 코딩된 유닛 내의 비디오 블록들 사이에서 공간 리던던시를 감소시키거나 제거하기 위해 공간 예측에 의존한다. 인터-코딩은, 비디오 시퀀스의 연속하는 코딩된 유닛들 내의 비디오 블록들 사이의 시간 리던던시를 감소시키거나 제거하기 위해 시간 예측에 의존한다. 인터-코딩에 있어서, 비디오 인코더는, 인코딩될 유닛 내의 블록들을 근접하게 매칭시키는 예측 블록들을 기준 유닛들에서 식별하고 코딩된 블록들과 예측 블록들 사이의 상대적인 배치를 나타내는 모션 벡터들을 생성하기 위해 모션 추정 및 보상을 수행한다. 코딩된 블록들과 예측 블록들 사이의 차이는 잔류 정보를 구성한다. 따라서, 인터-코딩된 블록은 하나 이상의 모션 벡터들 및 잔류 정보에 의해 특성화될 수 있다.
몇몇 코딩 프로세스들에서, 모션 벡터들은, 비디오 코더가 정수의 픽셀 값들보다 더 높은 정확도로 모션을 추적하도록 허용하는 프렉셔널 (fractional) 픽셀 값들을 가질 수도 있다. 프렉셔널 픽셀 값들로 예측 블록들의 식별을 지원하기 위해, 인코더는 쿼터-픽셀 또는 하프-픽셀 위치들과 같은 서브-픽셀 위치들에서 값들을 생성하도록 보간 동작들을 기준 유닛에 적용한다. H.264 표준은 서브-픽셀 위치들에 대한 고정된 보간 방식의 사용을 특정한다. 몇몇 경우, 상이한 보간 필터들이 코딩 효율도 및 예측 품질을 개선시키도록 선택될 수 있다. 예를 들어, 인코더는 선택에 기초하여, 고정된 보간 필터들 또는 적응적 보간 필터들의 상이한 세트들을 적용할 수도 있다. 또한, 예측 품질을 추가적으로 개선시키기 위해, 인코더는 보간 이후 서브-픽셀 위치값들에 오프셋들을 부가할 수도 있다.
일반적으로, 본 발명은 보간 필터들 및 오프셋들을 사용하여 디지털 비디오 데이터를 인코딩하기 위한 기술들을 설명한다. 인코더는, 프레임들 또는 슬라이스들과 같은 이전에 인코딩된 비디오 유닛들에 대해 획득된 이력 보간 결과들에 기초하여, 서브-픽셀 정확도 모션 추정을 위해 보간 필터들을 선택하도록 구성될 수도 있다. 또한, 인코더는, 코딩될 유닛과 기준 유닛 사이의 유닛 및/또는 블록 차이들에 기초하여 보간 이후 오프셋들을 계산하고 그 오프셋들을 서브-픽셀 위치들에 할당하도록 구성될 수도 있다. 오프셋들의 계산 및 할당은 모션 추정 이전에 수행될 수도 있다.
또한, 모션 탐색이, 오프셋들이 이전에 부가된 서브-픽셀 위치들을 고려하고 비-제로 오프셋을 갖는 서브-픽셀 위치들을 평가하도록, 모션 추정이 정제될 수도 있다. 몇몇 경우들에서, 소정의 유닛에 대한 보간 필터 선택, 오프셋 계산, 및/또는 정류된 모션 추정이 단일 인코딩 패스 (pass) 에서 수행될 수도 있다. 몇몇 예에서, 하나 이상의 이전에 인코딩된 유닛들에 대한 이력 정보가 주어지면, 인코더는 각각의 유닛에 걸친 각각의 서브-픽셀 위치 및 각각의 보간 필터에 대한 에러를 누산하여, 인코더가 각각의 서브-픽셀 위치들에서 최저의 보간 에러를 제공하는 보간 필터들을 선택할 수도 있다.
일 예에서, 본 발명은, 현재의 비디오 유닛에 대한 모션 추정을 수행하기 전에, 선택된 보간 필터들을 사용하여 기준 비디오 유닛의 서브-정수 (sub-integer) 픽셀들을 보간하는 단계, 현재의 비디오 유닛에 대한 모션 추정을 수행하기 전에 기준 비디오 유닛의 서브-정수 픽셀들 중 적어도 몇몇에 오프셋들을 적용하는 단계, 및 기준 비디오 유닛에 기초하여, 모션 추정을 사용하여 현재의 비디오의 블록을 인코딩하는 단계를 포함하는 비디오 인코딩 방법을 제공한다.
또 다른 예에서, 본 발명은, 현재의 비디오 유닛에 대한 모션 추정을 수행하기 전에, 선택된 보간 필터들을 사용하여 기준 비디오 유닛의 서브-정수 픽셀들을 보간하고, 현재의 비디오 유닛에 대한 모션 추정을 수행하기 전에 기준 비디오 유닛의 서브-정수 픽셀들 중 적어도 몇몇에 오프셋들을 적용하며, 기준 비디오 유닛에 기초하여, 모션 추정을 사용하여 현재의 비디오 유닛의 블록을 인코딩하도록 구성된 비디오 인코더를 포함하는 비디오 인코딩 장치를 제공한다.
부가적인 예에서, 본 발명은 프로그래밍가능한 프로세서로 하여금, 현재의 비디오 유닛에 대한 모션 추정을 수행하기 전에, 선택된 보간 필터들을 사용하여 기준 비디오 유닛의 서브-정수 픽셀들을 보간하게 하고, 현재의 비디오 유닛에 대한 모션 추정을 수행하기 전에 기준 비디오 유닛의 서브-정수 픽셀들 중 적어도 몇몇에 오프셋들을 적용하게 하며, 기준 비디오 유닛에 기초하여, 모션 추정을 사용하여 현재의 비디오 유닛의 블록을 인코딩하게 하기 위한 명령들로 인코딩된 컴퓨터-판독가능 저장 매체를 제공한다.
몇몇 경우들에서, 블록들을 인코딩하는 것은, 인코딩이 단일 패스에서 수행되도록 그 블록에 대한 모션 추정을 한번만 수행하는 것을 포함할 수도 있다. 보간 필터들의 세트는, 하나 이상의 이전에 인코딩된 비디오 유닛들에 대한 이력 보간 결과들에 기초하여 선택될 수도 있다. 보간 필터들은 각각의 서브-정수 픽셀들에 대응하며, 보간 필터들은 서브-정수 픽셀들 중 적어도 몇몇에 대한 상이한 보간 필터들을 포함한다. 오프셋들은, 프레임 또는 블록 기반으로 결정될 수도 있다.
하나 이상의 예들의 세부사항들이 첨부한 도면들 및 아래의 설명에서 개시된다. 다른 특성들, 목적들, 및 이점들은 설명 및 도면, 및 청구항으로부터 명백할 것이다.
도 1은 예시적인 비디오 인코딩 및 디코딩 시스템을 도시한 블록도이다.
도 2는 보간 및 오프셋들로 비디오 인코딩을 수행하도록 구성된 비디오 인코더의 일 예를 도시한 블록도이다.
도 3은 도 2의 인코더에 의해 인코딩된 비디오 데이터를 디코딩하도록 구성된 비디오 디코더의 일 예를 도시한 블록도이다.
도 4는 예측 데이터와 관련된 정수 픽셀 위치들 및 보간된 예측 데이터와 관련된 서브-정수 픽셀 위치들을 도시한 개념도이다.
도 5 내지 도 7은 오프셋 값들의 할당을 갖는 기준 유닛의 정수 픽셀 위치들을 도시한 개념도들이다.
도 8은 보간 및 오프셋들을 사용하여 비디오 데이터를 인코딩할 시의 비디오 인코더의 예시적인 동작을 도시한 흐름도이다.
도 9는, 현재의 유닛의 서브-픽셀들에 대한 보간된 값들을 계산하기 위해 이력 유닛들에 대한 보간 필터들의 최적 세트를 식별하기 위한 예시적인 방법을 도시한 흐름도이다.
본 발명은, 보간 및 오프셋들을 사용하여 디지털 비디오 데이터를 인코딩하기 위한 기술들을 설명한다. 예를 들어, 인코더는, 코딩될 유닛에 대한 모션 추정을 지원하기 위해, 보간 필터들을 선택하고 기준 비디오 유닛에서 서브-픽셀 위치들에 오프셋들을 할당하도록 구성될 수도 있다. 예를 들어, 코딩된 유닛들은, 매크로블록들과 같은 비디오 블록들을 포함하는 비디오 프레임들 또는 슬라이스들일 수도 있다. 필터들 및 오프셋들은, 코딩이 단일 패스에서 수행될 수도 있도록, 하나 이상의 이전에 코딩된 유닛들에 대한 이력 보간 결과들에 기초하여 소정의 유닛에 대한 모션 추정 이전에 선택될 수도 있다. 따라서, 몇몇 경우에서, 블록을 인코딩하는 것은, 인코딩이 단일 패스에서 수행되도록, 단지 일회만, 즉 단일 시간에서 블록에 대한 모션 추정을 수행하는 것을 포함할 수도 있다.
단일 패스에서 비디오 데이터를 인코딩하는 것은, 코딩될 유닛 내의 소정의 블록에 대해 일회만 모션 추정의 적용을 요구한다. 각각의 서브-픽셀 위치들에 대한 보간 필터들을 선택하기 위해 일회 모션 추정 및 보상을 수행하고, 그 후, 다시 선택된 보간 필터들을 적용하는 것 대신에, 인코더는, 하나 이상의 이전에 인코딩된 유닛들의 서브-픽셀 위치들에 대해 획득된 이력 보간 결과들에 기초하여 보간 필터들을 선택할 수도 있다.
또한, 인코더는, 모션 추정이 코딩될 유닛에 대해 수행되기 전에, 오프셋들을 계산하고 보간된 서브-픽셀 위치들에 오프셋들을 할당하도록 구성될 수도 있다. 오프셋들은, 기준 유닛과 코딩될 유닛 사이의 유닛 및/또는 블록 차이들에 기초하여 결정될 수도 있다. 몇몇 예들에서, 보간 및 오프셋들의 선택 이후, 서브-픽셀 위치들에 이전에 부가된 오프셋들을 고려하고 비-제로 오프셋 값들을 갖는 서브-픽셀 위치들을 평가하게 모션 탐색이 강제되도록, 모션 추정이 정제될 수도 있다. 몇몇 구현들에서, 이들 특성들의 조합은 인코딩이, 개선된 프로세싱 속도로 및 거의 또는 손실없는 성능으로 단일 패스에서 수행되도록 허용할 수도 있다.
몇몇 경우들에서, 비디오 인코더는, 현재의 유닛 N에 대한 기준 유닛으로서 사용되는 코딩된 유닛과 같이, 이전에 코딩된 유닛 (예를 들어, N-1) 에 대한 모션 추정에 의해 생성되는 보간 에러들에 기초하여, 현재의 유닛 N에 대한 모션 추정에 대해 사용되도록 보간 필터들을 선택할 수도 있다. 일 예로서, 이전에 코딩된 기준 유닛 N-1이 인코딩된 이후, 기준 유닛 N-1 내의 블록들과 이전의 기준 유닛 (예를 들어, N-2) 사이의 보간 에러는 서브-픽셀 위치들의 각각에서 결정될 수도 있다. 유닛 N-1에 대한 이러한 이력 에러 정보를 사용하여, 비디오 인코더는, 에러값들을 감소시킬 최적의 보간 필터들을 선택할 수도 있고, 그 후, 유닛 N에 대한 모션 추정에서의 사용을 위해 유닛 N-1에서 서브-픽셀 값들을 보간하도록 이들 보간 필터들을 사용할 수도 있다.
다른 경우들에서, 서브-픽셀 모션 추정에서의 사용을 위해 선택될 수 있는 보간 필터들의 세트가 주어지면, 비디오 인코더는, 각각의 보간 필터 및 각각의 서브-픽셀 위치에 대해, 이전에 인코딩된 유닛과 그의 기준 유닛 또는 유닛들 사이의 보간 에러를 누산할 수도 있다 (즉, 프레임들 N-1, N-2, N-3 등에 걸친 서브-픽셀 위치들에 대한 누산 보간 에러값들). 이러한 누산된 보간 에러값은, 코딩될 다음 유닛에 대한 모션 추정에서 사용될 기준 유닛에서 서브-픽셀 위치들의 보간을 위해 보간 필터들을 선택하는데 사용될 수 있는 이력 보간 결과들로서 기능할 수도 있다. 예를 들어, 소정의 서브-픽셀 위치에 대해, 최저의 누산된 에러값을 갖는 보간 필터가 보간을 위해 선택될 수도 있다.
누산된 에러값은, 오버플로우들을 방지하며, 덜 최근에 코딩된 유닛들보다 더 많이 더 최근에 코딩된 유닛들의 기여도를 가중하는 윈도우 효과를 도입하도록 시간에 걸쳐 스케일 다운될 수도 있다. 예를 들어, 소정의 서브-픽셀 위치에 적용된 바와 같은 각각의 보간 필터에 대한 누산된 에러값은, 일련의 다수의 코딩된 유닛들에 걸친 서브-픽셀 위치 및 각각의 보간 필터에 대한 개별 에러값들과, 더 많이 가중된 더 최근의 코딩된 유닛들에 대한 에러값들과의 가중된 합산일 수도 있다. 인코더는, 각각의 유닛의 코딩에 후속하여 에러값들을 평가할 수도 있고, 각각의 서브-픽셀 위치들에 대한 최저의 누산 에러를 산출하는 보간 필터들을 선택할 수도 있다.
따라서, 보간 필터들을 선택하기 위해, 비디오 인코더는, 하나의 이전에 코딩된 비디오 유닛 또는 다수의 이전에 코딩된 비디오 유닛들에 대한 이력 보간 에러에 의존할 수도 있다. 특히, 상술된 바와 같이, 비디오 인코더는, 이전에 코딩된 유닛에 대한 최적의 보간 에러를 생성할 보간 필터들의 세트를 선택할 수도 있고, 현재 코딩되는 유닛에 대해 모션 추정을 수행하도록 그들을 적용할 수도 있다. 이러한 의미에서, 현재 유닛에 대한 모션 추정은, 최적의 결과를 생성할 보간 필터들이 이전에 코딩된 유닛에 대한 모션 추정에서 사용되면, 그 보간 필터들을 사용하여 수행된다. 대안적으로, 상술된 바와 같이, 비디오 인코더는, 일련의 유닛들에 걸쳐 누산 에러값들을 생성하는 보간 필터들을 선택할 수도 있다. 각각의 경우에서, 비디오 인코더는, 하나 이상의 이전에 코딩된 유닛들에 대한 이력 보간 결과들에 의존한다.
DC 오프셋 값들은, 예를 들어, 상이한 비디오 코딩 유닛들 사이의 일루미네이션 변화들을 보상하기 위해, 보간된 픽셀 값들에 적용될 수도 있다. DC 오프셋들은, 프레임 내의 모든 픽셀들이 동일한 DC 오프셋을 사용하도록 프레임 레벨에서, 또는 서브-픽셀 위치 레벨에서 개별적으로 적용될 수도 있다. DC 오프셋 값들의 계산 및 할당은 기준 유닛과 코딩될 현재 유닛 사이의 블록 차이들 및 DC 프레임에 기초할 수도 있다. 계산은, 모션 추정이 인코딩될 현재 유닛에 대해 수행되기 전에 "선험 (a priori)" 을 기초로 수행될 수 있다. 현재 유닛과 기준 유닛 사이의 블록 차이 및 DC 프레임을 분석함으로써, 모션 벡터 정보가 이용가능하지 않을 경우, 현재 유닛을 인코딩하기 전에 오프셋들이 적용될 수 있으며, 이는 단일 패스 인코딩을 허용한다.
H.264 표준에 따라 수행되도록 구성된 인코더와 같은 몇몇 비디오 인코더들은 다수의 이전에 인코딩되고 송신된 프레임들로부터 프레임을 예측할 수 있다. 통상적으로, 이들 기준 프레임들은 하나 또는 2개의 리스트들 내에 저장되며, 각각의 리스트는 양의 정수로 인덱싱된 수 개의 프레임들을 포함할 수 있다. 일반적으로, 제로로 인덱싱된 프레임 (2개의 리스트들이 사용되면 각각의 리스트에서의 프레임) 은 현재의 프레임에 시간적으로 더 근접한 프레임이다. 본 발명에서 설명된 바와 같은 절차로 결정된 서브-픽셀 오프셋들은 일반적으로, 현재의 프레임에 가장 근접한 기준 프레임 (인덱스 제로로 인덱싱된 기준 프레임들) 에 대해서만 사용된다. 모든 다른 프레임들에 대해, 간단한 DC 오프셋이 서브-픽셀 위치와는 독립적으로 사용될 수도 있다. 이러한 오프셋은 기준 프레임과 현재 프레임 사이의 광도 (luminosity) 에서의 차이로서 계산될 수 있으며, 현재 프레임에 걸쳐 적용될 수 있다.
정제된 모션 추정 프로세스는, 서브-픽셀 위치들에 이전에 적용된 DC 오프셋들을 고려하도록 적용될 수 있고, 모션 탐색에서 비-제로 DC 오프셋들을 갖는 서브-픽셀 위치들의 평가를 강제할 수 있다. 예측 모션 추정은, 코딩될 블록에 대응할 수도 있는 위치들을 예측함으로써, 및 탐색을 패턴들로 구성함으로써 모션 탐색의 복잡도를 감소시킬 수 있다. 그러나, 예측 모션 추정 프로세스는, DC 오프셋 값들이 할당되는 몇몇 서브-픽셀 위치들의 테스팅을 스킵할 수도 있다. 이러한 제한은, 왜곡의 추정 동안 정의된 DC 오프셋들을 갖는 서브-픽셀 위치들을 명시적으로 탐색하는 모션 탐색을 제공함으로써 극복될 수도 있다. 이러한 방식으로, 모션 탐색은 비-제로 오프셋들을 갖는 서브-픽셀 위치들이 명시적으로 탐색되는 것을 요구하도록 구성될 수도 있다.
또한, 모션 탐색은 가상 블록 DC 오프셋들을 계산하도록 구성될 수도 있다. 예를 들어, 모션 탐색 동안 계산된 SAD 에러는 모든 가능한 오프셋들을 고려할 수도 있다. 모션 탐색은, 오프셋을 적용하기 전에 블록들을 비교한다 (블록들 사이의 SAD 에러를 계산한다). 모션 탐색이 이러한 가능성을 고려하는데 사용될 수 있도록 계산되는 오프셋들을 모션 탐색에 피딩함으로써 성능을 개선시키는 것이 가능할 수도 있다. 예를 들어, 아래의 표 1에 나타낸 바와 같이, 서브-픽셀 오프셋들이 각각의 위치들에 대해 사용되어야 한다고 알고리즘이 결정하면,
Figure pct00001
2개의 블록들에 대한 SAD의 계산은 6회 계산될 수도 있으며, 각각의 시간은 "가상" 오프셋들 {-2, -1, 0, 1, 2, 3} 중 하나를 기준 블록에 부가한 이후이다. 최소의 SAD를 갖는 모션 벡터가 선택될 수도 있다. 2이상의 위치에서 나타나는 오프셋 값들 (예를 들어, 서브-픽셀 위치 1 및 11 양자에서 나타나는 오프셋 "2") 은 단지 1회만 시도될 수도 있다. 즉, 모션 추정 유닛은, 동일한 계산된 오프셋 값을 각각 갖는 복수의 서브-픽셀들 중 하나만을 탐색할 수도 있다.
도 1은, 본 발명의 기술들을 구현할 수도 있는 예시적인 비디오 인코딩 및 디코딩 시스템 (10) 을 도시한 블록도이다. 도 1에 도시된 바와 같이, 시스템 (10) 은 통신 채널 (15) 을 통해 목적지 디바이스 (16) 로 인코딩된 비디오를 송신하는 소스 디바이스 (12) 를 포함한다. 소스 디바이스 (12) 및 목적지 디바이스 (16) 는 유선 및 무선 디바이스들을 포함하는 임의의 광범위한 범위의 디바이스들을 포함할 수도 있다. 몇몇 경우들에서, 소스 디바이스 (12) 및 목적지 디바이스 (16) 는, 통신 채널 (15) 을 통해 비디오 정보를 통신할 수 있는 무선 핸드셋, 소위 셀룰러 또는 위성 무선전화기들, 또는 임의의 무선 디바이스들과 같은 무선 통신 디바이스들을 포함할 수도 있으며, 이 경우, 통신 채널 (15) 은 무선 통신 매체를 포함한다.
도 1의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 변조기/복조기 (모뎀) (22), 및 송신기 (24) 를 포함할 수도 있다. 목적지 디바이스 (16) 는 수신기 (26), 모뎀 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 포함할 수도 있다. 소스 디바이스 (12) 의 비디오 인코더 (20) 는, 비디오 인코딩 프로세스의 일부로서 본 발명에서 설명되는 하나 이상의 코딩 기술들을 적용하도록 구성될 수도 있다. 유사하게, 목적지 디바이스 (16) 의 비디오 디코더 (30) 는, 비디오 디코딩 프로세스의 일부로서 본 발명에 설명된 하나 이상의 코딩 기술들을 적용하도록 구성될 수도 있다.
본 발명에서 설명된 인코딩 기술들은, 서브-픽셀 해상도에 대한 모션 보상된 보간을 지원하는 임의의 인코딩 디바이스에 의해 수행될 수도 있다. 도 1의 예에서, 소스 디바이스 (12) 는 목적지 디바이스 (16) 로의 송신을 위해, 코딩된 비디오 데이터를 생성한다. 디바이스들 (12, 16) 은, 디바이스들 (12, 16) 의 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭적인 방식으로 동작할 수도 있다. 따라서, 시스템 (10) 은 비디오 디바이스들 (12, 16) 사이에서의, 예를 들어, 비디오 스트리밍, 비디오 재생, 비디오 브로드캐스팅, 또는 비디오 화상전화에 대해 단방향 또는 양방향 비디오 송신을 지원할 수도 있다.
소스 디바이스 (12) 의 비디오 소스 (18) 는, 비디오 카메라와 같은 비디오 캡쳐 디바이스, 이전에 캡쳐된 비디오를 포함하는 비디오 아카이브, 또는 비디오 콘텐츠 제공자로부터의 비디오 피드를 포함할 수도 있다. 추가적인 대안으로서, 비디오 소스 (18) 는, 소스 비디오, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터-생성된 비디오로서 컴퓨터 그래픽-기반 데이터를 생성할 수도 있다. 몇몇 경우들에서, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 및 목적지 디바이스 (16) 는 소위 카메라폰 또는 비디오폰을 형성할 수도 있다. 각각의 경우에서, 캡쳐된, 미리-캡쳐된 또는 컴퓨터-생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 데이터는 통신 표준에 따라 모뎀 (22) 에 의해 변조될 수도 있고, 송신기 (24) 를 통해 목적지 디바이스 (16) 에 송신될 수도 있다. 모뎀 (22) 은 신호 변조를 위해 설계된 다양한 믹서들, 필터들, 증폭기들, 또는 다른 컴포넌트들을 포함할 수도 있다. 송신기 (24) 는 증폭기, 필터 및 하나 이상의 안테나들을 포함하는, 데이터를 송신하기 위해 설계된 회로들을 포함할 수도 있다.
목적지 디바이스 (16) 의 수신기 (26) 는 채널 (15) 을 통해 정보를 수신하고, 모뎀 (28) 은 그 정보를 복조한다. 비디오 디코더 (30) 에 의해 수행된 비디오 디코딩 프로세스는, 디바이스 (12) 로부터 수신된 비디오 데이터를 디코딩 및 재현하기 위해 보간 필터들, 오프셋 값들, 모션 벡터들 및 잔류 정보를 이용할 수도 있다. 예를 들어, 채널 (15) 을 통해 통신된 정보는 특정한 프레임들, 슬라이스들, 및 블록들에 대하여 비디오 인코더 (20) 에 의해 정의된 오프셋 정보를 포함할 수도 있다. 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하며, 임의의 다양한 음극선 튜브, 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디바이스, 또는 다른 타입의 디스플레이 디바이스를 포함할 수도 있다.
도 1의 예에서, 통신 채널 (15) 은 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 라인들, 또는 무선 및 유선 매체의 임의의 조합을 포함할 수도 있다. 통신 채널 (15) 은 로컬 영역 네트워크, 광역-영역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷-기반 네트워크의 일부를 형성할 수도 있다. 일반적으로, 통신 채널 (15) 은, 소스 디바이스 (12) 로부터 목적지 디바이스 (16) 로 비디오 데이터를 송신하기 위한 임의의 적절한 통신 매체, 또는 상이한 통신 매체의 집합을 나타낸다. 통신 채널 (15) 은, 소스 디바이스 (12) 로부터 목적지 디바이스 (16) 로의 통신을 용이하게 하는데 유용할 수도 있는 라우터들, 스위치들, 기지국들, 또는 임의의 다른 장비를 포함할 수도 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 는, MPEG-4, Part 10, 진보된 비디오 코딩 (AVC) 로서 대안적으로 설명된 ITU-T H.264 표준과 같은 비디오 압축 표준에 따라 동작할 수도 있다. 그러나, 본 발명의 기술들은 임의의 특정한 코딩 표준에 제한되지는 않는다. 도 1에 도시되지는 않았지만, 몇몇 양태들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 오디오 인코더 및 디코더와 통합될 수도 있으며, 공통 데이터 스트림 또는 별개의 데이터 스트림들에서 오디오 및 비디오 양자의 인코딩을 처리하도록 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 포함할 수도 있다. 적용가능하면, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 사용자 데이터그램 프로토콜 (UDP) 과 같은 다른 프로토콜들에 따를 수도 있다.
ITU-T H.264/MPEG-4 (AVC) 표준은, 조인트 비디오 팀 (JVT) 으로서 알려진 집단 파트너쉽의 생성물로서 ISO/IEC 동영상 전문가 그룹 (MPEG) 및 ITU-T 비디오 코딩 전문가 그룹 (VCEG) 에 의해 형성되었다. 몇몇 양태들에서, 본 발명에 설명된 기술들은, H.264 표준에 일반적으로 따르는 디바이스들에 적용될 수도 있다. H.264 표준은, H.264 표준 또는 H.264 규격, 또는 H.264/AVC 표준 또는 규격으로서 여기에서 지칭될 수도 있는, 2005년 3월자의 ITU-T 연구 그룹에 의한 ITU-T 추천 H.264, 시청각 서비스들을 위한 진보된 비디오 코딩에 설명되어 있다. 조인트 비디오 팀 (JVT) 은 H.264/MPEG-4 AVC 에 대한 확장들을 계속 작업하고 있다.
비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그래밍가능한 게이트 어레이 (FPGA), 별도의 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합으로서 구현될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 각각은 하나 이상의 인코더들 또는 디코더들 내에 포함될 수도 있으며, 이들 중 어느 하나는 각각의 이동 디바이스, 가입자 디바이스, 브로드캐스트 디바이스, 서버 등에서 결합된 인코더/디코더 (코덱) 의 일부로서 통합될 수도 있다.
통상적으로, 비디오 시퀀스는 일련의 비디오 프레임들을 포함한다. 비디오 인코더 (20) 는 비디오 데이터를 인코딩하기 위해 개별 비디오 프레임들 내의 비디오 블록들에 대해 동작한다. 비디오 블록들은 고정된 또는 가변 사이즈들을 가질 수도 있으며, 특정된 코딩 표준에 따라 사이즈에서 상이할 수도 있다. 각각의 비디오 프레임은 일련의 슬라이스들을 포함한다. 각각의 슬라이스는, 서브-블록들로 배열될 수도 있는 일련의 매크로블록들을 포함할 수도 있다. 일 예로서, ITU-T H.264 표준은 루마 컴포넌트들에 대해서는 16×16, 8×8, 또는 4×4, 및 크로마에 대해서는 8×8 와 같은 다양한 블록 사이즈들에서 인트라 예측뿐만 아니라, 루마 컴포넌트들에 대해서는 16×16, 16×8, 8×16, 8×8, 8×4, 4×8 및 4×4 및 크로마 컴포넌트들에 대해서는 대응하는 스케일링된 사이즈들과 같은 다양한 블록 사이즈들에서 인터 예측을 지원한다. 비디오 블록들은, 예를 들어, 이산 코사인 변환 또는 개념적으로 유사한 변환 프로세스와 같은 변환 프로세스를 따르는 픽셀 데이터의 블록들 또는 변환 계수들의 블록들을 포함할 수도 있다.
더 작은 비디오 블록들은 더 양호한 해상도를 제공할 수 있으며, 고레벨의 세부사항을 포함하는 비디오의 위치결정을 위해 사용될 수도 있다. 일반적으로 매크로블록들 및 다양한 서브-블록들은 비디오 블록들인 것으로 고려될 수도 있다. 일반적으로, 슬라이스 또는 프레임은, 매크로블록들 및/또는 서브-블록들과 같은 일련의 비디오 블록들을 포함하는 비디오 유닛으로 고려될 수도 있다. 각각의 프레임은 비디오 시퀀스의 독립적으로 디코딩가능한 유닛일 수도 있으며, 각각의 슬라이스는 비디오 프레임의 독립적으로 디코딩가능한 유닛일 수도 있다. "코딩된 유닛" 이라는 용어는, 전체 프레임과 같은 임의의 독립적으로 디코딩가능한 유닛, 프레임의 슬라이스, 또는 적용가능한 코딩 기술들에 따라 정의된 또 다른 독립적으로 디코딩가능한 유닛을 지칭한다.
예측 코딩에 후속하여 그리고 H.264/AVC 또는 이산 코사인 변환 (DCT) 에서 사용되는 4×4 또는 8×8 정수 변환과 같은 임의의 변환에 후속하여, 양자화가 수행될 수도 있다. 일반적으로, 양자화는, 계수들이 그 계수들을 나타내는데 사용되는 데이터의 양을 감소시키도록 양자화되는 프로세스를 지칭한다. 양자화 프로세스는 계수들의 몇몇 또는 모두와 관련된 비트 깊이를 감소시킬 수도 있다. 예를 들어, 16비트 값은 양자화 동안 15비트 값으로 라운딩 다운 (round down) 될 수도 있다. 양자화에 후속하여, 예를 들어, 콘텐츠 적응적 가변 길이 코딩 (CAVLC), 콘텐츠 적응적 바이너리 산술 코딩 (CABAC), 또는 또 다른 엔트로피 코딩 프로세스에 따라 수행될 수도 있다.
본 발명의 기술들에 따르면, 비디오 인코더 (20) 는 보간 필터들 및 오프셋 값들을 사용하여 단일 패스에서 비디오 유닛을 인코딩할 수도 있다. 따라서, 몇몇 경우들에서, 블록들을 인코딩하는 것은, 그 인코딩이 단일 패스에서 수행되도록 1회만 블록에 대한 모션 추정을 수행하는 것을 포함할 수도 있다. 일 예에서, 비디오 인코더 (20) 는 고정된 계수들을 갖는 보간 필터들의 세트를 포함할 수도 있다. 즉, 보간 필터들의 세트는, 인코더가 계수들을 동적으로 결정할 적응적 필터를 반드시 포함할 필요는 없다. 대신, 인코더 (20) 는, 복수의 대안적인 고정된 보간 필터들로부터의 각각의 서브-픽셀 위치에 대해 보간 필터를 선택할 수도 있다.
상이한 보간 필터들이 상이한 서브-픽셀 위치들의 보간을 위해 선택될 수도 있다. 각각의 서브-정수 픽셀 포지션은, 디폴트 보간 필터, 및 이력 보간 결과들에 기초하여 각각의 서브-정수 픽셀 위치를 보간하도록 선택될 수도 있는 복수의 다른 보간 필터들을 가질 수도 있다. 비디오 인코더 (20) 는, 각각의 서브-정수 픽셀 위치들에 대한 디폴트 보간 필터들을 사용하여 기준 유닛의 서브-정수 픽셀 값들을 먼저 계산함으로써 제 1 인터-코딩된 비디오 유닛, 예를 들어, 제 1 P-프레임의 매크로블록을 인코딩할 수도 있다.
일단 기준 유닛 내의 서브-정수 픽셀 값들이 보간되면, 비디오 인코더 (20) 는, 인코딩될 다음의 P-프레임의 매크로블록에 대한 모션 벡터를 계산하기 위해 기준 유닛의 정수 및 프렉셔널 서브-픽셀 위치들 양자를 이용할 수도 있다. 특히, 비디오 인코더 (20) 는, 예를 들어, 절대 차이의 합 (SAD), 제곱 차이의 합 (SSD) 등과 같은 픽셀 차이 계산들에 기초하여, 코딩될 현재 유닛 내의 각각의 블록들을 가장 근접하게 매칭시키는 이전에 코딩된 기준 유닛 내의 블록들을 탐색할 수도 있다.
기준 유닛 내의 예측 블록들에 대해 코딩될 제 1 P-유닛의 각각의 매크로블록에 대한 모션 벡터들을 생성한 이후, 비디오 인코더 (20) 는, 예를 들어, P-유닛의 예측 매크로블록 (즉, 기준 유닛의 기준 매크로블록) 과 실제 매크로블록 사이의 픽셀값 차이에 기초하여 제 1 P-유닛의 각각의 매크로블록에 대한 에러값을 결정할 수도 있다. 상술된 바와 같이, 에러값은, 예를 들어, 절대 차이의 합 (SAD) 또는 제곱된 차이의 합산 (SSD) 값을 포함할 수도 있다.
그 후, 비디오 인코더 (20) 는, 보간 필터들의 상이한 세트가 더 낮은 에러값을 초래할지를 결정할 수도 있다. 특히, 비디오 인코더 (20) 는 각각의 서브-픽셀 위치들에 대해, 기준 매크로블록의 서브-정수 픽셀 값들의 값들을 재계산하고 모션 벡터에 의해 식별된 재계산된 매크로블록에 대한 에러값을 계산함으로써, 최저의 에러값을 발생시키는 보간 필터들을 식별할 수도 있다. 그 후, 비디오 인코더 (20) 는, 어느 보간 필터들이 각각의 서브-정수 픽셀 위치에 대한 유닛에 대해 최저의 절대 에러값 또는 최저의 평균 에러값을 제공할지를 결정할 수도 있다.
이러한 방식으로, 비디오 인코더 (20) 는, 기준 유닛에 대해 최적의 결과들을 생성할 보간 필터들에 기초하여 현재 유닛에 대해 사용되는 기준 유닛의 서브-정수 픽셀 위치들을 보간하도록 보간 필터들을 선택할 수도 있다. 몇몇 예들에서, 비디오 인코더 (20) 는, 일련의 코딩 유닛들에 걸쳐 각각의 서브-정수 픽셀 위치에서 각각의 보간 필터에 대한 누산된 에러값들을 추가적으로 계산할 수도 있다. 비디오 인코더 (20) 는, 서브-정수 픽셀 위치들에 대해 이력적으로 최적의 값들을 제공하는 보간 필터들을 선택하기 위해, 누산된 에러값들을 사용할 수도 있다.
비디오 인코더 (20) 는, 어느 보간 필터들이 이전의 프레임에 대해 또는 일련의 이전 프레임들에 걸쳐 최저의 에러값을 산출하는지를 식별할 수도 있다. 에러값은 일련의 프레임들에 걸쳐 각각의 보간 필터 및 각각의 서브-픽셀 위치에 대해 추적될 수도 있다. 각각의 서브-픽셀 위치는 각각의 보간 필터로 계산될 수도 있다. 복수의 보간 필터들은 각각의 서브-픽셀 위치에 대한 선택에 이용가능할 수도 있다. 보간 필터들의 세트는 다수의 각각의 서브-픽셀 위치들의 보간을 지원하는데 선택될 수도 있다.
일 예에서, 비디오 인코더 (20) 가 P-프레임 또는 B-프레임과 같은 다음의 예측 유닛을 인코딩하기 전에, 비디오 인코더 (20) 는, 이전에 인코딩된 유닛의 기준 유닛 (또는 유닛들) 에 대한 최저의 에러값을 발생시킬 보간 필터들을 사용하여, 이전에 인코딩된 유닛의 서브-정수 픽셀들의 값들을 계산한다. 유사하게, 각각의 후속 인터-코딩된 프레임에 대해, 비디오 인코더 (20) 는, 어느 보간 필터들이 그 프레임의 기준 유닛에 대한 최저 에러값을 발생시키는지를 식별할 수도 있으며, 가장 최근에 인코딩된 유닛의 서브-정수 픽셀들에 대한 값들을 계산하기 위해 이들 보간 필터들을 가장 최근에 인코딩된 유닛에 적용하고, 그 후, 그 프레임은 모션 추정을 위한 기준 프레임으로서 사용될 것이다.
몇몇 경우들에서, 비디오 인코더 (20) 는, 어느 보간 필터들이 일련의 코딩된 유닛들에 걸친 각각의 서브-픽셀 위치에 대해 최저의 이력적으로 누산된 보간 에러값을 갖는지를 식별할 수도 있다. 복수의 보간 필터들 각각에 의하여 각각의 서브-픽셀 위치에 대해 생성된 에러값을 추적함으로써, 최저의 에러값을 생성하는 보간 필터는 코딩될 다음의 프레임에 대한 모션 추정을 지원하도록 보간을 위해 각각의 서브-픽셀 위치에 대해 선택될 수도 있다. 이러한 방식으로, 비디오 인코더 (20) 는 이전에 코딩된 프레임들에 대한 이력 보간 결과들에 기초하여 서브-픽셀 위치들에 대해 보간 필터들을 선택할 수 있다. 비디오 인코더 (20) 에 의해 분석된 이력 보간 결과들은, 수 개의 유닛들에 대한 보간 에러 또는 몇몇 경우에서는 단일 유닛에 대한 보간 에러만을 고려할 수도 있다. 특히, 비디오 인코더 (20) 는, 다수의 프레임들에 걸친 누선 에러 결과들, 또는 간단히 현재의 유닛 N에 대한 기준 유닛 (예를 들어, N-1) 과 이전 기준 유닛 N-2 사이의 보간 에러를 분석할 수도 있다.
일 예시로서, 보간될 n개의 서브-픽셀 위치들, 및 n개의 서브-픽셀 위치들 각각을 보간하도록 선택될 수 있는 m개의 상이한 보간 필터들이 존재하면, 비디오 인코더 (20) 는 n×m 개의 상이한 에러값들을 계산할 수도 있다. 각각의 에러값은, 코딩될 이전 유닛 내의 실제 픽셀 값들에 대해, m개의 보간 필터들 중 주어진 하나에 따라 계산된 n개의 픽셀 위치값 중 주어진 하나에 대한 에러값을 나타낼 수도 있다. 블록 기반에서, 에러값은, 보간 필터들의 주어진 세트를 사용하여 생성된 보간된 예측 블록 내의 서브-픽셀 위치의 픽셀값과 코딩될 블록에 대한 픽셀 값들 사이의 픽셀값 차이에 기초할 수도 있다. 서브-픽셀 위치에 대한 보간 필터는 프레임에 걸친 모든 대응하는 서브-픽셀 위치들에 대해 적용될 수도 있다. 유사하게, 각각의 보간 필터 및 서브-픽셀 위치에 대한 에러값은 프레임에 걸쳐 제공될 수도 있다. 예를 들어, 에러값은 주어진 프레임에 대한 평균 또는 중간값 또는 합산된 값일 수도 있다.
상술된 바와 같이, 각각의 서브-픽셀 위치 및 보간 필터에 대한 에러값은 일련의 유닛들에 걸쳐 누산될 수도 있으며, 보간 필터 및 서브-픽셀 위치의 각각의 조합에 대한 누산 에러값을 생성한다. 몇몇 경우들에서, 일련의 유닛들에 걸친 에러값들은 가중된 합산을 사용하여 합산될 수도 있으며, 더 최근에 코딩된 프레임들에 대한 에러값들은, 코딩될 현재 프레임에 비해 이전에 코딩된 프레임들보다 더 많이 가중된다.
일 예로서, 슬라이딩 윈도우는, 코딩될 유닛에 대해, 누산 에러값은 윈도우 내의 제 1 유닛으로부터 코딩될 유닛 바로 직전의 윈도우 내의 최종 유닛까지의 가중된 에러값들을 합산하도록, 사용될 수도 있으며, 여기서, 더 이전의 유닛에 대한 에러값은 더 이후의 유닛들에 대한 에러값보다 더 작은 가중 계수로 가중된다. 가중 계수들은 이전에 코딩된 유닛들로부터 더 낮은 코딩된 유닛들로 점진적으로 증가할 수도 있다. 또한, 누산된 에러는 오버플로우를 방지하도록 주기적으로 스케일 다운될 수도 있다. 덜 최근에 코딩된 유닛들에 대한 에러값들은 그들이 윈도우 외부에 존재하는 바에 따라 결국 페이징 아웃 (phase out) 될 수도 있다.
현재 유닛을 코딩하기 위해 특정한 서브-픽셀 위치에 대해 특정한 보간 필터를 선택하기 위하여, 비디오 인코더 (20) 는, 이전에 코딩된 유닛들의 범위에 걸쳐 그 보간 필터 및 서브-픽셀 위치에 대한 에러값들의 가중된 합산을 평가할 수도 있다. 그 후, 주어진 서브-픽셀 위치에 대한 최저의 누산된 에러를 산출하는 보간 필터는, 코딩될 다음의 유닛에 대한 그 서브-픽셀 위치의 보간을 위해 사용되도록 보간 필터로서 선택될 수도 있다.
주어진 서브-픽셀 위치에 대한 선택된 보간 필터는, 코딩 유닛에 걸친 블록들 내의 대응하는 서브-픽셀 위치들에서 모든 픽셀들에 대한 보간 필터로서 사용될 수도 있다. 특히, 선택된 필터는 코딩될 다음의 유닛에 대한 모션 탐색을 지원하기 위해 기준 유닛 내에서 그 서브-픽셀 위치를 보간하도록 사용된다. 각각의 블록 내에 n개의 서브-픽셀 위치들이 존재하면, 인코더 (20) 는 각각의 서브-픽셀 위치들에 대한 n개의 상이한 보간 필터들의 세트를 선택할 수도 있다. 보간 필터들의 동일한 세트가 유닛의 각각의 블록 내의 서브-픽셀 위치들에 대해 사용될 수 있다.
보간에 후속하여 및 모션 추정 전에, 비디오 인코더 (20) 는 보간된 서브-픽셀 위치들에서 픽셀 값들에 오프셋 값들을 또한 적용할 수도 있다. 비디오 인코더 (20) 는 슬라이스와 같은 프레임의 독립적으로 디코딩가능한 부분 또는 프레임과 같이 비디오 데이터의 코딩된 유닛에 대해 복수의 오프셋 값들을 계산할 수도 있다. 상이한 오프셋 값들은, 비디오 블록들과 관련된 서브-정수 픽셀 위치들 및 복수의 상이한 정수와 관련될 수도 있다. 상술된 바와 같이, 서브-정수 픽셀 위치들은, 정수 픽셀 위치들에서의 데이터에 기초하여, 보간된 또는 외삽된 데이터, 통상적으로는 외삽된 데이터의 위치들을 정의할 수도 있다. 비디오 인코더 (20) 는, 오프셋 예측 비디오 블록들을 생성하기 위해 예측 비디오 블록들 내의 정수 픽셀 위치들 및 서브-픽셀 위치들에 오프셋 값들을 적용할 수도 있고, 오프셋 예측 비디오 블록들에 기초하여, 코딩된 유닛의 비디오 블록들을 인코딩할 수도 있다.
또한, 비디오 인코더 (20) 는 코딩된 유닛의 코딩된 비디오 블록들을 포함하는 코딩된 비트스트림의 일부로서 오프셋 값들을 인코딩할 수도 있고, 소스 디바이스 (12) 의 송신기 (24) 는 목적지 디바이스 (16) 의 수신기 (26) 에 코딩된 비트스트림을 송신할 수도 있다. 특히, 비디오 인코더 (20) 는 예측 비디오 블록들의 픽셀 값들을 조정함으로서 오프셋 값들을 적용할 수도 있고, 오프셋 예측 비디오 블록들에 기초하여 잔류물들을 생성함으로써 오프셋 예측 비디오 블록들에 기초하여 비디오 블록들을 인코딩할 수도 있다. 예를 들어, 잔류물들은 적절한 오프셋 예측 비디오 블록으로부터 코딩될 블록을 감산함으로써 생성될 수도 있다. 오프셋이 예측 비디오 블록의 위치에 기초하여 오프셋 예측 비디오 블록의 픽셀 값들에 부가되므로, 예를 들어, 플래시 또는 배경 조명이 변하는 동안, 코딩 효율도가 개선될 수도 있다.
코딩될 유닛에 대한 모션 탐색을 수행할 경우, 비디오 인코더 (20) 는 기준 코딩 유닛 내의 예측 블록들을 식별한다. 몇몇 경우들에서, 모션 탐색 알고리즘은 특정한 서브-픽셀 값들을 스킵하도록 구성될 수도 있다. 특히, 몇몇 예측 모션 추정은, 코딩될 블록에 대응할 수도 있는 위치들을 예측함으로써 및 탐색을 패턴들로 구성함으로써 모션 탐색의 복잡도를 감소시킬 수도 있다. 그러나, 예측 모션 추정 프로세스는, DC 오프셋 값들이 할당되는 몇몇 서브-픽셀 위치들의 테스팅을 스킵할 수도 있다. 비디오 인코더 (20) 는, 모션 탐색이 비-제로 오프셋값들을 갖는 서브-픽셀 위치들을 명시적으로 탐색하는 요건을 부과함으로써 예측 모션 추정 프로세스에서 이러한 제한을 극복하도록 구성될 수도 있다.
목적지 디바이스 (16) 에서, 비디오 디코더 (30) 는, 비디오 데이터의 각각의 코딩된 유닛에 대해 복수의 오프셋 값들 및 비디오 데이터를 인코딩하는데 사용되는 보간 필터들의 식별자들을 수신한다. 예를 들어, 이들 식별자들은, 코딩된 비트스트림에서 제공되는 프레임 헤더 또는 슬라이스 헤더와 같은 유닛 헤더에서의 신택스 엘리먼트로서 비디오 인코더 (20) 에 의해 코딩될 수도 있다. 비디오 디코더 (30) 는 보간 필터들의 동일한 세트에 대한 파라미터들을 비디오 인코더 (20) 로서 저장할 수도 있다. 비디오 디코더 (30) 는, 예측 비디오 블록들에 대해 서브-정수 픽셀들의 값들을 계산하도록 비디오 인코더 (20) 에 의해 식별되는 보간 필터들을 적용하고, 오프셋 예측 비디오 블록들을 생성하기 위해 오프셋 값들을 예측 비디오 블록들에 적용하며, 오프셋 예측 비디오 블록들에 기초하여, 코딩된 유닛의 비디오 블록들을 디코딩한다.
특히, 모션 벡터들 및 보간 필터들을 사용하여, 비디오 디코더 (30) 는, 디코딩될 유닛 내의 각각의 블록들에 대한 예측 블록들을 획득할 수 있고, 그 디코딩된 유닛 내의 원하는 블록들을 재현하기 위해 예측 블록들과 잔류 정보를 합산할 수 있다. 이러한 방식으로, 보간 필터들 및 오프셋 값들은 인코딩 프로세스의 일부로서 비디오 인코더 (20) 에서 정의 및 적용되며, 그 후, 보간 필터들 및 오프셋 값들을 식별하는 정보는 인코딩된 비트스트림의 일부로서 소스 디바이스 (12) 로부터 목적지 디바이스 (16) 로 통신된다. 그 후, 오프셋 값들은, 비디오 유닛의 픽셀 값들을 복원하기 위해 디코딩 프로세스의 일부로서 비디오 디코더 (30) 에서, 보간된 예측 데이터에 적용된다.
도 2는, 본 발명에 설명된 바와 같은 보간 및 오프셋 기술들을 적용할 수도 있는 비디오 인코더 (20) 의 일 예를 도시한 블록도이다. 비디오 인코더 (20) 는 프레임들 또는 슬라이스들과 같은 비디오 유닛들 내의 블록들의 인트라-코딩 및 인터-코딩을 수행할 수도 있다. 그러나, 도시의 용이함을 위해, 비디오 인코더 (20) 의 인트라-코딩 컴포넌트들은 도 2에 도시되어 있지 않다. 인트라-코딩은 주어진 비디오 유닛 내의 비디오에서 공간 리던던시를 감소 또는 제거하기 위해 공간 예측에 의존한다. 인터-코딩은, 비디오 시퀀스의 프레임들과 같은 인접 유닛들 내의 비디오에서 시간 리던던시를 감소 또는 제거하기 위해 시간 예측에 의존한다. 인트라-모드 (I-모드) 는 공간 기반 압축 모드를 지칭할 수도 있고, 예측 (P-모드) 또는 방향 (B-모드) 과 같은 인터-모드들은 시간-기반 압축 모드들로 지칭될 수도 있다. 본 발명의 기술들은 비디오 인코더 (20) 에 의한 인터-인코딩 동안 적용될 수 있다.
도 2에 도시된 바와 같이, 비디오 인코더 (20) 는 인코딩될 비디오 프레임 내에서 현재 비디오 블록을 수신한다. 도 2의 예에서, 비디오 인코더 (20) 는 모션 추정 유닛 (36), 모션 보상 유닛 (35), 기준 프레임 저장부 (34), 가산기 (48), 변환 유닛 (38), 양자화 유닛 (40), 및 엔트로피 코딩 유닛 (46) 을 포함한다. 비디오 블록 복원에 대해, 비디오 인코더 (20) 는 역양자화 유닛 (42), 역변환 유닛 (44), 및 가산기 (51) 를 또한 포함한다. 또한, 복원된 비디오로부터 블록키니스 아티팩트들을 제거하기 위해 블록 경계들을 필터링하기 위해, 디블록킹 필터 (미도시) 가 포함될 수도 있다. 원한다면, 디블록킹 필터는 가산기 (51) 의 출력을 필터링할 수도 있다.
인코딩 프로세스 동안, 비디오 인코더 (20) 는 코딩될 비디오 블록을 수신하고, 모션 추정 유닛 (36) 및 모션 보상 유닛 (35) 은 인터-예측 코딩을 수행한다. 모션 추정 유닛 (36) 및 모션 보상 유닛 (35) 은 매우 통합될 수도 있지만, 개념의 목적을 위해 별개로 도시되어 있다. 통상적으로, 모션 추정은 모션 벡터들을 생성하는 프로세스로 고려되며, 그 프로세스는 비디오 블록들에 대한 모션을 추정하고 기준 유닛 내의 대응하는 예측 블록들의 식별을 초래한다. 예를 들어, 모션 벡터는, 현재 프레임 (또는 다른 코딩된 유닛) 내에서 코딩될 현재 블록에 대한 예측 프레임 (또는 다른 코딩된 유닛) 내의 예측 블록의 배치를 나타낼 수도 있다. 통상적으로, 모션 보상은, 모션 추정에 의해 결정된 모션 벡터에 기초하여 예측 블록을 페치 또는 생성하는 프로세스로 고려된다. 또한, 모션 추정 유닛 (36) 및 모션 보상 유닛 (35) 은 기능적으로 통합될 수도 있다. 예시의 목적을 위해, 모션 보상 유닛 (35) 은, 본 발명의 보간 필터들 및 오프셋 기술들의 선택을 수행하는 것으로 설명된다.
프레임의 형태로 유닛들을 코딩하는 것이 예시의 목적을 위해 설명될 것이다. 그러나, 슬라이스들과 같은 다른 코딩 유닛들이 사용될 수도 있다. 모션 추정 유닛 (36) 은, 기준 프레임 저장부 (34) 내의 기준 프레임의 비디오 블록들과 비디오 블록을 비교함으로써, 인터-코딩된 프레임의 비디오 블록에 대한 모션 벡터를 계산한다. 모션 보상 유닛 (35) 은 이전에 인코딩된 프레임, 예를 들어, I-프레임 또는 P-프레임에서 복수의 서브-픽셀 위치 각각에서 픽셀 값들을 계산하는데 적용하기 위해 복수의 보간 필터들 (37) 중 하나를 선택한다. 즉, 비디오 인코더 (20) 는 블록 내의 각각의 서브-픽셀 위치에 대해 보간 필터를 선택할 수도 있다.
선택된 보간 필터들은 상이한 서브-픽셀 위치들에 대해 상이할 수도 있다. 블록 내의 상이한 서브-픽셀 위치들에 적용되는 보간 필터들의 세트는, 기준 프레임 내의 모든 블록들에 대해 동일할 수도 있다. 예를 들어, 보간 필터 F1 이 블록 내의 서브-픽셀 위치 x1, y1 에 대해 선택되면, 동일한 보간 필터 F1 은 동일한 프레임 내의 모든 블록들에서 그 동일한 서브-픽셀 위치에 대해 사용될 수도 있다. 대안적으로, 서브-픽셀 위치들은 서브-정수 픽셀들, 서브-픽셀 또는 서브-펠 (sub-pel) 로서 지칭될 수도 있다.
모션 보상 유닛 (35) 은, 하나 이상의 이전에 인코딩된 프레임들의 보간 에러 이력에 기초하여 보간 필터들 (37) 로부터 보간 필터를 선택할 수도 있다. 특히, 프레임이 변환 유닛 (38) 및 양자화 유닛 (40) 에 의해 인코딩된 이후, 역양자화 유닛 (42) 및 역변환 유닛 (44) 은 이전에 인코딩된 프레임을 디코딩한다. 일 예에서, 모션 보상 유닛 (35) 은, 프레임의 서브-정수 픽셀들에 대한 값들을 계산하기 위해 그 선택된 보간 필터들 (37) 을 이전에 인코딩된 프레임에 적용한며, 기준 프레임 저장부 (34) 에 저장된 기준 프레임을 형성한다.
후속 프레임에 대해, 모션 보상 유닛 (35) 은 후속 프레임에 대한 서브-정수 픽셀 값들을 계산하기 위해 보간 필터들 (37) 의 상이한 세트를 적용할 수도 있다. 상이한 보간 필터들의 선택은, 모션 보상 유닛 (35) 이 일련의 프레임들에 걸친 각각의 서브-픽셀 위치들에 대한 최저의 누산 에러값들을 갖는 보간 필터들 (37) 을 선택하도록, 주어진 서브-픽셀 위치들에서의 보간 필터들 각각에 대한 누산된 에러와 같은 이전에 인코딩된 프레임들의 이력에 기초할 수도 있다. 에러값들은, 주어진 프레임 내의 실제 픽셀 값들과 기준 프레임 내의 보간된 픽셀 값들 사이의 차이에 기초할 수도 있다.
보간 필터들 (37) 은 복수의 보간 필터들을 포함할 수도 있다. 각각의 잠재적인 서브-정수 픽셀 위치들은, 대응하는 픽셀값의 계산을 위해 일 세트의 보간 필터들 (37) 중 하나에 매핑될 수도 있다. 예를 들어, 모션 보상 유닛 (35) 은, 정수 픽셀 위치들의 값들에 기초하여 하프-픽셀 위치들의 값들을 계산하기 위해 계수들 [1, -5, 20, 20, -5, 1] 을 갖는 6탭 위너 필터 (Wiener filter), 및 정수 픽셀 위치들의 값들에 기초하여 쿼터-픽셀 위치들의 값들을 계산하기 위해 바이리니어 필터 (bilinear filter) 를 적용할 수도 있다. 일 예에서, 하프-픽셀 위치들에 대해, 6탭 위너 필터는 하프-픽셀 위치들에 대해 적용하기 위한 디폴트 필터를 포함할 수도 있고, 바이리니어 필터는 쿼터-픽셀 위치들에 대해 적용하기 위한 디폴트 필터를 포함할 수도 있다.
또한, 각각의 픽셀 위치는 대안적인 보간 필터들, 예를 들어, 상이한 계수들을 갖는 보간 필터들에 매핑될 수도 있다. 다른 보간 필터들은 다양한 계수들을 사용하여 구성될 수도 있다. 일반적으로, 고정된 보간 필터들은, 그들의 계수들 (상이한 계수들은 상이한 주파수 응답을 특정한다) 및/또는 그들의 지원 (이것이 1 또는 2차원, 수직, 수평, 또는 대각인지 여부), 또는 보간하는데 사용되는 탭들의 수 (및 그러한 픽셀들) 에서 상이할 수 있다. 통상적으로 더 큰 지원이 더 양호하게 수행할 수도 있지만, 픽셀을 보간하도록 수행되는데 필요한 승산 및 가산의 관점에서 더 높은 복잡도를 갖는다.
일 예에서, 각각의 서브-정수 픽셀은 m개의 서로 다른 보간 필터들에 매핑될 수도 있으며, 여기서, 서브-정수 픽셀 위치에 대한 m개의 보간 필터들 중 적어도 몇몇은 상이한 서브-정수 픽셀 위치에 대한 m개의 보간 필터들과 상이할 수도 있다. 쿼터-픽셀 정확도에 대해, 보간 필터들 (37) 은 m*15 개의 고유한 보간 필터들을 포함할 수도 있으며, 여기서, m은 서브-픽셀 당 보간 필터들의 수이다. 대안적으로, 몇몇 서브-정수 픽셀들은 동일한 보간 필터에 매핑될 수도 있다. 각각의 서브-정수 픽셀에 대한 보간 필터들 중 적어도 하나는, 대응하는 서브-정수 픽셀에 대한 디폴트 보간 필터로서 할당될 수도 있다. 디폴트 보간 필터는, 예를 들어, 충분한 이력 보간 결과들이 보간 필터들의 신뢰가능한 선택을 허용하도록 누산되기 전에 비디오 시퀀스에서 초기에 사용될 수도 있다.
모션 추정 유닛 (36) 은, 현재의 프레임, 예를 들어, P-프레임 또는 B-프레임의 인코딩될 블록과 기준 프레임 저장부 (34) 로부터의 기준 프레임의 블록들을 비교한다. 기준 프레임 저장부 (34) 내의 기준 프레임들이 서브-정수 픽셀들에 대한 보간된 값들을 포함하기 때문에, 모션 추정 유닛 (36) 에 의해 계산된 모션 벡터는 서브-정수 픽셀 위치를 지칭할 수도 있다. 모션 추정 유닛 (36) 은 엔트로피 코딩 유닛 (46) 및 모션 보상 유닛 (35) 에 계산된 모션 벡터를 전송한다. 본 발명에 설명된 기술들에 따라, 모션 추정 유닛 (36) 은 블록 당 하나의 모션 벡터를 계산할 수도 있고, 모션 추정 이전에 선택된 보간 필터들 및 오프셋들에 기초하여 모션 벡터를 생성할 수도 있다. 이러한 방식으로, 비디오 인코더 (20) 는 단일 패스에서, 즉, 코딩된 유닛의 비디오 블록에 대해 2회 모션 추정을 수행하지 않으면서 프레임들, 슬라이스들 및 블록들과 같은 유닛들을 인코딩할 수 있다.
멀티-패스 인코딩 프로세스와는 대조적으로, 단일 패스에서의 인코딩은, 초기 보간 필터들 및 오프셋들을 선택하는 것, 초기 보간 필터들 및 오프셋들을 사용하여 비디오를 인코딩하는 것, 인코딩 결과들에 기초하여 새로운 보간 필터들 및 오프셋들을 선택하는 것, 및 그 후, 새롭게 선택된 보간 필터들 및 오프셋들로 프레임을 재인코딩하는 것을 포함한다. 대신, 인코더 (20) 는, 하나 이상의 이전 프레임들에 대한 이력 보간 결과들에 기초하여 보간 필터들을 선택하고, 현재 프레임과 하나 이상의 이전 프레임들 사이의 차이들에 기초하여 오프셋들을 선택하며, 그 후, 각각의 블록에 대한 모션 벡터 및 잔류 정보를 생성하기 위해 그 선택된 보간 필터들 및 오프셋들을 사용하여 모션 추정을 수행한다. 따라서, 비디오 인코더 (20) 는 제 2 또는 후속 패스에서 모션 벡터를 재계산할 필요가 없으며, 그에 의해, 인코딩 프로세스의 효율도를 개선시킬 수 있다. 대신, 모션 추정은 1회 수행될 수 있다. 모션 보상 유닛 (35) 은, 기준 프레임의 예측 블록들과 코딩될 프레임의 실제 블록들 사이의 에러값들을 계산하고, 비디오 인코더 (20) 의 변환 유닛 (38) 및 양자화 유닛 (40) 에 의해 인코딩된 잔류 블록값들을 가산기 (48) 를 통해 생성한다.
일 예에서, 상술된 바와 같이, 모션 보상 유닛 (35) 은, 어느 보간 필터들 (37) 이 이전에 인코딩된 기준 프레임의 블록들에 대한 최저의 에러를 발생시키는지를 결정할 수도 있다. 예를 들어, 모션 추정을 위한 보간 필터들의 선택 세트를 사용하여 기준 프레임을 인코딩한 이후, 모션 보상 유닛 (35) 은, 어느 보간 필터들 (37) 이 서브-픽셀 위치들 각각에서 최저의 에러값을 발생시키는지를 식별할 수도 있다. 그를 위해, 모션 보상 유닛 (35) 은 보간 필터들의 상이한 세트를 사용하여 기준 프레임을 인코딩하도록 생성되는 예측 비디오 블록들의 서브-정수 픽셀들을 재계산할 수도 있다. 특히, 모션 추정 유닛 (36) 에 의해 계산된 모션 벡터가 기준 프레임 저장부 (34) 내의 기준 프레임의 블록의 서브-정수 픽셀 위치들을 레퍼런싱할 경우, 모션 보상 유닛 (35) 은 다른 보간 필터들 (37) 을 사용하여 블록의 서브-정수 픽셀들의 값들을 재계산한다. 그 후, 모션 보상 유닛 (35) 은 예측 블록에 대한 보간 필터들 (37) 각각에 대응하는 에러값들을 계산한다.
모션 보상 유닛 (35) 은, 어느 보간 필터들 (37) 이 인코딩되었던 프레임에 대한 최저의 에러값을 발생시키는지를 결정한다. 프레임이 보간 필터들의 세트를 사용하여 이미 인코딩되었더라도, 최저의 보간 에러값을 생성하는 보간 필터들은, 인코딩 이후 결정될 수 있으며, 인코딩될 다음의 프레임에 대한 모션 추정을 수행하는데 사용될 수 있다. 프레임을 인코딩하고, 그 프레임에 대한 최저의 에러를 발생시키는 보간 필터들 (37) 의 세트를 식별한 이후, 모션 보상 유닛 (35) 은, 그 프레임을 기준 프레임 저장부 (34) 에 저장하기 전에 그 선택된 보간 필터들을 복원된 프레임에 적용할 수도 있다. 이러한 방식으로, 모션 보상 유닛 (35) 은, 코딩될 다음의 프레임을 인코딩하기 위해 모션 추정에 대해 사용될 수 있는 기준 프레임 내의 서브-정수 픽셀 값들을 계산하기 위해 이전 프레임에 대해 최적이도록 결정된 보간 필터들 (37) 의 세트를 사용할 수도 있다.
또 다른 예에서, 상술된 바와 같이, 모션 보상 유닛 (35) 은 각각의 서브-픽셀 위치에서 보간 필터들 (37) 의 각각에 대한 에러값들을 누산하고, 기준 프레임 저장부 (34) 에 저장될 새로운 프레임에 대해, 모션 보상 유닛 (35) 은 각각의 서브-픽셀 위치들에 대한 최저의 누산된 에러를 갖는 보간 필터들 (37) 을 선택한다. 이러한 방식으로, 모션 보상 유닛 (35) 은 각각의 필터 및 각각의 서브-픽셀 위치에 대해, 이전에 인코딩된 프레임들과 그들의 기준들 사이의 보간 에러를 누산할 수도 있다. 상술된 바와 같이, 주기적으로 모션 보상 유닛 (35) 은, 메모리 오버플로우를 방지하고, 보간 필터들의 더 오래된 이력 사용보다 더 크게 보간 필터들 (37) 의 최근 사용을 가중시키도록, 보간 필터들 (37) 의 누산된 에러들을 스케일 다운시킬 수도 있다. 이러한 방식으로, 모션 보상 유닛은, 가장 최근의 프레임들의 기여도를 더 많이 가중시키고 가장 오래된 것을 "망각하는 (forget)" "윈도우" 효과를 도입할 수도 있다.
보간 에러는, 인코딩될 프레임의 본래의 픽셀 값들과 보간에 의해 생성된 예측 프레임의 픽셀 값들 사이의 차이에 기초하여 계산될 수도 있다. 예측 프레임은, 보간에 의해 생성되고, 코딩될 프레임에서 코딩될 블록들에 대응하는 예측 블록들을 포함할 수도 있다. 그 차이는, 예를 들어, SSD, SAD 또는 다른 차이 매트릭스들에 의해 결정된 바와 같이, 예측 블록들 및 코딩된 블록들 사이의 픽셀 값들에서의 차이로서 계산될 수도 있다. 전체 차이값들 및 각각의 서브-픽셀 위치에서의 상이한 차이값들을 계산하기 위해, 상이한 메트릭들이 프레임 내의 블록들에 걸쳐 합산되거나 평균될 수도 있다. 이전에 코딩된 기준 프레임에 대해 서브-픽셀 위치들 각각에서 최저의 차이값들을 생성할 보간 필터들의 세트는, 기준 프레임에 대해 코딩될 다음의 프레임에 대한 모션 추정을 위해 사용되는 보간 필터들의 세트로서 선택될 수도 있다. 대안적으로, 코딩된 비디오 프레임들의 범위에 걸쳐 각각의 서브-픽셀 위치들에서 최저의 누산 차이값들을 생성하는 보간 필터들은, 기준 프레임에 대해 코딩될 다음의 프레임에 대한 모션 추정을 위해 사용될 수도 있다.
일반적으로, 모션 보상 유닛 (35) 은 판정 벡터 D를 계산함으로써 각각의 서브-정수 픽셀 위치에 대한 보간 필터를 선택할 수도 있다. D는 길이 n의 벡터일 수도 있으며, 여기서, n은 각각의 픽셀에 대한 서브-정수 픽셀 위치들의 수에 대응한다. 비디오 인코더 (20) 가 쿼터-픽셀 정확도를 지원하는 일 예에서, n은 15와 동일하다. D의 각각의 엘리먼트는, 대응하는 서브-정수 픽셀 위치에 대한 보간 필터들 중 하나에 대응한다. 따라서, 각각의 서브-정수 픽셀이 m개의 서로 다른 가능한 보간 필터들을 가지면, D의 각각의 엘리먼트는 0과 m 사이의 범위에 존재한다. 제 1 기준 프레임에 대해, D의 각각의 엘리먼트는 "0" 으로 초기화될 수도 있으며, 여기서, "0" 은 대응하는 픽셀 위치에 대한 디폴트 보간 필터로 지칭된다. 모션 보상 유닛 (35) 은, 각각의 서브-픽셀 위치에 대한 대응하는 디폴트 보간 필터를 사용하여 제 1 기준 프레임의 각각의 서브-픽셀 위치값을 계산할 수도 있다.
모션 추정 유닛 (36) 은, 모션 보상 유닛 (35) 이 판정 벡터 D에 의해 식별된 바와 같은 보간 필터들을 사용하여 서브-정수 픽셀 값들을 계산하는 기준 프레임을 참조함으로써, 후속하여 인터-코딩된 프레임의 각각의 코딩된 유닛에 대한 모션 벡터들을 계산할 수도 있다. 또한, 모션 보상 유닛 (35) 은 인터-코딩된 프레임에 대한 비용 매트릭스 C를 계산할 수도 있다. 일 예에서, 예측 코딩된 프레임에 대해, 비용 매트릭스 C는, 각각의 서브-정수 픽셀에 대한 보간 필터들에 대응하는 제 1 차원 F, 및 서브-정수 픽셀들에 대응하는 제 2 차원 I를 포함한다. 따라서, 비용 매트릭스는 C[F][I] 로서 정의될 수도 있으며, 여기서, F=[0,m] 및 I=[0,n] 이다. C의 각각의 엘리먼트는 초기에 0으로 셋팅된다.
그 후, 모션 보상 유닛 (35) 은 인터-코딩된 프레임의 각각의 픽셀 및 그 픽셀의 각각의 보간 필터에 대해 계산하며, 여기서, f는 F 내에 존재하고 i는 I에 존재하며, C[f][i]+=|actual(i) - predicted(i,f)| 이고, actual(i) 는 인터-코딩될 프레임의 픽셀 내의 서브-픽셀 i에 대응하는 픽셀의 실제값이고, predicted(i,f) 는, 예를 들어, SAD 계산들을 사용하는 예에서 대응하는 모션 벡터에 의해 참조되는 보간 필터 f를 사용하여 계산되는 바와 같은 서브-픽셀 i의 값이다. 따라서, C의 각각의 엘리먼트는, 대응하는 서브-픽셀에 대한 대응하는 보간 필터를 사용하여 그 서브-픽셀 위치에 대한 누산 에러에 대응한다.
유사한 비용 매트릭스 C2[F1][F2][i][j] 는 양방향-예측된 (bi-predicted) 프레임들에 대해 계산될 수 있으며, 여기서, i는 F1의 서브-픽셀을 지칭하고, j는 F2의 서브-픽셀을 지칭하고, F1은 제 1 기준 프레임 내의 서브-픽셀 위치 i를 계산하는데 사용되는 보간 필터를 지칭하며, F2는 제 2 기준 프레임 내의 서브-픽셀 위치 j를 계산하는데 사용되는 보간 필터를 지칭한다. 그 후, 모션 보상 유닛 (35) 은, 인터-코딩된 프레임과 기준 프레임 사이의 에러값들을, 예를 들어, SAD 값으로서 계산할 수도 있다. 비용 매트릭스 C로부터의 SAD 값을 계산하기 위해, 모션 보상 유닛 (35) 은, 다음의 수식에 따라, 그 서브-픽셀을 계산하는데 사용되었던 필터로 각각의 적용된 서브-픽셀 위치에 대한 누선 에러값의 합산을 계산할 수도 있다.
Figure pct00002
모션 보상 유닛 (35) 은, 위치 및 필터의 결합이 인터-코딩된 프레임과 기준 프레임 사이의 에러값에 대한 가장 큰 감소를 발생시키도록, 위치를 결정하기 위한 비용 매트릭스 및 그 위치에 대응하는 보간 필터를 통해 반복적으로 진행할 수도 있다. 즉, 모션 보상 유닛 (35) 은, 상기 계산된 SAD 값에 대한 가장 큰 감소를 발생시키는 값 C[f][p] 을 식별할 수도 있다. 그 후, 모션 보상 유닛 (35) 은, 결정된 보간 필터 f가 결정된 서브-정수 픽셀 위치 p에 대해 장래에 사용되도록, 판정 벡터를 변경시킬 수도 있다. 특히, 판정 벡터 D, 서브-정수 픽셀 위치 p 및 보간 필터 f에 대해, 모션 보상 유닛 (35) 은 D[p]=f 를 수행할 수도 있다. 그 후, 모션 보상 유닛 (35) 은, 필터 f가 상기 제공된 수식을 사용하여 위치 p에서 서브-정수 픽셀 값들을 계산하는데 사용된 것처럼, 차이, 예를 들어, SAD를 재계산할 수도 있다.
모션 보상 유닛 (35) 은, 차이가 실질적으로 변경되지 않을 때까지 (예를 들어, 임의의 차이가 최소 임계값보다 작음) 또는 최대 수의 반복이 수행될 때까지, 이러한 프로세스를 반복할 수도 있다. 다음의 의사코드는 상술된 프로세스를 요약한다.
Figure pct00003
몇몇 예들에서, 모션 보상 유닛 (35) 은, 가장 최근의 기준 프레임들을 선호하고 가장 오래된 기준 프레임들을 "망각하여", 각각의 기준 프레임에 대한 에러를 누산할 수도 있다. 이를 위해, 모션 보상 유닛 (35) 은 상술된 바와 같이 특정한 프레임에 대한 비용 매트릭스를 계산할 수도 있지만, 그 비용 매트릭스에, 이전에 코딩된 프레임에 대한 더 이전의 비용 매트릭스에서의 값의 프렉셔널 가중을 추가적으로 가산할 수도 있다. 예를 들어, 이전에 코딩된 프레임의 비용 매트릭스 C 및 그의 기준 프레임의 비용 매트릭스 CREF 에 대해, 모션 보상 유닛 (35) 은 C=C+(1/n)*CREF 를 계산할 수도 있다. 이러한 경우, n은 1보다 더 큰 임의의 정수인 것이 바람직할 수도 있다. 이러한 방식으로, 모션 보상 유닛 (35) 은 오버플로우를 회피할 수도 있고, 보간 필터들을 선택할 시에 더 새로운 기준 프레임들에 대한 비용 계산을 선호할 수도 있으며, 더 오래된 기준 프레임들, 즉, 인코딩될 프레임으로부터 더 시간적으로 이격된 기준 프레임들에 대한 계산들을 "망각" 하거나 페이즈 아웃 (phase out) 할 수도 있다.
추가적인 예시로서, 프레임 N이 코딩될 것이고, 프레임들 N-1 내지 N-M 이 이미 코딩되었으면, 예를 들어, 기준 프레임 N-1 에 대해 프레임 N에 대한 모션 추정을 위해 선택된 보간 필터들은 다음과 같이 계산된 비용 수학식에 따라 선택될 수도 있으며,
Figure pct00004
여기서, 계수들 a1, a2, ..., aM 은 점진적으로 더 작은 값들을 갖는 가중 계수들을 나타낸다. 주어진 서브-픽셀 위치에서의 각각의 보간 필터에 대한 누산된 비용 C에 기초하여, 인코더 (20) 는 C의 최소의 값을 생성하는 보간 필터를 선택한다.
또한, 모션 보상 유닛 (35) 은 보간된 예측 데이터, 즉, 기준 프레임 저장부 (34) 내의 기준 프레임의 서브-정수 픽셀 값들에 DC 오프셋들과 같은 오프셋 값들을 부가할 수도 있다. 모션 보상 유닛 (35) 은, 기준 프레임과 현재 프레임 사이 또는 기준 프레임의 블록과 현재 프레임의 블록 사이의 DC 차이에 기초하여 DC 오프셋들을 할당할 수도 있다. 모션 보상 유닛 (35) 은 DC 오프셋들을 "선험적으로", 즉, 단일 패스에서 코딩을 수행하기 위한 능력에 부합하여, 인코딩될 현재 프레임에 대해 모션 탐색이 수행되기 전에 할당할 수도 있다.
예측 비디오 블록들의 픽셀 값들은, 예측 비디오 블록들의 정수 또는 비정수 픽셀 위치들과 관련된 오프셋들에 따라 상향 또는 하향 오프셋될 수도 있다. 모션 보상 유닛 (35) 에 의해 수행된 보간들은 상이한 비디오 블록에 대한 수 개의 가능한 서브-정수 픽셀 위치들에서 보간된 데이터를 정의할 수도 있다. 주어진 코딩된 유닛에 대해 단일 오프셋 값을 정의하는 것 대신에, 몇몇 구현들에서, 모션 보상 유닛 (35) 은 가능한 정수 및 서브-정수 픽셀 위치에 대한 상이한 오프셋 값들을 정의할 수도 있다. 다른 경우들에서, 단일 오프셋 값은 예측 블록, 슬라이스 또는 프레임 내의 모든 픽셀 값들에 적용될 수도 있다. 몇몇 예들에서, 모션 보상 유닛 (35) 은 서브-정수 픽셀들의 서브세트만에 오프셋 값들을 적용한다. 그 후, 예측 데이터는 그 예측 데이터와 관련된 픽셀 위치에 기초하여 위치-특정된 오프셋을 적용할 수 있다.
일 예에서, 모션 보상 유닛 (35) 은, 예측 비디오 블록들에 기초하여 인코딩될 코딩된 프레임의 비디오 블록들에 대한 각각의 정수 및 서브-정수 픽셀 위치와 각각 관련된 메트릭의 제 1 세트 (예를 들어, 평균값) 을 계산할 수도 있다. 또한, 모션 보상 유닛 (35) 은, 현재 프레임의 블록들을 인코딩하는데 사용될 예측 비디오 블록들에 대한 각각의 정수 및 서브-정수 픽셀 위치와 각각 관련된 메트릭의 제 2 세트 (예를 들어, 평균값) 를 계산할 수도 있다. 즉, 메트릭의 제 1 세트는 코딩될 데이터에 의해 정의되고, 메트릭의 제 2 세트는 예측 코딩을 위해 사용되는 기준 프레임 내의 예측 데이터에 의해 정의된다. 그 후, 모션 보상 유닛 (35) 은 메트릭의 제 1 및 제 2 세트에 기초하여 복수의 오프셋 값들을 계산한다.
메트릭의 제 1 세트는, 예측 비디오 블록들에 기초하여 코딩되는 코딩된 유닛의 비디오 블록들의 각각의 정수 및 서브-정수 픽셀 위치와 각각 관련된 평균값들의 제 1 세트를 포함할 수도 있고, 메트릭의 제 2 세트는, 예측 비디오 블록들에 대한 각각의 정수 및 서브-정수 픽셀 위치와 각각 관련된 평균값들의 제 2 세트를 포함할 수도 있다. 이러한 경우, 복수의 오프셋 값들은 평균값들의 제 1 세트와 평균값들의 제 2 세트 사이의 차이를 포함할 수도 있다. 이러한 방식으로, 수 개의 상이한 오프셋 값들은, 제 1 코딩 패스에서 코딩된 실제 데이터에 기초하여, 수 개의 상이한 정수 및 서브-정수 픽셀 위치들에 대해 정의될 수도 있다. 예를 들어, 차이는 프레임들 사이의 일루미네이션에서의 차이를 나타낼 수도 있다.
메트릭의 제 1 세트는, 주어진 코딩된 유닛의 비디오 블록들의 각각의 정수 및 서브-정수 픽셀 위치에서 픽셀 값들의 평균에 대응하는 평균값들의 세트를 포함할 수도 있다. 메트릭의 제 2 세트는, 그 코딩된 유닛에서 코딩되는 현재의 블록들을 예측하는데 사용되는 예측 블록들의 각각의 정수 및 서브-정수 픽셀 위치에서 픽셀 값들의 평균에 대응하는 평균값들의 세트를 포함할 수도 있다. 복수의 오프셋 값들은, 평균값들의 제 1 세트와 평균값들의 제 2 세트 사이의 차이들을 포함할 수도 있다. 각각의 매크로블록 위치는 단일 픽셀, 예를 들어, 각각의 매크로블록의 좌측 상부 코너의 각각의 픽셀에 의해 정의될 수도 있다. 그러나, 각각의 매크로블록은 평균값들의 제 1 세트 내의 특정한 평균값에 기여하는 16개의 픽셀 값들을 정의할 수도 있다. 물론, 본 발명의 기술들은 다른 사이즈의 비디오 블록들에 또한 적용될 수도 있다.
본 발명의 오프셋 기술은, 루마 블록들, 크로마 블록들 또는 그 양자에 관해 적용될 수도 있다. 상이한 오프셋들은, 각각의 타입의 비디오 블록 (예를 들어, 루마 및 크로마 블록들) 과 관련된 각각의 정수 및 서브-정수 픽셀 위치에 대해 정의될 수도 있다. 또한, 각각의 블록의 각각의 특정한 사이즈, 분할 또는 서브-분할로 상이한 오프셋들이 각각의 블록에 할당될 수 있다. 몇몇 예들에서, 양방향-예측 블록을 인터-인코딩하기 위해, 2개의 오프셋들이 특정한 픽셀 또는 서브-정수 픽셀 위치에 대해 계산될 수도 있으며, 제 1 오프셋은, 현재 프레임의 현재 블록과 시간적으로 더 근접한 기준 프레임 (즉, 리스트 0) 의 공통-위치된 블록 사이의 평균 차이를 나타내고, 제 2 오프셋은 현재 프레임과 시간적으로 더 이격된 기준 프레임 (즉, 리스트 1) 사이의 평균 차이를 나타낸다. 2개의 오프셋 값들을 계산한 이후, 비디오 인코더 (20) 는 어느 오프셋 값이 픽셀 또는 서브-정수 픽셀값에 적용되는지를 결정할 수도 있으며, 리스트 0에 기초하여 인코딩할 경우 제 1 오프셋을 적용하고, 리스트 1에 기초하여 인코딩할 경우 제 2 오프셋을 적용한다.
블록-기반 DC 오프셋들을 계산하는 것은, 현재 프레임의 특정한 사이즈 (예를 들어, 16×16 픽셀들) 의 공통-위치된 블록들 및 기준 프레임 사이의 DC 차이에 대해 (히스토그램의 형태로) 통계를 수집하는 것을 포함한다. 기준 프레임 및 현재 프레임 내의 블록들이 비교되며, 2개의 프레임들의 각각의 공통-위치된 블록에 대해, 2개의 양들이 계산된다.
1) 픽셀 차이들의 제곱 에러 (예시적인 함수들 blockDC1 및 blockDC2 와 관련하여 err0 가 후술됨); 및
2) 블록의 평균 DC가 각각의 픽셀의 값으로 감산된 이후의 픽셀 차이들의 제곱 에러 (예시적인 함수들 blockDC1 및 blockDC2 와 관련하여 err1 이 후술됨).
이들 2개의 양들을 비교함으로써 (예를 들어, 1에서의 에러가 2에서의 에러보다 2배 더 큰지를 체크함으로써), 블록들이 충분히 유사한지 (즉, 공통-위치된 블록들 사이의 차이가 DC 차이에 의해 대부분 야기되는지) 를 추정하며, 블록-기반 DC 차이들의 히스토그램을 포함하는 벡터로 통계를 누산하는 것이 가능할 수도 있다. 실용적인 이유때문에, DC 차이들은, 그들을 정수값들로 라운딩함으로써 양자화될 수 있다.
히스토그램 빈들을 조사함으로써, DC 차이들의 범위를 유도하고 DCmin 및 DCmax 를 계산하는 것이 가능하다. 몇몇 가능성들은 다음과 같다.
1) noSamples 를 초과하는 샘플들을 갖는 포지티브 및 네거티브 DC 값들에 대응하는 빈들의 수를 카운트함 (아래의 함수 blockDC2 에서 사용된 방법);
2) noSamples 를 초과하는 샘플들을 갖는 네거티브 및 포지티브 DC 값들에 대응하는 빈들의 수를 카운트하지만, 테스트가 실패하는 제 1 시간에서 카운트를 중지함; 또는
3) noSamples 를 초과하는 샘플들을 포함하는 최좌측 및 최우측 빈들에 대응하는 DC 값을 탐색함 (아래의 blockDC1 에서 사용된 방법).
일 예로서, noSamples=20 이고 히스토그램이 표 2에서 아래와 같이 표시되면, 제 1 방법은 DCmin = -2, DCmax = 2 를 리턴할 것이고, 제 2 방법은 DCmin = -2, DCmax = 1 을 리턴할 것이며, 제 3 방법은 DCmin = -2, DCmax = 4 를 리턴할 것이다.
Figure pct00005
일단 현재 및 기준 프레임 사이의 블록-기반 DC 차이값이 상술된 바와 같이 추정되면, 오프셋들이 서브-픽셀 위치들의 서브세트에 할당된다. 사용된 메커니즘은 인코더 및 디코더 양자에 알려져 있으며, DCmin 및 DCmax 의 값들에 의해 완전히 결정된다. 따라서, 다른 방법들과의 호환성을 유지할 필요가 없다면, 오프셋들의 송신은 단지 이들 2개의 값들만을 송신함으로써 매우 간략화될 수 있다.
오프셋들 O(1) 내지 O(15) 는 소정의 순서, 즉, 5, 15, 13, 7, 9, 6, 11, 14, 1, 4, 3, 12, 10, 2, 8 로 서브-픽셀 위치들에 할당될 수도 있다. 다른 순서의 할당이 가능하다. 표 3은, 1/4 픽셀 보간 (위치 0이 풀-픽셀에 관련됨) 에서 사용된 서브-픽셀 위치들의 인덱싱 및 오프셋들의 할당을 나타낸다. 15 미만의 오프셋들이 할당되면, 나머지 값들은 제로로 셋팅된다. 상이한 프렉셔널 픽셀 보간으로 방법이 확장될 수도 있다. 이들 서브-픽셀 위치로의 DC 오프셋들의 적용의 일 예가 도 5의 예를 참조하여 설명된다.
Figure pct00006
상기 표 3에서, 4개의 좌측열은 서브-픽셀 위치들을 나타내고, 4개의 중심열들은 15 오프셋들의 할당을 나타내며, 4개의 우측열은 9 오프셋들의 할당을 나타낸다.
현재 및 기준 프레임 사이의 (프레임-기반) DC 차이는, DCmin 및 DCmax 의 계산에서 사용되는 임계 noSamples 및 1/4 픽셀 보간에 대한 오프셋들의 수 양자를 결정하는데 사용될 수 있다. 또한, 임계 noSamples는 이미지의 사이즈 (및 블록들의 그러한 수) 를 고려함으로써 계산될 수 있다. 그 후, DCmin 및 DCmax 가 추가적으로 정제될 수 있다. 이를 달성하는 가능한 방식은 다음의 의사코드에 의해 예시된다.
Figure pct00007
Figure pct00008
상기 의사코드에서의 양 roundFact 는, DC 범위를 양자화하고 15 보다 크지 않은 값들에 오프셋들을 제한하는데 사용된다. 그 후, 범위 [DCmin, DCmax] 에서의 오프셋들은 상기 특정된 순서로 서브-픽셀 위치들에 할당된다. 프레임-기반 DC 차이의 절대값이 작으면 (예를 들어, 2보다 작으면), DC 차이는 더 작은 스텝 (예를 들어, 0.1) 및 새로운 양으로 재양자화되며, 소위 noOffsets1 이 생성되었다고 한다. noOffsets1 이 임계값 (예를 들어, 8) 이하이면, 제 1 noOffset1 서브-픽셀 위치들 (상기 특정된 순서에서는 첫번째) 은 제로로 셋팅되고, (DC 차이의 부호에 의존하여) 나머지 위치들은 +1 또는 -1 로 충진된다. noOffset1 이 임계값보다 크면, 제 1 noOffsets1 위치는 +1 또는 -1로 충진되고 나머지 서브-픽셀 위치들은 제로로 셋팅된다.
도 2를 참조하면, 모션 보상 유닛 (35) 은 예측 블록에 기초하여 예측 데이터를 계산한다. 비디오 인코더 (20) 는, 코딩될 본래의 비디오 블록으로부터 예측 데이터를 감산함으로써 잔류 비디오 블록을 형성한다. 가산기 (48) 는 이러한 감산 연산을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 변환 유닛 (38) 은 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환을 잔류 블록에 적용하여, 잔류 변환 블록 계수들을 포함하는 비디오 블록을 생성한다. 예를 들어, 변환 유닛 (38) 은, DCT와 개념적으로 유사한 H.264 표준에 의해 정의된 것과 같은 다른 변환들을 수행할 수도 있다. 또한, 웨이블렛 변환, 정수 변환, 서브-대역 변환 또는 다른 타입의 변환들이 사용될 수 있다. 임의의 경우, 변환 유닛 (38) 은 잔류 블록에 변환을 적용하여, 잔류 변환 계수들의 블록을 생성한다. 그 변환은 픽셀 도메인으로부터 주파수 도메인으로 잔류 정보를 변환할 수도 있다.
양자화 유닛 (40) 은 비트 레이트를 추가적으로 감소시키기 위해 잔류 변환 계수들을 양자화한다. 양자화 프로세스는 계수들 중 몇몇 또는 전부와 관련된 비트 깊이를 감소시킬 수도 있다. 예를 들어, 16비트 값은, 양자화 동안 15비트 값으로 라운딩 다운될 수도 있다. 양자화에 후속하여, 엔트로피 코딩 유닛 (46) 은 양자화된 변환 계수들을 엔트로피 코딩한다. 예를 들어, 엔트로피 코딩 유닛 (46) 은 콘텐츠 적응적 가변 길이 코딩 (CAVLC), 콘텐츠 적응적 바이너리 산술 코딩 (CABAC), 또는 또 다른 엔트로피 코딩 방법을 수행할 수도 있다. 엔트로프 코딩 유닛 (46) 에 의한 엔트로피 코딩에 후속하여, 인코딩된 비디오는 또 다른 디바이스에 송신될 수도 있고, 추후의 송신 또는 검색을 위해 아카이브될 수도 있다. 코딩된 비트스트림은, 엔트로피 코딩된 잔류 블록들, 그러한 블록들에 대한 모션 벡터들, 특정한 프레임에 대한 서브-정수 픽셀 값들을 계산하기 위해 기준 프레임에 적용하기 위한 보간 필터들의 식별자들, 및 코딩된 유닛 내의 상이한 정수 및 서브-정수 픽셀 위치들에서 복수의 상이한 오프셋들을 식별하는 오프셋 값들을 포함하는 다른 신택스를 포함할 수도 있다.
역양자화 유닛 (42) 및 역변환 유닛 (44) 은, 각각, 예를 들어, 기준 블록으로서의 추후 사용을 위해 픽셀 도메인에서 잔류 블록을 복원하도록 역양자화 및 역변환을 적용한다. 모션 보상 유닛 (35) 은, 기준 프레임 저장부 (34) 의 프레임들 중 하나의 예측 블록에 잔류 블록을 부가함으로써 기준 블록을 계산할 수도 있다. 또한, 모션 보상 유닛 (35) 은, 서브-정수 픽셀 값들을 계산하기 위해, 복원된 잔류 블록에 선택된 보간 필터들 (37) 을 적용할 수도 있다. 합산기 (51) 는, 기준 프레임 저장부 (34) 로의 저장을 위해 복원된 비디오 블록을 생성하도록 모션 보상 유닛 (35) 에 의해 생성되는 모션 보상된 예측 블록에 복원된 잔류 블록을 부가한다. 복원된 비디오 블록은, 후속 비디오 프레임 내의 블록을 인터-코딩하기 위해 기준 블록으로서 모션 추정 유닛 (36) 및 모션 보상 유닛 (35) 에 의해 사용될 수도 있다.
또한, 모션 추정 유닛 (36) 은, 본 발명의 기술들에 따라 모션 벡터를 계산할 예측 블록을 식별하는데 사용되는 표준 탐색 알고리즘을 변경할 수도 있다. 본 발명의 기술들에 따르면, 모션 추정 유닛 (36) 은, 기준 프레임에 이전에 부가된 DC 오프셋들을 고려하는 개선된 모션 탐색을 수행할 수도 있다. 특히, 모션 추정 유닛 (36) 은, DC 오프셋들의 부가의 결과로서 비-제로 DC 오프셋 값들을 갖는 서브-픽셀 위치들의 평가를 강제함으로써 모션 탐색을 정제할 수도 있다. 모션 탐색 동안, 모션 추정 유닛 (36) 은, 예를 들어, 그 블록에 대한 SAD, SSD 또는 다른 픽셀 차이 메트릭에 기초하여, 인코딩될 블록을 매우 근접하게 매칭시키는 기준 프레임의 예측 블록을 식별하기를 시도한다.
모션 탐색으로부터 초래한 인코딩을 개선시키기 위해, 표준 모션 탐색 알고리즘이 이들 픽셀 위치들 중 하나에서 시작하는 블록을 스킵한다고 규정하더라도, 모션 추정 유닛 (36) 은, 모션 보상 유닛 (35) 이 비-제로 오프셋 값을 정의하는 정수 또는 서브-정수 픽셀 위치에서 시작하는 기준 프레임의 예측 블록들을 검사할 수도 있다. 정의된 오프셋 값 또는 제로의 오프셋 값이 존재하지 않는 픽셀 또는 서브-픽셀 위치에서 기준 프레임의 블록이 시작하고, 모션 탐색 알고리즘이 그 위치에서 블록을 스킵한다고 규정할 경우, 모션 추정 유닛 (36) 은 그 위치를 스킵하고 다음의 픽셀 위치로 이동할 수도 있다. 그러나, 모션 보상 유닛 (35) 이 비-제로 오프셋 값을 정의하는 위치에서 기준 프레임의 블록이 시작하고, 모션 탐색 알고리즘이 그 위치에서 블록을 스킵한다고 규정할 경우, 모션 추정 유닛 (36) 은 그럼에도 그 위치에서 시작하는 블록을 분석할 수도 있으며, 따라서, 표준 모션 탐색 알고리즘을 오버라이딩한다. 특히, 모션 추정 유닛 (36) 은, 그 블록이 인터-코딩을 위한 예측 블록으로서 선택되어야 하는지를 결정하기 위해, 코딩될 블록과 기준 프레임의 그 위치에서 시작하는 블록을 비교할 수도 있다.
일 예에서, 비디오 인코더 (20) 는, 성능 손실이 거의 없거나 없고 상당한 속도 이득을 갖는 단일 패스에서 인코딩을 수행하기 위해, 하나 이상의 이전에 인코딩된 프레임들의 이력 (단일 또는 누산) 에 기초하여 보간 필터들을 선택하기 위한 절차, DC 오프셋들을 계산하고 그들을 서브-픽셀 위치들에 할당하기 위한 절차, 및 DC 오프셋들을 갖는 서브-픽셀 위치들을 고려하기 위한 모션 탐색의 정제를 결합할 수도 있다. 다른 예에서, 비디오 인코더 (20) 는, (1) 보간 필터들을 선택하기 위한 절차, (2) DC 오프셋들을 계산하고 그들을 서브-픽셀 위치들에 할당하기 위한 절차, 및 (3) DC 오프셋들을 갖는 서브-픽셀 위치들을 고려하기 위한 모션 탐색에 대한 개선의 임의의 결합 또는 변형을 수행할 수도 있다.
도 3은, 본 발명에 설명된 방식으로 인코딩된 비디오 시퀀스를 디코딩하는 비디오 디코더 (30) 의 일 예를 도시한 블록도이다. 몇몇 예들에서, 비디오 디코더 (30) 는 비디오 인코더 (20) (도 2) 에 관해 설명된 인코딩에 대해 역인 디코딩 패스를 수행할 수도 있다. 비디오 디코더 (30) 는, 디코딩 동안 본 발명의 오프셋 기술들을 수행하는 모션 보상 유닛 (54) 을 포함한다. 특히, 디코딩 측 상에서, 모션 보상 유닛 (54) 은, 코딩된 유닛에 대한 복수의 오프셋 값들을 식별하는, 예를 들어, 하나 이상의 서브-정수 픽셀 위치들 및 정수 픽셀 위치들에 대한 상이한 오프셋들을 정의하는 엔트로피 디코딩 유닛 (52) 으로부터 신택스 엘리먼트를 수신할 수도 있다.
모션 보상 유닛 (54) 은, 엔트로피 디코딩 유닛 (52) 으로부터 수신된 모션 벡터들에 기초하여 예측 데이터를 생성할 수도 있다. 특히, 모션 보상 유닛 (54) 은, 모션 벡터들을 사용하여, 이전에 디코딩된 기준 프레임에서 예측 블록들을 식별할 수도 있고, 오프셋 예측 데이터를 생성하기 위해 (예측 데이터의 픽셀 위치에 기초하여) 그러한 예측 데이터에 적절한 오프셋을 부가할 수도 있다. 예측 데이터는 보간된 데이터일 수도 있으며, 이 경우, 비-정수 위치에 대한 오프셋 값들 중 대응하는 하나는 오프셋 예측 데이터를 생성하기 위해 보간된 예측 데이터에 적용될 수도 있다. 이러한 오프셋 예측 데이터에 기초하여, 비디오 데이터 (예를 들어, 복원된 잔류 비디오 블록) 가 디코딩될 수 있다. 특히, 디코더는, 인코딩되었던 본래의 비디오 블록을 생성하기 위해 잔류 비디오 블록과 오프셋 예측 데이터를 결합할 수도 있다.
엔트로피 디코딩 유닛 (52) 은, 양자화된 계수들 및 신택스 (예를 들어, 코딩된 유닛에 대한 모션 벡터들 및 복수의 오프셋 값들) 를 생성하기 위해 수신 비트스트림을 엔트로피 디코딩한다. 신택스는 엔트로프 코딩 유닛 (52) 으로부터 모션 보상 유닛 (54) 으로 포워딩된다. 역양자화 유닛 (56) 은, 양자화된 블록 계수들을 역양자화, 즉, 디-양자화한다. 역양자화 프로세스는, 예를 들어, H.264 디코딩에 의해 정의된 바와 같은 종래의 프로세스일 수도 있다. 역변환 유닛 (58) 은, 픽셀 도메인에서 잔류 블록들을 생성하기 위해, 역변환, 예를 들어, 역 DCT 또는 개념적으로 유사한 역변환 프로세스를 변환 계수들에 적용한다. 모션 보상 유닛 (54) 은 모션 보상된 블록들을 생성하며, 가능하다면, 보간 필터들 (64) 을 사용하여 보간을 수행한다. 또한, 특정한 프레임들에서 서브-픽셀 위치들에 대해 사용될 특정한 보간 필터들 (64) 을 특정하는 식별자들은, 인코더 (20) 에 의해 생성된 비트스트림 내의 신택스 엘리먼트들로서 포함될 수도 있다.
모션 보상 유닛 (54) 은, 비디오 블록의 인코딩 동안 비디오 인코더 (20) 에 의해 사용된 것과 동일한 세트의 보간 필터들 (64) 을 선택할 수도 있다. 특히, 모션 보상 유닛 (54) 은, 기준 프레임 저장부 (62) 로부터 검색된 기준 블록에 대한 비트스트림 내의 신택스 엘리먼트들에 의해 표시된 바와 같이, 보간 필터들 (64) 의 세트를 사용하여 서브-정수 픽셀 값들을 계산한다. 모션 보상 유닛 (54) 이 모션 벡터들에 기초하여 예측 블록들을 생성한 이후, 모션 보상 유닛 (54) 은, 인코더에 의해 수행된 본래의 인코딩에서 사용되었던 오프셋 예측 블록들을 생성하기 위해 예측 블록들에 적절한 오프셋 값들을 부가한다.
합산기 (64) 는, 현재 프레임에 대한 디코딩된 블록들을 형성하기 위해, 잔류 블록들을, 모션 보상 유닛 (54) 에 의해 생성된 대응하는 오프셋 예측 블록들과 합산함으로써 잔류 블록들로부터의 잔류 데이터를 부가한다. 원한다면, 블록키니스 아티팩트들을 제거하기 위해 디코딩된 블록들을 필터링하도록, 디블록킹 필터가 또한 적용될 수도 있다. 그 후, 디코딩된 비디오 블록들을 기준 프레임 저장부 (62) 에 저장되며, 그 저장부는, 디코딩될 더 이후의 프레임들에 대한 후속 모션 보상을 위해 기준 블록들을 제공하고, 또한, 비디오의 프리젠테이션을 위해 (도 1의 디바이스 (28) 와 같은) 디스플레이 디바이스를 구동시키도록 디스플레이 버퍼로의 송신을 위하여 디코딩된 비디오를 생성한다.
또한, 본 발명의 기술들은, 모션 보상된 예측 데이터로의 오프셋의 적용에 관심있으며, 여기서, 상이한 오프셋들이 보간에 의해 정의된 정수 및 상이한 서브-정수 픽셀 위치들에 대해 사용된다. 인코더는 상이한 오프셋 값들을 정의하고 적용하기 위해 본 발명의 기술들을 사용하고, 디코더는, 인코더에 의해 정의되고 사용된 그 동일한 오프셋 값들을 식별하기 위해 인코더로부터 전송된 신택스 엘리먼트들을 해석한다. 적절한 오프셋이 예측 데이터의 픽셀 값들에 적용되며, 그러한 예측 데이터에 대해 정의된 픽셀 위치, 예를 들어, 정수 픽셀 위치 또는 수 개의 가능한 비정수 픽셀 위치들 중 하나에 기초하여 적절한 오프셋이 선택된다.
도 4는, 예측 데이터와 관련된 정수 픽셀 위치들 및 보간된 예측 데이터와 관련된 서브-정수 픽셀 위치들을 도시한 개념도이다. 도 4의 개념적인 도면에서, 상이한 박스들은 픽셀들을 나타낸다. (실선의 박수들 내의) 대문자는 정수 픽셀 위치들을 나타내지만, (점선의 박스들 내의) 소문자는 서브-정수 보간된 픽셀 위치들을 나타낸다. 픽셀 위치들 "aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii" 및 "jj" 는, 픽셀 위치 "C3" 와 관련된 다양한 프렉셔널 위치들의 프렉셔널 보간들에서 사용된 하프-픽셀 위치들이다. 각각의 픽셀은, 그 픽셀이 비디오 블록을 정의하도록 비디오 블록의 상부 우측 픽셀에 대응한다. 보간 또는 외삽을 위해, 비디오 블록의 픽셀들의 각각은, 각각의 서브-정수 픽셀들로부터 동일한 공간 거리를 갖는 상이한 정수 픽셀들에 관해 동일한 방식으로 보간 또는 외삽될 수도 있다.
모든 정수 픽셀 위치는 관련된 15개의 상이한 프렉셔널 ("서브-정수") 위치들을 갖는다. 도 4의 예에서, 픽셀 "C3" 와 관련된 이들 15개의 상이한 프렉셔널 위치들은, 서브-정수 픽셀 위치들 "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", 및 "o" 로서 도시되어 있다. 유사하게, 픽셀 "E5" 과 관련된 15개의 상이한 프렉셔널 위치들은, 서브-정수 픽셀 위치들 "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", 및 "o" 로서 도시되어 있다. 다른 프렉셔널 위치들의 대부분은 간략화를 위해 (픽셀 "C3" 와 관련된 15개의 상이한 프렉셔널 위치들 중 하나 이상을 생성하는데 사용되는 상술된 것 이외에는) 도시되어 있지 않다.
예를 들어, ITU H.264/AVC 표준에서 하프-픽셀 위치들에서 루마 신호들을 획득하기 위해, 계수들 [1, -5, 20, 20, -5, 1] 을 갖는 6탭 위너 필터가 통상적으로 사용된다. 그 후, 쿼터-픽셀 위치들에서 루마 신호들을 획득하기 위해, 바이리니어 필터가 사용된다. 또한, 바이리니어 필터가 크로마 컴포넌트들에 대한 프렉셔널 픽셀 보간에서 사용될 수도 있으며, H.264/AVC 에서 최대 1/8 픽셀 정확도를 가질 수도 있다.
모션 추정 이후, 주어진 비디오 블록에 대한 최상의 모션 벡터는, 예를 들어, 코딩 레이트 및 비디오 품질을 밸런싱하기 위해 레이트-왜곡 모델을 사용하여 식별될 수도 있다. 예측 비디오 블록은, 최상의 모션 벡터를 사용하여 모션 보상 동안 형성된다. 상술된 바와 같이, 잔류 비디오 블록은, 본래의 비디오 블록으로부터 예측 비디오 블록을 감산함으로써 형성된다. 그 후, 변환이 잔류 블록에 적용되며, 변환 계수들은 비트 레이트를 추가적으로 감소시키기 위해 양자화되고 엔트로피 코딩된다.
본 발명의 기술들은, 오프셋을 예측 비디오 블록들에 부가하는 것을 포함한다. 오프셋의 값은, 상이한 오프셋들이 상이한 정수 및 서브-정수 픽셀 위치들에 대해 정의된다는 점에서 위치-특정일 수도 있다. 픽셀들 "b" 및 "b" 에 의해 식별된 비디오 블록들과 관련된 오프셋은, 이들 2개의 픽셀들이 정수 픽셀들 C3 및 E5에 관해 동일한 서브-정수 픽셀 위치를 정의하므로, 동일할 수도 있다. 그러나, 픽셀들 "c" 및 "d" 에 의해 식별된 비디오 블록들과 관련된 오프셋은, 픽셀들 "c" 및 "d" 가 정수 픽셀들 C3 및 E5 에 관해 상이한 서브-정수 픽셀 위치들을 정의하므로, 상이할 수도 있다. 16개의 상이한 픽셀 위치들 "C3", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", 및 "o" 각각은 상이한 오프셋들을 정의할 수도 있다. 또한, 이들 상이한 오프셋들은, 각각, 16개의 상이한 픽셀 위치들 "E5", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", 및 "o" 각각에 또한 적용될 수도 있다. 오프셋들은, 오프셋 예측 블록을 생성하기 위해 상향으로 또는 하향으로 예측 블록의 모든 픽셀값을 본질적으로 바이어싱하는 부호있는 값을 정의할 수도 있다.
오프셋들은, 그들이 모든 대응하는 예측 픽셀들의 평균에 대해 동일한 샘플 위치 (정수 또는 특정한 서브-정수 위치) 를 갖는 코딩된 유닛의 모든 픽셀들의 평균 차이를 포함할 수도 있으므로, DC 오프셋들로서 지칭될 수도 있다. 이것은, 블록의 픽셀들 각각이 동일한 방식 및 동일한 정도로 바이어싱되기 때문에, 오프셋은, 예를 들어, DCT 계산으로부터 초래하는 변환된 데이터의 DC 값의 변화를 발생시키며, 여기서, DC 값은 변환 계산으로부터 초래하는 매트릭스의 좌측 상부 값이다. 이것은, DC 값이 블록의 픽셀 값들의 평균을 나타내기 때문이다. 따라서, 특정한 값만큼 픽셀들을 바이어싱함으로써, 변환 계산으로부터 초래하는 DC 값은 유사한 방식으로 바이어싱될 것이다. 따라서, 몇몇 예들에서, DC 오프셋은, 블록의 각각의 픽셀에 DC 오프셋을 적용하기보다는, 변환 계산으로부터 초래하는 DC 값에 적용될 수도 있다.
몇몇 예들에서, 정수 및 서브-정수 픽셀 위치 각각은 상이한 오프셋 값을 할당받을 수도 있다. 모션 벡터에 의해 참조되는 픽셀 또는 서브-픽셀에 대응한 오프셋 값은 블록의 각각의 픽셀에 적용된다. 일 예로서, 픽셀 위치들 "e", "f", "g", "i", "k", "m", "n", 및 "o" 에 대해, 1 과 8 사이의 범위에 있는 오프셋 값들을 픽셀 및 서브-픽셀 위치들에 할당하도록, 오프셋 값들 {1, 6, 4, 5, 7, 3, 8, 2} 이 각각 할당될 수도 있다. 즉, 오프셋 값 매핑은, {C3->null, a->null, b->null, c->null, d->null, e->1, f->6, g->4, h->null, i->5, j->null, k->7, l->null, m->3, n->8, o->2} 일 수도 있다. 또 다른 예로서, 오프셋 값은, 기준 프레임의 픽셀들의 평균값과 현재 프레임의 픽셀들의 평균값 사이의 차이를 포함할 수도 있다. 그러한 차이를 DCframe 로서 참조하여, 일 예에서, 0<DCframe<1.5 일 경우, 1의 크기를 갖는 오프셋들은 (가장 근접한 정수로 라운딩되는) 10*DCframe 픽셀 위치들에 할당된다. 예를 들어, DCframe 가 0.83과 동일할 경우, 16개의 픽셀 위치들 중 8개가 1의 크기를 갖는 오프셋을 할당받는다.
본 발명의 기술들에 따르면, 모션 추정 유닛 (36) 은, 표준 모션 탐색 알고리즘이 이들 블록들 중 하나 이상을 스킵하기로 규정할 경우라도, 정의된 오프셋 값들이 존재하는 위치들을 갖는 블록들을 또한 평가할 수도 있다. 모션 추정 유닛 (36) 은, 모션 탐색 알고리즘이 이들 블록들을 스킵하기로 규정할 경우, 정의된 오프셋 값들 없는 픽셀 위치들에서 시작하는 블록들을 평가하기를 스킵할 수도 있다. 상기 예에서, 오프셋 값들 {1, 6, 4, 5, 7, 3, 8, 2} 이, 각각, 픽셀 위치들 "e", "f", "g", "i", "k", "m", "n" 및 "o" 에 할당될 경우, 모션 추정 유닛 (36) 은, 모션 탐색 알고리즘이 이들 픽셀 위치들을 스킵하기로 규정할 경우, 픽셀 위치들 "C3", "a", "b", "c", "d", "h", "j", 및 "l" 에서 시작하는 블록들을 평가하기를 스킵할 수도 있다. 그러나, 모션 추정 유닛 (36) 은, 픽셀 위치들 "e", "f", "g", "i", "k", "m", "n" 및 "o" 이 정의된 오프셋 값들을 갖기 때문에, 모션 탐색 알고리즘이 이들 위치들에서 시작하는 블록들을 스킵하기로 규정할 경우라도, 픽셀 위치들 "e", "f", "g", "i", "k", "m", "n" 및 "o" 에서 시작하는 블록들을 평가할 것이다.
또 다른 예로서, DCmb 가 기준 블록의 픽셀들의 평균값과 현재 블록의 픽셀들의 평균값 사이의 차이를 나타낸다고 한다. 또한, DCmin 가 매크로블록들의 적어도 임계수에 할당된 DCmb 의 최소값이라고 하고, DCmax 가 매크로블록들의 적어도 임계수에 할당된 DCmb 의 최대값이라고 한다. 일 예에서, DCframe>1.5 일 경우, 픽셀 값들의 각각은 DCmin 과 DCmax 사이의 범위인 오프셋 값을 할당받는다.
다시, 도 4는 윗첨자를 갖는 실선 박스들에서 정수-픽셀 샘플들 (또한, 풀-픽셀들로 지칭됨) 을 도시한다. 임의의 주어진 정수-픽셀 샘플에 대해, 15개의 서브-픽셀 위치들이 존재할 수도 있으며, 도 4에서, 정수-픽셀 샘플 "C3" 에 대해 도시되어 있고 "a" 내지 "o" 로 라벨링되어 있다. H.264/AVC 에 따르면, 모션 보상 유닛 (35) 은, 1차원 6탭 위너 필터를 먼저 사용하여 하프-픽셀 위치들 "b", "h", 및 "j" 를 계산할 수도 있다. 보간 필터는 먼저 수평 방향으로 그 후, 수직 방향으로 적용될 수도 있거나, 그 역으로 적용될 수도 있다. 그 후, 모션 보상 유닛 (35) 은, 바이리니어 필터 및 이미 계산된 하프-픽셀 샘플들을 사용하여 나머지 쿼터-픽셀 위치들을 필터링할 수도 있다.
보간된 데이터를 생성하도록 적용된 실제 필터들은, 광범위하게 다양한 구현들에 영향을 받을 수도 있다. 일 예로서, 모션 보상 유닛 (35) 은 보간된 값들을 정의하기 위해 적응적 보간 필터링을 사용할 수도 있다. 또 다른 예에서, 보간 필터들의 수 개의 세트들이 적용될 수도 있으며, 최상의 예측 데이터를 산출하는 세트가 선택될 수도 있다. 몇몇 예들에서, 본 명세서에서 설명된 바와 같이, 보간 필터들은 하나 이상의 기준 프레임들에 대한 이력 보간 데이터에 기초하여 선택될 수도 있다. 본 발명에 따르면, 오프셋의 부가는, 모션 추정이 코딩될 현재 프레임에 대해 수행되기 전이 아니라 코딩에서 사용될 기준 프레임으로부터 임의의 보간된 예측 데이터를 생성한 이후 발생한다.
도 2를 참조하여 설명된 바와 같이, 모션 보상 유닛 (35) 은 오프셋을 갖는 스위칭된 보간 필터 (SIFO) 방식을 사용할 수도 있다. 모션 보상 유닛 (35) 은, 예를 들어, 각각, 보간 필터 계수들의 복수의 상이한 미리-정의된 세트들에 의해 정의될 수도 있는 복수의 고정된 보간 필터들 (37) 사이에서 선택할 수도 있다. 보간 필터의 선택은, 각각의 코딩된 유닛 레벨 (예를 들어, 프레임 레벨 또는 슬라이스 레벨) 에 대해 또는 각각의 서브-픽셀 위치 (샘플 레벨) 에 대해 수행될 수도 있다. 또한, 본 발명에 따르면, DC 오프셋들이 예측 이후 부가될 수도 있으며, 또한, 본 명세서에서 설명된 바와 같이 DC 오프셋들은 각각의 가능한 정수 또는 프렉셔널 픽셀 위치에 대해 정의될 수도 있다.
따라서, 모션 보상 유닛 (35) 은, 보간 데이터의 수 개의 가능한 대안들을 정의하기 위해, 고정된 보간 필터들 (37) 의 상이한 세트들을 사용할 수도 있다. 예로서, 모션 보상 유닛 (35) 은, 표준 ITU-T H.264 필터 세트, 더 높은 정확도를 갖는 (1/2 픽셀 위치들에 대한 중간 라운딩 및 1/4 픽셀 위치들에 대한 바이어싱된 라운딩 없는) H.264/AVC 에 기초한 필터 세트, 또는 맞춤화된 보간 필터들의 세트를 사용할 수도 있다. 맞춤화된 보간 필터들의 세트는 트레이닝 비디오 시퀀스들의 세트를 사용함으로써 미리-정의될 수도 있다.
최상의 예측 (즉, 더 작은 예측 에러 에너지) 을 제공하는 필터 세트는, 누산을 기초로 한 이전 기준 프레임 또는 다수의 기준 프레임들에 대한 이력 보간 에러에 의해 표시된 바와 같이, 모션 보상 유닛 (35) 에 의해 선택될 수 있고, 보간된 데이터를 생성하기 위해 적용될 수 있다. 다수의 기준 프레임들이 사용될 경우, 상이한 필터 세트들이 상이한 기준 프레임들에 대해 선택될 수도 있다. 일 예에서, 모션 보상 유닛 (35) 은 1/2 픽셀 위치들 (위치들 b, h 및 l) 에 대해 표준 필터들을 적용할 수도 있고, 모션 보상 유닛 (35) 은 다른 1/4 픽셀 위치들에 대해 맞춤화된 필터 세트를 적용할 수도 있다.
일단 예측 데이터가 모션 보상 유닛 (35) 에 의해 생성되거나 보간되면, DC 오프셋은 보간된 (또는 비-보간된) 데이터와 관련된 샘플 위치에 기초하여 예측 데이터에 적용될 수 있다. 특히, 본 발명은, 상이한 정수 또는 서브-정수 픽셀 위치들에 대한 상이한 DC 오프셋들의 사용을 제공한다. 또한, 도 4에 도시된 예시적인 데이터에서, 이것은, 16개의 상이한 픽셀 위치들 "C3", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", 및 "o" 각각이 그 자신의 상이한 오프셋을 정의할 수도 있다는 것을 의미한다. 따라서, 16개의 가능한 정수 및 서브-정수 위치들에 대해, 16개의 상이한 오프셋들이 존재할 수도 있다. 또한, 이들 상이한 오프셋들은, 각각, 16개의 상이한 픽셀 위치들 "E5", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", 및 "o" 각각에 또한 적용될 수도 있다.
예측 데이터의 픽셀들에 DC 오프셋들을 부가하는 것은, 상이한 비디오 프레임들 사이의 일루미네이션 변화들의 효과들을 캡쳐하는데 도움을 줄 수도 있다. 일루미네이션 변화들은, 비디오 시퀀스 내의 플래시들 또는 어두운 스카이 (sky) 와 같은 것들에 의해 초래될 수도 있다. H.264/AVC 는 가중된 예측을 사용하며, 이는 오프셋들이 예측 픽셀값에 부가되게 할 수도 있다. 그러나, H.264/AVC 가중된 예측에 의해 정의된 DC 오프셋들은 단지 프레임 레벨에 관해서만 허용될 수도 있으며, 이는, 비디오 블록의 예측 데이터가 보간되는지 여부에 관계없이, 오직 하나의 오프셋 값이 주어진 프레임에 대해 정의된다는 것을 의미한다. 즉, 프레임 레벨 오프셋에 대해, 동일한 프레임 내의 모든 픽셀들은 동일한 DC 오프셋을 갖는다.
본 발명에 따르면, 몇몇 경우들에서, DC 오프셋은 보간된 및 비-보간된 데이터와 관련된 상이한 샘플 위치들에 대해 상이하게 정의될 수도 있다. 따라서, 상이한 DC 오프셋들은 도 4에 도시된 15개의 서브-픽셀 위치들 ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", 및 "o" ) 각각에 대해 정의될 수도 있고, 또 다른 DC 오프셋이 정수-픽셀 위치들에 대해 정의될 수도 있다. 샘플-기반 DC 오프셋들이 사용될 경우, 총 16개의 DC 오프셋들이 코딩될 수도 있고, 디코더에 대한 비디오 비트스트림에서 신택스 엘리먼트로서 전송될 수도 있다. 샘플-기반 DC 오프셋들을 적용함으로써, 모션 보상 유닛 (35) 은 간단하지만 효율적인 모션 세그먼트화 툴을 제공할 수도 있다.
일 예로서, 비디오 프레임은 스틸 배경 (still background) 으로서 어두운 스카이 및 전경 (foreground) 으로서 움직이는 오브젝트를 포함할 수도 있다. 이러한 경우, 배경 및 전경은 상이한 정도의 일루미네이션 변화들을 가질 수도 있으며, 주어진 비디오 블록을 식별하는 픽셀의 위치에 의해 정의되는 위치-특정 DC 오프셋 값들을 사용함으로써, 모션 보상 유닛 (35) 은, 그러한 위치-특정 DC 오프셋 값들 없이 달성될 수 있는 더 효율적인 방식으로 전경 및 배경에서 상이한 정도의 일루미네이션 변화들을 캡쳐할 수 있을 수도 있다.
또한, 코딩된 유닛의 비디오 블록들이, 예를 들어, 양방향 예측에 대해 다수의 상이한 기준 프레임들을 사용할 경우, 상이한 기준 프레임들과 관련된 각각의 정수 및 서브-정수 위치에 대해 상이한 DC 오프셋들이 계산될 수도 있고 전송될 수도 있다. 몇몇 경우들에서, 몇몇 기준 프레임들은 단일 프레임-기반 DC 오프셋을 포함할 수도 있지만, 다른 기준 프레임들은 수 개의 위치-특정 DC 오프셋들을 가질 수도 있다. 몇몇 방식들은, 코딩될 현재 프레임에 대해 시간적인 거리에서 가장 근접한 기준 프레임에 관해서만 위치-특정 DC 오프셋들을 사용할 수도 있으며, 모든 다른 기준 프레임들에 대해서는 단일 프레임-기반 DC 오프셋을 사용할 수도 있다.
DC 오프셋들을 코딩하기 위해, 단일 프레임-기반 DC 오프셋이 사용되는지 또는 수 개의 위치-특정 DC 오프셋들이 사용되는지를 나타내도록 프레임 당 1비트가 사용될 수도 있다. DC 오프셋들이 정수 정확도만을 가지면, 이들 오프셋들의 값들은 부호있는 지수-골롬 (exponential-Golomb) 코드를 사용하여 코딩될 수도 있다. DC 오프셋들이 프렉셔널 정확도를 가지면, 정수 오프셋의 값들은 부호있는 지수-골롬 코드를 사용하여 코딩될 수도 있고, 비-정수 오프셋들의 값들은, 부호있는 지수-골롬 코드에 의해 정의된 정수 오프셋에 대한 잔류 차이들을 사용하여 코딩될 수도 있다.
디코딩 측 상에서, 디코더는, 임의의 생성된 예측 비디오 블록들의 픽셀들에 적절한 DC 오프셋 값들을 간단히 적용할 수도 있다. 디코더에 의해 사용된 DC 오프셋 값은, 각각의 예측 비디오 블록과 관련된 특정한 정수 또는 서브-정수 픽셀 위치에 대한 신택스 엘리먼트에서 정의될 수도 있다. 예를 들어, 코딩된 유닛의 헤더에서의 신택스 엘리먼트는, 그 코딩된 유닛에 대한 복수의 오프셋 값들 각각을 특정하기 위한 플래그들 또는 값들을 포함할 수도 있다. "오프셋" 및 "DC 오프셋" 이라는 용어들은, 본 발명에서 상호교환가능하게 사용된다. 전체 오프셋이 각각의 동일한 각각의 픽셀 위치에 대해 정의되는 한, 예를 들어, 정수 위치에 대해서는 하나의 오프셋 및 각각의 가능한 서브-픽셀 위치에 대해서는 수 개의 상이한 오프셋들이 정의되는 한, 오프셋은 DC 오프셋으로서 지칭된다.
본 발명의 기술들에 따르면, 단일 인코딩 패스에서 정수 및 서브-정수 픽셀 위치들에 오프셋들이 적용될 수도 있다. 일 예에서, 단일 패스에서 DC 오프셋 값들을 할당하기 위한 방법은 다음의 동작들을 포함할 수도 있다.
a. 기준 프레임 "idx" 와 현재 프레임 사이의 DC 차이인 DCDiff[idx] 를 계산함
b. sgn = sign(DCDiff[idx]) 을 셋팅함, 여기서, sign() 은 +1 또는 -1 을 리턴함
c. 기준 프레임이 idx>0 을 가지면, frmOffset[idx] = min(round(DCDiff[idx], 1) 를 셋팅하고 리턴함, 그렇지 않으면,
d. numOffsets 를 min(round(DCDiff[idx], 8) 로서 결정함;
e. numOffsets>=numOffsetsMin (예를 들어, 여기서 numOffsetsMin=2) 이면, 값 {1, 2, 3, 4, 5, 6, 7, 8} 을 서브-픽셀 위치들 {5, 15, 13, 7, 9, 6, 11, 14} 로 증가시키는 numOffsets 와 동일한 오프셋들의 수를 시퀀스에 부가함;
f. 그렇지 않으면, numOffsets1 을 min(round(DCDiff[idx]/0.1), 15) 로서 계산함
g. numOffsets1>0 및 numOffsets1<=thFullPel0 이면, 순서 {5, 15, 13, 7, 9, 6, 11, 14} 에 후속하여 서브-픽셀 위치들에 값 sgn 의 numOffsets1 과 동일한 오프셋들의 수를 부가함
h. 그렇지 않고, numOffsets1>0 이면, 서브-픽셀 위치들 {0, 1, 2, 3, 4, 8, 10, 12} 에 값 sgn 의 8개의 오프셋들을 부가하고, 순서 {14, 11, 6, 9, 7, 13, 15, 5} 에 후속하여 서브-픽셀 위치들에 값 sgn 의 numOffsets1 과 동일한 오프셋들의 수를 부가함
몇몇 예들에서, 상술된 바와 같은 프로세스를 사용함으로써, 모션 보상 유닛 (35) 은 단일 패스에서 정수 및 서브-정수 픽셀 위치들에 오프셋 값들을 할당할 수도 있다. 그 후, 모션 추정 유닛 (36) 에 의해 계산된 모션 벡터에 의해 식별되는 바와 같이, 모션 보상 유닛 (35) 은 특정한 정수 또는 서브-정수 픽셀 위치의 오프셋 값을 예측 블록에 적용할 수도 있다.
몇몇 예들에서, 모션 보상 유닛 (35) 은, 특정한 서브-정수 픽셀에 할당할 오프셋 값을 결정하기 위해 2개의 프레임들 사이의 DC 차이를 계산한다. 모션 보상 유닛 (35) 은, 현재 프레임의 블록과 그 현재 프레임에 대한 기준 프레임의 공통-위치된 블록 사이의 DC 차이에 관한 히스토그램의 형태로 통계를 수집할 수도 있다. 먼저, 모션 보상 유닛 (35) 은, 현재 프레임의 블록과 기준 프레임의 공통-위치된 블록 사이의 픽셀 차이의 제곱된 에러를 제 1 에러값으로서 계산할 수도 있다. 또한, 모션 보상 유닛 (35) 은, 2개의 블록들 사이의 평균 DC 차이를 계산할 수도 있고, 현재 프레임의 블록의 픽셀 값들로부터 그 계산된 DC 차이를 감산할 수도 있으며, 그 후, 그 평균 DC 차이를 감산한 이후의 현재 프레임의 블록의 픽셀들과 기준 프레임의 공통-위치된 블록의 픽셀들 사이의 차이들의 제곱된 에러를 제 2 에러값으로서 비교한다.
모션 보상 유닛 (35) 은, 예를 들어, 제 1 에러값이 제 2 에러값보다 2배 더 큰지를 체크함으로써, 제 1 에러값 또는 제 2 에러값이 더 양호한지를 결정할 수도 있다. 모션 보상 유닛 (35) 은, 현재 프레임의 블록 및 기준 프레임의 공통-위치된 프레임이 이러한 비교에 기초하여 충분히 유사한지를 결정할 수도 있다. 2개의 블록들이 충분히 유사하다고 모션 보상 유닛 (35) 이 결정할 경우, 모션 보상 유닛 (35) 은, 블록 기반 DC 차이들의 히스토그램을 포함하는 벡터에서의 에러값들을 누산할 수도 있다.
모션 보상 유닛 (35) 은, 히스토그램에 대해 수집된 다수의 샘플들에 기초하여, DCmin 값 및 DCmax 값과 같은 값들을 계산하기 위해 다양한 방식들로 히스토그램의 빈들을 분석할 수도 있다. 일 예에서, 최소수의 샘플들 "noSamples" 에 대해, 모션 보상 유닛 (35) 은, DCmin 값이 noSamples 를 초과하는 샘플들을 갖는 네거티브 DC들에 대응하는 빈들의 수의 카운트의 -1 배와 동일하고, DCmax 값이 noSamples 를 초과하는 샘플들을 갖는 포지티브 DC들에 대응하는 빈들의 수의 카운트와 동일하다고 결정할 수도 있다. 또 다른 예에서, 최소수의 샘플들 "noSamples" 에 대해, 모션 보상 유닛 (35) 은, DCmin 값이 noSamples 를 초과하는 샘플들을 갖는 네거티브 DC들에 대응하는 빈들의 수의 카운트의 -1 배와 동일하지만 (여기서, 카운팅은 DC diff 값 0에서 시작함), 모션 보상 유닛 (35) 이 테스트가 실패하는 제 1 시간 이후 카운팅을 중지하도록 구성되며, DCmax 값이 noSamples 를 초과하는 샘플들을 갖는 포지티브 DC들에 대응하는 빈들의 수의 카운트와 동일하지만, 모션 보상 유닛 (35) 이 테스트가 실패하는 제 1 시간 이후 카운팅을 중지하도록 구성된다고 결정할 수도 있다. 또 다른 예에서, 최소수의 샘플들 "noSamples" 에 대해, 모션 보상 유닛 (35) 은, DCmin 값이 noSamples 를 초과하는 샘플들을 포함하는 최좌측 빈에 대응하는 DC와 동일하고, DCmax 값이 noSamples 를 초과하는 샘플들을 포함하는 최우측 빈에 대응하는 DC와 동일하다고 결정할 수도 있다. 아래의 표 4는, 상기 표 2와 동일하지만, 예시의 용이함을 위해 아래에 재현된다.
Figure pct00009
이들 예시적인 방법들을 추가적으로 예시하기 위해, noSamples = 20 이고 히스토그램이 상기 표 4에서 표시된 바와 같다고 가정하면, 모션 보상 유닛 (35) 은, 제 1 예시적인 방법에서는 DCmin=-2 이고 DCmax=2 이고, 제 2 예시적인 방법에서는 DCmin=-2 이고 DCmax=1 이며, 제 3 예시적인 방법에서는 DCmin=-2 이고 DCmax=4 라고 결정할 수도 있다.
DCmin 및 DCmax 를 계산한 이후, 모션 보상 유닛 (35) 은 서브-정수 픽셀들에 DC 오프셋 값들을 할당할 수도 있다. 일 예에서, 모션 보상 유닛 (35) 은, 15, 13, 7, 9, 6, 11, 14, 1, 4, 3, 12, 10, 2, 8 의 순서로 서브-정수 픽셀들 (즉, 서브-픽셀 인덱스들 15, 13, 7 등) 에 오프셋들 O(1) 내지 O(15) 을 할당하지만, 다른 순서의 할당이 가능하다. 몇몇 예들에서, 모션 보상 유닛 (35) 은 가능한 오프셋 값들의 총 수를 계산하지 않을 수도 있으며, 이 경우, 모션 보상 유닛 (35) 은 상기 나타낸 순서에 따라, 계산된 오프셋들을 할당할 수도 있다.
모션 보상 유닛 (35) 은, DCmin 및 DCmax 의 계산에서 사용된 임계값 noSamples 를 결정하기 위해 현재 프레임과 기준 프레임 사이의 프레임-기반 DC 차이를 사용할 수도 있다. 또한, 모션 보상 유닛 (35) 은, 이미지 내의 블록들의 수에 기초하여, 이미지의 사이즈에 따라 임계값 noSamples 값을 계산할 수도 있다. 일 예에서, 모션 보상 유닛 (35) 은, 할당할 오프셋 값들의 수가 2개의 프레임들 사이의 DC 차이 플러스 0.5 와 동일하다고 결정한다.
몇몇 예들에서, 모션 보상 유닛 (35) 은, 오프셋 값들의 계산된 수가 DCmax 의 계산된 값보다 클 경우 오프셋 값들의 계산된 수를 DCmax 로서 사용하기로 결정하거나, 오프셋 값들의 계산된 수가 DCmin 의 계산된 값보다 작을 경우 오프셋 값들의 계산된 수를 DCmin 으로서 사용하기로 결정함으로써 할당된 DC 오프셋 값들을 추가적으로 정제할 수도 있다. 그렇지 않으면, 모션 보상 유닛 (35) 은 DCmax 및/또는 DCmin 의 본래의 계산된 값들을 사용할 수도 있다.
모션 보상 유닛 (35) 은, 최소값으로서 1을 갖고, 서브-정수 픽셀 위치들의 수, 예를 들어, 15에 의해 제산된 DCmax 와 DCmin 의 값 사이의 차이와 동일한 값 "roundFact" 를 계산할 수도 있으며, 그 차이는 다음의 최고의 정수값으로 라운딩된다. 모션 보상 유닛 (35) 은 다음과 같은 식을 계산함으로써 DCmax 및/또는 DCmin 의 값들을 추가적으로 정제할 수도 있다.
Figure pct00010
다음의 의사코드는 상술된 바와 같이 DCmax 및 DCmin 을 정제하기 위한 예시적인 방법을 나타내며, 여기서, blockDC는, 또한 상술된 예시적인 방법들 중 하나를 사용하여 DCmin 및 DCmax 의 초기값들을 계산하고, blockDC에 후속하는 의사코드는 DCmin 및 DCmax 의 값들을 정제한다.
Figure pct00011
도 5는 도 4에 관해 설명된 예시적인 방법에 따라 할당된 오프셋 값들을 갖는 정수 픽셀 위치들을 도시한 개념도이다. 특히, 도 5의 예에서, 정수값으로 라운딩된 기준 프레임과 현재 프레임 사이의 차이, 즉, round(DCDfii[idx]) 가 6이라고 가정한다. 따라서, 모션 보상 유닛 (35) 은 오프셋 값들 1 내지 6을, 각각, 픽셀 위치들 {5, 15, 13, 7, 9, 6} 에 할당한다. 따라서, 도 5의 예에서, 픽셀들 "e", "f", "g", "i", "m", 및 "o" 는, 각각, 오프셋 값들 1, 6, 4, 5, 3 및 2를 할당받는다. 본 발명의 기술들에 따르면, 일반적인 탐색 알고리즘이 픽셀들 "e", "f", "g", "i", "m", 및 "o" 중 하나 이상에서 시작하는 블록들을 스킵하기로 규정하더라도, 모션 탐색을 수행할 경우, 모션 추정 유닛 (36) 은, 그러한 픽셀들이 오프셋 값들을 정의하기 때문에, 픽셀들 "e", "f", "g", "i", "m", 및 "o" 에서 시작하는 블록들을 분석할 수도 있다.
도 6은 도 4에 관해 설명된 예시적인 방법에 따라 할당된 오프셋 값들을 갖는 정수 픽셀 위치들을 도시한 또 다른 개념도이다. 특히, 도 6의 예에서, 기준 프레임과 현재 프레임 사이의 차이, 즉, DCDiff[idx] 가 0.7 이라고 가정한다. 따라서, 도 4의 예에 따라 numOffsetMin 을 2와 동일하다고 가정하면, 정수로 라운딩될 경우, DCDiff[idx] 는 numOffsetMin 보다 작다. 0.1로 제산된 DCDiff[idx] 는 7이므로, numOffset1 은 7과 동일하다. 도 4의 예시적인 방법에 따르면, sgn의 크기를 갖는 numOffset1 과 동일한 오프셋들의 수는 순서 {5, 15, 13, 7, 9, 6, 11, 14} 로 픽셀 위치들에 부가되며, 여기서, sgn은 이러한 예에서 1인 sign(DCDiff[idx]) 와 동일하다. 따라서, 도 6의 예에서 도시된 바와 같이, 모션 보상 유닛 (35) 은, 값 1의 오프셋들을 픽셀들 "e", "f", "g", "i", "k", "m" 및 "o" 에 할당한다. 본 발명의 기술들에 따르면, 일반적인 모션 탐색 알고리즘이 픽셀 위치들 "e", "f", "g", "i", "k", "m" 및 "o" 중 하나 이상에서 시작하는 블록들을 스킵하기로 규정하더라도, 모션 탐색을 수행할 경우, 무션 추정 유닛 (36) 은 픽셀들 "e", "f", "g", "i", "k", "m" 및 "o" 에서 시작하는 블록들을 분석할 수도 있다.
도 7은, 도 4에 관해 설명된 예시적인 방법에 따라 할당된 오프셋 값들을 갖는 정수 픽셀 위치들을 도시한 또 다른 개념도이다. 특히, 도 7의 예에서, 기준 프레임과 현재 프레임 사이의 차이, 즉, DCDiff[idx] 가 1.3 이라고 가정한다. 따라서, 정수로 라운딩될 경우, DCDiff[idx] 는, numOffsetMin 이 2와 동일하다고 가정하면, 도 4의 예에 따라 numOffsetMin 보다 작다. 0.1로 제산된 DCDiff[idx] 가 13이므로, numOffset1 은 13과 동일하다. 도 4의 예시적인 방법에 따르면, sgn 의 크기를 갖는 8개의 오프셋들이 순서 {0, 1, 2, 3, 4, 8, 10, 12} 로 픽셀 위치들에 할당되고, 여기서, sgn 은 이러한 예에서는 1인 sign(DCDiff[idx]) 와 동일하며, sgn 의 크기를 갖는, numOffsets1 마이너스 8 과 동일한 오프셋들의 수 (이러한 예에서는 5) 가 픽셀 위치들 {14, 11, 6, 9, 7, 13, 15, 5} 에 부가된다. 따라서, 도 6의 예에 도시된 바와 같이, 모션 보상 유닛 (35) 은, 픽셀들 "C3", "a", "b", "c", "d", "f", "g", "h", "i", "j", "k", "l", 및 "n" 에 값 1의 오프셋들을 할당한다. 본 발명의 기술들에 따르면, 일반적인 모션 탐색 알고리즘이 픽셀들 "C3", "a", "b", "c", "d", "f", "g", "h", "i", "j", "k", "l", 및 "n" 중 하나 이상에서 시작하는 블록들을 스킵하기로 규정하더라도, 모션 탐색을 수행할 경우 모션 추정 유닛 (36) 은, 픽셀들 "C3", "a", "b", "c", "d", "f", "g", "h", "i", "j", "k", "l", 및 "n" 에서 시작하는 블록들을 가정할 수도 있다.
도 8은 스위칭된 보간 필터들 및 오프셋들을 사용하여 단일 패스에서 비디오 데이터를 인코딩하기 위한 비디오 인코더 (20) 의 예시적인 동작을 도시한 흐름도이다. 도 8의 예시적인 방법은, 이전에 인코딩된 프레임들의 이력에 기초하여 보간 필터들을 선택하기 위한 하나의 예시적인 방법을 도시한다. 설명의 목적을 위해 비디오 인코더 (20) (도 2) 에 관해 설명되었지만, 다른 인코더들이 도 8에 관해 설명된 방법을 이용할 수도 있음을 이해해야 한다. 먼저, 비디오 인코더 (20) 는 비디오 소스 (18) (도 1) 와 같은 비디오 소스로부터 디지털 비디오를 수신한다 (80). 디지털 비디오는, 비디오 소스 (18) 가 비디오 캡쳐 디바이스를 포함할 경우, 새롭게 레코딩된 비디오, 또는 다른 경우들에서는 미리 레코딩된 인코딩되지 않은 디지털 비디오를 포함할 수도 있다. 일반적으로, 디지털 비디오는 프레임들의 시퀀스를 포함하며, 각각의 프레임은 복수의 슬라이스들 및 매크로블록들을 포함한다. 비디오 인코더 (20) 는 I-프레임, P-프레임, 또는 B-프레임과 같은 비디오 시퀀스에서의 프레임들을 인코딩한다. P 프레임들 및 B 프레임들 내에서, 몇몇 매크로블록들은 I 매크로블록들로서 인코딩될 수도 있다.
비디오 인코더 (20) 는 화상 그룹 (GOP) 에서 제 1 프레임을 인트라-코딩된 I-프레임으로서 인코딩한다 (82). 그 후, 비디오 인코더 (20) 는, 인코딩된 I-프레임이, 예를 들어, 역변환 유닛 (44) 에 의해 기준 프레임을 복원하도록 디코딩된 이후, I-프레임의 서브-정수 픽셀들에 대한 값들을 계산하기 위해 디폴트 세트 보간 필터들 (37) 을 선택한다 (84). 모션 보상 유닛 (35) 은 I-프레임의 복원된 버전을 수신하고, 보간 필터들 (37) 의 선택된 세트를 사용하여 I-프레임의 서브-픽셀들에 대한 값들을 계산한다 (86). 제 1 인터-코딩된 유닛에 대해, 필터들의 선택된 세트는 필터들의 디폴트 세트일 수도 있다. 특히, I-프레임의 각각의 서브-픽셀에 대해, 모션 보상 유닛 (35) 은 서브-픽셀의 값을 계산하기 위해 대응하는 디폴트 보간 필터를 적용한다. 몇몇 예에서, 하나의 서브-픽셀에 대한 디폴트 보간 필터는, 동일한 I-프레임의 또 다른 서브-픽셀에 대한 디폴트 보간 필터와는 상이할 수도 있다. 설계자는, 서브-픽셀 위치들의 각각에 대한 디폴트로서 보간 필터들 중 하나를 특정할 수도 있다. 비디오 인코더 (20) 는, 서브-픽셀의 위치에 대한 최저의 에러를 이력적으로 제공한 보간 필터들 (37) 중 하나를 디폴트 보간 필터로서 선택할 수도 있거나, 다른 방식으로 디폴트 보간 필터를 선택할 수도 있다. 임의의 경우에서, 모션 보상 유닛 (35) 은, 보간 필터들 (37) 의 디폴트 보간 필터를 사용하여 I-프레임의 서브-픽셀들에 대한 값들을 계산하고, 기준 프레임 저장부 (34) 에 I-프레임을 저장한다.
또한, 모션 보상 유닛 (35) 은 기준 프레임의 픽셀 및 서브-픽셀 위치들 중 하나 이상에 대한 오프셋 값들을 계산한다 (88). 몇몇 예들에서, 오프셋 값들은, 기준 프레임과 인코딩될 다음의 프레임, 예를 들어, B-프레임 또는 P-프레임 사이의 평균 픽셀값 차이를 나타낼 수도 있다. 모션 보상 유닛 (35) 은, 오프셋 값들을 계산하고 그 값들을 기준 프레임의 픽셀들에 할당하기 위해 도 4 에 관해 또는 본 발명의 다른 곳에서 설명된 방법들 중 임의의 방법을 이용할 수도 있다. 오프셋 값들을 계산한 이후, 모션 보상 유닛 (35) 은 오프셋 값들에 따라 기준 프레임의 픽셀 값들을 수정한다.
그 후, 비디오 인코더 (20) 는 기준 프레임에 따라 다음의 프레임, 예를 들어, P-프레임 또는 B-프레임을 인코딩한다 (90). 인코딩될 다음의 프레임이 P-프레임일 경우, 비디오 인코더 (20) 는 기준 프레임 저장부 (34) 의 가장 최근의 I-프레임 또는 P-프레임에 기초하여 프레임을 인코딩할 수도 있다. 프레임이 B-프레임일 경우, 비디오 인코더 (20) 는 기준 프레임 저장부 (34) 의 하나 이상의 프레임들에 기초하여 프레임을 인코딩할 수도 있다. 모션 추정 유닛 (36) 은, 기준 프레임 저장부 (34) 의 하나 이상의 프레임들에 기초하여 프레임의 코딩된 유닛들, 예를 들어, 블록들에 대한 모션 벡터들을 계산한다. 블록들에 대한 모션 벡터들은, 기준 프레임 내의 대응하는 예측 블록들을 지적한다. 모션 벡터들은 기준 프레임 내의 정수 또는 서브-정수 픽셀 위치들을 지칭할 수도 있다. 상술된 바와 같이, 서브-정수 정확도 모션 벡터들의 경우에서, 서브-픽셀 위치들에서 값들을 생성하기 위해 기준 프레임이 보간된다 (86).
모션 벡터들을 계산하기 위한 모션 탐색 동안, 모션 추정 유닛 (36) 은 모션 탐색 알고리즘에 따라 특정한 정수 또는 서브-정수 픽셀들의 평가를 스킵할 수도 있다. 그러나, 모션 추정 유닛 (36) 은, 모션 탐색 알고리즘이 그 픽셀을 스킵하기로 특정하는지 여부와는 관계없이, 모션 보상 유닛 (35) 이 오프셋 값을 적용하는 이들 정수 및 서브-정수 픽셀들에서 시작한 블록들을 평가하도록 본 발명의 기술들에 따라 구성될 수도 있다. 이것은, 모션 탐색 알고리즘에 따라 이들 위치들을 스킵할 몇몇 종래의 모션 추정 유닛과는 대조적이다. 일 예에서, 모션 추정 유닛 (36) 은, 종래의 모션 탐색 알고리즘이 이들 위치들 중 임의의 위치 또는 모두를 스킵하기로 규정할 경우라도, 모션 보상 유닛 (35) 이 오프셋 값을 할당하는 서브-정수 픽셀 위치들 각각을 명시적으로 체크하도록 구성될 수도 있다. 예를 들어, 모션 보상 유닛 (35) 은 아래의 표 5에서 다음의 서브-정수 픽셀 위치들에 다음의 오프셋 값들을 할당한다. 표 5는 상기 표 1과 동일하지만, 예시의 용이함을 위해 아래에 재현된다.
Figure pct00012
그 후, 2개의 블록들에 대한 SAD의 계산이 6회 계산될 수도 있으며, 각각의 횟수는 "가상" 오프셋들 {-2, -1, 0, 1, 2, 3} 중 하나를 기준 블록에 부가한 이후이다. 최소의 SAD를 갖는 모션 벡터가 선택될 수도 있다. 2 이상의 위치에서 나타나는 오프셋 값들 (예를 들어, 서브-픽셀 위치 1 및 11 양자에서 나타나는 오프셋 "2") 은 단지 1회 시도될 수도 있다. 즉, 모션 추정 유닛은, 동일한 계산된 오프셋 값을 각각 갖는 복수의 서브-픽셀들 중 하나만을 탐색할 수도 있다.
모션 보상 유닛 (35) 은 인코딩될 프레임 내의 현재 블록과 기준 프레임의 예측 블록 사이의 차이에 기초하여, 각각의 블록에 대한 잔류값들을 계산한다. 비디오 인코더 (20) 는, 예를 들어, DCT, 양자화 및 엔트로피 코딩을 사용하여, 모션 벡터들, 잔류물들, 및 적용가능한 보간 필터들의 식별자들 및 오프셋 값들을 인코딩하며, 이러한 데이터를 코딩된 비트스트림에서 디코더에 전송한다.
또한, 모션 보상 유닛 (35) 은, 모션 추정을 위해 적용되었던 선택된 보간 필터들을 사용하여 계산된 서브-픽셀들을 갖는 기준 프레임을 사용하여 인코딩된 바와 같이 프레임에 대한 에러값들을 결정한다 (92). 또한, 모션 보상 유닛 (35) 은, 모션 추정을 위해 각각의 서브-픽셀 위치에 대해 사용될 수 있는 다른 잠재적인 보간 필터들 각각에 대한 에러값들을 계산한다 (94). 이러한 방식으로, 모션 보상 유닛 (35) 은, 상이한 나머지 보간 필터들에 기초하여 에러값들을 재계산할 수도 있다. 예를 들어, 모션 보상 유닛 (35) 은 비용 매트릭스 C[F][I] 를 계산할 수도 있다. i는 서브-픽셀 위치에 대응하고 f는 서브-픽셀 위치 i에 대응하는 보간 필터를 지칭하는 각각의 (f,i) 에 대해, 모션 보상 유닛 (35) 은, 예를 들어 도 2에 관해 설명된 바와 같이, 보간 필터 f를 사용하여 계산된 값을 갖는 각각의 서브-픽셀 위치 i에 대해 프레임에 걸쳐, 누산된 에러를 계산한다.
그 후, 모션 보상 유닛 (35) 은 어느 세트의 보간 필터들이 최저의 에러값을 발생시키는지를 결정할 수도 있다 (96). 예를 들어, 모션 보상 유닛 (35) 은, 최대양만큼 프레임에 대한 총 에러를 감소시키는, 위치 및 그의 보간 필터를 결정하기 위한 각각의 서브-픽셀 위치 및 각각의 미시도 필터에 걸쳐 반복될 수도 있다. 그 후, 모션 보상 유닛 (35) 은, 최대수의 반복들에 도달할 때까지 또는 총 에러가 임계양 미만 만큼 감소할 때까지, 프레임에 대한 총 에러를 재계산할 수도 있고, 프레임에 대한 총 에러를 감소시키는 위치들 및 대응하는 보간 필터들을 계속 식별할 수도 있다. 이러한 방법의 일 예는 도 9에 관해 설명되어 있다.
그 후, 모션 보상 유닛 (35) 은 현재 프레임이 비디오 시퀀스, 예를 들어, 화상 그룹 (GOP), 프레임들의 그룹, 또는 풀 레코딩된 비디오 시퀀스에서 최종 프레임인지를 결정할 수도 있다 (98). 그렇지 않다면 (98의 "아니오" 브랜치), 모션 보상 유닛 (35) 은, 서브-픽셀 값들을 계산하고 그 프레임을 참조하여 후속 프레임을 인코딩하기 위해 이전에 인코딩된 프레임, 및 후속 프레임이 양방향 인코딩된 프레임일 경우 잠재적으로는 또 다른 기준 프레임에 보간 필터들의 선택된 세트를 적용할 수도 있다. 이러한 프로세스는, 이전의 코딩 유닛 또는 일련의 코딩 유닛들에 대해 최저의 에러를 생성하도록 결정된 보간 필터들이 현재의 코딩 유닛에 대한 모션 추정을 지원하는데 사용되도록 반복적으로 계속될 수도 있다. 이러한 방식으로, 현재의 코딩 유닛에 대한 모션 추정을 지원하기 위한 보간 필터들의 선택은, 하나 이상의 이전에 코딩된 유닛들에 대한 이력 보간 결과들에 기초한다. 상술된 바와 같이, 보간 필터들은, 더 최근의 코딩 유닛들에 대한 결과들에 주어진 더 높은 가중치를 갖는 누산 보간 결과들에 기초하여 선택될 수도 있다.
도 9는, 현재 프레임의 서브-픽셀들에 대한 보간된 값들을 계산하기 위해, 이전에 코딩된 프레임들에 대한 이력 보간 결과들에 기초하여 보간 필터들의 최적 세트를 식별하기 위한 예시적인 방법을 도시한 흐름도이다. 먼저, 모션 보상 유닛 (35) 은, n개의 서브-정수 픽셀 위치들에 대해 0 으로부터 n-1 까지의 범위에 있는 엘리먼트 인덱스들을 갖는 이력 판정 벡터 D를 수신한다 (110). 판정 벡터 D의 각각의 엘리먼트는, 대응하는 서브-픽셀의 값을 계산하는데 사용되는 보간 필터에 대응한다.
그 후, 모션 보상 유닛 (35) 은 비용 매트릭스 C[F][I] 를 계산하며, 여기서, I 내의 각각의 i는 서브-정수 픽셀 위치에 대응하고, F 내의 각각의 f는 서브-정수 픽셀 i의 값을 계산하는데 사용되는 보간 필터에 대응하고, 여기서, C[f][i] 는 보간 필터 f를 사용하여 계산된 값들과 현재 프레임 내의 각각의 서브-정수 픽셀 위치 i에 대한 에러의 합산과 동일하다. 따라서, 여기서, 에러 (x,i) 는 인코딩된 프레임에 관해 프레임 내의 픽셀 x에 대한 i번째 서브-정수 픽셀과 관련된 에러값을 지칭하고, 각각의 프레임은 M 개의 픽셀들을 갖는다.
Figure pct00013
모션 보상 유닛 (35) 은, 각각의 서브-정수 픽셀 위치의 각각의 보간 필터에 대한 에러값들을 계산한다. 일 예에서, 모션 보상 유닛 (35) 은, 예를 들어, 단지 기준 프레임보다는 복수의 이력 프레임들에 대한 누산 보간 에러 결과들에 보간 필터 선택들을 기초로 하기 위해, 현재 프레임의 비용 매트릭스에 이전의 프레임에 대한 비용 매트릭스의 프렉셔널 값을 추가적으로 부가할 수도 있다. 비용 매트릭스를 계산한 이후, 모션 보상 유닛 (35) 은, 이전 프레임에 대한 보간 필터들에 의해 계산된 바와 같은 서브-픽셀들에 대응하는 값들을 부가함으로써, 이력 프레임(들)에 대한 에러값을 계산할 수도 있다 (114). 즉, 모션 보상 유닛 (35) 은 각각의 C[f][i] 를 누산할 수도 있으며, 여기서, i는 서브-픽셀 위치에 대응하고, f는 I 내의 각각의 i에 대해 i의 값을 계산하는데 사용되는 보간 필터에 대응한다. 일 예에서, 이러한 값은 SAD에 대응한다.
그 후, 모션 보상 유닛 (35) 은, SAD 값을 최대로 감소시키는, 위치 i 및 i에 대한 보간 필터 f를 결정할 수도 있다 (116). 예를 들어, 모션 보상 유닛 (35) 은, 기준 프레임의 서브-픽셀들을 계산하는데 사용되지 않았던 서브-픽셀 및 보간 필터 조합에 대한 비용 매트릭스 내의 각각의 값에 걸쳐 반복할 수도 있으며, 기준 프레임에 대해 사용되었던 서브-픽셀 및 보간 필터 조합에 대한 대응하는 값에 이들 값들을 비교할 수도 있다. 미사용 서브-픽셀 위치 및 보간 필터 조합과 대응하는 서브-픽셀 및 사용된 보간 필터 사이의 최대 차이가 이러한 조합이다. 이러한 차이가 최소 임계값보다 클 경우 (118의 "예" 브랜치), 모션 보상 유닛 (35) 은 서브-픽셀 위치에 대한 사용된 보간 필터를 판정 벡터의 그 위치에서 새롭게 결정된 보간 필터로 대체하고 (120), 이러한 새로운 조합을 사용하여 에러 (예를 들어, SAD) 를 재계산한다 (122). 모션 보상 유닛 (35) 은, 최대수의 반복들에 도달할 때까지 (124의 "예" 브랜치) 또는 상술된 차이가 미리 결정된 임계값보다 작을 때까지 (118의 "아니오" 브랜치), 이러한 프로세스를 반복할 수도 있다. 그 후, 모션 보상 유닛 (35) 은 업데이트된 판정 벡터를 출력한다 (126). 그 후, 업데이트된 판정 벡터는 코딩될 현재 유닛에 대한 보간 필터들의 세트를 선택하도록 사용될 수 있다.
다음의 의사코드는 본 발명의 DC 오프셋 기술들을 구현하기 위한 예들을 제공한다. 의사코드에서, "blockDC1" 은, "list" 에 의해 식별된 기준 프레임에 기초하여, "input" 에 의해 식별된 16×16 픽셀 블록에 대한 DC 오프셋 값 DCmin 및 DCmax 를 계산하기 위한 절차이다. "noSamples" 는, DCmin 및 DCmax 를 계산하는데 이용가능한 절차에 대해 샘플들의 수를 정의하는 정수값이다. "list" 는 기준 프레임을 식별하는 정수값이다 (ITU H.264 용어에 따르면 "list" 로서 지칭됨). 일반적으로, BlockDC1 및 BlockDC2 는, 기준 프레임의 광도와 인코딩될 프레임 (또는 현재 프레임) 의 광도 사이의 차이들을 추정하는 함수들이다. 추정된 오프셋은 기준 프레임에 적용될 수 있고, 모션 보상된 예측을 개선시키는데 사용될 수 있다.
일 접근법은, 기준 프레임의 평균 광도를 고려하고 그것을 현재 프레임의 평균 광도와 비교하는 것이다. 이러한 솔루션은, 평균 광도가 로컬 변경들을 나타내지 않는다는 단점을 갖는다. 일단 모션이 보상되면 거의 동일한 매크로블록들을 초래하는 매우 상이한 평균 광도를 갖는 2개의 프레임들의 경우를 갖는 것이 가능하다. 이것은, 예를 들어, 밝은 오브젝트가 차단되지 않는 경우이다. 제 2 가능성은, 모션 보상된 블록들 사이의 DC 차이를 추정하기 위해 모션 벡터들을 사용한다. 이러한 방법은 정확하지만, 모션 벡터들이 이용가능해야 한다는 단점을 가질 수도 있으며, 이것은, 현재 프레임이 다수회 (모션 벡터들을 추정하기 위해 적어도 1회 및 DC 오프셋들을 예측치에 적용하기 위해 1회, 새롭게 계산된 오프셋들을 고려하기 위해 재계산될 필요가 있는 모션 정보에 영향을 주는 것으로 알려진 동작) 인코딩되어야 한다는 것을 암시한다.
블록-기반 DC 차이의 계산은, 모션 벡터들을 사용하지 않으면서 상술된 것과 같은 문제점들을 극복할 수도 있다. 블록-기반 DC 차이의 계산은, 특정한 사이즈 (예를 들어, 16×16 픽셀들) 의 나란히 놓여진 블록들 사이의 DC 차이에 대한 통계의 집합에 기초할 수도 있다. 그 통계는 히스토그램의 형태로 수집될 수도 있다. 상기 제공된 의사코드에서, BlockDC1 및 BlockDC2 는, 오프셋 값들의 범위를 정의하기 위해 DCmin 및 DCmax 의 값들을 셋팅하기 위한 기술들을 나타낸다. 기준 프레임 및 현재 프레임 내의 블록들이 비교되며, 픽셀들의 각각의 블록에 대해 2개의 양들이 계산된다.
1) 픽셀 차이의 제곱된 에러 (함수 BlockDC1 또는 BlockDC2 내의 err0);
2) 블록의 평균 DC가 각각의 픽셀의 값으로 감산된 이후의 픽셀 차이들의 제곱된 에러 (함수 BlockDC1 또는 BlockDC2 내의 err1).
블록들이 충분히 유사한지 (즉, 나란히 놓여진 블록들 사이의 차이가 DC 차이에 의해 주로 야기되는지) 의 추정은 상기 양들 1) 및 2) 의 비교에 기초할 수도 있다. 예를 들어, 1) 의 에러 (err0) 가 2) 의 에러 (err1) 보다 2배 더 크면, 블록들이 충분히 유사하지 않고, 차이가 DC 차이에 의해 주로 야기되지 않는다고 결정될 수도 있다. 공통-위치된 블록들이 충분히 유사하면, 통계는 블록-기반 DC 차이들의 히스토그램을 포함하는 벡터로 누산될 수도 있다. 몇몇 경우들에서, DC 차이들은 그들을 정수값들로 라운딩함으로써 양자화될 수 있다.
히스토그램 빈들을 조사함으로써, DC 차이들의 범위를 유도하고 DCmin 및 DCmax 를 계산하는 것이 가능하다. BlockDC1 은, noSamples 를 초과하는 샘플들을 포함하는 최좌측 및 최우측 히스토그램 빈들에 대응하는 DC를 결정함으로써 DCmin 및 DCmax 값들을 계산한다. BlockDC2 는, noSamples 를 초과하는 샘플들을 갖는 포지티브 및 네거티브 DC 값들에 대응하는 빈들의 수를 카운팅함으로써 DCmin 및 DCmax 값들을 계산한다. BlockDC2 의 변형으로서 또 다른 접근법은, noSamples 를 초과하는 샘플들을 갖는 네거티브 및 포지티브 DC 값들에 대응하는 빈들의 수를 카운팅할 수 있지만, 테스트가 실패하는 제 1 시간에서 카운팅을 중지할 수 있다. 아래의 의사코드에서, SetSubpelOffset1 및 SetSubpelOffset2 는, 함수들 BlockDC1 및 BlockDC2 중 대응하는 하나의 실행 동안 수행된 계산에 따라 프레임의 서브-정수 픽셀들의 오프셋 값들 (예를 들어, DCmin, DCmax, 및/또는 DCmin 과 DCmax 사이의 값들) 을 셋팅하는 함수이다.
아래의 의사코드에 의해 나타낸 "BlockDC1" 은 "input" 에 의해 식별된 16×16 픽셀 블록에 대한 DCmin 및 DCmax 의 값들을 셋팅하기 위한 절차의 일 예이다.
Figure pct00014
Figure pct00015
Figure pct00016
"SetSubpelOffset1" 은, DCmin 과 DCmax 사이의 범위에서 "SubpelOffset[16]" 에 의해 식별된 블록의 DC 오프셋 값들을 셋팅하기 위한 절차이다. "List" 는 기준 프레임을 식별하는 정수값이다. "ImgOffset" 는 제로보다 큰 인덱스를 갖는 기준 프레임에 관해 사용된 프레임 오프셋들을 식별한다. 이러한 예에서, setSubpelOffset1 은, 아래에 제공된 blockDC1 의 절차를 호출할 수도 있는 blockDC 를 호출한다.
Figure pct00017
Figure pct00018
Figure pct00019
Figure pct00020
아래의 의사코드에 의해 예시된 "BlockDC2" 절차는, "input" 에 의해 식별된 16×16 픽셀 블록에 대한 DCmin 및 DCmax 의 값들을 셋팅하기 위한 또 다른 절차의 일 예이다. DCmin 및 DCmax 는 BlockDC2 에 의해 계산된 값들에 대한 포인터들이며, 또 다른 절차는 DCmin 과 DCmax 사이의 블록의 DC 값들을 셋팅하기 위한 일 범위로서 사용될 수도 있다. "NoSamples" 는, DC 오프셋 값들을 계산하는데 이용가능한 절차에 대한 샘플들의 수를 정의하는 정수값이다.
Figure pct00021
Figure pct00022
Figure pct00023
Figure pct00024
"SetSubpelOffset2" 는, DCmin 과 DCmax 사이의 범위에서 "input" 에 의해 식별된 블록에 대해 서브-정수 픽셀 위치들에 대한 오프셋 값들을 셋팅하는 절차이다. 이러한 예에서, setSubpelOffset1 은, 아래에 제공된 blockDC1 또는 blockDC2 중 어느 하나의 절차를 호출할 수도 있는 blockDC 를 호출한다.
Figure pct00025
Figure pct00026
Figure pct00027
Figure pct00028
Figure pct00029
본 발명의 기술들은, 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (즉, 칩셋) 를 포함하는 광범위하게 다양한 디바이스들 또는 장치들에서 실현될 수도 있다. 임의의 컴포넌트들, 모듈들 또는 회로들은 기능적인 양태들을 강조하기 위해 설명되고 제공되었으며, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다.
본 발명에서 설명된 기술들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 적어도 부분적으로 구현될 수도 있다. 예를 들어, 설명된 기술들의 다양한 양태들은, 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그래밍가능한 게이트 어레이 (FPGA), 또는 다른 동등한 집적 또는 이산 로직 회로 뿐만 아니라 그러한 컴포넌트들의 임의의 조합들을 포함하는 하나 이상의 프로세서들 내에서 구현될 수도 있다. 일반적으로, "프로세서" 또는 "프로세싱 회로" 라는 용어는 임의의 전술한 로직 회로, 단독 또는 다른 로직 회로와의 조합, 또는 임의의 다른 동등한 회로를 지칭할 수도 있다.
그러한 하드웨어, 소프트웨어, 및 펌웨어는, 본 발명에서 설명된 다양한 동작들 및 기능들을 지원하기 위해, 동일한 디바이스 내에서 또는 별도의 디바이스들 내에서 구현될 수도 있다. 또한, 임의의 설명된 유닛들, 모듈들 또는 컴포넌트들은 함께 또는 별개이지만 상호동작가능한 로직 디바이스들로서 별개로 구현될 수도 있다. 모듈들 또는 유닛들로서의 상이한 특성들의 설명은 상이한 기능적 양태들을 강조하도록 의도되며, 그러한 모듈들 또는 유닛들이 반드시 별도의 하드웨어 또는 소프트웨어 컴포넌트들에 의해 실현되어야 한다는 것을 암시하지는 않는다. 대신, 하나 이상의 모듈들 또는 유닛들과 관련된 기능은 별개의 하드웨어 또는 소프트웨어 컴포넌트들에 의해 수행될 수도 있거나, 공통 또는 별개의 하드웨어 또는 소프트웨어 컴포넌트들 내에 통합될 수도 있다.
또한, 여기에 설명된 기술들은 명령들을 포함하는 컴퓨터-판독가능 저장 매체와 같은 컴퓨터-판독가능 매체에서 구현되거나 인코딩될 수도 있다. 컴퓨터-판독가능 매체에서 구현되거나 인코딩되는 명령들은 프로그래밍가능한 프로세서 또는 다른 프로세서로 하여금, 예를 들어, 명령들이 실행될 경우 방법을 수행하게 할 수도 있다. 컴퓨터 판독가능 저장 매체는 랜덤 액세스 메모리 (RAM), 판독 전용 메모리 (ROM), 프로그래밍가능한 판독 전용 메모리 (PROM), 소거가능한 프로그래밍가능 판독 전용 메모리 (EPROM), 전기적으로 소거가능한 프로그래밍가능 판독 전용 메모리 (EEPROM), 플래시 메모리, 하드 디스크, CD-ROM, 플로피 디스크, 카세트, 자성 매체, 광학 매체, 또는 다른 컴퓨터 판독가능 매체를 포함할 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음의 청구항의 범위 내에 존재한다.

Claims (42)

  1. 현재 비디오 유닛에 대한 모션 추정을 수행하기 전에, 선택된 보간 필터들을 사용하여 기준 비디오 유닛의 서브-정수 (sub-integer) 픽셀들을 보간하는 단계;
    상기 현재 비디오 유닛에 대한 모션 추정을 수행하기 전에, 상기 기준 비디오 유닛의 서브-정수 픽셀들 중 적어도 일부에 오프셋들을 적용하는 단계; 및
    상기 기준 비디오 유닛에 기초하여, 모션 추정을 사용하여 상기 현재 비디오 유닛의 블록을 인코딩하는 단계를 포함하는, 비디오 인코딩 방법.
  2. 제 1 항에 있어서,
    상기 블록을 인코딩하는 단계는, 상기 인코딩이 단일 패스 (pass) 에서 수행되도록 상기 블록에 대한 모션 추정을 1회만 수행하는 단계를 포함하는, 비디오 인코딩 방법.
  3. 제 1 항에 있어서,
    하나 이상의 이전에 인코딩된 비디오 유닛들에 대한 이력 보간 결과들에 기초하여 보간 필터들의 세트를 선택하는 단계를 더 포함하는, 비디오 인코딩 방법.
  4. 제 3 항에 있어서,
    상기 보간 필터들을 선택하는 단계는,
    이전에 인코딩된 비디오 유닛을 인코딩하는데 사용되는 보간 필터들의 제 1 세트에 대한 제 1 보간 에러값을 결정하는 단계;
    보간 필터들의 제 2 세트에 대한 제 2 보간 에러값을 결정하는 단계;
    상기 제 1 에러값과 상기 제 2 에러값을 비교하는 단계; 및
    상기 비교에 기초하여 상기 보간 필터들을 선택하는 단계를 포함하는, 비디오 인코딩 방법.
  5. 제 3 항에 있어서,
    상기 보간 필터들을 선택하는 단계는,
    복수의 이전에 인코딩된 비디오 유닛들을 인코딩하는데 사용되는 상이한 보간 필터들에 대한 보간 에러값들을 누산하는 단계; 및
    상기 누산된 보간 에러값들에 기초하여 상기 보간 필터들을 선택하는 단계를 포함하는, 비디오 인코딩 방법.
  6. 제 3 항에 있어서,
    상기 보간 필터들은 각각의 서브-정수 픽셀들에 대응하고, 상기 보간 필터들은 상기 서브-정수 픽셀들 중 적어도 일부에 대한 상이한 보간 필터들을 포함하는, 비디오 인코딩 방법.
  7. 제 3 항에 있어서,
    상기 인코딩된 블록에 대한 오프셋들 및 상기 선택된 보간 필터들을 나타내는 신택스 엘리먼트들을 인코딩하는 단계를 더 포함하는, 비디오 인코딩 방법.
  8. 제 1 항에 있어서,
    상기 비디오 블록을 인코딩하는 단계는,
    상기 현재 비디오 유닛 내의 블록에 대한 상기 기준 비디오 유닛 내의 예측 블록을 식별하기 위해 모션 추정을 수행하는 단계;
    상기 기준 비디오 유닛 내의 예측 블록을 식별하는 모션 벡터를 결정하는 단계; 및
    상기 현재 비디오 유닛 내의 블록과 상기 기준 비디오 유닛 내의 예측 블록 사이의 잔류 에러를 결정하는 단계를 포함하는, 비디오 인코딩 방법.
  9. 제 8 항에 있어서,
    상기 모션 추정을 수행하는 단계는,
    오프셋이 적용된 서브-정수 픽셀과 관련된 블록의 평가를 스킵하는 것을 특정하는 모션 탐색 알고리즘을 실행하는 단계; 및
    상기 오프셋이 적용된 서브-정수 픽셀과 관련된 블록의 평가를 강제하는 단계를 포함하는, 비디오 인코딩 방법.
  10. 제 1 항에 있어서,
    상기 비디오 유닛들 각각은 비디오 프레임 또는 비디오 슬라이스 중 하나를 포함하는, 비디오 인코딩 방법.
  11. 현재 비디오 유닛에 대한 모션 추정을 수행하기 전에, 선택된 보간 필터들을 사용하여 기준 비디오 유닛의 서브-정수 픽셀들을 보간하고;
    상기 현재 비디오 유닛에 대한 모션 추정을 수행하기 전에, 상기 기준 비디오 유닛의 서브-정수 픽셀들 중 적어도 일부에 오프셋들을 적용하며; 그리고,
    상기 기준 비디오 유닛에 기초하여, 모션 추정을 사용하여 상기 현재 비디오 유닛의 블록을 인코딩하도록
    구성된 비디오 인코더를 포함하는, 비디오 인코딩 장치.
  12. 제 11 항에 있어서,
    상기 비디오 인코더는, 상기 인코딩이 단일 패스에서 수행되도록 상기 블록에 대한 모션 추정을 1회만 수행하도록 구성되는, 비디오 인코딩 장치.
  13. 제 11 항에 있어서,
    상기 비디오 인코더는, 하나 이상의 이전에 인코딩된 비디오 유닛들에 대한 이력 보간 결과들에 기초하여 보간 필터들의 세트를 선택하도록 구성되는, 비디오 인코딩 장치.
  14. 제 13 항에 있어서,
    상기 비디오 인코더는,
    이전에 인코딩된 비디오 유닛을 인코딩하는데 사용되는 보간 필터들의 제 1 세트에 대한 제 1 보간 에러값을 결정하고;
    보간 필터들의 제 2 세트에 대한 제 2 보간 에러값을 결정하고;
    상기 제 1 에러값과 상기 제 2 에러값을 비교하며; 그리고,
    상기 비교에 기초하여 상기 보간 필터들을 선택하도록 구성되는, 비디오 인코딩 장치.
  15. 제 13 항에 있어서,
    상기 비디오 인코더는,
    복수의 이전에 인코딩된 비디오 유닛들을 인코딩하는데 사용되는 상이한 보간 필터들에 대한 보간 에러값들을 누산하며; 그리고,
    상기 누산된 보간 에러값들에 기초하여 상기 보간 필터들을 선택하도록 구성되는, 비디오 인코딩 장치.
  16. 제 13 항에 있어서,
    상기 보간 필터들은 각각의 서브-정수 픽셀들에 대응하고, 상기 보간 필터들은 상기 서브-정수 픽셀들 중 적어도 일부에 대한 상이한 보간 필터들을 포함하는, 비디오 인코딩 장치.
  17. 제 13 항에 있어서,
    상기 비디오 인코더는, 상기 인코딩된 블록에 대한 오프셋들 및 상기 선택된 보간 필터들을 나타내는 신택스 엘리먼트들을 인코딩하도록 구성되는, 비디오 인코딩 장치.
  18. 제 11 항에 있어서,
    상기 비디오 인코더는,
    상기 현재 비디오 유닛 내의 블록에 대한 상기 기준 비디오 유닛 내의 예측 블록을 식별하기 위해 모션 추정을 수행하고;
    상기 기준 비디오 유닛 내의 예측 블록을 식별하는 모션 벡터를 결정하며; 그리고,
    상기 현재 비디오 유닛 내의 블록과 상기 기준 비디오 유닛 내의 예측 블록 사이의 잔류 에러를 결정하도록 구성되는, 비디오 인코딩 장치.
  19. 제 18 항에 있어서,
    상기 비디오 인코더는,
    오프셋이 적용된 서브-정수 픽셀과 관련된 블록의 평가를 스킵하는 것을 특정하는 모션 탐색 알고리즘을 실행하며; 그리고,
    상기 오프셋이 적용된 서브-정수 픽셀과 관련된 블록의 평가를 강제하도록 구성되는, 비디오 인코딩 장치.
  20. 제 11 항에 있어서,
    상기 비디오 유닛들 각각은 비디오 프레임 또는 비디오 슬라이스 중 하나를 포함하는, 비디오 인코딩 장치.
  21. 제 11 항에 있어서,
    상기 비디오 인코더는 무선 통신 디바이스의 일부를 형성하는, 비디오 인코딩 장치.
  22. 제 11 항에 있어서,
    상기 비디오 인코더는 집적 회로 디바이스를 포함하는, 비디오 인코딩 장치.
  23. 현재 비디오 유닛에 대한 모션 추정을 수행하기 전에, 선택된 보간 필터들을 사용하여 기준 비디오 유닛의 서브-정수 픽셀들을 보간하는 수단;
    상기 현재 비디오 유닛에 대한 모션 추정을 수행하기 전에, 상기 기준 비디오 유닛의 서브-정수 픽셀들 중 적어도 일부에 오프셋들을 적용하는 수단; 및
    상기 기준 비디오 유닛에 기초하여, 모션 추정을 사용하여 상기 현재 비디오 유닛의 블록을 인코딩하는 수단을 포함하는, 비디오 인코딩 장치.
  24. 제 23 항에 있어서,
    상기 블록을 인코딩하는 수단은, 상기 인코딩이 단일 패스에서 수행되도록 상기 블록에 대한 모션 추정을 1회만 수행하는 수단을 포함하는, 비디오 인코딩 장치.
  25. 제 23 항에 있어서,
    하나 이상의 이전에 인코딩된 비디오 유닛들에 대한 이력 보간 결과들에 기초하여 보간 필터들의 세트를 선택하는 수단을 더 포함하는, 비디오 인코딩 장치.
  26. 제 25 항에 있어서,
    상기 보간 필터들을 선택하는 수단은,
    이전에 인코딩된 비디오 유닛을 인코딩하는데 사용되는 보간 필터들의 제 1 세트에 대한 제 1 보간 에러값을 결정하는 수단;
    보간 필터들의 제 2 세트에 대한 제 2 보간 에러값을 결정하는 수단;
    상기 제 1 에러값과 상기 제 2 에러값을 비교하는 수단; 및
    상기 비교에 기초하여 상기 보간 필터들을 선택하는 수단을 포함하는, 비디오 인코딩 장치.
  27. 제 25 항에 있어서,
    상기 보간 필터들을 선택하는 수단은,
    복수의 이전에 인코딩된 비디오 유닛들을 인코딩하는데 사용되는 상이한 보간 필터들에 대한 보간 에러값들을 누산하는 수단; 및
    상기 누산된 보간 에러값들에 기초하여 상기 보간 필터들을 선택하는 수단을 포함하는, 비디오 인코딩 장치.
  28. 제 25 항에 있어서,
    상기 보간 필터들은 각각의 서브-정수 픽셀들에 대응하고, 상기 보간 필터들은 상기 서브-정수 픽셀들 중 적어도 일부에 대한 상이한 보간 필터들을 포함하는, 비디오 인코딩 장치.
  29. 제 25 항에 있어서,
    상기 인코딩된 블록에 대한 오프셋들 및 상기 선택된 보간 필터들을 나타내는 신택스 엘리먼트들을 인코딩하는 수단을 더 포함하는, 비디오 인코딩 장치.
  30. 제 23 항에 있어서,
    상기 비디오 블록을 인코딩하는 수단은,
    상기 현재 비디오 유닛 내의 블록에 대한 상기 기준 비디오 유닛 내의 예측 블록을 식별하기 위해 모션 추정을 수행하는 수단;
    상기 기준 비디오 유닛 내의 예측 블록을 식별하는 모션 벡터를 결정하는 수단; 및
    상기 현재 비디오 유닛 내의 블록과 상기 기준 비디오 유닛 내의 예측 블록 사이의 잔류 에러를 결정하는 수단을 포함하는, 비디오 인코딩 장치.
  31. 제 30 항에 있어서,
    상기 모션 추정을 수행하는 수단은,
    오프셋이 적용된 서브-정수 픽셀과 관련된 블록의 평가를 스킵하는 것을 특정하는 모션 탐색 알고리즘을 실행하는 수단; 및
    상기 오프셋이 적용된 서브-정수 픽셀과 관련된 블록의 평가를 강제하는 수단을 포함하는, 비디오 인코딩 장치.
  32. 제 23 항에 있어서,
    상기 비디오 유닛들 각각은 비디오 프레임 또는 비디오 슬라이스 중 하나를 포함하는, 비디오 인코딩 장치.
  33. 프로세서로 하여금,
    현재 비디오 유닛에 대한 모션 추정을 수행하기 전에, 선택된 보간 필터들을 사용하여 기준 비디오 유닛의 서브-정수 픽셀들을 보간하게 하고;
    상기 현재 비디오 유닛에 대한 모션 추정을 수행하기 전에, 상기 기준 비디오 유닛의 서브-정수 픽셀들 중 적어도 일부에 오프셋들을 적용하게 하며; 그리고,
    상기 기준 비디오 유닛에 기초하여, 모션 추정을 사용하여 상기 현재 비디오 유닛의 블록을 인코딩하게 하기 위한
    명령들로 인코딩된, 컴퓨터-판독가능 저장 매체.
  34. 제 33 항에 있어서,
    상기 블록을 인코딩하는 것은, 상기 인코딩이 단일 패스에서 수행되도록 상기 블록에 대한 모션 추정을 1회만 수행하는 것을 포함하는, 컴퓨터-판독가능 저장 매체.
  35. 제 33 항에 있어서,
    상기 프로세서로 하여금, 하나 이상의 이전에 인코딩된 비디오 유닛들에 대한 이력 보간 결과들에 기초하여 보간 필터들의 세트를 선택하게 하기 위한 명령들을 더 포함하는, 컴퓨터-판독가능 저장 매체.
  36. 제 35 항에 있어서,
    상기 프로세서로 하여금,
    이전에 인코딩된 비디오 유닛을 인코딩하는데 사용되는 보간 필터들의 제 1 세트에 대한 제 1 보간 에러값을 결정하게 하고;
    보간 필터들의 제 2 세트에 대한 제 2 보간 에러값을 결정하게 하고;
    상기 제 1 에러값과 상기 제 2 에러값을 비교하게 하며; 그리고,
    상기 비교에 기초하여 상기 보간 필터들을 선택하게 하기 위한
    명령들을 더 포함하는, 컴퓨터-판독가능 저장 매체.
  37. 제 35 항에 있어서,
    상기 프로세서로 하여금,
    복수의 이전에 인코딩된 비디오 유닛들을 인코딩하는데 사용되는 상이한 보간 필터들에 대한 보간 에러값들을 누산하게 하며; 그리고,
    상기 누산된 보간 에러값들에 기초하여 상기 보간 필터들을 선택하게 하기 위한
    명령들을 더 포함하는, 컴퓨터-판독가능 저장 매체.
  38. 제 35 항에 있어서,
    상기 보간 필터들은 각각의 서브-정수 픽셀들에 대응하고, 상기 보간 필터들은 상기 서브-정수 픽셀들 중 적어도 일부에 대한 상이한 보간 필터들을 포함하는, 컴퓨터-판독가능 저장 매체.
  39. 제 35 항에 있어서,
    상기 프로세서로 하여금, 상기 인코딩된 블록에 대한 오프셋들 및 상기 선택된 보간 필터들을 나타내는 신택스 엘리먼트들을 인코딩하게 하기 위한 명령들을 더 포함하는, 컴퓨터-판독가능 저장 매체.
  40. 제 35 항에 있어서,
    상기 프로세서로 하여금,
    상기 현재 비디오 유닛 내의 블록에 대한 상기 기준 비디오 유닛 내의 예측 블록을 식별하기 위해 모션 추정을 수행하게 하고;
    상기 기준 비디오 유닛 내의 예측 블록을 식별하는 모션 벡터를 결정하게 하며; 그리고,
    상기 현재 비디오 유닛 내의 블록과 상기 기준 비디오 유닛 내의 예측 블록 사이의 잔류 에러를 결정하게 하기 위한
    명령들을 더 포함하는, 컴퓨터-판독가능 저장 매체.
  41. 제 40 항에 있어서,
    상기 프로세서로 하여금,
    오프셋이 적용된 서브-정수 픽셀과 관련된 블록의 평가를 스킵하는 것을 특정하는 모션 탐색 알고리즘을 실행하게 하며; 그리고,
    상기 오프셋이 적용된 서브-정수 픽셀과 관련된 블록의 평가를 강제하게 하기 위한
    명령들을 더 포함하는, 컴퓨터-판독가능 저장 매체.
  42. 제 33 항에 있어서,
    상기 비디오 유닛들 각각은 비디오 프레임 또는 비디오 슬라이스 중 하나를 포함하는, 컴퓨터-판독가능 저장 매체.
KR1020117010119A 2008-10-03 2009-05-08 보간 필터들 및 오프셋들을 이용한 디지털 비디오 코딩 KR101437719B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US10278908P 2008-10-03 2008-10-03
US61/102,789 2008-10-03
US12/432,544 2009-04-29
US12/432,544 US9078007B2 (en) 2008-10-03 2009-04-29 Digital video coding with interpolation filters and offsets
PCT/US2009/043391 WO2010039288A1 (en) 2008-10-03 2009-05-08 Digital video coding with interpolation filters and offsets

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020137009089A Division KR20130054423A (ko) 2008-10-03 2009-05-08 보간 필터들 및 오프셋들을 이용한 디지털 비디오 코딩

Publications (2)

Publication Number Publication Date
KR20110063857A true KR20110063857A (ko) 2011-06-14
KR101437719B1 KR101437719B1 (ko) 2014-09-03

Family

ID=41199822

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020117010119A KR101437719B1 (ko) 2008-10-03 2009-05-08 보간 필터들 및 오프셋들을 이용한 디지털 비디오 코딩
KR1020137009089A KR20130054423A (ko) 2008-10-03 2009-05-08 보간 필터들 및 오프셋들을 이용한 디지털 비디오 코딩

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020137009089A KR20130054423A (ko) 2008-10-03 2009-05-08 보간 필터들 및 오프셋들을 이용한 디지털 비디오 코딩

Country Status (8)

Country Link
US (1) US9078007B2 (ko)
EP (1) EP2345254A1 (ko)
JP (2) JP5547198B2 (ko)
KR (2) KR101437719B1 (ko)
CN (1) CN102172022B (ko)
BR (1) BRPI0920730A2 (ko)
TW (1) TW201016019A (ko)
WO (1) WO2010039288A1 (ko)

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010050089A1 (ja) * 2008-10-29 2010-05-06 パナソニック株式会社 動画像圧縮符号化における符号化処理方法及び符号化処理装置
JPWO2011078002A1 (ja) * 2009-12-22 2013-05-02 ソニー株式会社 画像処理装置および方法、並びにプログラム
WO2011086672A1 (ja) * 2010-01-13 2011-07-21 株式会社 東芝 動画像符号化装置および復号装置
WO2011126309A2 (ko) * 2010-04-06 2011-10-13 삼성전자 주식회사 비디오 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
US9219921B2 (en) * 2010-04-12 2015-12-22 Qualcomm Incorporated Mixed tap filters
US8638863B1 (en) 2010-05-18 2014-01-28 Google Inc. Apparatus and method for filtering video using extended edge-detection
US9154807B2 (en) * 2010-06-25 2015-10-06 Qualcomm Incorporated Inclusion of switched interpolation filter coefficients in a compressed bit-stream
BR112013000554A2 (pt) * 2010-07-09 2020-09-24 Samsung Electronics Co., Ltd. método para interpolar imagem, e aparelho para interpolar imagem
US20120063515A1 (en) * 2010-09-09 2012-03-15 Qualcomm Incorporated Efficient Coding of Video Parameters for Weighted Motion Compensated Prediction in Video Coding
GB2484071B (en) * 2010-09-23 2013-06-12 Imagination Tech Ltd De-interlacing of video data
US9055305B2 (en) * 2011-01-09 2015-06-09 Mediatek Inc. Apparatus and method of sample adaptive offset for video coding
ES2870332T3 (es) 2010-10-20 2021-10-26 Guangdong Oppo Mobile Telecommunications Corp Ltd Optimización de la distorsión de la tasa resistente a errores para la codificación de imágenes y video
US8968080B1 (en) * 2010-11-05 2015-03-03 Wms Gaming, Inc. Display of third party content on a wagering game machine
US10045046B2 (en) 2010-12-10 2018-08-07 Qualcomm Incorporated Adaptive support for interpolating values of sub-pixels for video coding
US8761245B2 (en) * 2010-12-21 2014-06-24 Intel Corporation Content adaptive motion compensation filtering for high efficiency video coding
US8842723B2 (en) * 2011-01-03 2014-09-23 Apple Inc. Video coding system using implied reference frames
RU2565363C2 (ru) 2011-01-07 2015-10-20 Нокиа Корпорейшн Предсказание движения при видеокодировании
US9161041B2 (en) * 2011-01-09 2015-10-13 Mediatek Inc. Apparatus and method of efficient sample adaptive offset
US9380319B2 (en) 2011-02-04 2016-06-28 Google Technology Holdings LLC Implicit transform unit representation
US9313519B2 (en) 2011-03-11 2016-04-12 Google Technology Holdings LLC Interpolation filter selection using prediction unit (PU) size
WO2012125450A1 (en) * 2011-03-11 2012-09-20 General Instrument Corporation Interpolation filter selection using prediction index
US8767817B1 (en) * 2011-04-07 2014-07-01 Google Inc. Apparatus and method for coding using parameterized equation
US9143799B2 (en) * 2011-05-27 2015-09-22 Cisco Technology, Inc. Method, apparatus and computer program product for image motion prediction
US9686543B2 (en) * 2011-06-15 2017-06-20 Electronics And Telecommunications Research Institute Method for coding and decoding scalable video and apparatus using same
US9264725B2 (en) 2011-06-24 2016-02-16 Google Inc. Selection of phase offsets for interpolation filters for motion compensation
MX337235B (es) 2011-06-28 2016-02-18 Samsung Electronics Co Ltd Metodo de codificacion de video que utiliza ajustes de desplazamiento de conformidad con clasificacion de pixel y aparato para ello, metodo de decodificacion de video y aparato para ello.
JP5727673B2 (ja) * 2011-07-01 2015-06-03 モトローラ モビリティ エルエルシーMotorola Mobility Llc 時間予測のためのジョイントサブピクセル補間フィルタ
US9055304B2 (en) * 2011-07-01 2015-06-09 Qualcomm Incorporated Reduced resolution pixel interpolation
BR112014012038A2 (pt) * 2011-11-18 2017-05-30 Motorola Mobility Llc armazenamento eficiente de informação de movimento para codificação de vídeo de alta eficiência
US9392235B2 (en) 2011-11-18 2016-07-12 Google Technology Holdings LLC Explicit way for signaling a collocated reference picture for video coding
CN103959791B (zh) 2011-11-18 2017-07-04 谷歌技术控股有限责任公司 针对高效率视频代码化(hevc)用信号发送并置图片的显式方式
US9467694B2 (en) 2011-11-21 2016-10-11 Google Technology Holdings LLC Implicit determination and combined implicit and explicit determination of collocated picture for temporal prediction
US9386305B2 (en) 2011-11-28 2016-07-05 Qualcomm Incorporated Largest coding unit (LCU) or partition-based syntax for adaptive loop filter and sample adaptive offset in video coding
BR112014015790A2 (pt) 2011-12-26 2018-05-22 Motorola Mobility Llc determinação implícita de figura colocalizada para predição temporal
KR102647848B1 (ko) 2012-02-04 2024-03-15 엘지전자 주식회사 비디오 인코딩 방법, 비디오 디코딩 방법 및 이를 이용하는 장치
US20130243085A1 (en) * 2012-03-15 2013-09-19 Samsung Electronics Co., Ltd. Method of multi-view video coding and decoding based on local illumination and contrast compensation of reference frames without extra bitrate overhead
US9549177B2 (en) 2012-04-11 2017-01-17 Google Technology Holdings LLC Evaluation of signaling of collocated reference picture for temporal prediction
WO2013154673A1 (en) 2012-04-11 2013-10-17 Motorola Mobility Llc Signaling of temporal motion vector predictor (mvp) flag for temporal prediction
GB2501535A (en) 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
US9781447B1 (en) 2012-06-21 2017-10-03 Google Inc. Correlation based inter-plane prediction encoding and decoding
CN108055544B (zh) * 2012-07-16 2020-09-08 三星电子株式会社 Sao编码方法和设备以及sao解码方法和设备
US9319681B2 (en) 2012-07-18 2016-04-19 Google Technology Holdings LLC Signaling of temporal motion vector predictor (MVP) enable flag
TW201406166A (zh) * 2012-07-27 2014-02-01 Novatek Microelectronics Corp 視訊編碼方法與視訊編碼裝置
CN103581689A (zh) * 2012-08-07 2014-02-12 联咏科技股份有限公司 视频编码方法与视频编码装置
US9167268B1 (en) 2012-08-09 2015-10-20 Google Inc. Second-order orthogonal spatial intra prediction
US9344742B2 (en) 2012-08-10 2016-05-17 Google Inc. Transform-domain intra prediction
US9380298B1 (en) 2012-08-10 2016-06-28 Google Inc. Object-based intra-prediction
US9369732B2 (en) 2012-10-08 2016-06-14 Google Inc. Lossless intra-prediction video coding
US9628790B1 (en) 2013-01-03 2017-04-18 Google Inc. Adaptive composite intra prediction for image and video compression
US9219915B1 (en) 2013-01-17 2015-12-22 Google Inc. Selection of transform size in video coding
US9967559B1 (en) 2013-02-11 2018-05-08 Google Llc Motion vector dependent spatial transformation in video coding
US9544597B1 (en) 2013-02-11 2017-01-10 Google Inc. Hybrid transform in video encoding and decoding
US9648353B2 (en) * 2013-04-04 2017-05-09 Qualcomm Incorporated Multiple base layer reference pictures for SHVC
CN103237220B (zh) * 2013-04-29 2015-12-23 清华大学 视频编码中基于非均匀像素截断的运动估计方法
US9674530B1 (en) 2013-04-30 2017-06-06 Google Inc. Hybrid transforms in video coding
US9247251B1 (en) 2013-07-26 2016-01-26 Google Inc. Right-edge extension for quad-tree intra-prediction
KR20150045819A (ko) * 2013-10-21 2015-04-29 삼성전자주식회사 움직임 보상을 수행하는 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치
US9438925B2 (en) * 2013-12-31 2016-09-06 Vixs Systems, Inc. Video encoder with block merging and methods for use therewith
US9749642B2 (en) * 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US10412387B2 (en) * 2014-08-22 2019-09-10 Qualcomm Incorporated Unified intra-block copy and inter-prediction
US9565451B1 (en) 2014-10-31 2017-02-07 Google Inc. Prediction dependent transform coding
EP3023938A1 (en) 2014-11-21 2016-05-25 Thomson Licensing Method and apparatus for tracking the motion of image content in a video frames sequence using sub-pixel resolution motion estimation
US9769499B2 (en) 2015-08-11 2017-09-19 Google Inc. Super-transform video coding
US10277905B2 (en) 2015-09-14 2019-04-30 Google Llc Transform selection for non-baseband signal coding
RU2696311C1 (ru) 2015-09-25 2019-08-01 Хуавэй Текнолоджиз Ко., Лтд. Устройство и способ для компенсации движения видео с выбираемым интерполяционным фильтром
RU2696316C1 (ru) 2015-09-25 2019-08-01 Хуавэй Текнолоджиз Ко., Лтд. Адаптивный фильтр увеличения резкости для кодирования с предсказанием
AU2015409726B2 (en) 2015-09-25 2019-12-19 Huawei Technologies Co., Ltd. Apparatus and method for video motion compensation
WO2017052406A1 (en) 2015-09-25 2017-03-30 Huawei Technologies Co., Ltd. Apparatus and method for video motion compensation
MX2018003688A (es) * 2015-09-25 2018-08-01 Huawei Tech Co Ltd Aparato y metodo para compensacion de movimiento de video.
US9807423B1 (en) 2015-11-24 2017-10-31 Google Inc. Hybrid transform scheme for video coding
US10009622B1 (en) 2015-12-15 2018-06-26 Google Llc Video coding with degradation of residuals
JP7094076B2 (ja) * 2016-08-19 2022-07-01 沖電気工業株式会社 映像符号化装置、プログラム及び方法、並びに、映像復号装置、プログラム及び方法、並びに、映像伝送システム
US10341659B2 (en) * 2016-10-05 2019-07-02 Qualcomm Incorporated Systems and methods of switching interpolation filters
US20180199057A1 (en) * 2017-01-12 2018-07-12 Mediatek Inc. Method and Apparatus of Candidate Skipping for Predictor Refinement in Video Coding
US10499078B1 (en) * 2017-02-07 2019-12-03 Google Llc Implicit motion compensation filter selection
TWI648708B (zh) * 2017-09-06 2019-01-21 奇景光電股份有限公司 像素內插電路與像素內插方法
CN111147850B (zh) * 2018-11-02 2022-10-11 北京字节跳动网络技术有限公司 用于基于历史的运动矢量预测的表维护
CN113728633B (zh) 2019-04-01 2022-12-20 北京字节跳动网络技术有限公司 对基于历史的运动矢量预测使用插值滤波器
US11122297B2 (en) 2019-05-03 2021-09-14 Google Llc Using border-aligned block functions for image compression
JP7359942B2 (ja) 2019-08-20 2023-10-11 北京字節跳動網絡技術有限公司 映像処理における代替の補間フィルタの選択的使用
CN114391255B (zh) * 2019-09-11 2024-05-17 夏普株式会社 用于基于交叉分量相关性来减小视频编码中的重构误差的系统和方法
EP4128755A4 (en) * 2020-04-29 2023-09-06 Huawei Technologies Co., Ltd. METHOD AND DEVICE FOR INTERPOLATION FILTERING UNDERSAMPLING
WO2024037645A1 (en) * 2022-08-19 2024-02-22 Mediatek Inc. Boundary sample derivation in video coding

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001076154A2 (en) 2000-04-03 2001-10-11 Telefonaktiebolaget Lm Ericsson (Publ) Ad-hoc network and gateway
DE20102205U1 (de) 2001-02-07 2001-08-23 Latein Christine Multifunktionaler, transportabler Computer
US6847405B2 (en) * 2001-09-14 2005-01-25 Sony Corporation Motion-adaptive de-interlacing method and system for digital televisions
CN101448162B (zh) * 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US7620109B2 (en) * 2002-04-10 2009-11-17 Microsoft Corporation Sub-pixel interpolation in motion estimation and compensation
JP4102973B2 (ja) 2002-04-24 2008-06-18 日本電気株式会社 動画像の符号化方法および復号化方法、これを用いた装置とプログラム
US20040076333A1 (en) * 2002-10-22 2004-04-22 Huipin Zhang Adaptive interpolation filter system for motion compensated predictive video coding
US7599438B2 (en) * 2003-09-07 2009-10-06 Microsoft Corporation Motion vector block pattern coding and decoding
JP2005318297A (ja) * 2004-04-28 2005-11-10 Toshiba Corp 動画像符号化・復号方法及び装置
EP1617672A1 (en) * 2004-07-13 2006-01-18 Matsushita Electric Industrial Co., Ltd. Motion estimator/compensator including a 16-bit 1/8 pel interpolation filter
EP1886502A2 (en) * 2005-04-13 2008-02-13 Universität Hannover Method and apparatus for enhanced video coding
US7460893B2 (en) 2005-05-17 2008-12-02 Nokia Corporation Display changing in a portable electronic device
US20080075165A1 (en) * 2006-09-26 2008-03-27 Nokia Corporation Adaptive interpolation filters for video coding
CN101632306B (zh) 2006-12-01 2014-03-19 法国电信公司 用于运动补偿预测视频编码和解码的自适应内插方法和系统
EP2127391A2 (en) * 2007-01-09 2009-12-02 Nokia Corporation Adaptive interpolation filters for video coding
US8059207B2 (en) 2007-02-23 2011-11-15 Samsung Electronics Co., Ltd. System and method for video noise reduction using an adaptive temporal method with motion detection and motion compensation
US8275041B2 (en) * 2007-04-09 2012-09-25 Nokia Corporation High accuracy motion vectors for video coding with low encoder and decoder complexity
FR2934901B1 (fr) 2008-08-05 2012-07-13 Commissariat Energie Atomique Procede de mesure sans contact de l'indice de refraction d'un materiau par tomographie par coherence optique, application a la mesure de la masse volumique d'un materiau poreux.
US8548041B2 (en) 2008-09-25 2013-10-01 Mediatek Inc. Adaptive filter

Also Published As

Publication number Publication date
WO2010039288A1 (en) 2010-04-08
CN102172022B (zh) 2016-08-17
EP2345254A1 (en) 2011-07-20
CN102172022A (zh) 2011-08-31
US9078007B2 (en) 2015-07-07
US20100111182A1 (en) 2010-05-06
JP2014042273A (ja) 2014-03-06
JP5547198B2 (ja) 2014-07-09
BRPI0920730A2 (pt) 2018-06-26
KR101437719B1 (ko) 2014-09-03
KR20130054423A (ko) 2013-05-24
TW201016019A (en) 2010-04-16
JP2012504904A (ja) 2012-02-23

Similar Documents

Publication Publication Date Title
KR101437719B1 (ko) 보간 필터들 및 오프셋들을 이용한 디지털 비디오 코딩
KR101313956B1 (ko) 스위칭된 보간 필터들에서의 오프셋 계산
US8804831B2 (en) Offsets at sub-pixel resolution
US8831087B2 (en) Efficient prediction mode selection
KR101632126B1 (ko) 비디오 코딩을 위한 템플릿 매칭
KR101208384B1 (ko) 비디오 코딩에서 모션 보상을 위한 어드밴스드 보간 기술
JP5678057B2 (ja) ビデオデータを符号化する方法および装置
KR20100130644A (ko) 비디오 코딩에서 모션 보상을 위한 어드밴스드 보간 기술
JP2013520875A (ja) ビデオコーディングのための適応動き解像度
WO2008149327A2 (en) Method and apparatus for motion-compensated video signal prediction

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
A107 Divisional application of patent
AMND Amendment
J201 Request for trial against refusal decision
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20130409

Effective date: 20140523

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee