KR20150020669A - 모션 보간을 위한 색차 고 정밀도 모션 필터링 - Google Patents

모션 보간을 위한 색차 고 정밀도 모션 필터링 Download PDF

Info

Publication number
KR20150020669A
KR20150020669A KR1020157000409A KR20157000409A KR20150020669A KR 20150020669 A KR20150020669 A KR 20150020669A KR 1020157000409 A KR1020157000409 A KR 1020157000409A KR 20157000409 A KR20157000409 A KR 20157000409A KR 20150020669 A KR20150020669 A KR 20150020669A
Authority
KR
South Korea
Prior art keywords
motion vector
chrominance
block
precision
fractional
Prior art date
Application number
KR1020157000409A
Other languages
English (en)
Inventor
라잔 엘 조쉬
페이송 천
마르타 카르체비츠
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20150020669A publication Critical patent/KR20150020669A/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/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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/513Processing of motion vectors
    • 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

Landscapes

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

Abstract

비디오 코딩 유닛이 비디오 데이터의 색차 블록들을 대응하는 휘도 블록들에 대한 모션 벡터들을 재사용하여 인코딩 또는 디코딩하도록 구성될 수도 있다. 색차 블록들이 대응하는 휘도 블록들에 대해 다운 샘플링되기 때문에, 모션 벡터가 휘도 블록들보다는 색차 블록들에 대해 더 큰 정밀도를 가질 수도 있다. 비디오 코딩 유닛은 모션 벡터에 의해 포인팅된 화소 위치의 포지션에 기초하여 보간 필터들을 선택함으로써 참조 색차 블록에 대한 값들을 보간할 수도 있다. 예를 들어, 휘도 모션 벡터는 1/4 화소 정밀도를 가질 수도 있고 색차 모션 벡터는 1/8 화소 정밀도를 가질 수도 있다. 1/4-화소 정밀도들과 연관되는 보간 필터들이 있을 수도 있다. 비디오 코딩 유닛은 모션 벡터에 의해 포인팅된 화소 위치에 대한 값을 보간하기 위해 화소 위치 또는 이웃하는 화소 위치들 중 어느 하나에 대응하는 보간 필터들을 사용할 수도 있다.

Description

