[디지털영상] MPEG 압축 이해하기
Media/Media Science

[디지털영상] MPEG 압축 이해하기

728x90
반응형

MPEG (Moving Picture Experts Group)

일반적으로 MPEG을 코덱이나 동영상 파일 확장자라고 생각하지만, 풀네임에서 알 수 있듯이 MPEG이란 ISO/IEC 산하의 그룹이다.

1988년에 설립된 이후 비디오와 오디오, 네트워크 등 멀티미디어 표준의 개발을 담당하고 있다.

MPEG은 MPEG-1, MPEG-2, MPEG-4, MPEG-7, MPEG-21 등의 압축 포맷을 개발하고 표준화시켜왔다.

 

MPEG 종류

MPEG-1

1993년 표준화된 압축 기술로 CD에 동영상을 담기 위해 사용되었다.

CD-ROM 속도에 맞췄기 때문에 최대 1.5Mbps의 전송률을 지원하며, 표준 해상도는 352x240(30fps)이다.

CD 1장에 74분의 영상을 담을 수 있으며 2채널 Stereo를 지원한다.

 

MPEG-2

1995년 표준화되었으며 방송용 DVD, HDTV에 사용되었다.

4Mbps 이상의 전송률을 지원하며, Full HD 해상도까지 구현 가능하다.

또한 5.1채널 입체 음향을 지원한다.

 

MPEG-4

1999년 표준화되었으며 현재 가장 많이 쓰이는 압축 기술이다.

web과 모바일 환경에서 사용되며 유튜브 등 인터넷에 업로드되는 영상은 거의 MPEG-4 압축방식을 사용한다. (mp4 확장자)

24Kbps ~ 2Mbps의 낮은 전송속도와 높은 압축률이 특징이다.

참고로 H.264 코덱이 MPEG-4의 Part 10 Advanced Video Coding으로 정의되어 있다.

 

MPEG-7

주로 멀티미디어 정보 검색에 사용되는 압축 표준이다.

오늘날 미디어 데이터가 넘쳐나 검색과 활용이 어려워짐에 따라 데이터 검색을 용이하게 하기 위해 만들어졌다.

이를 이용하여 검색사이트에서 키워드로 동영상을 검색하는 등 다양한 분야에서 사용할 수 있다.

 


 

MPEG-1 압축 알고리즘

MPEG-1 특징

MPEG-1은 위에서 설명했듯이 CD-ROM에 대한 재생용으로 고안되어, 부호화는 다소 시간이 걸리지만 복호화는 실시간 처리가 가능하다.

2차원 공간상의 중복을 제거하기 위해 DCT가 사용되며, 프레임 단위의 압축은 물론 프레임간의 연관성을 이용한 압축방법을 적용한 것이 특징이다.

이때 비디오 시퀀스가 갖는 시간축 상의 중복을 없애기 위해 움직임 보상방법을 이용하는데, 프레임 메모리 2장을 사용하여 쌍방향 예측을 수행한다.

또한 임의 접근(Random access)를 가능하도록 하기 위해 GOP(Group of Pictures) 구조를 이용하여 압축한다.

 

Picture Type

움직임 보상 과정에서 연속되는 프레임의 차이를 경제적으로 전송하기 위해 세 가지 프레임 type을 사용한다.

압축 방법을 설명하기 앞서 세가지 프레임 type에 대해 알아보자.

 

I-Frame (Intra Frame)

Key 프레임이라고도 불리며, 단일 프레임 단위로 압축을 진행한다.

JPEG 압축방법을 사용하며, 독립적으로 압축된 프레임이기 때문에 다른 프레임의 참조 없이도 복원이 가능하다.

I-Frame으로 인해 Random Access가 가능하다.

 

P-Frame (Predicted Frame)

이전에 위치한 I프레임 또는 P프레임으로부터 움직임을 예측한 후 나머지 차이 부분을 DCT 변환하여 압축한다. (이전 프레임과 현재 프레임을 비교하여 변화된 부분만 기록하여 압축)

과거로부터 예측하므로 이전 프레임에 대한 의존도가 높다.

 

B-Frame (Bi-directional predicted Frame)

이전에 위치한 프레임(과거) 뿐만 아니라 이후에 위치할 프레임(미래)을 참고하여 쌍방향 예측을 진행한다.

이전 프레임과 이후 프레임에 대한 의존도가 높다.

복원 시 쌍방향 예측을 수행하기 때문에 I, P프레임을 먼저 처리한 후 B프레임을 부호화해야 한다.

 

압축 방법

기본적인 원리는 프레임이 바뀔 때 변화가 있는 부분에 대한 정보(움직임 보상)만 기록하는 것이다.

 

압축 방법은 간단하다.

원본 프레임 데이터를 토대로 우선 JPEG 압축 방법을 사용하여 독립적으로 I-Frame을 만든다.

생성된 I-Frame을 기준으로 가장 이웃한 P-Frame을 압축하고 이들 사이의 B-Frame 압축을 진행한다.

P-Frame은 현재의 프레임과 앞의 I-Frame 또는 P-Frame과의 차이를 관찰하여 만들어진 예측 정보만을 포함한다. (즉 완전한 하나의 장면이 아니다)

B-Frame 또한 앞의 프레임과 다음 프레임 간의 차이를 예측한 정보로 구성된다.

양쪽을 기준으로 잡기 때문에 P-Frame 보다 비교적 정확성은 높으나 계산이 느리며, 데이터가 작다는 특징이 있다.

 

복호화 방법도 동일하게 I-Frame → P-Frame → B-Frame 순으로 진행된다.

우선 I-Frame을 복원한 후 이를 기준으로 가장 이웃한 P-Frame을 복원한다.

이후 이들 사이의 B-Frame들을 복원해나가는 방식이다.

 

이를 표로 나타내면 아래와 같다.

 

GOP

눈치가 빠르다면 먼가 문제점을 찾아냈을 것이다.

 

그렇다.

키프레임인 I-Frame을 찾기 힘든 경우 역방향 재생 시 기준이 없기 때문에 복원이 불가능해진다.

물론 배속 시에도 키프레임을 찾기 위해 속도가 느릴 것이다.

 

동영상의 어느 지점이든 Random Access 발생 시 빠르게 해당 시점의 프레임을 복원해줘야 영상을 시청하면서 답답하지 않을 것이다.

이를 위해 추가된 구조가 바로 GOP(Group of Pictures)이다.

 

하나의 GOP는 약 10~15장의 Frame으로 이루어진다.

GOP 내에는 반드시 I-Frame이 포함되어야 하며, GOP 앞부분에 시퀀스 헤더를 붙인다.

 

Random Access 시 시퀀스 헤더의 위치를 확인하고 GOP 내의 I-Frame을 참조하여 영상을 복원한 후 이를 바탕으로 P-Frame, B-Frame을 복원하여 재생하는 구조이다.

 

MPEG-1 데이터 구조

 

 

 

728x90
반응형