KR20110074565A - 스위칭된 보간 필터들에서의 오프셋 계산 - Google Patents

스위칭된 보간 필터들에서의 오프셋 계산 Download PDF

Info

Publication number
KR20110074565A
KR20110074565A KR1020117009307A KR20117009307A KR20110074565A KR 20110074565 A KR20110074565 A KR 20110074565A KR 1020117009307 A KR1020117009307 A KR 1020117009307A KR 20117009307 A KR20117009307 A KR 20117009307A KR 20110074565 A KR20110074565 A KR 20110074565A
Authority
KR
South Korea
Prior art keywords
offset
prediction
block
values
pass
Prior art date
Application number
KR1020117009307A
Other languages
English (en)
Other versions
KR101313956B1 (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 KR20110074565A publication Critical patent/KR20110074565A/ko
Application granted granted Critical
Publication of KR101313956B1 publication Critical patent/KR101313956B1/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
    • 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
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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/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)

Abstract

본 개시물은 비디오 코딩 동안 예측 비디오 블록들에 오프셋을 부가하는 기술들을 설명한다. 일 예에서, 비디오 블록을 인코딩하는 방법은, 기준 데이터의 제 1 리스트 내의 제 1 기준 비디오 유닛에 기초하여 제 1 블록의 예측 값들을 보간하고, 기준 데이터의 제 2 리스트 내의 제 2 기준 비디오 유닛에 기초하여 제 2 블록의 예측 값들을 보간하는 단계, 서브-정수 픽셀 포지션들에 대해, 제 1 블록의 예측 값들 및 현재 비디오 블록에 기초하여 제 1 오프셋 값을 계산하고, 제 1 오프셋 값 및 제 2 블록의 예측 값들에 기초하여 제 2 오프셋 값을 계산하는 단계, 제 1 블록의 예측 값들, 제 2 블록의 예측 값들, 제 1 오프셋 값들 및 제 2 오프셋 값들에 기초하여 최종 블록의 오프셋 값들을 결정하는 단계, 및 최종 블록의 오프셋 값들에 기초하여 현재 비디오 블록을 인코딩하는 단계를 포함한다.

Description