모션 보간을 위한 색차 고 정밀도 모션 필터링{CHROMINANCE HIGH PRECISION MOTION FILTERING FOR MOTION INTERPOLATION}
이 출원은 2010년 2월 18일자로 출원된 미국 가출원 제61/305,891호를 우선권 주장하며, 본 명세서에 그것 전부가 참조로 통합된다.
이 개시는 비디오 코딩에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전들, 디지털 직접 브로드캐스트 시스템들, 무선 브로드캐스트 시스템들, 개인휴대 정보단말들 (PDA들), 랩톱 또는 데스크톱 컴퓨터들, 디지털 카메라들, 디지털 레코딩 디바이스들, 디지털 미디어 플레이어들, 비디오 게이밍 디바이스들, 비디오 게임 콘솔들, 셀룰러 또는 위성 라디오 전화기들, 비디오 원격회의 디바이스들 등을 포함하는 넓은 범위의 디바이스들에 통합될 수 있다. 디지털 비디오 기기들은 MPEG-2, MPEG-4, ITU-T H.263 또는 ITU-T H.264/MPEG-4, 파트 10, 고급 비디오 코딩 (AVC) 에 의해 규정된 표준들 및 이러한 표준들의 확장물들에 기재된 것들과 같은 비디오 압축 기법들을 구현하여, 디지털 비디오 정보를 더 효율적으로 전송하고 수신한다.
비디오 압축 기법들은 공간적 예측 및/또는 시간적 예측을 수행하여 비디오 시퀀스들에 내재하는 리던던시 (redundancy) 를 감소시키거나 제거한다. 블록 기반 비디오 코딩의 경우, 비디오 프레임 또는 슬라이스는 매크로블록들로 파티셔닝될 수 있다. 각각의 매크로블록은 더 파티셔닝될 수도 있다. 인트라 코딩된 (I) 프레임 또는 슬라이스 내의 매크로블록들은 이웃 매크로블록들에 관한 공간적 예측을 이용하여 인코딩된다. 인터 코딩된 (P 또는 B) 프레임 또는 슬라이스 내의 매크로블록들은 동일한 프레임 또는 슬라이스 내의 이웃 매크로블록들에 관한 공간적 예측 또는 다른 참조 프레임 (reference frame) 들에 관한 시간적 예측을 이용할 수 있다.
일반적으로, 이 개시는 색차 비디오 데이터의 코딩을 위한 기법들을 설명한다. 비디오 데이터는 통상 두 개의 유형들의 데이터, 즉 밝기 정보를 제공하는 휘도 화소들 (luminance pixels) 및 컬러 정보를 제공하는 색차 화소들 (chrominance pixels) 을 포함한다. 모션 추정 프로세스가 휘도 화소들에 대해 수행되어 모션 벡터 (휘도 모션 벡터) 를 계산할 수도 있고, 그러면 그것은 색차 화소들 (색차 모션 벡터) 에 대해 재사용될 수도 있다. 색차 도메인에서의 서브-샘플링으로 인해 휘도 화소들의 절반의 많은 색차 화소들이 존재할 수도 있다. 다시 말하면, 각각의 색차 성분은 행 및 열 방향들에서 2에 의해 다운샘플링될 수도 있다. 더구나, 휘도 모션 벡터는 1/4 화소 정밀도를 가질 수도 있고, 이는 색차 화소들에 대해 휘도 모션 벡터를 재사용하기 위해 색차 모션 벡터로 하여금 1/8 화소 정밀도를 가지게 할 수도 있다. 이 개시는 색차 블록들을 인코딩 및 디코딩하기 위해, 분수 화소 위치 (pixel position) 들, 이를테면 1/8 화소 위치들에 대한 값들을 보간하는 기법들을 제공한다. 이 개시 또한 분수 화소 위치들의 값들을 보간하기 위한 보간 필터들을 생성하는 기법들을 제공한다.
하나의 예에서, 방법은, 색차 블록에 대응하는 비디오 데이터의 휘도 블록에 대한 휘도 모션 벡터에 기초하여 비디오 데이터의 색차 블록에 대한 색차 모션 벡터를 결정하는 단계로서, 색차 모션 벡터는 제 1 분수 부분을 갖는 수평 성분 및 제 2 분수 부분을 갖는 수직 성분을 포함하며, 휘도 모션 벡터는 제 1 정밀도를 가지고, 색차 모션 벡터는 제 1 정밀도 이상인 제 2 정밀도를 가지는, 상기 색차 모션 벡터를 결정하는 단계; 상기 수평 성분의 제 1 분수 부분 및 상기 수직 성분의 제 2 분수 부분에 기초하여 보간 필터들을 선택하는 단계로서, 보간 필터들을 선택하는 단계는 보간 필터들을 보간 필터들의 세트로부터 선택하는 단계를 포함하며, 보간 필터들의 세트의 각각의 보간 필터는 휘도 모션 벡터의 복수의 가능한 분수 화소 위치들 중 하나에 대응하는, 상기 보간 필터들을 선택하는 단계; 선택된 보간 필터들을 사용하여 색차 모션 벡터에 의해 식별된 참조 블록 (reference block) 에 대한 값들을 보간하는 단계; 및 참조 블록을 이용하여 색차 블록을 처리하는 단계를 포함한다.
다른 예에서, 장치는 비디오 코딩 유닛을 포함하고, 그 비디오 코딩 유닛은, 색차 블록에 대응하는 비디오 데이터의 휘도 블록에 대한 휘도 모션 벡터에 기초하여 비디오 데이터의 색차 블록에 대한 색차 모션 벡터를 결정하고, 색차 모션 벡터가 제 1 분수 부분을 갖는 수평 성분 및 제 2 분수 부분을 갖는 수직 성분을 포함하며, 휘도 모션 벡터가 제 1 정밀도를 가지며, 색차 모션 벡터는 제 1 정밀도 이상인 제 2 정밀도를 갖고; 수평 성분의 제 1 분수 부분 및 수직 성분의 제 2 분수 부분에 기초하여 보간 필터들을 선택하고, 상기 보간 필터들을 선택하는 것은 보간 필터들을 보간 필터들의 세트로부터 선택하는 것을 포함하며, 보간 필터들의 세트의 각각의 보간 필터는 휘도 모션 벡터의 복수의 가능한 분수 화소 위치들 중 하나에 대응하고; 상기 선택된 보간 필터들을 사용하여 색차 모션 벡터에 의해 식별된 참조 블록에 대한 값들을 보간하고;및 상기 참조 블록을 이용하여 상기 색차 블록을 처리하도록 구성된다.
다른 예에서, 장치는, 색차 블록에 대응하는 비디오 데이터의 휘도 블록에 대한 휘도 모션 벡터에 기초하여 비디오 데이터의 색차 블록에 대한 색차 모션 벡터를 결정하는 수단으로서, 색차 모션 벡터는 제 1 분수 부분을 갖는 수평 성분 및 제 2 분수 부분을 갖는 수직 성분을 포함하며, 휘도 모션 벡터는 제 1 정밀도를 가지고, 색차 모션 벡터는 제 1 정밀도 이상인 제 2 정밀도를 가지는, 상기 색차 모션 벡터를 결정하는 수단; 수평 성분의 제 1 분수 부분 및 수직 성분의 제 2 분수 부분에 기초하여 보간 필터들을 선택하는 수단으로서, 보간 필터들을 선택하는 것은 보간 필터들을 보간 필터들의 세트로부터 선택하는 것을 포함하며, 보간 필터들의 세트의 각각의 보간 필터는 휘도 모션 벡터의 복수의 가능한 분수 화소 위치들 중 하나에 대응하는, 상기 보간 필터들을 선택하는 수단; 선택된 보간 필터들을 사용하여 색차 모션 벡터에 의해 식별된 참조 블록에 대한 값들을 보간하는 수단; 및 참조 블록을 이용하여 색차 블록을 처리하는 수단을 구비한다.
다른 예에서, 컴퓨터 판독가능 매체, 이를테면 컴퓨터 판독가능 저장 매체는, 프로그램가능 프로세서로 하여금, 색차 블록에 대응하는 비디오 데이터의 휘도 블록에 대한 휘도 모션 벡터에 기초하여 비디오 데이터의 색차 블록에 대한 색차 모션 벡터를 결정하도록 하는 명령들로서, 색차 모션 벡터가 제 1 분수 부분을 갖는 수평 성분 및 제 2 분수 부분을 갖는 수직 성분을 포함하며, 휘도 모션 벡터가 제 1 정밀도를 가지며, 색차 모션 벡터는 제 1 정밀도 이상인 제 2 정밀도를 가지는, 상기 색차 모션 벡터를 결정하도록 하는 명령들; 상기 수평 성분의 제 1 분수 부분 및 상기 수직 성분의 제 2 분수 부분에 기초하여 보간 필터들을 선택하도록 하는 명령들로서, 상기 보간 필터들을 선택하는 것은 상기 보간 필터들을 보간 필터들의 세트로부터 선택하는 것을 포함하며, 상기 보간 필터들의 세트의 각각의 보간 필터는 휘도 모션 벡터의 복수의 가능한 분수 화소 위치들 중 하나에 대응하는, 상기 보간 필터들을 선택하도록 하는 명령들; 상기 선택된 보간 필터들을 사용하여 색차 모션 벡터에 의해 식별된 참조 블록에 대한 값들을 보간하도록 하는 명령들; 및 상기 참조 블록을 이용하여 상기 색차 블록을 처리하도록 하는 명령들을 담고 있다, 예컨대, 그런 명령들로 인코딩된다.
하나 이상의 예들의 세부사항들은 첨부 도면들 및 다음의 설명에서 언급된다. 다른 특징들, 목적들, 및 이점들은 상세한 설명 및 도면들로부터, 그리고 청구항들로부터 명확하게 될 것이다.
도 1은 색차 모션 벡터에 대해 분수 화소 위치들에 대한 값들을 보간하는 기법들을 이용할 수도 있는 일 예의 비디오 인코딩 및 디코딩 시스템을 도시하는 블록도이다.
도 2는 보간 필터들을 선택하기 위한 기법들을 구현할 수도 있는 비디오 인코더의 일 예를 도시하는 블록도이다.
도 3은 인코딩된 비디오 시퀀스를 디코딩하는 비디오 디코더의 일 예를 도시하는 블록도이다.
도 4는 완전 화소 위치에 대한 분수 화소 위치들을 예시하는 개념도이다.
도 5a-5c는 휘도 블록의 화소 위치들 및 대응하는 색차 블록의 분수 화소 위치들을 예시하는 개념도들이다.
도 6은 색차 블록을 인코딩하기 위해 분수 화소 위치들에 대한 값들을 보간하는 일 예의 방법을 도시하는 호름도이다.
도 7은 색차 블록을 디코딩하기 위해 분수 화소 위치들에 대한 값들을 보간하는 일 예의 방법을 도시하는 흐름도이다.
도 8 및 9는 수평 및 수직 성분들 모두에 대한 성분 기여분들을 계산하는데 사용될 보간 필터들을 선택하는 방법들을 예시하는 흐름도들이다.
도 10은 기존 업-샘플링 필터로부터, 이 개시의 기법들을 따라 사용될 보간 필터들을 생성하는 일 예의 방법을 도시하는 흐름도이다.
일반적으로, 이 개시는 색차 비디오 데이터의 코딩을 위한 기법들을 설명한다. 비디오 데이터 (예컨대, 매크로블록들) 는 두 유형들의 화소들, 즉 밝기에 관련한 휘도 화소들 및 컬러에 관련한 색차 화소들을 포함할 수도 있다. 데이터의 블록, 예컨대, 매크로블록에 대해 휘도 화소 값들의 절반의 색차 화소 값들이 존재할 수도 있다. 매크로블록이, 예를 들어, 휘도 데이터 및 색차 데이터를 포함할 수도 있다. 비디오 인코더가 매크로블록의 휘도 화소들에 대한 모션 추정을 수행하여 휘도 모션 벡터를 계산할 수도 있다. 그 다음 비디오 인코더는 휘도 모션 벡터를 이용하여 매크로블록에서 동일한 관련 화소를 포인팅하는 색차 모션 벡터를 생성할 수도 있다. 휘도 모션 벡터는 분수 화소 정밀도, 예컨대, 1/4 화소 정밀도를 가질 수도 있다.
색차 블록의 화소들은 매크로블록에서의 휘도 블록의 화소들에 비해 다운샘플링될 수도 있다. 이 다운샘플링은 색차 모션 벡터가 휘도 모션 벡터의 정밀도보다 큰 정밀도의 분수 화소 위치를 포인팅하도록 유발할 수도 있다. 다시 말하면, 코딩 유닛이 휘도 모션 벡터를 색차 모션 벡터로서 재사용하기 위해, 색차 모션 벡터는 휘도 모션 벡터보다 큰 정밀도를 가질 필요가 있을 수도 있다. 예를 들어, 휘도 모션 벡터가 1/4 화소 정밀도를 가진다면, 색차 모션 벡터는 1/8 화소 정밀도를 가질 수도 있다. 일부 예들에서, 휘도 모션 벡터는 1/8 화소 정밀도를 가질 수도 있다. 그에 따라, 색차 모션 벡터는 1/16 화소 정밀도를 가질 수도 있다. 그러나, 색차 모션 벡터는 1/8 화소 정밀도가 되도록 트런케이팅 (truncating) 될 수도 있다. 그러므로, 색차 모션 벡터는 휘도 모션 벡터의 정밀도 이상인 정밀도를 가질 수도 있다.
일부 비디오 인코더들은 이중선형 (bilinear) 보간을 이용하여 참조 색차 블록, 다시 말하면, 색차 모션 벡터가 포인팅하는 색차 블록의 1/8 화소 위치들에 대한 값들을 보간한다. 이중선형 보간이 빠른 반면, 그것은 열악한 주파수 응답을 가지며, 이는 예측 에러가 증가되게 할 수 있다. 이 개시의 기법들에 따라서, 모션 벡터들의 수평 성분들 및 수직 성분들에 기초하여, 모션 벡터들에 의해 포인팅된 분수 화소 위치들의 값들을 보간할 때 사용할 보간 필터들을 선택하도록 비디오 인코더가 구성될 수도 있다.
모션 벡터가 수평 성분 및 수직 성분을 가질 수도 있다. 이 개시는 수평 성분을 지칭하는 "MVx" 및 수직 성분을 지칭하는 "MVy"를 이용하여서, 모션 벡터는 {MVx, MVy}에 따라 정의된다. 모션 벡터의 수평 및 수직 성분들은 완전 부분 (full portion) 및 분수 (fractional) 부분을 가질 수도 있다. 성분의 완전 부분은 모션 벡터가 대응하는 완전 화소 위치를 지칭할 수도 있는 반면, 분수 부분은 완전 화소 위치에 대응하는 분수 위치를 지칭할 수도 있다. 분수 부분은 N < M인 분수 N/M에 대응할 수도 있다. 예를 들어, 모션 벡터의 성분이 2 3/8 (2와 3/8) 이었다면, 성분의 완전 부분은 2일 것인 반면, 분수 부분은 3/8일 것이다. 모션 벡터 성분이 음수 (negative) 일 경우, 완전 화소 위치는 모션 벡터 성분보다 더 작은 최대 정수가 되도록 선택될 수도 있다. 따라서, 하나의 예로서, 모션 벡터의 성분이 -2 3/8이었다면, 성분의 완전 부분은 -3이 되는 반면, 분수 부분은 5/8이 된다. 이 경우, 분수 부분은 모션 벡터 성분에 포함된 분수와는 상이함에 유의한다. 일반적으로, 1/8 정밀도를 갖는 색차 벡터들에 대해, 모션 벡터에 포함된 분수가 N/8이였다면, 그 모션 벡터에 대한 분수 부분은, 모션 벡터가 음수라고 가정할 때, (8-N)/8이 된다. 따라서, 수평 및 수직 성분들은 진분수 (proper fraction) 들을 갖는 혼수들 (mixed numbers) 로 표현될 수도 있다. 이 분수들은 다이애딕 (dyadic) 분수들, 다시 말하면, 2의 거듭제곱인 분모를 갖는 분수들일 수도 있다.
이 개시는 수평 성분의 분수 부분을 "mx" 그리고 수직 성분의 분수 부분을 "my"라고 지칭한다. 이 개시는 수평 성분의 완전 부분을 "FPx" 그리고 수직 성분의 완전 부분을 "FPy"라고 지칭한다. 따라서, 수평 성분 MVx는 FPx + mx로서 표현될 수도 있고 수직 성분 MVy는 FPy + my로서 표현될 수도 있다.
이 개시의 기법들은 분수 화소 위치를 언급하는 모션 벡터의 수평 및 수직 성분들 (mx 및 my) 에 기초하여 분수 화소 위치에 대한 값을 보간하는데 사용할 보간 필터들을 선택하는 것을 포함한다. 이 기법들은 또한 휘도 화소의 분수 위치, 예컨대, 1/4 화소 위치들의 세트에 대한 보간 필터들의 세트를 정의하는 것을 포함한다. 분수 화소 위치에 대한 값은 수평 성분 및 수직 성분에 대해 결정된 값들의 기여분들의 조합으로서 결정될 수도 있다. 다르게 말하면, 분수 화소 위치에 대한 보간된 값 (분수_위치(mx, my)) 은 성분들의 분수 위치들의 세트에 대해 결정되는 값들의 조합으로서 결정될 수도 있다.
성분의 분수 부분이 완전 화소 위치와 동일하면, 성분의 분수 부분에 대한 값은 완전 화소 위치의 값과 동일하다고 결정될 수도 있다. 성분의 분수 부분이 휘도 블록의 분수 화소 위치들의 세트 중의 하나의 분수 화소 위치와 동일하면, 성분의 분수 부분에 대한 값은 분수 위치에 대해 정의된 필터를 평가함으로써 결정될 수도 있다. 그렇지 않으면, 성분의 분수 부분에 대한 값은 이웃하는 분수 화소 위치들로부터의 기여분들의 평균으로서 결정될 수도 있다.
일 예로, 휘도 모션 벡터가 1/4 화소 정밀도를 가지고 색차 모션 벡터가 휘도 블록에 대해 2의 팩터만큼 다운샘플링된 색차 블록에 대응한다고 가정한다. 그러면 휘도 모션 벡터의 성분에 대한 잠정적 분수 화소 위치들은 0, ¼, ½, 및 ¾이다. 이 예에서, 이 개시의 기법들을 따라, 필터들이 ¼, ½, 및 ¾ 분수 위치들에 대해 정의될 수도 있다. 이들 필터들은 F1, F2, 및 F3이라고 각각 지칭될 수도 있다. 이들 필터들은 1/4 화소 정밀도, 다시 말하면, 휘도 모션 벡터와 동일한 정밀도를 갖는 모션 벡터에 의해 표현될 수 있는 분수 위치들에 대응하는 것으로서 설명될 수도 있다. 이 예에서, 색차 모션 벡터는 분수 화소 위치들 1/8, 3/8, 5/8, 및 7/8을 부가적으로 참조할 수도 있다. 이들 분수 화소 위치들은 1/4 화소 정밀도를 갖는 모션 벡터가 아닌 1/8 화소 정밀도를 갖는 모션 벡터에 의해 참조될 수 있다.
이 예에서, 색차 모션 벡터의 성분이 0과 동일한 분수 부분을 가진다면, 성분에 대한 값은 성분의 완전 부분에 의해 참조되는 완전 화소 위치와 동일하다. 색차 모션 벡터의 성분이 ¼, ½, 또는 ¾과 동일한 분수 부분을 가진다면, 그 성분에 대한 값은 F1, F2, 또는 F3 중의 개별 하나를 실행함으로써 생성된 값과 동일하다. 그렇지 않으면, 성분에 대한 값은 이웃하는 분수 위치들의 평균이 될 수도 있다.
예를 들어, 성분의 분수 부분이 1/8이면, 그 성분에 대한 값은 완전 화소 위치에 대한 값 및 F1을 실행함으로써 생성된 값의 평균이다. 다른 예로서, 성분의 분수 부분이 3/8이면, 그 성분에 대한 값은 F1을 실행하여 생성된 값 및 F2를 실행하여 생성된 값의 평균이다. 또 다른 예로서, 성분의 분수 부분이 5/8이면, 그 성분에 대한 값은 F2를 실행하여 생성된 값 및 F3을 실행하여 생성된 값의 평균이다. 또 다른 예로서, 성분의 분수 부분이 7/8이면, 그 성분에 대한 값은 F3을 실행하여 생성된 값 및 이웃하는 완전 화소 위치의 값, 예컨대, FPn+1의 평균이다. 이 예에서, 다른 방향에서의 분수 부분은 영이라고 가정된다.
이 프로세스는 참조 색차 블록에서의 각각의 화소에 대해 이용될 수도 있다. 참조 색차 블록의 분수 화소 위치들에 대한 계산된 값들은 색차 모션 벡터를 이용하여 인코딩되고 있는 색차 블록 (chrominance block) 에 대한 잔차 값 (residual value) 을 계산하는데 추가로 사용될 수도 있다. 다시 말하면, 인코딩된 색차 블록은 예측 블록 (위에서 설명된 프로세스에 따라 계산된 분수 화소 위치들에 대한 값들을 갖는 참조 프레임의 블록에 대응함) 및 인코딩될 색차 블록 사이의 차이로서 계산된 색차 잔차 값에 대응할 수도 있다.
디코더는 색차 블록에 대응하는 휘도 블록에 대한 휘도 모션 벡터를 수신하며, 그 휘도 모션 벡터를 이용하여 색차 블록에 대한 색차 모션 벡터를 형성한 다음, 위에서 설명된 동일한 보간 프로세스를 이용하여 참조 프레임에 대한 분수 화소 위치들의 값들을 보간할 수도 있다. 그 다음 디코더는 색차 블록에 대한 잔차 값을 예측된 블록에 가산함으로써 색차 블록을 디코딩할 수도 있다. 그러면 블록은 디스플레이될 화소들에 대한 휘도 및 색차 데이터를 생성하기 위해 색차 및 휘도 블록들을 조합하여 랜더링될 수도 있다.
위에서 설명된 프로세스는 기존 업샘플링 필터로부터 휘도 블록의 분수 화소 위치들의 세트의 각각의 분수 화소 위치에 대해 보간 필터들을 정의하는 것을 포함한다. 이 개시의 기법들은 또한 이러한 보간 필터들을 정의하는 예의 방법들을 제공한다. 하나의 예의 방법은 단일 업-샘플링 필터로부터 보간 필터들을 획득하는데 사용될 수도 있다. 4의 팩터에 의해 업샘플링될 1차원 신호 x[n]을 고려한다. 이 경우, 다른 신호 y[n]x[n]의 매 두 개의 샘플들 사이에 3개의 영들을 삽입함으로써 생성될 수도 있다. 이는, π/4의 차단 주파수를 갖는 필터 h[n]으로 y[n]을 저역통과 필터링함으로써 제거될 수 있는 앨리어싱이 일어나게 할 수도 있다. 필터를 선형 위상으로 두면, (2M+1) 개의 탭들은 0을 중심으로 하고 M이 사용자에 의해 구성될 수도 있다. 그러면, 필터링된 신호 s[n]은 다음과 같이 쓰여질 수 있다:
Figure pat00001
이 예에서, 필터링 동작은 콘볼루션 연산보다는 내적(inner product)으로서 표현된다. 이 예에서 n이 4로 나누어질 수 있는 경우에만 y[n]이 영이 아니므로, 각각의 n에 대해, h[n]의 계수들의 특정 서브세트만이 특정 n에 대한 s[n]의 계산을 위해 필요하다. 서브세트는 n을 4로 나눈 결과로서의 나머지 (모듈로 연산자 "%"를 이용하여 n%4로 표시) 에 의해 결정될 수도 있다. 일 예로, M=11이고, 그래서 h[n]은 23개의 탭들을 갖는 것으로 고려한다. 그러면 n이 1과 동일한 경우 (및 마찬가지로 (n%4) 이 1과 동일한 경우),
s[1] = h[-9]y[-8] + h[-5]y[-4] + h[-1]y[0] + h[3]y[4] + h[7]y[8] + h[11]y[12],
이거나 또는, y[n] 값들을 대응하는 x[n] 값들로 대체하는 등가 표현식을 이용하면 다음과 같다:
s[1] = h[-9]x[-2] + h[-5]x[-1] + h[-1]x[0] + h[3]x[1] + h[7]x[2] + h[11]x[3].
따라서, {h[-9], h[-5], h[-1], h[3], h[7], h[11]}은 ¼-화소 위치에 대한 보간된 값을 획득하기 위한 6-탭 필터라고 간주될 수 있다. 다시, 이 예에서, 필터링 동작은 종래의 콘볼루션 연산 (conventional convolution operation) 대신 내적 연산으로서 표현되고, 그렇지 않으면 위의 필터는 시간반전 (time-reversed) 될 것이다. 이 표현식에서, h[k]는 2M+1개의 계수들을 가지는 필터 h의 k번째 계수를 지칭한다. 마찬가지로, ½-화소 위치 및 ¾-화소 위치를 위해 사용될 수 있는 필터들은 각각 다음과 같을 수도 있다,
{h[-10], h[-6], h[-2], h[2], h[6], h[10]}, 및
{h[-11], h[-7], h[-3], h[1], h[5], h[9]}.
이 예의 방법은 1/4 화소 분수 위치들에서의 값들을 보간하기 위해 보간 필터들을 생성하는데 사용될 수도 있다. 일반적으로, 1/N의 정확도를 갖는 분수 화소 보간에 대해, π/N의 차단 주파수를 갖는 선형 위상 저역 통과 필터를 먼저 설계한 다음 n%N의 값에 대응하는 필터의 상이한 서브세트들을 찾음으로써 0<=m<N인 상이한 분수 화소 위치들 m/N에 대한 필터들을 생성하는 유사한 기법이 적용될 수도 있다.
일부 예들에서, 위의 일 예의 방법에 의해 생성된 필터들은 추가로 리파이닝 (refining) 될 수도 있다. 예를 들어, 각각의 필터에 대해, 계수들이 1까지 합산되는 것을 보장할 수도 있다. 이는 보간된 값들에 대해 DC 바이어스를 도입하는 것을 피할 수도 있다. 다른 예로서, 원래의 저역 통과 필터 h[n]에 대해, n 이 0이 아닌 경우, h[0] = 1 및 h[4n] = 0가 되는 것을 보장할 수도 있다. 이는 필터링하는 경우 x[n]의 원래의 샘플들에 영향을 주는 것을 피할 수도 있다.
구현의 목적을 위해, 필터 계수들은 모든 계수들이 2의 거듭제곱인 공통 분모를 가지는 분수들로서 표현될 수도 있다. 예를 들어, 공통 분모는 32일 수도 있다. 필터를 실행하는 경우, 필터 계수들은 공통 분모 (예컨대, 32) 에 의해 곱해지고 가장 가까운 정수로 반올림될 수도 있다. 필터 계수들이 공통 분모, 예컨대, 32까지 합산되는 것을 보장하기 위해 ±1만큼의 추가 조정이 이루어질 수도 있다. 필터 계수들 (공통 분모를 무시함) 이 더 높은 값까지 합산되도록 선택된다면, 더 나은 보간이 중간 필터링 계산들에 대한 증가된 비트-깊이의 비용으로 달성될 수도 있다. 하나의 구현예에서, 8 비트들의 입력 비트-깊이를 갖는 비디오 시퀀스에 대해, 색차 보간이 16-비트 정밀도로 수행될 수 있도록 하기 위해 32까지 합산되는 필터 계수들이 선택되었다.
하나의 구현예에서, 다음의 필터 계수들이 이용되었다:
h1 = {2, -5, 28, 9, -3, 1};
h2 = {2, -6, 20, 20, -6, 2}; 및
h3 = {1, -3, 9, 28, -5, 2}.
IPPP 및 계층적 B 구성들에 대해, 색차 성분 보간을 위한 이들 필터들의 사용은, JCT-VC 표준화 활동에서 사용된 테스트 시퀀스들을 위한 동등한 피크 신호 대 잡음 비들에 대해, 각각 1.46% 및 0.68%의 비트 레이트들에서의 개선 (감소) 을 제공하였다.
도 1은 색차 모션 벡터에 대해 분수 화소 위치들에 대한 값들을 보간하기 위한 기법들을 이용할 수도 있는 일 예의 비디오 인코딩 및 디코딩 시스템 (10) 을 도시하는 블록도이다. 도 1에 보인 바와 같이, 시스템 (10) 은 인코딩된 비디오를 목적지 디바이스 (14) 에 통신 채널 (16) 을 통해 송신하는 소스 디바이스 (12) 를 구비한다. 소스 디바이스 (12) 와 목적지 디바이스 (14) 는 넓은 범위의 디바이스들 중 임의의 것을 포함할 수도 있다. 일부 경우들에서, 소스 디바이스 (12) 와 목적지 디바이스 (14) 는 무선 통신 디바이스들, 이를테면 무선 핸드셋들, 이른바 셀룰러 또는 위성 무선전화기들, 또는 비디오 정보를 통신 채널 (16) 을 통해 통신할 수 있는 임의의 무선 디바이스들 포함하며, 이 경우 통신 채널 (16) 은 무선이다.
그러나, 색차 모션 벡터에 대해 분수 화소 위치들에 대한 값들을 보간하는 것에 관련한 이 개시의 기법들은, 무선 애플리케이션들 또는 설정들 (settings) 로 반드시 제한되지는 않는다. 예를 들어, 이들 기법들은 OTA(over-the-air) 텔레비전 브로드캐스트들, 케이블 텔레비전 송신들, 위성 텔레비전 송신들, 인터넷 비디오 송신들, 저장매체에 인코딩되는 인코딩된 디지털 비디오, 또는 다른 시나리오들에 적용할 수도 있다. 따라서, 통신 채널 (16) 은 인코딩된 비디오 데이터의 전송에 적합한 무선 또는 유선 매체들의 임의의 조합을 포함할 수도 있다.
도 1의 예에서, 소스 디바이스 (12) 는 비디오 소스 (18), 비디오 인코더 (20), 변조기/복조기 (모뎀) (22) 및 송신기 (24) 를 구비한다. 목적지 디바이스 (14) 는 수신기 (26), 모뎀 (28), 비디오 디코더 (30), 및 디스플레이 디바이스 (32) 를 구비한다. 이 개시에 따라서, 소스 디바이스 (12) 의 비디오 인코더 (20) 와 목적지 디바이스 (14) 의 비디오 디코더 (30) 는, 참조 프레임들의 분수 화소 위치들, 예컨대, 1/8 화소 위치들에 대한 값들을 보간하기 위해 보간 필터들을 선택하는 기법들을 적용하여, 색차 블록들을 인코딩하거나 디코딩하도록 구성될 수도 있다. 다른 예들에서, 소스 디바이스와 목적지 디바이스는 다른 구성요소들 또는 배치구성물들을 구비할 수도 있다. 예를 들어, 소스 디바이스 (12) 는 외부 비디오 소스 (18), 이를테면 외부 카메라로부터 비디오 데이터를 수신할 수도 있다. 비슷하게, 목적지 디바이스 (14) 는, 통합형 디스플레이 디바이스를 구비한 것보다는, 외부 디스플레이 디바이스와 인터페이싱 (interfacing) 할 수도 있다.
도 1의 예시된 시스템 (10) 은 단지 하나의 예일 뿐이다. 참조 프레임들의 분수 화소 위치들의 값들을 보간하는 보간 필터들을 선택하여 색차 블록들을 인코딩 또는 디코딩하는 기법들은, 임의의 디지털 비디오 인코딩 및/또는 디코딩 디바이스에 의해 수행될 수도 있다. 일반적으로 이 개시의 기법들이 비디오 인코딩 디바이스에 의해 수행되지만, 그 기법들은 또한 통상 "코덱 (CODEC)" 이라고 지칭되는 비디오 인코더/디코더에 의해 수행될 수도 있다. 비디오 인코더 (20) 와 비디오 디코더 (30) 는 이 개시의 기법들을 구현할 수도 있는 비디오 코딩 유닛들의 예들이다. 이들 기법들을 구현할 수도 있는 비디오 코딩 유닛의 다른 예는 비디오 코덱이다.
소스 디바이스 (12) 와 목적지 디바이스 (14) 는, 소스 디바이스 (12) 가 목적지 디바이스 (14) 로의 송신을 위해 코딩된 비디오 데이터를 생성하는 그런 코딩 디바이스들의 단지 예들이다. 일부 예들에서, 디바이스들 (12, 14) 은 디바이스들 (12, 14) 의 각각이 비디오 인코딩 및 디코딩 구성요소들을 구비하도록 실질적으로 대칭적 방식으로 동작할 수도 있다. 그러므로, 시스템 (10) 은 비디오 디바이스들 (12, 14) 사이에서, 예컨대, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 또는 비디오 전화기술 (telephony) 을 위해 한-방향 또는 두-방향 비디오 전송을 지원할 수도 있다.
소스 디바이스 (12) 의 비디오 소스 (18) 는 비디오 캡처 디바이스, 이를테면 비디오 카메라, 이전에 캡처된 비디오를 포함하는 비디오 아카이브 (archive), 및/또는 비디오 콘텐츠 제공자로부터의 비디오 피드를 포함할 수도 있다. 추가의 대안으로서, 비디오 소스 (18) 는 컴퓨터 그래픽스-기반 데이터를, 소스 비디오, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터 생성 비디오로서 생성할 수도 있다. 일부 경우들에서, 비디오 소스 (18) 가 비디오 카메라이면, 소스 디바이스 (12) 와 목적지 디바이스 (14) 는 이른바 카메라 폰들 또는 비디오 폰들을 형성할 수도 있다. 그러나, 위에서 언급했듯이, 이 개시에서 설명된 기법들은 일반적으로 비디오 코딩에 적용할 수도 있고, 무선 및/또는 유선 애플리케이션들에 적용될 수도 있다. 각각의 경우에서, 캡처된, 사전-캡처된, 또는 컴퓨터-생성된 비디오는 비디오 인코더 (20) 에 의해 인코딩될 수도 있다. 그 다음 인코딩된 비디오 정보는 통신 표준에 따라 모뎀 (22) 에 의해 변조될 수도 있고, 목적지 디바이스 (14) 에 송신기 (24) 를 통해 송신될 수도 있다. 모뎀 (22) 은 다양한 믹서들, 필터들, 증폭기들 또는 신호 변조를 위해 설계된 다른 구성요소들을 구비할 수도 있다. 송신기 (24) 는 증폭기들, 필터들, 및 하나 이상의 안테나들을 포함하여, 데이터를 송신하기 위해 설계된 회로들을 구비할 수도 있다.
목적지 디바이스 (14) 의 수신기 (26) 는 정보를 채널 (16) 을 통해 수신하고, 모뎀 (28) 은 정보를 복조한다. 다시, 비디오 인코딩 프로세스는, 본 명세서에서 설명되는 기법들 중의 하나 이상을 구현하여, 색차 블록들을 인코딩하기 위해 참조 프레임들의 분수 화소 위치들의 값들을 보간하는 보간 필터들을 선택할 수도 있다. 채널 (16) 을 통해 통신되는 정보는, 매크로블록들 및 다른 코딩된 단위들, 예컨대, GOP들의 처리 및/또는 특성들을 설명하는 구문 (syntax) 요소들을 포함하는, 비디오 디코더 (30) 에 의해 또한 사용되는, 비디오 인코더 (20) 에 의해 정의된 구문 정보를 포함할 수도 있다. 디스플레이 디바이스 (32) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하고, 음극선관 (CRT), 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 또 다른 유형의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중의 임의의 것을 포함할 수도 있다.
도 1의 예에서, 통신 채널 (16) 은 임의의 무선 또는 유선 통신 매체, 이를테면 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 전송 라인들, 또는 무선 및 유선 매체들의 임의의 조합을 포함할 수도 있다. 통신 채널 (16) 은 패킷-기반 네트워크, 이를테면 로컬 영역 네트워크, 와이드 영역 네트워크, 또는 인터넷과 같은 글로벌 네트워크의 부분을 형성할 수도 있다. 통신 채널 (16) 은, 유선 또는 무선 매체들의 임의의 적합한 조합을 포함하여, 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로 비디오 데이터를 송신하기 위한 임의의 적합한 통신 매체, 또는 상이한 통신 매체들의 컬렉션을 일반적으로 나타낸다. 통신 채널 (16) 은 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (14) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
비디오 인코더 (20) 와 비디오 디코더 (30) 는, 다르게는 MPEG-4, 파트 10, 고급 비디오 코딩 (AVC) 이라고도 지칭되는 ITU-T H.264 표준과 같은 비디오 압축 표준에 따라 동작할 수도 있다. 그러나, 이 개시의 기법들은, 임의의 특정한 코딩 표준으로 제한되지는 않는다. 다른 예들은 MPEG-2 및 ITU-T H.263을 포함한다. 도 1에 도시되지는 않았지만, 일부 양태들에서, 비디오 인코더 (20) 및 비디오 디코더 (30) 는 각각이 오디오 인코더 및 디코더와 통합될 수도 있고, 적절한 MUX-DEMUX 유닛들, 또는 다른 하드웨어 및 소프트웨어를 구비하여, 공통 데이터 스트림 또는 개별적인 데이터 스트림들에서 오디오 및 비디오 양쪽 모두의 인코딩을 핸들링할 수도 있다. 해당된다면, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 사용자 데이터그램 프로토콜 (UDP) 과 같은 다른 프로토콜들을 따를 수도 있다.
ITU-T H.264/MPEG-4 (AVC) 표준은 ISO/IEC 동 화상 전문가 그룹 (MPEG) 과 함께 ITU-T 비디오 코딩 전문가 그룹 (VCEG) 에 의해 조인트 비디오 팀 (JVT) 으로서 알려진 공동 파트너십의 산물로서 공식화되었다. 일부 양태들에서, 이 개시에서 설명되는 기법들은 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) 의 각각은 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있는데, 그것들 중의 어느 하나는 결합된 인코더/디코더 (코덱) 의 부분으로서 각각의 카메라, 컴퓨터, 모바일 디바이스, 가입자 디바이스, 브로드캐스트 디바이스, 셋톱 박스, 서버 등등에 통합될 수도 있다.
비디오 시퀀스는 통상 일련의 비디오 프레임들을 구비한다. 화상들의 그룹 (GOP) 은 일반적으로 일련의 하나 이상의 비디오 프레임들을 포함한다. GOP는 구문 데이터를 GOP의 헤더, GOP의 하나 이상의 프레임들의 헤더, 또는 GOP에 포함된 다수의 프레임들을 서술하는 다른 곳에 포함할 수도 있다. 각각의 프레임은 각각의 프레임에 대한 인코딩 모드를 서술하는 프레임 구문 데이터를 포함할 수도 있다. 비디오 인코더 (20) 는 비디오 데이터를 인코딩하기 위하여 개개의 비디오 프레임들 내의 비디오 블록들에 대해 통상 동작한다. 비디오 블록은 매크로블록 또는 매크로블록의 파티션에 대응할 수도 있다. 비디오 블록들은 고정된 또는 가변하는 사이즈들을 가질 수도 있고, 특정 코딩 표준에 따라 사이즈를 달리할 수도 있다. 각각의 비디오 프레임은 복수의 슬라이스들을 포함할 수도 있다. 각각의 슬라이스는 복수의 매크로블록들을 포함할 수도 있으며, 매크로블록들은 또한 서브-블록들로서 지칭될 수도 있는 파티션들로 배열될 수도 있다.
일 예로서, ITU-T H.264 표준은 인트라 예측을 다양한 블록 사이즈들, 이를테면 루마 성분 (luma component) 들을 위한 16 바이 (by) 16, 8 바이 8, 또는 4 바이 4, 및 크로마 성분 (chroma component) 들을 위한 8x8에서 지원할 뿐만 아니라 인터 예측을 다양한 블록 사이즈들, 이를테면 루마 성분들을 위한 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 및 4x4 및 크로마 성분들을 위한 상응하는 스케일의 사이즈들에서 지원한다. 이 개시에서, "NxN" 및 "N 바이 N"은 수직방향 및 수평방향 치수들의 관점에서 블록의 화소 치수들을, 예컨대, 16x16개 화소들 또는 16 바이 16개 화소들을 상호 교환적으로 말하는데 이용될 수 있다. 일반적으로, 16x16 블록은 수직 방향의 16개의 화소들 (y = 16) 및 수평 방향의 16개의 화소들 (x = 16) 을 가질 수 있다. 비슷하게, NxN 블록은 일반적으로 수직 방향의 N개의 화소들 및 수평 방향의 N개의 화소들을 가지며, 여기서 N은 음이 아닌 정수 값을 나타낸다. 블록의 화소들은 행들 및 열들로 배열될 수 있다. 더구나, 블록들은 수직 방향에서처럼 수평 방향에서 동일한 수의 화소들을 반드시 가질 필요는 없다. 예를 들어, 블록들은 M이 N과 반드시 동일하지는 않은, NxM개의 화소들을 포함할 수도 있다. 일반적으로 16x16 블록들에 대해 설명되지만, 이 개시의 기법들은 블록들의 다른 사이즈들, 예컨대, 32x32, 64x64, 16x32, 32x16, 32x64, 64x32, 또는 기타 블록 사이즈들에 적용될 수도 있다. 따라서, 이 개시의 기법들은 16x16보다 큰 사이즈들의 매크로블록들에 적용될 수도 있다.
16 바이 16 미만인 블록 사이즈들은 16 바이 16 매크로블록의 파티션들이라고 지칭될 수도 있다. 비디오 블록들은 화소 도메인에서는 화소 데이터의 블록들을 포함하거나, 또는 변환 도메인에서는, 예컨대, 다음의 변환 응용들 이를테면 이산 코사인 변환 (DCT), 정수 변환, 웨이브릿 변환, 또는 코딩된 비디오 블록들 및 예측 비디오 블록들 사이의 화소 차이들을 나타내는 잔차 비디오 블록 데이터에 대한 개념적으로 유사한 변환에서는 변환 계수들의 블록을 포함할 수도 있다. 일부 경우들에서, 비디오 블록은 변환 도메인의 양자화된 변환 계수들의 블록들을 포함할 수도 있다.
더 작은 비디오 블록들이 더나은 해상도를 제공할 수 있고, 높은 상세 레벨들을 포함하는 비디오 프레임의 위치들에 이용될 수도 있다. 일반적으로, 매크로블록들 및 때때로 서브-블록들로 지칭되는 다양한 파티션들은 비디오 블록들로 고려될 수도 있다. 부가하여, 슬라이스는 복수 개의 비디오 블록들, 이를테면 매크로블록들 및/또는 서브-블록들인 것으로 고려될 수도 있다. 각각의 슬라이스는 비디오 프레임의 독립적으로 디코딩 가능한 단위일 수도 있다. 대안적으로, 프레임들 자체가 디코딩가능 단위들일 수도 있거나, 또는 프레임의 기타 부분들이 디코딩가능 단위들로서 정의될 수도 있다. "코딩된 단위 (coded unit)" 또는 "코딩 단위 (coding unit)"라는 용어는 전체 프레임, 프레임의 슬라이스, 시퀀스라고도 지칭되는 화상들의 그룹 (GOP) 과 같은 비디오 프레임의 임의의 독립적 디코딩가능 단위, 또는 적용가능 코딩 기법들에 따라 정의되는 다른 독립적 디코딩가능 단위를 지칭할 수도 있다.
이 개시의 기법들에 따라, 비디오 인코더 (20) 는 색차 블록들을 인코딩하기 위해 참조 프레임들의 분수 화소 위치들의 값들을 보간하는 보간 필터들을 선택하도록 구성될 수도 있다. 예를 들어, 매크로블록을 인코딩하는 동안, 비디오 인코더 (20) 는 먼저 매크로블록의 하나 이상의 휘도 블록들을 인터-모드 인코딩 프로세스를 이용하여 인코딩할 수도 있다. 이 인코딩 프로세스는 휘도 블록들에 대해 하나 이상의 휘도 모션 벡터들이 생겨나게 할 수도 있다. 그러면 비디오 인코더 (20) 는 휘도 모션 벡터들 중의 하나에 대한 휘도 블록에 대응하는 색차 블록에 대한 색차 모션 벡터를 계산할 수도 있다. 다시 말하면, 색차 블록은 동일한 매크로블록의 휘도 블록과 병치될 수도 있다.
비디오 인코더 (20) 는 휘도 블록에 대한 모션 추정을 수행하도록, 그리고 색차 블록에 대한 모션 검색 (search) 에 의해 생성된 휘도 모션 벡터를 재사용하도록 구성될 수도 있다. 휘도 모션 벡터는 참조 블록 내의 특정 화소, 예컨대, 참조 블록의 상부-좌측 화소를 일반적으로 포인팅한다. 더욱이, 휘도 모션 벡터는 분수 정밀도, 예컨대, 1/4 화소 정밀도를 가질 수도 있다. 참조 블록에서는 휘도 화소들 대 색차 화소들의 4:1 비율이 있을 수도 있다. 다시 말하면, 참조 매크로블록에서 병치된 (collocated) 휘도 블록에 비해 크로마 블록에서는 각각의 행 및 열에서 절반의 화소들이 있을 수도 있다.
휘도 모션 벡터를 재사용하여 색차 블록을 인코딩하기 위해, 비디오 인코더 (20) 는 휘도 블록에서처럼 색차 블록에서 동일한 수의 잠정적 화소 위치들 (완전 또는 분수) 을 사용할 수도 있다. 그러므로, 색차 모션 벡터는 휘도 모션 벡터보다는 화소당 분수 화소 위치들의 수의 관점에서 더 큰 정밀도를 가질 수도 있다. 이는 동일한 수의 화소 위치들이 수평 및 수직 방향들에서 절반의 화소들 중에 분할된 결과이다. 예를 들어, 휘도 모션 벡터가 1/4 화소 정밀도를 가진다면, 색차 모션 벡터는 1/8 화소 정밀도를 가질 수도 있다. 일반적으로, 휘도 벡터가 1/N의 정밀도를 가진다면, 색차 모션 벡터는 1/2N의 정밀도를 가질 수도 있다. 일부 예들에서, 색차 모션 벡터는 1/N의 정밀도로 트런케이팅될 수도 있다.
1/4 화소 정밀도를 갖는 휘도 모션 벡터의 예에서, 비디오 인코더 (20) 는, 각각이 색차 블록의 분수의 1/4 화소 위치들 중 하나 (예컨대, 화소의 1/4, 2/4, 및 3/4) 와 연관되는 세 개의 보간 필터들로 구성될 수도 있다. 비디오 인코더 (20) 는 먼저 색차 모션 벡터가 포인팅하는 로케이션을 결정할 수도 있다. 그 로케이션은, 각각이 완전 및 분수 부분들을 가지는 수평 성분 및 수직 성분에 의해 정의될 수도 있다. 비디오 인코더 (20) 는 수평 및 수직 성분들의 분수 부분들에 기초하여 보간 필터들을 선택하도록 구성될 수도 있다.
일반적으로, 비디오 인코더 (20) 는, 수평 및 수직 성분들에 대응하는 수평 기여분 및 수직 기여분의 조합에 기초하여 모션 벡터가 포인팅하는 로케이션에 대한 값을 계산할 수도 있다. 그 성분들 중 하나가 먼저 계산된 다음, 제 2 성분이 유사한 상황의 화소들을 이용하여 계산될 수도 있다. 예를 들어, 수평 성분이 먼저 계산될 수도 있고 그 다음, 동일한 수평 위치를 갖는 위 및 아래의 화소들이 모션 벡터에 의해 포인팅된 로케이션에 대한 값을 계산하는데 사용될 수도 있다. 위 및 아래의 화소들에 대한 값들은 먼저 보간될 수도 있다.
모션 벡터가 완전 화소 위치를 포인팅한다면, 다시 말하면, 수평 및 수직 성분들 모두가 영의 값의 분수 부분들을 가진다면, 비디오 인코더 (20) 는 단지 모션 벡터에 의해 포인팅된 화소에 대한 값으로서 완전 화소 위치의 값을 사용할 수도 있다. 한편, 수평 및 수직 성분들의 분수 부분들 중의 어느 하나 또는 양자 모두가 영이 아니라면, 비디오 인코더 (20) 는 모션 벡터에 의해 포인팅된 로케이션에 대한 값들을 보간할 수도 있다.
두 개의 성분들 중의 하나의 성분이 영이 아닌 값의 분수 부분을 가지지만 다른 성분이 영의 값의 분수 부분을 가지는 경우, 비디오 인코더 (20) 는 화소당 하나의 값만을 보간할 수도 있다. 특히, 비디오 인코더 (20) 는 완전 화소 위치의 값을 영의 값의 분수 부분을 갖는 성분의 기여분으로서 사용할 수도 있다. 예를 들어, 수평 성분이 영의 값의 분수 부분을 가지고, 수직 성분이 1/4의 분수 부분을 가진다면, 비디오 인코더 (20) 는 수직 성분에 대한 값을 보간하며, 수평 성분에 대해 완전 화소 위치의 값을 사용하고, 이들 값들을 조합하여 모션 벡터에 의해 포인팅된 로케이션에 대한 값을 계산할 수도 있다.
위에서 지적했듯이, 비디오 인코더 (20) 는 1/4 화소 위치들의 각각에 대해 보간 필터들로 구성될 수도 있다. 이 예에서, 이들 필터들을 F1, F2, 및 F3이라 두면 여기서 F1은 1/4 위치에 대응하며, F2는 2/4 위치에 대응하고, F3은 3/4 위치에 대응한다. 성분이 1/4 화소 위치를 포인팅하는 경우, 비디오 인코더 (20) 는 그 성분에 대한 값을 성분의 분수 부분에 대응하는 필터를 이용하여 계산할 수도 있다. 예를 들어, 수직 성분이 1/4의 분수 부분을 가진다면, 비디오 인코더 (20) 는 필터 F1을 사용하여 수직 기여분을 계산할 수도 있다.
성분이 1/8 화소 위치를 포인팅하는 경우, 비디오 인코더 (20) 는 그 성분에 대한 값을 이웃하는 필터들에 의해 생성된 값들 또는 이웃하는 완전 화소 값들의 평균을 이용하여 계산할 수도 있다. 예를 들어, 수평 성분이 1/8 (8분의 1) 의 분수 부분를 가진다면, 비디오 인코더 (20) 는 완전 화소 위치 및 필터 F1에 의해 생성된 값의 평균으로서 수평 성분에 대한 값을 계산할 수도 있다. 다른 예로서, 수평 성분이 3/8 (8분의 3) 의 분수 부분을 가진다면, 비디오 인코더 (20) 는 필터 F1에 의해 생성된 값 및 필터 F2에 의해 생성된 값의 평균으로서 수평 성분에 대한 값을 계산할 수도 있다.
특히, x가 수평 방향에 대응하고 y가 수직 방향에 대응한다고 둔다. (mx, my) 가 1/8 화소 정밀도를 갖는 모션 벡터의 분수 화소 부분을 나타낸다고 둔다. 따라서, 이 예에서 mx, my ∈ {0, 1/8, 1/4, 3/8, 1/2, 5/8, 3/4, 7/8}이다. (mx, my) = (0, 0) 에 대응하는 참조 프레임 화소가 P에 의해 표시되고 예측 값이 Q에 의해 표시된다고 둔다. 필터들 (F1, F2, 및 F3) 이 mx 및 my에 대해 1/4, 1/2, 및 3/4 위치들에 각각 연관된다고 둔다. E8이 분수 표현이 추가로 감소할 수 없도록 8을 분모로서 가지는 1/8 화소 위치들의 세트를 지칭하는 것으로 한다. 다시 말하면, E8 = {1/8, 3/8, 5/8, 7/8} 이라고 둔다. E4는 1/4 화소 위치들 및 그 이상을 말한다고 하자. 다시 말하면, E4 = {0, 1/4, 1/2, 3/4}이라고 둔다.
비디오 인코더 (20) 는 먼저 mx도 my도 E8에 속하지 않은 경우를 고려할 수도 있다 (단계 1). 이 경우, 비디오 인코더 (20) 는 Q 에 대한 값을 다음과 같이 보간할 수도 있다. (mx, my) = (0, 0) 이면, Q = P 이다 (단계 1-1). 그와 달리, mx = 0이면 (단계 1-2), 비디오 인코더 (20) 는 적절한 보간 필터 (F1, F2, 또는 F3) 를 수직 성분 my의 값에 적용함으로써 Q를 계산할 수도 있다. 예를 들어, my = 1/4이면, 비디오 인코더 (20) 는 필터 F1을 사용할 수도 있다. 마찬가지로, my = 0이면 (단계 1-3), 비디오 인코더 (20) 는 적절한 보간 필터 (F1, F2, 또는 F3) 를 수평 성분 mx의 값에 적용함으로써 Q를 계산할 수도 있다. 예를 들어, mx = 3/4이면, 비디오 인코더 (20) 는 필터 F3을 사용할 수도 있다. 마지막으로, mx 및 my 둘 다가 영이 아니면 (단계 1-4), 완전 화소 로케이션은 (0, 0) 이라고 가정하고, 비디오 인코더 (20) 는 my의 값에 기초하여 F1, F2, 또는 F3 중 하나를 적용하여 로케이션 (0, my) 에 대응하는 중간값을 생성할 수도 있다. 그 다음 mx의 값에 의존하여, 비디오 인코더 (20) 는 mx의 값에 기초하여 F1, F2, 또는 F3 중 하나를 이용하여 (mx, my) 에 대한 값을 계산할 수도 있다. 비디오 인코더 (20) 는 먼저 (n, my) 에 대한 값들을 선택된 필터가 참조할 수 있는 중간값들로서 보간할 수도 있다. 예를 들어, 6-탭 필터에 대해, n = {-2, -1, 0, 1, 2, 3}은 그것들이 쉽게 이용가능하지 않는다면, 먼저 보간될 수도 있다. 비디오 인코더 (20) 는, 위에서 설명된 보간 순서 대신에, 일부 예들에서 먼저 수평 방향을 보간하고 다음에 수직방향을 보간하도록 구성될 수도 있다.
또 다른 경우로서, mx 또는 my 중 어느 하나가 E8 에 속한다면 (단계 2), 비디오 인코더 (20) 는 예측 값 Q를 다음과 같이 계산할 수도 있다. mx ∈ E8 이고 my ∈ E4 이면 (단계 2-1), 비디오 인코더 (20) 는 로케이션 (0, my) 에 대응하는 중간 보간 값 Q1을 F1, F2, 또는 F3 중 적절한 하나를 이용하여 먼저 보간할 수도 있다. 그 다음 비디오 인코더 (20) 는 mx에 가장 가까운 두 개의 값들을 E4로부터 계산할 수도 있다. 이들 값들은 mx0 및 mx1에 의해 표시된다고 둔다. 비디오 인코더 (20) 는 (mx0, my) 및 (mx1, my) 에 각각 대응하는 중간값 (Q 2Q 3) 을 계산할 수도 있다. mx0 = 0이면, Q 2Q 1로부터 복사될 수도 있다. mx1 = 1이면, Q 2는 다음의 수평 화소의 Q 1로부터 복사될 수도 있다. 비디오 인코더 (20) 는 Q 2Q 3의 평균으로서 Q를 계산할 수도 있다.
일 예로, 모션 벡터의 분수 부분이 (3/8, 1/4) 인 것을 고려한다. 그러면 먼저, 비디오 인코더 (20) 는 (0, 1/4) 에 대응하는 Q 1을 필터 F1을 이용하여 계산할 수도 있다. 그 다음, 비디오 인코더 (20) 는 (1/4, 1/4) 및 (1/2, 1/4) 에 각각 대응하는 Q 2Q 3을 필터들 (F1 및 F2) 을 각각 이용하여 계산할 수도 있다. 마지막으로, 비디오 인코더 (20) 는 이들 두 개의 값들을 평균하여 Q를 구할 수도 있다.
한편, mx ∈ E4 이고 my ∈ E8 이면 (단계 2-2), 비디오 인코더 (20) 는 mx의 값 또는 mx가 영이면 P로부터 복사된 값에 기초하여, 수평 방향에서의 적절한 보간 필터 F1, F2, 또는 F3을 이용하여, 로케이션 (mx, 0) 에 대응하는 제 1 중간 보간 값 Q1을 계산할 수도 있다. 그 다음, 비디오 인코더 (20) 는 my에 가장 가까운 두 개의 값들을 E4로부터 계산할 수도 있다. 이들 값들이 my0 및 my1에 의해 표시된다고 둔다. 그러면, 비디오 인코더 (20) 는 수직 방향에서의 적절한 보간 필터들을 이용하여 (mx, my0) 및 (mx, my1) 에 대응하는 보간된 값들(Q 2Q 3)을 계산할 수도 있다. my0 = 0이면, 비디오 인코더 (20) 는 Q 1로부터 Q 2를 복사할 수도 있다. 마찬가지로, my1 = 1이면, 비디오 인코더 (20) 는 다음의 수직 화소에 대응하는 Q 1로부터 Q 3을 복사할 수도 있다. 그 다음, 비디오 인코더 (20) 는 Q 2Q 3을 평균함으로써 (mx, my) 에 대한 보간 값 Q를 계산할 수도 있다.
마지막으로, mx ∈ E8 이고 my ∈ E8 인 경우가 있다 (단계 2-3). 이 경우, 비디오 인코더 (20) 는 E4로부터 mx에 가장 가까운 두 개의 값들 (mx0 및 mx1로 표시됨) 을 계산할 수도 있다. 마찬가지로, 비디오 인코더 (20) 는 E4로부터 my에 가장 가까운 두 개의 값들 (my0 및 my1로 표시됨) 을 계산할 수도 있다. 그 다음, 네 개의 위치들 (mx0, my0), (my0, my1), (mx1, my0), (mx1, my1) 의 각각에 대해, 비디오 인코더 (20) 는 중간값들 (Q 1, Q 2, Q 3, 및 Q 4) 을 mx도 my도 E8에 속하지 않는 경우에 유사한 (다시 말하면, 단계 1에 유사한) 방식으로 계산할 수도 있다. 마지막으로, 비디오 인코더 (20) 는 중간 보간된 값들을 평균하여 (mx, my) 에 대한 보간 값 Q를 계산할 수도 있다. 다른 예들에서, 비디오 인코더 (20) 는 네 개 대신에 두 개의 중간값들만을 계산하여 최종 보간된 값 Q를 구하도록 구성될 수도 있다. 예를 들어, 비디오 인코더 (20) 는 대각선 위치들 (mx0, my0) 및 (mx1, my1) 또는 (mx0, my1) 및 (mx1, my0) 에 대응하는 중간값들만을 계산하고 평균하여 Q에 대한 최종 보간된 값을 획득하도록 구성될 수도 있다.
당업자들은 mx ∈ E4 또는 my ∈ E8인 경우, 두 개의 이웃하는 1/4 화소 정확도 화소 위치들로부터 수직 방향으로 1/8 화소 정확도 화소 위치를 계산하도록 평균을 이용하는 대신, 위치를 직접 도출하는 것도 가능할 수도 있다는 것을 이해할 것이다. 필터들 (F1, F2, 또는 F3) 이 동일한 길이를 가지므로, 두 개의 필터들의 계수들을 가산하는 것은 스케일링 팩터까지 동등한 1/8 화소 위치 필터를 제공한다. 따라서 색차 모션 벡터가 3/8 화소 위치를 포인팅한다면, F1 및 F2에 대한 필터 계수들은 (0, 3/8) 위치에 대한 직접 필터를 도출하기 위해 위치 단위 (position-by-position) 로 합산될 수도 있다. 따라서, 3/8 위치에 대응하는 필터는 이 예에서 {4, -11, 48, 29, -9, 3}이다. 이 필터에 대한 필터 계수들은 총합이 64이다. 따라서 필터링 후의 우측 시프트 (shift) 연산은 적절히 조정될 것이 필요하다. 완전 화소 위치에 대응하는 필터는 {0, 0, 32, 0, 0, 0}으로 간주된다. 여기서 F1, F2, 및 F3은 6 탭들을 가지고 그것들은 총합이 32라고 가정했다. 마찬가지로, 다음의 완전 화소 위치에 대응하는 필터의 경우 {0, 0, 0, 32, 0, 0}이다.
위에서 설명된 바와 같이, 이웃하는 하나의 1/4 화소 위치 필터들로부터 1/8 화소 위치 필터를 도출하는 대신, 하나가 각각의 1/8 화소 위치에 대해 하나씩, 7개의 필터들을 설계하는 것이 가능할 수도 있다.
이 개시에서 설명되는 필터링 기법들은 정수 산술로 수행될 수도 있다. 그렇게 하기 위해, 위에서 설명된 단계들은 비디오 인코더 (20) 를 위해 수정될 수도 있다. 표기의 편의상, 아래첨자 I 는 심볼들에 대한 정수 산술 및 위에서 설명된 동작들 후의 결과를 표시하기 위해 추가된다. 심볼들 "<<" 및 ">>"는 좌측-시프트 및 우측-시프트 연산들을 각각 나타낸다. 또한, 원래의 화소들에 대한 값들의 범위는 이 예에서 [0, 255]이라고 가정된다. 정수 산술은 이 예에서 32-비트 정밀도로 수행될 수도 있다. 중간 보간 값들은 라운딩, 우측-시프트, 및 클리핑 (clipping) 이 수행될 수도 있는 바로 마지막 단계까지 높은 정밀도로 유지될 수도 있다. 따라서, 기본 아이디어는, 다수의 필터링된 화소들이 평균되는 경우, 필터링이 적용되는 경우마다, 즉시 라운딩, 우측-시프트 및 클리핑하는 대신, 이들 연산들은 평균화 단계 후까지 지연될 수도 있다는 것이다.
단계 1-1에 대해, 변경은 필요하지 않다. 단계 1-2에 대해, 비디오 인코더 (20) 는 Q = (Q I + 16) >> 5를 계산할 수도 있다. 단계 1-3에 대해, 비디오 인코더 (20) 는 Q = (Q I + 16) >> 5를 계산할 수도 있다. 단계 1-4에 대해, 비디오 인코더 (20) 는 Q = (Q I + 512) >> 10을 계산할 수도 있다. 단계 2-1에 대해, my = 0이면, 비디오 인코더 (20) 는 Q 1I = P << 5; mx0 = 0이면, Q 2I = (Q 21 << 5); mx1 = 0이면, Q 3I = (Q 31 << 5) 를 계산할 수도 있다. 또한, 단계 2-1에 대해, 비디오 인코더 (20) 는 궁극적으로 최소 255 및 최대 (0, (Q 2I + Q 3J + 1024) >> 11) 로서 Q를 계산할 수도 있다. 단계 2-2에 대해, mx = 0이면, 비디오 인코더 (20) 는 Q 1I = P << 5; my0 = 0이면, Q 2I = (Q 2I << 5); my1 = 0이면, Q 3I = (Q 31 << 5) 를 계산할 수도 있다. 또한, 단계 2-2에 대해, 비디오 인코더 (20) 는 궁극적으로 Q를 최소 255 및 최대 (0, (Q 2I + Q 3I + 1024) >> 11) 로서 계산할 수도 있다.
단계 2-3에 대해, Q 1I, Q 2I, Q 3I, 및 Q 4I 은 각각 (mx0, my0) 및 (mx1, my1) 또는 (mx0, my1) 및 (mx1, my0) 에 대응한다. 이들 값들은 최종 반올림, 우측-시프트, 및 클리핑 단계들이 적용될 필요가 없는 경우를 제외하고 단계 1에 유사한 방식으로 계산될 수도 있다. 그 다음, 단계 1-1을 이용하여 계산된 값들에 대해, 중간 보간된 값은 10만큼 좌측-시프트된다. 단계들 1-2 및 1-3을 이용하여 계산된 값들에 대해, 중간 보간된 값들은 5만큼 좌측-시프트된다. 마지막으로, 비디오 인코더 (20) 는 Q 를 최소 255 및 최대 (0, (Q 1I + Q 2I + Q 3I + Q 4I + 2048) >> 12) 로서 계산할 수도 있다.
참조 색차 블록의 각각의 참조 화소에 대한 값을 계산한 후, 비디오 인코더 (20) 는 인코딩될 색차 블록에 대해 잔차를 계산할 수도 있다. 예를 들어, 비디오 인코더 (20) 는 인코딩될 색차 블록 및 보간된 참조 블록 사이의 차이 값을 계산할 수도 있다. 비디오 인코더 (20) 는, 예를 들어, 차의 절대값 합 (SAD), 차의 제곱 합 (SSD), 평균 절대 차 (MAD), 평균 제곱 차 (MSD), 또는 다른 것들과 같은 다양한 차이 계산 기법들을 이용할 수도 있다.
예측 데이터 및 잔차 데이터를 생성하는 인트라-예측 또는 인터-예측 코딩 다음에, 그리고 변환 계수들을 생성하는 임의의 변환들 (이를테면 H.264/AVC에서 사용된 4x4 또는 8x8 정수 변환 또는 이산 코사인 변환 (DCT)) 다음에, 변환 계수들의 양자화가 수행될 수도 있다. 양자화는 변환 계수들이 그 계수들을 표현하는데 사용된 데이터의 량을 가능한 한 줄이기 위해 양자화 프로세스를 일반적으로 지칭한다. 양자화 프로세스는 계수들의 일부 또는 전부와 연관된 비트 깊이를 감소시킬 수도 있다. 예를 들어, n-비트 값은 양자화 동안에 m-비트 값으로 라운딩 다운 (rounding down) 수도 있으며, 여기서 n 은 m보다 크다.
양자화 다음에, 양자화된 데이터의 엔트로피 코딩이, 예컨대, 콘텐츠 적응 가변 길이 코딩 (CAVLC), 콘텍스트 적응 이진 산술 코딩 (CABAC), 또는 또 다른 엔트로피 코딩 방법론에 따라 수행될 수도 있다. 엔트로피 코딩을 위해 구성된 처리 유닛, 또는 다른 처리 유닛은, 다른 처리 기능들, 이를테면 양자화된 계수들의 제로 런 (run) 길이 코딩 및/또는 코딩된 블록 패턴 (CBP) 값들, 매크로블록 유형, 코딩 모드, 코딩되는 단위 (이를테면 프레임, 슬라이스, 매크로블록, 또는 시퀀스) 에 대한 최대 매크로블록 사이즈 등과 같은 구문 정보의 생성을 수행할 수도 있다.
비디오 디코더 (30) 는 1/8 화소 정밀도 색차 모션 벡터들에 대한 값들을 비디오 인코더 (20) 에 유사한 방식으로 보간하도록 구성될 수도 있다. 참조 색차 블록의 값들을 보간한 후, 비디오 디코더 (30) 는 색차를 디코딩하기 위해, 수신된 잔차 값을 참조 색차 블록에 추가할 수도 있다.
*비디오 인코더 (20) 와 비디오 디코더 (30) 각각은 다양한 적합한 인코더 또는 디코더 회로 중의 임의의 것으로서, 적용가능한 것으로서, 이를테면 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSP들), 주문형 집적회로들 (ASIC들), 필드 프로그램가능 게이트 어레이들 (FPGA들), 개별 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이것들의 임의의 조합으로서 구현될 수도 있다. 비디오 인코더 (20) 및 비디오 디코더 (30) 의 각각은 하나 이상의 인코더들 또는 디코더 내에 구비될 수 있고, 그것들의 각각은 결합형 비디오 인코더/디코더 (CODEC) 의 부분으로서 통합될 수 있다. 비디오 인코더 (20) 및/또는 비디오 디코더 (30) 를 구비한 장치는 집적회로, 마이크로프로세서, 및/또는 무선 통신 디바이스, 이를테면 셀룰러 전화기를 포함할 수도 있다.
도 2는 보간 필터들을 선택하기 위한 기법들을 구현할 수도 있는 비디오 인코더 (20) 의 일 예를 도시하는 블록도이다. 비디오 인코더 (20) 는, 매크로블록들, 또는 매크로블록들의 파티션들 또는 서브-파티션들을 포함하여, 비디오 프레임들 내의 블록들의 인트라- 및 인터-코딩을 수행할 수도 있다. 인트라-코딩은 공간 예측에 의존하여, 주어진 비디오 프레임 내의 비디오에서의 공간적 리던던시를 감소시키거나 제거한다. 인터-코딩은 시간적 예측에 의존하여, 비디오 시퀀스의 인접한 프레임들 내의 비디오에서의 시간적 리던던시를 감소시키거나 제거한다. 인트라-모드 (I-모드) 는 여러 가지 공간 기반 압축 모드들 중의 임의의 것을 지칭할 수도 있고, 단-방향 예측 (P-모드) 또는 양방향 예측 (B-모드) 과 같은 인터-모드들은 여러 가지 공간 기반 압축 모드들 중 임의의 것을 지칭할 수도 있다. 인터-모드 인코딩을 위한 구성요소들이 도 2에서 도시되었지만, 비디오 인코더 (20) 는 인트라-모드 인코딩를 위한 구성요소들을 추가로 구비할 수도 있다는 것이 이해되어야 한다. 그러나, 이러한 구성요소들은 간결함 및 명료함을 위해 예시되지는 않는다.
도 2에 보인 바와 같이, 비디오 인코더 (20) 는 인코딩할 비디오 프레임 내의 현재 비디오 블록을 수신한다. 도 2의 예에서, 비디오 인코더 (20) 는 모션 보상 유닛 (44), 모션 추정 유닛 (42), 참조 프레임 저장부 (64), 합산기 (50), 변환 유닛 (52), 양자화 유닛 (54), 및 엔트로피 코딩 유닛 (56) 을 구비한다. 비디오 블록 재구성을 위해, 비디오 인코더 (20) 는 또한 역 양자화 유닛 (58), 역변환 유닛 (60), 및 합산기 (62) 를 구비한다. 디블로킹 (deblocking) 필터 (도 2에서 미도시) 가 또한 재구성된 비디오로부터 블록키니스 아티팩트 (blockiness artifact) 들을 제거하기 위해 블록 경계들을 필터링하도록 포함될 수도 있다. 원한다면, 디블로킹 필터는 통상 합산기 (62) 의 출력을 필터링할 것이다.
인코딩 프로세스 동안, 비디오 인코더 (20) 는 코딩될 비디오 프레임 또는 슬라이스를 수신한다. 프레임 또는 슬라이스는 다수의 비디오 블록들로 분할될 수도 있다. 모션 추정 유닛 (42) 과 모션 보상 유닛 (44) 은 하나 이상의 참조 프레임들에서 하나 이상의 블록들에 대해 수신된 비디오 블록의 인터-예측 코딩을 수행하여 시간적 압축을 제공한다. 인트라 예측 유닛은 또한 코딩될 블록과 동일한 프레임 또는 슬라이스에서의 하나 이상의 이웃하는 블록들에 대해, 수신된 비디오 블록의 인트라-예측 코딩을 수행하여 공간적 압축을 제공할 수도 있다.
모드 선택 유닛 (40) 은 코딩 모드들 중 하나인, 인트라 또는 인터를, 에러 결과들에 기초하여 선택하고, 결과적인 인트라- 또는 인터-코딩된 블록을, 합산기 (50) 에 제공하여 잔차 블록 데이터를 생성하고, 합산기 (62) 에 제공하여 참조 프레임으로서 사용하기 위한 인코딩된 블록을 재구성할 수도 있다.
모션 추정 유닛 (42) 과 모션 보상 유닛 (44) 은 고도로 통합될 수도 있지만 개념상의 목적들을 위해 별개로 예시된다. 모션 추정은 비디오 블록들에 대한 모션을 추정하는, 모션 벡터들을 생성하는 프로세스이다. 모션 벡터는, 예를 들어, 현재 프레임 내의 코딩 중인 현재 블록 (또는 다른 코딩되는 단위) 에 대한 예측 참조 프레임 내의 예측 블록 (또는 다른 코딩되는 단위) 의 변위를 나타낼 수도 있다. 예측 블록은 차의 절대값 합 (SAD), 차의 제곱 합 (SSD), 또는 다른 차이 메트릭들에 의해 결정될 수도 있는, 화소 차이의 관점에서 코딩될 블록에 밀접하게 매칭되는 것으로 구해진 블록이다. 모션 벡터는 또한 매크로블록의 파티션의 변위를 나타낼 수도 있다. 모션 보상은 모션 추정에 의해 결정된 모션 벡터에 기초하여 예측 블록을 페치 (fetch) 하는 것 또는 생성하는 것을 수반할 수도 있다. 다시, 모션 추정 유닛 (42) 과 모션 보상 유닛 (44) 은 일부 예들에서 기능적으로 통합될 수도 있다.
모션 추정 유닛 (42) 은 비디오 블록을 참조 프레임 저장부 (64) 에서의 참조 프레임의 비디오 블록들과 비교함으로써 인터-코딩된 프레임의 비디오 블록에 대한 모션 벡터를 계산한다. 참조 프레임 저장부 (64) 는, 메모리, 이를테면 임의 접근 메모리 (RAM) 로 구현될 수도 있는 참조 프레임 버퍼를 포함할 수도 있다. 모션 보상 유닛 (44) 은 또한 참조 프레임, 예컨대, I-프레임 또는 P-프레임의 서브 정수 화소들을 보간할 수도 있다. ITU H.264 표준은 참조 프레임들을 "리스트들"이라고 지칭한다. 그러므로, 참조 프레임 저장부 (64) 에 저장된 데이터는 또한 리스트들로서 간주될 수도 있다. 모션 추정 유닛 (42) 는 참조 프레임 저장부 (64) 로부터의 하나 이상의 참조 프레임들 (또는 리스트들) 의 블록들을, 현재 프레임, 예컨대, P-프레임 또는 B-프레임의 인코딩할 블록과 비교한다. 참조 프레임 저장부 (64) 에서의 참조 프레임들이 서브 정수 화소들에 대한 값들을 포함하는 경우, 모션 추정 유닛 (42) 에 의해 계산된 모션 벡터는 참조 프레임의 서브 정수 화소 로케이션을 참조할 수도 있다. 모션 추정 유닛 (42) 은 계산된 모션 벡터를 엔트로피 코딩 유닛 (56) 및 모션 보상 유닛 (44) 에 전송한다. 모션 벡터에 의해 식별된 참조 프레임 블록은 예측 블록이라고 지칭될 수도 있다. 모션 보상 유닛 (44) 은 참조 프레임의 예측 블록에 대한 에러 값들을 계산한다.
모션 보상 유닛 (44) 은 예측 블록에 기초하여 예측 데이터를 계산할 수도 있다. 예를 들어, 모션 보상 유닛 (44) 은 매크로블록의 휘도 및 색차 블록들 모두에 대해 예측 데이터를 계산할 수도 있다. 모션 보상 유닛 (44) 은 참조 블록의 서브 정수 화소 위치들에 대한 값들을 계산하여 색차 예측 블록을 형성하기 위해 이 개시의 기법들을 수행하도록 구성될 수도 있다. 비디오 인코더 (20) 는 코딩되고 있는 원래의 비디오 블록으로부터 모션 보상 유닛 (44) 으로부터의 예측 데이터를 감산함으로써 잔차 비디오 블록을 형성한다. 합산기 (50) 는 이 감산 연산을 수행하는 구성요소 또는 구성요소들을 나타낸다. 변환 유닛 (52) 은 변환, 이를테면 이산 코사인 변환 (DCT) 또는 개념적으로 유사한 변환을 잔차 블록에 적용하여, 잔차 변환 계수 값들을 포함하는 비디오 블록을 생성한다.
변환 유닛 (52) 은 다른 변환들, 이를테면 개념적으로 DCT와 유사한 H.264 표준에 의해 정의된 것들을 수행할 수도 있다. 웨이브릿 변환들, 정수 변환들, 서브-밴드 변환들 또는 다른 유형들의 변환들이 또한 이용될 수도 있다. 어느 경우든, 변환 유닛 (52) 은 잔차 블록에 변환을 적용하여, 잔차 변환 계수들의 블록을 생성한다. 변환은 잔차 정보를 화소 값 도메인으로부터 변환 도메인, 이를테면 주파수 도메인으로 변환할 수도 있다. 양자화 유닛 (54) 은 잔차 변환 계수들을 양자화하여 비트 레이트를 더욱 감소시킨다. 양자화 프로세스는 계수들의 일부 또는 전부와 연관된 비트 깊이를 감소시킬 수도 있다. 양자화 정도는 양자화 파라미터를 조정함으로써 수정될 수도 있다.
양자화 다음에, 엔트로피 코딩 유닛 (56) 은 양자화된 변환 계수들을 엔트로피 코딩한다. 예를 들어, 엔트로피 코딩 유닛 (56) 은 콘텐츠 적응 가변 길이 코딩 (CAVLC), 콘텍스트 적응 이진수 산술 코딩 (CABAC), 또는 다른 엔트로피 코딩 기법을 수행할 수도 있다. 엔트로피 코딩 유닛 (56) 에 의한 엔트로피 코딩 다음에, 인코딩된 비디오는 나중의 전송 또는 취출 (retrieval) 을 위해 다른 디바이스로 송신되거나 또는 보관될 수도 있다. 콘텍스트 적응 이진수 산술 코딩의 경우, 콘텍스트는 이웃하는 매크로블록들에 기초할 수도 있다.
일부 경우들에서, 엔트로피 코딩 유닛 (56) 또는 비디오 인코더 (20) 의 다른 유닛은, 엔트로피 코딩 외에도 다른 코딩 기능들을 수행하도록 구성될 수도 있다. 예를 들어, 엔트로피 코딩 유닛 (56) 은 매크로블록들 및 파티션들에 대한 CBP 값들을 결정하도록 구성될 수도 있다. 또한, 일부 경우들에서, 엔트로피 코딩 유닛 (56) 은 매크로블록 또는 그것의 파티션에서의 계수들의 런 길이 코딩을 수행할 수도 있다. 특히, 엔트로피 코딩 유닛 (56) 은 추가 압축을 위해 지그재그 스캔 또는 다른 스캔 패턴을 적용하여 매크로블록 또는 파티션에서의 변환 계수들을 스캔하고 영들의 런 (run) 들을 인코딩하여 추가 압축할 수도 있다. 엔트로피 코딩 유닛 (56) 은 또한 인코딩된 비디오 비트스트림에서의 전송을 위해, 적절한 구문 (syntax) 요소들을 갖는 헤더 정보를 구성할 수도 있다.
역 양자화 유닛 (58) 및 역 변환 유닛 (60) 은 역 양자화 및 역 변환을 각각 적용하여, 화소 도메인에서 잔차 블록을 예컨대, 참조 블록으로서 나중에 사용하기 위해 재구성한다. 모션 보상 유닛 (44) 은 잔차 블록을 참조 프레임 저장부 (64) 의 프레임들 중 하나의 프레임의 예측 블록에 가산함으로써 참조 블록을 계산할 수도 있다. 모션 보상 유닛 (44) 은 또한 하나 이상의 보간 필터들을 재구성된 잔차 블록에 적용하여 모션 추정에서 사용하기 위한 서브 정수 화소 값들을 계산할 수도 있다. 합산기 (62) 는 재구성된 잔차 블록을 모션 보상 유닛 (44) 에 의해 생성된 모션 보상 예측 블록에 가산하여, 참조 프레임 저장부 (64) 에 저장하기 위한 재구성된 비디오 블록을 생성한다. 재구성된 비디오 블록은 모션 추정 유닛 (42) 및 모션 보상 유닛 (44) 에 의해 후속 비디오 프레임에서의 블록을 인터-코딩하기 위한 참조 블록으로서 사용될 수도 있다.
도 3은 인코딩된 비디오 시퀀스를 디코딩하는 비디오 디코더 (30) 의 일 예를 도시하는 블록도이다. 도 3의 예에서, 비디오 디코더 (30) 는 엔트로피 디코딩 유닛 (70), 모션 보상 유닛 (72), 인트라 예측 유닛 (74), 역 양자화 유닛 (76), 역 변환 유닛 (78), 참조 프레임 저장부 (82) 및 합산기 (80) 를 구비한다. 비디오 디코더 (30) 는, 일부 예들에서, 비디오 인코더 (20) (도 2) 에 대해 설명된 인코딩 패스 (pass) 에 일반적으로 역 (reciprocal) 인 디코딩 패스를 수행할 수도 있다. 모션 보상 유닛 (72) 은 엔트로피 디코딩 유닛 (70) 으로부터 수신된 모션 벡터들에 기초하여 예측 데이터를 생성할 수도 있다.
모션 보상 유닛 (72) 은 비트스트림으로 수신된 모션 벡터들을 이용하여, 참조 프레임 저장부 (82) 의 참조 프레임들에서 예측 블록을 식별할 수도 있다. 모션 보상 유닛 (72) 은 또한 참조 블록의 서브 정수 화소 위치들에 대한 값을 계산하여 색차 예측 블록을 형성하기 위해 이 개시의 기법들을 수행하도록 구성될 수도 있다. 인트라 예측 유닛 (74) 은 비트스트림으로 수신된 인트라 예측 모드들을 이용하여 공간적으로 인접한 블록들로부터 예측 블록을 형성할 수도 있다. 역 양자화 유닛 (76) 은 비트스트림으로 제공되고 엔트로피 디코딩 유닛 (70) 에 의해 디코딩된 양자화된 블록 계수들을 역 양자화 (inverse quantize), 즉, 탈양자화 (de-quantize) 한다. 역 양자화 프로세스는, 예컨대, H.264 디코딩 표준에 의해 정의된 바와 같은, 종래의 프로세스를 포함할 수도 있다. 역 양자화 프로세스는 또한 양자화 정도 및, 마찬가지로 적용되어야 할 역 양자화의 정도를 결정하기 위해, 각각의 매크로블록에 대한 인코더 (50) 에 의해 계산된 양자화 파라미터 QPY의 사용을 포함할 수도 있다.
역 변환 유닛 (58) 은 잔차 블록들을 화소 도메인에서 생성하기 위해 역 변환, 예컨대, 역 DCT, 역 정수 변환, 또는 개념적으로 유사한 역 변환 프로세스를 변환 계수들에 적용한다. 모션 보상 유닛 (72) 은 어쩌면 보간 필터들에 기초한 보간을 수행하여, 모션 보상된 블록들을 생성한다. 서브 화소 정밀도를 갖는 모션 추정에 이용할 보간 필터들에 대한 식별자들은 구문 (syntax) 요소들에 포함될 수도 있다. 모션 보상 유닛 (72) 은 비디오 블록의 인코딩 동안 비디오 인코더 (20) 에 의해 사용되는 것처럼 보간 필터들을 사용하여 참조 블록의 서브 정수 화소들에 대한 보간된 값들을 계산할 수도 있다. 모션 보상 유닛 (72) 은 비디오 인코더 (20) 에 의해 사용된 보간 필터들을 수신된 구문 정보에 따라 결정하고 그 보간 필터들을 사용하여 예측 블록들을 생성할 수도 있다.
모션 보상 유닛 (72) 은, 인코딩된 비디오 시퀀스의 프레임(들)을 인코딩하는데 사용되는 매크로블록들의 사이즈들을 결정하는 구문 정보, 인코딩된 비디오 시퀀스의 프레임의 각각의 매크로블록이 파티셔닝되는 방법을 서술하는 파티션 정보, 각각의 파티션이 인코딩되는 방법을 나타내는 모드들, 각각의 인터-인코딩된 매크로블록 또는 파티션에 대한 하나 이상의 참조 프레임들 (또는 리스트들), 및 인코딩된 비디오 시퀀스를 디코딩하기 위한 다른 정보 중의 몇몇을 사용한다.
합산기 (80) 는 잔차 블록들을 모션 보상 유닛 (72) 또는 인트라-예측 유닛에 의해 생성된 대응하는 예측 블록들과 합산하여 디코딩된 블록들을 형성한다. 원한다면, 디블로킹 필터가 또한 블록형 아티팩트들을 제거하기 위해 디코딩된 블록들을 필터링하는데 적용될 수도 있다. 그 다음 디코딩된 비디오 블록들은 참조 프레임 저장부 (82) 에 저장되며, 이 참조 프레임 저장부는 후속하는 모션 보상을 위한 참조 블록들을 제공하고 또한 디스플레이 디바이스 (이를테면 도 1의 디스플레이 디바이스 (32)) 상의 프레젠테이션을 위한 디코딩된 비디오를 생성한다.
도 4는 완전 화소 위치에 대한 분수 화소 위치들을 예시하는 개념도이다. 특히, 도 4는 완전 화소 (FULL PEL) (100) 에 대한 분수 화소 위치들을 예시한다. 완전 화소 (100) 는 반-화소 위치들 (102A-102C) (HALF PEL 102), 1/4 화소 위치들 (104A-104L) (quarter pel; QTR PEL) (104), 및 1/8-화소 위치들 (106A-106AV) (EGTH PEL 106) 에 대응한다. 이들 위치들 중 하나를 포인팅하는 모션 벡터는, 완전 화소 (100) 의 로케이션에 대응하는 완전 부분들 및 1/8 화소 정밀도를 갖는 분수 부분들을 가지는 수평 및 수직 성분들을 가질 수도 있다.
완전 화소 위치 (100) 에서의 화소에 대한 값은 대응하는 참조 프레임에 포함될 수도 있다. 다시 말하면, 완전 화소 위치 (100) 에서의 화소에 대한 값은, 예컨대, 참조 프레임이 디스플레이되는 경우에 궁극적으로 랜더링 및 디스플레이되는, 참조 프레임에서의 화소의 실제 값에 일반적으로 대응한다. 반 화소 위치들 (102), 1/4 화소 위치들 (104), 및 1/8 화소 위치들 (106) (총칭하여 분수 화소 위치들이라고 지칭됨) 에 대한 값들은 이 개시의 기법들에 따라서 보간될 수도 있다.
특히, 분수 위치들은 수평 성분의 분수 부분 및 수직 성분의 분수 부분을 이용하여 정의될 수도 있다. 수평 분수 부분이, {0, 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8}으로부터 선택될 수도 있는 mx에 대응한다고 둔다. 수직 분수 부분은 {0, 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8}으로부터 선택될 수도 있는 my에 대응한다고 둔다. 필터 F1은 2/8(즉 1/4) 분수 부분들과 연관된 보간 필터일 수도 있다. 필터 F2는 4/8(즉 1/2) 분수 부분들과 연관된 보간 필터일 수도 있다. 필터 F3은 6/8 (즉 3/4) 분수 부분들과 연관된 보간 필터일 수도 있다. F1, F2, 및 F3은, 수평 성분을 위한 필터에 대한 참조 화소들의 라인이 수직 성분을 위한 필터에 대한 참조 화소들의 라인에 직각이라는 점을 제외하고, 본질적으로 수평 및 수직 성분들 양쪽 모두에 대해 동일할 수도 있다.
아래의 표 1은 성분의 분수 부분에 기초하여 1/8 화소 정밀도를 갖는 모션 벡터의 성분의 기여분을 계산하기 위한 기법들을 요약하고 있다. 아래의 표 1은 성분이 수평 성분인지 아니면 수직 성분인지에 따라 정의되는 "이웃하는 화소 (neighboring pixel)" 를 지칭한다. 성분이 수평 성분이면, 이웃하는 화소는 완전 화소 (100) 의 우측-이웃-화소를 지칭한다. 성분이 수직 성분이면, 이웃하는 화소는 완전 화소 (100) 의 아래쪽-이웃하는-화소를 나타낸다.
표 1
Figure pat00002
이런 방식으로, 모션 벡터의 성분이 휘도 모션 벡터의 정밀도를 갖는 모션 벡터에 의해 표현될 수 있는 분수 화소 위치를 나타내는 경우, 비디오 인코더 (20) 는 성분에 대한 기여분을 보간하기 위해 분수 화소 위치와 연관된 보간 필터를 선택할 수도 있다. 한편, 그 성분이 휘도 모션 벡터의 정밀도를 갖는 모션 벡터에 의해 표현될 수 없지만 색차 모션 벡터의 정밀도를 갖는 모션 벡터에 의해 표현될 수 있는 분수 화소 위치를 지칭하는 경우, 비디오 인코더 (20) 는 바로 이웃하는 분수 화소 위치들에 대해 하나 이상의 보간 필터들을 선택할 수도 있다.
도 5a-5c는 대응하는 색차 및 휘도 화소 위치들을 예시하는 개념도들이다. 도 5a-5c는 또한 휘도 모션 벡터들이 색차 블록들에 재사용될 수 있는 방법을 예시한다. 예비적인 사항으로서, 도 5a-5c는 화소 위치들의 부분 행 (row) 을 예시한다. 실사용에서, 완전 화소 위치는 연관된 분수 화소 위치들의 사각형 격자를 가질 수도 있다는 것이 이해되어야 한다. 도 5a-5c의 예는 이 개시에서 설명되는 개념들을 예시하기 위해 의도되고, 분수 색차 화소 위치들 및 분수 휘도 화소 위치들 사이의 대응물들을 망라한 리스팅으로서 의도되지는 않았다.
도 5a-5c는 완전 휘도 화소 위치 (110), 반 휘도 화소 위치 (112), 1/4 휘도 화소 위치들 (114A, 114B), 및 완전 휘도 화소 위치 (116) 를 포함하는 휘도 블록의 화소 위치들을 예시한다. 완전 휘도 화소 위치 (116) 는 완전 휘도 화소 위치 (110) 에 대한 우측-이웃하는 화소 위치라고 간주될 수도 있다.
도 5a-5c는 또한 완전 색차 화소 위치 (120), 반 색차 화소 위치 (122), 1/4 색차 화소 위치 (124), 및 1/8 색차 화소 위치들 (126A, 126B) 을 포함하여, 색차 블록의 대응하는 화소 위치들을 예시한다. 이 예에서, 완전 색차 화소 (120) 는 완전 휘도 화소 (110) 에 대응한다. 게다가, 이 예에서, 색차 블록은 휘도 블록에 대해 2의 팩터에 의해 다운샘플링된다. 따라서, 반 색차 화소 (122) 는 완전 휘도 화소 (116) 에 대응한다. 마찬가지로, 1/4 색차 화소 (124) 는 반 휘도 화소 (112) 에 대응하며, 1/8 색차 화소 (126A) 는 1/4 휘도 화소 (114A) 에 대응하고, 1/8 색차 화소 (126B) 는 1/4 휘도 화소 (114B) 에 대응한다.
도 5a는 완전 휘도 화소 위치 (110) 를 포인팅하는 휘도 모션 벡터 (118A) 의 일 예를 도시한다. 비디오 코딩 유닛, 이를테면 비디오 인코더 (20) 또는 비디오 디코더 (30) 는, 색차 블록에 대한 모션 보상을 수행하는 경우 휘도 모션 벡터 (118A) 를 재사용할 수도 있다. 따라서, 완전 색차 화소 (120) 및 완전 휘도 화소 (110) 사이의 대응으로 인해, 색차 모션 벡터 (128A) 는 완전 색차 화소 (120) 를 포인팅할 수도 있다. 색차 모션 벡터 (128A) 에 의해 포인팅된 화소의 값은 완전 색차 화소 (120) 의 값과 동일할 수도 있다. 따라서, 예측 색차 블록에서의 각각의 화소는 참조 프레임에서의 대응하는 화소와 동일하게 설정될 수도 있다.
도 5b는 반 휘도 화소 위치 (112) 를 포인팅하는 휘도 모션 벡터 (118B) 의 일 예를 도시한다. 색차 모션 벡터 (128B) 는, 결국, 1/4 색차 화소 위치 (124) 를 포인팅한다. 비디오 코딩 유닛은 1/4 색차 화소 위치 (124) 에 대한 값을 1/4 색차 화소 위치 (124) 와 연관된 보간 필터를 사용하여 보간할 수도 있다.
도 5c는 1/4 휘도 화소 위치 (114A) 를 포인팅하는 휘도 모션 벡터 (118C) 의 일 예를 도시한다. 색차 모션 벡터 (128C) 는, 결국, 1/8 색차 화소 위치 (126A) 를 포인팅한다. 비디오 코딩 유닛은 1/4 색차 화소 위치 (124) 에 대한 값을 완전 색차 화소 위치 (120) 의 값 및 1/4 색차 화소 위치 (124) 와 연관된 보간 필터, 예컨대, 필터 F1을 이용하여 보간할 수도 있다. 그 다음 비디오 코딩 유닛은 완전 색차 화소 위치 (120) 의 값 및 1/4 색차 화소 위치 (124) 의 값을 평균하여 1/8 색차 화소 위치 (126A) 에 대한 값을 산출할 수도 있다.
더 높은 정밀도 (예컨대 제 1/8) 가 휘도 모션 벡터들을 위해 사용되는 경우도 있다. 이러한 경우, 색차 화소 위치는 그것이 제 1/8 화소 정밀도를 여전히 가지도록 라운딩 오프 (예컨대, 트런케이팅) 될 수도 있다. 따라서, 이 개시의 기법들은, 색차 및 휘도 모션 벡터들이 동일한 정밀도들을 가지는 경우에도, 색차 화소 위치에서의 색차 값을 결정하기 위해 그런 색차 화소 위치에 여전히 적용될 수도 있다.
도 6은 색차 블록을 인코딩하기 위해 분수 화소 위치들에 대한 값들을 보간하는 일 예의 방법을 도시하는 흐름도이다. 도 6의 방법은 예시의 목적을 위해 비디오 인코더 (20) 에 대해 설명된다. 그러나, 임의의 비디오 인코딩 유닛이 도 6의 방법과 유사한 방법들을 수행하도록 구성될 수도 있다는 것이 이해되어야 한다.
초기에, 비디오 인코더 (20) 는 인코딩될 매크로블록을 수신할 수도 있다 (150). 일부 예들에서, 매크로블록은 네 개의 8x8 화소 휘도 블록들 및 두 개의 8x8 색차 블록들을 포함할 수도 있다. 매크로블록은 각각의 코너에 닿는 (touch) 정확히 하나의 휘도 블록을 가질 수 있어서, 네 개의 휘도 블록들이 함께 휘도 화소들의 16x16 블록을 형성한다. 두 개의 색차 블록들은 서로 및 네 개의 휘도 블록들과 겹쳐질 수도 있다. 더구나, 색차 블록들은 휘도 블록들에 대해 다운샘플링될 수도 있어서, 색차 블록들의 네 개의 코너들의 각각이 매크로블록의 네 개의 코너들의 각각에 닿는다. 비디오 인코더 (20) 는, 도 6에 관해 설명되는 기법들과 유사한 기법들을 이용하여 색차 블록들의 어느 하나 또는 양쪽 모두의 전부 또는 일 부분 (예컨대, 파티션) 을 인코딩하도록 구성될 수도 있다.
비디오 인코더 (20) 는 인터-인코딩 모드에서 매크로블록을 인코딩할 수도 있다. 따라서, 비디오 인코더 (20) 는 하나 이상의 참조 프레임들에 대한 모션 검색을 수행하여 매크로블록에 유사한 참조 프레임에서 블록을 결정할 수도 있다. 더욱이, 비디오 인코더 (20) 는 휘도 블록들 중의 하나에 대해 모션 검색을 수행할 수도 있다 (152). 비디오 인코더 (20) 는 이에 의해 분수 화소 정밀도를 갖는 휘도 모션 벡터를 계산할 수도 있다. 비디오 인코더 (20) 는 모션 검색을 수행하는 경우에 참조 블록의 분수 화소 위치들에 대한 값들을 보간하도록 구성될 수도 있다. 그 다음 비디오 인코더 (20) 는 그 휘도 블록을 인코딩할 수도 있다.
휘도 블록을 인코딩한 후, 비디오 인코더 (20) 는 휘도 모션 벡터를 재사용하여 휘도 모션 벡터에 의해 포인팅된 위치에 대응하는 참조 프레임의 색차 부분에서의 위치를 결정할 수도 있다. 이런 방식으로, 비디오 인코더 (20) 는 휘도 모션 벡터에 대응하는 색차 모션 벡터에 의해 포인팅된 화소 위치를 결정할 수도 있다 (154). 휘도 화소들에 대한 색차 화소들의 다운 샘플링으로 인해, 색차 모션 벡터에 대한 화소 위치는 휘도 화소보다 더 큰 정밀도를 가질 수도 있다. 예를 들어, 휘도 모션 벡터가 1/4 화소 정밀도를 가지는 경우 색차 모션 벡터는 1/8 화소 정밀도를 가질 수도 있다.
그 다음 비디오 인코더 (20) 는 색차 모션 벡터에 의해 식별된 화소들의 블록을 이용하여 색차 블록을 인코딩할 수도 있다. 색차 모션 벡터가 분수 화소 위치를 포인팅하는 경우, 비디오 인코더 (20) 는 참조 프레임에서 색차 모션 벡터에 의해 식별되는 참조 블록의 분수 화소 위치들에 대한 값들을 보간할 수도 있다. 색차 모션 벡터에 대한 화소 위치는 수평 성분 및 수직 성분을 가질 수도 있고, 그것들의 각각은 완전 및 분수 부분들을 가질 수도 있다. 비디오 인코더 (20) 는 참조 블록에서 화소들의 각각의 값들에 대한 수평 기여분을 먼저 계산할 수도 있다 (156).
특히, 비디오 인코더 (20) 는 색차 모션 벡터의 수평 성분이 완전 화소 위치를 포인팅하는지 아니면 분수 화소 위치를 포인팅하는지를 결정할 수도 있다. 수평 성분이 분수 부분을 포인팅한다면, 비디오 인코더 (20) 는 분수 부분에 기초하여 보간 필터들을 선택하여 수평 성분으로부터의 기여분을 보간하는데 이용할 수도 있다. 마찬가지로, 비디오 인코더 (20) 는 수직 성분 기여분을 계산할 수도 있다 (158). 비디오 인코더 (20) 는 수평 성분 기여분 및 수직 성분 기여분을 조합할 수도 있다 (160).
비디오 인코더 (20) 는 이 프로세스를 참조 블록의 각각의 화소에 대해 수행할 수도 있다. 그 다음, 비디오 인코더 (20) 는 인코딩될 색차 블록에 대한 잔차 값을 계산할 수도 있다 (162). 다시 말하면, 비디오 인코더 (20) 는 인코딩될 색차 블록 및 참조 블록 사이의 차이를 계산할 수도 있다. 그 다음 비디오 인코더 (20) 는 잔차를 인코딩하고 출력할 수도 있다 (164). 비디오 인코더 (20) 는 색차 모션 벡터를 인코딩할 필요가 없는데, 이는 디코더가 색차 블록에 대한 인코딩된 잔차 블록을 수신한 후에 휘도 모션 벡터를 재사용하여 인코딩된 색차 블록을 디코딩하기 때문이다.
*도 7은 색차 블록을 디코딩하기 위해 분수 화소 위치들에 대한 값들을 보간하는 일 예의 방법을 도시하는 흐름도이다. 도 7의 방법은 예시의 목적을 위해 비디오 디코더 (30) 에 대해 설명된다. 그러나, 임의의 비디오 디코딩 유닛이 도 7의 방법과 유사한 방법들을 수행하도록 구성될 수도 있다는 것이 이해되어야 한다.
초기에, 비디오 디코더 (30) 는 인코딩된 매크로블록을 수신할 수도 있다 (180). 특히, 비디오 디코더 (30) 는 인터-인코딩 모드에서 인코딩되었던 매크로블록을 수신할 수도 있다. 따라서, 인코딩된 매크로블록은 매크로블록의 인코딩된 휘도 블록들 및 색차 블록들에 대한 하나 이상의 휘도 모션 벡터들 및 잔차 값들을 포함할 수도 있다. 비디오 디코더 (30) 는 먼저 휘도 모션 벡터를 디코딩할 수도 있다 (182). 휘도 블록들을 디코딩한 후, 비디오 디코더 (30) 는 색차 블록들을 디코딩할 수도 있다.
먼저, 비디오 디코더 (30) 는 인코딩된 색차 블록에 대한 참조 프레임의 참조 블록을 식별할 수도 있다. 이 참조 블록은 인코딩된 휘도 블록에 대한 참조 블록과 병치되는 것으로 식별될 수도 있다. 다시 말하면, 비디오 디코더 (30) 는 휘도 모션 벡터를 재사용하여 인코딩된 색차 블록에 대한 참조 블록을 식별할 수도 있다. 그 다음 비디오 디코더 (30) 는 이 개시의 기법들에 따라서 인코딩된 색차 블록에 대한 참조 블록에 대한 값들을 보간할 수도 있다.
비디오 디코더 (30) 는 참조 블록에서 화소들에 대한 분수 화소 위치를 결정할 수도 있다 (184). 색차 모션 벡터가 분수 화소 위치를 포인팅하는 경우, 비디오 디코더 (30) 는 참조 블록의 분수 화소 위치들에 대한 값들을 보간할 수도 있다. 색차 모션 벡터에 대한 화소 위치는 수평 성분 및 수직 성분을 가질 수도 있고, 그것들의 각각은 완전 및 분수 부분들을 가질 수도 있다. 비디오 디코더 (30) 는 먼저 참조 블록에서의 화소들의 각각의 값들에 대해 수평 기여분을 계산할 수도 있다 (186).
특히, 비디오 디코더 (30) 는 색차 모션 벡터의 수평 성분이 완전 화소 위치를 포인팅하는지 또는 분수 화소 위치를 포인팅하는지를 결정할 수도 있다. 수평 성분이 분수 부분을 포인팅한다면, 비디오 인코더 (20) 는 분수 부분에 기초하여 보간 필터들을 선택하여 수평 성분으로부터의 기여분을 보간하는데 이용할 수도 있다. 비슷하게, 비디오 디코더 (30) 는 수직 성분 기여분을 계산할 수도 있다 (188). 비디오 디코더 (30) 는 수평 성분 기여분 및 수직 성분 기여분을 조합할 수도 있다 (190).
그 다음 비디오 디코더 (30) 는 색차 블록에 대한 잔차 값을 디코딩할 수도 있다 (192). 그 다음 비디오 디코더 (30) 는 디코딩된 잔차 값 및 위에서 계산된 참조 블록을 조합하여 색차 블록을 디코딩할 수도 있다 (194). 이런 방식으로, 비디오 디코더 (30) 는 디코딩된 잔차 값 및 참조 블록을 이용하여 색차 블록을 디코딩할 수도 있다. 궁극적으로, 디스플레이 디바이스 (32) 는 디코딩된 색차 블록을 랜더링 및 디스플레이할 수도 있다 (196). 다시 말하면, 디스플레이 디바이스 (32) (또는 목적지 디바이스 (14) 의 다른 유닛) 는 디스플레이되는 화소들에 대한 휘도 값들을 디코딩된 휘도 블록들로부터 그리고 컬러 값들을 디코딩된 색차 블록들로부터 결정할 수도 있다. 디스플레이 디바이스 (32) 는 휘도 및 색차 값들을 포함하는 매크로블록을 디스플레이하기 위하여, 휘도 및 색차 (YPbPr 값들) 로 표현되는 화소들을 적-녹-청 (RGB) 값들로 변환할 수도 있다.
도 8 및 9는 수평 및 수직 성분들 모두에 대한 성분 기여분들을 계산하는데 사용될 보간 필터들을 선택하는 방법들을 예시하는 흐름도들이다. 특히, 비디오 인코더, 디코더, 코덱, 또는 다른 비디오 처리 유닛은 색차 모션 벡터의 성분이 영이 아닌 분수 부분을 포함하는 경우, 도 8 및 9의 방법들을 실행하여 참조 블록들에 대한 값들을 보간할 수도 있다. 도 8 및 9의 예들은 색차 모션 벡터가 1/8 화소 정밀도를 가지는 상황들을 지향하고 있다. 모션 벡터들이 1/8보다 큰 화소 정밀도를 가지는 경우, 유사한 방법들이 참조 블록들에 대한 값들을 계산하기 위해 적용될 수도 있다는 것이 이해되어야 한다. 더구나, 도 8 및 9의 예들은 비디오 인코더 (20) 에 대해 설명되어 있다. 그러나, 유사한 기법들이 비디오 디코더 (30) 또는 다른 비디오 처리 유닛들에 의해 적용될 수도 있다는 것이 이해되어야 한다. 도 8 및 9의 예들은 도 6의 단계들 156 및 158 및 도 7의 단계들 186 및 188에 일반적으로 대응될 수도 있다.
초기에, 비디오 인코더 (20) 는 모션 벡터의 성분의 분수 부분을 결정할 수도 있다 (210). 도 6의 방법이 실행되는 경우 분수 부분이 영이 아니라고 가정된다. 대신 분수 부분이 영이면, 완전 화소의 값은 그 성분에 대해 사용될 수도 있다 (또는 다른 성분이 이미 계산되었다면 다른 성분의 값이 사용될 수도 있다). 도 6의 일 예에서, 이들 방법들이 실행되는 경우, 보간 필터들 (F1, F2, 및 F3) 이 1/4, 2/4, 및 3/4 분수 화소 위치들에 각각 연관된다고도 가정된다.
비디오 인코더 (20) 는 성분의 분수 부분이 세 개의 1/4 화소 위치들 중의 하나의 화소 위치에 대응하는지의 여부를 먼저 결정할 수도 있다. 특히, 비디오 인코더 (20) 는 성분의 분수 부분이 1/4 화소 위치에 대응하는지의 여부를 결정할 수도 있다 (212). 그렇다면 (212의 "예" 분기), 비디오 인코더 (20) 는 필터 F1을 실행하여 생성된 값에 기초하여 성분으로부터 기여분을 결정할 수도 있다 (214). 다른 한편, (212의 "아니오" 분기), 비디오 인코더 (20) 는 성분의 분수 부분이 2/4 (또는 절반) 화소 위치에 대응하는지의 여부를 결정할 수도 있다 (216). 그렇다면 (216의 "예" 분기), 비디오 인코더 (20) 는 필터 F2를 실행하여 생성된 값에 기초하여 성분으로부터 기여분을 결정할 수도 있다 (218). 다른 한편, (216의 "아니오" 분기), 비디오 인코더 (20) 는 성분의 분수 부분이 3/4 화소 위치에 대응하는지의 여부를 결정할 수도 있다 (220). 그렇다면 (220의 "예" 분기), 비디오 인코더 (20) 는 필터 F3을 실행하여 생성된 값에 기초하여 성분으로부터 기여분을 결정할 수도 있다 (222).
그러나, 성분의 분수 부분이 세 개의 1/4 화소 위치들 중의 하나에 대응한다고 비디오 인코더 (20) 가 결정하면, 비디오 인코더 (20) 는 성분의 분수 부분이 네 개의 남아있는 1/8-화소 위치들 중의 하나에 대응하는지의 여부를 결정할 수도 있다. 특히, 비디오 인코더 (20) 는 성분의 분수 부분이 1/8 화소 위치에 대응하는지의 여부를 결정할 수도 있다 (230). 그렇다면 (230의 "예" 분기), 비디오 인코더 (20) 는 완전 화소 값 및 필터 F1을 실행하여 생성된 값을 평균함으로써 성분으로부터 기여분을 결정할 수도 있다 (232). 일부 예들에서, 완전 화소 값을 이용하는 대신, 비디오 인코더 (20) 는 완전 화소와 평가되는 화소 위치의 교차점에서의 위치의 값을, 이 교차점 위치에 대한 값이 이전에 계산되었다고 가정하여, 이용할 수도 있다.
다른 한편, 성분의 분수 부분이 1/8 화소 위치에 대응하지 않으면 (230의 "아니오" 분기), 비디오 인코더 (20) 는 성분의 분수 부분이 3/8 화소 위치에 대응하는지의 여부를 결정할 수도 있다 (234). 성분의 분수 부분이 3/8 화소 위치에 대응한다면 (234의 "예" 분기), 비디오 인코더 (20) 는 필터 F1을 실행하여 생성된 값 및 필터 F2를 실행하여 생성된 값을 평균함으로써 성분으로부터 기여분을 결정할 수도 있다 (236). 다른 한편, 성분의 분수 부분이 3/8 화소 위치에 대응하지 않으면 (234의 "아니오" 분기), 비디오 인코더 (20) 는 성분의 분수 부분이 5/8 화소 위치에 대응하는지의 여부를 결정할 수도 있다 (238). 성분의 분수 부분이 5/8 화소 위치에 대응한다면 (238의 "예" 분기), 비디오 인코더 (20) 는 필터 F2를 실행하여 생성된 값 및 필터 F3을 실행하여 생성된 값을 평균함으로써 성분으로부터 기여분을 결정할 수도 있다 (240).
다른 한편, 성분의 분수 부분이 5/8 화소 위치에 대응하지 않으면 (238의 "아니오" 분기), 다시 말하면, 성분의 분수 부분이 7/8 위치에 대응하는 경우, 비디오 인코더 (20) 는 필터 F3을 실행하여 생성된 값 및 다음의 완전 화소 위치의 값을 평균함으로써 성분으로부터 기여분을 결정할 수도 있다. 일부 예들에서, 다음의 완전 화소의 완전 화소 값을 이용하는 대신, 비디오 인코더 (20) 는 다음의 완전 화소 및 평가되고 있는 화소 위치의 교차점의 위치의 값을, 이 교차점 위치에 대한 값이 이미 계산되었다고 가정하여, 이용할 수도 있다.
도 10은 기존 업-샘플링 필터로부터, 이 개시의 기법들을 따라 사용될 보간 필터들을 생성하는 일 예의 방법을 도시하는 흐름도이다. 예를 들어, 도 10의 방법은 색차 참조 블록의 1/4 화소 위치들과 연관된 필터들 (F1, F2, 및 F3) 을 설계하는데 사용될 수도 있으며, 이를 위해 색차 모션 벡터는 1/8 화소 정밀도를 가질 수도 있다. 비디오 인코더 (20) 에 관해 설명되었지만, 다른 처리 유닛들이 도 10의 방법을 수행할 수도 있다. 비디오 인코더 (20) 가 이 방법을 수행하는 하나의 예에서, 비디오 인코더 (20) 는 각각의 필터의 계수들을 인코딩하고 비디오 디코더 (30) 에 송신할 수도 있다. 기존 업-샘플링 필터는, 알려진 화소에 적용되는 경우, 알려진 화소의 값을 생성해야 한다.
초기에, 비디오 인코더 (20) 는 기존 필터를 수신할 수도 있다 (250). 보간 필터들은 "탭들 (taps)"이라고도 지칭되는 다수의 계수들을 일반적으로 가진다. 비디오 인코더 (20) 는 기존 필터 (252) 의 다수의 탭들을 결정할 수도 있다. 탭들의 수는 (2M+1) 에 의해 표현될 수도 있으며, 여기서 탭들은 0을 중심으로 하고 M은 음이 아닌 정수이다. 그 다음, 비디오 인코더 (20) 는 업샘플링 팩터 (음이 아닌 정수, N으로 표현됨) 를 결정할 수도 있다 (254). 예를 들어, 기존 필터로부터 필터들 (F1, F2, 및 F3) 을 생성하기 위해, 업샘플링 팩터 (N) 는 4이다. 일반적으로, 업샘플링 팩터는 생성될 필터들이 연관될 위치들의 수 + 1을 지칭할 수도 있다.
그 다음 비디오 인코더 (20) 는 기존 필터의 탭들의 서브세트를 분수 화소 위치들의 각각에 대해 선택할 수도 있다 (256). 특히, i는 기존 필터의 특정 계수를 나타낸다고 하자. 다시 말하면, 기존 필터 h 는 계수들 (-M 내지 M) 을 포함하여서, i 는 범위 [-M, M]를 가진다. 그러면, 분수 화소 위치 x에 대해, (i + x)%N = 0이면, 필터로부터의 i 에 대한 계수는 위치 x에 대해 생성된 필터에 포함된다. 모듈로 연산자 %가 A % B = R로서 정의될 수 있고, 여기서 A 및 B는 정수 값들이고, R은 B보다 작은 음이 아닌 정수 값이어서 어떤 정수 값 C에 대해, A * C + R = B라는 것에 유의한다. 따라서, A % B는 -A % B와는 다른 나머지 R 값을 생성할 수도 있다.
일 예로, 기존 업-샘플링 필터 h 는 23개의 계수들을 가질 수 있고, 예컨대, M = 11일 수 있고, 업샘플링 팩터는 4일 수도 있어, 1/4, 2/4 (또는 절반), 및 3/4 화소 위치에 각각 연관되는 세 개의 필터들을 생성할 수도 있다. 그러면 위치 x = 1 (1/4 화소 위치에 대응함) 과 연관된 필터의 계수들의 세트는 {h[-9], h[-5], h[-1], h[3], h[7], h[11]}를 포함할 수도 있다. 위치 x = 2 (2/4 화소 위치에 대응함) 와 연관된 필터의 계수들의 세트는 {h[-10], h[-6], h[-2], h[2], h[6], h[10]}를 포함할 수도 있고, 위치 x = 3 (2/4 화소 위치에 대응함) 과 연관된 필터의 계수들의 세트는 {h[-11], h[-7], h[-3], h[1], h[5], h[9]}를 포함할 수도 있다.
하나 이상의 예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 그것들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현된다면, 그 기능들은 하나 이상의 명령들 또는 코드로서 컴퓨터 판독가능 매체 상에 저장되거나 또는 전송될 수도 있고 하드웨어 기반 처리 유닛에 의해 실행될 수도 있다. 컴퓨터 판독가능 매체들은, 데이터 저장 매체들과 같은 유형의 (tangible) 매체에 대응하는 컴퓨터 판독가능 저장 매체, 또는 예컨대 통신 프로토콜에 따라 한 장소에서 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들을 포함할 수도 있다. 이런 방식으로, 컴퓨터-판독가능 매체들은 일반적으로 (1) 비일시적 (non-transitory) 인 유형의 (tangible) 컴퓨터-판독가능 저장 매체들 또는 (2) 신호 또는 반송파와 같은 통신 매체에 대응될 수도 있다. 데이터 저장 매체는 이 개시에서 설명된 기법들의 구현을 위한 명령들, 코드들 및/또는 데이터 구조들을 검색하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능 매체라도 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독가능 매체를 구비할 수도 있다.
*일부 예들에서, 위의 일 예의 방법에 의해 생성된 필터들은 추가로 리파이닝 될 수도 있다. 예를 들어, 각각의 필터에 대해, 계수들이 1까지 합산되는 것을 보장할 수도 있다. 이는 보간된 값들에 대해 DC 바이어스를 도입하는 것을 피할 수도 있다. 다른 예로서, 원래의 저역 통과 필터 h[n]에 대해, n이 0이 아닌 경우 h[0] = 1 및 h[N*n] = 0을 보장할 수도 있다. 이는 필터링하는 경우 x[n]의 원래의 샘플들에 영향을 주는 것을 피할 수도 있다.
구현의 목적을 위해, 필터 계수들은 모든 계수들이 2의 거듭제곱인 공통 분모를 가지는 분수들로서 표현될 수도 있다. 예를 들어, 공통 분모는 32일 수도 있다. 필터를 실행하는 경우, 필터 계수들은 공통 분모 (예컨대, 32) 에 의해 승산되고 가장 가까운 정수로 라운딩 오프될 수도 있다. 필터 계수들이 공통 분모, 예컨대, 32까지 합산되는 것을 보장하기 위해 ±1만큼의 추가 조정이 이루어질 수도 있다.
본 명세서에 설명되는 실시형태들이 "매크로블록들"의 인코딩에 관해 논해졌지만, 본 명세서에서 설명되는 시스템들 및 방법들은 비디오 데이터의 단위들을 정의하는 화소들의 임의의 적합한 파티셔닝에 적용된다는 것이 이해되어야 한다. 특히, 용어 "블록"은 처리 및 및 코딩을 위한 단위들로의 비디오 데이터의 임의의 적합한 파티셔닝을 나타낼 수도 있다.
비제한적인 예로서, 이러한 컴퓨터 판독가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타의 광 디스크 스토리지, 자기 디스크 스토리지, 또는 기타 자기 저장 기기들, 플래시 메모리, 또는 소망의 프로그램 코드를 컴퓨터에 의해 액세스될 수 있는 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속이 적절히 컴퓨터 판독가능 매체라고 칭해진다. 예를 들어, 명령들이 웹사이트, 서버, 또는 다른 원격 소스로부터 동축 케이블, 광섬유 케이블, 연선 (twisted pair), 디지털 가입자 회선 (DSL), 또는 무선 기술들 이를테면 적외선, 라디오, 및/또는 마이크로파를 이용하여 전송된다면, 동축 케이블, 광섬유 케이블, 연선, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술은 매체의 정의에 포함된다. 그러나, 컴퓨터-판독가능 저장 매체들 및 데이터 저장 매체들은 접속들, 반송파들, 신호들, 또는 다른 일시적인 매체들을 포함하지 않지만, 대신 비-임시적 (non-transient), 비-일시적, 유형의 저장 매체들을 가리킨다는 것이 이해되어야 한다. 디스크 (Disk 및 disc) 는 여기서 사용되는 바와 같이, 콤팩트 디스크 (compact disc, CD), 레이저 디스크, 광 디스크, 디지털 다용도 디스크 (DVD), 플로피 디스크 (floppy disk) 및 블루레이 디스크를 포함하는데, 디스크 (disk) 들은 보통 데이터를 자기적으로 재생하지만, 디스크 (disc) 들은 레이저들로써 광학적으로 데이터를 재생한다. 상기한 것들의 조합들도 컴퓨터 판독가능 미디어의 범위 내에 포함되어야 한다.
명령들은 하나 이상의 프로세서들, 이를테면 하나 이상의 디지털 신호 프로세서들 (DSP들), 범용 마이크로프로세서들, 주문형 집적회로들 (ASIC들), 필드 프로그램가능 로직 어레이들 (FPGA들), 또는 기타 동등한 집적 또는 개별 로직 회로에 의해 실행될 수도 있다. 따라서, 여기서 사용된 용어 "프로세서"는 앞서의 구조 또는 여기서 설명된 기법들의 구현에 적합한 임의의 다른 구조 중의 어느 것이라도 말할 수 있다. 또한, 일부 양태들에서, 여기서 설명된 기능은 인코딩 및 디코딩를 위해 구성되는, 또는 결합형 코덱 (codec) 으로 통합되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수 있다. 또한, 기법들은 하나 이상의 회로들 또는 로직 요소들 내에 완전히 구현될 수 있다.
이 개시의 기법들은 무선 핸드셋, 집적회로 (IC) 또는 한 세트의 IC들 (예컨대, 칩 셋) 을 포함하여, 매우 다양한 디바이스들 또는 장치들로 구현될 수도 있다. 다양한 구성요소들, 모듈들, 또는 유닛들이 개시된 기법들을 수행하도록 구성되는 디바이스들의 기능상 양태들을 강조하기 위해 이 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 오히려, 위에서 설명된 바와 같이, 다양한 유닛들은 코덱 하드웨어 유닛에 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명된 바와 같은 하나 이상의 프로세서들을 포함하는, 상호운용적 하드웨어 유닛들의 컬렉션에 의해 제공될 수 있다.
여러 가지 예들이 설명되어 있다. 이들 및 다른 예들은 다음의 청구항들의 범위 내에 있다.

