1. Multimedia Communications
Chapter 4
Video Compression Techniques (1)
아주대학교 정보및컴퓨터공학부
모바일 멀티미디어통신 연구실 (http://mmcn.ajou.ac.kr)
노병희 (bhroh@ajou.ac.kr)
Contents
Video Compression Basics
Video Compression Standards : H.26x
H.261
H.263
MPEG Video Compression Standards
MPEG-1
MPEG-2 (H.262)
MPEG-4
H.264
1
2. 동영상의 상관성 (Correlation)
동영상 (Moving Pictures or Video)
짧은 시간 간격동안 순차적으로 표시되는 정지 화면들의 집합
• NTSC TV의 경우 : 화면간 시간 = 1/30 초
• PAL TV의 경우 : 화면간 시간 = 1/25 초
화면간에는 물체 또는 카메라의 움직임등에 의하여 밝기의 변화가 발생.
• 화면간의 짧은 시간 간격으로 인하여, 이웃한 영상간에는 상당히 높은 상관성이
존재
time
1/30 sec.
동영상 압축의 개요
동영상 압축의 기본적인 두단계 과정
움직임 예측 (Motion Estimation)
• 동영상의 시간축에서의 프레임간의 상관성을 활용하여
• 현재 프레임의 일부(매크로블록)와 유사한 정보를 이전 프레임에서
찾아냄
– 매크로블록의 크기 : 64x64 pixels
– 64x64 블록의 각 픽셀의 정보를 개별 부호화 하는 대신에, 이와
유사한 이전 블록의 위치(motion)만을 전달하므로, 압축률이 매우
크게 됨
움직임 보상 (Motion Compensation)
• 이전 프레임에서 찾은 매크로블록과 현재 프레임의 매크로블록은
정확히 일치하지 않음
• 이 두 (이전과 현재의) 매크로블록들의 차이 신호를 DCT를 사용하여
부호화 함
– 동영상의 프레임내에서의 공간상관성을 활용
– 원래 신호 보다 차이 신호값의 변화는 매우 작아서 양자화의
이득이 커지게 되어, 압축률이 매우 크게 됨
2
3. 동영상에서 움직임의 정의
움직임 (Motion)
동영상의 높은 상관성은 현재 화면에서의 pixel (또는 block)이 이전
화면의 어느 위치에 대응되는지를 찾아내는 것이 가능
현재 화면에서의 pixel (또는 block)과 이전 화면에서 찾아낸 pixel (또는
block)간의 위치는 같을 수도 있고, 다를 수도 있음
• 이러한 위치의 차이를 움직임 (motion) 이라고 함.
• 움직임의 방향성을 함께 나타내는 것을, motion vector라고 함
움직임 예측을 위하여는 주로 pixel 보다는 block을 사용.
현재 화면에서의
위치 (x1,y1) motion vector
(x1-x2,y1-y2)
이전 화면에서의
위치 (x2,y2)
동영상에서 움직임의 정의
프레임 N+1
시간 tn+1
매크로블록 Mn(tn+1)
움직임 벡터
프레임 N
시간 tn
움직임 벡터
검색범위 매크로블록 Mk(tn+1)
매크로블록 Mk(tn)
3
4. 움직임 벡터 (Motion Vector) - 예
이전영상 현재영상
움직임 벡터 (Motion Vector) - 예
움직임 벡터 오차영상
4
5. 움직임 벡터 산출 방법
대표적 움직임 벡터 산출 방법들
PRA (Pel Recursive Algorithm)
• pixel 단위로 움직임을 예측
– 블럭단위로 수행되는 부호화 방법을 이용할 수 없으므로, 예측
오차의 부호화 효율이 떨어짐.
– 복잡도가 증가
BMA (Block Matching Algorithm)
• block 단위로 움직임을 예측
• 블록을 매칭시켜가는 절차
– full search method
• 현재 영상의 블록과 이전영상에서 탐색영역내의 모든
블럭들을 비교하여 최소의 오차를 갖는 이전영상에서의
블록을 찾아냄.
– 2-D logarithmic search
– 3-step search
움직임 벡터 산출 방법
예1: full search
64
64 y(i,j)
d(1,1) d(1,2) d(1,3)
현재프레임의 한
d(2,1)
매크로블록
d(3,1) x(i,j)
- 첫번째 픽셀을 기준으로 하는 64x64 블록에
대하여 현재MB와 차이값 d(1,1) 을 구함.
- 다음 픽셀을 기준으로 하는 블록과 비교한
차이값들 d(1,2), ... ,d(H,V)를 구함
H: horizontal image size
V: vertical image size
- d(1,1) ~ d(H,V) 중 최소값을 갖는 블록의
위치와 현재MB의 위치와의 차이를 움직임
벡터로 정의함
이전 프레임
64 64
d= ∑∑ (x(i, j ) − y(i, j ))
i =1 j =1
2
5
6. 움직임 벡터 산출 방법
예2: 3-step search
탐색영역 p=6인 경우 x-6 x x+6
3번의 단계만에 움직임 y-6
벡터를 결정
주어진 위치를 중심으로
각각 n만큼 떨어진
(x+5,y-3)
주변 9개에 대하여
블럭내 pixel차이값이
최소가 되는 위치 선정
이 위치에서 이전보다는
(x,y)
탐색거리가 줄어든
주변 9개에 대하여 y
동일한 방법 적용
세번의 단계까지 반복
왼쪽예에서의
움직임 벡터는
(-5,+3)이다.
y+6
블록 기반 부호화 방식
블록 기반 부호화 (Block-based coding)
n×n 블록 크기 ∝ 계산량
• 대부분의 동영상은 8×8 혹은 16×16 블록단위의 부호화
기본 기법
• 움직임 예측 (Motion Estimation)
– 이전 프레임에서 현재 프레임의 블록과 가장 유사한 블록의 위치
를 찾음
– 이로부터 상대적 움직임 벡터(Motion vector)를 구함
• 움직임 보상 (Motion Compensation)
– MV를 이용하여 이전 프레임에서 해당 블록을 가지고 임시영상을
구성함
– 임시영상과 원래영상의 차이영상을 만듬
– 차이영상에 대하여 DCT 부호화 함
단점
• Blocking artifact
– 블록간의 경계가 보이는 현상
6
7. 움직임 예측 및 보상 부호화기 구조
움직임 예측 및 보상이 결합된 일반적인 동영상 부호화기
모델
변환 부호화 부분 (화면내 부호화)
+
DCT Quantizer
Inverse 예측 오차 신호
Quant. (움직임 보상)
IDCT
화면간 + +
예측부분
Frame 재생영상
Memory
Motion
Estimator
움직임 예측 신호
(움직임 벡터)
움직임 예측 및 보상 부호화기 구조
부호화 과정 (1/3)
부호화할 현재
프레임
(4)
(1) 차이영상을
만듬
현재 프레임을
16x16크기의
매크로블록
단위로 구분
(2) (3)
이전 프레임 매크로블록별로 이전프레임에서 움직임
움직임벡터를 벡터에 해당하는
계산 매크로블록으로 영상 구성
7
8. 움직임 예측 및 보상 부호화기 구조
부호화 과정 (2/3)
DCT Quant.
(1) (2) (3)
8x8 블록별
처리 Inverse
차이영상 차이영상을 Quant
8x8 크기의
블록 단위로
구분 IDCT
(4)
현재 프레임을 복원한
이전 프레임을 영상으로서 이 다음 프레임의
참조하여 부호화시의 움직임 벡터 산출의
만들어진 영상 기준이 됨
움직임 예측 및 보상 부호화기 구조
부호화 과정 (3/3)
DCT/ DCT와
양자화 양자화된 값
Entropy 압축된
Coding 비트스트림
움직임벡터
8
9. 움직임 예측 및 보상 복호기
복호화기(Decoder) 구조
차이 신호 Inverse
(움직임 보상) Quant.
IDCT
+ +
재생영상 재생영상
움직임 예측 신호 메모리
(움직임 벡터)
움직임 벡터 와 차이 영상
차이영상을 사용하는 잇점
현재프레임의 원래 영상 현재프레임과 이전프레임의 차이 영상
9
10. H.261 개요
H.261
Video codec for audiovisual services at p x 64 kbit/s
H.261 개요
H.261 개요
개요
• ISDN 회선 교환망을 통한 영상 전화 또는 영상 회의 응용을 위하여
제정된 최초의 비디오 압축 표준
• ITU-T에 의하여 1989년 12월 H.261 표준안 제정됨
특징
• 비디오의 압축과 부호화기법에 대한 표준으로서 높은 압축률과
실시간 압축을 지원
• 전송율 : px64 kbps, p=1,2,…30 (ISDN 환경에 적합)
– “px64 방식”으로 불리어지기도 함
• p=1,2 : 데스크 탑 화상 회의 시스템(비디오 폰)에 적용
• p>5 : 비디오 컨퍼런싱같은 복잡한 화상도 전송 가능
– 64Kbps ~ 2Mbps의 속도 영상 전송을 목표로 하므로 방송 품질
확보 불가능
• 100:1에서 2000:1까지의 높은 압축율을 제공함
10
11. H.261 개요
H.261 압축 방식 개요
영상 중복성의 제거
• 시간 중복성 제거 : 화면간 움직임 예측 기법을 사용
• 공간 중복성 제거 : DCT변환 기법을 사용
2개의 영상 데이터 압축 모드 지원
• INTRA 프레임 방식
– 입력 화면이 다른 화면과는 독립적으로 DCT부호화 됨
– MPEG의 I-화면 부호화, 또는 JPEG 부호화 방식과 유사
• INTER 프레임 방식
– 이전 화면을 참조한 화면간 움직임 예측 및 보상 방법을 사용하여
부호화 함
– MPEG의 P-화면과 유사
통계 모드
• 허프만 부호화에 기초한 가변길이 부호화 (VLC)를 수행
H.261 개요
Inter 프레임과 Intra 프레임
이전 프레임을 참조한 움직임
예측을 통하여 부호화됨
intra inter inter inter inter inter intra inter
이전 프레임을 참조함으
이전 또는 이후 프레 로써 오류가 계속 누적되 일정 시간마다 intra 프레임을 적용함으
임들과 상관없이 부 게됨 로써 오류 누적 가능성을 줄임
호화됨
* H.261에서는 132 프레임내에 적어도
1회는 intra를 적용하도록 하고 있음
11
12. H.261 개요
H.261 압축 방식 개요 (cont’d)
입력 영상의 크기
• NTSC와 PAL의 중간 형태인 CIF 화면 크기 결정
• CIF 또는 QCIF 만 대상으로 함.
CIF QCIF
(width x height) (width x height)
Y 352 x 288 176 x 144
Cb 176 x 144 88 x 72
Cr 176 x 144 88 x 72
H.261 부호화기/복호화기 구조
H.261 영상 부호기 및 복호기의 블록도
부호화 제어
정보원 영상신호 전송
송신버퍼
부호기 다중화기 부호기
영상신호 부호화된
비트열
정보원 영상신호 전송
수신 버퍼
복호기 역다중화기 복호기
12
13. H.261 부호화기 구조
H.261 부호화기(encoder) 구조
Inter/Intra Flag
Coding Control Quantizer indication
Intra
2D Multiplexer
VLC
+
⊕
Video Quantizer & Buffer
DCT
Input
− Inter
Inverse
Quantizer
Inverse
Intra DCT
Inter No MC
+
⊕+
Frame
Loop Memory
Filter MC
Motion VLC
Estimator Motion vector
H.261 데이터 블록 구조
352 Pixels
GOB 1 GOB 2
GOB 3 Group of Block
288 Pixels
176 Pixels
MB1 MB2 MB11
Pixels
48
MB12 MB22
GOB 11 GOB 12 MB23 MB33
Picture
8 pels
Y1 Y2
Y3 Y4
8 pels
Y CB CR
Macro-Block (4:2:0)
Block
– 블록 (block) : 8x8 pixels
– 매크로 블록 (macro block) : 블록 4개로 구성 (16x16 pixels)
– 블록 그룹 (Group of Block) : 33개의 매크로 블록으로 구성
– 픽쳐 (picture) : 영상의 한 화면
13
14. H.261 데이터 블록 구조
비트열의 계층별 데이터 구조
Picture Layer
GOB
PSC TR PTYPE PEI PSPARE
Layer
GOB (Group of block) Layer
Macro-
block
GBSC GN GQUANT GEI GSPARE Layer
fixed length
Macroblock Layer (Next Slide)
variable length
H.261 데이터 블록 구조
비트열의 계층별 데이터 구조 (cont’d)
Macro block Layer
MVD
Block
MBA MTYPE MQUANT MVD CBP
Layer
CBP
MBA
채워넣기
Block Layer
fixed length TCOEFF EOB
variable length
14
15. H.261 - 발생 데이터량 제어
H.261의 기본 부호화 비트율
CIF는 256 kbps, QCIF는 64 kbps로 정해져 있음
그러나, 부호화된 데이터는 영상의 복잡도나 움직임의 크기에 따라
발생 데이터량이 변화하게 됨
일정한 전송속도를 유지하기 위하여는 이러한 발생 데이터량의
변동을 제어하여야 함
기본적인 발생 데이터량 제어 방법
양자화 스텝크기(QUANT)를 조절함
• QUANT는 DCT 변환계수를 양자화 시키는 간격의 1/2 임
• QUANT값이 커지면, 양자화 간격이 커지므로, DCT 계수의 부호화
비트수가 감소하여, 전체 데이터량이 줄어듬
• QUANT가 작아지면, 전체 데이터량이 크게됨
송신버퍼의 점유상황을 지속적으로 모니터링 하여 조절함
• 발생 데이터량이 전송률보다 작으면, 버퍼가 고갈됨 (underflow)
• 발생 데이터량이 전송률보다 크면, 버퍼가 넘치게 됨 (overflow)
H.263
Video coding for low bit rate communication
Annex A~H
H.263v2 (H.263+)
H.263 Annex I~T, X
H.263v3 (H.263++)
H.263 Annex U,V,W,X
15
16. H.263 개요
H.263 표준 개요
H.261 구조를 기반으로 하고 있음
64Kbps 이하의 전화선 또는 무선 환경에서의 저전송율 통신을 위한
영상 부호화 표준으로 제시
• ITU-T 권고안 H.263 - video coding for low bit rate communication,
1996
• 현재는 저 전송율뿐만 아니라, 폭 넓은 전송율에도 적용됨
• H.261과 MPEG 부호화 방식과도 경쟁 가능한 기법으로 인정됨
H.261과의 비교
• H.261과 MPEG-1의 특징들을 결합하여 저전송률을 이룸
– MPEG-1에 비하여 30%의 전송율 감축을 이룸
• H.261 기법을 기반으로 하고 있으나, 여러 개선된 방법을 사용함으로써
H.261보다 향상된 성능을 갖음
H.263의 주요 특징
H.263의 영상 크기
영상 규격
• H.261에서의 CIF, QCIF외에 4CIF, 16CIF, sub-QCIF 규격 추가 지원
밝기 신호 (Y) 색도 신호 (Cb, Cr)
영상 규격
수평 해상도 수직 해상도 수평 해상도 수직 해상도
sub-QCIF 128 96 64 48
QCIF 176 144 88 72
CIF 352 288 176 144
4CIF 704 576 352 288
16CIF 1408 1152 704 576
16
17. H.263의 주요 특징
GOB Structure 352
CIF의 경우 0
1
2
3
4
5
6
7
Picture 8
288
9
10
11
12
13
14
15
16
17
GOB
1 2 3 4 19 20 21 22
(Group Of Block)
Y Cr Cb
MB
(Macroblock) 16
16
Block 8
8
H.263의 주요 특징
Motion Compensation
16x16 단위와 8x8 블록 단위의 움직임 예측
Half pixel 단위의 정밀도를 갖는 움직임 보상 방법
• 1단계로 pixel 단위로 수행
• 2단계로 1/2 화소 단위로 수행
– H.261은 full pixel 단위이고, loop filter를 사용함.
A B
a b 화소 위치
반 화소 위치
c d
a = A, b = (A +B)//2
C D
c = (A+C)//2, d = (A +B +C +D)//4
17
18. H.263의 주요 특징
Motion Vectors 의 부호화
주위 3개의 MB에 대한 MV들을 이용하여 구해진 예측값과의
차이값을 전송함으로써 비트율을 낮춤
MV2 MV3 MV2 MV3
MV1 MV (0,0) MV
(a) (b)
MV : 현재 MB의 움직임 벡터
MV1 MV1 MV2 (0,0) : 픽처 또는 GOB의 경계
MV1 MV MV1 MV
(c) (d)
Px = Median(MV 1x , MV 2 x , MV 3 x ) MVDx = MVx − Px
(
Py = Median MV 1 y , MV 2 y , MV 3 y ) MVDy = MVy − Py
H.263의 주요 특징
PB-프레임 모드
MPEG에서와 같이 두개의 픽쳐를 사용하여 양방향 예측을 사용
• 두 화면(B’과 P’)은 마치 하나의 화면처럼 P-화면의 대블록, B-화면의
대블록이 번갈아가며 부호화됨
– 이 모드에서 MB는 P block 6개와 B block 12 block으로 구성됨
• Block 전송시 P block을 먼저 다 보내고, 이어서 B block을 보냄
– 디코더에서는 B block을 오는대로 재생하고, P block은 버퍼에 저장후 B
picture 후에 재생함
– 디코더에서 B-픽쳐를 기다리는데 걸리는 지연시간을 줄임
비트율을 크게 증가시키지 않으면서도 화면율을 높임
PB-프레임
P B’ P’
18
19. H.263의 주요 특징
기타 H.263의 선택적 기능들
Continuous Presence Multipoint 와 Video Multiplex mode
• 한 video channel에 4개까지 분리된 “sub-bitstream” 제공
• multipoint 통신 응용이나, 채널을 논리적으로 분리할수 없을때
Advanced Prediction mode
• 픽쳐내의 매크로 블록중 Y신호에 대하여 일부를 16x16 크기 대신,
8x8 크기를 사용함으로써 예측의 성능을 높임.
– 매크로블럭당 4개의 움직임 벡터를 사용하게 되므로 비트량은
많아지나, 예측 성능은 월등히 향상됨
Advanced Intra Coding Mode
Deblocking Filter Mode
• 움직임 보상된 화면에 대하여 블록 경계 효과 감소 필터링 적용
H.263의 주요 특징
기타 H.263의 선택적 기능들
supplemental enhancement information mode
• 복호기측에서 보다 다양한 화면 표시를 지원하기 위함
– 화면정지, 순간적 화면 포착, 영상 시간 분할, 점진적 세밀화등
modified quantization mode
unrestricted motion vector mode
• 움직임 예측시 참조 범위를 확장
– 영상의 경계를 따라 움직임이 있거나, 카메라의 움직임과 같은
전역 움직임이 있는 영상 화면들에서 효과적임
scalability mode
• 한 개의 송신영상에 대하여 복호기와 전송로에 따라 여러가지 화질의
재생 영상을 얻을 수 있게 함.
– base layer와 enhanced layer로 구성
19
20. H.263 부호화기(encoder) 구조
H.263 부호화기
p : 프레임내/프레임간 플레그
부호화 제어
t : 전송/비전송 플레그
qz : 양자화 파라메터 정보
OFF
DCT 양자화기 q : 양자화된 DCT 계수 정보
입력
비디오 ON
역양자화기
IDCT
OFF
ON
예측
메모리 v : 움직임 벡터
H.263 복호화기(decoder) 구조
H.263 복호화기
양자화 파라메터 정보 (qz)
전송/비전송 플레그 (t)
출력
양자화된 DCT 계수 정보 (q) 역양자화기 IDCT
비디오
프레임내/프레임간 플레그 (p)
OFF ON
예측
움직임 벡터 (v)
메모리
20
21. H.263+ (H.263 Version 2)
H.263+
H.263에 새로운 Option 기능들을 추가
Option 기능들에 대한 효과적인 조합을 추천하여 부호화 성능을
더욱 향상 시킬 수 있도록 함
• Level 1
– advanced intra coding mode, deblocking filter mode, supplement
enhancement information mode, modified quantization mode
• Level 2
– unrestricted motion vector mode, slice structured mode, reference
picture resampling mode
• Level 3
– advanced prediction mode, PB-frame mode, independent segment
decoding mode, alternative inter VLC mode
• 상위 레벨은 하위레벨의 조합을 포함함.
• 상위레벨로 갈수록 구현 복잡도가 높으나, 성능 향상이 우수
H.263++ (H.263 Version 3)
H.263++
H.263+에 여러가지 발전된 기술들을 추가한 저 전송율 동영상
부호화 표준
H.263++에서 추가되는 기능들
• 오류극복형 데이터 구분(error resilient data partitioning)
• 개선형 참조화면 선택 기법(enhanced reference picture selection)
• 다차계수 움직임 보상(affine motion compensation)
• 적응식 양자화
• DCT 역변환 왜곡 감소(mismatch reduction)
• 블록 경계효과 감소 필터(deblocking/deringing filter)
• 오류 은닉(error concealment)
21
22. H.263 표준
H.263
Annex A - Inverse transform accuracy specification
Annex B - Hypothetical Reference Decoder
Annex C - Considerations for Multipoint
Annex D - Unrestricted Motion Vector mode
Annex E - Syntax-based Arithmetic Coding mode
Annex F - Advanced Prediction mode
Annex G - PB-frames mode
Annex H - Forward Error Correction for coded video signal
H.263 표준
H.263+ (version 2)
Annex I - Advanced INTRA Coding mode
Annex J - Deblocking Filter mode
Annex K - Slice Structured mode
Annex L - Supplemental Enhancement Information Specification
Annex M - Improved PB-frames mode
Annex N - Reference Picture Selection mode
Annex O - Temporal, SNR, and Spatial Scalability mode
Annex P - Reference picture resampling
Annex Q - Reduced-Resolution Update mode (see implementors'
guide correction as noted below)
Annex R - Independent Segment Decoding mode
Annex S - Alternative INTER VLC mode
Annex T - Modified Quantization mode
Annex X - Profiles and levels definition
22
23. H.263 표준
H.263++ (version 3)
Annex U - Enhanced reference picture selection mode
Annex V - Data-partitioned slice mode
Annex W - Additional supplemental enhancement information
specification
Annex X (originally specified in 2001) - Profiles and levels definition
Q&A
23