5. YUV420 포멧(2)
• Y = WIDTH x HEIGHT
• U = WIDTH/2 x HEIGHT/2
• V = WIDTH/2 x HEIGHT/2
• TOTAL = Y+U+V = 1.5 x WIDTH x HEIGHT
• RGB의 1/2 (RGB = 3 x WIDTH x HEIGHT)
• 출력영상은 RGB
6. 영상압축의 목표
• 압축의 목표 – 디지털 정보에서 중복된 정보를 제거
• 가역압축 => 파일압축(zip/tar/bz2)
• 비가역압축 => 영상/음성 압축
• 영상압축
- 공간적 압축 => 화면내 중복정보 제거(i-frame, jpeg)
- 시간적 압축 => 화면간 중복정보 제거(p-frame, b-
frame)
- 부호압축 => 가변길이 부호화(엔트로피 인코딩)
• 영상압축의 최종목표는 부호압축에 유리하도록 데이터
를 변형하는데 있다 => 디지털정보는 같은 패턴이 연속
해서 반복될수록 압축에 유리하다 (RLE : Run Length
Encoding)
7. 공간적 압축
• Intra-frame 압축, 한 프레임 내에서의 중복 정보를 제거
(i-frame, jpeg)
• 블럭단위 압축 – 4x4/8x8/16x16과 같은 블럭단위로 연산
=> 작은 블럭일수록 정교하지만 압축률에는 불리
• 고주파/저주파 영역 – 픽셀영상을 주파수 영역으로 변환
했을때 인접한 화소들간에 변화가 많다/적다
• 손실압축 – 영상 내의 고주파 영역을 제거
• DCT 변환 – 픽셀정보를 주파수 영역으로 변환 => 고주
파/저주파 성분 분리를 위해
• 인간의 눈은 저주파 성분에는 민감하지만 고주파 성분에
는 둔감 => 고주파 성분에 손실이 있어도 감지하지 못함
8. DCT 변환
• DCT 변환 후 저주파 영역(좌상단)에는 큰 값이, 고주파
영역(우하단)에는 주로 작은 값들이 배치
• 고주파 영역 – 주변 픽셀과 차이가 많은 영역
• 저주파 영역 – 주변 픽셀과 차이가 적은 영역
9. 양자화 계수와 지그재그 스캔
• 양자화 계수(Quantization Parameter)로 나눈 다음(손실발생) 지그
재그 스캔을 통해 같은 값들이 연속해서 나오도록 한다 => 부호압
축에 유리
• 압축영상을 복원하는쪽에서는 반대로 역 지그재그 스캔으로 블럭을
복원한 후 QP값을 곱해서 복원한다
• QP값에 따라 영상의 화질이 결정(bitrate)
10. 시간적 압축
• Inter-frame 압축, 영상 프레임 간의 중복
정보 제거 => 프레임 간에 변화된 정보만
추출 (p-frame, b-frame)
• 영상을 블럭단위로 나눈다음 해당 블록이
참조 프레임의 어느 블록에 해당되는지 찾
는 방식 (Motion Estimation)
• 예측에러(Prediction Error) 등으로 손실 발
생 => i-frame 을 중간중간 넣어줘야함
11. Motion Estimation
• ME를 통해 Motion Vector(MV)값을 구한다
• 해당 블록의 MV값만을 압축
• 영상복원은 반대로 이전 프레임에서 해당 블록
에 MV를 더하는 방식으로 복원
12. 부호압축(엔트로피 인코딩)
• 가변길이부호화(VLC : Variable Length Coding) 방식으
로 최종 압축할 데이터의 비트스트림을 압축(지그재그
스캔을 마친 블럭데이터), 무손실 압축
• 호프만 코딩에 기초 – 출현빈도가 높은 값에게는 짧은
부호를 할당하고 출현빈도가 낮은 값에게는 긴 부호를
할당
• CAVLC - Context Adaptive Variable Length Coding
• CABAC - Context Adaptive Binary Arithmetic Coding
• 비트열의 흐름에서 동적으로 부호할당
• CABAC은 CAVLC보다 복잡하고 오래 걸리지만 압축률이
더 좋음
14. 비디오 프레임 종류
• i-frame과 다음 i-frame 사이의 모든 프레임들을
GOP(Group Of Pictures)라 한다
• b-frame은 네트워크로 전달되는 시스템에서는 일반적으
로 잘 쓰지않는다(파일 인코딩에서 주로 사용)
• IPPPP…I 로 인코딩된 상황에서 중간의 P프레임을 디코딩
하려면 앞선 IPPP가 다 필요하다(I←P←P←P←P)
15. H.264 코덱의 역사
• ITU-T 계열의 H.26x 시리즈와 ISO/IEC 계열의 MPEG 시리즈
• H.264 / MPEG4 Part10: AVC – 최신 부호화 기술의 집대성, 1/20 ~ 1/100
압축률, bitrate는 10 kbps ~ 240 Mbps
16. FFMPEG
• 현존하는 거의 유일한 오픈소스 코덱 프로젝트 –
GPL/LGPL 라이센스, 다양한 플랫폼 지원(윈도우/리눅스/
안드로이드/iOS 등)
• 인코더/디코더/먹서/디먹서/스케일러 등으로 구성
• 다양한 코덱과 파일포멧을 지원
• 현존하는 거의 대부분의 멀티미디어 재생기가 FFMPEG
을 사용중 – VLC/곰플레이어/팟플레이어/KMPlayer 등
• 사용하기 쉽고 응용하기고 쉬움
17. 코덱관련 용어
• 멀티미디어 컨테이너 포멧 – AVI/MP4/MKV 등과 같이 특정 포멧을
가지고 H.264/MPEG4/MP3와 같은 인코딩 스트림을 저장하는 파일
포멧(코덱과는 다른 의미)
• 트랜스코딩 – 특정 코덱으로 인코딩된 스트림(네트웍/파일)을 다른
코덱 혹은 해상도를 변환하는 것. 예) H.264->MPEG4, MPEG4-
>H.264, 해상도 변환 => 입력영상을 디코딩 후 다시 인코딩
• 프로파일 – 영상 압축을 위한 다양한 방법과 알고리즘들의 집합.
예)H.264 Baseline/Main/Extended Profile
• 비트레이트(Bitrate) – 단위 시간당 인코딩 데이터의 출력량
• CBR/VBR – Contant BitRate/Variable BitRate