스위칭된 보간 필터들에서의 오프셋 계산{OFFSET CALCULATION IN SWITCHED INTERPOLATION FILTERS}
본 출원은 전체 내용이 여기에 참조에 의해 통합되는, 2008년 9월 23일자로 출원된 미국 가출원 제61/099,509호의 이익을 주장한다.
본 개시물은 디지털 비디오 코딩에 관한 것으로, 더 상세하게는, 비디오 코딩에 이용되는 예측 데이터에 오프셋들이 적용되는 기술들에 관한 것이다.
디지털 비디오 능력들은 디지털 텔레비전, 디지털 직접 브로드캐스트 시스템, 무선 브로드캐스트 시스템, 개인 휴대 정보 단말기 (PDA), 랩탑 컴퓨터 또는 데스크탑 컴퓨터, 디지털 카메라, 디지털 레코딩 디바이스, 비디오 게이밍 디바이스, 비디오 게임 콘솔, 셀룰러 또는 위성 무선 전화기 등을 포함하는, 광범위한 디바이스들에 통합될 수 있다. 디지털 비디오 디바이스들은 디지털 비디오 정보를 보다 효율적으로 송신 및 수신하기 위해, MPEG-2, MPEG-4, 또는 ITU-T H.264/MPEG-4, Part 10, AVC (Advanced Video Coding) 에 의해 정의된 표준들에서 기술한 것과 같은 비디오 압축 기술들을 구현한다. 비디오 압축 기술들은 비디오 시퀀스에 고유한 리던던시 (redundancy) 를 저감시키거나 제거하기 위해 공간 예측 (spatial prediction) 및/또는 시간 예측 (temporal prediction) 을 수행할 수도 있다.
블록 기반 인터-코딩 (inter-coding) 은 시간 예측에 의존하여 비디오 시퀀스의 연속적인 코딩된 유닛들의 비디오 블록들 간의 시간 리던던시를 저감시키거나 제거하는 매우 유용한 코딩 기술이다. 코딩된 유닛들은 비디오 프레임들, 비디오 프레임들의 슬라이스들, 픽처들의 그룹들, 또는 비디오 블록들의 다른 정의된 유닛을 포함할 수도 있다. 인터-코딩을 위해, 비디오 인코더는 모션 추정 및 모션 보상을 수행하여 2 개 이상의 인접한 코딩된 유닛들의 대응하는 비디오 블록들의 움직임을 추적한다. 모션 추정은 비디오 블록들의 하나 이상의 기준 프레임들 또는 다른 코딩된 유닛들에서의 대응하는 예측 비디오 블록들에 대한 변위 (displacement) 를 나타내는 모션 벡터들을 생성한다. 모션 보상은 그 모션 벡터들을 이용하여 기준 프레임 또는 다른 코딩된 유닛으로부터 예측 비디오 블록들을 생성한다. 모션 보상 후에, 코딩되는 원래의 비디오 블록들로부터 예측 비디오 블록들을 뺌으로써 잔류 비디오 블록들이 형성된다.
비디오 인코더는 또한 변환, 양자화 및 엔트로피 코딩 프로세스들을 적용하여 잔류 블록들의 통신과 관련된 비트 레이트를 더욱 저감시킬 수도 있다. 변환 기술들은 이산 코사인 변환 (discrete cosine transform; DCT) 또는 개념상 유사한 프로세스들을 포함할 수도 있다. 대안으로, 웨이브릿 변환, 정수 변환, 또는 다른 타입의 변환들이 이용될 수도 있다. DCT 프로세스에서는, 일 예로서, 일 세트의 픽셀 값들이 주파수 도메인에서의 픽셀 값들의 에너지를 나타낼 수도 있는 변환 계수들로 컨버팅된다. 그 변환 계수들에는 양자화가 적용되며, 이 양자화는 일반적으로 임의의 소정의 변환 계수와 관련된 비트들의 수를 제한하는 프로세스를 수반한다. 엔트로피 코딩은 양자화된 변환 계수들의 시퀀스를 일괄하여 압축하는 하나 이상의 프로세스들을 포함한다. 엔트로피 코딩의 예들은 컨텐트 적응형 가변 길이 코딩 (content adaptive variable length coding; CAVLC) 및 콘텍스트 적응형 이진 산술 코딩 (context adaptive binary arithmetic coding; CABAC) 을 포함하지만, 이들로 제한되지는 않는다.
코딩된 비디오 블록은 예측 블록, 및 코딩되는 블록과 예측 블록 간의 차이들을 나타내는 데이터의 잔류 블록을 생성 또는 식별하는데 이용될 수 있는 예측 정보에 의해 나타내질 수도 있다. 예측 정보는 데이터의 예측 블록을 식별하는데 이용되는 하나 이상의 모션 벡터들을 포함할 수도 있다. 모션 벡터들이 주어진다면, 디코더는 잔류물을 코딩하는데 이용되었던 예측 블록들을 복원할 수 있다. 따라서, 일 세트의 잔류 블록들 및 일 세트의 모션 벡터들 (및 가능하다면 일부 부가적인 신택스) 이 주어진다면, 디코더는 처음에 인코딩되었던 비디오 프레임을 복원하는 것이 가능할 수도 있다. 모션 추정 및 모션 보상에 기초한 인터-코딩은, 연속적인 비디오 프레임들 또는 다른 타입의 코딩된 유닛들이 종종 매우 유사하기 때문에 매우 양호한 압축을 달성할 수 있다. 인코딩된 비디오 시퀀스는 잔류 데이터의 블록들, 모션 벡터들 및 가능하다면 다른 타입의 신택스를 포함할 수도 있다.
인터-코딩에서 달성될 수 있는 압축의 레벨을 개선하기 위하여 보간 및 외삽 (extrapolation) 기술들이 개발되었다. 이 경우에, 비디오 블록을 코딩하는데 이용되는, 모션 보상 동안 생성된 예측 데이터는 비디오 프레임 또는 모션 추정에 이용되는 다른 코딩된 유닛의 비디오 블록들의 픽셀들로부터 보간 또는 외삽될 수도 있다. 보간 또는 외삽은 종종 예측 1/2 픽셀 (half pixel) 값들 (1/2-화소 (pel)) 및 예측 1/4 픽셀 (quarter pixel) 값들 (1/4-화소) 을 생성하기 위해 수행된다. 이러한 보간 또는 외삽은 종종 예측 프레임 또는 비디오 코딩에 이용되는 다른 코딩된 유닛의 실제 비디오 블록들보다 코딩되는 비디오 블록들과 훨씬 더 유사한 예측 블록들을 생성한다.
본 개시물은 비디오 코딩의 모션 보상 프로세스 동안 양방향성 예측 비디오 블록들에 오프셋을 부가하기 위하여 인코더 및 디코더에 의해 수행되는 기술들을 설명한다. 본 개시물의 일 양태에 따르면, 인코더는 각각의 코딩된 유닛에 대해 복수의 오프셋 값들을 생성하고, 그 오프셋 값들을 코딩된 유닛의 비디오 블록들을 코딩하는데 이용되는 예측 데이터에 적용할 수도 있다. 특히, 인코더는 정수 픽셀 위치들 및 상이한 서브-정수 픽셀 위치들에 대해 상이한 오프셋 값들을 정의할 수도 있다. 예측 데이터와 관련된 픽셀 위치에 기초하여 대응하는 예측 데이터에는 적합한 오프셋 값이 적용될 수도 있다. 서브-정수 픽셀 위치들은 정수 픽셀 위치들에서의 데이터에 기초하여 보간 또는 외삽되는 보간 또는 외삽된 데이터에 대응할 수도 있다. 상이한 픽셀 위치들 (정수 및 서브-정수 픽셀 위치들) 에서의 상이한 오프셋들을 고려함으로써, 결과의 오프셋 양방향성 예측 데이터는 원래의 예측 데이터보다 더 양호한 압축을 허용할 수도 있다. 이렇게 하여, 본 개시물의 기술들은 비디오 품질을 개선할 수도 있다. 예를 들어, 오프셋의 예측 데이터에의 부가는 예를 들어, 플래시 (flash), 다크닝 스카이 (darkening sky), 또는 프레임들 간의 다른 타입의 조명 변화 (illumination change) 동안과 같이, 비디오 시퀀스의 프레임들 간의 조명 변화 동안 코딩을 개선할 수도 있다.
일 예에서, 본 개시물은 현재 비디오 블록을 인코딩하는 방법을 제공한다. 이 방법은 인코더를 통해, 기준 데이터의 제 1 리스트 내의 제 1 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 1 블록의 예측 값들을 보간하고, 기준 데이터의 제 2 리스트 내의 제 2 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 2 블록의 예측 값들을 보간하는 단계를 포함한다. 이 방법은, 인코더를 통해, 서브-정수 픽셀 포지션들에 대해, 제 1 블록의 예측 값들 및 현재 비디오 블록에 기초하여 제 1 오프셋 값을 계산하고, 제 1 오프셋 값 및 제 2 블록의 예측 값들에 기초하여 제 2 오프셋 값을 계산하는 단계를 더 포함한다. 이 방법은 인코더를 통해, 제 1 블록의 예측 값들, 제 2 블록의 예측 값들, 제 1 오프셋 값들 및 제 2 오프셋 값들에 기초하여 최종 블록의 오프셋 값들을 결정하는 단계를 더 포함한다. 이 방법은 인코더를 통해, 최종 블록의 오프셋 값들에 기초하여 현재 비디오 블록을 인코딩하는 단계를 더 포함한다.
다른 예에서, 본 개시물은 비디오 데이터를 인코딩하는 장치를 제공한다. 이 장치는 기준 데이터의 제 1 리스트 내의 제 1 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 1 블록의 예측 값들을 보간하고, 기준 데이터의 제 2 리스트 내의 제 2 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 2 블록의 예측 값들을 보간하는 비디오 인코더를 포함한다. 이 장치는 서브-정수 픽셀 포지션들에 대해, 제 1 블록의 예측 값들 및 현재 비디오 블록에 기초하여 제 1 오프셋 값을 계산하고, 제 1 오프셋 값 및 제 2 블록의 예측 값들에 기초하여 제 2 오프셋 값을 계산하는 비디오 인코더를 더 포함한다. 이 장치는 제 1 블록의 예측 값들, 제 2 블록의 예측 값들, 제 1 오프셋 값들 및 제 2 오프셋 값들에 기초하여 최종 블록의 오프셋 값들을 결정하는 비디오 인코더를 더 포함한다. 이 장치는 최종 블록의 오프셋 값들에 기초하여 현재 비디오 블록을 인코딩하는 비디오 인코더를 더 포함한다.
또 다른 예에서, 본 개시물은, 실행 시에, 비디오 인코더 내의 프로세서로 하여금, 기준 데이터의 제 1 리스트 내의 제 1 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 1 블록의 예측 값들을 보간하게 하고, 기준 데이터의 제 2 리스트 내의 제 2 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 2 블록의 예측 값들을 보간하게 하는, 컴퓨터 판독가능 매체 상에 인코딩된 명령들을 포함하는 컴퓨터 판독가능 매체를 제공한다. 컴퓨터 판독가능 매체는 프로세서로 하여금, 서브-정수 픽셀 포지션들에 대해, 제 1 블록의 예측 값들 및 현재 비디오 블록에 기초하여 제 1 오프셋 값을 계산하게 하고, 제 1 오프셋 값 및 제 2 블록의 예측 값들에 기초하여 제 2 오프셋 값을 계산하게 하는 명령들을 더 포함한다. 컴퓨터 판독가능 매체는 프로세서로 하여금, 제 1 블록의 예측 값들, 제 2 블록의 예측 값들, 제 1 오프셋 값들 및 제 2 오프셋 값들에 기초하여 최종 블록의 오프셋 값들을 결정하게 하는 명령들을 더 포함한다. 컴퓨터 판독가능 매체는 프로세서로 하여금, 최종 블록의 오프셋 값들에 기초하여 현재 비디오 블록을 인코딩하게 하는 명령들을 더 포함한다.
또 다른 예에서, 본 개시물은 비디오 데이터를 인코딩하는 장치를 제공한다. 이 장치는 기준 데이터의 제 1 리스트 내의 제 1 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 1 블록의 예측 값들을 보간하고, 기준 데이터의 제 2 리스트 내의 제 2 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 2 블록의 예측 값들을 보간하는 수단을 포함한다. 이 장치는 서브-정수 픽셀 포지션들에 대해, 제 1 블록의 예측 값들 및 현재 비디오 블록에 기초하여 제 1 오프셋 값을 계산하고, 제 1 오프셋 값 및 제 2 블록의 예측 값들에 기초하여 제 2 오프셋 값을 계산하는 수단을 더 포함한다. 이 장치는 제 1 블록의 예측 값들, 제 2 블록의 예측 값들, 제 1 오프셋 값들 및 제 2 오프셋 값들에 기초하여 최종 블록의 오프셋 값들을 결정하는 수단을 더 포함한다. 이 장치는 최종 블록의 오프셋 값들에 기초하여 현재 비디오 블록을 인코딩하는 수단을 더 포함한다.
또 다른 예에서, 본 개시물은 인코더를 통해, 제 1 패스 (pass) 로서, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩하는 단계를 포함하는 비디오 인코딩 방법을 제공한다. id=0 을 가진 모든 기준 프레임들이 동일한 수의 프레임들에 의해 현재 프레임으로부터 분리된다면, 인코더를 통해, 픽처 오더 컨텐트 (picture order content; POC) 패스로서, POC 가중된 기준 프레임들에 관한, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩한다. POC 패스의 레이트-왜곡 특성 (rate-distortion characteristic) 이 제 1 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 인코딩을 위해 POC 가중된 기준 프레임들을 이용하고, POC 패스의 레이트-왜곡 특성을 변수로서 저장한다. 제 1 패스의 레이트-왜곡 특성이 POC 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 제 1 패스의 레이트-왜곡 특성을 변수로서 저장한다. id=0 을 가진 모든 기준 프레임들이 동일한 수의 프레임들에 의해 현재 프레임으로부터 분리되지 않는다면, 제 1 패스의 레이트-왜곡 특성을 변수로서 저장한다. 이 방법은 인코더를 통해, 현재 프레임에 관한 프레임 필터들 및 오프셋들을 컴퓨팅하는 단계, 및 인코더를 통해, 제 2 패스로서, 컴퓨팅된 프레임 필터들 및 오프셋들을 이용하여 현재 프레임을 인코딩하는 단계를 더 포함한다. 제 2 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 제 2 패스의 레이트-왜곡 특성을 변수로서 저장하고, 양자화 단계를 1 만큼 증가시키며, 제 3 패스로서, 컴퓨팅된 프레임 필터들 및 오프셋들을 이용하여 현재 프레임을 인코딩한다. 제 2 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 양자화 단계를 1 만큼 증가시키고, 제 3 패스로서, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩한다. 제 3 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 제 3 패스의 인코딩을 비트스트림에 부가한다. 제 3 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 변수의 인코딩을 비트스트림에 부가한다. 이 방법은 인코더를 통해, 시퀀스 필터들을 컴퓨팅하여 다음 프레임을 인코딩하는 단계를 더 포함한다.
또 다른 예에서, 본 개시물은 비디오 데이터를 인코딩하는 장치를 제공하며, 이 장치는 제 1 패스로서, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩하는 비디오 인코더를 포함한다. id=0 을 가진 모든 기준 프레임들이 동일한 수의 프레임들에 의해 현재 프레임으로부터 분리된다면, 비디오 인코더는 픽처 오더 컨텐트 (POC) 패스로서, POC 가중된 기준 프레임들에 관한, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩한다. POC 패스의 레이트-왜곡 특성이 제 1 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 비디오 인코더는 인코딩하기 위해 POC 가중된 기준 프레임들을 이용하고, POC 패스의 레이트-왜곡 특성을 변수로서 저장한다. 제 1 패스의 레이트-왜곡 특성이 POC 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 비디오 인코더는 제 1 패스의 레이트-왜곡 특성을 변수로서 저장한다. id=0 을 가진 모든 기준 프레임들이 동일한 수의 프레임들에 의해 현재 프레임으로부터 분리되지 않는다면, 비디오 인코더는 제 1 패스의 레이트-왜곡 특성을 변수로서 저장한다. 비디오 인코더는 현재 프레임에 관한 프레임 필터들 및 오프셋들을 컴퓨팅하고, 비디오 인코더는 제 2 패스로서, 컴퓨팅된 프레임 필터들 및 오프셋들을 이용하여 현재 프레임을 인코딩한다. 제 2 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 비디오 인코더는 제 2 패스의 레이트-왜곡 특성을 변수로서 저장하고, 비디오 인코더는 양자화 단계를 1 만큼 증가시키고, 제 3 패스로서, 컴퓨팅된 프레임 필터들 및 오프셋들을 이용하여 현재 프레임을 인코딩한다. 제 2 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 비디오 인코더는 양자화 단계를 1 만큼 증가시키고, 제 3 패스로서, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩한다. 제 3 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 비디오 인코더는 제 3 패스의 인코딩을 비트스트림에 부가한다. 제 3 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 비디오 인코더는 변수의 인코딩을 비트스트림에 부가한다. 비디오 인코더는 시퀀스 필터들을 컴퓨팅하여 다음 프레임을 인코딩한다.
또 다른 예에서, 본 개시물은 실행 시에, 비디오 인코더 내의 프로세서로 하여금, 제 1 패스로서, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩하게 하는, 컴퓨터 판독가능 매체 상에 인코딩된 명령들을 포함하는 컴퓨터 판독가능 매체를 제공한다. id=0 을 가진 모든 기준 프레임들이 동일한 수의 프레임들에 의해 현재 프레임으로부터 분리된다면, 명령들은 프로세서로 하여금, 픽처 오더 컨텐트 (POC) 패스로서, POC 가중된 기준 프레임들에 관한, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩하게 한다. POC 패스의 레이트-왜곡 특성이 제 1 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 명령들은 프로세서로 하여금, 인코딩하기 위해 POC 가중된 기준 프레임들을 이용하게 하고, 명령들은 프로세서로 하여금, POC 패스의 레이트-왜곡 특성을 변수로서 저장하게 한다. 제 1 패스의 레이트-왜곡 특성이 POC 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 명령들은 프로세서로 하여금, 제 1 패스의 레이트-왜곡 특성을 변수로서 저장하게 한다. id=0 을 가진 모든 기준 프레임들이 동일한 수의 프레임들에 의해 현재 프레임으로부터 분리되지 않는다면, 명령들은 프로세서로 하여금, 제 1 패스의 레이트-왜곡 특성을 변수로서 저장하게 한다. 명령들은 프로세서로 하여금, 현재 프레임에 관한 프레임 필터들 및 오프셋들을 컴퓨팅하게 하고, 명령들은 프로세서로 하여금, 제 2 패스로서, 컴퓨팅된 프레임 필터들 및 오프셋들을 이용하여 현재 프레임을 인코딩하게 한다. 제 2 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 명령들은 프로세서로 하여금, 제 2 패스의 레이트-왜곡 특성을 변수로서 저장하게 하고, 명령들은 프로세서로 하여금, 양자화 단계를 1 만큼 증가시키고, 제 3 패스로서, 컴퓨팅된 프레임 필터들 및 오프셋들을 이용하여 현재 프레임을 인코딩하게 한다. 제 2 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 명령들은 프로세서로 하여금, 양자화 단계를 1 만큼 증가시키고, 제 3 패스로서, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩하게 한다. 제 3 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 명령들은 프로세서로 하여금, 제 3 패스의 인코딩을 비트스트림에 부가하게 한다. 제 3 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 명령들은 프로세서로 하여금, 변수의 인코딩을 비트스트림에 부가하게 한다. 명령들은 프로세서로 하여금, 시퀀스 필터들을 컴퓨팅하여 다음 프레임을 인코딩하게 한다.
또 다른 예에서, 본 개시물은 비디오 데이터를 인코딩하는 장치를 제공한다. 이 장치는 인코더를 통해, 제 1 패스로서, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩하는 수단을 포함한다. id=0 을 가진 모든 기준 프레임들이 동일한 수의 프레임들에 의해 현재 프레임으로부터 분리된다면, 이 장치는 인코더를 통해, 픽처 오더 컨텐트 (POC) 패스로서, POC 가중된 기준 프레임들에 관한, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩하는 수단을 포함한다. POC 패스의 레이트-왜곡 특성이 제 1 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 이 장치는 인코딩을 위해 POC 가중된 기준 프레임들을 이용하는 수단, 및 POC 패스의 레이트-왜곡 특성을 변수로서 저장하는 수단을 포함한다. 제 1 패스의 레이트-왜곡 특성이 POC 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 이 장치는 제 1 패스의 레이트-왜곡 특성을 변수로서 저장하는 수단을 포함한다. id=0 을 가진 모든 기준 프레임들이 동일한 수의 프레임들에 의해 현재 프레임으로부터 분리되지 않는다면, 이 장치는 제 1 패스의 레이트-왜곡 특성을 변수로서 저장하는 수단을 포함한다. 이 장치는 인코더를 통해, 현재 프레임에 관한 프레임 필터들 및 오프셋들을 컴퓨팅하는 수단, 및 인코더를 통해, 제 2 패스로서, 컴퓨팅된 프레임 필터들 및 오프셋들을 이용하여 현재 프레임을 인코딩하는 수단을 더 포함한다. 제 2 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 이 장치는 제 2 패스의 레이트-왜곡 특성을 변수로서 저장하는 수단을 포함한다. 이 장치는 양자화 단계를 1 만큼 증가시키고 제 3 패스로서, 컴퓨팅된 프레임 필터들 및 오프셋들을 이용하여 현재 프레임을 인코딩하는 수단을 더 포함한다. 제 2 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 이 장치는 양자화 단계를 1 만큼 증가시키고 제 3 패스로서, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩하는 수단을 포함한다. 제 3 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 이 장치는 제 3 패스의 인코딩을 비트스트림에 부가하는 수단을 포함한다. 제 3 패스의 레이트-왜곡 특성이 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 이 장치는 변수의 인코딩을 비트스트림에 부가하는 수단을 포함한다. 이 장치는 인코더를 통해, 시퀀스 필터들을 컴퓨팅하여 다음 프레임을 인코딩하는 수단을 더 포함한다.
본 개시물의 하나 이상의 양태들의 상세는 이하의 설명 및 첨부 도면들에서 기술된다. 본 개시물에 설명된 기술들의 다른 특징들, 목적들 및 이점들은 설명 및 도면들로부터, 그리고 특허청구범위로부터 명백할 것이다.
도 1 은 비디오 인코딩 및 디코딩 시스템을 예시한 일 예시적인 블록도이다.
도 2 는 본 개시물에 부합하는 비디오 인코더의 일 예를 예시한 블록도이다.
도 3 은 본 개시물에 부합하는 비디오 디코더의 일 예를 예시한 블록도이다.
도 4 는 예측 비디오 블록들의 픽셀들을 포함할 수도 있는 정수 픽셀들 및 다양한 서브-정수 픽셀들을 예시한 개념도이다.
도 5 는 본 개시물에 부합하는 비디오 인코더에 의해 비디오 블록을 인코딩하는 방법 예를 예시한 흐름도이다.
도 6a 내지 도 6c 는 본 개시물에 부합하는 B-슬라이스에 대해 최적의 레이트-왜곡을 달성하기 위하여 필터들 및 오프셋들의 구성 (configuration) 을 최적화하는 방법을 예시한 흐름도이다.
본 개시물은 비디오 코딩의 모션 보상 프로세스 동안 양방향성 예측 비디오 블록들에 오프셋을 부가하기 위하여 인코더 및 디코더에 의해 수행되는 기술들을 설명한다. 양방향성 예측 비디오 블록들은 양방향성 인코딩된 블록들의 인코딩 또는 디코딩에 이용되는 예측 블록들을 나타낸다. 양방향성 예측 비디오 블록들은 예측 데이터의 2 개의 상이한 세트들을 식별하는 적어도 2 개의 상이한 모션 벡터들에 기초하여 생성된다. 본 개시물은 오프셋을 양방향성 예측 비디오 블록들에 도입 또는 다른 경우에는 부가하는 기술들을 제공한다.
본 개시물의 일 양태에 따르면, 인코더는 각각의 코딩된 유닛에 대해 복수의 오프셋 값들을 생성하고, 그 오프셋 값들을 코딩된 유닛의 비디오 블록들을 코딩하는데 이용되는 예측 데이터에 적용할 수도 있다. 특히, 인코더는 정수 픽셀 위치들 및 상이한 서브-정수 픽셀 위치들에 대해 상이한 오프셋 값들을 정의할 수도 있다. 그 예측 데이터와 관련된 픽셀 위치에 기초하여 대응하는 예측 데이터에는 적합한 오프셋 값이 적용될 수도 있다. 서브-정수 픽셀 위치들은 정수 픽셀 위치들에서의 데이터에 기초하여 보간 또는 외삽되는, 보간 또는 외삽된 데이터에 대응할 수도 있다. 상이한 픽셀 위치들 (정수 및 서브-정수 픽셀 위치들) 에서의 상이한 오프셋들을 고려함으로써, 결과의 오프셋 양방향성 예측 데이터는 원래의 예측 데이터보다 더 양호한 압축을 허용할 수도 있다. 이렇게 하여, 본 개시물의 기술들은 비디오 품질을 개선할 수도 있다. 예를 들어, 오프셋의 예측 데이터에의 부가는 예를 들어, 플래시, 다크닝 스카이, 또는 프레임들 간의 다른 타입의 조명 변화와 같이, 비디오 시퀀스의 프레임들 간의 조명 변화 동안 코딩을 개선할 수도 있다.
ITU-T H.264 표준은 서브-정수 픽셀들의 1/4-픽셀 해상도에 대한 부분 보간 (fractional interpolation) 을 지원한다. 이 경우에는, 모든 정수 픽셀 위치마다 15 개의 가능한 서브-정수 픽셀 위치들이 존재한다. 단방향 인터 모드 예측 (P-모드) 의 경우, 코딩된 유닛의 각각의 가능한 정수 및 서브-정수 픽셀 위치에 대해 16 개의 상이한 오프셋 값들이 생성될 수도 있다. 상기 언급한 바와 같이, 코딩된 유닛은 비디오 프레임, 비디오 프레임의 슬라이스, 또는 비디오 블록들의 다른 독립적으로 디코딩가능한 유닛을 포함할 수도 있다. 오프셋 값들은 정수 픽셀 위치들에 대해 하나의 오프셋 값을 포함하고 상이한 서브-정수 픽셀 위치들에 대해 여러 오프셋 값들을 포함할 수도 있다. 예를 들어, 보간된 데이터에 대해 15 개의 상이한 서브-정수 위치들을 허용하는 ITU-T H.264 표준에 부합하여, 오프셋 값들은 마찬가지로 15 개의 상이한 서브-정수 픽셀 위치들에 대해 15 개의 상이한 오프셋 값들을 포함할 수도 있다.
본 개시물의 기술들에 따르면, 양방향 인터 모드 예측 (B-모드) 의 경우, 32 개의 상이한 오프셋 값들이 코딩된 유닛의 각각의 가능한 정수 및 서브-정수 픽셀 위치에 대해 생성될 수도 있다. 즉, 16 개의 상이한 오프셋 값들이 제 1 기준 프레임에 기초하여 각각의 가능한 정수 및 서브-정수 픽셀 위치에 대해 생성될 수도 있고, 16 개의 상이한 오프셋 값들이 제 2 기준 프레임에 기초하여 각각의 가능한 정수 및 서브-정수 픽셀 위치에 대해 생성될 수도 있다. 따라서, 각각의 가능한 정수 및 서브-정수 픽셀 위치는 2 개의 오프셋들 : 제 1 기준 프레임에 기초한 제 1 오프셋, 및 제 2 기준 프레임에 기초한 제 2 오프셋을 갖는다. 이하 더 상세하게 설명되는 바와 같이, 2 개의 오프셋들은 단일의 오프셋 값을 형성하기 위해 결합된다. 단일의 오프셋 값은 임의의 예측 데이터에, 그 예측 데이터와 관련된 픽셀 위치에 기초하여 적용될 수도 있다. 특히, 오프셋 값은 예측 비디오 블록의 픽셀 값들을 조정하기 위해 적용될 수도 있고, 이러한 픽셀 값 조정을 행하는데 이용되는 오프셋 값은 그 예측 비디오 블록과 관련된 위치 (예를 들어, 정수 위치 또는 여러 가능한 서브-픽셀 위치들 중 하나) 에 의존할 수도 있다. 이하 언급되는 바와 같이, "코딩된 유닛" 이란 용어는 전체 프레임, 프레임의 슬라이스, 또는 이용된 코딩 기술들에 따라 정의된 다른 독립적으로 디코딩가능한 유닛과 같은 비디오 프레임의 임의의 독립적으로 디코딩가능한 유닛을 나타낸다. 본 개시물의 기술들은 모든 코딩된 유닛에 적용가능하다.
상이한 오프셋 값들은 각각의 코딩된 유닛에 대해 비트스트림의 일부로서 인코딩될 수도 있다. 예를 들어, 양방향성 예측 코딩 유닛들에 대해, 32 개의 상이한 오프셋 값들이 비트스트림의 일부로서 인코딩될 수도 있다. 디코더는 각각의 코딩된 유닛에 대해 인코더에 의해 정의되었던 상이한 오프셋 값들을 수신할 수도 있다. 따라서, 디코더는 예측 데이터를 생성한 후 예측 데이터 및 오프셋 값들에 기초하여 오프셋 예측 데이터를 복원할 수 있다. 디코더는 예측 데이터 및 오프셋 값들에 기초하여 생성된 오프셋 예측 데이터에 기초하여, 코딩된 유닛, 예를 들어 비디오 블록들의 비디오 데이터를 디코딩할 수 있다. 인코딩의 경우와 마찬가지로, 오프셋의 예측 데이터에의 부가는 조명 변화 또는 다른 비디오 효과 동안 비디오 품질을 개선함으로써 비디오 디코딩을 개선할 수도 있다.
도 1 은 본 개시물의 기술들을 구현할 수도 있는 비디오 인코딩 및 디코딩 시스템 (10) 의 일 예를 예시한 블록도이다. 도 1 에 도시한 바와 같이, 이 시스템 (10) 은 인코딩된 비디오를 통신 채널 (15) 을 통해 목적지 디바이스 (16) 로 송신하는 소스 디바이스 (12) 를 포함한다. 소스 디바이스 (12) 및 목적지 디바이스 (16) 는 광범위한 디바이스들 중 임의의 것을 포함할 수도 있다. 일부 경우에, 소스 디바이스 (12) 및 목적지 디바이스 (16) 는 무선 통신 디바이스, 이를 테면, 무선 핸드셋, 소위 셀룰러 또는 위성 무선전화기, 또는 통신 채널 (15) 이 무선인 경우에는, 통신 채널 (15) 을 통해 비디오 정보를 통신할 수 있는 임의의 무선 디바이스를 포함한다. 그러나, 모션 보상 동안 오프셋의 예측 데이터에의 부가에 관련된 본 개시물의 기술들이 반드시 무선 애플리케이션 또는 설정으로 제한되는 것은 아니다.
도 1 의 예에서, 소스 디바이스 (12) 는 비디오 소스 (20), 비디오 인코더 (22), 변조기/복조기 (모뎀) (23) 및 송신기 (24) 를 포함할 수도 있다. 목적지 디바이스 (16) 는 수신기 (26), 모뎀 (27), 비디오 디코더 (28) 및 디스플레이 디바이스 (30) 를 포함할 수도 있다. 본 개시물에 따르면, 소스 디바이스 (12) 의 비디오 인코더 (22) 는 본 개시물의 오프셋 기술들 중 하나 이상을 비디오 인코딩 프로세스의 일부로서 적용하도록 구성될 수도 있다. 유사하게, 목적지 디바이스 (16) 의 비디오 디코더 (28) 는 본 개시물의 오프셋 기술들 중 하나 이상을 비디오 디코딩 프로세스의 일부로서 적용하도록 구성될 수도 있다.
도 1 의 예시된 시스템 (10) 은 단지 비디오 인코딩 및 디코딩 시스템의 일 예일 뿐이다. 본 개시물의 오프셋 기술들은 서브-픽셀 해상도에 대한 모션 보상된 보간을 지원하는 임의의 인코딩 디바이스에 의해 수행될 수도 있다. 소스 디바이스 (12) 및 목적지 디바이스 (16) 는 단지 소스 디바이스 (12) 가 목적지 디바이스 (16) 로의 송신을 위해 코딩된 비디오 데이터를 생성하는 그러한 코딩 디바이스들의 예일 뿐이다. 디바이스들 (12, 16) 은 디바이스들 (12, 16) 각각이 비디오 인코딩 및 디코딩 컴포넌트들을 포함하도록 실질적으로 대칭적인 방식으로 동작할 수도 있다. 따라서, 시스템 (10) 은 예를 들어, 비디오 스트리밍, 비디오 플레이백, 비디오 브로드캐스팅, 또는 화상 통화를 위해, 비디오 디바이스들 (12, 16) 간에 일-방향 또는 양-방향 비디오 송신을 지원할 수도 있다.
소스 디바이스 (12) 의 비디오 소스 (20) 는 비디오 캡처 디바이스, 이를 테면, 비디오 카메라, 이전에 캡처된 비디오를 포함하는 비디오 아카이브, 또는 비디오 컨텐트 제공자로부터의 비디오 피드를 포함할 수도 있다. 추가 대안으로서, 비디오 소스 (20) 는 컴퓨터 그래픽-기반 데이터를 소스 비디오로서 생성할 수도 있고, 또는 라이브 비디오, 아카이브된 비디오, 및 컴퓨터-생성된 비디오의 조합을 생성할 수도 있다. 일부 경우에, 비디오 소스 (20) 가 비디오 카메라이면, 소스 디바이스 (12) 및 목적지 디바이스 (16) 는 소위 카메라 폰 또는 비디오 폰을 형성할 수도 있다. 각각의 경우에, 캡처된, 미리 캡처된 또는 컴퓨터 생성된 비디오는 비디오 인코더 (22) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 정보는 그 후 예를 들어 코드 분할 다중 액세스 (CDMA) 또는 다른 통신 표준과 같은 통신 표준에 따라 모뎀 (23) 에 의해 변조되고, 송신기 (24) 를 통해 목적지 디바이스 (16) 로 송신될 수도 있다. 모뎀 (23) 은 다양한 믹서들, 필터들, 증폭기들 또는 신호 변조를 위해 설계된 다른 컴포넌트들을 포함할 수도 있다. 송신기 (24) 는 증폭기들, 필터들, 및 하나 이상의 안테나들을 포함하는, 데이터를 송신하기 위해 설계된 회로들을 포함할 수도 있다.
목적지 디바이스 (16) 의 수신기 (26) 는 통신 채널 (15) 을 통해 정보를 수신하고, 모뎀 (27) 이 그 정보를 복조한다. 다시, 비디오 인코딩 프로세스는 모션 보상 동안 오프셋을 예측 데이터에 부가하기 위해 본원에 설명된 기술들 중 하나 이상을 구현할 수도 있다. 비디오 디코더 (28) 에 의해 수행되는 비디오 디코딩 프로세스는 또한 디코딩 프로세스의 그 모션 보상 스테이지 동안 이러한 기술들을 수행할 수도 있다. 통신 채널 (15) 을 통해 통신된 정보는 비디오 인코더 (22) 에 의해 정의된 오프셋 정보를 포함할 수도 있으며, 이 오프셋 정보는 또한 비디오 디코더 (28) 에 의해 이용된다. 디스플레이 디바이스 (30) 는 디코딩된 비디오 데이터를 사용자에게 디스플레이하며, 음극선관, 액정 디스플레이 (LCD), 플라즈마 디스플레이, 유기 발광 다이오드 (OLED) 디스플레이, 또는 다른 타입의 디스플레이 디바이스와 같은 다양한 디스플레이 디바이스들 중 임의의 것을 포함할 수도 있다.
도 1 의 예에서, 통신 채널 (15) 은 임의의 무선 또는 유선 통신 매체, 이를 테면, 무선 주파수 (RF) 스펙트럼 또는 하나 이상의 물리적 송신 선로들, 또는 무선과 유선 매체의 임의의 조합을 포함할 수도 있다. 통신 채널 (15) 은 근거리 네트워크 (local area network), 광역 네트워크 (wide area network) 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷-기반 네트워크의 일부를 형성할 수도 있다. 통신 채널 (15) 은 일반적으로 비디오 데이터를 소스 디바이스 (12) 로부터 목적지 디바이스 (16) 로 송신하기 위해, 임의의 적합한 통신 매체, 또는 상이한 통신 매체의 집합을 나타낸다. 통신 채널 (15) 은 라우터들, 스위치들, 기지국들, 또는 소스 디바이스 (12) 로부터 목적지 디바이스 (16) 로의 통신을 용이하게 하는데 유용할 수도 있는 임의의 다른 장비를 포함할 수도 있다.
비디오 인코더 (22) 및 비디오 디코더 (28) 는 비디오 압축 표준, 이를 테면, ITU-T H.264 표준 (대안으로는 MPEG-4, Part 10, AVC (Advanced Video Coding) 로서 기술됨) 에 따라 동작할 수도 있다. 그러나, 본 개시물의 기술들은 임의의 특정 코딩 표준으로 제한되지 않는다. 도 1 에 도시되지는 않았지만, 일부 양태에서, 비디오 인코더 (22) 및 비디오 디코더 (28) 는 오디오 인코더 및 디코더와 각각 통합될 수도 있으며, 공통의 데이터 스트림 또는 별개의 데이터 스트림들에서 오디오와 비디오 양자의 인코딩을 다루기 위해, 적합한 MUX-DEMUX 유닛들, 또는 다른 하드웨어와 소프트웨어를 포함할 수도 있다. 적용가능하다면, MUX-DEMUX 유닛들은 ITU H.223 멀티플렉서 프로토콜, 또는 사용자 데이터그램 프로토콜 (UDP) 과 같은 다른 프로토콜들에 따를 수도 있다.
ITU-T H.264/MPEG-4 (AVC) 표준은 JVT (Joint Video Team) 로 알려진 집합적 파트너쉽 (collective partnership) 의 제품으로서 ISO/IEC MPEG (Moving Picture Experts Group) 와 함께 ITU-T VCEG (Video Coding Experts Group) 에 의해 공식화되었다. 일부 양태에서, 본 개시물에서 설명된 기술들은, 일반적으로 H.264 표준에 따르는 디바이스들에 적용될 수도 있다. H.264 표준은 2005년 3월의 ITU-T 연구 그룹에 의한 일반 오디오 비주얼 서비스에 대한 ITU-T 권장 H.264, 어드밴스드 비디오 코딩에 기술되어 있으며, 이것은 본원에서 H.264 표준 또는 H.264 사양, 또는 H.264/AVC 표준 또는 사양으로서 지칭될 수도 있다. JVT 는 H.264/MPEG-4 AVC 에 대한 확장 작업을 계속한다.
비디오 인코더 (22) 및 비디오 디코더 (28) 는 각각 하나 이상의 마이크로프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그램가능한 게이트 어레이 (FPGA), 별개의 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합으로서 구현될 수도 있다. 비디오 인코더 (22) 및 비디오 디코더 (28) 각각은 어느 하나가 각각의 모바일 디바이스, 가입자 디바이스, 브로드캐스트 디바이스, 서버 등 내에 결합된 인코더/디코더 (CODEC) 의 일부로서 통합될 수도 있는, 하나 이상의 인코더들 또는 디코더들에 포함될 수도 있다.
비디오 시퀀스는 통상적으로 일련의 비디오 프레임들을 포함한다. 비디오 인코더 (22) 는 비디오 데이터를 인코딩하기 위하여 개개의 비디오 프레임들 내의 비디오 블록들에 작용한다. 비디오 블록들은 고정된 사이즈 또는 가변 사이즈를 가질 수도 있으며, 특정 코딩 표준에 따라 사이즈가 다를 수도 있다. 각각의 비디오 프레임은 일련의 슬라이스들을 포함한다. 각각의 슬라이스는 일련의 매크로블록들을 포함할 수도 있으며, 이 일련의 매크로블록들은 서브-블록들로 배열될 수도 있다. 일 예로서, 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 에서 이용된 4×4 또는 8×8 정수 변환 또는 이산 코사인 변환 (DCT)) 에 후속하여, 양자화가 수행될 수도 있다. 양자화는 일반적으로 계수들이 그 계수들을 나타내는데 이용되는 데이터의 양을 가능하게 저감시키기 위해 양자화되는 프로세스를 나타낸다. 양자화 프로세스는 계수들의 일부 또는 전부와 관련된 비트 심도 (bit depth) 를 저감시킬 수도 있다. 예를 들어, 16 비트 값은 양자화 동안 15 비트 값으로 내림 (round down) 될 수도 있다. 양자화에 후속하여, 예를 들어, 컨텐트 적응형 가변 길이 코딩 (CAVLC), 콘텍스트 적응형 이진 산술 코딩 (CABAC), 또는 다른 엔트로피 코딩 방법론에 따라 엔트로피 코딩이 수행될 수도 있다.
본 개시물의 기술들에 따르면, 비디오 인코더 (22) 는 프레임 또는 슬라이스와 같은 프레임의 독립적으로 디코딩가능한 부분과 같이, 비디오 데이터의 코딩된 유닛에 대해 복수의 오프셋 값들을 계산할 수도 있다. 상이한 오프셋 값들은 비디오 블록들과 관련된 복수의 상이한 정수 및 서브-정수 픽셀 위치들과 관련된다. 서브-정수 픽셀 위치들은, 통상적으로 정수 픽셀 위치들에서의 데이터에 기초하여 보간 또는 외삽되는, 보간 또는 외삽된 데이터의 위치들을 정의할 수도 있다. 비디오 인코더 (22) 는 오프셋 값들을 예측 비디오 블록들에 적용하여 오프셋 예측 비디오 블록들을 생성하고, 오프셋 예측 비디오 블록들에 기초하여 코딩된 유닛의 비디오 블록들을 인코딩할 수도 있다. 비디오 인코더 (22) 는 또한 오프셋 값들을 코딩된 유닛의 코딩된 비디오 블록들을 포함하는 코딩된 비트스트림의 일부로서 인코딩할 수도 있으며, 소스 디바이스 (12) 의 송신기 (24) 는 코딩된 비트스트림을 목적지 디바이스 (16) 의 수신기 (26) 로 송신할 수도 있다. 특히, 비디오 인코더 (22) 는 양방향성 예측 비디오 블록들의 픽셀들을 조정함으로써 오프셋 값들을 적용할 수도 있으며, 오프셋 예측 비디오 블록들에 기초하여 잔류물들을 생성함으로써 오프셋 예측 비디오 블록들에 기초하여 비디오 블록들을 인코딩할 수도 있다. 예를 들어, 잔류물들은 적합한 오프셋 예측 비디오 블록으로부터 코딩될 블록을 뺌으로써 생성될 수도 있다. 오프셋이 예측 비디오 블록의 위치에 기초하여 오프셋 예측 비디오 블록의 픽셀 값들에 부가되기 때문에, 코딩 효율이 특히 플래시 또는 배경 조명 변화 동안 개선될 수도 있다. 이 경우에, 오프셋의 부가는, 특히 코딩되는 블록들과 예측 블록들 (오프셋 없음) 간의 차이들이 주로 각각의 픽셀들 모두에 대해 동일한 조도 강도 (illuminance intensity) 만큼 다를 때, 오프셋 예측 블록들이 코딩되는 블록들과 더 정확히 매칭하도록 예측 블록들의 픽셀 값들을 바이어싱할 수도 있다.
목적지 디바이스 (16) 에서, 비디오 디코더 (28) 는 비디오 데이터의 각각의 코딩된 유닛에 대해 복수의 오프셋 값들을 수신한다. 비디오 디코더 (28) 는 그 오프셋 값들을 예측 비디오 블록들에 적용하여 오프셋 예측 비디오 블록들을 생성하고, 오프셋 예측 비디오 블록들에 기초하여 코딩된 유닛의 비디오 블록들을 디코딩한다. 이렇게 하여, 오프셋 값들은 인코딩 프로세스의 일부로서 비디오 인코더 (22) 에서 정의 및 적용되며, 인코딩된 비트스트림의 일부로서 소스 디바이스 (12) 로부터 목적지 디바이스 (16) 로 통신된다. 오프셋 값들은 그 후 비디오 시퀀스를 복원하기 위하여 디코딩 프로세스의 일부로서 비디오 디코더 (28) 에서 예측 데이터에 적용된다. 이 경우에, 예측 데이터에 대한 오프셋이 생성되어 비디오 복원 동안 이용된다.
도 2 는 본 개시물에 부합하는 오프셋 기술들을 수행할 수도 있는 비디오 인코더 (50) 의 일 예를 예시한 블록도이다. 비디오 인코더 (50) 는 본원에 "코더" 로 지칭되는 특수화된 비디오 컴퓨터 디바이스 또는 장치의 일 예이다. 비디오 인코더 (50) 는 소스 디바이스 (12) 의 비디오 인코더 (22), 또는 상이한 디바이스의 비디오 인코더에 대응할 수도 있다. 비디오 인코더 (50) 는 설명의 용이성을 위해, 도 2 에는 인트라-코딩 컴포넌트들이 도시되어 있지 않지만, 비디오 프레임들 내의 블록들에 대해 인트라-코딩 및 인터-코딩을 수행할 수도 있다. 인트라-코딩은 공간 예측에 의존하여 소정의 비디오 프레임 내의 비디오에서 공간 리던던시를 저감시키거나 제거한다. 인터-코딩은 시간 예측에 의존하여 비디오 시퀀스의 인접 프레임들 내의 비디오에서 시간 리던던시를 저감시키거나 제거한다. 인트라-모드 (I-모드) 는 공간 기반 압축 모드를 나타낼 수도 있으며, 예측 (P-모드) 또는 양방향 (B-모드) 과 같은 인터-모드들은 시간 기반 압축 모드들을 나타낼 수도 있다. B-모드를 이용하여 인코딩된 유닛들은 2 개의 프레임들을 참조하여 인코딩된다. H.264 에서, B 프레임, 또는 다른 유닛은 2 개의 시간상 이전 프레임들을 참조하여 인코딩될 수도 있다. 예를 들어, 인코딩될 현재 유닛이 프레임 N 내에 상주한다면, 프레임들 (N-1 및 N-2) 은 현재 유닛을 인코딩하기 위한 기준 프레임들로서 이용될 수도 있다. 다른 코딩 표준, 예를 들어, MPEG-2 에서, 적어도 하나의 시간상 미래 (future) 프레임 (예를 들어, 프레임 N+1) 및 적어도 하나의 시간상 이전 프레임 (예를 들어, 프레임 N-1) 은 프레임 N 에 상주하는 현재 유닛을 인코딩하는데 이용될 수도 있다. 본 개시물의 기술들은 양방향 인터 코딩 동안 적용되며, 따라서, 설명의 단순성 및 용이성을 위해 도 2 에는 공간 예측 유닛과 같은 인트라-코딩 유닛들이 예시되지 않는다.
도 2 에 도시한 바와 같이, 비디오 인코더 (50) 는 인코딩될 비디오 프레임 내의 비디오 블록을 수신한다. 도 2 의 예에서, 비디오 인코더 (50) 는 예측 유닛 (32), 메모리 (34), 가산기 (48), 변환 유닛 (38), 양자화 유닛 (40) 및 엔트로피 코딩 유닛 (46) 을 포함한다. 비디오 블록 복원을 위해, 비디오 인코더 (50) 는 또한 역양자화 유닛 (42), 역변환 유닛 (44) 및 가산기 (51) 를 포함한다. 블록 경계를 필터링하여 복원된 비디오로부터 블록화 아티팩트 (blockiness artifact) 를 제거하기 위해 디블록킹 필터 (미도시) 가 또한 포함될 수도 있다. 원한다면, 디블록킹 필터는 통상적으로 가산기 (51) 의 출력을 필터링할 것이다.
예측 유닛 (32) 은 모션 추정 (ME) 유닛 (35), 및 모션 보상 (MC) 유닛 (37) 을 포함할 수도 있다. 필터 (39) 는 예측 유닛 (32) 에 포함될 수도 있으며, 본 개시물에 따라, 모션 추정 및/또는 모션 보상의 일부로서 보간 또는 보간형 필터링을 수행하기 위해 ME 유닛 (35) 및 MC 유닛 (37) 중 하나 또는 양자에 의해 인보크될 수도 있다. 필터 (39) 는 실제로 본원에 설명한 바와 같이 다수의 상이한 타입의 보간 및 보간형 필터링을 용이하게 하기 위해 복수의 상이한 필터들을 나타낼 수도 있다. 따라서, 예측 유닛 (32) 은 복수의 보간 또는 보간형 필터들을 포함할 수도 있다. 인코딩 프로세스 동안, 비디오 인코더 (50) 는 코딩될 비디오 블록 (도 2 에서 "비디오 블록" 으로 레이블됨) 을 수신하고, 예측 유닛 (32) 은 예측 블록 (도 2 에서 "예측 블록" 으로 레이블됨) 을 생성하기 위해 인터-예측 코딩을 수행한다. 상세하게는, ME 유닛 (35) 은 메모리 (34) 내의 예측 블록을 식별하기 위해 모션 추정을 수행할 수도 있으며, MC 유닛 (37) 은 예측 블록을 생성하기 위해 모션 보상을 수행할 수도 있다.
모션 추정은 통상적으로 비디오 블록들에 대한 모션을 추정하는 모션 벡터들을 생성하는 프로세스인 것으로 간주된다. 예를 들어 모션 벡터는 예측 또는 기준 프레임 (또는 다른 코딩된 유닛, 예를 들어, 슬라이스) 내의 예측 블록의 현재 프레임 (또는 다른 코딩된 유닛) 내의 코딩될 블록에 대한 변위를 나타낼 수도 있다. 양방향 예측의 경우에, 2 개의 모션 벡터들 : 제 1 예측 또는 기준 프레임 내의 예측 블록의 변위를 나타내는 하나의 모션 벡터, 및 제 2 예측 또는 기준 프레임 내의 예측 블록의 변위를 나타내는 다른 모션 벡터가 생성된다. 양방향 예측에 있어서, 2 개의 기준 프레임들 (또는 2 개의 기준 프레임들의 일부) 은, 현재 비디오 블록이 속하는 비디오 프레임 (또는 비디오 프레임의 일부) 의 시간상 전 또는 후에 위치될 수도 있다. 모션 보상은 통상적으로 메모리 (34) 로부터 예측 블록을 인출 (fetching) 또는 생성, 또는 가능하다면 모션 추정에 의해 결정된 모션 벡터에 기초하여 필터링된 예측 데이터를 보간 또는 다른 경우에는 생성하는 프로세스인 것으로 간주된다.
ME 유닛 (35) 은 비디오 블록을 2 개의 기준 프레임들 (예를 들어, 2 개의 이전 프레임들, 이전 프레임과 후속 프레임, 또는 2 개의 후속 프레임들) 의 비디오 블록들과 비교함으로써 코딩될 비디오 블록에 대해 적합한 모션 벡터들을 선택한다. ME 유닛 (35) 은 때로는 분수 픽셀 (fractional pixel), 분수 화소, 또는 서브-픽셀 모션 추정으로 지칭되는, 분수 픽셀 정밀도로 모션 추정을 수행할 수도 있다. 이로써, 분수 픽셀, 분수 화소, 및 서브-픽셀 모션 추정이란 용어가 상호교환가능하게 사용될 수도 있다. 분수 픽셀 모션 추정에서, ME 유닛 (35) 은 정수 픽셀 위치가 아닌 다른 위치에 대한 변위를 나타내는 모션 벡터를 선택할 수도 있다. 이 방식으로, 분수 픽셀 모션 추정은 예측 유닛 (32) 이 정수-픽셀 (또는 풀 (full)-픽셀) 위치들보다 더 높은 정밀도로 모션을 추적하여, 보다 정확한 예측 블록을 생성하는 것을 허용한다. 분수 픽셀 모션 추정은 1/2-픽셀 정밀도, 1/4-픽셀 정밀도, 1/8-픽셀 정밀도 또는 임의의 보다 미세한 정밀도를 가질 수도 있다. ME 유닛 (35) 은 모션 추정 프로세스 동안 임의의 필요한 보간들을 위해 필터(들) (39) 를 인보크할 수도 있다.
분수 픽셀 모션 보상을 수행하기 위해, MC 유닛 (37) 은 (본원에 서브-픽셀 또는 분수 픽셀 값들로 지칭되는) 서브-픽셀 해상도에서 데이터를 생성하기 위하여 (때로는 보간 필터링으로 지칭되는) 보간을 수행할 수도 있다. MC 유닛 (37) 은 이 보간을 위해 필터(들) (39) 를 인보크할 수도 있다. 예측 유닛 (32) 은 본원에 설명된 기술들을 이용하여 보간 (또는 정수 픽셀들의 보간형 필터링) 을 수행할 수도 있다.
일단 코딩될 비디오 블록에 대한 제 1 모션 벡터 (제 1 기준 프레임에 기초) 가 ME 유닛 (35) 에 의해 선택되면, MC 유닛 (37) 은 그 모션 벡터와 관련된 예측 비디오 블록을 생성한다. MC 유닛 (37) 은 MC 유닛 (37) 에 의해 결정된 제 1 모션 벡터에 기초하여 메모리 (34) 로부터 예측 블록을 인출할 수도 있다. 분수 픽셀 정밀도를 가진 모션 벡터의 경우에, MC 유닛 (37) 은 메모리 (34) 로부터의 데이터를, 이러한 데이터를 서브-픽셀 해상도에 보간하기 위해 필터링하는데, 예를 들어, 이 프로세스를 위해 필터(들) (39) 를 인보크한다. 일부 경우에, 서브-픽셀 예측 데이터를 생성하는데 이용되었던 보간 필터링 기술 또는 모드는 코딩된 비트스트림에의 포함을 위해 엔트로피 코딩 유닛 (46) 에 대한 하나 이상의 보간 신택스 엘리먼트들로서 나타내질 수도 있다.
양방향 인터-코딩에서, 이 프로세스는 제 2 기준 프레임에 기초하여 제 2 모션 벡터에 대해 반복된다. MC 유닛 (37) 은 제 2 모션 벡터와 관련된 예측 비디오 블록을 생성한다. MC 유닛 (37) 은 ME 유닛 (35) 에 의해 결정된 제 2 모션 벡터에 기초하여 메모리 (34) 로부터 예측 블록을 인출할 수도 있다. 분수 픽셀 정밀도를 가진 모션 벡터의 경우에, MC 유닛 (37) 은 메모리 (34) 로부터의 데이터를, 이러한 데이터를 서브-픽셀 해상도에 보간하기 위해 필터링하는데, 예를 들어, 이 프로세스를 위해 필터(들) (39) 를 인보크한다. 일부 경우에, 서브-픽셀 예측 데이터를 생성하는데 이용되었는 보간 필터링 기술 또는 모드는 코딩된 비트스트림에의 포함을 위해 엔트로피 코딩 유닛 (46) 에 대한 하나 이상의 보간 신택스 엘리먼트들로서 나타내질 수도 있다. 필터 선택은 이하 더 상세하게 설명된다.
양방향 인터-코딩에서, 일단 예측 유닛 (32) 이 2 개의 예측 블록들을 생성했다면, 비디오 인코더 (50) 는 2 개의 예측 블록들로부터 데이터를 결합하여 단일의 예측 블록을 생성한다. 그들의 결합 동안, 예측 블록들 각각은 다르게 가중될 수도 있다. 예를 들어, 프레임 N 의 코딩된 유닛이 기준 프레임 N-1 로부터의 제 1 예측 블록 및 기준 프레임 N-2 로부터의 제 2 예측 블록을 이용한다면, 기준 프레임 N-1 로부터의 제 1 예측 블록은, 프레임 N-2 가 프레임 N-1 보다 프레임 N 으로부터 시간상 더 많이 떨어져 있게 된다는 것을 설명하기 위하여 2 개의 예측 블록들의 결합 동안 기준 프레임 N-2 로부터의 제 2 예측 블록보다 더 무겁게 가중될 수도 있다.
이하 더 상세하게 설명되는 바와 같이, MC 유닛 (37) 은 각각의 정수 및 서브-픽셀 포지션에 대해 DC 오프셋들을 계산할 수도 있다. 오프셋 값들은 대응하는 비디오 블록의 픽셀 값들 모두를 상향 또는 하향 바이어싱하는데 이용되는 절대 값들 또는 사인 값들을 포함할 수도 있으며, 이는 다시 장면 변화, 플래시, 라이팅 변화, 또는 비디오 인코딩 시에 직면하게 되는 유사한 것들에 매우 유용할 수도 있다. 본 개시물의 오프셋 기술은 루마 블록들, 크로마 블록들 또는 양자에 대하여 적용될 수도 있다. 상이한 오프셋들은 비디오 블록 (예를 들어, 루마 블록 및 크로마 블록) 의 각각의 타입과 관련된 각각의 정수 및 서브-정수 픽셀 위치에 대해 정의될 수도 있다. 또한, 상이한 오프셋들은 각각의 블록의 각각의 특정 사이즈, 파티션 또는 서브-파티션에서 각각의 블록에 할당될 수 있다. "오프셋" 및 "DC 오프셋" 이란 용어들은 본 개시물에서 상호교환가능하게 사용된다.
일단 오프셋 값들이 정의되면, MC 유닛 (37) 은 예측 데이터 및 오프셋들에 기초하여 비디오 데이터를 코딩하기 위하여 제 2 코딩 패스를 수행할 수도 있다. 특히, MC 유닛 (37) 은 오프셋 값들을 원래의 예측 비디오 블록들에 적용하여 오프셋 예측 비디오 블록들을 생성하고, 오프셋 예측 비디오 블록들에 기초하여 코딩된 유닛의 비디오 블록들을 인코딩할 수도 있다. 예측 블록들의 픽셀 위치들 (정수 위치 또는 복수의 가능한 서브-정수 픽셀 위치들 중 하나) 에 따른 위치 기반 방식으로 예측 블록들의 픽셀 값들에 오프셋을 부가함으로써, 예측 블록들은 코딩되는 블록들과 보다 유사할 수도 있으며, 이는 코딩 효율을 개선할 수 있다. 더욱이, 오프셋 값들이 상이한 픽셀 위치들 마다 다르게 정의되기 때문에, 본 개시물의 기술들은 상이한 타입의 보간과 관련된 데이터의 코딩 간의 세분화 (segmentation) 를 달성할 능력을 제공할 수도 있다.
일단 MC 유닛 (37) 이 오프셋 예측 데이터 (예를 들어, 보간된 데이터 또는 정수-기반 데이터일 수도 있는 오프셋 예측 비디오 블록) 를 생성했다면, 비디오 인코더 (50) 는 코딩되는 원래의 비디오 블록으로부터 오프셋 예측 블록을 뺌으로써 잔류 비디오 블록 (도 2 에서 "RESID. BLOCK" 으로 레이블됨) 을 형성한다. 가산기 (48) 는 이 뺄셈 연산을 수행하는 컴포넌트 또는 컴포넌트들을 나타낸다. 변환 유닛 (38) 은 그 잔류 블록에 이산 코사인 변환 (DCT) 또는 개념상 유사한 변환과 같은 변환을 적용하여, 잔류 변환 블록 계수들을 포함하는 비디오 블록을 생성한다. 예를 들어, 변환 유닛 (38) 은 DCT 와 개념상 유사한, H.264 표준에 의해 정의된 것과 같은 다른 변환들을 수행할 수도 있다. 웨이브릿 변환, 정수 변환, 서브-대역 변환 또는 다른 타입의 변환이 또한 이용될 수 있다. 어떠한 경우에도, 변환 유닛 (38) 은 잔류 블록에 변환을 적용하여 잔류 변환 계수들의 블록을 생성한다. 변환은 잔류 정보를 픽셀 도메인으로부터 주파수 도메인으로 컨버팅할 수도 있다.
양자화 유닛 (40) 은 잔류 변환 계수들을 양자화하여 비트 레이트를 더욱 저감시킨다. 양자화 프로세스는 계수들의 일부 또는 전부와 관련된 비트 심도를 저감시킬 수도 있다. 예를 들어, 16-비트 값은 양자화 동안 15-비트 값으로 내림될 수도 있다. 또한, 양자화 유닛 (40) 은 또한 원하는 수의 비트들을 상이한 오프셋들의 각각의 정수부 및 분수부에 할당하기 위해 본 개시물의 기술들을 이용하여 상이한 오프셋들을 양자화할 수도 있다. 특히, 양자화 유닛 (40) 은 오프셋 값들의 각각에 대해, 제 1 수의 비트들을 소정의 오프셋 값의 정수부에 할당하고, 제 2 수의 비트들을 소정의 오프셋 값의 분수부에 할당할 수도 있으며, 비트들의 제 1 수 및 제 2 수는 정수부의 매그니튜드에 기초하여 결정된다. 엔트로피 코딩 유닛 (46) 은 제 2 수의 비트들과는 다르게 제 1 수의 비트들을 인코딩할 수도 있다.
양자화에 후속하여, 엔트로피 코딩 유닛 (46) 은 양자화된 변환 계수들을 엔트로피 코딩한다. 예를 들어, 엔트로피 코딩 유닛 (46) 은 CAVLC, CABAC, 또는 다른 엔트로피 코딩 방법론을 수행할 수도 있다. 엔트로피 코딩 유닛 (46) 은 또한 예측 유닛 (32) 또는 비디오 인코더 (50) 의 다른 컴포넌트로부터 획득된 하나 이상의 예측 신택스 엘리먼트들을 코딩할 수도 있다. 하나 이상의 예측 신택스 엘리먼트들은 서브-픽셀 데이터, 필터 계수들의 세트 또는 서브세트, 또는 예측 블록의 생성과 관련된 다른 정보를 생성하는데 이용되었던 코딩 모드, 하나 이상의 모션 벡터들, 보간 기술을 포함할 수도 있다. 계수 예측 및 양자화 유닛 (41) 은 필터 계수들과 같은 예측 신택스를 예측적으로 인코딩 및 양자화할 수도 있다. 엔트로피 코딩 유닛 (46) 에 의한 엔트로피 코딩에 후속하여, 인코딩된 비디오 및 신택스 엘리먼트들은 다른 디바이스로 송신되고 추후 송신 또는 검색을 위해 아카이브될 수도 있다. 코딩된 비트스트림은 엔트로피 코딩된 잔류 블록들, 이러한 블록들에 대한 모션 벡터들, 및 코딩된 유닛 내의 상이한 정수 및 서브-정수 픽셀 위치들에서의 복수의 상이한 오프셋들을 식별하는 오프셋 값들을 포함하는 다른 신택스를 포함할 수도 있다.
역양자화 유닛 (42) 및 역변환 유닛 (44) 은 예를 들어 기준 블록으로서 추후 이용을 위해, 픽셀 도메인 내의 잔류 블록을 복원하기 위해, 각각 역양자화 및 역변환을 적용한다. 복원된 잔류 블록 (도 2 에서 "RECON. RESID. BLOCK" 으로 레이블됨) 은 변환 유닛 (38) 에 제공된 잔류 블록의 복원된 버전을 나타낼 수도 있다. 복원된 잔류 블록은 양자화 및 역양자화 연산들에 의해 야기된 상세의 손실로 인해 가산기 (48) 에 의해 생성된 잔류 블록과는 다를 수도 있다. 가산기 (51) 는 복원된 잔류 블록을 예측 유닛 (32) 에 의해 생성된 모션 보상된 예측 블록과 더하여 메모리 (34) 에의 저장을 위한 복원된 비디오 블록을 생성한다. 복원된 비디오 블록은 후속 비디오 프레임 또는 후속 코딩된 유닛에서 블록을 후속하여 코딩하는데 이용될 수도 있는 기준 블록으로서 예측 유닛 (32) 에 의해 이용될 수도 있다.
상기 설명한 바와 같이, 예측 유닛 (32) 은 분수 픽셀 (또는 서브-픽셀) 정밀도로 모션 추정을 수행할 수도 있다. 예측 유닛 (32) 이 분수 픽셀 모션 추정을 이용하는 경우, 예측 유닛 (32) 은 본 개시물에 설명된 보간 연산들을 이용하여 서브-픽셀 해상도 (예를 들어, 서브-픽셀 또는 분수 픽셀 값들) 에서 데이터를 생성할 수도 있다. 즉, 보간 연산들은 정수 픽셀 포지션들 간의 포지션들에서의 값들을 비교하는데 이용된다. 정수-픽셀 포지션들 간의 거리의 1/2 에 위치한 서브-픽셀 포지션들은 1/2 픽셀 (1/2-화소) 포지션들로 지칭될 수도 있고, 정수-픽셀 포지션과 1/2-픽셀 포지션 간의 거리의 1/2 에 위치한 서브-픽셀 포지션들은 1/4-픽셀 (1/4-화소) 포지션들로 지칭될 수도 있고, 정수-픽셀 포지션 (또는 1/2-픽셀 포지션) 과 1/4-픽셀 포지션 간의 거리의 1/2 에 위치한 서브-픽셀 포지션들은 1/8-픽셀 (1/8-화소) 포지션들로 지칭될 수도 있으며, 등등이다.
도 3 은 본원에 설명된 방식으로 인코딩되는 비디오 시퀀스를 디코딩하는 비디오 디코더 (60) 의 일 예를 예시한 블록도이다. 비디오 디코더 (60) 는 디코딩 동안 본 개시물의 오프셋 기술들을 수행하는 모션 보상 유닛 (55) 을 포함한다. 특히, 디코딩 측에서, 모션 보상 유닛 (55) 은 코딩된 유닛에 대해 복수의 오프셋 값들을 식별하는 (예를 들어, 정수 픽셀 위치들 및 하나 이상의 비정수 픽셀 위치들에 대해 상이한 오프셋들을 정의함) 엔트로피 디코딩 유닛 (52) 으로부터 신택스 엘리먼트를 수신할 수도 있다. 모션 보상 유닛 (55) 은 엔트로피 디코딩 유닛 (52) 으로부터 수신된 모션 벡터들에 기초하여 예측 데이터를 생성할 수도 있고, (예측 데이터의 픽셀 위치에 기초하여) 이러한 예측 데이터에 적합한 오프셋을 부가하여 오프셋 예측 데이터를 생성할 수도 있다. 예측 데이터는 보간된 데이터일 수도 있으며, 이 경우에는, 비정수 위치에 대한 오프셋 값들 중 대응하는 하나가 오프셋 예측 데이터를 생성하기 위해 예측 데이터에 적용될 수도 있다. 이 오프셋 예측 데이터에 기초하여, 비디오 데이터 (예를 들어, 복원된 잔류 비디오 블록) 이 디코딩될 수 있다. 특히, 비디오 디코더 (60) 는 오프셋 예측 데이터를 잔류 비디오 블록과 결합하여 인코딩되었던 원래의 비디오 블록을 생성할 수도 있다.
엔트로피 디코딩 유닛 (52) 은 수신된 비트스트림을 엔트로피 디코딩하여 양자화된 계수들 (도 3 에서 "QUANTIZ. COEFF." 로 레이블됨) 및 신택스 (예를 들어, 코딩된 유닛에 대한 복수의 오프셋 값들 및 모션 벡터들, 도 3 에서 "오프셋 값들" 및 "모션 벡터들" 로 레이블됨) 를 생성한다. 신택스는 엔트로피 코딩 유닛 (52) 으로부터 모션 보상 유닛 (55) 으로 포워딩된다. 역양자화 유닛 (56) 은 양자화된 블록 계수들을 역양자화 (즉, 탈양자화 (de-quantize)) 한다. 역양자화 프로세스는 H.264 디코딩에 의해 정의된 바와 같은 종래의 프로세스일 수도 있다. 역변환 유닛 (58) 은 픽셀 도메인에서 잔류 블록들을 생성하기 위하여 변환 계수들에 역변환, 예를 들어, 역 DCT 또는 개념상 유사한 역변환 프로세스를 적용한다. 모션 보상 유닛 (55) 은 모션 보상된 블록들을 생성하여, 가능하게는, 이 또한 신택스에 포함될 수도 있는 보간 필터 계수들의 하나 이상의 세트들에 기초하여 보간을 수행한다. 일단 모션 보상 유닛 (55) 이 모션 벡터들에 기초하여 예측 블록들을 생성하면, 각각의 예측 블록에 대한 적합한 오프셋이 인코더에 의해 수행된 처음의 인코딩에서 이용되었던 오프셋 예측 블록들을 생성하기 위해 예측 블록들에 부가될 수 있다.
합산기 (64) 는 잔류 블록들을 모션 보상 유닛 (55) 에 의해 생성된 대응하는 오프셋 예측 블록들과 합산함으로써 잔류 블록들을 디코딩하여 디코딩된 블록들을 형성한다. 원한다면, 디블록킹 필터가 또한 블록화 아티팩트를 제거하기 위하여 디코딩된 블록들을 필터링하기 위해 적용될 수도 있다. 디코딩된 비디오 블록들은 그 후 기준 프레임 저장장치 (62) 에 저장되며, 기준 프레임 저장장치 (62) 는 후속 모션 보상을 위해 기준 블록들을 제공하고 또한 드라이브 디스플레이 디바이스 (이를 테면 도 1 의 디바이스 (28)) 를 위한 디코딩된 비디오를 생성한다.
다시, 본 개시물의 기술들은 오프셋의 모션 보상된 양방향성 예측 데이터에의 적용에 관한 것이며, 여기서 상이한 오프셋들은 보간에 의해 정의된 정수 및 상이한 서브-정수 픽셀 위치들에 대해 이용된다. 인코더는 상이한 오프셋 값들을 정의 및 적용하기 위해 본 개시물의 기술들을 이용하며, 디코더는 그 인코더에 의해 정의 및 이용된 그 동일한 오프셋 값들을 식별하기 위하여 인코더로부터 전송된 신택스 엘리먼트들을 인터프리팅 (interprete) 한다. 예측 데이터의 픽셀 값들에 적합한 오프셋이 적용되며, 적합한 오프셋은 이러한 예측 데이터에 대해 정의된 픽셀 위치, 예를 들어, 정수 픽셀 위치 또는 여러 가능한 비정수 픽셀 위치들 중 하나에 기초하여 선택된다.
도 4 는 예측 데이터와 관련된 정수 픽셀 (또는 풀 픽셀) 포지션들, 및 보간된 예측 데이터와 관련된 서브-픽셀 (또는 분수-픽셀) 포지션들을 예시한 개념도이다. 도 4 의 개념도에서, 상이한 박스들은 프레임 또는 프레임의 블록 내의 픽셀 및 서브-픽셀 위치들 또는 포지션들을 나타낸다. (실선을 가진 박스 내의) 대문자들은 정수-픽셀 위치들을 나타내는 한편, (점선을 가진 박스 내의) 소문자들은 서브-픽셀 위치들을 나타낸다. 특히, 픽셀 위치들 (A1-A6, B1-B6, C1-C6, D1-D6, E1-E6 및 F1-F6) 은 프레임, 슬라이스 또는 다른 코딩된 유닛 내의 정수 픽셀 위치들의 6×6 어레이를 나타낸다. 서브-픽셀 위치들 ("a" 내지 "o") 은 정수 픽셀 C3 과 관련된, 예를 들어 정수 픽셀 위치들 (C3, C4, D3 및 D4) 사이의 15 개의 서브-픽셀 위치들을 나타낸다. 서브-픽셀 위치들 ("a" 내지 "o") 은 정수 픽셀 C3 과 관련된, 예를 들어 정수 픽셀 위치들 (C3, C4, D3 및 D4) 사이의 15 개의 서브-픽셀 위치들을 나타낸다. 서브-픽셀 위치들 ("a" 내지 "o") 은 정수 픽셀 C3 과 관련된 모든 1/2-화소 및 1/4-화소 픽셀 위치를 나타낸다. 유사하게, 서브-픽셀 위치들 ("a'" 내지 "o'") 은 정수 픽셀 E5 과 관련된, 예를 들어, 정수 픽셀 위치들 (E5, E6, F5 및 F6) 사이의 15 개의 서브-픽셀 위치들을 나타낸다. 유사하게, 서브-픽셀 위치들은 모든 정수 픽셀 위치 마다 존재할 수도 있다. (픽셀 "C3" 과 관련된 15 개의 상이한 분수 위치들 중 하나 이상을 생성하는데 이용되는, 상기 언급된 것 이외에는) 단순성을 위해 다른 분수 위치들 대부분이 도시되지 않는다.
정수-픽셀 위치들은 비디오 데이터가 처음에 생성되었을 때 포토다이오드와 같은 물리적 센서 엘리먼트와 관련될 수도 있다. 포토다이오드는 센서의 위치에서의 광원의 강도를 측정하고 픽셀 강도 값을 정수-픽셀 위치와 관련시킬 수도 있다. 다시, 각각의 정수-픽셀 위치는 15 개의 서브-픽셀 위치들 (또는 가능하다면 그 이상의 서브-픽셀 위치들) 의 관련 세트를 가질 수도 있다. 정수-픽셀 위치들과 관련된 서브-픽셀 위치들의 수는 원하는 정밀도에 의존할 수도 있다. 도 4 에 예시된 예에서, 원하는 정밀도는 1/4-픽셀 정밀도이며, 이 경우에는, 정수 픽셀 위치들 각각은 15 개의 상이한 서브-픽셀 포지션들과 대응한다. 더 많은 또는 더 적은 서브-픽셀 포지션들은 원하는 정밀도에 기초하여 각각의 정수-픽셀 위치와 관련될 수도 있다. 예를 들어, 1/2-픽셀 정밀도의 경우, 각각의 정수-픽셀 위치는 3 개의 서브-픽셀 포지션들과 대응할 수도 있다. 다른 예로서, 정수-픽셀 위치들 각각은 1/8-픽셀 정밀도의 경우 63 개의 서브-픽셀 포지션들과 대응할 수도 있다. 각각의 픽셀 위치는 하나 이상의 픽셀 값들, 예를 들어, 하나 이상의 휘도 (luminance) 및 색차 (chrominance) 값들을 정의할 수도 있다.
Y 는 휘도를 나타낼 수도 있고, Cb 및 Cr 은 3 차원 YCbCr 색 공간의 색차의 2 개의 상이한 값들을 나타낼 수도 있다. 각각의 픽셀 위치는 실제로 3 차원 색 공간에 대한 3 개의 픽셀 값들을 정의할 수도 있다. 그러나, 본 개시물의 기술들은 단순성을 위하여 1 차원에 대한 예측을 나타낼 수도 있다. 기술들이 일 차원의 픽셀 값들에 대하여 설명된다는 점에서, 유사한 기술들은 다른 차원들로 확대될 수도 있다.
각각의 픽셀은 그 픽셀이 비디오 블록을 정의하도록 비디오 블록의 상부 우측 픽셀에 대응할 수도 있다. 보간 또는 외삽의 경우, 비디오 블록의 픽셀들 각각은 각각의 서브-정수 픽셀들로부터 동일한 공간 거리를 갖는 상이한 정수 픽셀들에 대하여 동일한 방식으로 보간 또는 외삽될 수도 있다.
예를 들어, ITU H.264/AVC 표준에서, 1/2-픽셀 포지션들에서 루마 신호들을 획득하기 위하여, 계수들 [1, -5, 20, 20, -5, 1] 을 가진 6-탭 위너 (Wiener) 필터가 통상적으로 이용된다. 그 후, 1/4-픽셀 위치들에서 루마 신호들을 획득하기 위하여, 바이리니어 (bilinear) 필터가 이용된다. 바이리니어 필터는 또한 크로마 컴포넌트들을 위해 분수 픽셀 보간에 이용될 수도 있으며, 이는 H.264/AVC 에서 최대 1/8-픽셀 정밀도를 가질 수도 있다.
예를 들어, ITU-T H.264 표준에 부합하여, 예측 유닛 (32) 은 위너 필터와 같은 6-탭 보간 필터를 이용하여 1/2-픽셀 위치들에 대한 픽셀 값들을 결정할 수도 있다. H.264 표준의 경우에, 6-탭 보간 필터에 대한 필터 계수들은 다른 계수들이 이용될 수도 있지만 통상적으로는 [1, -5, 20, 20, -5, 1] 이다. 예측 유닛 (32) 은 보간 필터를 먼저 수평 방향으로 적용한 후 수직 방향으로 적용할 수도 있고, 또는 보간 필터를 먼저 수직 방향으로 적용한 후 수평 방향으로 적용할 수도 있다. 1/2-픽셀 포지션들 "b" 및 "h" 의 경우, 각각의 탭은 각각 수평 및 수직 방향의 정수 픽셀 포지션에 대응할 수도 있다. 특히, 1/2-픽셀 포지션 "b" 의 경우, 6-탭 필터의 탭들은 C1, C2, C3, C4, C5 및 C6 에 대응한다. 마찬가지로, 1/2-픽셀 포지션 "h" 의 경우, 6-탭 필터의 탭들은 A3, B3, C3, D3, E3 및 F3 에 대응한다. 예를 들어, 서브-픽셀 포지션들 "b" 및 "h" 에 대한 픽셀 값들은 식 (1) 및 식 (2) 를 이용하여 컴퓨팅될 수도 있다 :
Figure pct00001
Figure pct00002
1/2-픽셀 포지션 "j" 의 경우, 6-탭 필터의 탭들은 그것들 자체가 수평으로는 포지션들 C1-C6 과 D1-D6 사이, 또는 수직으로는 포지션들 A3-F3 과 A4-F4 사이에 보간된 것에 대응한다. 1/2-픽셀 위치 "j" 는 예를 들어, 식 (3) 또는 식 (4) 중 하나에 따라, 1/2-픽셀 포지션들의 이전에 보간된 픽셀 값들을 이용하는 6-탭 필터로 컴퓨팅될 수도 있으며 :
Figure pct00003
Figure pct00004
여기서 (도 4 에 예시한 바와 같이) aa 는 A3 과 A4 사이의 보간에 대응하고, bb 는 B3 과 B4 사이의 보간에 대응하고, b 는 C3 과 C4 사이의 보간에 대응하고, hh 는 D3 과 D4 사이의 보간에 대응하고, ii 는 E3 과 E4 사이의 보간에 대응하며, jj 는 F3 과 F4 사이의 보간에 대응한다. 식 (4) 에서, cc 는 C1 과 D1 사이의 보간에 대응하고, dd 는 C2 와 D2 사이의 보간에 대응하고, h 는 C3 과 D3 사이의 보간에 대응하고, ee 는 C4 와 D4 사이의 보간에 대응하고, ff 는 C5 와 D5 사이의 보간에 대응하며, gg 는 C6 과 D6 사이의 보간에 대응한다.
H.264 표준에 부합하여, 예측 유닛 (32) 은 바이리니어 보간 필터를 이용한 1/4-픽셀 위치들 "a", "c", "d", "e", "f", "g", "i", "k", "l", "m", "n" 및 "o" 에서의 픽셀 값들 및 주변 정수 및 1/2-픽셀 위치들의 픽셀 값들을 결정할 수도 있다. 예를 들어, 예측 유닛 (32) 은 C3 및 "b" 의 픽셀 값들을 이용하여 서브-픽셀 포지션 "a" 와 관련된 픽셀 값을 결정할 수도 있고, "b" 및 C4 의 픽셀 값들을 이용하여 서브-픽셀 포지션 "c" 와 관련된 픽셀 값을 결정할 수도 있으며, 등등이다.
도 4 는 기준 데이터의 제 1 리스트 내의 제 1 기준 비디오 유닛의 개념도이다. 도 4 에 대하여 상기 설명된 기술들은 기준 데이터의 제 1 리스트 내의 제 1 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 1 블록의 예측 값들을 초래한다. 상기 설명한 바와 같이, 양방향 인터-코딩에서는, 인코딩될 현재 블록에 대한 예측 비디오 유닛을 형성하기 위해 제 2 기준 유닛이 또한 요구된다. 도 4 에 대하여 상기 설명한 것과 유사한 방식으로, 기준 데이터의 제 2 리스트 내의 제 2 기준 비디오 유닛은 서브-정수 픽셀 포지션과 관련된 제 2 블록의 예측 값들을 생성하는데 이용된다. 제 1 리스트 및 제 2 리스트는 상이한 기준 프레임들, 상이한 프레임들로부터의 상이한 슬라이스들, 동일한 기준 프레임들로부터의 상이한 슬라이스들, 하나 이상의 이전 또는 후속 프레임들의 데이터의 상이한 부분들, 또는 가능하다면 각각이 하나 이상의 프레임들, 슬라이스들 또는 다른 코딩된 유닛들로부터의 데이터를 포함하는 상이한 세트들의 데이터를 포함할 수도 있다.
모션 추정 후에, 소정의 비디오 블록에 대한 최적의 모션 벡터가 예를 들어, 코딩 레이트 및 비디오 품질을 밸런싱하기 위하여 레이트-왜곡 모델을 이용하여 식별될 수도 있다. 예측 비디오 블록은 소정의 블록에 대한 최적의 모션 벡터를 이용한 모션 보상 동안 형성된다. 상기 설명한 바와 같이, 일단 예측 유닛 (32) 이 2 개의 예측 블록들을 생성했다면, 비디오 인코더 (50) 는 2 개의 예측 블록들을 결합하여 단일의 예측 블록을 생성한다. 그들의 결합 동안, 예측 블록들 각각은 다르게 가중될 수도 있다. 예를 들어, 프레임 N 의 코딩된 유닛이 기준 프레임 N-1 로부터의 예측 블록 및 기준 프레임 N-2 로부터의 예측 블록을 이용한다면, 기준 프레임 N-1 은 프레임 N-2 가 프레임 N-1 보다 프레임 N 으로부터 시간상 더 많이 떨어져 있게 된다는 것을 설명하기 위하여 2 개의 예측 블록들의 결합 동안 기준 프레임 N-2 보다 더 무겁게 가중될 수도 있다. 상기 약술한 바와 같이, 잔류 비디오 블록은 원래의 비디오 블록으로부터 예측 비디오 블록을 뺌으로써 형성된다. 그 후 잔류 블록에 변환이 적용되며, 변환 계수들이 비트 레이트를 더욱 저감시키기 위해 양자화 및 엔트로피 코딩된다.
본 개시물의 기술들은 양방향성 예측 비디오 유닛들에 오프셋을 부가하는 것을 포함한다. 이하 더 상세하게 설명되는 바와 같이, 각각의 서브-화소 포지션에 대해, 기준 데이터의 제 1 리스트 내의 제 1 기준 비디오 유닛에 기초하여 제 1 오프셋 값이 계산된다. 그 후, 각각의 서브-화소 포지션에 대해, 기준 데이터의 제 2 리스트 내의 제 2 기준 비디오 유닛에 기초하여 제 2 오프셋 값이 계산된다. 그러나, 제 2 오프셋 값 계산은 이전에 계산된 제 1 오프셋 값을 이용한다. 제 1 오프셋 값 및 제 2 오프셋 값을 계산하는 것은 1/4-화소 정밀도를 위한 32 개의 오프셋 값들을 초래한다 : 서브-화소 및 정수 픽셀 포지션 당 2 개의 오프셋들, 즉 제 1 오프셋 및 제 2 오프셋. 각각의 포지션에 대한 최종 오프셋 값을 결정하기 위하여, 제 1 오프셋 값은 제 1 예측 블록으로부터의 포지션의 제 1 예측과 결합되고, 제 2 오프셋은 제 2 예측 블록으로부터의 포지션의 제 2 예측과 결합되며, 그 결과는 가중화가 이용되지 않았다면 2 로 나눠진다.
오프셋들의 값은 상이한 오프셋들이 상이한 정수 및 서브-정수 픽셀 위치들에 대해 정의된다는 점에서 위치 특정적일 수도 있다. 픽셀들 "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->널, b->널, c->널, d->널, e->1, f->6, g->4, h->널, i->5, j->널, k->7, l->널, m->3, n->8, o->2} 일 수도 있다.
다른 에에서, 오프셋 값은 기준 프레임의 픽셀들의 평균 값과 현재 프레임의 픽셀들의 평균 값 사이의 차이를 포함할 수도 있다. 이러한 차이를
Figure pct00005
로 지칭하면, 일 예에서, 0 <
Figure pct00006
< 1.5 인 경우, 1 의 매그니튜드를 가진 오프셋들은
Figure pct00007
(최근접 정수 (nearest integer) 로 반올림) 픽셀 포지션들에 할당된다. 예를 들어,
Figure pct00008
이 0.83 과 같은 경우, 16 개의 픽셀 위치들 중 8 개가 1 의 매크니튜드를 가진 오프셋을 할당받는다.
다른 예로서,
Figure pct00009
가 기준 블록의 픽셀들의 평균 값과 현재 블록의 픽셀들의 평균 값 사이의 차이를 나타낸다고 가정한다. 또한,
Figure pct00010
가 적어도 임계 개수의 매크로블록들에 할당된
Figure pct00011
의 최소 값이라는 것을 가정하고,
Figure pct00012
가 적어도 임계 개수의 매크로블록들에 할당된
Figure pct00013
의 최대 값이라는 것을 가정한다. 일 예에서,
Figure pct00014
> 1.5 인 경우, 픽셀 값들 각각은
Figure pct00015
Figure pct00016
사이의 범위에 이르는 오프셋 값을 할당받는다.
다시, 도 4 는 대문자들을 가진 실선 박스들로 정수-픽셀 샘플들 (풀-픽셀들로도 불림) 을 도시한다. 임의의 소정의 정수-픽셀 샘플의 경우, 정수-픽셀 샘플 "C3" 에 대해 도시되고 도 4 에서 "a" 내지 "o" 로 레이블되는 15 개의 서브-픽셀 포지션들이 존재할 수도 있다. H.264/AVC 에 따르면, MC 유닛 (37) 은 먼저 일차원 6-탭 위너 필터를 이용하여 1/2-픽셀 포지션들 "b", "h" 및 "j" 을 계산할 수도 있다. 보간 필터는 먼저 수평 방향으로 적용된 후 수직 방향으로 적용될 수도 있고, 또는 먼저 수직 방향으로 적용된 후 수평 방향으로 적용될 수도 있다. MC 유닛 (37) 은 그 후 바이리니어 필터 및 이미 계산된 1/2-픽셀 샘플들을 이용하여 나머지 1/4-픽셀 포지션들을 필터링할 수도 있다.
보간된 데이터를 생성하기 위해 적용된 실제 필터들은 광범위한 구현들에 영향받기 쉬울 수도 있다. 일 예로서, 여러 세트들의 고정된, 미리 결정된 보간 필터들이 적용될 수도 있고, 최적의 예측 데이터를 산출하는 세트가 선택될 수도 있다. 일부 예에서는, 본 개시물에 설명한 바와 같이, 하나 이상의 기준 프레임들에 대한 역사적 보간 데이터에 기초하여 보간 필터들이 선택될 수도 있다. 본 개시물에 따르면, 오프셋의 부가는 코딩 시에 이용될 기준 프레임으로부터 임의의 보간된 예측 데이터를 생성한 후이지만, 코딩될 현재 프레임에 대해 모션 추정이 수행되기 전에 발생한다.
MC 유닛 (37) 은 SIFO (switched interpolation filter with offset) 방식을 이용할 수도 있다. MC 유닛 (37) 은 복수의 상이한 미리 정의된 세트의 보간 필터 계수들에 의해 각각 정의될 수도 있는, 예를 들어 복수의 고정된 보간 필터들 (39) 사이에서 선택할 수도 있다. 보간 필터의 선택은 각각의 코딩된 유닛 레벨 (예를 들어, 프레임 레벨 또는 슬라이스 레벨) 에 대해 또는 각각의 서브-픽셀 포지션 (샘플 레벨) 에 대해 수행될 수도 있다. 또한, 본 개시물에 따르면, DC 오프셋들은 또한 예측 후에 부가될 수도 있고, DC 오프셋들은 또한 본 개시물에 설명된 바와 같이 각각의 가능한 정수 또는 분수 픽셀 위치에 대해 정의될 수도 있다.
따라서, MC 유닛 (37) 은 여러 가능한 대안의 보간 데이터를 정의하기 위하여 상이한 세트의 고정된 보간 필터들 (39) 을 이용할 수도 있다. 예로서, MC 유닛 (37) 은 표준 ITU-T H.264 필터 세트, H.264/AVC 에 기초하지만 더 높은 정밀도를 갖는 필터 세트 (1/2-픽셀 포지션들에 대한 중간 반올림 및 1/4-픽셀 포지션들에 대한 바이어싱 반올림 없음) 또는 커스텀화된 보간 필터들의 세트를 이용할 수도 있다. 커스텀화된 보간 필터들의 세트는 트레이닝 비디오 시퀀스들의 세트를 이용함으로써 미리 정의될 수도 있다.
최적의 예측 (즉, 더 작은 예측 오차 에너지) 을 제공하는 필터 세트가 MC 유닛 (37) 에 의해 선택될 수도 있다. 즉, 모션 보상 필터링된 기준들과 예측되는 블록들 간의 오차를 최소화하기 위하여 각각의 서브-픽셀 포지션에 대해 필터가 선택될 수도 있다. 일 예에서, 리스트 0, 예를 들어, sub_pos[0] 으로부터의 서브-픽셀 포지션들과 리스트 1, 예를 들어, sub_pos[1] 로부터의 서브-픽셀 포지션들의 결합에 대해 누적된 오차가 다음의 의사코드에 따라 계산될 수도 있으며 :
Figure pct00017
여기서 "predF[i]" 및 "predB[j]" 항들은 필터들 i 및 j 에 대응하는 순방향 예측 (forward prediction) 및 역방향 예측 (backward prediction) 이고, "wbp_weight[list][fw][bw][comp]" 항은 가중된 예측에서 이용되는 가중치들을 나타내고, "wp_offset[list][ref][comp]" 항은 가중된 예측에서의 오프셋들이며, "img->bipred_rounding" 항은 B-슬라이스에서의 반올림을 제어한다. 가중된 예측이 이용되지 않는 경우, 제 1 스테이트먼트는 다음으로 단순화된다 :
Figure pct00018
예로서, MC 유닛 (37) 은 고정된 보간 필터들 (39) 의 세트로부터 제 1 필터 "i", 예를 들어, 필터
Figure pct00019
를 선택하고, 순방향 예측, 즉,
Figure pct00020
에 대한 서브-픽셀 예측 데이터를 생성한다. MC 유닛 (37) 은 그 후 고정된 보간 필터들 (39) 의 세트로부터 제 2 필터 "j", 예를 들어, 필터
Figure pct00021
를 선택하고, 역방향 예측, 즉,
Figure pct00022
에 대한 서브-픽셀 예측 데이터를 생성한다. 상기 제시된 의사코드에 의해 나타내진 기술들에 따르면, 누적된 오차 값
Figure pct00023
은 순방향 예측에 대한 서브-픽셀 예측 데이터 및 역방향 예측에 대한 서브-픽셀 예측 데이터를 이용하여 계산된다. MC 유닛 (37) 은 필터들
Figure pct00024
Figure pct00025
의 결합에 대해 누적된 오차 값을 저장한다. 그 후, MC 유닛 (37) 은 고정된 보간 필터들 (39) 의 세트로부터 다른 2 개의 필터들을 선택하여 순방향 예측 및 역방향 예측에 대한 서브-픽셀 예측 데이터를 생성한다. 앞서와 같이, 누적된 오차 값은 계산되어 저장된다. MC 유닛 (37) 은 고정된 보간 필터들의 세트의 각각의 결합에 대해 오차 값들을 누적 및 저장하는 이 프로세스를 계속할 수도 있다. 일부 예에서, MC 유닛 (37) 은 서브-픽셀 포지션들 각각에 대해, 디폴트 필터들, 예를 들어, 표준 ITU-T H.264 필터 세트를 선택할 수도 있다. 일 예에서, MC 유닛 (37) 은 적어도 하나의 결합의 누적된 오차 값이 임계 오차 값 아래이면 필터들의 미리 결정된 수의 결합들에 대해 프로세스를 계속할 수도 있다. 일단 MC 유닛 (37) 이 고정된 보간 필터들 (39) 의 세트에 대해 다양한 누적된 오차 값들을 계산 및 저장하면, MC 유닛 (37) 은 각각의 서브-픽셀 포지션에 대한 필터를 선택하는 프로세스를 시작한다.
일 예에서, 필터들 (39) 의 각각의 결합에 대해 예측 오차들을 누적한 후에, MC 유닛 (37) 은 레이트-왜곡 비용을 계산하여 고정된 보간 필터들 (39) 의 각각의 세트에 대한 필터 계수 측 정보를 인코딩한다. 예를 들어, MC 유닛 (37) 은 고정된 보간 필터들의 각각의 세트에 대한 필터 계수들을 레이트 및 왜곡의 함수로서 인코딩하기 위한 비용을 결정하기 위하여 비용 함수를 이용할 수도 있다. 일부 예에서, 비트 단위의 비용에 스케일링 팩터가 곱해질 수도 있다. 일단 필터들의 각각의 세트에 대한 비용이 계산되었다면, 필터들의 각각의 세트에 대한 비용 및 누적된 오차 값이 서로 비교될 수 있고, 최저 오차 및 최저 비용을 초래하는 필터들의 세트가 선택될 수도 있다.
일단 필터들이 선택되고 예측 데이터가 MC 유닛 (37) 에 의해 생성 또는 보간되면, 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 오프셋들을 예측 데이터의 픽셀들에 부가하는 것은 상이한 비디오 프레임들 간의 조명 변화의 효과를 캡처하게 도울 수도 있다. 조명 변화는 비디오 시퀀스에서 플래시 또는 다크닝 스카이와 같은 것에 의해 야기될 수도 있다. 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 오프셋들이 1/4-화소 정밀도에 대해 이용되는 경우, 총 16 개의 DC 오프셋들이 디코더에 대한 비디오 비트스트림에 신택스 엘리먼트들로서 코딩 및 전송될 수도 있다. 샘플 기반 DC 오프셋들을 적용함으로써, MC 유닛 (37) 은 단순하지만 효과적인 모션 세분화 툴을 제공할 수도 있다. 일 예로서, 비디오 프레임은 여전히 배경인 다크닝 스카이 및 전경인 움직이는 물체를 포함할 수도 있다. 이 경우에, 배경 및 전경은 상이한 정도의 조명 변화를 가질 수도 있으며, 소정의 비디오 블록을 식별하는 픽셀의 위치에 의해 정의된 위치 특정 DC 오프셋 값들을 이용함으로써, 모션 보상 유닛 (37) 은 이러한 위치 특정 DC 오프셋 값들 없이 달성될 수 있었던 것보다 더 효율적인 방식으로 전경 및 배경의 상이한 정도의 조명 변화를 캡처하는 것이 가능할 수도 있다.
상기 언급한 바와 같이, 본 개시물의 기술들은 양방향성 예측 비디오 블록들에 오프셋을 부가하는 것을 포함한다. 양방향성 예측 비디오 블록들이 기준 데이터의 2 개의 상이한 리스트들로부터의 2 개의 상이한 기준 비디오 유닛들을 이용하기 때문에, 2 개의 상이한 DC 오프셋들은 상이한 기준 프레임들과 관련된 각각의 정수 및 서브-정수 위치에 대해 계산될 수도 있다. 그러나, 기준 데이터의 제 1 리스트 내의 제 1 기준 비디오 유닛에 기초하여 각각의 정수 및 서브-정수 위치에 대해 바람직한 제 1 오프셋이 계산된다면, 그리고 기준 데이터의 제 2 리스트 내의 제 2 기준 비디오 유닛에 기초하여 각각의 정수 및 서브-정수 위치에 대해 바람직한 제 2 오프셋이 계산된다면, 제 1 바람직한 오프셋과 제 2 바람직한 오프셋의 결합이 반드시 바람직한 오프셋을 초래하지는 않을 것이다. 예를 들어, 제 1 오프셋과 제 2 오프셋의 결합은 바람직한 오프셋보다 큰 오프셋을 초래할 수도 있다. 본 개시물의 기술들에 따르면, 각각의 정수 및 서브-정수 위치에 대한 2 개의 상이한 오프셋들이 바람직한 오프셋을 생성하기 위하여 공동으로 계산될 수도 있다. 먼저, 오프셋들은 하나의 리스트, 예를 들어, 리스트 0 에 대해 계산된 후, 다른 리스트, 예를 들어, 리스트 1 에 대한 오프셋들이 또 다른 리스트, 예를 들어, 리스트 0 으로부터 이전에 결정된 오프셋들을 고려함으로써 계산된다.
제 1 DC 오프셋들의 세트는 리스트 0 내의 가장 가까운 기준 프레임에 대해 계산될 수도 있다. 각각의 서브-픽셀 포지션 sub_pos[0] 에 대해, DC 오프셋은 서브-픽셀 포지션 sub_pos[0] 에 대응하는 모션 벡터 정밀도를 갖는 현재 프레임 내의 모든 픽셀들의 평균과 그들의 양방향 예측 (bi-predicted) 보간된 값들의 평균 사이의 차이로서 계산될 수도 있다. 리스트 0 내의 프레임 0 에 대한 서브-픽셀 오프셋들의 계산에 이용된 오차는 다음의 의사코드에서 설명한 바와 같이
Figure pct00026
에서 누적되며 :
Figure pct00027
여기서 "tmp" 는 예측 오차이다. 변수 "filterF" 는 순방향 예측을 위해 서브-픽셀 예측 데이터를 생성하기 위해 선택되었던 필터의 인덱스를 저장한다. 이 방식으로, 누적된 최적화된 오프셋들이 제 1 리스트, 예를 들어, 리스트 0 에 대해 계산된다.
일단 상기 계산된 오프셋, 즉
Figure pct00028
이 제 1 리스트, 예를 들어, 리스트 0 내의 가장 가까운 프레임에서의 보간된 픽셀들에 적용되면, 오프셋들은 또 다른, 또는 제 2 리스트, 예를 들어, 리스트 1 내의 가장 가까운 기준 프레임에 대해 계산된다. 상기 언급한 바와 같이, 제 1 리스트, 예를 들어, 리스트 0 에 대한 누적된 오프셋들은 제 2 리스트, 예를 들어, 리스트 1 에 대한 오프셋들을 계산하는데 이용된다. 제 2 리스트에 대한 오프셋들의 결정은 다음의 의사코드에서 이하 도시되며 :
Figure pct00029
여기서 "tmp" 는 예측 오차이고, "offsetF" 는 제 1 리스트에 대해 결정되었던 최적화된 오프셋이고, "predF" 는 제 1 리스트로부터의 예측이고, "predB" 는 제 2 리스트로부터의 예측이고, "w0" 은 제 1 리스트에 대한 가중 팩터, 예를 들어, 제 1 가중치이고, "w1" 은 제 2 리스트에 대한 가중 팩터, 예를 들어, 제 2 가중치이며,
Figure pct00030
는 누적된 오차이다. 가중치들을 제 1 오프셋 값과 제 2 오프셋 값 중 적어도 하나에 적용함으로써, 이 절차는 어떤 경우라도 예측들의 가중치들, 및 B-슬라이스에 이용된 반올림을 고려한다. 이 시점에서, 각각의 정수 및 서브-정수 위치에 대해 공동으로 결정된 2 개의 오프셋들이 존재한다 : 제 1 오프셋 ("offsetF"), 예를 들어, 순방향 오프셋, 및 제 1 오프셋을 이용하여 계산되는 제 2 오프셋 ("offsetB"), 예를 들어, 역방향 오프셋. 이 방식으로, 15 개의 서브-화소 포지션들을 갖는 각각의 정수 포지션에 대해, 32 개의 오프셋들이 계산된다.
다음에, 예측되는 소정의 픽셀에 대해, 소정의 픽셀 포지션에 대한 최종 오프셋 값을 계산하는데 있어서 이용되는 예측 오차 ("tmp") 는 다음의 의사코드에 의해 예시한 바와 같이, 제 1 리스트로부터의 예측 ("predF"), 예를 들어, 순방향 예측, 제 1 오프셋 ("offsetF"), 예를 들어, 순방향 오프셋, 제 2 리스트로부터의 예측 ("predB"), 예를 들어, 역방향 예측 및 제 2 오프셋 ("offsetB"), 예를 들어, 역방향 오프셋을 결합한 후, 그 결과를 나눠 예측 오차를 생성함으로써 결정되며 :
Figure pct00031
여기서 "tmp" 는 예측 오차이고, "offsetF" 는 제 1 리스트에 대해 결정되었던 최적화된 오프셋이고, "predF" 는 제 1 리스트로부터의 예측이고, "offsetB" 는 제 2 리스트에 대해 결정되었던 최적화된 오프셋이고, "predB" 는 제 2 리스트로부터의 예측이고, "w0" 은 제 1 가중치이고, "w1" 은 제 2 가중치이고, "denom" 은 정규화 항 (normalization term) 이고,
Figure pct00032
은 각각의 정수 또는 서브-정수 픽셀 포지션에 대한 누적된 예측 오차이며,
Figure pct00033
는 그 오차에 대한 새로운 기여가 누적될 때마다 증분되는 카운터이다. 또한, 상기 의사코드에서의 "if" 루틴이 모든 매크로블록들을 통하여 반복하는 루프의 일부일 수도 있는 한편, 이하 설명된 최종 오프셋 값의 컴퓨테이션이 그 루프 후에 발생할 수도 있다는 것을 알아야 한다. 또한, 카운터
Figure pct00034
는 예를 들어, 루프 전에 0 으로 초기화될 수도 있다. 상기에서 알 수 있는 바와 같이, 가장 직접적인 경우에, 예측 오차 "tmp" 는 다른 항들에 더하여, 제 1 오프셋 예측 합계를 생성하기 위한, 제 1 리스트로부터의 예측 ("predF"), 예를 들어, 순방향 예측 및 제 1 오프셋 ("offsetF"), 예를 들어, 순방향 오프셋을, 제 2 오프셋 예측 합계를 생성하기 위한, 제 2 리스트로부터의 예측 ("predB"), 예를 들어, 역방향 예측 및 제 2 오프셋 ("offsetB"), 예를 들어, 역방향 오프셋과 함께 결합함으로써 결정된다. 제 1 오프셋 예측 합계에는 제 1 가중치, 예를 들어, w0 이 곱해질 수도 있고, 제 2 오프셋 예측 합계에는 제 2 가중치, 예를 들어, w1 이 곱해질 수도 있다. 제 1 가중된 오프셋 예측 합계 및 제 2 가중된 오프셋 예측 합계는 최종 가중된 오프셋 예측 합계를 생성하기 위해 합께 더해진다. 이 최종 가중된 오프셋 예측 합계는 그 후 2, 또는 정규화 항, 예를 들어, denom 에 의해 나눠질 수도 있다. 그러나, 분모 ("denom") 는 2 와 같을 필요가 없으며 대신에 다른 정규화 항일 수도 있다.
예측 오차가 소정의 픽셀 포지션에 대해
Figure pct00035
에서 누적된 후에, 그 픽셀 포지션에 대한 최종 오프셋 값이 그 후 의사코드에서 이하 나타낸 바와 같이 계산된다 :
Figure pct00036
상기에서 알 수 있는 바와 같이, 최종 오프셋 값,
Figure pct00037
Figure pct00038
에서 누적된 예측 오차를 오차에 대한 기여의 수,
Figure pct00039
로 나눠 각각의 서브-정수 픽셀 포지션에 대한 최종 오프셋 값을 생성함으로써 계산된다. 이 프로세스는 본질적으로는 모든 오차가 누적되고, 누적된 오차가 오차에 대한 기여의 수로 나눠진다는 점에서 픽셀 포지션 마다 평균 오차를 컴퓨팅한다. 기여의 수가 모션 벡터들이 향하는 픽셀 포지션들에 의존하기 때문에 모든 픽셀 포지션들에 대해 기여의 수가 동일하지 않을 수도 있다는 것을 알아야 한다. 최종 오프셋 값
Figure pct00040
이 상이한 기준 프레임들과 관련된 각각의 정수 및 서브-정수 위치에 대해 계산된 후에, 이 최종 오프셋 값들의 블록은 디코더로 송신되는 비트스트림에서 인코딩될 수도 있다. 예를 들어, 16 개의 최종 오프셋 값들의 블록은 "P" 프레임들에 대해 인코딩될 수도 있고, 32 개의 최종 오프셋 값들의 블록은 양방향 예측된 프레임들에 대해 인코딩될 수도 있다.
프레임 DC 오프셋은 예측 오차가 모든 서브-픽셀 포지션들로부터의 기여를 결합한다는 사실을 제외하고는 유사한 방식으로 계산된다. 프레임 DC 오프셋은 픽셀이 정수 포지션인지 보간되는지 여부에 관계없이, 프레임 내의 모든 픽셀들에 적용될 수도 있는 오프셋이다. 프레임 DC 오프셋들은 인코딩되는 프레임에 가장 가까운 기준 프레임들이 아닌, 0 보다 큰 인덱스를 갖는 기준 프레임들의 오프셋을 보상하는데 이용된다.
또한, 코딩된 유닛의 비디오 블록들이 다수의 상이한 기준 프레임들을 이용하는 경우, 예를 들어, 양방향 예측의 경우, 상이한 DC 오프셋들은 상이한 기준 프레임들과 관련된 각각의 정수 및 서브-정수 위치에 대해 계산 및 전송될 수도 있다. 일부 경우에, 일부 기준 프레임들은 단일의 프레임 기반 DC 오프셋을 포함할 수도 있는 한편, 다른 기준 프레임들은 여러 위치 특정 DC 오프셋들을 가질 수도 있다. 일부 방식들은 단지 코딩되는 현재 프레임에 시간 거리에 있어서 가장 가까운 기준 프레임에 대하여 위치 특정 DC 오프셋들을 이용할 수도 있으며, 다른 기준 프레임들 모두에 대해서는 단일의 프레임 기반 DC 오프셋을 이용할 수도 있다.
DC 오프셋들을 코딩하기 위하여, 단일의 프레임 기반 DC 오프셋이 이용되는지 여부 또는 여러 위치 특정 DC 오프셋들이 이용되는지 여부를 나타내는데 프레임 당 1 비트가 이용될 수도 있다. DC 오프셋들이 단지 정수 정밀도를 갖는다면, 이들 오프셋들의 값들은 사인 지수 골롬 (exponential-Golomb) 코드를 이용하여 코딩될 수도 있다. DC 오프셋들이 분수 정밀도를 갖는다면, 정수 오프셋의 값들은 사인 지수 골롬 코드를 이용하여 코딩될 수도 있고, 비정수 오프셋들의 값들은 사인 지수 골롬 코드에 의해 정의된 정수 오프셋에 대한 잔류 차이들을 이용하여 코딩될 수도 있다.
예를 들어, 오프셋들의 코딩은 먼저 정수 오프셋을 코딩한 후 각각의 분수 오프셋을 코딩함으로써 행해질 수도 있다. 이 경우에, 정수 오프셋 및 분수 오프셋들은 다르게 코딩된다. 정수 오프셋은 사인 지수 골롬 코드를 이용하여 코딩될 수도 있다. 정수 오프셋의 매그니튜드에 의존하여, 분수 오프셋들이 정수 오프셋과는 다르게 양자화될 수도 있다. 예를 들어, 정수 오프셋이 큰 매그니튜드를 갖는 경우에 분수 오프셋들에는 보다 코어스한 (coarser) 레벨의 양자화가 적용될 수도 있다. 양자화 후에, 분수 오프셋들은 고정된 길이 코드들을 이용하여 코딩될 수도 있다.
비디오 인코더는, 오프셋 값들의 각각에 대해, 소정의 오프셋 값의 정수부에 제 1 수의 비트들을 할당하고 소정의 오프셋 값의 분수부에 제 2 수의 비트들을 할당하는 양자화 유닛 (예를 들어, 비디오 인코더 (50) 의 유닛 (40)) 을 포함할 수도 있으며, 비트들의 제 1 수 및 제 2 수는 정수부의 매그니튜드에 기초하여 결정된다. 어떤 경우에도, 비디오 인코더 (50) 는 제 2 수의 비트들과는 다르게 제 1 수의 비트들을 인코딩할 수도 있다.
상기 언급한 바와 같이, DC 오프셋 값들은 각각의 코딩된 유닛에 대한 비트스트림의 일부로서 코딩될 수도 있다. 따라서, 디코더 측에서, 디코더는 적합한 DC 오프셋 값들을 임의의 생성된 예측 비디오 블록들의 픽셀들에 단순히 적용할 수도 있다. 디코더에 의해 이용되는 DC 오프셋 값은 각각의 예측 비디오 블록과 관련된 특정 정수 또는 서브-정수 픽셀 위치에 대한 신택스 엘리먼트에서 정의될 수도 있다. 예를 들어, 코딩된 유닛의 헤더 내의 신택스 엘리먼트는 그 코딩된 유닛에 대한 복수의 오프셋 값들 각각을 특정하기 위한 플래그들 또는 값들을 포함할 수도 있다. "오프셋" 및 "DC 오프셋" 이란 용어들은 본 개시물에서 상호교환가능하게 사용된다. 오프셋은 전체 오프셋이 각 동일한 각각의 픽셀 위치에 대해 정의되는, 예를 들어, 정수 위치에 대해 하나의 오프셋을 그리고 각각의 가능한 서브-픽셀 위치에 대해 여러 상이한 오프셋들을 정의하는 한에 있어서는 DC 오프셋으로 지칭된다.
도 5 는 본 개시물에 따라 비디오 인코더에 의해 비디오 블록을 인코딩하는 방법 예를 예시한 흐름도이다. 처음에, 비디오 인코더 (22) 의 예측 유닛 (32) 은 2 개의 블록들의 예측 값들 : 기준 데이터의 제 1 리스트, 예를 들어, 리스트 0 내의 제 1 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 1 블록의 예측 값들, 및 기준 데이터의 제 2 리스트, 예를 들어, 리스트 1 내의 제 2 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 2 블록의 예측 값들을 보간한다 (100). 일부 예에서, 제 1 값 및 제 2 값을 보간하는 것은 고정된 보간 필터들에 의해 수행된다. 다른 예에서, 제 1 오프셋 값들 및 제 2 오프셋 값들은 정수 픽셀 위치들에 대해 하나의 오프셋 값을 포함하고 상이한 서브-정수 픽셀 위치들에 대해 여러 오프셋 값들을 포함한다. 일부 예에서, 제 1 오프셋 값들 및 제 2 오프셋 값들은 15 개의 상이한 서브-정수 픽셀 위치들에 대해 15 개의 상이한 오프셋 값들을 포함한다.
제 1 블록의 예측 값들 및 제 2 블록의 예측 값들이 보간된 후에, 모션 보상 유닛 (37) 은 서브-정수 픽셀 포지션들에 대해, 제 1 블록의 예측 값들 및 현재 비디오 블록에 기초하여 제 1 오프셋 값을 계산하고, 제 1 오프셋 값 및 제 2 블록의 예측 값들에 기초하여 제 2 오프셋 값을 계산한다 (102).
일단 제 1 오프셋 값 및 제 2 오프셋 값이 계산되었다면, 예측 유닛 (32) 은 제 1 블록의 예측 값들, 제 2 블록의 예측 값들, 제 1 오프셋 값들 및 제 2 오프셋 값들에 기초하여 최종 블록의 오프셋 값들을 결정한다 (104). 일부 예에서, 제 1 오프셋 값 및 제 2 오프셋 값에 기초하여 최종 블록의 오프셋 값들을 결정하는 것은 제 1 오프셋 값과 제 2 오프셋 값 중 적어도 하나 또는 양자에 가중치를 적용하는 것을 포함한다.
다른 예에서, 최종 블록의 오프셋 값들을 결정하는 것은 제 1 블록의 예측 값들, 제 2 블록의 예측 값들, 제 1 오프셋 값들 및 제 2 오프셋 값들을 함께 더하여 오프셋 예측 합계를 생성하는 것, 그 오프셋 예측 합계를 2 로 나눠 예측 오차를 생성하는 것, 각각의 서브-정수 픽셀 포지션에 대해 예측 오차를 누적하는 것, 및 각각의 서브-정수 픽셀 포지션에 대한 누적된 예측 오차를 예측 오차에 대한 기여의 수로 나눠 각각의 서브-정수 픽셀 포지션에 대한 최종 오프셋 값을 생성하는 것을 포함한다.
일부 예에서, 최종 블록의 오프셋 값들을 결정하는 것은 제 1 블록의 예측 값들과 제 1 오프셋 값들을 더하여 제 1 오프셋 예측 합계를 생성하는 것, 제 2 블록의 예측 값들과 제 2 오프셋 값들을 더하여 제 2 오프셋 예측 합계를 생성하는 것, 제 1 오프셋 예측 합계를 제 1 가중치와 곱하여 제 1 가중된 오프셋 예측 합계를 생성하고 제 2 오프셋 예측 합계를 제 2 가중치와 곱하여 제 2 가중된 오프셋 예측 합계를 생성하는 것, 제 1 가중된 오프셋 예측 합계와 제 2 가중된 오프셋 예측 합계를 더하여 최종 가중된 오프셋 예측 합계를 생성하는 것, 및 최종 가중된 오프셋 예측 합계를 정규화 항으로 나눠 예측 오차를 생성하고, 각각의 서브-정수 픽셀 포지션에 대해 예측 오차를 누적하며, 각각의 서브-정수 픽셀 포지션에 대한 누적된 예측 오차를 예측 오차에 대한 기여의 수로 나눠 각각의 서브-정수 픽셀 포지션에 대한 최종 오프셋 값을 생성하는 것을 포함한다.
최종 블록의 오프셋 값들을 결정한 후에, 비디오 인코더 (22) 는 최종 블록의 오프셋 값들에 기초하여 현재 비디오 블록을 인코딩한다 (106). 일부 예에서, 비디오 인코더 (22) 는 제 1 오프셋 값들 및 제 2 오프셋 값들을 코딩된 현재 비디오 블록을 포함할 수도 있는 코딩된 비트스트림의 일부로서 인코딩한다. 일 예에서, 제 1 오프셋 값들 및 제 2 오프셋 값들을 인코딩하는 것은 각 제 1 오프셋 값들 및 제 2 오프셋 값들, 즉 소정의 정수 또는 서브-정수 픽셀 위치에 대한 최종 오프셋 값들에 대해, 제 1 수의 비트들을 최종 블록의 오프셋 값들 중 일 오프셋 값의 정수부에 할당하고 제 2 수의 비트들을 최종 블록의 오프셋 값들 중 일 오프셋 값의 분수부에 할당하는 것을 포함하며, 비트들의 제 1 수 및 제 2 수는 정수부의 매그니튜드에 기초하여 결정된다. 다른 예에서, 이 방법은 코딩된 비트스트림을 소스 디바이스 (12) 로부터 목적지 디바이스 (16) 로 송신하는 것을 더 포함한다.
일부 예에서, 최종 블록의 오프셋 값들은 정수 픽셀 위치들에 대해 하나의 오프셋 값을 포함할 수도 있고, 상이한 서브-정수 픽셀 위치들에 대해 여러 오프셋 값들을 포함할 수도 있다. 다른 예에서, 최종 블록의 오프셋 값들은 15 개의 상이한 서브-정수 픽셀 위치들에 대해 15 개의 상이한 오프셋 값들을 포함할 수도 있다.
본 개시물의 기술들은 또한 B-슬라이스에 대해 바람직한 레이트-왜곡을 달성하기 위하여 필터들 및 오프셋들의 구성 (configuration) 을 결정하는 것과 관련된다. 바로 아래에 제시된 의사코드는 B-슬라이스에 대해 최적의 레이트-왜곡 특성을 획득하는 결합을 발견하기 위하여 비디오 인코더 (22) 에 의해 이용되는 필터들 및 오프셋들의 구성을 약술한다 :
a. 패스 1 : 시퀀스 필터들, 제로 서브-픽셀 및 제로 프레임 오프셋들을 이용함으로써 프레임을 인코딩;
b. idx=0 을 가진 기준 프레임이 현재 프레임으로부터 동일한 거리를 갖는다면;
POC 패스 : POC 가중된 기준 프레임들에 관한 시퀀스 필터들, 제로 서브-픽셀 및 제로 프레임 오프셋들을 이용함으로써 프레임을 인코딩;
패스 1 과 POC 패스의 결과들을 비교;
POC 패스가 더 양호하다면,
지금부터 POC 가중된 기준 프레임들을 이용;
Best = POC 패스의 결과;
그렇지 않다면,
Best = 패스 1 의 결과;
그렇지 않다면,
Best = 패스 1 의 결과;
c. 현재 프레임에 관한 프레임 필터들, 서브-픽셀 및 프레임 오프셋들을 컴퓨팅;
d. 패스 2 : 프레임 필터들, 서브-픽셀 및 프레임 오프셋들을 이용함으로써 프레임을 인코딩;
e. 패스 2 인코딩이 Best 보다 더 양호하다면,
Best = 패스 2 인코딩의 결과;
패스 3 : 양자화 단계를 1 만큼 증가시키고, 프레임 필터들, 서브-픽셀 및 프레임 오프셋들을 이용함으로써 프레임을 인코딩;
그렇지 않다면,
패스 3 : 양자화 단계를 1 만큼 증가시키고, 시퀀스 필터들, 제로 서브-픽셀 및 제로 프레임 오프셋들을 이용함으로써 프레임을 인코딩;
f. 패스 3 인코딩이 Best 보다 더 양호하다면,
비트스트림에 패스 3 인코딩을 부가;
그렇지 않다면,
비트스트림에 Best 의 인코딩을 부가;
g. 시퀀스 필터들을 컴퓨팅 (하여 다음 프레임을 인코딩).
도 6a 내지 도 6c 는 바로 위에 제시된 의사코드에 기초하여, B-슬라이스에 대해 바람직한 레이트-왜곡을 달성하기 위하여 필터들 및 오프셋들의 구성을 결정하는 방법 예를 예시한 흐름도이다. 의사코드 및 도 6a 내지 도 6c 는 함께 설명될 것이다. 상기 제시된 의사코드에서의 단계들이 명료성을 위해 열거된다는 것을 알아야 한다. 상이한 단계들은 또한 부가적인 단계들로 나눠질 수도 있으며, 다수의 단계들이 결합될 수도 있다. 상기 의사코드의 단계 a 에서 알 수 있는 바와 같이, 프레임은 시퀀스 필터들을 이용하지만 오프셋들을 이용하지 않고 인코딩된다 (200). 인코딩되는 프레임에 대하여 최적화되기 위하여 컴퓨팅되는 프레임 필터들과 달리, 시퀀스 필터들은 과거 프레임들의 서브세트를 이용함으로써 컴퓨팅된다. 프레임 필터들은 모션 벡터들이 그들의 컴퓨테이션을 위해 필요하기 때문에 단지 하나의 코딩 패스 후에 컴퓨팅될 수 있다. 그러나, 시퀀스 필터들은 그들이 과거 프레임들을 이용하여 컴퓨팅되기 때문에 제 1 코딩 패스에 적용될 수 있다. 시퀀스 필터들은 과거 프레임들, 즉, 이미 인코딩된 프레임들에 대해 컴퓨팅된다. 프레임 필터에 대해 설명된 것과 유사한 방식으로, 제곱 오차는 각각의 서브-픽셀 포지션에 대해 독립적으로 어레이 변수에 누적된다. 그러나, 가장 최근에 인코딩된 프레임의 기여를 부가하기 전에, 어레이 변수의 컨텐트는 스케일 다운될 수도 있다. 이전 프레임들의 기여를 스케일 다운하는 것은 가장 최근의 기여들을 보다 무겁게 가중함으로써 인코더가 과거를 "잊어버리게 (forget)" 한다. 예를 들어, 어레이 변수의 컨텐트는 다른 스케일링 팩터들이 시스템의 "메모리" 를 증가 또는 감소시키는데 이용될 수도 있지만 2 의 스케일링 팩터로 나눠질 수도 있다. 단계 b 에서, id("idx")=0 을 가진 모든 기준 프레임들이 현재 프레임으로부터 동일한 거리를 갖는다면 (202 에서 "예" 결정), 즉 동일한 수의 프레임들이 현재 프레임으로부터 기준 프레임을 분리한다면, 비디오 인코더 (22) 는 픽처 오더 컨텐트 (Picture Order Content; POC) 패스를 수행한다. POC 패스로부터, 순방향 및 역방향 기준 프레임들이 인코딩되는 프레임으로부터 상이한 거리를 갖는지 여부를 추론하는 것이 가능하다. 그 후, 그 거리에 반비례하는 방식으로 기여를 가중시키는 것이 가능하다. 가중된 예측에서, 이들 가중치는 "내재적 (implicit)" 으로 지칭된다. 예를 들어, 프레임들의 시퀀스 P1 B1 B2 P2 B3 B4 P3 을 코딩할 때, 양방향 예측 프레임 B2 는 기준 프레임 P1 보다 기준 프레임 P2 에 더 가까워, P2 의 기여는 2/3 가중될 수 있고 P1 의 기여는 1/3 가중될 수 있다. 현재 프레임은 POC 가중된 기준 프레임들에 관한, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 POC 패스에서 인코딩된다 (204).
단계 b 를 계속하여, 패스 1 및 POC 패스의 레이트 왜곡 비용 값 결과들이 그 후 비교되고, POC 패스가 더 낮은 레이트-왜곡 값을 제공한다면 (206 에서 "예" 결정), POC 가중된 기준 프레임들이 이용되고 (208), 변수 "Best" 는 POC 패스의 결과로 설정된다 (210). 그러나, 패스 1 의 결과들이 POC 패스의 결과들보다 더 낮은 레이트 왜곡 비용 값들을 정의한다면 (206 에서 "아니오" 결정), 변수 "Best" 는 패스 1 의 결과로 설정된다 (212). 그러나, 단계 b 의 처음에, id("idx")=0 을 가진 기준 프레임들이 현재 프레임으로부터 동일한 거리를 갖지 않는다면 (202 에서 "아니오" 결정), 변수 "Best" 는 패스 1 의 결과로 설정된다 (212).
이제 단계 c 를 참조하면, 비디오 인코더 (22) 는 현재 프레임에 대한 프레임 필터들, 서브-픽셀 및 프레임 오프셋들을 계산한다 (214). 단계 d 에서, 제 2 패스, 또는 패스 2 가 수행되며, 여기서 비디오 인코더 (22) 는 단계 c 에서 계산된 프레임 필터들 및 서브-픽셀 및 프레임 오프셋들을 이용하여 현재 프레임을 인코딩한다.
단계 e 에서, 패스 2 로부터의 인코딩이 현재 변수 "Best" 에서의 값보다 더 낮은 레이트-왜곡 값을 초래한다면 (218 에서 "예" 결정), 변수 "Best" 는 패스 2 인코딩의 결과로 설정된다 (220). 패스 3 이 그 후 양자화 단계가 1 만큼 증가되고, 비디오 인코더 (22) 가 프레임 필터들, 서브-픽셀 및 프레임 오프셋들을 이용하여 프레임을 인코딩하도록 수행된다 (222). 그러나, 패스 2 로부터의 인코딩이 현재 변수 "Best" 에서의 값보다 더 낮은 레이트-왜곡 값을 정의하지 않는다면 (218 에서 "아니오" 결정), 패스 3 이 양자화 단계가 1 만큼 증가되고, 비디오 인코더 (22) 가 서브-픽셀 및 프레임 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 프레임을 인코딩하도록 수행된다 (224).
패스 3 이 수행된 후에, 단계 f 에서, 패스 3 인코딩의 결과가 변수 "Best" 에 저장된 결과와 비교된다. 패스 3 에서 이용된 인코딩이 "Best" 에 저장된 값보다 더 낮은 레이트-왜곡 값을 초래했다면 (226 에서 "예" 결정), 패스 3 에서 이용된 필터 및 오프셋 구성들이 비트스트림에 부가된다 (228). 패스 3 에서 이용된 인코딩이 "Best" 에 저장된 값보다 더 낮은 레이트-왜곡 값을 초래하지 않았다면 (226 에서 "아니오" 결정), 변수 "Best" 에 저장된 결과를 생성하는데 이용되었던 필터 및 오프셋 구성들이 비트스트림에 부가된다 (230). 마지막으로, 단계 g 에서, 시퀀스 필터들이 다음 프레임을 인코딩하기 위하여 컴퓨팅된다 (232). 따라서, 상기 설명된 방식으로, 비디오 인코더 (22) 는 B-슬라이스에 대해 최적의 레이트-왜곡을 초래한 필터 및 오프셋 결합을 선택할 수 있다.
유사하게, 본 개시물의 기술들은 또한 P-슬라이스에 대해 바람직한 레이트-왜곡을 달성하기 위하여 필터들 및 오프셋들의 구성을 결정하는 것과 관련된다. 바로 아래에 제시된 의사코드는 P-슬라이스에 대해 최적의 레이트-왜곡 특성들을 획득하는 결합을 발견하기 위하여 비디오 인코더 (22) 에 의해 이용되는 필터들 및 오프셋들의 구성을 약술한다 :
a. 제 1 패스에 대한 서브-픽셀 및 프레임 오프셋들을 컴퓨팅;
b. 패스 1 : 제 1 패스에 대한 시퀀스 필터들, 서브-픽셀 및 프레임 오프셋들을 이용함으로써 프레임을 인코딩;
c. 현재 프레임에 관한 프레임 필터들, 서브-픽셀 및 프레임 오프셋들을 컴퓨팅;
d. 패스 2 : 프레임 필터들, 서브-픽셀 및 프레임 오프셋들을 이용함으로써 프레임을 인코딩;
e. 패스 1 과 패스 2 의 결과들을 비교;
f. 비트스트림에 Best 의 것의 인코딩을 부가;
g. 시퀀스 필터들을 컴퓨팅 (하여 다음 프레임을 인코딩).
상기 제시된 의사코드에서의 단계들이 명료성을 위하여 열거된다는 것을 알아야 한다. 상이한 단계들이 또한 부가적인 단계들로 나눠질 수도 있으며, 다수의 단계들이 결합될 수도 있다. 상기 의사코드의 단계 a 에서 알 수 있는 바와 같이, 서브-픽셀 및 프레임 오프셋들이 제 1 패스에 대해 컴퓨팅된다. 단계 b 에서, 제 1 패스에서, 프레임이 시퀀스 필터들, 서브-픽셀 및 프레임 오프셋들을 이용하여 인코딩된다. 그 후, 프레임 필터들 및 서브-픽셀 및 프레임 오프셋들이 단계 c 에서 현재 프레임에 관해 컴퓨팅된다.
단계 d 에서, 제 2 패스, 또는 패스 2 가 수행되며, 여기서 비디오 인코더 (22) 는 프레임 필터들 및 서브-픽셀 및 프레임 오프셋들을 이용하여 프레임을 인코딩한다. 패스 1 과 패스 2 의 결과들이 단계 c 에서 비교된다. 단계 f 에서, 패스 1 에서 이용된 인코딩이 더 낮은 레이트-왜곡 값들을 초래했다면, 패스 1 에서 이용된 필터 및 오프셋 구성들이 비트스트림에 부가된다. 그러나, 패스 2 에서 이용된 인코딩이 더 낮은 레이트-왜곡 값들을 초래했다면, 패스 2 에서 이용된 필터 및 오프셋 구성들이 비트스트림에 부가된다. 마지막으로, 단계 g 에서, 시퀀스 필터들이 다음 프레임을 인코딩하기 위하여 컴퓨팅된다. 따라서, 상기 설명된 방식으로, 비디오 인코더 (22) 는 P-슬라이스에 대해 최적의 레이트-왜곡을 초래한 필터 및 오프셋 결합을 선택할 수 있다.
본 개시물의 기술들은 무선 핸드셋, 집적 회로 (IC) 또는 일 세트의 IC 들 (즉, 칩 세트) 을 포함하는, 광범위한 디바이스들 또는 장치들에서 실현될 수도 있다. 임의의 컴포넌트들, 모듈들 또는 유닛들이 기능적 양태들을 강조하기 위해 설명 및 제공되었으며 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다.
본 개시물에 설명된 기술들은 적어도 부분적으로는 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합에서 구현될 수도 있다. 예를 들어, 상기 설명된 기술들의 다양한 양태들은 하나 이상의 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그램가능한 게이트 어레이 (FPGA), 또는 임의의 다른 등가의 통합된 또는 별개의 로직 회로는 물론 이러한 컴포넌트들의 임의의 결합을 포함하는, 하나 이상의 프로세서들 내에 구현될 수도 있다. "프로세서" 또는 "프로세싱 회로" 란 용어는 일반적으로는, 단독 또는 다른 로직 회로와 결합된 전술한 로직 회로, 또는 임의의 다른 등가의 회로 중 임의의 것을 나타낼 수도 있다.
이러한 하드웨어, 소프트웨어 및 펌웨어는 본 개시물에 설명된 다양한 동작들 및 기능들을 지원하기 위해 동일한 디바이스 내에 또는 별개의 디바이스들 내에 구현될 수도 있다. 또한, 상기 설명된 유닛들, 모듈들 또는 컴포넌트들 중 임의의 것은 함께 또는 별개이지만 상호운용가능한 로직 디바이스들로서 별개로 구현될 수도 있다. 모듈들 또는 유닛들과 같은 상이한 피쳐들의 도시가 상이한 기능적 양태들을 강조하는 것으로 의도되며, 반드시 이러한 모듈들 또는 유닛들이 별개의 하드웨어 또는 소프트웨어 컴포넌트들에 의해 실현되어야 한다는 것을 의미하는 것은 아니다. 오히려, 하나 이상의 모듈들 또는 유닛들과 관련된 기능성은 별개의 하드웨어 또는 소프트웨어 컴포넌트들에 의해 수행되거나 또는 공통 또는 별개의 하드웨어 또는 소프트웨어 컴포넌트들 내에 통합될 수도 있다.
소프트웨어에 구현한 경우, 그 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장 또는 송신될 수도 있다. 컴퓨터 판독가능 매체는 일 장소로부터 타 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체와 컴퓨터 저장 매체 양자를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수도 있다. 제한이 아닌 일 예로, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 디바이스, 자기 디스크 저장 디바이스 또는 다른 자기 저장 디바이스, 또는 명령들 또는 데이터 구조들의 형태의 원하는 프로그램 코드를 운반 또는 저장하는데 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 문맥이 적절히 컴퓨터 판독가능 매체라 불린다. 예를 들어, 소프트웨어가 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 회선 (DSL), 또는 적외선, 무선 및 마이크로파와 같은 무선 테크놀로지들을 이용하여 웹사이트, 서버 또는 다른 원격 소스로부터 송신된다면, 매체의 정의에는 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 무선 및 마이크로파와 같은 무선 테크놀로지들이 포함된다. 디스크 (disk) 및 디스크 (disc) 는 본원에 사용한 바와 같이, 콤팩트 디스크 (compact disc; CD), 레이저 디스크 (laser disc), 광학 디스크 (optical disc), 디지털 다기능 디스크 (digital versatile disc; DVD), 플로피 디스크 (floppy disk) 및 블루-레이 디스크 (blu-ray disc) 를 포함하며, 여기서 디스크 (disk) 는 보통 데이터를 자기적으로 재싱시키는 한편, 디스크 (disc) 는 레이저를 이용하여 데이터를 광학적으로 재생시킨다. 상기의 조합이 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
다양한 예들이 설명되었다. 이들 예들 및 다른 예들은 다음의 특허청구의 범위 내에 있다.