Claims (21)

  1. 색차 블록에 대응하는 비디오 데이터의 휘도 블록에 대한 휘도 모션 벡터에 기초하여 비디오 데이터의 색차 블록에 대한 색차 모션 벡터를 결정하는 단계로서, 상기 색차 모션 벡터는 제 1 분수 부분을 갖는 수평 성분 및 제 2 분수 부분을 갖는 수직 성분을 포함하며, 상기 휘도 모션 벡터는 제 1 정밀도를 가지고, 상기 색차 모션 벡터는 제 1 정밀도를 초과하는 제 2 정밀도를 가지며, 상기 제 1 분수 부분 및 제 2 분수 부분은 상기 제 2 정밀도를 가지는 상기 색차 모션 벡터가 참조하는 실제 분수 화소 위치를 정의하고, 상기 실제 분수 화소 위치는 상기 제 2 정밀도 미만의 정밀도를 갖는 모션 벡터에 의해서가 아니라 상기 제 2 정밀도를 갖는 모션 벡터에 의해 식별 가능한, 상기 색차 모션 벡터를 결정하는 단계;
    상기 수평 성분의 제 1 분수 부분 및 상기 수직 성분의 제 2 분수 부분에 기초하여 보간 필터들의 세트로부터 하나 이상의 보간 필터들을 선택하는 단계로서, 각각의 상기 보간 필터들의 세트는, 상기 선택된 보간 필터들이 상기 실제 분수 화소 위치에 대응하도록, 상기 제 2 정밀도를 갖는 모션 벡터에 의해 식별 가능한 분수 화소 위치에 연관되고, 각각의 상기 보간 필터들의 세트는 2 개보다 많은 탭들을 포함하는,상기 보간 필터들을 선택하는 단계;
    상기 선택된 보간 필터들을 사용하여 상기 제 2 정밀도를 가지는 상기 색차 모션 벡터에 의해 식별된 참조 블록에 대한 값들을 보간하는 단계로서, 상기 참조 블록은 상기 실제 분수 화소 위치를 포함하는, 상기 참조 블록에 대한 값들을 보간하는 단계; 및
    상기 참조 블록을 이용하여 상기 색차 블록을 예측하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  2. 제 1 항에 있어서,
    상기 휘도 모션 벡터는 1/4 화소 정밀도를 가지고, 상기 색차 모션 벡터는 1/8 화소 정밀도를 가지는, 비디오 데이터를 코딩하는 방법.
  3. 제 1 항에 있어서,
    상기 참조 블록의 각각의 값들에 대한 상기 보간을 완료한 후에만 상기 보간의 결과로부터의 상기 참조 블록의 상기 값들에 대해 반올림 연산을 수행하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법.
  4. 제 1 항에 있어서,
    상기 보간 필터들의 각각이 상기 제 2 정밀도를 갖는 모션 벡터에 의해 식별 가능한 분수 화소 위치와 연관되도록 기존 업샘플링 필터로부터 보간 필터들의 세트를 생성하는 단계를 더 포함하는, 비디오 데이터를 코딩하는 방법.
  5. 제 1 항에 있어서,
    상기 색차 모션 벡터를 결정하는 단계는, 상기 색차 블록 및 상기 휘도 블록을 포함하는 매크로블록을 인코딩하기 위해 상기 휘도 모션 벡터를 계산하는 단계를 포함하고,
    상기 색차 블록을 예측하는 단계는,
    상기 색차 블록 및 상기 참조 블록 사이의 차이에 기초하여 상기 색차 블록에 대한 잔차 색차 값을 계산하는 단계; 및
    상기 잔차 색차 값을 출력하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  6. 제 1 항에 있어서,
    상기 색차 모션 벡터를 결정하는 단계는, 상기 색차 블록 및 상기 휘도 블록을 포함하는 인코딩된 매크로블록에 대한 휘도 모션 벡터를 디코딩하는 단계를 포함하고,
    상기 색차 블록을 예측하는 단계는,
    상기 색차 블록에 대한 잔차 색차 값을 디코딩하는 단계; 및
    상기 참조 블록 및 상기 디코딩된 잔차 색차 값을 이용하여 상기 색차 블록을 디코딩하는 단계를 포함하는, 비디오 데이터를 코딩하는 방법.
  7. 비디오 데이터를 코딩하는 장치로서,
    참조 프레임 데이터를 저장하도록 구성되는 메모리; 및
    상기 메모리와 통신하는 프로세서를 포함하고,
    상기 프로세서는,
    색차 블록에 대응하는 비디오 데이터의 휘도 블록에 대한 휘도 모션 벡터에 기초하여 비디오 데이터의 색차 블록에 대한 색차 모션 벡터를 결정하고, 상기 색차 모션 벡터가 제 1 분수 부분을 갖는 수평 성분 및 제 2 분수 부분을 갖는 수직 성분을 포함하며, 상기 휘도 모션 벡터가 제 1 정밀도를 가지며, 상기 색차 모션 벡터는 제 1 정밀도를 초과하는 제 2 정밀도를 갖고, 상기 제 1 분수 부분 및 제 2 분수 부분은 상기 제 2 정밀도를 가지는 상기 색차 모션 벡터가 참조하는 실제 분수 화소 위치를 정의하며, 상기 실제 분수 화소 위치는 상기 제 2 정밀도 미만의 정밀도를 갖는 모션 벡터에 의해서가 아니라 상기 제 2 정밀도를 갖는 모션 벡터에 의해 식별 가능하고;
    상기 수평 성분의 제 1 분수 부분 및 상기 수직 성분의 제 2 분수 부분에 기초하여 보간 필터들의 세트로부터 하나 이상의 보간 필터들을 선택하고, 각각의 상기 보간 필터들의 세트들은, 상기 선택된 보간 필터들이 상기 실제 분수 화소 위치에 대응하도록, 상기 제 2 정밀도를 갖는 모션 벡터에 의해 식별 가능한 분수 화소 위치에 연관되고, 각각의 상기 보간 필터들의 세트는 2 개보다 많은 탭들을 포함하며,
    상기 선택된 보간 필터들 및 상기 참조 프레임 데이터를 사용하여 상기 제 2 정밀도를 가지는 상기 색차 모션 벡터에 의해 식별된 참조 블록에 대한 값들을 보간하고, 상기 참조 블록은 상기 실제 분수 화소 위치를 포함하며; 및
    상기 참조 블록을 이용하여 상기 색차 블록을 예측하도록 구성되는, 비디오 데이터를 코딩하는 장치.
  8. 제 7 항에 있어서,
    상기 휘도 모션 벡터는 1/4 화소 정밀도를 가지고, 상기 색차 모션 벡터는 1/8 화소 정밀도를 가지는, 비디오 데이터를 코딩하는 장치.
  9. 제 7 항에 있어서,
    상기 프로세서는, 상기 보간 필터들의 각각이 상기 제 2 정밀도를 갖는 모션 벡터에 의해 식별 가능한 분수 화소 위치와 연관되도록 기존 업샘플링 필터로부터 보간 필터들의 세트를 생성하도록 구성된, 비디오 데이터를 코딩하는 장치.
  10. 제 7 항에 있어서,
    상기 색차 블록을 예측하기 위해, 상기 프로세서는,
    상기 색차 블록 및 상기 참조 블록 사이의 차이에 기초하여 상기 색차 블록에 대한 잔차 색차 값을 계산하고; 및
    상기 잔차 색차 값을 출력하도록 구성된, 비디오 데이터를 코딩하는 장치.
  11. 제 7 항에 있어서,
    상기 색차 블록을 예측하기 위해, 상기 프로세서는,
    상기 참조 블록 및 수신된 잔차 색차 값으로부터 상기 색차 블록을 재구성하도록 구성된, 비디오 데이터를 코딩하는 장치.
  12. 비디오 데이터를 코딩하는 장치로서,
    색차 블록에 대응하는 비디오 데이터의 휘도 블록에 대한 휘도 모션 벡터에 기초하여 비디오 데이터의 색차 블록에 대한 색차 모션 벡터를 결정하는 수단으로서, 상기 색차 모션 벡터는 제 1 분수 부분을 갖는 수평 성분 및 제 2 분수 부분을 갖는 수직 성분을 포함하며, 상기 휘도 모션 벡터는 제 1 정밀도를 가지고, 상기 색차 모션 벡터는 제 1 정밀도를 초과하는 제 2 정밀도를 가지고, 상기 제 1 정밀도 및 상기 제 2 정밀도는 상기 제 2 정밀도를 가지는 상기 색차 모션 벡터가 참조하는 실제 분수 화소 위치를 정의하고, 상기 실제 분수 화소 위치는 상기 제 2 정밀도 미만의 정밀도를 갖는 모션 벡터에 의해서가 아니라 상기 제 2 정밀도를 갖는 모션 벡터에 의해 식별 가능한, 상기 색차 모션 벡터를 결정하는 수단;
    상기 수평 성분의 제 1 분수 부분 및 상기 수직 성분의 제 2 분수 부분에 기초하여 보간 필터들의 세트로부터 하나 이상의 보간 필터들을 선택하는 수단으로서, 각각의 상기 보간 필터들의 세트들은, 상기 선택된 보간 필터들이 상기 실제 분수 위치 화소에 대응하도록, 상기 제 2 정밀도를 갖는 모션 벡터에 의해 식별 가능한 분수 위치 화소에 연관되고, 각각의 상기 보간 필터들의 세트는 2 개보다 많은 탭들을 포함하는, 상기 보간 필터들을 선택하는 수단;
    상기 선택된 보간 필터들을 사용하여 상기 제 2 정밀도를 가지는 상기 색차 모션 벡터에 의해 식별된 참조 블록에 대한 값들을 보간하는 수단으로서, 상기 참조 블록은 상기 실제 분수 화소 위치를 포함하는, 상기 참조 블록에 대한 값들을 보간하는 수단; 및
    상기 참조 블록을 이용하여 상기 색차 블록을 예측하는 수단을 포함하는, 비디오 데이터를 코딩하는 장치.
  13. 제 12 항에 있어서,
    상기 휘도 모션 벡터는 1/4 화소 정밀도를 가지고, 상기 색차 모션 벡터는 1/8 화소 정밀도를 가지는, 비디오 데이터를 코딩하는 장치.
  14. 제 12 항에 있어서,
    상기 보간 필터들의 각각이 상기 제 2 정밀도를 갖는 모션 벡터에 의해 식별 가능한 분수 화소 위치와 연관되도록 기존 업샘플링 필터로부터 보간 필터들의 세트를 생성하는 수단을 더 포함하는, 비디오 데이터를 코딩하는 장치.
  15. 제 12 항에 있어서,
    상기 색차 블록을 예측하는 수단은,
    상기 색차 블록 및 상기 참조 블록 사이의 차이에 기초하여 상기 색차 블록에 대한 잔차 색차 값을 계산하는 수단; 및
    상기 잔차 색차 값을 출력하는 수단을 포함하는, 비디오 데이터를 코딩하는 장치.
  16. 제 12 항에 있어서,
    상기 색차 블록을 예측하는 수단은,
    상기 참조 블록 및 수신된 잔차 색차 값으로부터 상기 색차 블록을 재구성하는 수단을 포함하는, 비디오 데이터를 코딩하는 장치.
  17. 컴퓨터 판독가능 저장 매체로서,
    실행될 때 프로세서로 하여금,
    색차 블록에 대응하는 비디오 데이터의 휘도 블록에 대한 휘도 모션 벡터에 기초하여 비디오 데이터의 색차 블록에 대한 색차 모션 벡터를 결정하도록 하는 명령들로서, 상기 색차 모션 벡터가 제 1 분수 부분을 갖는 수평 성분 및 제 2 분수 부분을 갖는 수직 성분을 포함하며, 상기 휘도 모션 벡터가 제 1 정밀도를 가지며, 상기 색차 모션 벡터는 제 1 정밀도를 초과하는 제 2 정밀도를 가지고, 상기 제 1 분수 부분 및 제 2 분수 부분은 상기 제 2 정밀도를 가지는 상기 색차 모션 벡터가 참조하는 실제 분수 화소 위치를 정의하고, 상기 실제 분수 화소 위치는 상기 제 2 정밀도보다 작은 정밀도를 갖는 모션 벡터에 의해서가 아니라 상기 제 2 정밀도를 갖는 모션 벡터에 의해 식별 가능한, 상기 모션 벡터를 결정하도록 하는 명령들;
    상기 수평 성분의 제 1 분수 부분 및 상기 수직 성분의 제 2 분수 부분에 기초하여 보간 필터들의 세트로부터 하나 이상의 보간 필터들을 선택하도록 하는 명령들로서, 각각의 상기 보간 필터들의 세트들은, 상기 선택된 보간 필터들이 상기 실제 분수 화소 위치에 대응하도록, 상기 제 2 정밀도를 갖는 모션 벡터에 의해 식별 가능한 분수 화소 위치와 연관되고, 각각의 상기 보간 필터들의 세트는 2 개보다 많은 탭들을 포함하는, 상기 보간 필터들을 선택하도록 하는 명령들;
    상기 선택된 보간 필터들을 사용하여 상기 제 2 정밀도를 가지는 상기 색차 모션 벡터에 의해 식별된 참조 블록에 대한 값들을 보간하도록 하는 명령들로서, 상기 참조 블록은 상기 실제 분수 화소 위치를 포함하도록 하는, 상기 참조 블록에 대한 값들을 보간하도록 하는 명령들; 및
    상기 참조 블록을 이용하여 상기 색차 블록을 예측하도록 하는 명령들을 저장하여 갖는, 컴퓨터 판독가능 저장 매체.
  18. 제 17 항에 있어서,
    상기 휘도 모션 벡터는 1/4 화소 정밀도를 가지고, 상기 색차 모션 벡터는 1/8 화소 정밀도를 가지는, 컴퓨터 판독가능 저장 매체.
  19. 제 17 항에 있어서,
    상기 프로세서로 하여금, 상기 보간 필터들의 각각이 상기 제 2 정밀도를 갖는 모션 벡터에 의해 식별 가능한 분수 화소 위치와 연관되도록 기존 업샘플링 필터로부터 보간 필터들의 세트를 생성하도록 하는 명령들을 더 포함하는, 컴퓨터 판독가능 저장 매체.
  20. 제 17 항에 있어서,
    상기 프로세서로 하여금 상기 색차 블록을 예측하도록 하는 명령들은,
    상기 프로세서로 하여금,
    상기 색차 블록 및 상기 참조 블록 사이의 차이에 기초하여 상기 색차 블록에 대한 잔차 색차 값을 계산하도록 하는 명령들; 및
    상기 잔차 색차 값을 출력하는 것을 하도록 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
  21. 제 17 항에 있어서,
    상기 프로세서로 하여금 상기 색차 블록을 예측하도록 하는 명령들은,
    상기 프로세서로 하여금, 상기 참조 블록들 및 수신된 잔차 색차 값으로부터 상기 색차 블록을 재구성하도록 하는 명령들을 포함하는, 컴퓨터 판독가능 저장 매체.
