10장 기본 비디오 압축 기술 10.1 비디오 압축 소개 10.2 움직임 보상에 기반한 비디오 압축 10.3 움직임 벡터를 위한 탐색 10.4 H.261 10.5 H.263 10.6 보충 학습 2009-2학기 멀티미디어시스템
10.1 비디오 압축 소개 비디오는 시간-순서화된 프레임의 연속(즉, 영상)으로 구성. 비디오 압축에 대한 분명한 해결책은 이전 프레임에 기초한 예측 부호화 일 것임. 압축은 영상들을 감산함으로써 진행: 시간 순서대로 감산하고, 나머지 오류를 부호화함. 그것은 이전 프레임으로부터 감산하기 위한 영상의 올바른 부분을 찾기 위한 검색을 함으로써 훨씬 더 잘 수행할 수 있음. 2009-2학기 멀티미디어시스템
10.2 움직임 보상에 기반한 비디오 압축 비디오에서 연속적인 프레임들은 유사함 ᅳ 시간 중복성이 존재. 시간 중복성(temporal redundancy)은 비디오의 매 프레임을 새로운 영상으로써 독립적으로 부호화되는 것을 필요하지 않게 함. 영상의 연속에서 현재 프레임과 다른 프레임(들)간의 차분이 부호화 될 것임 ᅳ 압축하기에 좋은, 작은 값과 낮은 엔트로피. 움직임 보상(MC: Motion Compensation)을 기반한 비디오 압축의 단계 1. 움직임 예측(움직임 벡터 탐색) 2. 움직임 보상 기반 예측 3. 예측 오류의 유도, 즉, 차분 2009-2학기 멀티미디어시스템
움직임 보상 각 영상은 N×N 크기의 매크로블럭(macroblocks)으로 나누어짐. 움직임 보상은 매크로블럭 레벨에서 수행. 현재의 영상 프레임은 목표 프레임(Target frame)으로써 불림. 매치는 목표 프레임에서 고려중인 매크로블럭과 이전 그리고/혹은 나중 프레임(들)(참조 프레임(Reference frame)(들)으로 불리는)에서 가장 유사한 매크로블럭 사이에서 찾음. 참조 매크로블럭의 목표 매크로블럭에 대한 변위를 움직임 벡터 MV로 불림. 그림 10.1은 참조 프레임이 이전 프레임으로 선택된, 순방향 예측(forward prediction)의 경우를 보여줌. 2009-2학기 멀티미디어시스템
그림 10.1: 비디오 압축에서의 매크로블럭과 움직임 벡터 MV 탐색은 보통 작고 인접한 이웃들로 제한됨 ᅳ 수평 및 수직 변위는 [-p, p]범위 안에 있음. 이것은 (2p+1)×(2p+1) 크기의 탐색 윈도우를 만듬. 2009-2학기 멀티미디어시스템
10.3 움직임 벡터를 위한 탐색 두 매크로블럭 사이의 차분은 평균 절대 오차(MAD: Mean Absolute Difference)에 의해 측정될 수 있음: N - 매크로블럭의 크기, k와 l - 매크로블럭에서 화소를 위한 인덱스들, i와 j - 수평과 수직 변위, C(x+k, y+l) - 목표 프레임의 매크로블럭에 있는 화소들, R(x+i+k, y+j+l) - 참조 프레임의 매크로블럭에 있는 화소들. 탐색의 목적은 MAD(i, j)가 최소값인 경우의, 움직임 벡터 MV = (u, v)로써 벡터(i, j)를 찾는 것임. 2009-2학기 멀티미디어시스템
순차 탐색 순차 탐색(sequential search): 참조프레임에서 전체 (2p+1)×(2p+1)윈도우를 순차적으로 탐색하는 것.(또한 전역 탐색(Full search)으로 불림) 윈도우 안에서 각 위치의 중심에 위치한 매크로블럭은 화소 단위로 목표 프레임 안에 있는 매크로블럭과 비교되고, 각각의 MAD는 식(10.1)을 사용하여 유도됨. 가장 작은 MAD를 제공하는 벡터(i, j)가 목표 프레임의 그 매크로블럭을 위한 MV(u, v)로 선정됨. 순차 탐색 방법은 아주 많은 비용이 듬. ᅳ 각 화소 비교는 세 가지 연산(뺄셈, 절대값, 덧셈)을 요구. 따라서 한 매크로블럭을 위해 움직임 벡터를 얻기 위한 비용은 (2p+1)ㆍ(2p+1) ㆍN2 ㆍ3 ⇒ O(p2N2)임. 2009-2학기 멀티미디어시스템
절차 10.1 움직임 벡터 : 순차 탐색 2009-2학기 멀티미디어시스템
2차원 대수적 탐색 대수적 탐색(logarithmic search): 차선이지만 여전히 효과적으로 더 저렴한 버전. 움직임 벡터의 2차원 대수적 탐색을 위한 절차는 여러 번의 반복이 필요하고 이진 탐색과 유사함. 그림 10.2에서 설명한 것처럼, 탐색 윈도우에서 오직 초기의 9개 위치만이 MAD-기반 탐색을 위한 시작점으로써 사용됨; 그들은 ‘1’로써 표시됨. 최소 MAD를 초래하는 한 위치가 찾아지면, 새로운 탐색영역의 중심이 그 곳으로 옮겨지고, 단계-크기(step-size)(“오프셋(offset)”)는 반으로 줄어듬. 다음 반복에서, 9개의 새로운 위치는 ‘2’로써 표시됨. 기타 등등. 2009-2학기 멀티미디어시스템
그림 10.2: 움직임 벡터를 위한 2차원 대수적 탐색 2009-2학기 멀티미디어시스템
절차 10.2 움직임 벡터 : 2차원 대수적 탐색 2009-2학기 멀티미디어시스템
이전의 하부절에서처럼 같은 예를 사용하면, 초당 전체 연산은 아래의 값으로 떨어짐: 2009-2학기 멀티미디어시스템
계층적 탐색 움직임 벡터를 위한 탐색은 움직임 벡터의 초기 예측을 상당히 해상도를 줄이는 영상으로부터 얻을 수 있는 계층적(다중해상도: multiresolution) 접근으로부터 이익을 얻을 수 있음. 그림 10.3: 원본영상이 레벨 0에 있는 3-레벨 계층적 탐색을 묘사하고 있는데, 레벨 1과 2에 있는 영상은 2의 인수로 이전 레벨로부터 다운샘플링을 함으로써 얻을 수 있고, 초기 탐색은 레벨 2에서 수행됨. 매크로블럭의 크기가 더 작아지고, p 또한 비례적으로 줄어들기 때문에, 요구되는 연산의 수는 크게 줄어듬. 2009-2학기 멀티미디어시스템
그림 10.3: 움직임 벡터를 위한 3-레벨 계층적 탐색 2009-2학기 멀티미디어시스템
계층적 탐색(계속) 주어진 레벨 k에서 예측된 움직임 벡터(uk, vk)에 대해, 정렬된 움직임 벡터를 찾기 위해 레벨 k-1에서 (2ㆍuk ,2ㆍvk)에 중심으로 한 3×3 이웃들이 탐색됨. 정렬은 움직임 벡터 (uk-1, vk-1)의 레벨 k-1에서 다음을 만족시킴: ( , )가 목표 프레임에서 레벨 k에 있는 매크로블럭의 중심을 나타내게 가정. 목표 프레임에서 ( , )가 중심인 매크로블럭을 위한 계층적 움직임 벡터 탐색을 위한 절차는 다음과 같이 요약될 수 있음:
절차 10.3 움직임 벡터 : 계층적 탐색 2009-2학기 멀티미디어시스템
표 10.1 예제에 따른 움직임 벡터 탐색 방법의 계산 비용에 대한 비교 2009-2학기 멀티미디어시스템
10.4 H.261 H.261: 초기의 디지털 비디오 압축 표준으로서, 움직임 보상 기반 압축의 주요 방식은 나중의 모든 비디오 압축 표준에서 계속 사용했음. 그 표준은 비디오 폰, 화상 회의 및 ISDN 전화망에서의 다른 오디오비주얼 서비스를 위해 설계되었음. 비디오 코덱은 p×64kbps의 비트율을 지원하는데, 여기서 p는 1에서 30까지의 범위를 가짐.(그러므로 p×64로도 알려져 있음) 표준은 150msec 이하의 비디오 부호화기 지연을 요구하고, 비디오는 실시간 양방향 화상 회의를 위해 사용될 수 있었음. 2009-2학기 멀티미디어시스템
ITU 권고안 & H.261 비디오 형식 H.261은 시각적 전화통신 시스템을 위한 아래의 ITU 권고안 집합에 속함. 1. H.221 ᅳ 64에서 1,920kbps를 지원하는 오디오비주얼(audiovisual) 채널을 위한 프레임 구조. 2. H.230 ᅳ 오디오비주얼 시스템을 위한 프레임 제어 신호들. 3. H.242 ᅳ 오디오비주얼 통신 프로토콜. 4. H.261 ᅳ p×64kbps에서 오디오비주얼 서비스를 위한 비디오 부호화기(encoder)/복호화기(decoder). 5. H.320 ᅳ p×64kbps 전송을 위한 협대역(narrow-band) 오디오비주얼 단말 장치. 2009-2학기 멀티미디어시스템
표 10.2 H.261에 의해 지원되는 비디오 형식 2009-2학기 멀티미디어시스템
그림 10.4: H.261 프레임 순서 2009-2학기 멀티미디어시스템
H.261 프레임 순서 두 가지 형태의 영상 프레임이 정의: 인트라-프레임(I-프레임)과 인터-프레임(P-프레임): I-프레임들은 독립적인 영상으로 취급. JPEG과 비슷한 변환 부호화 방법은 각 I-프레임 내에서 적용. 따라서 그 이름이 “인트라”임. P-프레임은 독립적이지 않음: 순방향 예측 부호화 방법에 의해 부호화됨.(이전 P-프레임으로부터 예측이 허용됨 ᅳ 이전 I-프레임으로부터가 아니라) P-프레임 부호화에는 시간 중복성 제거(temporal redundancy removal)가 포함되고, 그에 반해 I-프레임 부호화에는 오직 공간 중복성 제거(spatial redundancy removal)만을 수행함. 부호화 오류의 전파를 피하기 위해, 일반적으로 I-프레임은 비디오의 각 초마다 두 번 보냄. H.261에서 움직임 벡터는 항상 완전 화소 단위로 측정되고 ±15화소의 제한된 범위를 가짐. 즉, P=15. 2009-2학기 멀티미디어시스템
프레임 내(I-프레임)부호화 그림 10.5: I-프레임 부호화 매크로블럭은 Y 프레임에 대해서는 16×16 화소 크기. Cb와 Cr 프레임에 대해서는 4:2:0 색도 서브샘플링이 사용되기 때문에 8×8 화소 크기에 해당함. 하나의 매크로블럭은 각각 8×8 크기를 갖는 4개의 Y 블럭, 1개의 Cb 블럭, 1개의 Cr 블럭으로 구성됨. 각 8×8 블럭에 대해 DCT 변환이 적용. DCT 계수는 양자화 단계를 거친 후 지그재그 주사되고 엔트로피 부호화 됨. 2009-2학기 멀티미디어시스템
프레임 간(P-프레임) 예측 부호화 그림 10.6은 움직임 보상에 기반하여 H.261 P-프레임 부호화 방식을 보여줌: 목표 프레임의 각 매크로블럭을 위해, 움직임 벡터는 앞에서 논의된 탐색 방법 중의 하나에 의해 할당됨. 예측 후에, 차분 매크로블럭(difference macroblock)은 예측 오차를 측정하기 위해 얻어짐. 이 각각의 8×8 블럭은 DCT, 양자화, 지그재그 주사, 그리고 엔트로피 부호화 과정을 거침. 2009-2학기 멀티미디어시스템
P-프레임 부호화는(목표 매크로블럭 자체가 아니라) 차분 매크로블럭을 부호화함. 때때로, 좋은 매치가 발견되지 않을 수도 있음. 즉, 예측 오차는 받아들일 수 있게 정해진 수준을 넘어섬. 매크로블럭 그 자체로 부호화되고(인트라 매크로블럭으로 취급됨), 이 경우에 그것을 움직임 보상이 안된(non-motion compensated) 매크로블럭이라 부름. 움직임 벡터를 위한 차분 MVD는 엔트로피 부호화를 위해 보내짐: 2009-2학기 멀티미디어시스템
그림 10.6: 움직임 보상 기반 H.261 P-프레임 부호화 2009-2학기 멀티미디어시스템
H.261에서의 양자화 H.261에서 양자화는 한 매크로블럭 안에서 모든 DCT계수를 위해, 일정한 단계_크기(step_size)를 사용. 만약 양자화 전과 후의 DCT 계수를 표현하기 위해 DCT와 QDCT를 사용한다면, 인트라 모드에서 DC 계수들을 위한 것은 다음과 같음: 다른 모든 계수를 위해서는 다음 식과 같음: scale – [1, 31] 범위 안에 있는 정수 2009-2학기 멀티미디어시스템
H.261 부호화기와 복호화기 그림 10.7은 H.261 부호화기와 복호화기가 어떻게 동작하는지를 비교적 자세한 그림으로 보여줌. 시나리오는 프레임 I, P1 및 P2가 부호화되고 그 후에 복호화되는 것을 이용함. 주목 : 복호화된 프레임(원 프레임이 아니라)은 움직임 예측에서 참조 프레임으로 사용됨. 동그라미 처져있는 숫자로 표시되어 관찰 포인트를 통과하는 데이터는 표 10.3과 10.4에 요약되어 있음. 2009-2학기 멀티미디어시스템
그림 10.7: H.261 부호화기와 복호화기 2009-2학기 멀티미디어시스템
그림 10.7(계속): H.261 부호화기와 복호화기 2009-2학기 멀티미디어시스템
표 10.3: H.261 부호화기 관찰 포인트에서의 데이터 흐름 2009-2학기 멀티미디어시스템
H.261 비디오 비트스트림의 신택스 살펴보기 그림 10.8은 H.261 비디오 비트스트림의 신택스를 보여줌: 4계층의 체계: 그림, GOB, 매크로블럭, 블럭. 1. 그림 계층: PSC (Picture Start Code)는 그림들 사이의 경계를 나타냄. TR (Temporal Reference)은 그림을 위한 타임-스탬프를 제공함. 2. GOB 계층: H.261 그림들은 11×3 매크로블럭의 영역으로 나누어지고, 각각은 GOB(Group of Blocks)로 불림. 그림 10.9는 CIF 또는 QCIF 휘도 영상에서 GOB들의 배열을 나타냄. 예를 들면, CIF 영상은 352×288 화소의 영상 해상도에 대응하는 2×6 GOB들을 가짐. 각 GOB는 그것의 시작코드(GBSC: Start Code)와 그룹번호(GN: Group Number)을 가짐. 2009-2학기 멀티미디어시스템
네트워크 오류가 비트 오류 또는 어떤 비트들의 손실을 야기할 경우에, H 네트워크 오류가 비트 오류 또는 어떤 비트들의 손실을 야기할 경우에, H.261 비디오는 다음의 식별 가능한(identifiable) GOB에서 복원되고 재동기 될 수 있음. GQuant는 그것이 어떤 다음의 MQuant(매크로블럭을 위한 양자화기)에 의해 뒤덮어지지 않는다면, 그 GOB에서 사용되는 양자화기를 나타냄. 3. 매크로블럭 계층: 각 매크로블럭(MB)은 GOB 내에서 그것의 위치를 나타내는 주소, 양자화기(MQuant) 그리고 6개의 8×8 영상 블럭(4Y, 1Cb, 1Cr)을 가짐. 4. 블럭 계층: 각 8×8 블럭을 위해, 비트스트림은 DC 값으로 시작하여 AC 계수들을 위한 0-런(Run)의 길이와 다음의 0이 아닌 값(Level)의 쌍들이 따르고, 마지막으로 EOB(End of Block) 코드를 가짐. Run의 범위는[0, 63]이다. Level은 양자화된 값을 발생함. ᅳ 그것의 범위는 [-127, 127]이고, level ≠ 0임. 2009-2학기 멀티미디어시스템
그림 10.8: H.261 비디오 비트스트림의 신택스 2009-2학기 멀티미디어시스템
그림 10.9: H.261 휘도 영상에서 GOB 배열 2009-2학기 멀티미디어시스템
10.5 H.263 H.263은 공중 전화 교환망(PSTN: Public Switched Telephone Networks)상에서 전송되는 화상회의와 다른 오디오비주얼 서비스를 위한 향상된 비디오 부호화 표준. 64kbps 이하의 비트율에서 낮은 비트율 통신을 목표로 함. 인터-프레임들의 시간 중복성을 줄이기 위해 예측 부호화는 사용하고, 남겨진 신호의 공간 중복성을 줄이기 위해(인트라-프레임과 인터-프레임 예측을 위해) 변환 부호화를 사용함. 2009-2학기 멀티미디어시스템
표 10.5 H.263에 의해 지원되는 비디오 형식 2009-2학기 멀티미디어시스템
H.263 & GOB (Group of Blocks) H.261에서 처럼, H.263 표준도 또한 GOB(Group of Blocks)의 개념을 지원. H.263에서 GOB들은 고정된 크기를 가지지 않는다는 것이 H.261과의 차이이며, 그들은 항상 영상의 왼쪽 경계에서 시작하고 오른쪽 경계에서 끝남. 그림 10.10에서 보여지는 것처럼, 각 QCIF 휘도 영상은 9개의 GOB들로 구성되고, 각 GOB는 11×1MBs (176×16화소)를 가짐. 이에 반해 각 4CIF 휘도 영상은 18개의 GOB들로 구성되고, 각 GOB는 44×2MBs (704×32화소)를 가짐. 2009-2학기 멀티미디어시스템
그림 10.10: H.263 휘도 영상에서 GOB 배열 2009-2학기 멀티미디어시스템
H.263에서 움직임 보상 MV(움직임벡터)의 수평과 수직 성분은 각각 “이전”, “위” 그리고 “위와 오른쪽” 매크로블럭들로부터 MV1, MV2, MV3로 수평과 수직 성분의 중간값으로부터 예측됨.(그림 10.11(a)를 참조) 매크로블럭을 위한 MV(u, v)는 다음과 같음: MV(u, v) 자체를 부호화하는 대신에, 오차 벡터( , )가 부호화되는데, 여기서 이고 임.
그림 10.11 H.263에서 움직임 벡터의 예측 2009-2학기 멀티미디어시스템
반-화소 정밀도 예측 오차를 줄이기 위해 H.261에서 오직 전-화소 정밀도(full-pixel precision)를 사용하는 것에 반하여 H.263에서는 반-화소 정밀도(half-pixel precision)를 지원함. MV(u, v)의 수평과 수직 성분 u와 v 모두를 위한 기본 범위는 이제 [-16, 15.5]임. 그림 10.12에서 보이는 것처럼, 반-화소 위치에서 요구되는 화소 값은 간단한 쌍선형 보간법(bilinear interpolation)에 의해 생성됨. 2009-2학기 멀티미디어시스템
그림 10.12: H.263에서 쌍선형 보간법에 의한 반-화소 예측 2009-2학기 멀티미디어시스템
선택적인 H.263 부호화 모드 H.263은 그것의 다양한 부록에서 많이 협상 가능한 부호화 옵션을 규정하고 있음: 1. 제한이 없는 움직임 벡터 모드: 참조된 화소는 더 이상 영상의 경계 안에 있어야 하는 제한을 받지 않음. 움직임 벡터가 영상 경계의 밖을 가리킬 때, 참조된 화소에 기하학적으로 가장 가까운 경계 화소의 값이 사용됨. 움직임 벡터의 최대 범위는 [-31.5, 31.5]임. 2009-2학기 멀티미디어시스템
2. 신택스-기반 산술 부호화 모드: 3. 진보된 예측 모드: H.261과 마찬가지로, H.263도 DCT 계수들을 위한 기본 부호화 방법으로 가변 길이 부호화(VLC)를 사용함. H.261과 유사하게, H.263의 신택스도 또한 4개 층의 체계로 구성된다. 각 계층은 고정된 길이 부호화와 가변 길이 부호화의 결합을 사용하여 부호화함. 3. 진보된 예측 모드: 이 모드에서, 움직임 보상을 위한 매크로블럭 크기는 16에서 8로 줄어듬. 4개의 움직임 벡터(8×8블럭들의 각각으로부터)는 휘도 영상에서 각 매크로블럭을 위해 생성됨. 2009-2학기 멀티미디어시스템
4. PB-프레임 모드: 그림 10.13에서 보여지는 것처럼, H.263에서 PB-프레임은 하나의 단위로 부호화된 두 영상으로 구성됨. PB-프레임 모드의 사용은 PTYPE에서 표시됨. PB-프레임 모드는 적당한 움직임을 가지는 비디오에 대해 만족스러운 결과를 가져옴. 큰 움직임 하에서는, PB-프레임은 B-프레임만큼 잘 압축하지 못함. 새롭게 향상된 모드는 H.263의 버전 2에서 개발되고 있음. 2009-2학기 멀티미디어시스템
그림 10.13: H.263에서 PB-프레임 2009-2학기 멀티미디어시스템
H.263+와 H.263++ H.263+의 목적: 잠재적인 응용을 넓히고, 사용자 소스형식, 다른 화소 종횡비, 그리고 클럭 주파수에 관한 추가적인 융통성을 제공하는 것임. H.263+는 H.263의 4가지 선택 모드에 추가적으로 12개의 새롭게 협의할 수 있는 모드를 제공. 그것은 차분 움직임 벡터들을 부호화하기 위해 복원 가능한 가변 길이 부호화(RVLC: Reversible Variable Length Coding)를 사용함. 슬라이스 구조는 추가적인 융통성(flexibility)을 제공하기 위한 GOB를 대체하여 사용함. 2009-2학기 멀티미디어시스템
H.263+는 시간적(Temporal), SNR 그리고 공간적 스케일러빌러티(Spatial scalabilities)를 구현함. 버전 1에서 처럼, B-프레임의 두 움직임 벡터를 P-프레임의 순방향 움직임 벡터로 유도할 필요가 없는 향상된 PB-프레임모드를 지원함. H.263+는 블럭킹 효과(blocking effects)를 줄이기 위해 부호화 루프에서 디블럭킹 필터들(deblocking filters)을 포함함. 2009-2학기 멀티미디어시스템
H.263++는 H.263의 기본 부호화 방법과 강화된 참조그림 선택(ERRS :Enhanced Reference Picture Selection), 데이터 분할 슬라이스(DPS : Data Partition Slice), 그리고 부가적인 추가 향상 정보를 위한 부가적인 권고만을 포함. ERPS모드는 저장된 프레임들을 위한 다중-프레임 버퍼를 관리함으로써 동작함. ᅳ 부호화 효율성(coding efficiency)과 오류 복원력(error resilience) 성능을 향상. DPS모드는 비트스트림에서 DCT 계수 데이터로부터 움직임 벡터 데이터와 헤더를 분리하여 오류 복원력에 대한 추가적인 향상을 제공하고 복원 가능한 코드를 사용하여 움직임 벡터 데이터를 보호함. 2009-2학기 멀티미디어시스템