Claims (45)

  1. 현재 비디오 블록을 인코딩하는 비디오 인코딩 방법으로서,
    인코더를 통해, 기준 데이터의 제 1 리스트 내의 제 1 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 1 블록의 예측 값들을 보간하고, 기준 데이터의 제 2 리스트 내의 제 2 기준 비디오 유닛에 기초하여 상기 서브-정수 픽셀 포지션과 관련된 제 2 블록의 예측 값들을 보간하는 단계;
    인코더를 통해, 서브-정수 픽셀 포지션들에 대해, 상기 제 1 블록의 예측 값들 및 상기 현재 비디오 블록에 기초하여 제 1 오프셋 값을 계산하고, 상기 제 1 오프셋 값 및 상기 제 2 블록의 예측 값들에 기초하여 제 2 오프셋 값을 계산하는 단계;
    인코더를 통해, 상기 제 1 블록의 예측 값들, 상기 제 2 블록의 예측 값들, 상기 제 1 오프셋 값들 및 상기 제 2 오프셋 값들에 기초하여 최종 블록의 오프셋 값들을 결정하는 단계; 및
    인코더를 통해, 상기 최종 블록의 오프셋 값들에 기초하여 상기 현재 비디오 블록을 인코딩하는 단계를 포함하는, 비디오 인코딩 방법.
  2. 제 1 항에 있어서,
    상기 제 1 블록의 예측 값들 및 상기 제 2 블록의 예측 값들을 보간하는 단계는 고정된 보간 필터들에 의해 수행되는, 비디오 인코딩 방법.
  3. 제 1 항에 있어서,
    상기 최종 블록의 오프셋 값들을 결정하는 단계는, 상기 제 1 오프셋 값과 상기 제 2 오프셋 값 중 적어도 하나의 값에 가중치를 적용하는 단계를 포함하는, 비디오 인코딩 방법.
  4. 제 1 항에 있어서,
    상기 최종 블록의 오프셋 값들을 결정하는 단계는,
    상기 제 1 블록의 예측 값들, 상기 제 2 블록의 예측 값들, 상기 제 1 오프셋 값들 및 상기 제 2 오프셋 값들을 함께 더하여 오프셋 예측 합계를 생성하는 단계;
    상기 오프셋 예측 합계를 2 로 나눠 예측 오차를 생성하는 단계;
    상기 예측 오차를 각각의 서브-정수 픽셀 포지션에 대해 누적하는 단계; 및
    각각의 서브-정수 픽셀 포지션에 대한 상기 누적된 예측 오차를 상기 예측 오차에 대한 기여의 수로 나눠 각각의 서브-정수 픽셀 포지션에 대한 최종 오프셋 값을 생성하는 단계를 포함하는, 비디오 인코딩 방법.
  5. 제 1 항에 있어서,
    상기 최종 블록의 오프셋 값들을 결정하는 단계는,
    상기 제 1 블록의 예측 값들과 상기 제 1 오프셋 값들을 더하여 제 1 오프셋 예측 합계를 생성하는 단계;
    상기 제 2 블록의 예측 값들과 상기 제 2 오프셋 값들을 더하여 제 2 오프셋 예측 합계를 생성하는 단계;
    상기 제 1 오프셋 예측 합계를 제 1 가중치와 곱하여 제 1 가중된 오프셋 예측 합계를 생성하고, 상기 제 2 오프셋 예측 합계를 제 2 가중치와 곱하여 제 2 가중된 오프셋 예측 합계를 생성하는 단계;
    상기 제 1 가중된 오프셋 예측 합계와 상기 제 2 가중된 오프셋 예측 합계를 더하여 최종 가중된 오프셋 예측 합계를 생성하는 단계;
    상기 최종 가중된 오프셋 예측 합계를 정규화 항 (normalization term) 으로 나눠 예측 오차를 생성하는 단계;
    상기 예측 오차를 각각의 서브-정수 픽셀 포지션에 대해 누적하는 단계; 및
    각각의 서브-정수 픽셀 포지션에 대한 상기 누적된 예측 오차를 상기 예측 오차에 대한 기여의 수로 나눠 각각의 서브-정수 픽셀 포지션에 대한 최종 오프셋 값을 생성하는 단계를 포함하는, 비디오 인코딩 방법.
  6. 제 1 항에 있어서,
    상기 최종 블록의 오프셋 값들을 코딩된 현재 비디오 블록을 포함하는 코딩된 비트스트림의 일부로서 인코딩하는 단계를 더 포함하는, 비디오 인코딩 방법.
  7. 제 6 항에 있어서,
    상기 코딩된 비트스트림을 소스 디바이스로부터 목적지 디바이스로 송신하는 단계를 더 포함하는, 비디오 인코딩 방법.
  8. 제 6 항에 있어서,
    상기 최종 블록의 오프셋 값들을 인코딩하는 단계는, 상기 최종 블록의 오프셋 값들 중 일 오프셋 값의 정수부에 제 1 수의 비트들을 할당하고 상기 최종 블록의 오프셋 값들 중 상기 오프셋 값의 분수부에 제 2 수의 비트들을 할당하는 단계를 포함하며,
    비트들의 상기 제 1 수 및 상기 제 2 수는 상기 정수부의 매그니튜드에 기초하여 결정되는, 비디오 인코딩 방법.
  9. 제 6 항에 있어서,
    상기 최종 블록의 오프셋 값들은, 정수 픽셀 위치들에 대해 하나의 오프셋 값을 포함하고 상이한 서브-정수 픽셀 위치들에 대해 여러 오프셋 값들을 포함하는, 비디오 인코딩 방법.
  10. 제 9 항에 있어서,
    상기 최종 블록의 오프셋 값들은, 15 개의 상이한 서브-정수 픽셀 위치들에 대해 15 개의 상이한 오프셋 값들을 포함하는, 비디오 인코딩 방법.
  11. 비디오 인코더를 포함하는, 비디오 데이터를 인코딩하는 장치로서,
    상기 비디오 인코더는,
    기준 데이터의 제 1 리스트 내의 제 1 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 1 블록의 예측 값들을 보간하고, 기준 데이터의 제 2 리스트 내의 제 2 기준 비디오 유닛에 기초하여 상기 서브-정수 픽셀 포지션과 관련된 제 2 블록의 예측 값들을 보간하고;
    서브-정수 픽셀 포지션들에 대해, 상기 제 1 블록의 예측 값들 및 현재 비디오 블록에 기초하여 제 1 오프셋 값을 계산하고, 상기 제 1 오프셋 값 및 상기 제 2 블록의 예측 값들에 기초하여 제 2 오프셋 값을 계산하고;
    상기 제 1 블록의 예측 값들, 상기 제 2 블록의 예측 값들, 상기 제 1 오프셋 값들 및 상기 제 2 오프셋 값들에 기초하여 최종 블록의 오프셋 값들을 결정하며;
    상기 최종 블록의 오프셋 값들에 기초하여 상기 현재 비디오 블록을 인코딩하는, 비디오 데이터를 인코딩하는 장치.
  12. 제 11 항에 있어서,
    상기 비디오 인코더는, 상기 제 1 블록의 예측 값들 및 상기 제 2 블록의 예측 값들을 보간하는 적어도 하나의 고정된 보간 필터를 포함하는, 비디오 데이터를 인코딩하는 장치.
  13. 제 11 항에 있어서,
    상기 최종 블록의 오프셋 값들을 결정하기 위하여, 상기 비디오 인코더는, 상기 제 1 오프셋 값과 상기 제 2 오프셋 값 중 적어도 하나의 값에 가중치를 적용하는, 비디오 데이터를 인코딩하는 장치.
  14. 제 11 항에 있어서,
    상기 최종 블록의 오프셋 값들을 결정하기 위하여, 상기 비디오 인코더는, 상기 제 1 블록의 예측 값들, 상기 제 2 블록의 예측 값들, 상기 제 1 오프셋 값들 및 상기 제 2 오프셋 값들을 함께 더하여 오프셋 예측 합계를 생성하고, 상기 오프셋 예측 합계를 2 로 나눠 예측 오차를 생성하고, 상기 예측 오차를 각각의 서브-정수 픽셀 포지션에 대해 누적하며, 각각의 서브-정수 픽셀 포지션에 대한 상기 누적된 예측 오차를 상기 예측 오차에 대한 기여의 수로 나눠 각각의 서브-정수 픽셀 포지션에 대한 최종 오프셋 값을 생성하는, 비디오 데이터를 인코딩하는 장치.
  15. 제 11 항에 있어서,
    상기 최종 블록의 오프셋 값들을 결정하기 위하여, 상기 비디오 인코더는,
    상기 제 1 블록의 예측 값들과 상기 제 1 오프셋 값들을 더하여 제 1 오프셋 예측 합계를 생성하고;
    상기 제 2 블록의 예측 값들과 상기 제 2 오프셋 값들을 더하여 제 2 오프셋 예측 합계를 생성하고;
    상기 제 1 오프셋 예측 합계를 제 1 가중치와 곱하여 제 1 가중된 오프셋 예측 합계를 생성하고, 상기 제 2 오프셋 예측 합계를 제 2 가중치와 곱하여 제 2 가중된 오프셋 예측 합계를 생성하고;
    상기 제 1 가중된 오프셋 예측 합계와 상기 제 2 가중된 오프셋 예측 합계를 더하여 최종 가중된 오프셋 예측 합계를 생성하고;
    상기 최종 가중된 오프셋 예측 합계를 정규화 항 (normalization term) 으로 나눠 예측 오차를 생성하고;
    상기 예측 오차를 각각의 서브-정수 픽셀 포지션에 대해 누적하며;
    각각의 서브-정수 픽셀 포지션에 대한 상기 누적된 예측 오차를 상기 예측 오차에 대한 기여의 수로 나눠 각각의 서브-정수 픽셀 포지션에 대한 최종 오프셋 값을 생성하는, 비디오 데이터를 인코딩하는 장치.
  16. 제 11 항에 있어서,
    상기 비디오 인코더는, 상기 최종 블록의 오프셋 값들을 코딩된 현재 비디오 블록을 포함하는 코딩된 비트스트림의 일부로서 인코딩하는, 비디오 데이터를 인코딩하는 장치.
  17. 제 16 항에 있어서,
    상기 비디오 인코더는, 상기 최종 블록의 오프셋 값들 중 일 오프셋 값의 정수부에 제 1 수의 비트들을 할당하고, 상기 최종 블록의 오프셋 값들 중 상기 오프셋 값의 분수부에 제 2 수의 비트들을 할당하며,
    비트들의 상기 제 1 수 및 상기 제 2 수는 상기 정수부의 매그니튜드에 기초하여 결정되는, 비디오 데이터를 인코딩하는 장치.
  18. 제 16 항에 있어서,
    상기 최종 블록의 오프셋 값들은, 정수 픽셀 위치들에 대해 하나의 오프셋 값을 포함하고 상이한 서브-정수 픽셀 위치들에 대해 여러 오프셋 값들을 포함하는, 비디오 데이터를 인코딩하는 장치.
  19. 제 18 항에 있어서,
    상기 최종 블록의 오프셋 값들은, 15 개의 상이한 서브-정수 픽셀 위치들에 대해 15 개의 상이한 오프셋 값들을 포함하는, 비디오 데이터를 인코딩하는 장치.
  20. 제 11 항에 있어서,
    상기 비디오 인코더는 무선 통신 디바이스의 일부를 형성하는, 비디오 데이터를 인코딩하는 장치.
  21. 제 11 항에 있어서,
    상기 비디오 인코더는 집적 회로 디바이스를 포함하는, 비디오 데이터를 인코딩하는 장치.
  22. 명령들이 인코딩되어 있는 컴퓨터 판독가능 매체로서,
    상기 명령들은, 실행 시에, 비디오 인코더 내의 프로세서로 하여금,
    기준 데이터의 제 1 리스트 내의 제 1 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 1 블록의 예측 값들을 보간하게 하고, 기준 데이터의 제 2 리스트 내의 제 2 기준 비디오 유닛에 기초하여 상기 서브-정수 픽셀 포지션과 관련된 제 2 블록의 예측 값들을 보간하게 하고;
    서브-정수 픽셀 포지션들에 대해, 상기 제 1 블록의 예측 값들 및 현재 비디오 블록에 기초하여 제 1 오프셋 값을 계산하게 하고, 상기 제 1 오프셋 값 및 상기 제 2 블록의 예측 값들에 기초하여 제 2 오프셋 값을 계산하게 하고;
    상기 제 1 블록의 예측 값들, 상기 제 2 블록의 예측 값들, 상기 제 1 오프셋 값들 및 상기 제 2 오프셋 값들에 기초하여 최종 블록의 오프셋 값들을 결정하게 하며;
    상기 최종 블록의 오프셋 값들에 기초하여 상기 현재 비디오 블록을 인코딩하게 하는, 컴퓨터 판독가능 매체.
  23. 제 22 항에 있어서,
    상기 프로세서로 하여금, 상기 제 1 블록의 예측 값들 및 상기 제 2 블록의 예측 값들을 보간하게 하는 명령들은, 상기 프로세서로 하여금, 고정된 보간 필터들의 세트로부터 보간 필터들의 세트를 선택하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  24. 제 22 항에 있어서,
    상기 프로세서로 하여금, 상기 최종 블록의 오프셋 값들을 결정하게 하는 명령들은, 상기 프로세서로 하여금, 상기 제 1 오프셋 값과 상기 제 2 오프셋 값 중 적어도 하나의 값에 가중치를 적용하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  25. 제 22 항에 있어서,
    상기 프로세서로 하여금, 상기 최종 블록의 오프셋 값들을 결정하게 하는 명령들은, 상기 프로세서로 하여금,
    상기 제 1 블록의 예측 값들, 상기 제 2 블록의 예측 값들, 상기 제 1 오프셋 값들 및 상기 제 2 오프셋 값들을 함께 더하여 오프셋 예측 합계를 생성하게 하고;
    상기 오프셋 예측 합계를 2 로 나눠 예측 오차를 생성하게 하고;
    상기 예측 오차를 각각의 서브-정수 픽셀 포지션에 대해 누적하게 하며;
    각각의 서브-정수 픽셀 포지션에 대한 상기 누적된 예측 오차를 상기 예측 오차에 대한 기여의 수로 나눠 각각의 서브-정수 픽셀 포지션에 대한 최종 오프셋 값을 생성하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  26. 제 22 항에 있어서,
    상기 프로세서로 하여금, 상기 최종 블록의 오프셋 값들을 결정하게 하는 명령들은, 상기 프로세서로 하여금,
    상기 제 1 블록의 예측 값들과 상기 제 1 오프셋 값들을 더하여 제 1 오프셋 예측 합계를 생성하게 하고;
    상기 제 2 블록의 예측 값들과 상기 제 2 오프셋 값들을 더하여 제 2 오프셋 예측 합계를 생성하게 하고;
    상기 제 1 오프셋 예측 합계를 제 1 가중치와 곱하여 제 1 가중된 오프셋 예측 합계를 생성하게 하고, 상기 제 2 오프셋 예측 합계를 제 2 가중치와 곱하여 제 2 가중된 오프셋 예측 합계를 생성하게 하고;
    상기 제 1 가중된 오프셋 예측 합계와 상기 제 2 가중된 오프셋 예측 합계를 더하여 최종 가중된 오프셋 예측 합계를 생성하게 하고;
    상기 최종 가중된 오프셋 예측 합계를 정규화 항 (normalization term) 으로 나눠 예측 오차를 생성하게 하고;
    상기 예측 오차를 각각의 서브-정수 픽셀 포지션에 대해 누적하게 하며;
    각각의 서브-정수 픽셀 포지션에 대한 상기 누적된 예측 오차를 상기 예측 오차에 대한 기여의 수로 나눠 각각의 서브-정수 픽셀 포지션에 대한 최종 오프셋 값을 생성하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  27. 제 22 항에 있어서,
    상기 프로세서로 하여금, 상기 최종 블록의 오프셋 값들을 결정하게 하는 명령들은, 상기 프로세서로 하여금, 상기 최종 블록의 오프셋 값들을 코딩된 현재 비디오 블록을 포함하는 코딩된 비트스트림의 일부로서 인코딩하게 하는 명령들을 포함하는, 컴퓨터 판독가능 매체.
  28. 제 27 항에 있어서,
    상기 코딩된 비트스트림의 소스 디바이스로부터 목적지 디바이스로의 송신을 야기하는 명령들을 더 포함하는, 컴퓨터 판독가능 매체.
  29. 제 27 항에 있어서,
    상기 프로세서로 하여금, 상기 최종 블록의 오프셋 값들을 인코딩하게 하는 명령들은, 상기 프로세서로 하여금, 상기 최종 블록의 오프셋 값들 중 일 오프셋 값의 정수부에 제 1 수의 비트들을 할당하게 하고, 상기 최종 블록의 오프셋 값들 중 상기 오프셋 값의 분수부에 제 2 수의 비트들을 할당하게 하는 명령들을 포함하며,
    비트들의 상기 제 1 수 및 상기 제 2 수는 상기 정수부의 매그니튜드에 기초하여 결정되는, 컴퓨터 판독가능 매체.
  30. 제 27 항에 있어서,
    상기 최종 블록의 오프셋 값들은, 정수 픽셀 위치들에 대해 하나의 오프셋 값을 포함하고 상이한 서브-정수 픽셀 위치들에 대해 여러 오프셋 값들을 포함하는, 컴퓨터 판독가능 매체.
  31. 제 30 항에 있어서,
    적어도 하나의 최종 오프셋 값은, 15 개의 상이한 서브-정수 픽셀 위치들에 대해 15 개의 상이한 오프셋 값들을 포함하는, 컴퓨터 판독가능 매체.
  32. 비디오 데이터를 인코딩하는 장치로서,
    기준 데이터의 제 1 리스트 내의 제 1 기준 비디오 유닛에 기초하여 서브-정수 픽셀 포지션과 관련된 제 1 블록의 예측 값들을 보간하고, 기준 데이터의 제 2 리스트 내의 제 2 기준 비디오 유닛에 기초하여 상기 서브-정수 픽셀 포지션과 관련된 제 2 블록의 예측 값들을 보간하는 수단;
    서브-정수 픽셀 포지션들에 대해, 상기 제 1 블록의 예측 값들 및 현재 비디오 블록에 기초하여 제 1 오프셋 값을 계산하고, 상기 제 1 오프셋 값 및 상기 제 2 블록의 예측 값들에 기초하여 제 2 오프셋 값을 계산하는 수단;
    상기 제 1 블록의 예측 값들, 상기 제 2 블록의 예측 값들, 상기 제 1 오프셋 값들 및 상기 제 2 오프셋 값들에 기초하여 최종 블록의 오프셋 값들을 결정하는 수단; 및
    상기 최종 블록의 오프셋 값들에 기초하여 상기 현재 비디오 블록을 인코딩하는 수단을 포함하는, 비디오 데이터를 인코딩하는 장치.
  33. 제 32 항에 있어서,
    상기 제 1 블록의 예측 값들 및 상기 제 2 블록의 예측 값들을 보간하는 수단은 고정된 보간 필터들에 의해 수행되는, 비디오 데이터를 인코딩하는 장치.
  34. 제 32 항에 있어서,
    상기 최종 블록의 오프셋 값들을 결정하는 수단은, 상기 제 1 오프셋 값과 상기 제 2 오프셋 값 중 적어도 하나의 값에 가중치를 적용하는 수단을 포함하는, 비디오 데이터를 인코딩하는 장치.
  35. 제 32 항에 있어서,
    상기 최종 블록의 오프셋 값들을 결정하는 수단은,
    상기 제 1 블록의 예측 값들, 상기 제 2 블록의 예측 값들, 상기 제 1 오프셋 값들 및 상기 제 2 오프셋 값들을 함께 더하여 오프셋 예측 합계를 생성하는 수단;
    상기 오프셋 예측 합계를 2 로 나눠 예측 오차를 생성하는 수단;
    상기 예측 오차를 각각의 서브-정수 픽셀 포지션에 대해 누적하는 수단; 및
    각각의 서브-정수 픽셀 포지션에 대한 상기 누적된 예측 오차를 상기 예측 오차에 대한 기여의 수로 나눠 각각의 서브-정수 픽셀 포지션에 대한 최종 오프셋 값을 생성하는 수단을 포함하는, 비디오 데이터를 인코딩하는 장치.
  36. 제 32 항에 있어서,
    상기 최종 블록의 오프셋 값들을 결정하는 수단은,
    상기 제 1 블록의 예측 값들과 상기 제 1 오프셋 값들을 더하여 제 1 오프셋 예측 합계를 생성하는 수단;
    상기 제 2 블록의 예측 값들과 상기 제 2 오프셋 값들을 더하여 제 2 오프셋 예측 합계를 생성하는 수단;
    상기 제 1 오프셋 예측 합계를 제 1 가중치와 곱하여 제 1 가중된 오프셋 예측 합계를 생성하고, 상기 제 2 오프셋 예측 합계를 제 2 가중치와 곱하여 제 2 가중된 오프셋 예측 합계를 생성하는 수단;
    상기 제 1 가중된 오프셋 예측 합계와 상기 제 2 가중된 오프셋 예측 합계를 더하여 최종 가중된 오프셋 예측 합계를 생성하는 수단;
    상기 최종 가중된 오프셋 예측 합계를 정규화 항 (normalization term) 으로 나눠 예측 오차를 생성하는 수단;
    상기 예측 오차를 각각의 서브-정수 픽셀 포지션에 대해 누적하는 수단; 및
    각각의 서브-정수 픽셀 포지션에 대한 상기 누적된 예측 오차를 상기 예측 오차에 대한 기여의 수로 나눠 각각의 서브-정수 픽셀 포지션에 대한 최종 오프셋 값을 생성하는 수단을 포함하는, 비디오 데이터를 인코딩하는 장치.
  37. 제 32 항에 있어서,
    상기 최종 블록의 오프셋 값들을 코딩된 현재 비디오 블록을 포함하는 코딩된 비트스트림의 일부로서 인코딩하는 수단을 더 포함하는, 비디오 데이터를 인코딩하는 장치.
  38. 제 37 항에 있어서,
    상기 코딩된 비트스트림을 소스 디바이스로부터 목적지 디바이스로 송신하는 수단을 더 포함하는, 비디오 데이터를 인코딩하는 장치.
  39. 제 37 항에 있어서,
    상기 최종 블록의 오프셋 값들을 인코딩하는 수단은, 상기 최종 블록의 오프셋 값들 중 일 오프셋 값의 정수부에 제 1 수의 비트들을 할당하고, 상기 최종 블록의 오프셋 값들 중 상기 오프셋 값의 분수부에 제 2 수의 비트들을 할당하는 수단을 포함하며,
    비트들의 상기 제 1 수 및 상기 제 2 수는 상기 정수부의 매그니튜드에 기초하여 결정되는, 비디오 데이터를 인코딩하는 장치.
  40. 제 37 항에 있어서,
    상기 최종 블록의 오프셋 값들은, 정수 픽셀 위치들에 대해 하나의 오프셋 값을 포함하고 상이한 서브-정수 픽셀 위치들에 대해 여러 오프셋 값들을 포함하는, 비디오 데이터를 인코딩하는 장치.
  41. 제 40 항에 있어서,
    상기 최종 블록의 오프셋 값들은, 15 개의 상이한 서브-정수 픽셀 위치들에 대해 15 개의 상이한 오프셋 값들을 포함하는, 비디오 데이터를 인코딩하는 장치.
  42. 비디오 인코딩 방법으로서,
    인코더를 통해, 제 1 패스 (pass) 로서, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩하는 단계;
    id=0 을 가진 모든 기준 프레임들이 동일한 수의 프레임들에 의해 상기 현재 프레임으로부터 분리된다면,
    인코더를 통해, 픽처 오더 컨텐트 (picture order content; POC) 패스로서, POC 가중된 기준 프레임들에 관한, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 상기 현재 프레임을 인코딩하는 단계;
    상기 POC 패스의 레이트-왜곡 특성이 상기 제 1 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면,
    인코딩을 위해 상기 POC 가중된 기준 프레임들을 이용하는 단계; 및
    상기 POC 패스의 레이트-왜곡 특성을 변수로서 저장하는 단계;
    상기 제 1 패스의 레이트-왜곡 특성이 상기 POC 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 상기 제 1 패스의 레이트-왜곡 특성을 상기 변수로서 저장하는 단계;
    id=0 을 가진 모든 기준 프레임들이 상기 동일한 수의 프레임들에 의해 상기 현재 프레임으로부터 분리되지 않는다면, 상기 제 1 패스의 레이트-왜곡 특성을 상기 변수로서 저장하는 단계;
    인코더를 통해, 상기 현재 프레임에 관한 프레임 필터들 및 오프셋들을 컴퓨팅하는 단계;
    인코더를 통해, 제 2 패스로서, 컴퓨팅된 상기 프레임 필터들 및 상기 오프셋들을 이용하여 상기 현재 프레임을 인코딩하는 단계;
    상기 제 2 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면;
    상기 제 2 패스의 레이트-왜곡 특성을 상기 변수로서 저장하는 단계; 및
    양자화 단계를 1 만큼 증가시키고, 제 3 패스로서, 컴퓨팅된 상기 프레임 필터들 및 상기 오프셋들을 이용하여 상기 현재 프레임을 인코딩하는 단계;
    상기 제 2 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 상기 양자화 단계를 1 만큼 증가시키고, 상기 제 3 패스로서, 오프셋들을 이용하지 않고, 상기 시퀀스 필터들을 이용하여 상기 현재 프레임을 인코딩하는 단계;
    상기 제 3 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 상기 제 3 패스의 인코딩을 비트스트림에 부가하는 단계;
    상기 제 3 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 상기 변수의 인코딩을 상기 비트스트림에 부가하는 단계; 및
    인코더를 통해, 시퀀스 필터들을 컴퓨팅하여 다음 프레임을 인코딩하는 단계를 포함하는, 비디오 인코딩 방법.
  43. 비디오 인코더를 포함하는, 비디오 데이터를 인코딩하는 장치로서,
    상기 비디오 인코더는,
    제 1 패스로서, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩하고;
    id=0 을 가진 모든 기준 프레임들이 동일한 수의 프레임들에 의해 상기 현재 프레임으로부터 분리된다면,
    픽처 오더 컨텐트 (picture order content; POC) 패스로서, POC 가중된 기준 프레임들에 관한, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 상기 현재 프레임을 인코딩하고;
    상기 POC 패스의 레이트-왜곡 특성이 상기 제 1 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면;
    인코딩하기 위해 상기 POC 가중된 기준 프레임들을 이용하고;
    상기 POC 패스의 레이트-왜곡 특성을 변수로서 저장하며;
    상기 제 1 패스의 레이트-왜곡 특성이 상기 POC 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 상기 제 1 패스의 레이트-왜곡 특성을 상기 변수로서 저장하며;
    id=0 을 가진 모든 기준 프레임들이 상기 동일한 수의 프레임들에 의해 상기 현재 프레임으로부터 분리되지 않는다면, 상기 제 1 패스의 레이트-왜곡 특성을 상기 변수로서 저장하고;
    상기 현재 프레임에 관한 프레임 필터들 및 오프셋들을 컴퓨팅하고;
    제 2 패스로서, 컴퓨팅된 상기 프레임 필터들 및 상기 오프셋들을 이용하여 상기 현재 프레임을 인코딩하고;
    상기 제 2 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면,
    상기 제 2 패스의 레이트-왜곡 특성을 상기 변수로서 저장하고;
    양자화 단계를 1 만큼 증가시키고, 제 3 패스로서, 컴퓨팅된 상기 프레임 필터들 및 상기 오프셋들을 이용하여 상기 현재 프레임을 인코딩하며;
    상기 제 2 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 상기 양자화 단계를 1 만큼 증가시키고, 상기 제 3 패스로서, 오프셋들을 이용하지 않고, 상기 시퀀스 필터들을 이용하여 상기 현재 프레임을 인코딩하고;
    상기 제 3 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 상기 제 3 패스의 인코딩을 비트스트림에 부가하고;
    상기 제 3 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 상기 변수의 인코딩을 상기 비트스트림에 부가하며;
    시퀀스 필터들을 컴퓨팅하여 다음 프레임을 인코딩하는, 비디오 데이터를 인코딩하는 장치.
  44. 명령들이 인코딩되어 있는 컴퓨터 판독가능 매체로서,
    상기 명령들은, 실행 시에, 비디오 인코더 내의 프로세서로 하여금,
    제 1 패스로서, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩하게 하고;
    id=0 을 가진 모든 기준 프레임들이 동일한 수의 프레임들에 의해 상기 현재 프레임으로부터 분리된다면;
    픽처 오더 컨텐트 (picture order content; POC) 패스로서, POC 가중된 기준 프레임들에 관한, 오프셋들을 이용하지 않고, 시퀀스들을 이용하여 상기 현재 프레임을 인코딩하게 하고;
    상기 POC 패스의 레이트-왜곡 특성이 상기 제 1 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면,
    인코딩하기 위해 상기 POC 가중된 기준 프레임들을 이용하게 하고;
    상기 POC 패스의 레이트-왜곡 특성을 변수로서 저장하게 하며;
    상기 제 1 패스의 레이트-왜곡 특성이 상기 POC 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 상기 제 1 패스의 레이트-왜곡 특성을 상기 변수로서 저장하게 하며;
    id=0 을 가진 모든 기준 프레임들이 상기 동일한 수의 프레임들에 의해 상기 현재 프레임으로부터 분리되지 않는다면, 상기 제 1 패스의 레이트-왜곡 특성을 상기 변수로서 저장하게 하고;
    상기 현재 프레임에 관한 프레임 필터들 및 오프셋들을 컴퓨팅하게 하고;
    제 2 패스로서, 컴퓨팅된 상기 프레임 필터들 및 상기 오프셋들을 이용하여 상기 현재 프레임을 인코딩하게 하고;
    상기 제 2 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면;
    상기 제 2 패스의 레이트-왜곡 특성을 상기 변수로서 저장하게 하고;
    양자화 단계를 1 만큼 증가시키게 하고, 제 3 패스로서, 컴퓨팅된 상기 프레임 필터들 및 상기 오프셋들을 이용하여 상기 현재 프레임을 인코딩하게 하며;
    상기 제 2 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 상기 양자화 단계를 1 만큼 증가시키게 하고, 상기 제 3 패스로서, 오프셋들을 이용하지 않고, 상기 시퀀스 필터들을 이용하여 상기 현재 프레임을 인코딩하게 하고;
    상기 제 3 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 상기 제 3 패스의 인코딩을 비트스트림에 부가하게 하고;
    상기 제 3 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 상기 변수의 인코딩을 상기 비트스트림에 부가하게 하며;
    시퀀스 필터들을 컴퓨팅하여 다음 프레임을 인코딩하게 하는, 컴퓨터 판독가능 매체.
  45. 비디오 데이터를 인코딩하는 장치로서,
    인코더를 통해, 제 1 패스로서, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 현재 프레임을 인코딩하는 수단;
    id=0 을 가진 모든 기준 프레임들이 동일한 수의 프레임들에 의해 상기 현재 프레임으로부터 분리된다면,
    인코더를 통해, 픽처 오더 컨텐트 (picture order content; POC) 패스로서, POC 가중된 기준 프레임들에 관한, 오프셋들을 이용하지 않고, 시퀀스 필터들을 이용하여 상기 현재 프레임을 인코딩하는 수단;
    상기 POC 패스의 레이트-왜곡 특성이 상기 제 1 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면;
    인코딩을 위해 상기 POC 가중된 기준 프레임들을 이용하는 수단; 및
    상기 POC 패스의 레이트-왜곡 특성을 변수로서 저장하는 수단;
    상기 제 1 패스의 레이트-왜곡 특성이 상기 POC 패스의 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 상기 제 1 패스의 레이트-왜곡 특성을 상기 변수로서 저장하는 수단;
    id=0 을 가진 모든 기준 프레임들이 상기 동일한 수의 프레임들에 의해 상기 현재 프레임으로부터 분리되지 않는다면, 상기 제 1 패스의 레이트-왜곡 특성을 상기 변수로서 저장하는 수단;
    인코더를 통해, 상기 현재 프레임에 관한 프레임 필터들 및 오프셋들을 컴퓨팅하는 수단;
    인코더를 통해, 제 2 패스로서, 컴퓨팅된 상기 프레임 필터들 및 상기 오프셋들을 이용하여 상기 현재 프레임을 인코딩하는 수단;
    상기 제 2 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면;
    상기 제 2 패스의 레이트-왜곡 특성을 상기 변수로서 저장하는 수단; 및
    양자화 단계를 1 만큼 증가시키고, 제 3 패스로서, 컴퓨팅된 상기 프레임 필터들 및 상기 오프셋들을 이용하여 상기 현재 프레임을 인코딩하는 수단;
    상기 제 2 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 상기 양자화 단계를 1 만큼 증가시키고, 상기 제 3 패스로서, 오프셋들을 이용하지 않고, 상기 시퀀스 필터들을 이용하여 상기 현재 프레임을 인코딩하는 수단;
    상기 제 3 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의한다면, 상기 제 3 패스의 인코딩을 비트스트림에 부가하는 수단;
    상기 제 3 패스의 레이트-왜곡 특성이 상기 변수에 저장된 레이트-왜곡 특성보다 더 낮은 레이트 왜곡 비용 값을 정의하지 않는다면, 상기 변수의 인코딩을 상기 비트스트림에 부가하는 수단; 및
    인코더를 통해, 시퀀스 필터들을 컴퓨팅하여 다음 프레임을 인코딩하는 수단을 포함하는, 비디오 데이터를 인코딩하는 장치.
