KR100593344B1 - 다수 스테이지 보간처리를 위한 라운딩 제어 - Google Patents

다수 스테이지 보간처리를 위한 라운딩 제어 Download PDF

Info

Publication number
KR100593344B1
KR100593344B1 KR1020030022428A KR20030022428A KR100593344B1 KR 100593344 B1 KR100593344 B1 KR 100593344B1 KR 1020030022428 A KR1020030022428 A KR 1020030022428A KR 20030022428 A KR20030022428 A KR 20030022428A KR 100593344 B1 KR100593344 B1 KR 100593344B1
Authority
KR
South Korea
Prior art keywords
stage
rounding
pixel
value
interpolation
Prior art date
Application number
KR1020030022428A
Other languages
English (en)
Other versions
KR20030081119A (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 KR20030081119A publication Critical patent/KR20030081119A/ko
Application granted granted Critical
Publication of KR100593344B1 publication Critical patent/KR100593344B1/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
    • GPHYSICS
    • G02OPTICS
    • G02CSPECTACLES; SUNGLASSES OR GOGGLES INSOFAR AS THEY HAVE THE SAME FEATURES AS SPECTACLES; CONTACT LENSES
    • G02C9/00Attaching auxiliary optical parts
    • G02C9/02Attaching auxiliary optical parts by hinging
    • GPHYSICS
    • G02OPTICS
    • G02CSPECTACLES; SUNGLASSES OR GOGGLES INSOFAR AS THEY HAVE THE SAME FEATURES AS SPECTACLES; CONTACT LENSES
    • G02C5/00Constructions of non-optical parts
    • G02C5/02Bridges; Browbars; Intermediate bars
    • GPHYSICS
    • G02OPTICS
    • G02CSPECTACLES; SUNGLASSES OR GOGGLES INSOFAR AS THEY HAVE THE SAME FEATURES AS SPECTACLES; CONTACT LENSES
    • G02C2200/00Generic mechanical aspects applicable to one or more of the groups G02C1/00 - G02C5/00 and G02C9/00 - G02C13/00 and their subgroups
    • G02C2200/06Locking elements

Abstract

다수 스테이지 보간처리에서의 라운딩 제어를 위한 다양한 기술과 툴이 개시되어 있다. 예를 들면, 모션 추정 및 보상 중에, 다수 스테이지 보간처리에 의해 기준 비디오 프레임에서 픽셀 값을 계산하는 경우에, 비디오 인코더는 스테이지-교대 라운딩 제어를 이용한다. 또는, 모션 보상 중에, 다수 스테이지 보간처리에 의해 기준 비디오 프레임에서 픽셀 값을 계산하는 경우에, 비디오 디코더는 스테이지-교대 라운딩 제어를 이용한다.
보간처리, 다수 스테이지 보간처리, 라운딩, 모션 추정, 모션 보상, 비디오 인코더, 비디오 디코더

Description

다수 스테이지 보간처리를 위한 라운딩 제어{ROUNDING CONTROL FOR MULTI-STAGE INTERPOLATION}
도 1은 종래 기술에 따른 비디오 인코더에서의 모션 추정을 나타내는 도면.
도 2는 종래 기술에 따른 서브-픽셀 모션 추정 및 보상에 있어서의 보간처리를 위한 서브-픽셀 위치를 나타내는 차트.
도 3은 본 발명에 개시된 수개의 실시예가 구현되는 적절한 계산 환경의 블록도.
도 4는 본 발명에 개시된 수개의 실시예에 이용되는 일반화된 비디오 인코더 시스템의 블록도.
도 5는 본 발명에 개시된 수개의 실시예에 이용되는 일반화된 비디오 디코더 시스템의 블록도.
도 6은 서브-픽셀 모션 추정 및 보상 동안에 픽셀 값 보간처리를 위한 위치를 나타내는 차트.
도 7은 서브-픽셀 위치를 위한 보간처리된 픽셀 값을 계산하는데에 이용된 픽셀 값을 가진 정수 픽셀 위치를 나타내는 차트.
도 8은 서브-픽셀 위치에서 값을 보간처리하기 위한 2 스테이지 보간처리 기술을 나타내는 도면.
도 9는 1/2-픽셀 수평, 1/2-픽셀 수직 샘플 위치 및 샘플 위치에서의 값을 계산하는데 이용되는 서브-픽셀 위치에서의 중간 값을 나타내는 차트.
도 10은 1/4-픽셀 수평 1/2-픽셀 수직 샘플 위치, 1/2-픽셀 수평 1/4-픽셀 수직 샘플 위치 및 샘플 위치에서의 값을 계산하는데 이용되는 서브-픽셀 위치에서의 중간 값을 나타내는 차트.
도 11은 1/4-픽셀 수평, 1/4-픽셀 수직 샘플 위치 및 샘플 위치에서의 값을 계산하는데 이용되는 서브-픽셀 위치에서의 중간 값을 나타내는 차트.
도 12는 향상된 동적 범위(비트 단위) 중간 값을 가진 다수 스테이지 보간처리 기술을 나타내는 도면.
도 13은 스킵된 클램핑을 가진 다수 스테이지 보간처리를 나타내는 도면.
도 14는 지연된 비트 시프팅을 가진 다수 스테이지 보간처리를 나타내는 도면.
도 15는 스테이지-교대 라운딩 제어를 이용하는 다수 스테이지 보간처리를 나타내는 도면.
도 16은 다수의 색도 라운딩 및 보간처리 모드들 중에서 선택을 하기 위한 기술을 나타내는 흐름도.
도 17은 제1 색도 라운딩 모드를 나타내는 테이블.
도 18은 제2 색도 라운딩 모드를 나타내는 테이블.
<도면의 주요부분에 대한 간단한 설명>
300: 계산 환경
310: 처리 유닛
320: 메모리
340: 저장 장치
350: 입력 장치
360: 출력 장치
370: 통신 접속 장치
380: 소프트웨어
400: 비디오 인코더 시스템
405: 현재 프레임
410: 모션 추정자
415: 모션 정보
420: 프레임 저장 장치
425: 선행 프레임
430: 모션 보상자
460: 주파수 변환기
466: 역 주파수 변환기
470: 양자화기
476: 역양자화기
480: 엔트로피 코더
490: 버퍼
495: 압축된 비디오 정보
505: 재구성된 프레임
520: 프레임 저장 장치
525: 기준 프레임
530: 모션 보상기
545: 재구성된 나머지
560: 역 주파수 변환기
570: 역 양자화기
580: 엔트로피 디코더
590: 버퍼
595: 압축된 비디오 정보
<연관된 출원에 대한 교차 참조>
본 출원은 2002년 4월 10일 출원된 미국특허 가출원 번호 60/371,860에 대한 우선권을 주장하며, 그 개시 내용을 참조로 본원에 포함시킨다. 본원은 이와 함께 출원된, "이동 예측 및 보상에서의 서브 픽셀 보간(Sub-Pixel Interpolation in Motion Estimation and Compensation)"이란 제목의 미국특허출원 번호 aa/bbb,ccc, 이와 함께 출원된 "근사적 겹삼차 필터(Approximate Bicubic Filter)", 및 이와 함 께 출원된 "색도 이동 벡터 라운딩(Chrominance Motion Vector Rounding)"이란 제목의 미국 특허출원 번호 aa/bbb,ccc와 관련 있으며, 그 개시 내용들을 참조를 위해 본원에 포함시킨다.
<기술 분야>
본 발명은 비디오 코딩/디코딩 어플리케이션에서 모션(motion) 평가/보상을 위한 서브 픽셀 시프팅을 위한 기술 및 툴에 관한 것이다. 예컨대, 비디오 인코더 및 디코더는, 기준 프레임내의 서브 픽셀 위치에서의 픽셀 값에 대해 다수 스테이지 보간처리를 수행할 때 비트 시프팅을 지연시킨다.
디지털 비디오는 많은 양의 저장 및 전송 용량을 소모한다. 통상적인 미가공 디지털 비디오 시퀀스는 초당 15 또는 30개의 프레임을 포함하고 있다. 각 프레임은 수십 또는 수십만개의 픽셀(펠(pels)이라고도 불림)을 포함할 수 있다. 각 픽셀은 영상의 작은 성분을 표현한다. 미가공 형태에서는, 컴퓨터가 보통 24비트를 갖는 한 픽셀을 표현한다. 예컨대, 한 픽셀은 그 픽셀의 계조 성분을 한정하는 8비트의 휘도(luminance)값(루마(luma)값이라고도 불림) 및 그 픽셀의 컬러 성분을 한정하는 8비트의 색도(chrominance)값(크로마(chroma)값이라고도 불림)을 포함할 수도 있다. 따라서, 통상적인 미가공 디지털 비디오 시퀀스의 초당 비트수, 즉 비트 레이트는 초당 5백만 비트 이상일 수 있다.
많은 컴퓨터들 및 컴퓨터 네트워크들은 미가공 디지털 비디오를 처리하기에는 자원이 부족하다. 이 때문에, 엔지니어들은 압축(코딩 또는 인코딩이라고도 함)을 이용하여 디지털 비디오의 비트 레이트를 감소시킨다. 압축은 무손실일 수 있으며 이 경우에 비디오의 품질이 손상되지 않지만 비디오의 복잡성에 의해 비트 레이트의 감소가 제한된다. 또는, 압축이 손실일 수 있으며 이 경우에 비디오 품질이 손상되지만 비트 레이트의 감소가 더 극적이다. 압축 해제는 압축의 반대이다.
일반적으로, 비디오 압축 기술은 프레임내 압축(intraframe compression)과 프레임간 압축(interframe compression)을 포함한다. 프레임내 압축 기술은 통상적으로 I 프레임이나 키(key) 프레임이라고 불리는 개별 프레임을 압축한다. 프레임간 압축 기술은 통상적으로 예측 프레임, P 프레임이나 B 프레임이라고 불리는 선행 및/또는 후속 프레임에 대하여 프레임을 압축한다.
마이크로소프트사의 Windows Media Video, version 8("WMV8")은 비디오 인코더 및 비디오 디코더를 포함하고 있다. WMV8 인코더는 프레임내 및 프레임간 압축을 이용하며, WMV8 디코더는 프레임내 및 프레임간 압축해제를 이용한다. WMV8 인코더에서의 프레임간 압축은 블록 단위 모션 보상 예측 코딩(block-based motion compensated prediction coding)을 이용하며 잔류 오차(residual error)의 변환 코딩이 뒤따른다.
WMV8에서, 한 프레임은 세개의 픽셀 평면, 즉 휘도 픽셀 값들의 하나의 휘도(Y) 평면 및 색도 픽셀 값들의 2개의 색도(U, V) 평면으로서 표현된다. Y 평면의 해상도는 수평 및 수직으로 U 및 V 평면의 해상도의 두배이다. 그래서, 320픽셀×240픽셀 프레임은 320픽셀×240픽셀 Y 평면과 160픽셀×120픽셀 U 및 V 평면을 갖는다.
WMV8 인코더는 예측 프레임을 8×8 픽셀 블록들로 분할한다. 4개의 8×8 휘도 블록과 2개의 함께 위치하는 8×8 색도 블록(U 색도 평면용 하나 및 V 색도 평면용 하나)이 16×16 매크로 블록을 형성한다. 따라서, 각각의 16×16 매크로 블록은 4개의 8×8 휘도 블록 및 2개의 8×8 색도 블록을 포함한다.
WMV8 인코더는 예측 프레임의 매크로 블록에 대하여 모션 추정을 수행한다. 모션 추정은, 예측 프레임의 매크로 블록을 찾아서 기준 프레임으로부터의 매크로 블록과 매칭시킴으로써, 예측 프레임의 매크로 블록의 모션을 근사한다(approximate). 도 1에서, 예컨대, WMV8 인코더는 예측 프레임(110)의 매크로 블록(115)에 대한 모션 벡터를 계산한다. 모션 벡터를 계산하기 위하여, 인코더는 기준 프레임(130)의 탐색 영역(135) 내를 탐색한다. 탐색 영역(135) 내에서, 인코더는 양호한 매칭을 찾기 위하여 예측 프레임(110)으로부터의 매크로 블록(115)의 휘도값을 기준 프레임(130)으로부터의 여러 후보 블록들의 휘도값과 비교한다. WMV8 인코더는 모션 벡터 정밀도를 스위칭할 수도 있고, 정수, 1/2 또는 1/4-픽셀 수평 해상도 및 정수 또는 1/2-픽셀 수직 해상도를 갖는 모션 벡터와 탐색 범위를 이용할 수도 있다. WMV8 인코더는 서브-픽셀 정밀 모션 벡터로 비디오 시퀀스 내의 서브-픽셀 모션을 근사할 수 있다.
모션 보상중에, WMV8 인코더는 예측 프레임의 매크로 블록에 대한 모션 벡터를 이용하여 기준 프레임으로부터의 매크로 블록에 대한 예측자를 결정한다. 모션 예측된 매크로 블록 각각에 대하여, WMV8 인코더는 원래 매크로 블록과 그 예측자 사이의 차이(나머지 또는 오차라고 불림)를 계산한다. WMV8 인코더는 나머지를 블 록으로 분할하고 나머지 블록들을 손실 압축한다. 예측 프레임의 모션 예측 매크로 블록을 재구성하기 위하여, WMV8 인코더는 나머지를 압축해제하고 이들을 각각의 매크로 블록에 대한 예측자에 가산한다.
WMV8 디코더는 또한 예측 프레임의 매크로 블록에 대한 모션 벡터를 이용하여 기준 프레임으로부터의 매크로 블록에 대한 예측자를 결정한다. 예측 프레임의 모션 예측 매크로 블록을 재구성하기 위하여, WMV8 디코더는 나머지를 압축해제하고 이들을 그 매크로 블록에 대한 예측자에 가산한다.
모션 추정 또는 보상 중에, 모션 벡터가 서브-픽셀 정밀도(즉, 1/2-픽셀 또는 1/4-픽셀)를 갖는 경우에, WMV8 인코더 또는 디코더는 기준 프레임내의 서브-픽셀 위치에서의 픽셀 값을 결정해야 한다. WMV8 인코더 또는 디코더는 보간처리 필터를 이용하여 서브-픽셀 위치에 대한 값들을 생성한다. 도 2는 서브-픽셀 샘플 위치들(H0, H1, H2)을 나타내며, 이 위치들은 정수 픽셀 값들(a, b, c, ..., p)의 보간처리에 의해 계산된 값들을 갖는다.
1/2-픽셀 모션 정밀도로 동작하는 경우에, 3개의 별개의 1/2-픽셀 위치들(H0, H1, H2)에서의 휘도 픽셀 값에 이용된 보간처리 필터들은
H0 = (f + g + R2) >> 1 (1),
H1 = (f + j + R2) >> 1 (2), 및
H2 = (f + g + j + k + R1) >> 2 (3)
이며, 여기에서 R1 및 R2는 특정 프레임에 대한 라운딩 모드를 나타내는 1비트 라운딩 제어 플래그(rounding-control flag)에 의해 제어되는 라운딩 제어값들이다. 라운딩 제어 플래그가 0으로 설정되면, R1 = 2이고, R2 = 1이다. 라운딩 제어 플래그가 1로 설정되면, R1 = R2 = 0 이다. 라운딩 제어 플래그의 값은 각 P 프레임에 대하여 1과 0 사이에서 교대한다. 각 I 프레임에서는, 라운딩 제어 플래그의 값이 0으로 리세트된다. 따라서, 라운딩 제어는 프레임 단위로 작동한다.
식 (1), (2) 및 (3)은 겹선형(bilinear) 보간처리의 예이다. 겹선형 보간처리는 빠르며 픽셀 값을 평활화시키는 경향이 있다. 평활화는 (양자화 노이즈의 감지력을 감소시키는 것과 같은) 바람직한 효과들을 가질 수 있지만, 유효 픽셀 정보의 손실을 초래할 수도 있다.
1/4-픽셀 모션 벡터 해상도에 대하여, WMV8 인코더 또는 디코더는 우선 겹삼차(bicubic) 필터를 이용하여 1/2-픽셀 위치에서의 휘도 픽셀 값을 보간처리한다. 겹삼차 보간처리는 겹선형 보간처리보다는 느리지만, 에지값을 유지하고 유효 픽셀 정보의 손실을 덜 초래하는 경향이 있다. 3개의 별개의 1/2-픽셀 위치들(H0, H1, H2)에 대한 겹삼차 필터는
H0 = (-e + 9f + 9g - h + 8) >> 4 (4),
H1 = (-b + 9f + 9j - n + 8) >> 4 (5), 및
H2 = (-t0 + 9t1 + 9t2 - t3 + 8) >> 4 (6)
이며, t0, t1, t2, t3는 다음과 같이 계산된다.
t0 = (-a + 9b + 9c - d + 8) >> 4 (7)
t1 = (-e + 9f + 9g - h + 8) >> 4 (8)
t2 = (-i + 9j + 9k - l + 8) >> 4 (9), 및
t3 = (-m + 9n + 9o - p + 8) >> 4 (10)
식 (4)~(10)은 입력 값 범위 이외의 출력을 초래할 수 있다. 예컨대, 8비트 입력(범위 0 ... 255)에 대하여, 0 255 255 0의 일련의 값은 식 (4)~(10)의 어디에서도 287의 출력 값을 생성한다. 그래서, WMV8 인코더 또는 디코더는 식 (4)~(10)중 임의의 식의 출력 값을 유효 범위 내에 있도록 클램핑(또는 "클립(clip)")한다. 예컨대, 8비트 출력 값에 대하여, 0보다 작은 값은 0으로 변하고, 255보다 큰 값은 255로 변한다. 클램핑은 범위 문제를 처리하지만, 계산 속도를 느리게 한다. 또한, 클램핑은 정확성의 손실을 초래한다.
WMV8 인코더 또는 디코더는 후속 보간처리 스테이지에서 어느 1/4-픽셀 위치에서의 픽셀 값을 계산한다. 이들 1/4-픽셀 위치는 2개의 1/2-픽셀 위치나 하나의 정수 픽셀 위치와 하나의 1/2-픽셀 위치 사이에 수평으로 위치한다. 이들 1/4-픽셀 위치에 대하여, WMV8 인코더 또는 디코더는 라운딩 제어 없이 2개의 수평 인접 1/2-픽셀/정수 픽셀 위치를 이용하는 겹선형 보간처리(즉, (x + y +1) >> 1)를 이용한다.
일단 휘도 모션 벡터가 계산되면, WMV8 인코더 또는 디코더는 함께 위치하는 색도 모션 벡터를 유도한다. WMV8 내의 색도 평면은 수평 및 수직으로 휘도 평면의 1/2이기 때문에, 휘도 모션 벡터 값들은 적절한 색도 모션 벡터 값들로 스케일링되어야 한다. WMV8에서, 이러한 변환 처리는 휘도 모션 벡터를 반으로 나누고 결과적인 색도 모션 벡터를 1/2-픽셀 정밀도로 라운딩하는 것을 포함한다. 따라서, 1/2-픽셀 정밀도를 갖는 휘도 모션 벡터는 1/4-픽셀 정밀도를 갖는 색도 모션 벡터로 변환되지 않는다. 더욱이, WMV8에서의 색도 라운딩은 사용자에 의해 수정되거나 선택될 수 없는 단일 모드에서 동작한다.
WMV8에서, 기준 프레임의 서브-픽셀 위치에서의 픽셀 값들은 어떤 환경에서는 언더플로우(underflow) 또는 오버플로우(overflow)를 보일 수 있다. 예컨대, 인접하는 정수 픽셀 위치 값이 255이고 인접하는 1/2-픽셀 위치 값이 287(0 + 9*255 + 9*255 - 0 + 8 >> 4 = 287)(255 + 287 + 1 >> 1 = 271)이라면, 1/4-픽셀 위치에서의 휘도 픽셀 값은 (0 ... 255의 범위를 벗어난) 271일 수 있다. 이 문제를 처리하기 위하여, 나머지 블록을 매크로 블록에 대한 예측자에 가산한 후에, WMV8 인코더 및 디코더는 필요하다면 그 매크로 블록에 대한 재구성된 값들을 0 ... 255의 범위내에 있도록 클램핑한다.
WMV8과는 별도로, 몇몇의 국제 규격이 비디오 압축 및 압축해제에 관계하고 있다. 이들 규격은 MPEG(Motion Picture Experts Group) 1, 2 및 4 규격과 ITU(International Telecommunication Union)으로부터의 H.261, H.262 및 H.263 규격을 포함한다. 이들 규격은 이용된 압축 기술의 세부 사항에 있어서 WMV8과는 통 상적으로 상이하지만, WMV8과 같이, 이들 규격도 프레임내 및 프레임간 압축의 조합을 이용한다.
몇몇의 규격(예컨대, MPEG 4 및 H.263)은 겹선형 필터와 기본 라운딩 제어를 이용하는 1/2-픽셀 모션 추정 및 보상을 제공한다. 더욱이, H.263에서는, 이론적으로 1/4-픽셀 해상도(즉, 1/2-픽셀 휘도 모션 벡터의 해상도의 1/2)를 갖는 색도 모션 벡터가 다른 1/2-픽셀 또는 풀(full) 픽셀 정밀도로 라운딩되어, 1/4-픽셀 값들이 색도 공간내에 허용된다. 규격에서의 모션 추정/보상에 대한 추가적인 세부 사항들에 대하여는 규격의 명세(specification) 자체를 참조한다.
모션 추정 및 보상은 효과적인 압축 기술이지만, (WMV8 및 전술한 규격들에서와 같이) 다양한 이전의 모션 추정/보상 기술은 다음과 같은 몇가지 불리함을 갖고 있다.
(1) 기준 프레임 내의 서브-픽셀 위치에서의 픽셀 값들을 계산할 때, 인코더 및 디코더는 불필요하게 중간 값들에서의 정밀도를 잃는다. 예컨대, WMV8에서의 1/4-픽셀 위치에 대한 픽셀 값을 계산할 때, 보다 큰 비트 깊이를 이용할 수 있다는 사실에도 불구하고 1/2-픽셀 위치에서의 중간 값들은 4비트씩 우측으로 시프트된다. 또한, WMV8 인코더/디코더는 1/4-픽셀 위치의 2개 스테이지 보간처리 중에 중간 값들을 클램핑하며, 이것은 계산 속도를 느리게 하고 불필요한 정밀도의 손실을 초래한다.
(2) 1/4-픽셀 모션 추정 및 보상에서의 픽셀 값들에 대한 보간처리는 많은 경우에 비효율적이다. 예컨대, WMV8에서, 1차원 1/4-픽셀 위치의 계산은 겹선형 필터의 이용을 수반하는 1/2-픽셀 위치에 대한 필터의 이용을 요구한다.
(3) 인코더 및 디코더는 다수 스테이지 보간처리에서 발생할 수 있는 라운딩 오차의 축적을 설명하지 못한다. 라운딩 오차는 예컨대 픽셀 값들이 비디오 시퀀스내의 프레임 단위로 라운딩 다운(rounding down)이 반복되는 경우에 발생한다. 이러한 라운딩 오차는 저품질, 저 비트 레이트 비디오 시퀀스내에 상당한 작위적인 결과를 초래할 수 있다. 예컨대, WMV8 인코더 및 디코더가 다수 스테이지의 1/4-픽셀 위치에서의 픽셀 값을 보간처리하는 경우에, 라운딩은 이용되지 않는다. 대신에, 각 스테이지의 결과들이 각각의 보간처리 스테이지에서 동일한 방식으로 (라운딩 제어 없이) 라운딩된다.
(4) 색도 라운딩은 1/4-픽셀 정밀도에 대하여 수행되지 않으며, 색도 모션 벡터 라운딩 선택에 대하여는 어떠한 제어도 수행되지 않는다. 예컨대, WMV8 인코더 및 디코더는 모든 색도 모션 벡터를 1/2-픽셀 값으로 라운딩하고 하나의 모드로만 작동한다.
디지털 비디오에는 모션 추정 및 보상이 대단히 중요하기 때문에, 모션 추정 및 보상이 풍부하게 개발된 분야라는 것은 놀라운 일이 아니다. 그러나, 이전의 모션 추정 및 보상 기술의 이점이 아무리 많다고 해도 다음의 기술 및 툴(tool)의 이점을 갖지 못한다.
요약하면, 다수 스테이지 보간처리에서 라운딩 제어를 위한 다양한 기술과 툴이 상세한 설명에 개시되어 있다. 비디오 코딩 및 디코딩 애플리케이션에서, 예 로서, 비디오 인코더 및 디코더는 다수 스테이지 보간처리에 의해 기준 비디오 프레임에서 픽셀 값을 계산하는 경우에 스테이지-교대 라운딩 제어를 이용한다. 스테이지-교대 라운딩 제어를 이용하면 다수 스테이지 보간처리로부터의 라운딩 오차의 축적을 프레임 단위로 감소시킬 수 있다. 이로써, 임의의 타입의 비디오 시퀀스(예로서, 인터넷에서 스트리밍되는 저품질 저비트레이트의 비디오 시퀀스)에서의 인지가능한 아티팩트를 감소시킴으로써 전체적인 성능을 향상시킬 수 있다.
비디오 인코더 또는 디코더와 같은 구성요소는 스테이지-교대 라운딩 제어를 갖는 다수 스테이지의 보간처리를 이용하여 값을 계산한다. 예를 들면, 제1 스테이지에서, 상술한 구성요소는 제1 마진 값을 제1 방향에서 가장 근접한 정수로 라운딩하고, 제2 스테이지에서, 상술한 구성요소는 제2 마진 값을 제1 방향에 반대 방향인 제2 방향에서 가장 근접한 정수로 라운딩한다. 어떤 경우에는, 라운딩 제어 파라미터가 제1 및 제2 방향을 제어한다. 라운딩 제어 파라미터는 그 자체가 프레임 단위에 기초하여 또는 다른 것에 기초하여 교대할(예로서 0과 1 사이에서) 수도 있다.
이러한 다양한 기술과 툴은 서로 조합되어 또는 독립적으로 이용될 수 있다. 본 발명의 부수적인 특징 및 이점은 첨부된 도면을 참조하여 진행하는 이하의 상세한 설명으로부터 분명하게 될 것이다.
본 발명의 실시예들은 모션 추정 및 보상시에 서브-픽셀 보간처리를 위한 기술 및 툴에 관한 것이다. 몇몇 실시예들은, 보간처리시의 후속 스테이지까지 클래 핑 및/또는 비트 시프팅(정밀도의 손실을 초래할 수 있는 작업)을 지연함으로써 다수 스테이지 보간처리시의 정밀도를 유지하기 위한 기술 및 툴에 관한 것이다. 다른 실시예들은 다수 스테이지 보간처리를 위한 효율적인 필터 또는 라운딩 작업에 관한 것이다.
인코더 또는 디코더는 기준 프레임이나 하나 이상의 블록이나 매크로 블록과 같은 프레임의 일부에 대하여 서브-픽셀 보간처리를 수행한다. 인코더/디코더는 기준 프레임 내에서 서브-픽셀 위치에서의 픽셀 값을 계산한다. 인코더/디코더는 다음에 서브-픽셀 정밀 모션 벡터를 이용하여 모션 보상을 수행할 수도 있다.
일부 실시예에서는, 비디오 인코더 또는 비디오 디코더가 비디오 코딩 또는 디코딩 애플리케이션에서 서브-픽셀 보간처리를 수행한다. 대안적으로, 다른 인코더 또는 디코더, 또는 다른 형태의 컴포넌트가 다른 형태의 애플리케이션에 후술하는 서브-픽셀 보간처리나 다른 기술을 수행한다.
기준 프레임에 대하여 서브-픽셀 보간처리를 수행하는 것에 대한 대안으로서, 일부 실시예에서는, 인코더/디코더는 필드, 오브젝트 층 또는 다른 화상에 대하여 서브-픽셀 보간처리를 수행한다.
일부 실시예에서는, YUV 컬러 공간에서 기준 프레임의 휘도 및 색도 평면에서의 픽셀 값들을 계산함으로써 서브-픽셀 보간이 발생한다. 대안적으로, 이 컬러 공간은 달라진다(예컨대, YIQ 또는 RGB).
다양한 기술 및 툴은 결합되어 또는 독립적으로 이용될 수 있다. 다른 실시예들은 전술한 기술 및 툴의 하나 이상을 수행한다. 이들 기술의 작업들이 표현을 위하여 특정한 연속 순서로 통상적으로 기재되지만, 특정한 순서 배열이 요구되지 않는다면 이런 식의 기재는 작업 순서의 약간의 재배열을 포함하고 있음을 이해해야 한다. 예컨대, 이어서 기재되는 작업들은 어떤 경우에는 재배열되거나 동시에 수행될 수도 있다. 또한, 단순화를 위하여, 플로우차트는 통상적으로 특정한 기술이 다른 기술과 함께 이용될 수 있는 여러 방식을 나타내지는 않는다.
일부 실시예에서, 비디오 인코더 및 디코더는 다양한 플래그 및 신호를 비트스트림에 이용한다. 특정 플래그 및 신호가 기재되지만, 이런 기재 방식이 그 플래그 및 신호에 대한 다른 약속(예컨대, 1이 아닌 0)을 포함하고 있음을 이해해야 한다.
Ⅰ. 계산 환경
도 3은 몇몇 실시예들이 수행될 수 있는 적합한 계산 환경(300)의 일반화된 예를 나타낸다. 상기 기술 및 툴이 다양한 범용 또는 전용 계산 환경에서 수행될 수 있으므로, 계산 환경(300)은 용도나 기능성의 범위에 어떤 제한을 가하려는 의도가 아니다.
도 3을 참조하면, 계산 환경(300)은 적어도 하나의 처리 유닛(310) 및 메모리(320)를 포함한다. 도 3에서, 이러한 가장 기본적인 구성(330)이 점선내에 포함되어 있다. 처리 유닛(310)은 컴퓨터 실행 가능한 명령을 실행하며 실제 또는 가상의 프로세서일 수 있다. 멀티 프로세싱 시스템에서는, 처리능력을 높이기 위하여 다수의 처리 유닛이 컴퓨터 실행 가능한 명령을 실행한다. 메모리(320)는 휘발성 메모리(예컨대, 레지스터, 캐시, RAM), 비휘발성 메모리(예컨대, ROM, EEPROM, 플래시 메모리 등) 또는 이들 둘의 조합일 수 있다. 메모리(320)는 비디오 인코더 및/또는 디코더와 같은 인코더 및/또는 디코더에서 서브-픽셀 보간처리 기술을 수행하는 소프트웨어(380)를 저장한다.
계산 환경은 추가적인 특징을 가질 수도 있다. 예컨대, 계산 환경(300)은 저장 장치(340), 하나 이상의 입력 장치(350), 하나 이상의 출력 장치(360) 및 하나 이상의 통신 접속 장치(370)를 포함한다. 버스, 컨트롤러 또는 네트워크 등의 상호 접속 기구(도시되지 않음)가 계산 환경(300)의 콤포넌트들을 상호 접속한다. 통상적으로, 작동 시스템 소프트웨어(도시되지 않음)는 계산 환경(300)에서 실행되는 다른 소프트웨어를 위한 작동 환경을 제공하며, 계산 환경(300)의 콤포넌트의 활동을 조정한다.
저장 장치(340)는 제거 가능하거나 제거 불가능할 수도 있으며, 자기 디스크, 자기 테이프나 카세트, CD-ROM, DVD 또는 정보를 저장하는데 이용될 수 있고 계산 환경(300) 내에서 액세스될 수 있는 임의의 다른 매체를 포함한다. 저장 장치(340)는 서브-픽셀 보간처리 기술을 수행하는 소프트웨어(380)에 대한 명령을 저장한다.
입력 장치(350)는 키보드, 마우스, 펜 또는 트랙볼(trackball)과 같은 터치형 입력 장치, 음성 입력 장치, 스캐닝 장치, 또는 계산 환경(300)으로의 입력을 제공하는 다른 장치일 수 있다. 오디오 또는 비디오 인코딩에 대하여, 입력 장치(350)는 사운드 카드, 비디오 카드, TV 튜너 카드, 아날로그나 디지털 형식의 오디오 또는 비디오 입력을 수용하는 유사 장치, 또는 오디오나 비디오 샘플을 계 산 환경(300)으로 읽어 들이는 CD-ROM이나 CD-RW일 수도 있다. 출력 장치(360)는 디스플레이, 프린터, 스피커, CD-라이터(writer) 또는 계산 환경(300)으로부터의 출력을 제공하는 다른 장치일 수 있다.
통신 접속 장치(370)는 통신 매체를 통하여 다른 계산 엔티티(entity)로의 통신을 가능하게 한다. 통신 매체는 컴퓨터 실행 가능 명령, 오디오나 비디오 입력 또는 출력, 또는 다른 데이터를 변조된 데이터 신호로 반송한다. 변조된 데이터 신호는 정보를 신호로 인코딩하는 식으로 설정 또는 변경된 하나 이상의 특성을 갖는 신호이다. 제한적이지 않은 예를 들면, 통신 매체는 전기적, 광학적, RF, 적외선, 청각적, 또는 다른 캐리어로 수행되는 유선 또는 무선 기술을 포함한다.
기술 및 툴은 컴퓨터 판독 가능 매체의 일반적인 콘텍스트로 기술될 수 있다. 컴퓨터 판독 가능 매체는 계산 환경내에서 액세스될 수 있는 임의의 이용 가능 매체이다. 제한적이지 않은 예를 들면, 계산 환경(300)에서, 컴퓨터 판독 가능 매체는 메모리(320), 저장 장치(340), 통신 매체 및 이들의 조합을 포함한다.
기술 및 툴은 목적 실제 또는 가상 프로세서 상에서 계산 환경에서 실행되는 프로그램 모듈에 포함된 것들과 같은 컴퓨터 실행 가능 명령의 일반적인 콘텍스트로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정한 태스크를 수행하거나 특정한 추상적인 데이터 형태를 구현하는 루틴, 프로그램, 라이브러리, 오브젝트, 클래스, 콤포넌트, 데이터 구조 등을 포함한다. 프로그램 모듈의 기능성은 여러 실시예들에서 원하는 대로 프로그램 모듈들 사이에서 조합되거나 분할될 수 있다. 프로그램 모듈을 위한 컴퓨터 실행 가능 명령은 국부적인 또는 분포된 계산 환경내 에서 실행될 수 있다.
표현을 위하여, 상세한 설명은 "판정하다" 및 "선택하다" 등의 용어를 이용하여 계산 환경내에서의 컴퓨터 동작들을 설명한다. 이들 용어는 컴퓨터에 의해 수행되는 동작들에 대한 높은 수준의 추상어이며 인간에 의해 수행되는 행위들과 혼동되어서는 안된다. 이들 용어에 대응하는 실제의 컴퓨터 동작들은 구현예에 따라 변화한다.
Ⅱ. 일반화된 비디오 인코더 및 디코더
도 4는 일반화된 비디오 인코더(400)의 블록도이고, 도 5는 일반화된 비디오 디코더(500)의 블록도이다.
인코더 및 디코더 내의 모듈들 사이에서 보여지는 관계들은 인코더 및 디코더에서의 정보의 주요 흐름을 나타내며, 다른 관계들은 단순화를 위하여 도시되어 있지 않다. 특히, 도 4 및 도 5는 보통 비디오 시퀀스, 프레임, 매크로 블록, 블록 등에 이용되는 인코더 설정, 모드, 테이블 등을 지시하는 부수적인 정보를 나타내지는 않는다. 그러한 부수적인 정보는 통상적으로 부수 정보의 엔트로피 인코딩 후에 출력 비트스트림으로 보내진다. 출력 비트스트림의 포맷은 윈도우즈 미디어(Widows Media) 비디오 포맷 또는 다른 포맷일 수 있다.
인코더(400) 및 디코더(500)는 블록 단위이며 4:2:0 매크로 블록 포맷을 이용하고, 각 매크로 블록은 4개의 8×8 휘도 블록(때때로 하나의 16×16 매크로 블록으로서 취급됨) 및 2개의 8×8 색도 블록(예컨대, 하나의 U 블록과 하나의 V 블록)을 포함한다. 대안적으로, 인코더(400) 및 디코더(500)는 오브젝트 단위이며, 다른 매크로 블록이나 블록 포맷을 이용하거나, 또는 8×8 블록 및 16×16 매크로 블록 이외의 크기나 구성의 픽셀들의 집합에 대한 동작을 수행한다.
원하는 압축 타입 및 구현예에 따라, 인코더나 디코더의 모듈이 부가, 생략, 다수의 모듈로의 분할, 다른 모듈과의 결합 및/또는 유사 모듈로의 대체될 수 있다. 대안적인 실시예에서, 다른 모듈 및/또는 모듈의 다른 구성을 갖는 인코더 또는 디코더는 전술한 기술의 하나 이상을 수행한다.
A. 비디오 인코더
도 4는 일반화된 비디오 인코더 시스템(400)의 블록도이다. 인코더 시스템(400)은 현재 프레임(405)을 포함하는 비디오 프레임의 시퀀스를 수신하고, 압축된 비디오 정보(495)를 출력으로서 생성한다. 비디오 인코더의 특정한 실시예들은 통상적으로 일반화된 인코더(400)의 변경 또는 보완된 버전을 이용한다.
인코더 시스템(400)은 예측 프레임(predicted frame) 및 키 프레임(key frame)을 압축한다. 표현을 위하여, 도 4는 인코더 시스템(400)을 통한 키 프레임을 위한 경로 및 앞으로 예측되는 프레임을 위한 경로를 나타낸다. 인코더 시스템(400)의 많은 콤포넌트들은 키 프레임 및 예측 프레임 양자를 압축하는데 이용된다. 이러한 콤포넌트들에 의해 수행되는 정확한 동작들은 압축되는 정보의 타입에 따라 변할 수 있다.
예측 프레임(p 프레임, 양방향 예측을 위한 b 프레임 또는 코드간 프레임이라고도 불림)은 하나 이상의 다른 프레임으로부터의 예측(또는 상이)을 통하여 표현된다. 예측 나머지는 예측된 것과 원래 프레임 사이의 차이이다. 반면에, 키 프레임(i 프레임, 코드내 프레임이라고도 불림)은 다른 프레임의 참조 없이 압축된다.
현재 프레임(405)이 앞으로 예측되는 프레임이라면, 모션 추정자(410)는 매크로 블록 또는 현재 프레임의 다른 집합의 픽셀들의 모션을, 프레임 저장 장치(420)내에 버퍼링(buffering)된 재구성된 선행 프레임(425)인 기준 프레임에 대하여 평가한다. 대안적인 실시예에서, 기준 프레임이 나중 프레임이거나 또는 현재 프레임이 양방향적으로 예측된다. 모션 추정자(410)는 모션 벡터와 같은 모션 정보(415)를 부수 정보로서 출력한다. 모션 보상자(430)는 모션 정보(415)를 재구성된 선행 프레임(425)에 가하여 모션 보상된 현재 프레임(435)을 형성한다. 그러나, 예측은 거의 완벽하지 않고, 모션 보상된 현재 프레임(435)과 원래 현재 프레임(405) 사이의 차이가 예측 나머지(445)이다. 대안적으로, 모션 추정자 및 모션 보상자는 다른 형태의 모션 추정/보상을 적용한다.
주파수 변환기(460)는 공간 도메인 비디오 정보를 주파수 도메인(즉, 스펙트럼) 데이터로 변환한다. 블록 단위의 비디오 프레임에 대하여, 주파수 변환기(460)는 이산 코사인 변환("DCT": Discrete Cosine Transform) 또는 DCT의 변형을 모션 예측 나머지 데이터의 블록에 적용한다. 대안적으로, 주파수 변환기(460)는 푸리에 변환(Fourier Transform)과 같은 다른 종래의 주파수 변환을 적용하거나 웨이브렛(wavelet) 또는 서브밴드(subband) 분석을 이용한다. 일부 실시예에서는, 주파수 변환기(460)는 주파수 변환을 키 프레임에 대한 공간 예측 나머지의 블록들에 적용한다. 주파수 변환기(460)는 8×8, 8×4, 4×8 또는 다른 크 기의 주파수 변환을 적용할 수 있다.
양자화기(470)는 다음에 공간 데이터 계수의 블록들을 양자화한다. 양자화기는 균일한 스칼라 양자화를 프레임 단위를 기초로하여 또는 다른 것을 기초로 하여 변화하는 스텝 사이즈(step-size)를 갖는 스펙트럼 데이터에 적용한다. 대안적으로, 양자화기는 다른 타입의 양자화를 스펙트럼 데이터 계수들, 예컨대 불균일 벡터나 비적응성 양자화에 적용하거나, 또는 주파수 변환을 이용하지 않는 인코더 시스템에서 공간 도메인 데이터를 직접 양자화한다. 적응성 양자화 이외에도, 인코더(400)는 프레임 드로핑(dropping), 적응성 필터링 또는 레이트 제어를 위한 다른 기술들을 이용할 수 있다.
재구성된 현재 프레임이 후속 모션 추정/보상의 필요가 있는 경우, 역양자화기(476)는 양자화된 스펙트럼 데이터 계수들에 대한 역양자화를 수행한다. 역 주파수 변환기(466)는 다음에 주파수 변환기(460)의 역동작을 수행하여, 재구성된 예측 나머지(예측 프레임용) 또는 재구성된 키 프레임을 생성한다. 현재 프레임(405)이 키 프레임이었다면, 재구성된 키 프레임이 재구성된 현재 프레임(도시되지 않음)으로서 취해진다. 현재 프레임(405)이 예측 프레임이었다면, 재구성된 예측 나머지가 모션 보상된 현재 프레임(435)에 가해져서 재구성된 현재 프레임을 형성한다. 프레임 저장 장치(420)는 다음 프레임의 예측에 이용하기 위하여 재구성된 현재 프레임을 버퍼링한다. 일부 실시예에서는, 인코더는 역블로킹(deblocking) 필터를 재구성된 프레임에 적용하여 프레임의 블록들내의 불연속성을 적응성 있게 평활화한다.
엔트로피 코더(entropy coder)(480)는 어떤 부수 정보(예컨대, 모션 정보(415), 양자화 스텝 사이즈) 뿐만 아니라 양자화기(470)의 출력을 압축한다. 통상적인 엔트로피 코딩 기술은 산술 코딩, 미분 코딩, 호프만(huffman) 코딩, 운영 길이(run length) 코딩, LZ 코딩, 사전(dictionary) 코딩 및 이들의 조합을 포함한다. 엔트로피 코더(480)는 통상적으로 다른 종류의 정보(예컨대, DC 계수, AC 계수, 다른 종류의 부수 정보)에 대하여 다른 코딩 기술을 이용하며, 특정 코딩 기술내에서 다수의 코드 테이블중에서 선택할 수 있다.
엔트로피 코더(480)는 압축된 비디오 정보(495)를 버퍼(490)내에 놓는다. 버퍼 레벨 지시자가 비트레이트 적응 모듈로 피드백된다. 압축된 비디오 정보(495)가 버퍼(490)로부터 일정한 또는 상대적으로 일정한 비트레이트로 격감되고, 그 비트레이트로의 후속 스트리밍(streaming)을 위하여 저장된다. 대안적으로, 인코더 시스템(400)은 압축 바로 다음에 압축된 비디오 정보를 스트리밍한다.
버퍼(490)의 앞 또는 뒤에, 압축된 비디오 정보(495)가 네트워크를 통하여 전송을 위하여 채널 코딩될 수 있다. 채널 코딩(channel coding)은 오차 검출 및 정정 데이터를 압축된 비디오 정보(495)에 적용할 수 있다.
B. 비디오 디코더
도 5는 일반화된 비디오 디코더 시스템(500)의 블록도이다. 디코더 시스템(500)은 비디오 프레임의 압축된 시퀀스에 대한 정보(595)를 수신하고 재구성된 프레임(505)을 포함하는 출력을 생성한다. 비디오 디코더의 특정 실시예들은 통상적으로 일반화된 디코더(500)의 변경 또는 보완된 버전을 이용한다.
디코더 시스템(500)은 예측 프레임 및 키 프레임을 압축해제한다. 표현을 위하여, 도 5는 디코더 시스템(500)을 통한 키 프레임을 위한 경로 및 앞으로 예측되는 프레임을 위한 경로를 나타낸다. 디코더 시스템(500)의 많은 콤포넌트들은 키 프레임 및 예측 프레임 양자를 압축해제하는데 이용된다. 이들 콤포넌트에 의해 수행되는 정확한 동작들은 압축되는 정보의 타입에 따라 변할 수 있다.
버퍼(590)는 압축된 비디오 시퀀스에 대한 정보(595)를 수신하고 수신된 정보를 엔트로피 디코더(580)에 이용 가능하게 한다. 버퍼(590)는 통상적으로 시간에 대하여 상당히 일정한 레이트로 정보를 수신하고, 지터 버퍼(jitter buffer)를 포함하여 대역폭이나 전송시의 단기간 변화를 평활화한다. 버퍼(590)는 재생 버퍼 및 이에 더하여 다른 버퍼를 포함할 수 있다. 대안적으로, 버퍼(590)는 변화하는 레이트로 정보를 수신한다. 버퍼(590)의 앞 또는 뒤에서, 압축된 비디오 정보가 채널 코딩되고 오차 검출 및 수정을 위하여 처리될 수 있다.
엔트로피 디코더(580)는 엔트로피 코딩된 부수 정보(예컨대, 모션 정보(515), 양자화 스텝 사이즈)뿐만 아니라 엔트로피 코딩된 양자화된 데이터를 엔트로피 디코딩하며, 통상적으로 인코더에서 수행된 엔트로피 인코딩의 역을 적용한다. 엔트로피 디코딩 기술은 산술 디코딩, 미분 디코딩, 호프만(Huffman) 디코딩, 운영 길이 디코딩, LZ 디코딩, 사전 디코딩 및 이들의 조합을 포함한다. 엔트로피 디코더(580)는 종종 다른 종류의 정보(예컨대, DC 계수, AC 계수, 다른 종류의 부수 정보)에 대하여 다른 디코딩 기술을 이용하며, 특정 디코딩 기술 내에서 다수의 코드 표중에서 선택할 수 있다.
재구성되는 프레임(505)이 앞으로 예측되는 프레임이라면, 모션 보상기(530)는 기준 프레임(525)에 대하여 모션 정보(515)를 적용하여 재구성되는 프레임(505)의 예측(535)을 형성한다. 예컨대, 모션 보상기(530)는 매크로 블록 벡터를 이용하여 기준 프레임(525)내의 매크로 블록을 찾는다. 프레임 버퍼(520)는 기준 프레임으로서의 이용을 위하여 미리 재구성된 프레임을 기억한다. 대안적으로, 모션 보상기는 다른 타입의 모션 보상을 적용한다. 모션 보상기에 의한 예측은 거의 완벽하지 않으며, 그래서 디코더(500)도 또한 예측 나머지를 재구성한다.
디코더가 후속 모션 보상을 위하여 재구성된 프레임을 필요로 하는 경우에, 프레임 저장 장치(520)는 다음 프레임의 예측시의 이용을 위하여 재구성된 프레임을 버퍼링한다. 일부 실시예에서는, 인코더가 역블로킹 필터(deblocking filter)를 재구성된 프레임에 적용하여 프레임의 블록에서의 불연속성을 적응성 있게 평활화한다.
역 양자화기(570)는 엔트로피 디코딩된 데이터를 역양자화한다. 일반적으로, 역 양자화기는 균일한 스칼라 역양자화를 프레임 단위의 기초로 하여 또는 다른것을 기초로하여 변화하는 스텝 사이즈를 갖는 엔트로피 디코딩된 데이터에 적용한다. 대안적으로, 역 양자화기는 다른 타입의 양자화를 데이터, 예컨대 불균일 벡터나 비적응성 양자화에 적용하거나, 또는 역 주파수 변환을 이용하지 않는 디코더 시스템에서 공간 도메인 데이터를 직접 역양자화한다.
역 주파수 변환기(560)는 양자화된 주파수 도메인 데이터를 공간 도메인 비디오 정보로 변환한다. 블록 단위의 비디오 프레임에 대하여, 역 주파수 변환기(560)는 역 DCT("IDCT") 또는 IDCT의 변형을 DCT 계수들의 블록에 적용하고, 모션 예측 나머지 데이터를 생성한다. 대안적으로, 주파수 변환기(560)는 푸리에 변환(Fourier Transform)과 같은 다른 종래의 역 주파수 변환을 적용하거나 웨이브렛 또는 서브밴드 합성을 이용한다. 일부 실시예에서는, 역 주파수 변환기(560)는 역 주파수 변환을 키 프레임을 위한 공간 예측 나머지의 블록들에 적용한다. 역 주파수 변환기(560)는 8×8, 8×4, 4×8 또는 다른 크기의 역 주파수 변환을 적용할 수 있다.
Ⅲ. 모션 추정 및 보상
프레임간 코딩은 프레임간의 시간적인 여분을 이용하여 압축을 달성한다. 시간적인 여분 감소는 현재 프레임을 코딩할 때의 예측자로서 이전에 코딩된 프레임을 이용한다. 이하의 실시예에서는, 보다 작은 비트수를 이용하여 정보를 코딩하기 위하여 비디오 인코더가 통상적인 비디오 시퀀스내의 시간적인 여분을 이용한다. 비디오 인코더는 모션 추정을 이용하여 블록, 매크로 블록 또는 예측된 프레임의 다른 픽셀 세트의 모션을 기준 프레임(예컨대, 이전 코딩된 이전 프레임)에 대하여 파라미터화한다. (대응하는 디코더 뿐만 아니라) 비디오 인코더도 모션 보상을 이용하여 모션 정보를 이용하는 예측 프레임 및 기준 프레임을 재구성한다.
모션 보상은 기준 프레임을 변위시킴으로써 비디오 프레임(즉, 예측 프레임)에 대한 예측을 생성하는 처리이다. 전술한 바와 같이, 예측은 블록, 매크로 블록 또는 기준 프레임으로부터의 다른 데이터 세트에 대하여 형성된다. 또한, 통상적으로 변위는 직선적이며 예측되는 전체 타일(tile)에 대하여 일정하다. 이러한 변 위는 X 및 Y 방향을 따른 변위 또는 시프트에 대응하는 2개의 성분을 갖는 모션 벡터에 의해 정의된다. X(수평) 및 Y(수직) 모션 벡터 성분들은 현재 예측된 타일과 기준 프레임내의 대응하는 위치 사이의 변위를 나타낸다. 양의 값들은 현재 위치의 우측 하부의 위치를 나타낸다. 음의 값들은 현재 위치의 좌측 상부의 위치를 나타낸다.
일 구현예에서, 블록은 8×8 픽셀 타일이고, 매크로 블록은 16×16 픽셀 타일이며, 모션 벡터는 1/4-픽셀 정밀도로 정의된다. 다른 구현예에서는, 인코더 및 디코더는 전술한 하나 이상의 기술을 다른 해상도나 임의로 변하는 모션 벡터 및/또는 모션 벡터와는 다른 모션 정보를 이용하여 다른 크기의 타일 또는 임의로 변하는 크기의 타일에 적용한다.
모션 벡터 성분은 통상적으로 픽셀 변위를 통하여 종종 서브-픽셀 정밀도로 특정된다. 적절하게 정의된 모션 보상 필터를 이용하여 기준 프레임을 필터링함으로써 서브-픽셀 변위가 실현된다. 직선 서브-픽셀 모션 보상의 경우에, X 및 Y 성분은 고정 포인트 수치로서 표현된다. 이들 수치의 정수 부분은 풀-픽셀 시프트라고 불리며 소수 부분은 서브-픽셀 시프트라고 불린다. 서브-픽셀 시프트가 0인 경우에, 모션은 정수 픽셀이다. 가장 흔하게는, 이것은 기준 프레임으로부터의 블록 카피(block copy)로서 구현되어 예측자를 생성한다(이론적으로는 필터링의 일부 형식이 잠재적으로 적용될 수 있지만). 한편, 서브-픽셀 시프트가 0이 아닌 경우에, 기준 프레임의 정수 픽셀 위치로의 서브-픽셀 시프트에 대응하는 하나 이상의 필터를 적용함으로써 예측자가 생성된다. 따라서, 모션 보상 필터는 서브-픽셀 시프트 에 의해 정해진다.
서브-픽셀 시프트를 필터링 동작으로서 구현하기 위하여, 모션 보상 필터는 정수 픽셀 위치에서의 기준값에 기초하여 소수 픽셀 위치에서의 데이터 포인트를 보간처리한다. 일반적으로, 보간처리의 품질은 필터의 지원에 따라 증가한다. 일부 실시예는 겹선형 및 겹삼차 보간자에 대응하는 (각 방향으로) 분리가능한 2탭 및 4탭 필터를 이용한다.
일부 실시예에서는, 모션 보상 필터는 비트 시프트로서 구현된 정수 산술 및 분할을 이용한다. 라운딩 제어 파라미터 R은 0 또는 1의 값을 취하며 이들 분할에 대한 라운딩의 방향을 결정한다. 이 라운딩 제어 파라미터는 외부적으로 나타나는 상수로 설정되거나 또는 과거에 코딩된 정보로부터 내재적으로 유도될 수도 있다.
도 6은 일부 실시예에 서브-픽셀 모션 추정 및 보상 중에 이용된 기준 프레임(600)내의 정수 픽셀 및 서브-픽셀 위치를 나타낸다. 기준 프레임(600)은, 각 방향의 1/4-픽셀 간격으로, 인코더 또는 디코더가 특정 변위에 대한 픽셀 값을 보간처리할 수 있는 서브-픽셀 위치를 포함한다. 기준 프레임(600)의 정수 위치들(a 내지 p)이 도 6의 어두운 원으로서 나타나는 반면, 정수 위치들 사이에 개재된 1/4-픽셀 및 1/2-픽셀 위치들은 어둡지 않은 원으로서 나타나 있다. 위치들 P0 내지 P8은 표 1에 나타낸 바와 같이 9개의 대표적인 서브-픽셀 위치를 나타낸다.
표 1: 대표적인 서브-픽셀 위치들
위치 설명
P0 1/4-픽셀 수평, 풀-픽셀 수직
P1 1/2-픽셀 수평, 풀-픽셀 수직
P2 풀-픽셀 수평, 1/4-픽셀 수직
P3 1/4-픽셀 수평, 1/4-픽셀 수직
P4 1/2-픽셀 수평, 1/4-픽셀 수직
P5 풀-픽셀 수평, 1/2-픽셀 수직
P6 1/4-픽셀 수평, 1/2-픽셀 수직
P7 1/2-픽셀 수평, 1/2-픽셀 수직
P8 풀-픽셀 수평, 3/4-픽셀 수직
P8에 예시된 3/4-픽셀 위치는 1/4-픽셀 위치의 특별한 경우로 생각될 수 있다. 즉, 풀-픽셀 위치로부터의 1/4-픽셀 시프트이다. 다른 3/4-픽셀 위치들도 가능하지만 나타나 있지는 않다. 서브-픽셀 위치들 P0 내지 P8은 보간처리 필터에 대한 나중의 설명에서 참조된다. 대안적인 실시예에서, 인코더 및 디코더는 추가적인 또는 다른 서브-픽셀 위치, 예컨대 각 방향의 1/4-픽셀 이외의 간격의 위치에서의 값들을 보간처리한다.
A. 근사 겹삼차 보간처리 필터
일부 실시예에서의 서브-픽셀 보간처리를 위하여, 비디오 인코더 및 디코더는 다음과 같이 정의되는 선형(linear)/겹선형(bilinear) 필터 및/또는 삼차(cubic)/겹삼차(bicubic) 필터를 이용한다.
선형 보간자는 보간처리되는 포인트에 가장 가까운 2개의 격자 포인트에서의 알려진 값들을 이용하는 1차원의 선형 또는 1차 다항식이다. 보간처리되는 포인트에서의 선형 함수의 값이 선형 보간이다. 선형 시스템의 방정식을 풂으로써 선형 다항식의 곱들이 계산되어 선형 필터의 계수를 결정한다. 선형 보간자 필터는 2개의 필터 탭(tap)에 의해 정의된다. 겹선형 보간자는 2차원으로 분리가능한 선형 보간자이다.
삼차(cubic) 보간자는 보간처리되는 격자 포인트에 가장 가까운 4개의 포인트에서의 알려진 값들을 이용하는 1차원의 삼차 또는 3차 다항식이다. 보간처리되는 삼차 함수의 값이 삼차 보간이다. 시스템의 방정식을 풂으로써 삼차 다항식의 곱들이 계산되어 삼차 필터의 계수들을 결정한다. 삼차 보간자 필터는 4개의 필터 탭에 의해 정의된다. 겹삼차 보간자는 2차원으로 분리가능한 삼차 보간자이다.
선형 및 겹선형이라는 용어는 통상적으로 비디오 압축 및 압축해제 분야에서 상호 교환적으로 이용된다. 정상적인 2차원 보간처리에서, 1차원에서 수행된 보간처리 동작이 다른 차원에서 복제되며, 그래서 각 필터링 스테이지는 겹선형 필터링이라 불린다. 삼차 및 겹삼차라는 용어도 유사하게 상호 교환적이다.
이 명세서에서, 선형 및 겹선형이라는 용어는 1, 2 또는 그 이상의 차원에서의 필터링을 설명하는데 상호 교환적으로 이용된다. 이와 유사하게, 삼차 및 겹삼차라는 용어도 1, 2 또는 그 이상의 차원에서의 필터링을 설명하는데 상호 교환적으로 이용된다. 예컨대, 식 (11) 내지 (13)은 삼차 필터의 타입을 정의하지만, 기준 비디오 프레임에 대한 2스테이지 보간처리의 통상적인 적용시에 2스테이지 보간처리의 양 차원에 대하여 복제된 동작에 그 필터들이 이용되기 때문에 겹삼차 필터라고 불린다. 보다 일반적으로는, 필터링의 차원성은 콘텍스트로부터 알려진다.
일부 실시예에서는, 인코더 및 디코더가 서브-픽셀 위치에서의 값들을 보간처리하기 위하여 근사 겹삼차 필터를 이용한다. 예컨대, 인코더 및 디코더는 도 6에 나타낸 바와 같은 기준 프레임에서의 가능한 시프트 위치에서 다음과 같은 필터(그 F1이 겹삼차 필터이고 F2 및 F3이 근사 겹삼차 필터임)를 이용한다.
1/2-픽셀 시프트 F1: [-1 9 9 -1] (11)
1/4-픽셀 시프트 F2: [-4 53 18 -3] (12)
3/4-픽셀 시프트 F3: [-3 18 53 -4] (13)
실제로, 이 필터들도 필터 계수에 의해 잠재적으로 도입된 팽창을 보상하기 위하여 우측 시프트(예컨대, F1에 대하여 4비트, F2 및 F3에 대하여 6비트)를 포함한다. 연산자 >>는 우측 시프트 연산자이다. 우측 시프트 동작은 이진수의 비트를 우측으로 시프트하여 최하위 비트를 버리고 0을 최상위 비트로서 가산한다. 이 동작은 나머지를 버린 채 시프트된 비트 수의 거듭제곱(예컨대, 3만큼의 우측 시프트는 23=8 만큼의 분할을 초래함)에 대하여 2에 의한 간단한 분할을 초래한다.
F2 및 F3의 필터 계수들은 4탭 필터인 실제의 1/4-픽셀 겹삼차 보간자에 느슨하게 기초하고 있다. 다음 식은 위치 P0에 대하여 실제의 1/4-픽셀 겹삼차 필터를 적용한 결과를 나타낸다.
(-7e + 105f + 35g - 5h) >> 7 (14)
계수 값들의 합은 128이고 필터링의 결과는 7비트만큼 우측으로 시프트된다. 근사한 겹삼차 필터(F2, F3)는 성능면에서는 순 겹삼차 필터에 근사하지만 다음 식에 나타낸 바와 같이 낮은 해상도를 갖는다.
(-7e + 105f + 35g - 5h) >> 7
= (-3.5e + 52.5f + 17.5g - 2.5h) >> 6
≒ (-4e + 53f + 18g - 3h) >> 6 (15)
많은 경우에, 순 겹삼차 필터를 이용하면 다수 스테이지 보간처리시에 정밀도의 비트 손실이 생기고, 그래서 근사 겹삼차 필터에 대한 정규화 인자가 적어도 1/2만큼 감소한다(즉, 우측 시프트가 1비트 이상 감소한다). 식 (15)의 근사 겹삼차 필터용으로 선택된 필터 계수들은, (예컨대 고주파 정보를 보존하기 위한) 주파수 도메인 행동(frequency domain behavior) 및 (예컨대, 어떤 비트레이트로 주어진 최저 왜곡을 달성하기 위한) 경험적 행동을 고려한 후에, 실제 겹삼차 필터의 라운딩에 기초하고 있다. 상세하게는, 필터 F2 및 F3는 여전히 4개의 필터 계수를 포함하고 있다(일반적으로, 필터에 보다 적은 수의 필터 계수를 이용하는 것은 실행 속도를 높이지만, 인접 픽셀내의 노이즈를 처리하기 위하여 충분한 필터 계수들이 이용되어야 한다). 필터 계수 값들은 합이 64가 되도록 조절되며, 이것은 보다 높은 해상도의 겹삼차 필터를 근사하는 동안 16 비트 산술을 이용하여 실행을 용이하게 한다. 여전히 겹삼차 필터를 근사하는 동안 합이 64인 다른 필터 계수 값들도 이용될 수 있다. 실질적으로 순 겹삼차 필터와 유사하게 작용하지만 보다 적은 지원 및/또는 보다 낮은 해상도를 갖는 필터는 "근사" 겹삼차 필터라 불린다. 필터가 실제로 순 겹삼차 필터와 유사한 작용을 하는지를 객관적으로 측정하는 한 방법은 근사 필터가 순 겹삼차 필터와 잘 상관하고 있는지(즉, 정의된 임계치 내에 있는지)를 점검하는 것이다. 일 구현예에서는, (가능한 한 1에 가까울 것이 요구되는) 필터에 대한 벡터들간의 각도의 코사인에 의해 상관이 측정되며, 임계치는 0.95이다. 다른 객관적인 또는 주관적인 측정, 다른 상관 측정 및/또는 임계치들도 이용될 수 있다. 예컨대, 합계가 효율적인 푸리에 변환이나 다른 수학 처리를 용이하게 하는 일부 다른 값이 되도록 근사 겹삼차 필터의 필터 계수들이 선택될 수도 있다.
이하에 보다 충분하게 설명되는 바와 같이, 도 7은 일반적으로 식 (11) 내지 (13)에서 윤곽이 잡혀진 겹삼차 필터에 대응하는 각 경우에 대한 보간처리된 픽셀을 계산하는데 이용되는 픽셀 값을 갖는 정수 픽셀을 나타낸다. P는 픽셀 값이 계산되는 서브-픽셀 위치를 나타낸다. l1, l2, l3 및 l4는 보간처리의 차원을 따른 정수 픽셀 위치들을 나타낸다. 도 7은 수평 보간처리이지만 동일한 동작 및 위치 배열이 수직 보간처리에도 적용된다.
대안적인 실시예에서, 인코더 및 디코더는 다른 및/또는 추가적인 보간처리 필터를 이용한다. 예컨대, 인코더 및 디코더는 겹선형(즉, 2탭) 필터를 이용하여 값을 보간처리한다. 예컨대, 도 6의 서브-픽셀 위치를 참조하면, P1, P5 및 P7 의 값을 결정하는데 이용되는 보간처리 필터들은 식 (1) 내지 (3)에 나타낸 필터들일 수도 있다.
B. 1차원 보간처리
여러 서브-픽셀 위치들에 대하여, 일부 실시예의 인코더 및 디코더는 오직 1 차원에서만 보간처리된 값을 계산한다. 도 7에 나타낸 바와 같이, 다음 식들은 정수 픽셀들간의 보간처리시에 필터 F1(1/2-픽셀 시프트), F2(1/4-픽셀 시프트) 및 F3(3/4-픽셀 시프트)의 동작을 나타낸다.
F1 : (-1l1 + 9l2 + 9l3 - 1l4 + 8 - r) >> 4 (16)
F2 : (-4l1 + 53l2 + 18l3 - 3l4 + 32 - r) >> 6 (17)
F3 : (-3l1 + 18l2 + 53l3 - 4l4 + 32 - r) >> 6 (18)
여기서, 값 r이 라운딩을 제어한다. 값 r은 다음과 같이 이진 프레임 레벨 라운딩 제어 파라미터 R과 보간처리 방향에 좌우된다.
r = 1-R (수직 방향),
R (수평 방향) (19)
1차원 보간처리를 더 설명하기 위하여, 도 6의 P1 및 P5는 1차원(즉, P1에 대하여는 수평 방향 및 P5에 대하여는 수직 방향)에서만 보간처리를 요구하는 기준 프레임(600)에서의 1/2-픽셀 위치들을 나타낸다. 다음 식들은 P1 및 P5에 대한 정수 픽셀간의 보간처리시에 필터 F1의 동작(1/2-픽셀 시프트)을 나타낸다.
P1 = (-1e + 9f + 9g - 1h + 8 - r) >> 4 (20)
P5 = (-1b + 9f + 9j- 1n + 8 - r) >> 4 (21)
이와 유사하게, 도 6의 P0 및 P2는 1차원에서만 보간처리를 요구하는 기준 프레임(600)내의 1/4-픽셀 위치를 나타낸다. 다음 식들은 P0 및 P2에 대한 정수 픽셀간의 보간처리시에 필터 F2의 동작(1/4-픽셀 시프트)을 나타낸다.
P0 = (-4e + 53f + 18g - 3h + 32 - r) >> 6 (22)
P2 = (-4b + 53f + 18j - 3n + 32 - r) >> 6 (23)
3/4-픽셀 위치를 계산하기 위하여 근사 1/4-픽셀 겹삼차 필터 F2도 작은 수정만으로 이용될 수 있다. 예컨대, 다음 식은 P8에 대한 정수 픽셀간의 보간처리시에 필터 F3의 동작(3/4-픽셀 시프트)을 나타낸다.
P8 = (-3b + 18f + 53j - 4n + 32-r) >> 6 (24)
대안적으로, 인코더 및 디코더는 1차원에서 1/2-픽셀, 1/4-픽셀 또는 3/4-픽셀 시프트된 위치에 대한 다른 및/또는 추가적인 보간처리 필터를 이용한다. 예컨대, 인코더 및 디코더는 많거나 적은 필터 계수들, 다른 필터 계수들, 다른 라운딩을 갖는 또는 라운딩 없는 필터를 이용한다.
C. 다차원 보간처리
일부 실시예에서, 2차원으로 오프셋되는 서브-픽셀 위치에 대한 보간처리가 수행된다. 도 6에서, 예컨대 P3, P4, P6 및 P7은 수평 및 수직의 양 차원에서 보간처리가 일어나는 위치들이다.
도 8에 나타낸 보간처리 방법(800)에 대응하는 일 실시예에서, 2차원 서브-픽셀 위치들이 먼저 수직 방향을 따라 보간처리되고 다음에 수평 방향을 따라 보간처리된다. 이하에 보다 자세하게 설명하는 바와 같이, 식 (16) 내지 (18)에서 상술한 필터들 F1, F2 또는 F3의 하나 이상을 이용하여 보간처리가 수행된다. 도 8에 나타낸 실시예에서, 수직 필터링 및 수평 필터링 후에 라운딩이 적용된다. 라운딩 규칙에서의 비트 시프트는 중간 결과에서 16비트 산술에 의해 허용된 정밀도의 유지를 보장한다.
도 8에서, 먼저 수직 필터링이 수행되고 다음에 수평 필터링이 수행된다. 수직 필터링으로 시작하는 것은 일부 구조에서의 성능을 향상시킨다. 다른 실시예에서는, 필터링의 순서가 달라진다. 예컨대, 수직 방향에 앞서 수평 방향으로 보간처리가 수행된다. 또는, 보간처리 필터의 여러 다른 조합들이 이용된다(예컨대, 다수 수평 및/또는 다수 수직 필터 등).
입력 및 출력 픽셀 값들(811, 838)은 8비트의 비트 깊이를 가지며, 256 값들의 동적 범위를 갖는다. 중간 값들(820)은 65,536 값들을 갖는 동적 범위에 대하여 16비트의 비트 깊이를 갖는다. 대안적인 실시예에서, 입력, 출력 및 중간 값들은 다른 비트 깊이(예컨대, 더 큼)를 갖는다.
제1 스테이지(810)에서, 적합한 수직 필터(FV)가 8비트 입력 픽셀 값(들)(811)에 적용된다(812). 적용된 수직 필터는 선택된 서브-픽셀 위치가 1/4-픽셀, 1/2-픽셀 또는 3/4-픽셀만큼 시프트되는지에 좌우되며, 전술한 겹삼차 필터 들중 하나의 형태를 가질 수도 있다.
수직 필터링 후의 라운딩 규칙은 다음과 같이 정의된다.
(S + RV) >> shiftV (25)
여기서, S는 수직 필터링된 결과이며 RV = 2 shift V-1 - 1 + R이다. R은 프레임단위를 기초로 하여 0과 1 사이의 값을 교대로 취하는 라운딩 제어 값이다. 따라서, 라운딩 규칙은 스테이지-교대 라운딩 제어(813) 및 비트 시프트(814)를 갖는 라운딩을 포함한다.
우측 시프트는 잠재적으로 해상도의 손실을 초래하며, 그래서 우측 시프트의 적어도 일부는 나중 스테이지의 보간처리까지 지연된다. shiftV에 대한 우측 시프트 값은 보간처리되는 서브-픽셀 위치에 좌우된다. 상세하게는, P3, P4, P6 및 P7에 대한 shiftV = [5, 3, 3, 1]이다. 시프트 양은 제1 스테이지 계수 값들로 인한 팽창을 보상하는데 요구되는 것보다는 작지만(예컨대, 시프트는 근사 겹삼차 필터에 대한 6비트보다 작다), 후속 필터링의 중간 값이 중간 값들(예컨대, 16비트 워드들에 대한 65,536개의 가능 값들)의 동적 범위내에 있음을 보장하기에는 충분하다. 풀 시프트에 비하여, 이러한 감소된 시프트는 제1 스테이지(810)의 보간처리 후에 중간 픽셀 값들(820)의 정밀도를 유지한다. 중간 픽셀 값들(820)은 y비트의 동적 범위를 가지며, 여기서 y는 8비트 보다 크다. 제1 스테이지에서 수행된 시프트의 양은 이용 가능한 비트 깊이 및 보간처리 필터의 계수들에 좌우된다. 예컨대, 여기서 기술한 예시적인 보간처리에서는, 중간 값들은 16비트의 워드 한계에 제한된 다.
도 6의 포인트 P3 및 0 ... 255 범위(8비트)의 입력 값들을 고려한다. 근사 겹삼차 필터 계수들[-4 53 18 -3]의 8비트 입력 값들로의 적용으로부터의 중간 값들의 범위는 필터 계수들로부터의 팽창 인자 때문에 -1785 내지 18,105 (보간처리를 위하여 15비트로 라운딩 업(rounding up)되는 약 14.3비트)이다. (추가적인 팽창을 갖는) 근사 겹삼차 필터 계수들을 중간 값들에 적용하는 후속 수평 필터링은 16비트 동적 범위 이외의 값들을 생성하여 오버플로우를 초래할 수도 있다. 그래서, 중간 값들은 후속 수평 필터링이 16비트 동적 범위내의 값을 생성하는 것을 보장하기에 충분하도록 시프트된다. P3에 대하여, 제1 시프트 양은 5비트이고, 시프트된 중간 값들의 동적 범위는 -55 내지 565 (보간처리를 위하여 10비트로 라운딩 업되는 대략 9.3비트)이다. 근사 겹삼차 필터 계수들의 시프트된 중간 값들로의 적용으로부터의 출력 범위는 -7,860 내지 40,500이며 16비트보다 작은 동적 범위를 갖는다. 따라서, 감소된 시프트는 16비트 워드 한계가 완전히 이용되도록 계산되지만 제2 보간처리(830) 중에 초과되지 않도록 보장된다.
제2 스테이지(830)에서, 적합한 수평 필터(FH)가 수직 필터에 의해 정해진 값들(820)로부터 2차원 서브-픽셀 위치에서의 값을 보간처리하는데 적용된다(832). 수평 필터링 후의 라운딩 규칙은 다음과 같다.
(S + 64 - R) >> 7 (26)
여기서 S는 수평 필터링된 결과이고 R은 프레임 단위를 기초로 교대로 취해 지는 라운딩 제어 값이다. 제1 스테이지 라운딩 규칙과 같이, 제2 스테이지 라운딩 규칙은 스테이지-교대 라운딩 제어(833)와 비트 시프트(834)를 갖는 라운딩을 포함한다. 제1 스테이지에서의 지연된 시프트 때문에, 제2 스테이지에서의 시프트의 양은 통상적으로 선택된 수평 필터에 대하여 정상적으로 기대되는 것을 초과하며 원하는 동적 범위를 갖는 값을 출력하도록 계산된다.
겹삼차 필터링의 모든 경우들은 그 값이 음이거나 또는 그 값이 그 범위의 최대값보다 큰 (예컨대, 8비트 출력에 대하여 255) 보간처리된 픽셀을 잠재적으로 생성할 수 있다. 이런 경우에, 8비트 출력 값들, 인코더 및 디코더는 출력 값(836)을 허용된 범위내에 있도록 유지한다. 특히, 언더플로우가 0으로 설정되고 오버플로우가 255로 설정된다. 클램핑 후에 보간처리된 8비트 값(838)이 출력된다.
도 8에서 제2 스테이지 시프트는 7비트이다. 따라서, 9비트를 갖는 필터링된 출력 값이 유지된다. 예컨대, P3에 대하여 이전의 예를 계속하면, 필터링된 출력 값의 범위는 -61 내지 316이며 (보간처리를 위하여 9비트로 라운딩 업되는) 대략 8.6비트의 동적 범위를 갖는다. 보간처리된 데이터의 유효 범위는 8비트일 뿐이지만, 위쪽의(headroom) 여분의 1비트가 오버플로우 및 언더플로우 정보를 제공한다. 바꿔 말하자면, 최상위 비트(즉, "부호" 비트)가 설정되면, 언더플로우나 오버플로우가 있다. 상세하게는 둘중의 어느 것이 발생했는가는 나머지 8개의 "맨티사(mantissa)" 비트를 살펴봄으로써 유추될 수 있다.
도 9 내지 도 11은 도 8에 도시된 상술한 이차원 보간처리를 더욱 상세히 도시한다. 도 9는 도 6의 기준 프레임(600)의 서브-픽셀 위치 P7 (1/2-픽셀 수평, 1/2-픽셀 수직)를 도시한다. 2개의 1/2-픽셀 겹삼차 보간처리 필터가 P7의 값을 보간처리하는 데에 이용된다. 제1 스테이지에서, 중간 값 V1 - V4 가 다음과 같은 일반형을 가진 1/2-픽셀 겹삼차 필터를 이용하여 근접한 정수 픽셀 위치로부터 계산된다.
Vinter = (-1x1 + 9x2 + 9x3 - 1x4) (27)
그래서,
V1 = (-1a + 9e + 9i - 1m) (28)
V2 = (-1b + 9f + 9j - 1n) (29)
V3 = (-1c + 9g + 9k - 1o) (30)
V4 = (-1d + 9h + 9l - 1p) (31)
Rv의 근사 값이 가산된 후에, 그 결과는 1비트만큼 우측으로 시프트된다. 제2 스테이지에서, 중간 값 V1 - V4 가 P7의 픽셀 값을 계산하기 위해 1/2-픽셀 필터에 의해 이용된다. 특히, 다음과 같은 형태를 가진 1/2-픽셀 필터가 이용된다.
P7 = (-1V1 + 9V2 + 9V3 - 1V4) (32)
전술한 바와 같이, 제2 스테이지의 결과는 9-비트 값을 얻기 위해 7개 비트 만큼 우측으로 시프트된다. 9-비트 값은 8개의 맨티사 비트와 1개의 부호 비트를 포함한다. 오버플로우 또는 언더플로우를 보상하기 위해 어떤 필요한 클램핑이 수행된 후, 최종의 8-비트 보간처리된 값이 출력된다.
도 10은 도 6의 기준 프레임(600)의 서브-픽셀 위치 P4 (1/2-픽셀 수평, 1/4-픽셀 수직)를 도시한다. 1/4-픽셀 및 1/2-픽셀 겹삼차 보간처리 필터가 P4의 값을 보간처리하는데에 이용된다. 제1 스테이지에서, 중간 값 V1 - V4 가 다음과 같은 일반 형을 가진 1/4-픽셀 겹삼차 필터를 이용하여 근접한 정수 픽셀 위치로부터 계산된다.
Vinter = (-4x1 + 53x2 + 18x3 - 3x4) (33)
이 필터는 P7을 계산하는 것과 관련하여 상술한 바와 같은 방식으로 기준 프레임(600)의 정수 픽셀 값에 인가된다. Rv의 적절한 근사 값이 가산된 후에, 그 결과는 3비트만큼 우측으로 시프트된다. 제2 스테이지에서, 중간 값 V1 - V4 가 P4 의 픽셀 값을 계산하기 위해 1/2-픽셀 필터에 의해 이용된다. 특히, 다음과 같은 형태를 가진 1/2-픽셀 필터가 이용된다.
P4 = (-1V1 + 9V2 + 9V3 - 1V4) (34)
제2 스테이지의 결과는 9-비트 값을 얻기 위해 7개 비트만큼 우측으로 시프트되고, 어떤 필요한 클램핑이 수행되고, 최종의 8-비트 보간처리된 값이 출력된다.
도 10은 또한 서브-픽셀 위치 P6 (1/4-픽셀 수평, 1/2-픽셀 수직)를 도시한다. P6의 값을 보간처리하기 위해, P4의 보간처리를 위한 기술이 약간만 변형되어 이용된다. 이 변형된 기술에서, 1/2-픽셀 겹삼차 필터가 중간 값을 결정하기 위해 제1 스테이지에서 이용된다. 중간 픽셀 위치는 도 10에서 V5 - V8 에 도시되어 있다. 제2 스테이지 동안에, P6의 값을 계산하기 위해 1/4-픽셀 겹삼차 필터가 중간 값을 이용한다. 특히, 다음과 같은 형태를 가진 1/4-픽셀 겹삼차 필터가 이용된다.
P6= (-4V5 + 53V6 + 18V7 - 3V8) (35)
제1 및 제2 스테이지에서의 시프팅 량은 P4를 계산하기 위한 기술에서와 동일하다(즉, 제1 스테이지 시프트는 3이고, 제2 스테이지 시프트는 7임).
도 11은 도 6의 기준 프레임(600)의 서브-픽셀 위치 P3 (1/4-픽셀 수평, 1/4-픽셀 수직)를 도시한다. 2개의 1/4-픽셀 겹삼차 보간처리 필터가 P3의 값을 보간처리하는데에 이용된다. 제1 스테이지에서, 중간 값 V1 - V4 가 다음과 같은 일반 형을 가진 1/4-픽셀 겹삼차 필터를 이용하여 근접한 정수 픽셀 위치로부터 계산된다.
Vinter = (-4x1 + 53x2 + 18x3 - 3x4) (36)
이 필터는 P4을 계산하는 것과 관련된 상술한 바와 같은 방식으로 기준 프레 임(600)의 정수 픽셀 값에 인가된다. Rv의 적절한 근사 값이 가산된 후에, 그 결과는 5비트만큼 우측으로 시프트된다. 제2 스테이지에서, 중간 값 V1 - V4 가 P3 의 픽셀 값을 계산하기 위해 다른 1/4-픽셀 필터에 의해 이용된다. 특히, 다음과 같은 형태를 가진 1/4-픽셀 필터가 이용된다.
P3 = (-4V1 + 53V2 + 18V3 - 3V4) (37)
제2 스테이지의 결과는 9-비트 값을 얻기 위해 7개 비트만큼 우측으로 시프트되고, 어떤 필요한 클램핑이 수행되고, 최종의 8-비트 보간처리된 값이 출력된다.
비록 도 9 내지 도 11에는 도시하지 아니하였지만, 하나의 차원 또는 양쪽의 차원에서 3/4-픽셀 시프트를 가진 서브-픽셀 위치의 값도 또한 계산될 수도 있다. 이러한 서브-픽셀 위치를 계산하기 위해서, 1/4-픽셀 겹삼차 필터를 대신하여 적절한 3/4-픽셀 겹삼차 필터를 이용함으로써 상술한 방법이 변형될 수도 있다.
다른 실시예에서, 겹선형 필터 또는 겹선형 필터와 겹삼차필터의 조합이 서브-픽셀 위치에서의 값을 보간처리하는데에 이용된다. 겹선형 필터의 이용은 일반적으로 겹삼차 필터보다 더 작은 전개를 도입하기 때문에, 수행되는 시프팅의 량(제1 스테이지후 및 전체)을 감소시킨다. 겹선형 필터 및 16-필터 중간 값을 이용하는 구현예에서, 예를 들면, 제1 스테이지에서는 시프팅이 없고, 그럼으로써 16-비트 워드 제한(limit)의 이용을 최대화하고, 4비트의 우측 시프트가 최후 스테이지 후에 수행된다. 마찬가지로, 클램핑이 최후 스테이지까지 지연될 수도 있다.
전술한 바와 같은 방법에 기초하는 원리 중의 하나는 원하는 "워드 크기" 제한(W)내에 유지하면서 필터링의 매 스테이지에서 가능한한 최대의 정밀도를 이용하는 것이다. 출력 값이 D비트의 동적 범위를 가지고 최후 스테이지에서 L비트가 버려지면, 필터링의 최후 스테이지의 출력은 D + L + 1 까지 취할 수 있으며, 여기서 하나의 여분(extra) 비트가 언더플로우 또는 오버플로우를 부호화하기 위해 이용된다. 역방향 작업을 하면서, 필터링의 최후 스테이지가 k비트만큼의 전개의 결과를 주면, 최후 스테이지에의 입력은 D + L- k 내에 있어야 한다. 그래서, W비트 표현으로 최대의 정밀도를 유지하기 위해서는, 다음과 같은 관계가 존재하여야 한다.
D + L + 1 = W (38)
또한, 최후 스테이지에의 입력은 D + L- k = W - k - 1 비트이어야 한다.
상술한 로직은 필터링의 끝에서 두번째(penultimate) 스테이지 등에 회귀적으로 적용될 수 있다. 실제로, 한계(bound)는 비-2k(non-2k)범위 및 전개 인자를 나타내는 소수적 비트를 이용하여 통제될(tightened) 수 있다.
도 12 내지 도 15는 다양한 기술을 나타내는 도이고, 이들은 다수 스테이지 보간처리에서 상술한 바와 같이 조합될 수도 있지만 개별적으로 적용될 수 있다. 도 12 내지 도 15는 다수 스테이지 보간처리(1200, 1300, 1400, 1500)의 각각이 다수 스테이지 보간처리 기술과 연계하여 이용될 수 있는 다양한 방법을 도시하고 있지 아니하다.
또한, 도 12 내지 도 15는 2개의 스테이지를 도시하고 있지만, 도 12 내지 도 15에 도시된 다수 스테이지 보간처리(1200, 1300, 1400, 1500) 기술은 더 많은 스테이지를 포함할 수도 있다. 더 일반적으로는, 다수 스테이지 보간처리(1200, 1300, 1400, 1500) 기술은 캐스케이드(cascade), 트렐리스(trellis), 또는 격자 구조에서 구현되는 임의의 필터뿐만아니라 어떤 타입의 분리가능한 필터로도 구현될 수 있다.
도 12 내지 15는 다수 스테이지 보간처리에 이용되는 일반화된 입력 값, 출력 값 및 필터를 도시하고 있다. 제1 스테이지의 입력 값, 최후 스테이지의 출력 값 및 중간 값에 대한 비트 깊이의 특정의 선택은 목적하는 아키텍처 또는 애플리케이션의 기술적 사양에 따라 임의로 확장될 수 있다. 예를 들면, 입력 값은 기준 프레임내의 정수 픽셀 위치에서 8-비트 픽셀 값일 수도 있고, 출력 값은 기준 프레임내의 서브-픽셀 위치에서 8-비트 픽셀 값일 수도 있고, 필터는 통상의 필터 및 근사적 겹삼차 필터(도 6 내지 도 8을 참조하며 상술함)일 수도 있다. 대안으로서, 입력 값 및/또는 출력 값은 서로 다른 비트 깊이의 동적 범위를 가지거나 서로 다른 필터가 이용될 수도 있다.
도 4 및 도 5를 각각 참조하며 설명한 인코더 또는 디코더와 같은 콤포넌트가 다수 스테이지 보간처리(1200, 1300, 1400, 1500)를 수행할 수도 있다. 대안으로서, 다른 인코더 또는 디코더, 또는 다른 타입의 콤포넌트가 다수 스테이지 보간처리(1200, 1300, 1400, 1500)를 수행할 수도 있다.
도 12는 중간 보간처리된 값에 대한 향상된 동적 범위(비트 단위)를 가진 다 수 스테이지 보간처리(1200)의 도를 도시하고 있다. 제1 스테이지(1210)에서, 콤포넌트는 하나 이상의 x-비트 범위 입력 값(1211)에 제1 필터 F1를 적용하여(1212), 하나 이상의 y-비트 범위 중간 값(1220)을 생성한다(여기서, y는 x보다 크다). 예를 들면, y-비트 중간 값은 8비트 보다 넓은 동적 범위를 가진 픽셀 값이고, x-비트 입력 값은 8비트의 동적 범위를 가진다.
영 이상의 중간 스테이지(1222)(이에 대해서는 상세히 도시되어 있지 아니함)의 각각에서, 콤포넌트는 y-비트 범위 중간 값(1220)에 필터를 적용한다. 중간 스테이지로부터의 출력은 하나 이상의 z-비트 범위 중간 값(1229)이다(여기서, z는 x보다 크다). (도 12 내지 도15에서, 최후 스테이지가 제2 스테이지이면, 제1 스테이지로부터 출력된 중간 값은 최후 스테이지에 입력되는 중간 값이다.)
최후 스테이지(1230)에서, 콤포넌트는 하나 이상의 z-비트 범위 중간 값(1229)에 최후 필터 FL를 적용한다(1232). 최종 출력은 x-비트 범위 출력 값(1234)이다. 다수 스테이지 보간처리(1200, 1300, 1400, 1500) 기술의 각각에 대해, 필요하다면, 콤포넌트는 추가적인 출력 값을 위하여 다수 스테이지 보간처리(1200, 1300, 1400, 1500)를 반복한다. 반복된 보간처리에서, 콤포넌트는 이전의 보간처리에서 계산된 어떤 중간 값을 재이용할 수도 있다.
도 13은 스킵된 클램핑을 가진 다수 스테이지 보간처리(1300)의 도를 도시하고 있다. 클램핑을 지연시키면, 예를 들면 콤포넌트가 범위의 상한 및 하한에 대한 중간 값 각각을 더이상 체크하지 않기 때문에, 계산을 신속하게 할 수 있다. 클램핑을 지연시키면, 또한 중간 값에서의 정확도를 유지하게 된다.
제1 스테이지(1310)에서, 콤포넌트는 하나 이상의 x-비트 범위 입력 값(1311)에 제1 필터 F1를 적용한다(1312). 제1 필터 F1의 적용 후에, 클램핑을 수행하지 않는다. 그래서, 제1 필터 F1로부터 출력된 하나 이상의 중간 값(1320)이 x-비트보다 더 넓은 동적 범위를 가질 수도 있다. 예를 들면, 입력 값은 8비트 값이고, 제1 필터 F1로부터의 출력 값은 제1 필터 F1의 계수에 의해 도입된 전개(expansion) 인자로 인하여 9비트 이상의 동적 범위를 가진다.
영 이상의 중간 스테이지(1322)(이에 대해서는 상세히 도시되어 있지 아니함)의 각각에서, 콤포넌트는 하나 이상의 클램핑되지 않은 중간 값(1320)에 필터를 적용한다. 클램핑은 또한 영 이상의 중간 스테이지(1322)에서 스킵될 수도 있다. 영 이상의 중간 스테이지(1322)로부터의 출력된 중간 값(1329)은 최후 스테이지(1330)로의 입력이고, 여기서 콤포넌트는 그 값(1329)에 최후 필터 FL을 적용한다(1332). 최후 필터 FL로부터의 최종 출력이 클램핑되고(1334), x-비트 범위 값(1336)이 출력된다.
도 14는 지연된 비트 시프팅을 가진 다수 스테이지 보간처리(1400)의 도를 도시하고 있다. 제1 스테이지(1410)에서, 콤포넌트는 하나 이상의 x-비트 범위 입력 값(1411)에 제1 필터 F1를 적용한다(1412). 제1 필터 F1의 적용 후 또는 그와 함께, 단축된 시프트(1414)가 수행된다. 단축된 시프트(1444)는 (제1 필터 F1의 계 수의 전개 인자의 관점에서) x-비트 범위 출력 값을 보장하기 위해 요구되는 것보다 적고, 그래서, 제1 필터 F1와 전형적으로 연계되어 있는 것보다 적다. 따라서, 단축된 시프트(1414)는 x보다 더 넓은 (y 비트의) 동적 범위를 가진 하나 이상의 중간 값을 생성한다. 예를 들면, 입력 값은 8비트의 동적 범위를 가지고, 중간 값은 8보다 큰 동적 범위를 가진다.
영 이상의 중간 스테이지(1422)(이에 대해서는 상세히 도시되어 있지 아니함)의 각각에서, 콤포넌트는 하나 이상의 중간 값(1420)에 필터를 적용한다. z비트(x비트보다 큼)의 동적 범위를 가진 하나 이상의 중간 값(1429)은 영 이상의 중간 스테이지(1422)로부터의 출력이고, 최후 스테이지(1430)에서, 콤포넌트는 그 값(1429)에 최후 필터 FL을 적용한다(1432). 최후 필터 FL로부터의 최종 출력은 최후 필터 FL과 전형적으로 연관된 것보다 큰 량만큼 시프트되고(1434), 그럼으로써 출력 값(1434)의 동적 범위를 특정의 비트 깊이로 축소시킨다. 예를 들면 출력 값(1434)의 동적 범위(비트 단위)는 x 또는 x+1이다. 일 구현예에서는, 제1 스테이지 및 임의의 중간 스테이지의 시프팅은 가능하다면 최종 스테이지까지 더욱 지연된다. 시프팅이 지연되는 량은 중간 계산 및 각각의 필터의 전개 인자에 대한 가용한 비트 깊이에 의존할 수도 있다.
도 15는 스테이지-교대 라운딩 제어를 이용하는 다수 스테이지 보간처리 기술(1500)을 도시한다. 보간처리 기술(1500)의 다수 스테이지는 이들이 라운딩을 적응하도록 라운딩 제어를 어떻게 적용하는가에 따라 교대한다. 이로써, 어떤 비 디오 시퀀스에서 프레임 단위로 라운딩 오차의 축적을 방지할 수 있다. 예를 들면, 저품질 비디오 시퀀스가 일차원에서의 점진적 모션(패닝; panning) 또는 이차원에서의 점진적 모션(줌잉; zooming)을 포함한다면, 라운딩 오차의 축적은 프레임으로부터 프레임으로의 점진적인 컬러 페이딩의 결과를 줄 수도 있고, 이는 인지가능한 아티팩트를 일으키게 될 수도 있다. 스테이지-교대 라운딩 제어는 이러한 컬러 페이딩을 방지하는데 도움을 준다.
수치적 예는, 스테이지-교대 라운딩 제어가 우측 비트 시프팅전에 적용되는 라운딩을 예시하는데 도움을 줄 수도 있다. 우측 비트 시프팅은 본질적으로 우측 시프팅된 값을 분할 및 종단의 결과를 준다. 시프팅 전에 라운딩 값을 가산하는 것은 그 시프팅된 값이 항상 라운드 다운되도록(종단되도록) 하기 보다는, (가장 가까운 정수로) 라운딩 업 또는 다운되도록한다. 라운딩 제어를 이용하면 마진 값에 대한 라운딩(업 또는 다운)의 방향을 변화시킨다. 예를 들어, 다수 스테이지의 각각에서 필터링의 출력이 우측 시프팅전에 우측 시프트의 "디바이저(divisor)"의 1/2를 가산함으로써(예로서, 5비트 우측 시프팅전에 24 = 16을 가산함, 7비트 우측 시프팅전에 26 = 64를 가산함) 조절된다. 이러한 가산의 효과는 (그 비트 시프트에 대응하는 분할 후에) .5 또는 그 이상의 소수부를 가지게 되는 (다음의 더 큰 정수) 값을 라운드 업하는 것이다. 이러한 값은 그렇지 않은 경우에는 우측 시프트에 의해 (다음의 더 작은 정수로) 종단될 수도 있다. 이 가산에도 불구하고, (그 비트 시프트에 대응하는 분할 후에) .5보다 작은 소수부를 가지게 되는 값도 여전 히 우측 시프트에 의해 (다음의 더 작은 정수로) 종단된다. 그래서, 라운딩 제어는 어떤 마진 값에 대한 라운딩 방향을 변화시킨다. 예를 들어, 다수의 스테이지의 각각에서, 필터링의 출력은 우측 시프팅(예로서, 2shiftV-1 또는 2shiftV-1 -1) 전에 0 또는 1(교대하는 라운딩 제어 값)을 감산함으로써 더욱 조절된다. 이러한 라운딩 제어 조절의 효과는 (그 비트 시프트에 대응하는 분할 후에) .5의 소수부를 가지게 되는 값에 대한 라운딩의 방향을 변화시키는 것이다. 1이 감산되는 경우에, 이러한 마진 값은 라운딩 다운된다. 그렇지 않은 경우에는, 이러한 마진 값은 라운딩 업된다.
다수 스테이지 각각은 다수 스테이지의 보간처리 전에 0과 1 사이에서 교대하는 라운딩 제어 값을 이용하고, 그래서 서로 다른 스테이지는 라운딩 제어 값이 어떻게 적용되는 가에 따라 교대한다. 대안으로서, 다수 스테이지의 보간처리 기술(1500)은 스테이지로부터 스테이지로 그 자체가 교대하는 라운딩 제어 값을 이용한다.
도 15의 제1 스테이지(1510)에서, 콤포넌트는 하나 이상의 x-비트 범위 입력 값(1511)에 제1 필터 F1을 적용한다(1512). 제1 필터 F1의 적용 후 또는 그와 함께, 라운딩(1514)이 제1 필터 F1로부터의 출력에 대해 수행된다. 라운딩(1514)은 스테이지-교대 라운딩 제어에 의해 조절된다. 예를 들면, 제1 스테이지(1510)에서, 출력 값이 마진 값인 경우에, 스테이지-교대 라운딩 제어는 출력 값을 가장 가까운 정수로 라운딩 업워드(upward)되도록 한다(그렇지 않은 경우에는 출력 값은 라운딩 다운워드된다). 하나 이상의 라운딩된 중간 값(1520)이 제1 스테이지로부터 제2 스테이지(1530)로 출력된다.
제2 스테이지(1532)에서, 콤포넌트는 하나 이상의 중간 값(1520)에 제2 필터 F2를 적용한다(1532). 라운딩(1534)은 제2 필터 F2로부터의 출력에 대해 수행된다. 제2 필터 F2의 적용 후 또는 그와 함께, 라운딩(1534)은 라운딩 제어가 마진 값에 대한 제1 스테이지에서와 반대방향으로 라운딩을 일으키게 스테이지-교대 라운딩 제어에 의해 수행된다. 예를 들면, 제2 스테이지(1530)에서, 출력 값이 마진 값인 경우에, 스테이지-교대 라운딩 제어는 출력 값을 가장 가까운 정수로 라운딩 다운워드되도록 한다. 하나 이상의 중간 값(1536)은 제2 스테이지의 출력이고, 영 이상의 추가적인 스테이지(1540)에서 이용될 수도 있다. 영 이상의 추가적 스테이지(1540)는 스테이지-교대 라운딩 제어를 더 포함할 수도 있다.
교대 라운딩 제어는 연속적 스테이지에만 적용되는 것으로 제한되지 않으며, 스테이지들의 다양한 다른 조합에도 적용될 수 있다. 또한, 제1 방향은 파라미터의 개수에 의존할 수도 있다. 예를 들면, 비디오 인코더 또는 디코더에서, 제1 방향은 선행 프레임에서 이용된 라운딩 제어에 의존하거나 보간처리되는 프레임의 타입(예로서, I-프레임, P-프레임, 또는 B-프레임)에 의존할 수도 있다. 다른 실시예에서는, 제1 방향은 일시적(casual) 정보(예로서, 이전에(past) 코딩된/디코딩된 정보)로부터 내재적으로 유도된, 이용하는 의사랜덤 생성기로부터 유도된, 또는 비트스트림의 부분으로서 신호화된 상수로 설정될 수도 있다. 스테이지-교대 라운딩 제어는 겹선형 필터, 겹삼차 필터 및 근사적 겹삼차 필터를 포함하는 다양한 보간처리 필터 중의 어느 것이라도 이용하여 다수 스테이지의 보간처리에 적용될 수도 있다.
D. 색도 모션 벡터
색도(chroma) 모션 벡터는 함께 위치되는(collocated) 휘도 모션 벡터로부터 내재적으로 유도되기 때문에, 이들의 정밀도는 제한되고 단순화를 위한 범위를 제공한다. 이러한 단순화는 코딩된 비디오의 인지되는 품질을 상당히 저하시키지 아니하고도 인코더 및 디코더에서 색도 값에 대한 서브-픽셀 보간의 계산 복잡도를 감소시킬 수 있다. 또한, 인코더 및 디코더는 색도 모션 벡터 라운딩 및 보간처리를 위한 서로 다른 모드 사이에서 전환될 수 있다. 예를 들면, 하나의 모드는 계산 복잡도를 크게 하지만 대신에 코딩된 비디오에서의 품질을 강조한다. 다른 모든에서는 품질은 저하시키지만 계산 복잡도를 강조한다.
하나의 구현예에서는, 비디오 인코더 및 디코더는 시퀀스 레벨 1-비트 필드 "FASTUVMC"를 이용하여 색도 값에 대한 서브-픽셀 보간처리 및 색도 모션 벡터의 라운딩을 제어한다. 그래서, 비디오 인코더 및 디코더는 패스트(fast) 모드 및 기본 모드의 2개의 서로 다른 색도 라운딩 모드 중의 하나에서 선택적으로 동작한다.
도 16은 다수의 색도 라운딩 및 보간처리 모드 사이에서의 선택을 위한 기술(1600)을 도시하고 있다. 예를 들면, 도 4 및 도 5 각각을 참조하여 전술한 바와 같은 비디오 인코더 또는 디코더가 이 기술을 수행한다.
비디오 인코더 또는 디코더는, 1-비트 플래그 FASTUVMC가 패스트 색도 모션 보상 모드(플래그 = 1) 또는 기본 색도 모션 보상 모드(플래그 = 0)를 이용할 것을 지시하는 지를 결정한다. 예를 들면, 플래그는 사용자 설정에 대응하는 시퀀스 레벨 필드이고, 이것은 인코더에 의해 코딩된 비디오의 비트스트림내에 기록되고 디코더에 의해 비트스트림으로부터 판독된다. 대안으로서, 인코더 및 디코더는 다수 비트를 이용하여, 고정된 길이 또는 가변적 길이 코드를 이용하는 색도 라운딩 및/또는 보간처리 모드를 신호화하여, 예로서, 2이상의 가용한 모드 사이에서 선택한다. 또는, 사용자 설정에 대응하는 시퀀스 레벨 필드인 것 대신에, 스위칭 정보가 비트스트림내의 그 밖의 것에서 신호화되거나 또는 서로 다른 기준(criteria)에 따라 설정되거나, 신호화 및 설정된다.
다음에, 비디오 인코더 또는 디코더는 기본 모드(1620) 또는 패스트 모드(1630)에서 색도 모션 보상을 수행한다. 기본 모드(1620) 및 패스트 모드(1630) 모션 벡터 라운딩 및 보간처리의 상세한 내용은 하나의 구현예로서 이하에서 주어진다. 대안으로서, 이들 모드는 서로 다른 구성을 가지도 한다. 예를 들면, 이하에 설명된 패스트 모드(1630)의 구현에서 이용된 룩업 테이블은 특정의 하드웨어 아키텍처에 대한 원하는 성능 레벨의 결과로되는 서로 다른 매핑으로 변화되거나, 또는 서로 다른 정밀도의 모션 벡터에 대해서 작용한다. 기본 모드(1620) 및 패스트 모드(1630) 대신에 또는 그에 추가하여, 인코더 또는 디코더는 색도 모션 벡터 라운딩 및 보간처리를 위한 다른 모드를 이용할 수도 있다.
일 구현예에서, 패스트 모드에서는(예를 들면, 색도 라운딩 플래그 = 1이면), 1/4-픽셀 오프셋(즉, 1/4-픽셀 및 3/4-픽셀 오프셋)에서의 색도 모션 벡터 는 가장 가까운 풀-픽셀 위치로 라운딩되고, 1/2-픽셀 오프셋에서의 색도 모션 벡터는 라운딩되지 않고, 겹선형 필터링이 모든 색도 보간처리를 위해 이용된다. 이러한 모드에서, 인코더 및 디코더의 속도는 증가된다. 이러한 최적화의 동기는 적어도 하나의 좌표에 대한 (a) 정수-픽셀 위치; (b) 1/2-픽셀 위치; (c) 1/4-픽셀 위치; 및 양쪽 좌표에 대한 (d) 1/4-픽셀 위치에서의 픽셀 오프셋을 보간처리하는 복잡도 사이의 상당한 차이이다. 비율 a:b:c:d 는 개략적으로 1:4:4.7:6.6 이다. 패스트 모드를 적용함으로써, (a) 및 (b)가 선호(favor)될 수도 있는데, 그래서 디코딩 시간을 절감시킨다. 이것은 색도 보간처리에만 수행되기 때문에, 코딩 및 품질 손상(특히, 가시 품질) 모두가 무시될 수 있다.
이러한 패스트 모드에서, 최종 레벨의 라운딩이 다음과 같은 색도 모션 벡터에 대해 수행된다.
//RndTbl[-3] = -1, RndTbl[-2] = 0, RndTbl[-1] = +1, RndTbl[0] = 0,
//RndTbl[1] = -1, RndTbl[2] = 0, RndTbl[3] = +1
cmv_x = cmv_x + RndTbl[cmv_x%4]
cmv_y = cmv_y + RndTbl[cmv_y%4] (39)
여기서, cmv_x 및 cmv_y는 1/4-픽셀 단위에서의 색도 모션 벡터의 x 및 y 좌표를 나타내고, %는 모듈로(즉, 나머지 값)를 나타내고, 그래서 (x%a) = -(-x%a)로 정의된다. (음수의 모듈로는 대응하는 양수의 모듈로의 음의 값과 같다.) 그래서, cmv_x(또는 cmv_y)는 4로 나누어 떨어지는 경우에, 그 색도 모션 벡터는 정수 오프셋을 가진다. cmv_x%4 = +/-2인 경우에, 그 색도 모션 벡터는 1/2-픽셀 오프 셋을 가진다. 그리고, cmv_x%4 = +/-1 또는 +/-3 인 경우에, 그 색도 모션 벡터는 1/4-픽셀 오프셋을 가진다. 상술한 재-매핑 동작에서 나타난 바와 같이, 1/4-픽셀 위치는 색도 모션 벡터를 가장 가까운 정수 위치로 라운딩되는 것이 허용되지 않는다(1/2-픽셀 위치는 변하지 않도록 유지됨). 그래서, 이 모드는 색도 좌표를 정수 및 1/2-픽셀 위치로 재-매핑한다. 겹선형 필터링은 더욱 속도를 높이기 위해서 이 모드에서 모든 색도 보간처리에 대해 이용될 수도 있다. 이러한 패스트 모드 보간처리가 다수의 라운딩 모드 사이에서의 선택과 결합하여 설명되었지만, 패스트 모드 보간처리는 독립적으로(즉, 가능한 모드로서만) 교호적으로 이용될 수 있다.
도 17은 색도 라운딩의 패스트 모드를 나타내는 테이블(1700)이다. 제1 행(1710)은 1/4-픽셀 정밀도에서의 휘도 모션 벡터 값을 나타낸다. 휘도 모션 벡터 값은 정수 픽셀 값으로부터 소수적-오프셋으로 나타내었지만, 각각의 정수가 1/4 픽셀 증가를 나타내는 정수 값(즉, 0, 1/4, 1/2, 3/4 대신에 0, 1, 2, 3, 4)으로 나타낼 수도 있다. 제2 행(1720)은 대응하는 색도 모션 벡터 값이 패스트 모드에서 어떻게 라운딩되어 정수 및 1/2-픽셀 정밀도를 가지는 지를 나타낸다.
제2의 기본 모드에서는(예를 들면, 색도 라운딩 플래그 = 0이면), 라운딩 오차를 가지지 않은 1/4-픽셀 오프셋에서의 색도 모션 벡터는 1/4-픽셀 오프셋에 남아 있다. 다른 서브-픽셀 오프셋에서의 색도 모션 벡터는 가장 가까운 풀-픽셀 위치 또는 1/2-픽셀 위치로 라운딩된다. 이 모드에서, 디코더의 속도는 다른 모드보다 늦을 수도 있지만, 색도 픽셀 값이 계산되는 정밀도는 더욱 높다. 그래서 이러한 기본 모드는 색도 좌표를 정수, 1/2 및 1/4-픽셀 위치로 재-매핑한다. 상술 한 바와 같은 겹삼차 또는 겹선형 필터링이 색도 보간처리를 위해 이용될 수도 있다.
도 18은 색도 라운딩의 이러한 기본 모드를 나타내는 테이블이다. 제1 행(1810)은 1/4-픽셀 정밀도에서의 휘도 모션 벡터 값을 나타낸다. 제3 행(1830)은 대응하는 색도 모션 벡터 값이 상술한 바와 같은 기본 모드에서 어떻게 라운딩되어 정수, 1/2 및 1/4-픽셀 정밀도를 가지는 지를 나타낸다. 다른 구현예에서는, 색도 공간은 색도 공간에서의 다른 해상도로 라운딩된다.
본 발명의 원리를 다양한 실시예를 참조하여 설명하였지만, 이들 다양한 실시예는 본 발명의 원리를 벗어나지 아니하고도 구성 및 세부 사항에 있어서 변형될 수 있음은 인식될 것이다. 예를 들면, 상술한 원리 및 기술은 비디오 인코더 및/또는 비디오 디코더에서 이용되는 것에만 제한되지 않고, 대신에, 이들은 값이 하나 이상의 중간 값에 기초하여 계산되는 계산 컨텍스트 또는 분리가능한 필터가 다수의 차원에서 이용되는 계산 컨텍스트에서 적용될 수도 있다.
여기에 개시된 프로그램, 처리, 또는 방법은 비록 명시되어 있지 아니하더라도 특정한 타입의 계산 환경에만 관련되거나 제한되는 것이 아님은 이해될 것이다. 범용의 또는 특정된 계산 환경의 다양한 타입이 여기에 개시된 내용과 함께 이용되거나 그에 따라 동작을 수행할 수도 있다. 소프트웨어에 도시된 실시예의 구성부분은 하드웨어로 구현되거나 그 반대로 구현될 수도 있다.
본 발명의 원리가 적용되는 많은 가능성있는 실시예를 참작하여, 본 발명의 범위는 다음에 기재하는 특허청구범위의 사상과 그 권리범위내에서 모든 실시태양 과 그 균등물에 미친다.
다양한 기술 및 툴이 독립적으로 또는 조합하여 이용될 수도 있으며, 이로써 서브 샘플 위치에서의 최종 값이 계산되는 정밀도를 향상시킬 수 있으며, 이렇게 정밀도가 향상됨으로써 압축된 비디오 시퀀스의 전체적인 품질이 향상된다.

Claims (24)

  1. 기준 비디오 프레임을 버퍼링하는 단계 및
    상기 기준 비디오 프레임 내의 샘플 위치에서 다수 스테이지의 보간 처리를 이용하여 값을 계산하는 단계
    를 포함하고,
    상기 다수 스테이지는 상기 다수 스테이지의 보간 처리 각각에 있어서 라운딩의 방향을 교대시키는 스테이지-교대 라운딩 제어(stage-alternating rounding control)를 포함하고,
    상기 다수 스테이지는 상기 스테이지-교대 라운딩 제어에 따라 제1 방향으로 라운딩하는 제1 스테이지 - 상기 제1 스테이지는 다수의 중간 값을 생성함 - 를 포함하고,
    상기 다수 스테이지는 상기 스테이지-교대 라운딩 제어에 따라 상기 제1 방향과 반대인 제2 방향으로 라운딩하는 제2 스테이지 - 상기 제2 스테이지는 상기 샘플 위치에서 상기 값을 생성함 - 를 포함하는 방법.
  2. 제1항에 있어서, 상기 계산 단계는
    상기 다수 스테이지의 상기 제1 스테이지에서, 상기 스테이지-교대 라운딩 제어에 따라 제1 마진 값을 상기 제1 방향의 가장 가까운 정수로 라운딩하는 단계를 포함하고,
    상기 다수 스테이지의 상기 제2 스테이지에서, 상기 스테이지-교대 라운딩 제어에 따라 제2 마진 값을 상기 제1 방향과 반대인 상기 제2 방향의 가장 가까운 정수로 라운딩하는 단계를 포함하는 방법.
  3. 제2항에 있어서, 라운딩 제어 파라미터가 상기 제1 및 제2 방향을 제어하는 방법.
  4. 제3항에 있어서, 상기 라운딩 제어 파라미터는 상기 기준 비디오 프레임 내에서 스테이지 단위 및 프레임 단위를 기초로 교대하는 방법.
  5. 제1항 내지 제4항 중의 어느 한 항에 있어서, 상기 값은 픽셀에 대한 것인 방법.
  6. 제1항에 있어서,
    상기 기준 비디오 프레임은 제1 기준 비디오 프레임이고,
    상기 스테이지-교대 라운딩 제어는 상기 제1 기준 비디오 프레임에 대한 제1 라운딩 방향을 지시하며,
    상기 방법은,
    제2 기준 비디오 프레임의 샘플 위치에서 값에 대한 계산을 반복하는 단계; 및
    라운딩 제어 파라미터에 기초하여 상기 제2 기준 비디오 프레임에 대한 상기제1 라운딩 방향을 반전시키는(reverse) 단계
    를 더 포함하는 방법.
  7. 제6항에 있어서,
    상기 제1 기준 비디오 프레임은 키 프레임이고, 상기 제1 라운딩 방향은 상기 키 프레임에 대해 미리 정해지는 방법.
  8. 제1항에 있어서, 상기 샘플 위치는 기준 비디오 필드 내에 존재하고, 상기 값은 픽셀에 대한 것인 방법.
  9. 제1항 내지 제4항 또는 제6항 내지 제8항 중의 어느 한 항에 있어서, 복수의 다른 샘플 위치의 각각에서, 상기 다른 샘플 위치에서의 값들에 대한 계산을 반복하는 단계를 더 포함하는 방법.
  10. 제1항에 있어서,
    상기 스테이지 교대 라운딩 제어는 상기 다수 스테이지의 보간 처리에서 스테이지 별로 마진 값들에 대한 라운딩 방향을 교대하는 방법.
  11. 비디오 인코딩 동안에 컴퓨터 시스템으로 하여금 제1항 내지 제4항 또는 제6항 내지 제8항 또는 제10항 중의 어느 한 항의 방법을 수행하도록 하는 컴퓨터 실행가능 명령을 저장하는 컴퓨터 판독가능 매체.
  12. 비디오 디코딩 동안에 컴퓨터 시스템으로 하여금 제1항 내지 제4항 또는 제6항 내지 제8항 또는 제10항 중의 어느 한 항의 방법을 수행하도록 하는 컴퓨터 실행가능 명령을 저장하는 컴퓨터 판독가능 매체.
  13. 제1항 내지 제4항 또는 제6항 내지 제8항 또는 제10항 중의 어느 한 항의 방법을 수행하도록 구성된 시스템.
  14. 컴퓨터 실행가능 명령을 저장하는 컴퓨터 판독가능 매체로서,
    컴퓨터 시스템을 프로그램하여,
    기준 비디오 프레임을 버퍼링하는 단계 및
    상기 기준 비디오 프레임에서 복수의 픽셀 위치의 각각에서, 다수 스테이지의 보간처리를 이용하여 픽셀 값을 계산하는 단계
    를 포함하는 방법을 수행하도록 하고,
    상기 다수 스테이지 보간처리는 상기 다수 스테이지 보간처리에서 스테이지마다 마진 픽셀 값에 대한 라운딩의 방향을 교대시키는 스테이지-교대 라운딩 제어를 포함하며,
    상기 다수 스테이지 보간처리는 상기 스테이지-교대 라운딩 제어에 따라 제1 방향으로 라운딩하는 제1 스테이지 - 상기 제1 스테이지는 다수의 중간 값을 생성함 - 를 포함하고,
    상기 다수 스테이지 보간처리는 상기 스테이지-교대 라운딩 제어에 따라 상기 제1 방향과 반대인 제2 방향으로 라운딩하는 제2 스테이지 - 상기 제2 스테이지는 상기 픽셀 값을 생성함 - 를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  15. 제14항에 있어서,
    상기 계산 단계는,
    상기 다수 스테이지 보간 처리의 상기 제1 스테이지에서, 상기 스테이지-교대 라운딩 제어에 따라 제1 마진 값을 상기 제1 방향의 가장 가까운 정수로 라운딩하는 단계 및
    상기 다수 스테이지 보간 처리의 상기 제2 스테이지에서, 상기 스테이지-교대 라운딩 제어에 따라 제2 마진 값을 상기 제1 방향과 반대인 상기 제2 방향의 가장 가까운 정수로 라운딩하는 단계
    를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  16. 제15항에 있어서,
    라운딩 제어 파라미터는 상기 제1 및 제2 방향을 제어하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  17. 제16항에 있어서,
    상기 라운딩 제어 파라미터는 프레임 단위를 기초로 0과 1사이에서 교대하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  18. 제14항에 있어서,
    상기 기준 비디오 프레임은 제1 기준 비디오 프레임이고,
    상기 방법은,
    제2 기준 비디오 프레임에 대한 계산을 반복하는 단계 및
    라운딩 제어 파라미터에 기초하여 상기 제2 기준 비디오 프레임에 대한 상기제1 방향을 반전시키는 단계
    를 더 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  19. 제18항에 있어서,
    상기 제1 기준 비디오 프레임은 키 프레임이고, 상기 제1 방향은 상기 키 프레임에 대해 미리 정해지는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  20. 기준 비디오 프레임을 버퍼링하기 위한 수단 및
    값을 결정하기 위해 다수 스테이지의 보간처리를 이용하여 상기 기준 비디오 프레임에서 상기 값을 계산하기 위한 수단
    을 포함하고,
    상기 다수 스테이지는 상기 다수 스테이지의 보간 처리 각각에 있어서 라운딩의 방향을 교대시키는 스테이지-교대 라운딩 제어를 포함하고,
    상기 다수 스테이지는 상기 스테이지-교대 라운딩 제어에 따라 제1 방향으로 라운딩하는 제1 스테이지 - 상기 제1 스테이지는 다수의 중간 값을 생성함 - 를 포함하고,
    상기 다수 스테이지는 상기 스테이지-교대 라운딩 제어에 따라 상기 제1 방향과 반대인 제2 방향으로 라운딩하는 제2 스테이지 - 상기 제2 스테이지는 상기 기준 비디오 프레임에서 상기 값을 생성함 - 를 포함하는 것을 특징으로 하는 시스템.
  21. 제20항에 있어서,
    상기 계산 수단은 상기 다수 스테이지의 보간처리를 이용하여 다수의 기준 비디오 프레임에서 다수의 다른 값들을 계산하고,
    상기 시스템은,
    상기 기준 비디오 프레임에 대한 모션 보상을 수행하기 위한 수단
    을 더 포함하는 것을 특징으로 하는 시스템.
  22. 제20항에 있어서,
    상기 다수 스테이지의 상기 제1 스테이지에서, 상기 계산 수단은, 제1 마진 픽셀 값을 상기 제1 방향의 가장 가까운 정수로 라운딩하고,
    상기 다수 스테이지의 상기 제2 스테이지에서, 상기 계산 수단은, 제2 마진 픽셀 값을 상기 제1 방향과 반대인 상기 제2 방향의 가장 가까운 정수로 라운딩하는 것을 특징으로 하는 시스템.
  23. 제22항에 있어서,
    라운딩 제어 파라미터가 상기 제1 및 제2 방향을 제어하고, 상기 라운딩 제어 파라미터는 프레임 단위를 기초로 0과 1사이에서 교대하는 것을 특징으로 하는 시스템.
  24. 제20항 또는 제23항에 있어서, 상기 값은 픽셀에 대한 값인 것을 특징으로 하는 시스템.
KR1020030022428A 2002-04-10 2003-04-09 다수 스테이지 보간처리를 위한 라운딩 제어 KR100593344B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US37186002P 2002-04-10 2002-04-10
US60/371,860 2002-04-10
US10/382,294 US7305034B2 (en) 2002-04-10 2003-03-04 Rounding control for multi-stage interpolation
US10/382,294 2003-03-04

Publications (2)

Publication Number Publication Date
KR20030081119A KR20030081119A (ko) 2003-10-17
KR100593344B1 true KR100593344B1 (ko) 2006-06-26

Family

ID=28794438

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030022428A KR100593344B1 (ko) 2002-04-10 2003-04-09 다수 스테이지 보간처리를 위한 라운딩 제어

Country Status (9)

Country Link
US (1) US7305034B2 (ko)
EP (1) EP1353513B1 (ko)
JP (1) JP4077354B2 (ko)
KR (1) KR100593344B1 (ko)
CN (2) CN1238799C (ko)
AT (1) ATE330430T1 (ko)
DE (1) DE60306011T2 (ko)
ES (1) ES2266665T3 (ko)
HK (1) HK1059857A1 (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NO319629B1 (no) 2003-11-28 2005-09-05 Tandberg Telecom As Fremgangsmate for korrigering av interpolerte pikselverdier
EP1617672A1 (en) * 2004-07-13 2006-01-18 Matsushita Electric Industrial Co., Ltd. Motion estimator/compensator including a 16-bit 1/8 pel interpolation filter
EP1872588B1 (en) * 2005-04-13 2021-01-27 InterDigital VC Holdings, Inc. Luma and chroma encoding using separate predictors
US20060285597A1 (en) * 2005-06-20 2006-12-21 Flextronics International Usa, Inc. Reusing interpolated values in advanced video encoders
BRPI0614662A2 (pt) * 2005-07-28 2011-04-12 Thomson Licensing compensação e estimativa de movimento usando um cache hierárquico
US8265151B1 (en) 2005-12-14 2012-09-11 Ambarella Taiwan Ltd. Mode decision using approximate 1/2 pel interpolation
US8208553B2 (en) * 2006-05-04 2012-06-26 Altera Corporation Methods and apparatus for quarter-pel refinement in a SIMD array processor
JP4682384B2 (ja) * 2006-07-11 2011-05-11 株式会社メガチップス 1/4画素輝度用動き予測機構、組合せ輝度用動き予測機構、及び組合せ輝度・色差用動き予測機構
CN100551073C (zh) * 2006-12-05 2009-10-14 华为技术有限公司 编解码方法及装置、分像素插值处理方法及装置
US9332264B2 (en) * 2007-12-30 2016-05-03 Intel Corporation Configurable performance motion estimation for video encoding
US8705622B2 (en) * 2008-04-10 2014-04-22 Qualcomm Incorporated Interpolation filter support for sub-pixel resolution in video coding
US8804831B2 (en) * 2008-04-10 2014-08-12 Qualcomm Incorporated Offsets at sub-pixel resolution
US9077971B2 (en) * 2008-04-10 2015-07-07 Qualcomm Incorporated Interpolation-like filtering of integer-pixel positions in video coding
US8462842B2 (en) * 2008-04-10 2013-06-11 Qualcomm, Incorporated Symmetry for interpolation filtering of sub-pixel positions in video coding
US9967590B2 (en) 2008-04-10 2018-05-08 Qualcomm Incorporated Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter
US8971412B2 (en) * 2008-04-10 2015-03-03 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
US8121434B2 (en) 2008-06-13 2012-02-21 Microsoft Corporation Multi-pass image resampling
JP2010161747A (ja) * 2009-01-09 2010-07-22 Toshiba Corp サブピクセル生成装置及び方法並びに動き補償装置
EP2222086A1 (de) * 2009-02-18 2010-08-25 EcoDisc Technology AG Verfahren und Vorrichtung zur Vermeidung von Rundungsfehlern nach Durchführung einer inversen diskreten orthogonalen Transformation
WO2010126783A2 (en) * 2009-04-30 2010-11-04 Roman Gitlin Method and apparatus for streamlined implementation of interpolation in multiple dimensions
US20110200108A1 (en) * 2010-02-18 2011-08-18 Qualcomm Incorporated Chrominance high precision motion filtering for motion interpolation
JP5390458B2 (ja) * 2010-04-08 2014-01-15 株式会社Nttドコモ 動画像予測符号化装置、動画像予測符号化方法、動画像予測符号化プログラム、動画像予測復号装置、動画像予測復号方法、及び動画像予測復号プログラム
US8406506B2 (en) 2010-05-18 2013-03-26 Honda Motor Co., Ltd. Fast sub-pixel optical flow estimation
TWI419570B (zh) * 2011-01-03 2013-12-11 Novatek Microelectronics Corp 多媒體裝置及其移動補償方法
CN102611887B (zh) 2011-01-21 2015-08-05 华为技术有限公司 非整像素位置运动矢量的坐标值取整方法和装置
PL3367686T3 (pl) * 2011-06-24 2021-06-28 Ntt Docomo, Inc. Urządzenie i sposób predykcji z kompensacją ruchu
KR20130050149A (ko) 2011-11-07 2013-05-15 오수미 인터 모드에서의 예측 블록 생성 방법
KR101674777B1 (ko) * 2011-11-08 2016-11-09 구글 테크놀로지 홀딩스 엘엘씨 샘플 적응 오프셋 코딩 및/또는 시그널링을 위한 장치들 및 방법들
TWI597968B (zh) 2012-12-21 2017-09-01 杜比實驗室特許公司 在高位元深度視訊的可適性編碼中,高精度升取樣
US9762920B2 (en) * 2013-06-07 2017-09-12 Qualcomm Incorporated Dynamic range control of intermediate data in resampling process
CN103686028A (zh) * 2013-11-29 2014-03-26 浙江大学 一种用于大屏幕多投影系统的视频像素交替插值方法
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
KR102440941B1 (ko) 2015-03-03 2022-09-05 삼성전자주식회사 이미지 처리 정보에 따라 크기와 방향을 갖는 초기 위상을 계산할 수 있는 이미지 처리 장치들
CN106710514B (zh) * 2015-07-24 2018-10-26 西安诺瓦电子科技有限公司 可编程逻辑器件、接收卡和led显示屏控制系统
CN109308078B (zh) * 2017-07-27 2021-08-27 龙岩智康太阳能科技有限公司 定日镜控制方法、装置及计算机可读存储介质和终端设备
US20230215031A1 (en) * 2021-12-31 2023-07-06 Microsoft Technology Licensing, Llc Interpolating Image and/or Audio in Plural Passes that Use Different Configurations

Family Cites Families (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60158786A (ja) 1984-01-30 1985-08-20 Kokusai Denshin Denwa Co Ltd <Kdd> 画像動き量検出方式
US4661849A (en) 1985-06-03 1987-04-28 Pictel Corporation Method and apparatus for providing motion estimation signals for communicating image sequences
US4661853A (en) 1985-11-01 1987-04-28 Rca Corporation Interfield image motion detector for video signals
DE3854171T2 (de) 1987-06-09 1995-12-21 Sony Corp Bewertung von Bewegungsvektoren in Fernsehbildern.
DE3854337T2 (de) 1987-06-09 1996-02-01 Sony Corp Bewegungskompensierte Interpolation von digitalen Fernsehbildern.
US5054103A (en) * 1987-09-24 1991-10-01 Matsushita Electric Works, Ltd. Picture encoding system
US5242779A (en) * 1989-06-21 1993-09-07 Hoechst Aktiengesellschaft Photosensitive mixture containing photocurable compound and polyurethane binder with grafted vinyl alcohol units, carboxylic acid vinyl ester units and vinyl acetal units
DE69033782T2 (de) 1989-10-14 2002-06-20 Sony Corp Verfahren und Anordnung zum Kodieren/Dekodieren eines Videosignales
JP2712645B2 (ja) 1989-10-14 1998-02-16 ソニー株式会社 動きベクトル伝送方法及びその装置並びに動きベクトル復号化方法及びその装置
US5103306A (en) 1990-03-28 1992-04-07 Transitions Research Corporation Digital image compression employing a resolution gradient
KR950011200B1 (ko) 1990-10-31 1995-09-29 니뽕 빅터 가부시끼가이샤 인터레이스 동화상 신호의 압축 장치
AU660020B2 (en) 1991-05-24 1995-06-08 British Broadcasting Corporation, The Video image processing
US5317397A (en) 1991-05-31 1994-05-31 Kabushiki Kaisha Toshiba Predictive coding using spatial-temporal filtering and plural motion vectors
US5467136A (en) 1991-05-31 1995-11-14 Kabushiki Kaisha Toshiba Video decoder for determining a motion vector from a scaled vector and a difference vector
US5428396A (en) 1991-08-03 1995-06-27 Sony Corporation Variable length coding/decoding method for motion vectors
JPH0541862A (ja) 1991-08-03 1993-02-19 Sony Corp 動きベクトルの可変長符号化方式
CA2079434A1 (en) 1991-09-30 1993-03-31 Derek Andrew Motion vector estimation, motion picture encoding and storage
JP2962012B2 (ja) 1991-11-08 1999-10-12 日本ビクター株式会社 動画像符号化装置及びその復号装置
GB2262854B (en) 1991-12-24 1995-05-24 Sony Broadcast & Communication Image processing apparatus
US6441842B1 (en) 1992-02-19 2002-08-27 8×8, Inc. Video compression/decompression processing and processors
US5594813A (en) * 1992-02-19 1997-01-14 Integrated Information Technology, Inc. Programmable architecture and methods for motion estimation
WO1993018618A1 (en) * 1992-03-03 1993-09-16 Kabushiki Kaisha Toshiba Time-varying image encoder
US6226327B1 (en) 1992-06-29 2001-05-01 Sony Corporation Video coding method and apparatus which select between frame-based and field-based predictive modes
PT2334083E (pt) 1993-03-24 2013-09-30 Sony Corp Método para codificar e descodificar vetores de movimento e respetivo dispositivo e método para codificar e descodificar sinais de imagem e respetivo dispositivo
US5442400A (en) 1993-04-29 1995-08-15 Rca Thomson Licensing Corporation Error concealment apparatus for MPEG-like video data
JPH06343172A (ja) 1993-06-01 1994-12-13 Matsushita Electric Ind Co Ltd 動きベクトル検出方法及び動きベクトル符号化方法
US5477272A (en) 1993-07-22 1995-12-19 Gte Laboratories Incorporated Variable-block size multi-resolution motion estimation scheme for pyramid coding
TW283289B (ko) 1994-04-11 1996-08-11 Gen Instrument Corp
US5594504A (en) 1994-07-06 1997-01-14 Lucent Technologies Inc. Predictive video coding using a motion vector updating routine
US5684538A (en) 1994-08-18 1997-11-04 Hitachi, Ltd. System and method for performing video coding/decoding using motion compensation
EP0710033A3 (en) 1994-10-28 1999-06-09 Matsushita Electric Industrial Co., Ltd. MPEG video decoder having a high bandwidth memory
US5623311A (en) 1994-10-28 1997-04-22 Matsushita Electric Corporation Of America MPEG video decoder having a high bandwidth memory
JPH08256341A (ja) * 1995-03-17 1996-10-01 Sony Corp 画像信号符号化方法、画像信号符号化装置、画像信号記録媒体、及び画像信号復号化装置
DE19606584C2 (de) * 1995-04-19 1997-07-31 Porsche Ag Verfahren zur Zylinderabschaltung einer Brennkraftmaschine
GB2301971B (en) 1995-06-06 1999-10-06 Sony Uk Ltd Video compression
GB2301972B (en) 1995-06-06 1999-10-20 Sony Uk Ltd Video compression
US5970173A (en) 1995-10-05 1999-10-19 Microsoft Corporation Image compression and affine transformation for image motion compensation
US5929940A (en) 1995-10-25 1999-07-27 U.S. Philips Corporation Method and device for estimating motion between images, system for encoding segmented images
US5991463A (en) 1995-11-08 1999-11-23 Genesis Microchip Inc. Source data interpolation method and apparatus
JP2798035B2 (ja) 1996-01-17 1998-09-17 日本電気株式会社 適応動きベクトル補間による動き補償フレーム間予測方法
US5787203A (en) 1996-01-19 1998-07-28 Microsoft Corporation Method and system for filtering compressed video images
US5692063A (en) 1996-01-19 1997-11-25 Microsoft Corporation Method and system for unrestricted motion estimation for video
US5799113A (en) 1996-01-19 1998-08-25 Microsoft Corporation Method for expanding contracted video images
US6957350B1 (en) 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US5982438A (en) 1996-03-22 1999-11-09 Microsoft Corporation Overlapped motion compensation for object coding
US5847776A (en) 1996-06-24 1998-12-08 Vdonet Corporation Ltd. Method for entropy constrained motion estimation and coding of motion vectors with increased search range
US6233017B1 (en) 1996-09-16 2001-05-15 Microsoft Corporation Multimedia compression system with adaptive block sizes
US6130963A (en) 1996-11-22 2000-10-10 C-Cube Semiconductor Ii, Inc. Memory efficient decoding of video frame chroma
US6377628B1 (en) 1996-12-18 2002-04-23 Thomson Licensing S.A. System for maintaining datastream continuity in the presence of disrupted source data
US6201927B1 (en) 1997-02-18 2001-03-13 Mary Lafuze Comer Trick play reproduction of MPEG encoded signals
US6005980A (en) 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
US5844613A (en) 1997-03-17 1998-12-01 Microsoft Corporation Global motion estimator for motion video signal encoding
US6404813B1 (en) 1997-03-27 2002-06-11 At&T Corp. Bidirectionally predicted pictures or video object planes for efficient and flexible video coding
US5973755A (en) 1997-04-04 1999-10-26 Microsoft Corporation Video encoder and decoder using bilinear motion compensation and lapped orthogonal transforms
US6067322A (en) 1997-06-04 2000-05-23 Microsoft Corporation Half pixel motion estimation in motion video signal encoding
US6574371B2 (en) * 1997-06-09 2003-06-03 Hitachi, Ltd. Image decoding method
EP2288166B1 (en) * 1997-06-09 2015-08-05 Hitachi, Ltd. Image decoding method
JPH1169345A (ja) 1997-06-11 1999-03-09 Fujitsu Ltd フレーム間予測動画像符号化装置及び復号装置並びにフレーム間予測動画像符号化方法及び復号方法
JP2897763B2 (ja) 1997-07-28 1999-05-31 日本ビクター株式会社 動き補償符号化装置、復号化装置、符号化方法及び復号化方法
FR2766946B1 (fr) 1997-08-04 2000-08-11 Thomson Multimedia Sa Procede et dispositif de pretraitement pour estimation de mouvement
US6281942B1 (en) 1997-08-11 2001-08-28 Microsoft Corporation Spatial and temporal filtering mechanism for digital motion video signals
US6339656B1 (en) 1997-12-25 2002-01-15 Matsushita Electric Industrial Co., Ltd. Moving picture encoding decoding processing apparatus
US6122017A (en) 1998-01-22 2000-09-19 Hewlett-Packard Company Method for providing motion-compensated multi-field enhancement of still images from video
JP3888597B2 (ja) 1998-06-24 2007-03-07 日本ビクター株式会社 動き補償符号化装置、及び動き補償符号化復号化方法
JP4026238B2 (ja) 1998-07-23 2007-12-26 ソニー株式会社 画像復号装置及び画像復号方法
US6219070B1 (en) 1998-09-30 2001-04-17 Webtv Networks, Inc. System and method for adjusting pixel parameters by subpixel positioning
GB2343579A (en) 1998-11-07 2000-05-10 Ibm Hybrid-linear-bicubic interpolation method and apparatus
US6418166B1 (en) 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
US6983018B1 (en) 1998-11-30 2006-01-03 Microsoft Corporation Efficient motion vector coding for video compression
US6496608B1 (en) 1999-01-15 2002-12-17 Picsurf, Inc. Image data interpolation system and method
US6320593B1 (en) 1999-04-20 2001-11-20 Agilent Technologies, Inc. Method of fast bi-cubic interpolation of image information
US6968008B1 (en) 1999-07-27 2005-11-22 Sharp Laboratories Of America, Inc. Methods for motion estimation with adaptive motion accuracy
US6647061B1 (en) 2000-06-09 2003-11-11 General Instrument Corporation Video size conversion and transcoding from MPEG-2 to MPEG-4
US7206453B2 (en) 2001-05-03 2007-04-17 Microsoft Corporation Dynamic filtering for lossy compression
US6950469B2 (en) 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
US20030095603A1 (en) * 2001-11-16 2003-05-22 Koninklijke Philips Electronics N.V. Reduced-complexity video decoding using larger pixel-grid motion compensation
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US7003035B2 (en) 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
US7277587B2 (en) 2002-04-26 2007-10-02 Sharp Laboratories Of America, Inc. System and method for lossless video coding
US20050013498A1 (en) 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
KR100586882B1 (ko) 2004-04-13 2006-06-08 삼성전자주식회사 모션 스케일러빌리티를 지원하는 코딩 방법 및 장치

Also Published As

Publication number Publication date
ATE330430T1 (de) 2006-07-15
ES2266665T3 (es) 2007-03-01
DE60306011T2 (de) 2006-10-05
CN1238799C (zh) 2006-01-25
HK1059857A1 (en) 2004-07-16
DE60306011D1 (de) 2006-07-27
US20030194011A1 (en) 2003-10-16
CN1453725A (zh) 2003-11-05
KR20030081119A (ko) 2003-10-17
EP1353513B1 (en) 2006-06-14
EP1353513A2 (en) 2003-10-15
CN100362510C (zh) 2008-01-16
JP2003339050A (ja) 2003-11-28
EP1353513A3 (en) 2003-10-29
CN1455349A (zh) 2003-11-12
US7305034B2 (en) 2007-12-04
JP4077354B2 (ja) 2008-04-16

Similar Documents

Publication Publication Date Title
KR100635410B1 (ko) 색도 모션 벡터 라운딩
KR100681971B1 (ko) 모션 추정 및 보상을 위한 서브-픽셀 보간처리
KR100681972B1 (ko) 근사적 겹삼차 필터
KR100593344B1 (ko) 다수 스테이지 보간처리를 위한 라운딩 제어
US7499495B2 (en) Extended range motion vectors
JP5174581B2 (ja) 順方向予測インターレース映像フレームのフィールド用の動きベクトルの予測
RU2456761C1 (ru) Операции повторной дискретизации и изменения размера изображения для кодирования и декодирования видео с переменной разрешающей способностью
US7830963B2 (en) Decoding jointly coded transform type and subblock pattern information
US8855202B2 (en) Flexible range reduction
US7609763B2 (en) Advanced bi-directional predictive coding of video frames
US20030156646A1 (en) Multi-resolution motion estimation and compensation
US7577200B2 (en) Extended range variable length coding/decoding of differential motion vector information
KR100599935B1 (ko) 정화소 탐색시의 사드값 및 확률 변수에 기반한 고속의반화소 탐색 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130521

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140516

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150515

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160517

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180516

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20190515

Year of fee payment: 14