KR1020157000409A 2010-02-18 2011-02-16 모션 보간을 위한 색차 고 정밀도 모션 필터링 KR20150020669A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US30589110P 2010-02-18 2010-02-18
US61/305,891 2010-02-18
US13/011,634 2011-01-21
US13/011,634 US20110200108A1 (en) 2010-02-18 2011-01-21 Chrominance high precision motion filtering for motion interpolation
PCT/US2011/025122 WO2011103209A2 (en) 2010-02-18 2011-02-16 Chrominance high precision motion filtering for motion interpolation

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020127024255A Division KR20120128691A (ko) 2010-02-18 2011-02-16 모션 보간을 위한 색차 고 정밀도 모션 필터링

Publications (1)

Publication Number Publication Date
KR20150020669A true KR20150020669A (ko) 2015-02-26

Family

ID=44369624

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020157000409A KR20150020669A (ko) 2010-02-18 2011-02-16 모션 보간을 위한 색차 고 정밀도 모션 필터링
KR1020127024255A KR20120128691A (ko) 2010-02-18 2011-02-16 모션 보간을 위한 색차 고 정밀도 모션 필터링

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020127024255A KR20120128691A (ko) 2010-02-18 2011-02-16 모션 보간을 위한 색차 고 정밀도 모션 필터링

Country Status (7)

Country Link
US (1) US20110200108A1 (ko)
EP (1) EP2537342A2 (ko)
JP (1) JP5646654B2 (ko)
KR (2) KR20150020669A (ko)
CN (1) CN102792698B (ko)
TW (1) TWI523494B (ko)
WO (1) WO2011103209A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018097590A1 (ko) * 2016-11-22 2018-05-31 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105635737B (zh) 2010-04-09 2019-03-15 Lg电子株式会社 处理视频数据的方法和装置
EP4250732B1 (en) 2011-01-07 2024-03-20 Nokia Technologies Oy Motion prediction in video coding
US9313519B2 (en) 2011-03-11 2016-04-12 Google Technology Holdings LLC Interpolation filter selection using prediction unit (PU) size
US9264725B2 (en) 2011-06-24 2016-02-16 Google Inc. Selection of phase offsets for interpolation filters for motion compensation
WO2013006573A1 (en) 2011-07-01 2013-01-10 General Instrument Corporation Joint sub-pixel interpolation filter for temporal prediction
US10536701B2 (en) 2011-07-01 2020-01-14 Qualcomm Incorporated Video coding using adaptive motion vector resolution
GB2501535A (en) * 2012-04-26 2013-10-30 Sony Corp Chrominance Processing in High Efficiency Video Codecs
US9307252B2 (en) * 2012-06-04 2016-04-05 City University Of Hong Kong View synthesis distortion model for multiview depth video coding
US9338452B2 (en) * 2012-07-09 2016-05-10 Qualcomm Incorporated Motion vector difference coding extension for enhancement layer
US20140078394A1 (en) * 2012-09-17 2014-03-20 General Instrument Corporation Selective use of chroma interpolation filters in luma interpolation process
US10205962B2 (en) * 2013-03-15 2019-02-12 Raymond Zenkich System and method for non-uniform video coding
WO2014163454A1 (ko) * 2013-04-05 2014-10-09 삼성전자주식회사 휘도차를 보상하기 위한 인터 레이어 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9883197B2 (en) * 2014-01-09 2018-01-30 Qualcomm Incorporated Intra prediction of chroma blocks using the same vector
GB201500719D0 (en) 2015-01-15 2015-03-04 Barco Nv Method for chromo reconstruction
JP2018533871A (ja) * 2015-11-11 2018-11-15 サムスン エレクトロニクス カンパニー リミテッド ビデオ復号方法及びその装置、並びにビデオ符号化方法及びその装置
US10009622B1 (en) 2015-12-15 2018-06-26 Google Llc Video coding with degradation of residuals
US10341659B2 (en) * 2016-10-05 2019-07-02 Qualcomm Incorporated Systems and methods of switching interpolation filters
KR20230033027A (ko) * 2016-11-01 2023-03-07 삼성전자주식회사 부호화 방법 및 그 장치, 복호화 방법 및 그 장치
US20220174277A1 (en) * 2019-03-11 2022-06-02 Telefonaktiebolaget Lm Ericsson (Publ) Video coding involving gop-based temporal filtering
US11303892B2 (en) * 2020-01-23 2022-04-12 Qualcomm Incorporated Adaptive rounding for loop filters
WO2023131211A1 (en) * 2022-01-05 2023-07-13 Beijing Bytedance Network Technology Co., Ltd. Method, apparatus, and medium for video processing

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1193977B1 (en) * 1997-06-09 2003-08-27 Hitachi, Ltd. Image sequence coding method
US6950469B2 (en) * 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
US7305034B2 (en) * 2002-04-10 2007-12-04 Microsoft Corporation Rounding control for multi-stage interpolation
US7116831B2 (en) * 2002-04-10 2006-10-03 Microsoft Corporation Chrominance motion vector rounding
JP4144339B2 (ja) * 2002-11-29 2008-09-03 富士通株式会社 動画像符号化方法及び動画像複号化方法
US7391933B2 (en) * 2003-10-30 2008-06-24 Samsung Electronics Co., Ltd. Method and apparatus for image interpolation based on adaptive polyphase filters
US20050105621A1 (en) * 2003-11-04 2005-05-19 Ju Chi-Cheng Apparatus capable of performing both block-matching motion compensation and global motion compensation and method thereof
US7505636B2 (en) * 2004-03-04 2009-03-17 Broadcom Corporation System and method for two-pass interpolation for quarter-pel motion compensation
WO2005104564A1 (ja) * 2004-04-21 2005-11-03 Matsushita Electric Industrial Co., Ltd. 動き補償装置
US8130827B2 (en) * 2004-08-13 2012-03-06 Samsung Electronics Co., Ltd. Method and apparatus for interpolating a reference pixel in an annular image and encoding/decoding an annular image
US7653132B2 (en) * 2004-12-21 2010-01-26 Stmicroelectronics, Inc. Method and system for fast implementation of subpixel interpolation
US8208564B2 (en) * 2005-06-24 2012-06-26 Ntt Docomo, Inc. Method and apparatus for video encoding and decoding using adaptive interpolation
CN1794821A (zh) * 2006-01-11 2006-06-28 浙江大学 可分级视频压缩中插值的方法与装置
KR101354659B1 (ko) * 2006-11-08 2014-01-28 삼성전자주식회사 멀티 코덱을 지원하는 움직임 보상 방법 및 장치
US8804831B2 (en) * 2008-04-10 2014-08-12 Qualcomm Incorporated Offsets at sub-pixel resolution
CN101527847B (zh) * 2009-01-04 2012-01-04 炬力集成电路设计有限公司 运动补偿插值装置和方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018097590A1 (ko) * 2016-11-22 2018-05-31 한국전자통신연구원 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체

Also Published As

Publication number Publication date
TW201204045A (en) 2012-01-16
WO2011103209A3 (en) 2012-09-13
JP5646654B2 (ja) 2014-12-24
US20110200108A1 (en) 2011-08-18
KR20120128691A (ko) 2012-11-27
TWI523494B (zh) 2016-02-21
EP2537342A2 (en) 2012-12-26
CN102792698A (zh) 2012-11-21
CN102792698B (zh) 2016-09-14
WO2011103209A2 (en) 2011-08-25
JP2013520876A (ja) 2013-06-06

Similar Documents

Publication Publication Date Title
KR20150020669A (ko) 모션 보간을 위한 색차 고 정밀도 모션 필터링
JP6672226B2 (ja) 大型マクロ・ブロックを用いたビデオ・コーディング
US10250908B2 (en) Adaptive transform size selection for geometric motion partitioning
KR101513379B1 (ko) 비디오 코딩을 위한 적응적 모션 벡터 레솔루션 시그널링
KR101626734B1 (ko) 비디오 코딩을 위한 인트라 평활 필터
EP2727353B1 (en) Video coding using adaptive motion vector resolution
KR101387255B1 (ko) 비디오 코딩을 위한 적응적 모션 분해능
KR101515696B1 (ko) 기하학적 모션 파티셔닝을 위한 고정 소수점 구현
KR101208384B1 (ko) 비디오 코딩에서 모션 보상을 위한 어드밴스드 보간 기술
JP2017508346A (ja) ビデオコーディングのための適応的な動きベクトル分解シグナリング
KR20130084308A (ko) 비디오 코딩에 대한 구문 엘리먼트들의 공동 코딩
KR101646856B1 (ko) 감소된 해상도 화소 보간

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
J301 Trial decision

Free format text: TRIAL NUMBER: 2016101004908; TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20160823

Effective date: 20180807