KR1020117009307A 2008-09-23 2009-09-22 스위칭된 보간 필터들에서의 오프셋 계산 KR101313956B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US9950908P 2008-09-23 2008-09-23
US61/099,509 2008-09-23
US12/509,235 2009-07-24
US12/509,235 US8750378B2 (en) 2008-09-23 2009-07-24 Offset calculation in switched interpolation filters
PCT/US2009/057831 WO2010039492A2 (en) 2008-09-23 2009-09-22 Offset calculation in switched interpolation filters

Publications (2)

Publication Number Publication Date
KR20110074565A true KR20110074565A (ko) 2011-06-30
KR101313956B1 KR101313956B1 (ko) 2013-10-01

Family

ID=42037650

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117009307A KR101313956B1 (ko) 2008-09-23 2009-09-22 스위칭된 보간 필터들에서의 오프셋 계산

Country Status (7)

Country Link
US (1) US8750378B2 (ko)
EP (1) EP2342898A2 (ko)
JP (2) JP5730770B2 (ko)
KR (1) KR101313956B1 (ko)
CN (1) CN102265619B (ko)
TW (1) TW201026077A (ko)
WO (1) WO2010039492A2 (ko)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9654792B2 (en) 2009-07-03 2017-05-16 Intel Corporation Methods and systems for motion vector derivation at a video decoder
US20120300849A1 (en) * 2010-01-12 2012-11-29 Yukinobu Yasugi Encoder apparatus, decoder apparatus, and data structure
US9507827B1 (en) * 2010-03-25 2016-11-29 Excalibur Ip, Llc Encoding and accessing position data
KR101847072B1 (ko) * 2010-04-05 2018-04-09 삼성전자주식회사 영상 부호화 방법 및 장치, 비디오 복호화 방법 및 장치
CN107071409A (zh) * 2010-05-13 2017-08-18 夏普株式会社 预测图像生成装置
US8976856B2 (en) * 2010-09-30 2015-03-10 Apple Inc. Optimized deblocking filters
US9532059B2 (en) 2010-10-05 2016-12-27 Google Technology Holdings LLC Method and apparatus for spatial scalability for video coding
US20120134425A1 (en) * 2010-11-29 2012-05-31 Faouzi Kossentini Method and System for Adaptive Interpolation in Digital Video Coding
US10045046B2 (en) 2010-12-10 2018-08-07 Qualcomm Incorporated Adaptive support for interpolating values of sub-pixels for video coding
US20130287106A1 (en) * 2011-01-07 2013-10-31 Samsung Electronics Co., Ltd. Video prediction method capable of performing bilateral prediction and unilateral prediction and a device thereof, video encoding method and device thereof, and video decoding method and device thereof
CN103503458B (zh) 2011-01-07 2017-09-22 诺基亚技术有限公司 视频编码中的运动预测
US8693547B2 (en) * 2011-04-06 2014-04-08 Google Inc. Apparatus and method for coding using motion vector segmentation
US9008170B2 (en) 2011-05-10 2015-04-14 Qualcomm Incorporated Offset type and coefficients signaling method for sample adaptive offset
JP5768491B2 (ja) * 2011-05-17 2015-08-26 ソニー株式会社 画像処理装置および方法、プログラム、並びに記録媒体
US8989256B2 (en) 2011-05-25 2015-03-24 Google Inc. Method and apparatus for using segmentation-based coding of prediction information
KR101826215B1 (ko) 2011-06-23 2018-03-22 후아웨이 테크놀러지 컴퍼니 리미티드 오프셋 복호 장치, 오프셋 부호화 장치, 화상 필터 장치 및 데이터 구조
KR102001259B1 (ko) * 2011-06-27 2019-07-17 선 페이턴트 트러스트 화상 부호화 방법, 화상 복호 방법, 화상 부호화 장치, 화상 복호 장치, 및 화상 부호화 복호 장치
CN108632608B (zh) 2011-09-29 2022-07-29 夏普株式会社 图像解码装置、图像解码方法、图像编码装置及图像编码方法
JP5972888B2 (ja) 2011-09-29 2016-08-17 シャープ株式会社 画像復号装置、画像復号方法および画像符号化装置
RS61015B1 (sr) * 2011-10-17 2020-11-30 Toshiba Kk Postupak kodiranja i dekodiranja
US10027982B2 (en) * 2011-10-19 2018-07-17 Microsoft Technology Licensing, Llc Segmented-block coding
JP2013102297A (ja) 2011-11-07 2013-05-23 Canon Inc 画像符号化方法、画像符号化装置及びプログラム、画像復号方法、画像復号装置及びプログラム
JP5871628B2 (ja) * 2011-11-07 2016-03-01 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
US9247257B1 (en) 2011-11-30 2016-01-26 Google Inc. Segmentation based entropy encoding and decoding
JP6101709B2 (ja) * 2012-01-18 2017-03-22 エレクトロニクス アンド テレコミュニケーションズ リサーチ インスチチュートElectronics And Telecommunications Research Institute 映像復号化装置
US9094681B1 (en) 2012-02-28 2015-07-28 Google Inc. Adaptive segmentation
US9332276B1 (en) 2012-08-09 2016-05-03 Google Inc. Variable-sized super block based direct prediction mode
US9380298B1 (en) 2012-08-10 2016-06-28 Google Inc. Object-based intra-prediction
US9571858B2 (en) * 2013-07-19 2017-02-14 Futurewei Technologies, Inc. Method and apparatus of derivation for a binary partition pattern
US20160373770A1 (en) * 2015-06-18 2016-12-22 Qualcomm Incorporated Intra prediction and intra mode coding
US10841593B2 (en) 2015-06-18 2020-11-17 Qualcomm Incorporated Intra prediction and intra mode coding
US11463689B2 (en) 2015-06-18 2022-10-04 Qualcomm Incorporated Intra prediction and intra mode coding
KR102402671B1 (ko) 2015-09-09 2022-05-26 삼성전자주식회사 보간 필터의 연산 복잡도를 조절할 수 있는 영상 처리 장치, 영상 보간 방법 및 영상 부호화 방법
US10116957B2 (en) * 2016-09-15 2018-10-30 Google Inc. Dual filter type for motion compensated prediction in video coding
CN116193109A (zh) * 2017-01-16 2023-05-30 世宗大学校产学协力团 影像编码/解码方法
US10455253B1 (en) * 2017-02-28 2019-10-22 Google Llc Single direction long interpolation filter
WO2019093916A1 (en) 2017-11-07 2019-05-16 Huawei Technologies Co., Ltd Interpolation filter for an inter prediction apparatus and method for video coding
US11277644B2 (en) 2018-07-02 2022-03-15 Qualcomm Incorporated Combining mode dependent intra smoothing (MDIS) with intra interpolation filter switching
US11303885B2 (en) 2018-10-25 2022-04-12 Qualcomm Incorporated Wide-angle intra prediction smoothing and interpolation
CN113056909A (zh) * 2018-12-31 2021-06-29 松下电器(美国)知识产权公司 编码装置、解码装置、编码方法和解码方法
JP7176094B2 (ja) * 2019-03-11 2022-11-21 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 符号化装置及び符号化方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0830030A3 (en) * 1996-09-13 2002-01-30 Nec Corporation Video and audio data compression system
US6950469B2 (en) * 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
CA2491679A1 (en) * 2002-07-09 2004-01-15 Nokia Corporation Method and system for selecting interpolation filter type in video coding
US7496234B2 (en) * 2003-06-20 2009-02-24 Microsoft Corporation System and method for seamless multiplexing of embedded bitstreams
EP1636998A2 (en) * 2003-06-25 2006-03-22 Thomson Licensing Method and apparatus for weighted prediction estimation using a displaced frame differential
NO319629B1 (no) 2003-11-28 2005-09-05 Tandberg Telecom As Fremgangsmate for korrigering av interpolerte pikselverdier
NO320114B1 (no) 2003-12-05 2005-10-24 Tandberg Telecom As Forbedret utregning av interpolerte pixelverdier
FR2881898A1 (fr) * 2005-02-10 2006-08-11 Thomson Licensing Sa Procede et dispositif de codage d'une image video en mode inter ou intra
EP2127391A2 (en) * 2007-01-09 2009-12-02 Nokia Corporation Adaptive interpolation filters for video coding
US20080298702A1 (en) * 2007-06-04 2008-12-04 Aricent Inc. Fixed rate JPEG encoding

