가공데이터 · 한국어 지식관계

인터레이스 비디오 및 순차적 비디오의 효율적 압축 및압축 해제를 위한 방법 및 컴퓨터 판독가능 매체 document_id A220623041498

분류
의약학
라벨 상태 (label_status)
approved
문맥 (context)
디지털 비디오는 다량의 저장 및 전송 용량을 소비한다. 통상적인 미가공의 디지털 비디오 시퀀스(raw digital video sequence) 는 매 초당 15 또는 30개의 픽처들을 포함한다. 각각의 픽처는 수 만 또는 수 십만개의 (펠들이라고도 하는) 픽셀들을 포함할 수 있다. 각각의 픽셀은 픽처의 아주 작은 요소를 표현한다. 미가공 형태에서, 컴퓨터는 일반적으로 24 비트 이상으로써 하나의 픽셀을 표현한다. 따라서, 통상적인 미가공 디지털 비디오 시퀀스에 대한 매 초당 비트들의 수, 또는 비트 속도는 5백만 비트/초 이상일 수 있다. 대부분의 컴퓨터들 및 컴퓨터 네트워크들은 미가공의 디지털 비디오를 프로세싱하기 위한 리소스들이 부족하다. 이런 이유 때문에, 엔지니어들은 (코딩 및 인코딩이라고도 하는) 압축을 사용해 디지털 비디오의 비트 속도를 감소시킨다. 압축은 무손실일 수 있으며, 이 경우, 비디오의 품질은 손상되지 않지만 비트 속도의 감소는 비디오의 복잡도에 의해 제한된다. 또는, 압축이 유손실일 수도 있는데, 이 경우, 비디오의 품질은 손상되지만 비트 속도의 감소는 좀더 극적이다. 압축 해제는 압축을 반전시킨다. 일반적으로, 비디오 압축 기술들로는 "인트라(intra)" 압축 및 "인터(inter)" 또는 예측 압축을 들 수 있다. 비디오 프레임들의 경우, 인트라 압축 기술들은, 통상적으로 I-프레임들 또는 키 프레임들이라고 하는 개개 프레임들을 압축한다. 인터 압축 기술들은 선행 및/또는 후행 프레임들과 관련하여 프레임들을 압축하며, 인터-압축형 프레임들을 대개는 예측 프레임들, P-프레임들, 또는 B-프레임들이라고 한다. 1. Windows Media Video 버전 8 및 9에서의 인터 압축 Microsoft Corporation의 "WMV8(Windows Media Video, Version 8)"은 비디오 인코더 및 비디오 디코더를 포함한다. WMV8 인코더는 인트라 및 인터 압축을 사용하고, WMV8 디코더는 인트라 및 인터 압축 해제를 사용한다. "WMV9(Windows Media Video, Version 9)"은 다수 연산들을 위해 유사한 아키텍처를 사용한다. WMV8 인코더의 인터 압축은 잔차 오차의 변환 코딩이 수반되는 블록-기반의 움직임 보상형 예측 코딩을 사용한다. 도 1 및 도 2는 WMV8 인코더에서의 예측 프레임을 위한 블록-기반형 인터 압축을 도시한다. 특히, 도 1은 예측 프레임(110)을 위한 움직임 예측을 도시하고, 도 2는 예측 프레임의 움직임-보상형 블록을 위한 잔차 예측의 압축을 도시한다. 예를 들어, 도 1에서, WMV8 인코더는 예측 프레임(110)의 매크로블록(115)에 대한 움직임 벡터(motion vector)를 계산한다. 움직임 벡터를 계산하기 위해, 인코더는 기준 프레임(130)의 검색 영역(135)을 검색한다. 검색 영역(135)내에서, 인코더는, 양호하게 매칭되는 후보 매크로블록을 찾아내기 위해, 예측 프레임(110)으로부터의 매크로블록(115)을 다양한 후보 매크로블록들과 비교한다. 인코더는 매칭되는 매크로블록을 위한 (엔트로피 코딩된) 움직임 벡터를 특정하는 정보를 출력한다. 움직임 벡터 값은 대부분 공간적으로 둘러싸고 있는 움직임 벡터들의 값들과 상관되어 있으므로, 움직임 벡터 정보를 전송하는데 사용되는 데이터의 압축은 인접 매크로블록들의 움직임 벡터들에 기초해 움직임 벡터 예측자를 선택하고 움직임 벡터 예측자를 사용해 현 매크로블록을 위한 움직임 벡터를 예측하는 것에 의해 실현될 수 있다. 인코더는 움직임 벡터와 예측자간의 차분(differential)을 인코딩할 수 있다. 차분을 예측자에 가산하는 것에 의해 움직임 벡터를 재구성한 후, 디코더는, 인코더 및 디코더에서 이용 가능한 앞서 재구성된 프레임인 기준 프레임(130)으로부터의 정보를 사용해 매크로블록(115)을 위한 예측 매크로블록을 계산하기 위해 움직임 벡터를 사용한다. 예측은 거의 정확하지 않으므로, 인코더는 대체로, 예측 매크로블록과 매크로블록(115) 자체간의 (오차 또는 잔차 블록들이라고도 하는) 픽셀 차분들의 블록들을 인코딩한다. 도 2는 WMV8 인코더에서의 오차 블록(235)의 계산 및 인코딩에 대한 일례를 도시한다. 오차 블록(235)은 예측 블록(215)과 원래의 현재 블록(225)간의 차분이다. 인코더는 오차 블록(235)에 DCT(240)를 적용하여, 계수들의 8x8 블록(245)을 얻는다. 그 다음, 인코더는 DCT 계수들을 양자화하여(250), 양자화된 DCT 계수들의 8x8 블록(235)을 얻는다. 인코더는, 계수들이 대체로 최저 주파수에서 최고 주파수로 정렬되도록, 8x8 블록(255)을 1-차원 어레이(265)로 스캔한다(260). 인코더는 스캔된 계수들을 런 렝스 코딩(270)의 변형을 사용해 엔트로피 인코딩한다. 인코더는 하나 이상의 런/레벨/라스트 테이블들(275;run/level/last tables)로부터 엔트로피 코드를 선택하고 엔트로피 코드를 출력한다. 도 3은 인터-코딩된 블록을 위한 대응되는 디코딩 프로세스(300)의 일례를 나타낸다. 도 3을 요약하면, 디코더는, 하나 이상의 런/레벨/라스트 테이블들(315)을 갖춘 가변 길이 디코딩(310) 및 런 렝스 디코딩(320;run length decoding)을 사용해, 예측 잔차를 표현하는 엔트로피-코딩된 정보를 디코딩한다(310, 320). 디코더는 엔트로피-디코딩된 정보를 저장 중인 1-차원 어레이(325)를 2-차원 블록(335)으로 역 스캔한다(330). 디코더는 데이터를 역 양자화하고 역 DCT하여(다같이, 340), 재구성된 오차 블록(345)을 얻는다. 별개의 움직임 보상 경로에서, 디코더는 기준 프레임으로부터의 변위를 위한 움직임 벡터 정보(355)를 사용해 예측 블록(365)을 계산한다. 디코더는 예측 블록(365)을 재구성된 오차 블록(345)과 조합하여(370) 재구성된 블록(375)을 형성한다. 원래 프레임과 재구성된 프레임간의 변화량은 왜곡이고 프레임을 코딩하는데 필요한 비트 수는 프레임을 위한 속도를 지시한다. 왜곡량은 대체로 속도에 반비례한다. II. 인터레이스 비디오 및 순차적 비디오 비디오 프레임은 비디오 신호의 공간 정보에 대한 라인들을 포함한다. 순차적 비디오의 경우, 이들 라인들은 한순간에 시작해 프레임의 하단까지 연속적인 라인들을 통해 계속되는 샘플들을 포함한다. 순차적 I-프레임은 인트라-코딩형의 순차적 비디오 프레임이다. 순차적 P-프레임은 순방향 예측을 사용해 코딩된 순차적 비디오 프레임이고, 순차적 B-프레임은 양방향 예측을 사용해 코딩된 순차적 비디오 프레임이다. 통상적인 인터레이스 비디오 프레임은 상이한 시점들에서 시작해 스캔되는 2개의 필드들로 이루어진다. 예를 들어, 도 4를 참조하면, 인터레이스 비디오 프레임(400)은 상부 필드(410;top field) 및 하부 필드(420;bottom field)를 포함한다. 통상적으로, 짝수 라인들(상부 필드)이 일 시점(예를 들어, 시점 t)에서 시작해 스캔되고, 홀수 라인들(하부 필드)이 상이한 (통상적으로 이후의) 시점(예를 들어, 시점 t+1)에서 시작해 스캔된다. 이러한 타이밍은, 움직임이 존재하는 인터레이스 비디오 프레임의 영역들에서 톱니바퀴형 형상들(jagged tooth-like features)을 생성할 수 있는데, 2개의 필드들이 상이한 시점들에서 시작해 스캔되기 때문이다. 이런 이유 때문에, 인터레이스 비디오 프레임들은, 홀수 라인들이 다같이 하나의 필드로 그룹화되고 짝수 라인들이 다같이 또 하나의 필드로 그룹화되는, 필드 구조에 따라 재정렬될 수 있다. 필드 코딩으로 알려져 있는 이러한 정렬은 고속-움직임 픽처들에서 이러한 톱니형 에지의 아티팩트들을 감소시키는데 유용하다. 한편, 정지 영역들에서는, 인터레이스 비디오 프레임의 이미지 세부 사항이 이러한 재정렬없이도 좀더 효율적으로 보존될 수 있다. 따라서, 프레임 코딩은 대부분, 원래의 교대하는 필드 라인 정렬이 보존되는 정지 또는 저속-움직임의 인터레이스 비디오 프레임들에서 사용된다. 통상적인 순차적 비디오 프레임은 비-교대 라인들을 갖춘 컨텐츠의 일 프레임으로 이루어진다. 인터레이스 비디오와 달리, 순차적 비디오는 비디오 프레임들을 개별 필드들로 나누지 않으며, 단일 시점에서 시작해, 전체 프레임이 왼쪽에서 오른쪽으로, 상단에서 하단으로 스캔된다. Ⅲ. 이전의 WMV 인코더 및 디코더에서의 P-프레임 코딩 및 디코딩 인코더 및 디코더는 P-프레임들에서 순차적 및 인터레이스 코딩 및 디코딩을 사용한다. 인터레이스 및 순차적 P-프레임들에서, 움직임 벡터는, 인접 움직임 벡터들에 기초해 계산되는, 움직임 벡터와 움직임 벡터 예측자간의 차분을 계산하는 것에 의해 인코더에서 인코딩된다. 그리고, 디코더에서는, 움직임 벡터 차분을, 이 또한 (이번에는 디코더에서) 인접한 움직임 벡터들에 기초해 계산되는 움직임 벡터 예측자에 가산하는 것에 의해, 움직임 벡터가 재구성된다. 따라서, 현 매크로블록을 위한 움직임 벡터 예측자 또는 현 매크로블록에 대한 필드는 후보들에 기초해 선택되고, 움직임 벡터 차분은 움직임 벡터 예측자에 기초해 계산된다. 움직임 벡터는, 인코더 또는 디코더 측에서 움직임 벡터 차분을 선택된 움직임 벡터 예측자에 가산하는 것에 의해 재구성될 수 있다. 통상적으로, 휘도 움직임 벡터들은 인코딩된 움직임 정보로부터 재구성되고, 크로미넌스 움직임 벡터들은 재구성된 휘도 움직임 벡터들로부터 유도된다. A. 순차적 P-프레임 코딩 및 디코딩 예를 들어, 인코더 및 디코더에서, 순차적 P-프레임들은 1MV(one motion vector) 모드로 또는 4MV 모드로 인코딩된 매크로블록들 또는 스킵되는 매크로블록들을 포함할 수 있는데, 이 경우, 판정은 일반적으로 매크로블록 기반으로 이루어진다. 1MV 매크로블록들(및, 어쩌면, 스킵되는 매크로블록들)만을 갖춘 P-프레임들을 1MV P-프레임들이라고 하고, 1MV 및 4MV 매크로블록들(및, 어쩌면, 스킵되는 매크로블록들) 모두를 갖춘 P-프레임들을 혼합형-MV의 P-프레임들이라고 한다. 하나의 루마 움직임 벡터가 각각의 1MV 매크로블록과 연관되며, 최대 4개의 루마 움직임 벡터들이 (각 블록당 하나씩) 각각의 4MV 매크로블록과 연관된다. 도 5A 및 도 5B는 1MV의 순차적 P-프레임의 매크로블록을 위한 후보 움직임 벡터로 간주되는 매크로블록들의 위치들을 나타내는 도면들이다. 후보 예측자들은, 매크로블록이 그 행에서의 마지막 매크로블록인 경우를 제외하면, 왼쪽, 상단 및 상단-오른쪽 매크로블록들로 취해진다. 이 경우에는, 상단-오른쪽 대신에 상단-왼쪽 매크로블록으로부터 예측자 B가 취해진다. 프레임이 1 매크로블록 너비인 특수한 경우, 예측자는 항상 예측자 A(상단 예측자)이다. 매크로블록이 상단 행에 존재하기 때문에, 예측자 A가 경계를 벗어날 경우, 예측자는 예측자 C이다. 여타의 다양한 규칙들이 인트라-코딩형 예측자들과 같은 특수한 경우들을 다룬다. 도 6A 내지 도 10은 혼합형-MV 프레임의 1MV 또는 4MV 매크로블록에 대한 움직임 벡터를 위해 최대 3개까지의 후보 움직임 벡터들이 고려되는 블록들 또는 매크로블록들의 위치들을 나타낸다. 다음의 도면들에서, 더 큰 정사각형들은 매크로블록 경계들이고 더 작은 정사각형들은 블록 경계들이다. 프레임이 1 매크로블록 너비인 특수한 경우, 예측자는 항상 예측자 A(상단 예측자)이다. 여타의 다양한 규칙들이 상단 행의 4MV 매크로블록들을 위한 상단 행 블록들, 상단 행의 1MV 매크로블록들, 및 인트라-코딩형 예측자들과 같은 다른 특수한 경우들을 다룬다. 도 6A 및 도 6B는 혼합형-MV 프레임의 현재의 1MV 매크로블록을 위한 후보 움직임 벡터 예측자들을 위해 고려되는 블록들의 위치들을 나타내는 도면들이다. 인접한 매크로블록들은 1MV 또는 4MV 매크로블록들일 수 있다. 도 6A 및 도 6B는, 이웃들이 4MV라고 가정할 경우의 후보 움직임 벡터들을 위한 위치들을 나타낸다(즉, 예측자 A는 현 매크로블록의 위쪽 매크로블록의 블록 2를 위한 움직임 벡터이고, 예측자 C는 현 매크로블록의 바로 왼쪽 매크로블록의 블록 1을 위한 움직임 벡터이다). 이웃들 중 하나가 1MV 매크로블록이라면, 도 5A 및 도 5B에 나타낸 움직임 벡터 예측자가 전체 매크로블록을 위한 움직임 벡터 예측자인 것으로 간주된다. 도 6B가 나타내는 바와 같이, 매크로블록이 행의 마지막 매크로블록이라면, 예측자 B는, 그렇지 않은 경우에서와 같이, 상단-오른쪽 매크로블록의 블록 2 대신에 상단-왼쪽 매크로블록의 블록 3으로부터 유래한다. 도 7A 내지 도 10은 4MV 매크로블록의 4개의 휘도 블록들 각각을 위한 후보 움직임 벡터 예측자들로 고려되는 블록들의 위치들을 나타낸다. 도 7A 및 도 7B는 위치 0에서의 블록을 위한 후보 움직임 벡터 예측자들로 고려되는 블록들의 위치들을 나타내는 도면들이고; 도 8A 및 도 8B는 위치 1에서의 블록을 위한 후보 움직임 벡터 예측자들로 고려되는 블록들의 위치들을 나타내는 도면들이며; 도 9는 위치 2에서의 블록을 위한 후보 움직임 벡터 예측자들로 고려되는 블록들의 위치들을 나타내는 도면이고; 도 10은 위치 3에서의 블록을 위한 후보 움직임 벡터 예측자들로 고려되는 블록들의 위치들을 나타내는 도면이다. 이번에도, 이웃이 1MV 매크로블록이라면, 매크로블록을 위한 움직임 벡터 예측자가 매크로블록의 블록들을 위해 사용된다. 매크로블록이 행의 제 1 매크로블록인 경우, 블록 0를 위한 예측자 B는 행의 나머지 매크로블록들을 위한 블록 0와는 상이하게 핸들링된다(도 7A 및 도 7B 참고). 이 경우, 예측자 B는, 그렇지 않은 경우에서와 같이, 현 매크로블록의 위쪽 및 왼쪽 매크로블록의 블록 3으로부터 취해지는 대신에, 현 매크로블록의 바로 위쪽 매크로블록의 블록 3으로부터 취해진다. 마찬가지로, 매크로블록이 행의 마지막 매크로블록일 경우, 블록 1을 위한 예측자 B는 상이하게 핸들링된다(도 8A 및 도 8B). 이 경우, 예측자는, 그렇지 않은 경우에서와 같이, 현 매크로블록의 위쪽 및 오른쪽 매크로블록의 블록 2로부터 취해지는 대신에, 현 매크로블록의 바로 위쪽 매크로블록의 블록 2로부터 취해진다. 일반적으로, 매크로블록이 제 1 매크로블록 열이라면, 블록들(0 및 2)을 위한 예측자 C는 0으로 설정된다. B. 인터레이스 P-프레임 코딩 및 디코딩 인코더 및 디코더는, 일반적으로 판정이 매크로블록 기반으로 수행되는, 필드 모드 또는 프레임 모들로 인코딩된 매크로블록들 또는 스킵되는 매크로블록들을 포함할 수 있는 인터레이스 P-프레임들을 위해 4:1:1 매크로블록 포맷을 사용한다. 2개의 움직임 벡터들이 각각의 필드-코딩형 인터-매크로블록과 연관되고(1 움직임 벡터/필드), 하나의 움직임 벡터가 각각의 프레임-코딩형 인터-매크로블록과 연관된다. 인코더는, 어쩌면 다른 시그널링 정보와 함께, 수평 및 수직 움직임 벡터 차분 성분들을 포함하는, 움직임 정보를 결합하여 인코딩한다. 도 11, 도 12 및 도 13은, 각각, 인코더 및 디코더의 인터레이스 P-프레임들에서의 프레임-코딩형 4:1:1 매크로블록들 및 필드-코딩형 4:1:1 매크로블록들에 대한 움직임 벡터 예측을 위한 후보 예측자들의 예들을 나타낸다. 도 11은 (상단 행이 아닌, 매크로블록 행의 제 1 또는 마지막 매크로블록이 아닌) 인터레이스 P-프레임의 내부 위치에서의 현재의 프레임-코딩형 4:1:1 매크로블록을 위한 후보 예측자들(A, B 및 C)을 나타낸다. 예측자들은 (예를 들어, 현 매크로블록이 행의 제 1 매크로블록 또는 마지막 매크로블록에 위치하거나, 상단 행에 위치하는 경우와 같은 특수한 경우들에서는, 소정 예측자들이 이용 불가능하므로) A, B, 및 C로 레이블링된 방향들이 아닌 상이한 후보 방향들로부터 획득될 수도 있다. 현재의 프레임-코딩형 매크로블록에 대해, 예측자 후보들은, 인접한 매크로블록들이 필드-코딩형인지 아니면 프레임-코딩형인지에 따라 상이하게 계산된다. 인접한 프레임-코딩형 매크로블록에 대해서는, 움직임 벡터가 단순히 예측자 후보로서 취해진다. 인접한 필드-코딩된 매크로블록에 대해서는, 상부 및 하부 필드 움직임 벡터들을 평균하는 것에 의해 후보 움직임 벡터가 판정된다. 도 12 및 도 13은 필드의 내부에 위치하는 필드-코딩형의 4:1:1 매크로블록의 현재 필드를 위한 후보 예측자들(A, B 및 C)을 나타낸다. 도 12에서, 현재 필드는 하부 필드이고, 인접한 매크로블록들의 하부 필드 움직임 벡터들이 후보 예측자들로서 사용된다. 도 13에서는, 현재 필드가 상부 필드이고, 인접한 매크로블록들의 상부 필드 움직임 벡터들이 후보 예측자들로서 사용된다. 따라서, 현재의 필드-코딩된 매크로블록의 각 필드를 위해, 각 필드를 위한 움직임 벡터 예측자 후보들의 수는 기껏해야 3개이고, 각 후보는 현재 필드와 동일한 필드 유형(예를 들어, 상부 또는 하부)으로부터 유래한다. 이번에도, 현 매크로블록이 행의 제 1 매크로블록 또는 마지막 매크로블록이거나 상단 행에 위치할 경우에는, 소정 예측자들이 이용 불가능하므로, (나타내지 않은) 여러 특수한 경우들이 적용된다. 한 세트의 예측자 후보들로부터 예측자를 선택하기 위해, 인코더 및 디코더는, 3개의 중앙값 알고리즘(median-of-three algorithm)과 같은, 상이한 선택 알고리즘들을 사용한다. 3개의 중앙값 예측을 위한 절차가 도 14의 의사-코드로 설명된다. IV. 이전의 WMV 인코더 및 디코더에서의 B-프레임 코딩 및 디코딩 인코더 및 디코더는 순차적 및 인터레이스 B-프레임들을 사용한다. B-프레임들은, P-프레임들에서 사용되는 1 앵커(anchor)가 아니라, 소스 비디오로부터의 2개 프레임들을 기준(또는 앵커) 프레임들로서 사용한다. 통상적인 B-프레임을 위한 앵커 프레임들 중에서, 하나의 앵커 프레임은 시간적 과거로부터 유래하고 또 하나의 앵커는 시간적 미래로부터 유래한다. 도 15를 참조하면, 비디오 시퀀스의 B-프레임(1510)은 시간적으로 선행의 기준 프레임(1520) 및 시간적으로 후행의 기준 프레임(1530)을 가진다. B-프레임들을 갖춘 인코딩 비트 스트림들은 통상적으로, 유사한 비주얼 품질을 제공하면서도, B-프레임들없이 인코딩된 비트 스트림들보다 적은 비트들을 사용한다. 또한, 디코더는 B-프레임들을 디코딩하거나 디스플레이하지 않기로 선택하는 것에 의해 공간 및 시간 제약들을 수용할 수도 있는데, B-프레임들은 일반적으로 기준 프레임들로서 사용되지 않기 때문이다. 순방향-예측 프레임들(예를 들어, P-프레임들)의 매크로블록들은 한가지의 예측 방향 모드(선행 I- 또는 P-프레임들로부터의 순방향)만을 갖지만, B-프레임들의 매크로블록들은 5가지의 상이한 예측 모드들: 순방향, 역방향, 직접, 보간 및 인트라를 사용해 예측될 수 있다. 인코더는 상이한 예측 모드들을 선택하고 비트 스트림으로 시그널링한다. 순방향 모드는 통상적인 P-프레임 예측과 유사하다. 순방향 모드에서, 매크로블록은 시간적 선행 앵커로부터 유도된다. 역방향 모드에서, 매크로블록은 시간적 후속 앵커로부터 유도된다. 직접 또는 보간 모드들에서 예측되는 매크로블록들은 예측을 위해 순방향 및 역방향 앵커들 모두를 사용한다. V. 이전의 WMV 인코더 및 디코더에서의 매크로블록 정보 시그널링 인코더 및 디코더에서, 인터레이스 P-프레임들의 매크로블록들은 가능한 3가지 유형들: 프레임-코딩형, 필드-코딩형 및 스킵형 중 하나일 수 있다. 매크로블록 유형은 프레임-레벨 및 매크로블록-레벨 구문 요소들의 다중-요소 조합에 의해 지시된다. 인터레이스 P-프레임들을 위해, 프레임-레벨 요소 INTRLCF는 그 프레임의 매크로블록들을 코딩하는데 사용되는 모드를 지시한다. INTRLCF = 0이면, 프레임의 모든 매크로블록들은 프레임-코딩된다. INTRLCF = 1이면, 매크로블록들은 필드-코딩되거나 프레임-코딩될 수 있다. INTRLCMB 요소는, INTRLCF = 1일 때, 프레임 계층에 존재한다. INTRLCMB는, 픽처의 매크로블록 각각을 위한 필드/프레임 코딩 상태를 지시하는 비트 플레인-코딩형 어레이이다. 디코딩된 비트 플레인은 매크로블록 각각에 대한 인터레이스 상태를 1-비트 값들의 어레이로서 표현한다. 특정 비트를 위한 0 값은, 대응되는 매크로블록이 프레임 모드로 코딩되어 있다는 것을 지시한다. 1의 값은, 대응되는 매크로블록이 필드 모드로 코딩되어 있다는 것을 지시한다. 프레임-코딩형 매크로블록들의 경우, 매크로블록-레벨의 MVDATA 요소는 매크로블록의 모든 블록들과 연관되어 있다. MVDATA는, 매크로블록들의 블록들이 인트라-코딩형인지 아니면 인터-코딩형인지를 시그널링한다. 블록들이 인터-코딩형이라면, MVDATA는 움직임 벡터 차분도 지시한다. 필드-코딩된 매크로블록들의 경우, TOPMVDATA 요소는 매크로블록의 상부 필드 블록들과 연관되어 있고 BOTMVDATA 요소는 매크로블록의 하부 필드 블록들과 연관되어 있다. TOPMVDATA 및 BOTMVDATA는 각 필드의 제 1 블록에서 송신된다. TOPMVDATA는, 상부 필드 블록들이 인트라-코딩형인지 아니면 인터-코딩형인지를 지시한다. 마찬가지로, BOTMVDATA는, 하부 필드 블록들이 인트라-코딩형인지 아니면 인터-코딩형인지를 지시한다. 인터-코딩형 블록들의 경우, TOPMVDATA 및 BOTMVDATA는 움직임 벡터 차분 정보도 지시한다. CBPCY 요소는, 매크로블록의 휘도 및 크로미넌스 성분들을 위한 CBP(coded block pattern) 정보를 지시한다. CBPCY 요소는, 어떤 필드들이 비트스트림에 존재하는 움직임 벡터 데이터 요소들을 갖는지도 지시한다. CBPCY 및 움직임 벡터 데이터 요소들은, 블록들이 AC 계수들을 갖는지를 특정하는데 사용된다. MVDATA로부터 디코딩된 "last" 값이, 움직임 벡터 이후에 디코딩해야 할 데이터가 존재한다고 지시한다면, CBPCY는 인터레이스 P-프레임의 프레임-코딩형 매크로블록에 대해 존재한다. CBPCY가 존재하면, 그것은 4개의 Y 블록들 각각을 위한 1 비트, 양자의 U 블록들(상부 필드 및 하부 필드)을 위한 1 비트, 및 양자의 V 블록들(상부 필드 및 하부 필드)을 위한 1 비트의 6-비트 필드로 디코딩된다. CBPCY는 필드-코딩된 매크로블록에 대해 항상 존재한다. CBPCY 및 2개의 필드 움직임 벡터 데이터 요소들은 매크로블록의 블록들에서 AC 계수들의 존재를 판정하는데 사용된다. CBPCY의 의미는 비트들(1, 3, 4 및 5)을 위한 프레임-코딩형 매크로블록들에 대한 것과 동일하다. 다시 말해, 이들은, 각각, 오른쪽 상부 필드 Y 블록, 오른쪽 하부 필드 Y 블록, 상부/하부 U 블록들, 및 상부/하부 V 블록들에서의 AC 계수들의 존재 또는 부존재를 지시한다. 비트 위치들(0 및 2)의 경우, 의미는 약간 다르다. 비트 위치 0에서의 0은, TOPMVDATA가 존재하지 않으며 움직임 벡터 예측자가 상부 필드 블록들을 위한 움직임 벡터로서 사용된다는 것을 지시한다. 그것은 또한, 왼쪽 상부 필드 블록이 0이 아닌 어떤 계수들도 포함하지 않는다는 것을 지시한다. 비트 위치 0에서의 1은 TOPMVDATA가 존재한다는 것을 지시한다. TOPMVDATA는, 상부 필드 블록들이 인터인지 아니면 인트라인지를 지시하고, 그들이 인터라면, 움직임 벡터 차분도 지시한다. TOPMVDATA로부터 디코딩되는 "last" 값이 1로 디코딩되면, 왼쪽 상부 필드 블록을 위한 AC 계수들은 존재하지 않으며, 그렇지 않으면, 왼쪽 상부 필드 블록을 위해 0이 아닌 AC 계수들이 존재한다. 마찬가지로, 상기 규칙들은 BOTMVDATA를 위한 비트 위치 2 및 왼쪽 하부 필드 블록에도 적용된다. VI. 이전의 WMV 인코더 및 디코더의 스킵된 매크로블록들 인코더 및 디코더는 비트 속도를 감소시키기 위해 스킵된 매크로블록들을 사용한다. 예를 들어, 인코더는 비트 스트림으로 스킵된 매크로블록들을 시그널링한다. 디코더가, 그 매크로블록이 스킵된다는 것을 지시하는 비트 스트림의 정보(예를 들어, 스킵된 매크로블록 플래그)를 수신할 경우, 디코더는 매크로블록에 대해 오차 블록 정보를 디코딩하는 것을 스킵한다. 대신에, 디코더는 기준 프레임의 같은 장소에 배치되어 있는 매크로블록 또는 (움직임 벡터 예측자로써) 움직임 보상된 매크로블록을 사용해 매크로블록을 재구성한다. 인코더 및 디코더는 스킵된 매크로블록 정보를 인코딩 및 디코딩하기 위해 다수의 코딩/디코딩 모드들 사이에서 선택한다. 예를 들어, 스킵된 매크로블록 정보는 비트 스트림의 프레임 레벨에서(예를 들어, 압축형 비트 플레인으로) 또는 매크로블록 레벨에서(예를 들어, 매 매크로블록마다 하나의 "skip" 비트로써) 시그널링된다. 비트 플레인 코딩을 위해, 인코더 및 디코더는 상이한 비트 플레인 코딩 모드들 사이에서 선택한다. 이전의 일 인코더 및 디코너는 스킵된 매크로블록을, 움직임이 그것의 인과적으로 예측되는 움직임과 동일하고 0의 잔차 오차를 가진 예측형 매크로블록으로 정의한다. 이전의 다른 인코더 및 디코더는 스킵된 매크로블록을 0의 움직임 및 0의 잔차 오차를 가진 예측형 매크로블록으로 정의한다. 스킵된 매크로블록들 및 비트 플레인 코딩에 관한 더 많은 정보를 위해서는, 2002년 12월 16일에 "Skip Macroblock Coding"이라는 명칭으로 출원된 미국 특허출원 제 10/321,415호를 참고한다. VII. 이전의 WMV 인코더 및 디코더에서의 크로마 움직임 벡터들 크로마 움직임 벡터 유도는 비디오 코딩 및 디코딩의 중요한 양태이다. 따라서, 이전의 WMV 인코더 및 디코더를 위한 소프트웨어는 휘도(또는 "루마") 움직임 벡터들로부터 크로미넌스(또는 "크로마") 움직임 벡터들을 유도하기 위해 라운딩 및 서브-샘플링을 사용한다. A. 루마 움직임 벡터 재구성 이전의 WMV 인코더 및 디코더는 순차적 프레임들의 1MV 및 4MV 매크로블록들과 인터레이스 프레임들의 프레임-코딩형 또는 필드-코딩된 매크로블록들을 위한 움직임 벡터들을 재구성한다. 루마 움직임 벡터는 움직임 벡터 차분을 움직임 벡터 예측자에 가산하는 것에 의해 재구성된다. 순차적 프레임들의 1MV 매크로블록들 및 인터레이스 프레임들의 프레임-코딩형 매크로블록들에서는, 단일의 루마 움직임 벡터가 매크로블록의 루마 성분을 구성하는 4개 블록들에 적용된다. 순차적 프레임들의 4MV 매크로블록들에서, 매크로블록의 인터-코딩형 루마 블록들 각각은 자신만의 루마 움직임 벡터를 가진다. 따라서, 매크로블록의 인터-코딩형 블록들의 수에 따라, 각각의 4MV 매크로블록에 대해 최대 4개의 루마 움직임 벡터들이 존재한다. 인터레이스 프레임들의 필드-코딩된 매크로블록들에는, 각 필드를 위해 하나씩 2개의 루마 움직임 벡터들이 존재한다. B. 크로마 움직임 벡터들의 유도 및 재구성 인코더 및 디코더는 순차적 프레임들을 위해 4:2:0 매크로블록 포맷을 사용한다. 프레임 데이터는 루마("Y") 성분 및 크로마 성분들("U" 및 "V")을 포함한다. 각각의 매크로블록은 (간혹 하나의 16x16 매크로블록으로서 취급되는) 4개의 8x8 휘도 블록들 및 2개의 8x8 크로미넌스 블록들을 포함한다. 도 16은 4:2:0의 YUV 샘플링 그리드를 나타낸다. 도 16의 4:2:0 YUV 샘플링 그리드는 매크로블록의 루마 및 크로마 샘플들간의 공간 관계를 나타낸다. 크로마 샘플들의 해상도는 수평(x) 및 수직(y) 방향들 모두에서 루마 샘플들에 대한 해상도의 절반이다. 따라서, 루마 그리드상의 대응되는 거리들로부터 크로마 그리드상의 거리들을 유도하기 위해, 이전의 WMV 인코더 및 디코더는 루마 움직임 벡터 성분들을 2만큼 나눈다. 이것은 순차적 프레임들의 루마 움직임 벡터들로부터 크로마 움직임 벡터들을 유도하는 다운-샘플링 단계의 기본이다. 순차적 프레임들의 인코더 및 디코더, 크로마 벡터들은 2개의 단계들로 재구성된다. 첫번째, 루마 움직임 벡터들을 적절하게 조합하고 스케일링하는 것에 의해 공칭의 크로마 움직임 벡터가 획득된다. 두번째, 스케일링 이후에 디코딩 시간을 감소시키기 위해 선택적으로 라운딩(rounding)이 수행된다. 예를 들어, 1MV 매크로블록에서, 크로마 움직임 벡터 성분들(cmv_x 및 cmv_y)은 루마 성분들을 다음의 의사-코드에 따라 스케일링하는 것에 의해 루마 움직임 벡터 성분들(Imv_x 및 Imv_y)로부터 유도된다. //s_RndTbl[O] = 0, s_RndTbl[1] = 0, s_RndTbl[2] = 0, s_RndTbl[3] = 1 cmv_x = (Imv_x + s_RndTbl[1mv_x 0026# 3])003e#003e# 1 cmv_y = (Imv_y + s_RndTbl[1mv_y 0026# 3])003e#003e# 1 1/4-픽셀 오프셋들보다 1/2-픽셀 오프셋들이 바람직하도록, 라운딩 테이블 어레이(s_RndTbl[])로써 스케일링이 수행된다. 스케일링 연산 이후에 추가적인 라운딩이 수행되어 디코딩 시간을 감소시킬 수 있다. 4MV 매크로블록에서, 인코더 및 디코더는 도 17의 의사-코드(1700)에 따라 4개의 루마 블록들의 움직임 정보로부터 크로마 움직임 벡터를 유도한다. 도 17에 나타낸 바와 같이, 인코더 및 디코더는 중앙값 예측을 사용하거나 매크로블록의 인터-코딩형 블록들에 대한 루마 움직임 벡터들을 평균하여 크로마 움직임 벡터 성분들을 유도한다. 3 이상의 블록들이 인트라-코딩되는 특수한 경우에서는, 크로마 블록들도 인트라-코딩된다. 시퀀스-레벨 비트 FASTUVMC = 1이면, 인코더 및 디코더는 추가적인 라운딩을 수행한다. FASTUVMC에 의해 시그널링되는 라운딩은 크로마 움직임 벡터들을 위해 1/2-픽셀 및 정수 픽셀 위치들을 선호하는데, 이것은 인코딩 속도를 높일 수 있다. 이전의 WMV 인코더 및 디코더는 인터레이스 프레임들을 위해 4:1:1 매크로블록 포맷을 사용한다. 인터레이스 프레임들의 경우, 프레임 데이터도 루마("Y") 성분 및 크로마 성분들("U" 및 "V")을 포함한다. 그러나, 4:1:1 매크로블록 포맷에서, 크로마 샘플들의 해상도가 수평 방향으로는 루마 샘플들에 대한 해상도의 1/4이고, 수직 방향으로는 완전 해상도이다. 따라서, 루마 그리드상의 대응되는 거리들로부터 크로마 그리드상의 거리들을 유도하기 위해서, 이전의 WMV 인코더 및 디코더는 수평의 루마 움직임 벡터 성분들을 4로 나눈다. 프레임-코딩형 매크로블록의 경우, 단일의 루마 움직임 벡터에 대응되는 하나의 크로마 움직임 벡터가 유도된다. 필드-코딩된 매크로블록의 경우, 상부 필드를 위한 하나와 하부 필드를 위한 또 하나의 2개의 휘도 움직임 벡터들에 대응되는 2개의 크로미넌스 움직임 벡터들이 유도된다. 이전의 WMV 인코더 및 디코더에서, 인터레이스 프레임들의 크로마 움직임 벡터들을 유도하기 위한 규칙들은 필드 코딩형 매크로블록들 및 프레임-코딩형 매크로블록들 모두를 위해 동일하다. 크로미넌스 움직임 벡터의 x-성분은 4의 팩터만큼 스케일링(다운-샘플링)되는 한편, 크로미넌스 움직임 벡터의 y-성분은 휘도 움직임 벡터와 동일한 상태를 유지한다. 크로미넌스 움직임 벡터의 스케일링된 x-성분 또한 인접한 1/4 픽셀 위치로 라운딩된다. 크로마 움직임 벡터들은, cmv_x 및 cmv_y가 크로마 움직임 벡터 성분들을 지시하고, Imv_x 및 Imv_y가 대응되는 휘도 움직임 벡터 성분들을 지시하는 다음의 의사-코드에 따라 재구성된다. frac_x4 = (Imv_x 003c#003c#2) % 16; int_x4 = (Imv_x 003c#003c#2)- frac x; ChromaMvRound[16] = 0, 0, 0, .25, .25, .25, .5, .5, .5, .5, .5, .75, .75, .75, 1, 1; cmv_y = Imv_y; cmv_x = Sign(Imv_x)*(int_x4003e#003e# 2) + ChromaMvRound[frac_x4]; Ⅷ. 비디오 압축 및 압축 해제를 위한 표준들 몇가지 국제 표준들이 비디오 압축 및 압축 해제와 관련되어 있다. 이러한 표준들로는 "MPEG(Motion Picture Experts Group)" 1, 2, 및 4 표준들과 "ITU(International Telecommunication Union)"로부터의 H.261, H.262 (MPEG-2를 위한 다른 타이틀), H.263 및 (JVT/AVC라고도 하는) H.264 표준들을 들 수 있다. 이러한 표준들은 비디오 디코더들의 양태들 및 압축된 비디오 정보를 위한 포맷들을 특정한다. 직접적으로 또는 암시적으로, 이들은 소정의 인코더 세부 사항들도 특정하지만, 다른 인코더 세부 사항들은 특정되지 않는다. 이들 표준들은 인트라프레임 및 인터프레임의 압축 해제 및 압축의 상이한 조합들을 사용한다(또는 사용을 지원한다). A. 표준들에서의 움직임 예측/보상 국제 표준들의 디지털 비디오 시퀀스들의 데이터 압축을 실현하는데 사용되는 주된 방법들 중 하나는 픽처들간의 시간적 중복(temporal redundancy)을 감소시키는 것이다. 대중적인 이들 압축 방식들(MPEG-1, MPEG-2, MPEG-4, H.261, H.263 등)은 움직임 예측 및 보상을 사용한다. 예를 들어, 현재 프레임은 균일한 정사각형 영역들(예를 들어, 블록들 및/또는 매크로블록들)로 분할된다. 각각의 현재 영역을 위한 매칭 영역은 영역을 위한 움직임 벡터 정보를 송신하는 것에 의해 특정된다. 움직임 벡터는, 현재 영역을 위한 예측자로서 사용될 앞서 코딩된(그리고 재구성된) 기준 프레임에서의 영역에 대한 위치를 지시한다. 현재 영역과 기준 프레임의 영역간의, 오차 신호라고 하는, 픽셀 기반의 차분이 유도된다. 이러한 오차 신호는 대부분 원래 신호보다 낮은 엔트로피를 가진다. 따라서, 정보는 더 낮은 속도에서 인코딩될 수 있다. WMV 8 및 9 인코더들 및 디코더들에서와 같이, 움직임 벡터 값은 대부분 공간적으로 에워싸는 움직임 벡터들과 상관되어 있으므로, 움직임 벡터 정보를 표현하는데 사용되는 데이터의 압축은 현재 움직임 벡터와 앞서 코딩된, 인접한 움직임 벡터들에 기초하는 움직임 벡터 예측자간의 차분을 코딩하는 것에 의해 실현될 수 있다. 일부 국제 표준들은 인터레이스 비디오 프레임들에서의 움직임 예측 및 보상을 설명한다. 예를 들어, MPEG-2 표준의 섹션 7.6.1은 듀얼-프라임 인코딩 모드를 설명한다. 듀얼-프라임 인코딩에서는, 하나의 움직임 벡터만이 차분 움직임 벡터와 함께 비트스트림으로 (그것의 완전 포맷으로) 인코딩된다. 필드 픽처들의 경우, 이 정보로부터 2개의 움직임 벡터들이 유도된다. 유도된 2개의 움직임 벡터들은, 평균되어 최종 예측을 형성하는 2개의 기준 필드들(하나의 상부 필드 및 하나의 하부 필드)로부터 예측들을 형성하는데 사용된다. 프레임 픽처들의 경우, 이 프로세스는, 총 4개의 필드 예측들이 형성되도록, 2개의 필드들에 대해 반복된다. MPEG-4 표준에 대한 1998년 5월 28일의 위원회 초안은 인터레이스 및 순차적 비디오에 대한 움직임 보상을 설명한다. 섹션 7.5.5는 순차적 VOP들(video object planes)에서의 움직임 보상을 설명한다. 후보 움직임 벡터들이 인접한 매크로블록들 또는 블록들로부터 수집된다. VOP 외부로부터의 후보 움직임 벡터들은 유효하지 않은 것으로 취급된다. 하나의 후보 움직임 벡터만이 유효하지 않다면, 그것은 0으로 설정된다. 2개만이 유효하지 않다면, 그들은 제 3의 움직임 벡터와 동일하게 설정된다. 3개 모두가 유효하지 않다면, 그들은 0으로 설정된다. 중앙값 필터링이 3개의 후보들에 대해 수행되어 예측자를 계산한다. MPEG-4 표준의 위원회 초안에 대한 섹션 7.6.2는 인터레이스 비디오를 위한 움직임 보상을 설명한다. 예를 들어, 섹션 7.6.2.1은 각 필드를 위해 하나의 움직임 벡터를 가진 필드-예측형 매크로블록들 및 매 블록마다 하나의 움직임 벡터 또는 매 매크로블록마다 하나의 움직임 벡터를 가진 프레임-예측형 매크로블록들을 설명한다. 중앙값 필터링에 의해 예측자가 선택되는 상태에서, 인접한 매크로블록들 또는 블록들로부터 후보 움직임 벡터들이 수집된다. JVT/AVC 표준에 대한 초안 JVT-d157의 섹션 8.4는 움직임 보상도 설명한다. 현재 블록의 움직임 벡터에 대한 성분들은 중앙값 예측을 사용해 예측된다. (예측이 동일한 슬라이스에 속하지 않는 매크로블록들의 경계들에 걸쳐 발생하지는 않는다.) 먼저, 3개의 인접한 후보 블록들에 대한 움직임 벡터 값들 및 기준 픽처들이 판정된다. 상단 오른쪽 블록이 현재 픽처 또는 슬라이스의 외부에 위치하거나 디코딩 순서로 인해 이용 불가능하다면, 상단 오른쪽 블록의 움직임 벡터 및 기준 픽처는 상단 왼쪽 블록에 대한 것들과 동일한 것으로 간주된다. 상단, 상단 오른쪽, 및 상단 왼쪽 블록들 모두가 현재 픽처 또는 슬라이스 외부에 위치한다면, 그들의 움직임 벡터들 및 기준 픽처들은 왼쪽 블록에 대한 것들과 동일한 것으로 간주된다. 다른 경우들에서, 인트라-코딩되거나 현재 픽처 또는 슬라이스 외부에 위치하는 후보 예측자 블록을 위한 벡터 값은 0인 것으로 간주되고, 기준 픽처는 현재 블록과는 상이한 것으로 간주된다. 일단 후보 예측자들의 움직임 벡터 값들 및 기준 픽처들이 판정되고 난 후, 왼쪽, 상단, 및 상단 오른쪽 블록들 중 하나만이 현재 블록과 동일한 기준 픽처를 가진다면, 현재 블록을 위해 예측되는 움직임 벡터는 동일한 기준 픽처를 가진 블록의 움직임 벡터 값과 동일하다. 그렇지 않으면, 현재 블록을 위해 예측되는 움직임 벡터 값의 각 성분은 왼쪽, 상단 및 상단 오른쪽 블록들의 대응되는 후보 움직임 벡터 성분 값들의 중앙값으로서 계산된다. 섹션 8.4는 매크로블록-적응적 프레임/필드 코딩도 설명한다. 인터레이스 프레임들에서, 매크로블록들은 매크로블록 쌍들(상부 및 하부)로 그룹화된다. 매크로블록 쌍들은 필드-코딩되거나 프레임-코딩될 수 있다. 프레임-코딩형 매크로블록 쌍에서, 매크로블록 쌍은 2개의 프레임-코딩형 매크로블록들로 디코딩된다. 필드-코딩된 매크로블록 쌍에서, 상부 매크로블록은 매크로블록 쌍의 상부-필드 라인들로 이루어지고, 하부 매크로블록은 매크로블록 쌍의 하부-필드 라인들로 이루어진다. 현재 블록이 프레임 코딩 모드라면, 인접한 블록들의 후보 움직임 벡터들 또한 프레임-기반형이다. 현재 블록이 필드-코딩 모드라면, 인접한 블록들의 후보 움직임 벡터들도 동일한 필드 패리티의 필드-기반형이다. B. 표준들에서의 필드- 또는 프레임-코딩형 매크로블록들의 시그널링 일부 국제 표준들은 인터레이스 픽처들의 매크로블록들에 대한 필드/프레임 코딩 유형(예를 들어, 필드-코딩 또는 프레임-코딩)의 시그널링을 설명한다. JVT/AVC 표준의 초안 JVT-d157은, 인터레이스 P-프레임들의 매크로블록 쌍이 프레임 모드로 아니면 필드 모드로 디코딩되는지를 시그널링하는데 사용되는 mb_field_decoding_flag 구문 요소를 설명한다. 섹션 7.3.4는, 시퀀스 파라미터(mb_frame_field_adaptive_flag)가 매크로블록들의 프레임과 필드 디코딩간의 스위칭을 지시하고 슬라이스 헤더 요소(pic_structure)가 픽처 구조를 인터레이스 프레임 픽처로서 식별할 경우, mb_field_decoding_flag가 슬라이스 데이터의 요소로서 송신되는 비트스트림 구문을 설명한다. MPEG-4에 대한 1998년 5월 28일의 위원회 초안은, 매크로블록이 프레임 DCT 코딩형인지 아니면 필드 DCT 코딩형인지를 시그널링하는데 사용되는 dct_type 구문 요소를 설명한다. 섹션들 6.2.7.3 및 6.3.7.3에 따르면, dct_type은, 매크로블록이 0이 아닌 코딩형 블록 패턴을 갖거나 인트라-코딩형인 인터레이스 컨텐츠의 MPEG-4 비트스트림에만 존재하는 매크로블록-계층 요소이다. MPEG-2에서도, dct_type 요소는, 매크로블록이 프레임 DCT 코딩형인지 아니면 필드 DCT 코딩형인지를 지시하는 매크로블록-계층 요소이다. MPEG-2는 픽처 코딩 확장 요소(frame_pred_frame_dct)도 설명한다. frame_pred_frame_dct가 '1'로 설정될 경우, 프레임 DCT 코딩만이 인터레이스 프레임들에 사용된다. dct_type = 0의 조건은, frame_pred_frame_dct = 1이고 dct_type 요소가 비트스트림에 존재하지 않을 경우에 "유도된다". C. 표준들에서의 스킵된 매크로블록들 일부 국제 표준들은 스킵된 매크로블록들을 사용한다. 예를 들어, JVT/AVC 표준의 초안 JVT-d157은 스킵된 매크로블록을 "매크로블록이 '스킵형'으로 디코딩될 것이라는 지시가 아닌 데이터는 코딩되지 않는 매크로블록"으로 정의한다. 마찬가지로, MPEG-4의 위원회 초안은 "스킵된 매크로블록은 그에 대한 정보가 전송되지 않는 매크로블록"이라고 기술한다. D. 표준들에서의 크로마 움직임 벡터들 국제 표준들에서 디지털 비디오 시퀀스들의 데이터 압축을 실현하는데 사용되는 주된 방법들 중 하나는 픽처들간의 시간적 중복을 감소시키는 것이다. 대중적인 이들 압축 방식들(MPEG-1, MPEG-2, MPEG-4, H.261, H.263 등)은 움직임 예측 및 보상을 사용한다. 예를 들어, 현재 프레임은 루마 및 크로마 정보의 균일한 정사각형 영역들(예를 들어, 블록들 및/또는 매크로블록들)로 분할된다. 각각의 현재 영역을 위한 매칭 영역은 영역을 위한 움직임 벡터 정보를 송신하는 것에 의해 특정된다. 예를 들어, 루마 움직임 벡터는, 현재 영역을 위한 예측자로서 사용될 앞서 코딩된(그리고 재구성된) 프레임에서의 루마 샘플들의 영역에 대한 위치를 지시한다. 현재 영역과 기준 프레임 영역간의, 오차 신호라고 하는, 픽셀 기반의 차분이 유도된다. 이러한 오차 신호는 대부분 원래 신호보다 낮은 엔트로피를 가진다. 따라서, 정보는 더 낮은 속도에서 인코딩될 수 있다. WMV 8 및 9 인코더들 및 디코더들에서와 같이, 움직임 벡터 값은 대부분 공간적으로 에워싸는 움직임 벡터들과 상관되어 있으므로, 움직임 벡터 정보를 표현하는데 사용되는 데이터의 압축은 현재 움직임 벡터와 앞서 코딩된, 인접한 움직임 벡터들에 기초하는 움직임 벡터 예측자간의 차분을 코딩하는 것에 의해 실현될 수 있다. 통상적으로, 크로마 움직임 벡터들은, 크로마 움직임 벡터들을 개별적으로 계산하고 인코딩하는 것과 연관된 오버헤드를 방지하기 위해 루마 움직임 벡터들로부터 유도된다. 일부 국제 표준들은 루마 움직임 벡터들로부터 크로마 움직임 벡터들을 유도하는 것을 설명한다. MPEG 2 표준의 섹션 7.6.3.7은, 크로마 움직임 벡터 성분들을 적절하게 스케일링하기 위해 수평 및 수직의 루마 움직임 벡터 성분들 각각을 2로 나누는 것에 의해, 4:2:0 매크로블록 포맷의 루마 움직임 벡터들로부터 크로마 움직임 벡터들을 유도하는 것을 설명한다. 4:2:2 포맷에서는, 크로마 정보가 수평 방향으로만 서브-샘플링되므로, 수직 성분은 2로 나누어지지 않는다. 4:4:4 포맷에서는, 크로마 정보가 루마 정보와 동일한 해상도에서 샘플링되므로, 어떤 성분도 2로 나누어지지 않는다. H.263 표준의 부록 F는 예측을 위해 매 매크로블록마다 4개의 움직임 벡터들을 사용하는 향상된 예측 모드를 설명한다. 향상된 예측 모드에서, 4개의 움직임 벡터들 각각은 매크로블록에서의 4개의 휘도 블록들 중 하나의 모든 픽셀들을 위해 사용된다. (4:2:0 포맷에서의) 양자의 크로미넌스 블록들을 위한 움직임 벡터는 각 방향에서의 4개의 휘도 움직임 벡터 성분들에 대한 합을 계산하고 8로 나누는 것에 의해 유도된다. 마찬가지로, MPEG4 표준에 대한 1998년 5월 28일의 위원회 초안의 섹션 7.5.5는 K 8x8 블록에 대응되는 K개 움직임 벡터들의 합을 계산하고 합을 2*K로 나누는 것에 의해 4:2:0 포맷의 크로미넌스 블록들 양자에 대한 움직임 벡터 MVDCHR을 유도하는 것을 설명한다. 크로미넌스를 위한 예측은 2개의 크로미넌트 블록들의 모든 픽셀들에 움직임 벡터 MVDCHR을 적용하는 것에 의해 획득된다. JVT/AVC 표준의 초안 JVT-d157의 섹션 8.4.1.4는 루마 움직임 벡터의 수평 및 수직 성분들 각각을 2로 나누는 것에 의해 4:2:0 매크로블록 포맷의 루마 움직임 벡터들로부터 크로마 움직임 벡터들을 유도하는 것도 설명한다. 초안 JVT-d157의 섹션 7.4.5는 상이한 루마 블록 사이즈들(예를 들어, 16x16, 16x8, 8x16 및 8x8) 및 연관된 크로마 블록들을 갖춘 매크로블록들을 설명한다. 예를 들어, P-슬라이스들 및 SP-슬라이스들의 경우, "움직임 벡터에는 각각의 NxM 루마 블록 및 연관된 크로마 블록들이 제공된다". E. 표준들의 제한들 이들 국제 표준들은 몇가지 중요한 방식들로 한정된다. 예를 들어, JVT/AVC 표준의 초안 JVT-d157 및 MPEG-4 표준의 위원회 초안은, 하나 이상의 후보 움직임 벡터들이 0으로 설정된 경우라 하더라도, 중앙값 예측을 사용해 움직임 벡터 예측자들을 계산하는 것을 설명한다. 후보들이 0으로 설정된 경우에 중앙값 예측을 사용하는 것은 대부분 비대칭의 움직임 벡터 예측자들을 발생시킨다. 또한, 표준들은 4개의 코딩된 필드 움직임 벡터들로써 매크로블록들을 예측하는 것도 설명하지 않는데, 이것은 움직임 예측 및 보상의 공간 적응성을 한정적으로 제한한다. 또한, 초안 JVT-d157은 개별적인 인터레이스 매크로블록들을 통해서가 아니라 매크로블록 쌍들의 사용을 통해 인터레이스 코딩 및 디코딩을 수행하는데, 이것은 픽처내의 필드-코딩/프레임-코딩의 적응성을 제한한다. 다른 예로서, 표준들이 매크로블록 유형들의 시그널링을 제공하기는 하지만, 필드/프레임 코딩 유형 정보는 움직임 보상 유형들(예를 들어, 필드 예측 또는 프레임 예측, 일 움직임 벡터 또는 다수 움직임 벡터들 등)로부터 개별적으로 시그널링된다. 또 다른 예로서, 일부 국제 표준들이 소정 매크로블록들을 스킵하는 것에 의해 비트 속도 절감을 허용하기는 하지만, 이러한 표준들에서의 스킵된 매크로블록 조건은 매크로블록에 대해 추가적인 정보가 인코딩되지 않는다는 것을 지시할 뿐이며 매크로블록에 관해 잠재적으로 유용한 다른 정보를 제공할 수는 없다. 또 다른 예로서, 몇가지 표준들은 크로마 움직임에서의 국지적인 변화들을 충분하게 표현하지 않는 크로마 움직임 벡터들을 사용한다. 다른 문제는, 특히 필드-코딩형 컨텐츠를 위한, 크로마 움직임 벡터 유도에서의 불충분한 라운딩 메커니즘들이다. 디지털 비디오에 대한 비디오 압축 및 압축 해제의 결정적인 중요성을 알게 되면, 비디오 압축 및 압축 해제가 풍부하게 개발된 분야들이라는 것이 놀라운 일이 아니다. 그러나, 이전의 비디오 압축 및 압축 해제 기술들의 이점들이 무엇이든, 이들은 다음의 기술들 및 도구들의 이점들을 갖지 않는다. 요약 간략하게, 상세한 설명은 비디오 프레임들을 인코딩 및 디코딩하기 위한 다양한 기술들 및 도구들에 관한 것이다. 설명된 실시예들은, 다음과 같은 것들을 포함하지만, 그에 한정되는 것은 아닌, 설명된 기술들 및 도구들 중 하나 이상을 구현한다. 일 양태에서, 인코더/디코더는 인터레이스 프레임-코딩된, 순방향 예측 픽처(예를 들어, 인터레이스 P-프레임)의 매크로블록을 위한 4개의 필드 움직임 벡터들에 대한 정보를 구비하는 움직임 벡터 정보를 수신한다. 인코더/디코더는 4개의 필드 움직임 벡터들을 사용해 매크로블록을 프로세싱한다. 4개의 필드 움직임 벡터들 중 2개는 매크로블록의 제 1 필드에서의 움직임을 표현하고, 4개의 필드 움직임 벡터들 중 나머지 2개는 매크로블록의 제 2 필드에서의 움직임을 표현한다. 4개의 필드 움직임 벡터들을 위한 정보는 4개의 필드 움직임 벡터들을 위한 움직임 벡터 차분들을 포함할 수 있다. 다른 양태에서, 인코더/디코더는 인터레이스 프레임 코딩된 픽처(예를 들어, 인터레이스 P-프레임)의 현 매크로블록(예를 들어, 2 필드 움직임 벡터 매크로블록 또는 4 필드 움직임 벡터 매크로블록)에서의 필드 움직임 벡터를 예측하기 위한 다수의 유효한 후보 움직임 벡터들(예를 들어, 인접한 매크로블록들로부터의 프레임 또는 필드 움직임 벡터들)을 판정한다. 인코더/디코더는 유효한 후보 움직임 벡터들에 적어도 부분적으로 기초해 필드 움직임 벡터를 위한 움직임 벡터 예측자를 계산한다. 계산은, 유효한 후보 움직임 벡터들의 수가 3인지에 기초해 유효한 후보 움직임 벡터들에 대해 중앙값 연산(예를 들어, 성분-방식의 중앙값 연산)을 수행할 것인지를 판정하는 단계를 구비한다. 유효한 후보 움직임 벡터들의 수가 3이라면, 계산은 유효한 후보 움직임 벡터들에 대한 중앙값 연산을 수행하는 단계를 더 구비할 수 있다. 수가 3 미만이라면, 계산은, 중앙값 연산을 수행하는 단계없이, 유효한 후보 움직임 벡터를 움직임 벡터 예측자로서 선택하는 단계를 구비할 수 있다. 인코더/디코더는 움직임 벡터 예측자 및 (차분이 존재하지 않는다는 것을 지시할 수도 있는) 움직임 벡터 차분 정보에 적어도 부분적으로 기초해 필드 움직임 벡터를 재구성할 수 있다. 유효한 후보 움직임 벡터들은 인터레이스 프레임 코딩된 픽처내의 또는 현 매크로블록과 동일한 슬라이스내의 블록, 매크로블록 필드, 매크로블록 필드 부분, 또는 매크로블록을 위한 것으로써 특징지워질 수 있고, 인트라 블록, 매크로블록 필드, 매크로블록 필드 부분, 또는 매크로블록을 위한 것이 아니라 실제의 움직임 벡터 값일 수도 있다. 또 다른 양태에서, 인코더/디코더는 인터레이스 프레임 코딩된 픽처의 현재 필드를 위한 필드 움직임 벡터를 예측하기 위한 후보 움직임 벡터들을 판정하고, 후보 움직임 벡터들 중 하나 이상을 위한 필드 극성을 판정하며, 필드 극성에 적어도 부분적으로 기초해, 필드 움직임 벡터를 위한 움직임 벡터 예측자를 계산한다. 후보 움직임 벡터들은 1/4-픽셀 증분들로 측정될 수 있다. 필드 극성들은, 후보 움직임 벡터의 y-성분에 비트 방식의 AND 연산을 수행하는 것에 의해 판정될 수 있다. 후보 움직임 벡터에 대한 필드 극성을 판정하는 단계는, 후보 움직임 벡터가 기준 프레임의 상부 필드 또는 하부 필드에서의 변위를 지시하는지 또는 후보 움직임 벡터가 현재 필드와 동일한 극성 또는 반대 극성을 가진 필드에서의 변위를 지시하는지를 판정하는 단계를 구비할 수 있다. 또 다른 양태에서, 인코더/디코더는 필드 움직임 벡터를 예측하기 위한 하나 이상의 유효한 후보 움직임 벡터들을 판정하고, 하나 이상의 유효한 후보 움직임 벡터들 중 개별적인 각각의 유효한 후보 움직임 벡터에 대한 필드 극성을 판정하며, 개별적인 각각의 유효한 후보 움직임 벡터를 그것의 필드 극성에 따라 2개의 세트들 중 하나에 할당하고, 2개 세트들에 적어도 부분적으로 기초해 필드 움직임 벡터를 위한 움직임 벡터 예측자를 계산한다. 2개의 세트들은 반대 구성 세트 및 동일 극성 세트일 수 있다. 움직임 벡터 예측자를 계산하는 단계는 우세한 극성의 유효한 후보 움직임 벡터(예를 들어, 최대 개수의 유효한 후보들을 가진 세트로부터의 후보)를 선택하는 단계를 구비할 수 있다. 후보는 특정된 선택 순서로 선택될 수 있다. 단 하나의 유효한 후보만이 각 세트에 할당된다면, 움직임 벡터 예측자를 계산하는 단계는 반대 극성 후보가 아니라 동일 극성 후보를 선택하는 단계를 구비할 수 있다. 3개의 유효한 후보들이 2개의 세트들 중 하나에 할당된다면, 움직임 벡터 예측자를 계산하는 단계는 3개의 유효한 후보들에 대해 중앙값 연산을 수행하는 단계를 구비할 수 있다. 또 다른 양태에서, 디코더는 인터레이스 프레임(예를 들어, 인터레이스 P-프레임, 인터레이스 B-프레임, 또는 인터레이스 P-필드들 및/또는 인터레이스 B-필드들을 가진 프레임)의 복수개 매크로블록들 중에서 하나 이상의 스킵된 매크로블록들을 디코딩한다. 하나 이상의 스킵된 매크로블록들 각각은 (1) 비트스트림의 스킵된 매크로블록 신호에 의해 지시되고, (2) 정확히 하나의 예측되는 움직임 벡터(예를 들어, 프레임 움직임 벡터)를 사용하고 움직임 벡터 차분 정보를 갖지 않으며, (3) 잔차 정보가 부족하다. 하나 이상의 스킵된 매크로블록들 각각을 위한 스킵된 매크로블록 신호는 개개의 스킵된 매크로블록을 위한 1-움직임-벡터 움직임-보상형 디코딩을 지시한다. 스킵된 매크로블록 신호는 복수개 계층들을 가진 비트스트림의 프레임 계층에서 송신되는 압축된 비트 플레인의 일부일 수 있다. 또는, 스킵된 매크로블록 신호는 매크로블록 계층에서 송신되는 개개 비트일 수 있다. 또 다른 양태에서는, 이용 가능한 복수개 코딩 모드들의 그룹으로부터 코딩 모드가 선택되고, 비트 플레인은 선택된 코딩 모드에 따라 인코더 또는 디코더에서 프로세싱된다. 비트 플레인은, 인터레이스 프레임의 매크로블록들이 스킵되는지의 여부를 표시하는 2진 정보를 포함한다. 인터레이스 프레임의 매크로블록은, 매크로블록이 하나의 움직임 벡터만을 가지며, 하나의 움직임 벡터가 매크로블록에 대해 예측되는 움직임 벡터와 동일하고, 매크로블록이 잔차 오류를 갖지 않는다면, 스킵된다. 매크로블록이 복수개 움직임 벡터들을 가진다면, 매크로블록은 스킵되지 않는다. 또 다른 양태에서, 인코더는 인터레이스 P-프레임의 매크로블록을 위한 움직임 보상 유형(예를 들어, 1MV, 4 프레임 MV, 2 필드 MV, 또는 4 필드 MV)을 선택하고 매크로블록을 위한 필드/프레임 코딩 유형(예를 들어, 필드-코딩형, 프레임-코딩형, 또는 비코딩형 블록들)을 선택한다. 인코더는 매크로블록을 위한 움직임 보상 유형 및 필드/프레임 코딩 유형을 결합하여 인코딩한다. 또한, 인코더는 움직임 보상 유형 및 필드/프레임 코딩 유형과 함께 매크로블록을 위한 다른 정보(예를 들어, 1-움직임-벡터 매크로블록을 위한 것과 같은, 차분 움직임 벡터의 존재에 대한 지시자)도 결합하여 인코딩할 수 있다. 또 다른 양태에서, 디코더는, 매크로블록을 위한 움직임 보상 유형 및 필드/프레임 코딩 유형을 표현하는 결합 코드(joint code)를 포함하는, 인터레이스 P-프레임의 매크로블록을 위한 매크로블록 정보를 수신한다. 디코더는 결합 코드(예를 들어, 가변 길이 코딩 테이블의 가변 길이 코드)를 디코딩하여 매크로블록을 위한 움직임 보상 유형 정보 및 필드/프레임 코딩 유형 정보 모두를 획득한다. 또 다른 양태에서, 디코더는 일 매크로블록을 위한 2 이상의 루마 움직임 벡터에 대한 루마 움직임 벡터 정보를 수신하는데, 2 이상의 루마 움직임 벡터들 각각은 매크로블록(예를 들어, 4:2:0 매크로블록)의 적어도 일부분과 연관되어 있다. 디코더는, 매크로블록을 위한 루마 움직임 벡터들에 대한 크로마 움직임 벡터들의 1:1 비를 유지하면서, 루마 움직임 벡터 정보에 대한 라운딩 테이블(예를 들어, 필드-기반형 라운딩 테이블)에 관련한 하나 이상의 계산을 수행하는 것에 의해, 2 이상의 루마 움직임 벡터들 각각을 위해, 매크로블록의 적어도 일부분과 연관되어 있는 크로마 움직임 벡터를 유도한다. 예를 들어, 디코더는 매크로블록을 위한 4개의 루마 (프레임 또는 필드) 움직임 벡터들을 수신하고 매크로블록을 위한 4개의 크로마 움직임 벡터들을 유도한다. 유도하는 단계는 필드-기반의 라운딩 테이블을 사용해 루마 움직임 벡터 정보의 적어도 일부분을 서브-샘플링하는 단계 및/또는 라운딩하는 단계를 구비할 수 있다. 또 다른 양태에서, 디코더는, 하나 이상의 루마 움직임 벡터들에 대한 움직임 벡터 정보에 적어도 부분적으로 기초해, 하나 이상의 루마 움직임 벡터들 각각을 위해, 인터레이스 프레임 코딩된 픽처들(예를 들어, 인터레이스 P-프레임, 인터레이스 B-프레임)에서의 매크로블록의 적어도 일부분과 연관되어 있는 크로마 움직임 벡터를 유도한다. 디코더는 4개의 루마 움직임 벡터들을 사용해 예측되는 매크로블록들을 디코딩하도록 동작할 수 있다. 예를 들어, 디코더는, 필드-기반의 라운딩 룩업 테이블을 루마 움직임 벡터의 적어도 일부분에 적용하는 것에 의한 것과 같이, 4개의 크로마 필드 움직임 벡터들을 유도한다. 또 다른 양태에서, 디코더는, 필드-기반의 라운딩 테이블(예를 들어, 정수 어레이)을 사용해 루마 필드 움직임 벡터 성분을 라운딩하고 루마 필드 움직임 벡터 성분을 서브-샘플링하는 것에 의해, 하나 이상의 루마 필드 움직임 벡터들 각각을 위한 매크로블록의 적어도 일부분과 연관된 크로마 움직임 벡터를 유도한다. 다양한 기술들 및 도구들은 조합으로 또는 독립적으로 사용될 수 있다. 첨부 도면들을 참조하여 진행되는 상이한 실시예들에 대한 다음의 상세한 설명으로부터, 추가적인 특징들 및 이점들을 명백히 알 수 있을 것이다.
지시문 (instruction)
주어진 원문을 읽고 필요한 정보를 파악하여, 원문에 근거해 질문에 답하라.
질문 (question)
인터레이스 P-프레임의 필드-코딩된 4:1:1 매크로블록에서 후보 움직임 벡터를 판정할 때, 인접한 매크로블록의 유형에 따라 후보 움직임 벡터는 어떻게 결정되는가?
추론 과정 (compact_reasoning)
  1. 1과제 해석task_interpretation

    인터레이스 P-프레임의 필드-코딩된 4:1:1 매크로블록 환경에서 인접 매크로블록의 유형(프레임-코딩형 vs 필드-코딩형)과 후보 움직임 벡터 결정 방식 간의 관계를 파악해야 한다.

  2. 2정보 추출information_extraction

    필드-코딩된 매크로블록의 후보 예측자 결정 규칙을 본문에서 추출한다.

    • 인접한 프레임-코딩형 매크로블록에 대해서는, 움직임 벡터가 단순히 예측자 후보로서 취해진다. 인접한 필드-코딩된 매크로블록에 대해서는, 상부 및 하부 필드 움직임 벡터들을 평균하는 것에 의해 후보 움직임 벡터가 판정된다.
  3. 3근거 선택evidence_selection

    두 가지 경우(프레임-코딩형 인접 매크로블록, 필드-코딩형 인접 매크로블록)에 대한 구체적인 처리 방식을 선별한다.

    • 인접한 프레임-코딩형 매크로블록에 대해서는, 움직임 벡터가 단순히 예측자 후보로서 취해진다.
    • 인접한 필드-코딩된 매크로블록에 대해서는, 상부 및 하부 필드 움직임 벡터들을 평균하는 것에 의해 후보 움직임 벡터가 판정된다.
  4. 4논리 통합logical_integration

    인접 매크로블록의 유형에 따라 '단순 취득' 또는 '평균 계산'이라는 서로 다른 메커니즘이 적용됨을 통합한다.

  5. 5결론 도출conclusion_formulation

    인접 매크로블록이 프레임-코딩형이면 움직임 벡터를 그대로 사용하고, 필드-코딩형이면 상부/하부 필드 움직임 벡터의 평균을 사용한다는 결론을 도출한다.

    • 인접한 프레임-코딩형 매크로블록에 대해서는, 움직임 벡터가 단순히 예측자 후보로서 취해진다. 인접한 필드-코딩된 매크로블록에 대해서는, 상부 및 하부 필드 움직임 벡터들을 평균하는 것에 의해 후보 움직임 벡터가 판정된다.
  6. 6답변 생성answer_generation

    질문에 대해 명확하고 구체적인 기술적 관계를 설명한다.

    • 인접한 프레임-코딩형 매크로블록에 대해서는, 움직임 벡터가 단순히 예측자 후보로서 취해진다. 인접한 필드-코딩된 매크로블록에 대해서는, 상부 및 하부 필드 움직임 벡터들을 평균하는 것에 의해 후보 움직임 벡터가 판정된다.
최종 답변 (final_answer)
인터레이스 P-프레임의 필드-코딩된 4:1:1 매크로블록에서 인접한 매크로블록이 프레임-코딩형인 경우에는 해당 매크로블록의 움직임 벡터가 단순히 예측자 후보로 취해지며, 인접한 매크로블록이 필드-코딩된 경우에는 상부 및 하부 필드 움직임 벡터들을 평균함으로써 후보 움직임 벡터를 판정한다.
핵심 해석 (core_interpretation)
인터레이스 P-프레임의 매크로블록 예측에서 인접한 프레임-코딩형 매크로블록의 움직임 벡터는 단순히 예측자 후보로서 취해진다.