Also Published As

Publication number Publication date
WO2010039492A3 (en) 2011-12-22
US8750378B2 (en) 2014-06-10
JP2012505565A (ja) 2012-03-01
TW201026077A (en) 2010-07-01
JP2013168949A (ja) 2013-08-29
JP5646668B2 (ja) 2014-12-24
KR101313956B1 (ko) 2013-10-01
US20100074332A1 (en) 2010-03-25
WO2010039492A2 (en) 2010-04-08
CN102265619B (zh) 2014-06-18
CN102265619A (zh) 2011-11-30
JP5730770B2 (ja) 2015-06-10
EP2342898A2 (en) 2011-07-13

Similar Documents

Publication Publication Date Title
KR101313956B1 (ko) 스위칭된 보간 필터들에서의 오프셋 계산
EP2304959B1 (en) Offsets at sub-pixel resolution
KR101437719B1 (ko) 보간 필터들 및 오프셋들을 이용한 디지털 비디오 코딩
KR101208384B1 (ko) 비디오 코딩에서 모션 보상을 위한 어드밴스드 보간 기술
KR101208383B1 (ko) 비디오 코딩에서 모션 보상을 위한 어드밴스드 보간 기술
US8831087B2 (en) Efficient prediction mode selection
KR101202632B1 (ko) 비디오 코딩에서의 보간을 위한 예측 기술
KR101377883B1 (ko) 비디오 인코딩에서 넌-제로 라운딩 및 예측 모드 선택 기법들
CA2795204C (en) Mixed tap filters
JP2014140192A (ja) 固定フィルタまたは適応フィルタに基づくビデオ・コーディングのためのレートひずみ定義補間
JP2011518508A (ja) ビデオコーディングにおけるサブピクセル解像度のための補間フィルタサポート

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee