MPEG의 I/B/P
MPEG의 경우 초기 압축 방식은 전통적인 Cell 방식이 아닌 다른 방식으로 영상을 저장 하는 방법을 택하였다. 초당 영상을 24(30)장의 사진으로 표현 하는 것이 아닌 움직임이 있는 부분만을 저장하는 방법으로 압축 하였다.
좀더 설명 하자면. MPEG 동화상 압축 알고리즘은 JPEG 정화상 압축 알고리즘과 H.261 동화상 압축 알고리즘 등을 발전 시킨 것이다. MPEG에서는 모든 프레임을 개별 정화상으로 압축하는 것이 아니라, 인접 프레임 사이의 동작보상을 하는데 있어 예측과 보간을 이용한다. 즉, 이전 화면의 모든 정보를 전부 압축 부호화하여 저장했다면 다음 화면의 정보를 저장할 때 앞 화면과 바뀐 부분의 정보(차영상)만을 압축 부호화 한다는 개념이다. 그러나 임의 접근과 같은 VCR식 제어가 가능해야 한다는 등의 여러 이유로 MPEG 비디오에서는 자신이 가지고 있는 정보만으로도 복원될 수 있는 프레임이 규칙적으로 삽입 되어야 한다.
이러한 프레임은 JPEG과 아주 유사하게 정화상으로 압축 되어진다. 정화상으로 압축된 프레임을 I프레임, 예측만을 한 프레임을 P프레임, 보간을 한 프레임을 B 프레임이라 한다.
I-프레임 (Intra-Coded Frame) 데이터 스트림의 어느 위치에도 올 수 있으며, 데이터의 임의 접근을 위해 사용되며, 다른 이미지들의 참조 없이 부호화 된다. I-프레임은 정화상 압축방법(JPEG)를 이용 하지만, JPEG과는 달리 MPEG에서는 실시간으로 압축이 이루어진다. I-프레임의 압축은 MPEG에서는 가장 낮은 압축률을 보인다. I-프레임은 매크로 블록 내에서 지정된 8*8 블록으로 나눈 후, DCT 기법을 사용한 후, DC계수는 DPCM 방법으로 부호화하는데, 연속한 블록 사이의 차이 값을 계산한 후 가변 길이 코딩을 사용하여 변환한다. P-프레임 (Predictive-Coded Frame) 부호화와 복호화를 행할 때 이전의 I-프레임 정보와 이전의 P-프레임의 정보를 사용한다. P-프레임은 연속되는 이미지들의 전체 이미지가 바뀌는 것이 아니라 이미지의 블록 들이 옆으로 이동한다는 점에 착안할 것이다. 즉, 움직임이 있는 경우 앞 화면에 있는 물체 자체의 모양에는 큰 변화 없이 옆으로 이동하는 경우가 대부분이므로, 이전의 화면과 현재의 화면의 차이가 매우 적은 것을 이용하여 차이 값 만을 부호화 하는 것이다. B-프레임 (Bidirectionally-Coded Frame) 부호화와 복호화를 행할 때 이전, 이후의 I-프레임과 P-프레임 모두를 사용한다.B-프레임을 사용하면 높은 압축율을 얻을 수 있다. B-프레임은 이전의 I- 또는 P- 프레임과 B-프레임 이후의 I- 또는 P- 프레임의 차이 값을 가진다. 좀더 쉽게 설명 하자면, 움직임이 있는 부분만 저장 하면 된다고 생각 하면 된다. 예를 들어 칠판 앞에서 강의 하고 있는 선생님이 있다고 가정 하자. 이 경우 칠판 등의 배경은 움직임이 없게 되고 강의하는 선생님만이 움직임이 있을 것이다. 그럼 첫 장에는 전체 그림정보를 가지고 있고. 마지막에 있는 영상 정보와 비교 하여 변경된 부분 예를 들어 강의 하는 선생님이 손을 올린 경우(변경된 부분).만을 압축하여 정보를 가지고 있고 원 배경정보는 그대로 사용 하는 방법이다. 이는 프레임 단위로 저장 하는 방식 보다는 획기적으로 영상을 압축 하는 방법이 된다. 즉 고정되어 있는 적은 용량(압축율:MPEG1의 경우 1Mbps~6Mbps)안에서 영상을 효율적으로 압축하고 표현하는 방법이 된다. 그러나 이런 방법의 문제점은 전체 화면이 수시로 변경되는 영상에서는 취약점을 발생시킨다. 즉 고정되어 있는 압축율일 경우 전체 화면이 변경될 경우 그 정보량이 많아지게 되지만, 압축율은 고정되어 있기 때문에 정보를 다 표시 못하는 경우가 발생 한다. (예를 들어 물(바다 등 물결이 발생하는 경우), 불, 모터 스포츠 등 움직임이 많을 경우 격자 격자 모양의 영상이 발생되는 것을 볼수 있을 것이다. 확인하는 방법은 아주 쉽다. 만약 Skylife를 이용한다면, 스포츠 채널 같은 것을 유심이 보면 카메라가 빨리 움직일 때 종종 발생 한다. (Skylife도 MPEG을 이용한다.) 추가 정보.: 압축률의 단위를 보면 bps를 표시되어 있는데 이 경우는 Bit per second의 약자 이다. 컴퓨터의 경우 정보의 저장 단위는 0,1로 구성되어 있는 Bit와 8개의 bit를 구성 되어 있는 Byte가 있다. 주로 Bit의 경우는 전송에 관련된 단위로 사용한다. 즉. 네트워크 속도도 Bps로 표시 된다. 즉 요즘 선전하는 광 랜의 경우 100Mbps로 표시 되는데 이는 1초당 약 100M bit의 데이터가 이동 하는 것이다. 그럼 여기서 잠시.. 하드디스크에 저장되는 경우는 Byte이다. 유저들이 혼돈하는 경우가 있는데. 예를 들어 하드 디스크에 저장되어 있는 100Mb의 정보를 100Mbps의 네트워크로 전송 할 경우는 몇 초가 걸릴까? 간단하다. 1/8 이기 때문에 약 8초 정도 걸린다. 100Mbps/8 = 12.5Mb. 단 이는 이론적인 것이며 실제로는 좀더 걸린다. 압축 할 때 사용 하는 방식. CBR VS VBR과 용량 계산 방법 CBR 또는 VBR 이란 말을 들은 적이 있을 것이다. 이는 압축 및 전송할 때 사용 하는 방법이다. 앞에서도 언급한 것처럼 MPEG 은 전송의 목적을 가지고 있다. 또한 그 전체 용량을 처음 변환할 때 거이 정해 놓고 이용한다. 예를 들어 1초당 1Mbps로 인코딩(디지털 변환)하고 10분을 한다고 가정 했을 때 1Mbps * 60S*10 = 600Mbps의 정보를 가지게 되며, 저장 용량으로는 600Mbps/8= 75Mb의 정보를 가지게 된다. 또 다른 예로 약 4분 정도의 노래를 128Kbps의 MP3로 변환한다고 할 때 약 3.8Mb의 저장 장치 공간을 차지 한다. ( ^^ 대부분의 MP3노래가 128Kbps로 되어 있다면 약 4Mb의 저장 공간을 차지 한다. ) 위의 경우로 볼 때 고정되어서 변환하는 경우를 CBR이라고 한다. CBR (Contant bit rate:고정 비트 레이트 )의 경우는 원본의 정보량에 상관없이 고정되어 변환 하기 때문에 전체 서비스 용량 및 저장 용량의 계산이 용이 하기는 하나, 변환된 데이터의 질에는 문제가 발생할 수 있다. 예를 들어 앞에서 언급한 것처럼 물이나, 불과 같이 정보가 많이 필요한 경우 한정되어 있는 변환율 때문에 정보를 다 표현 못하고 화면이 깨지는 경우가 발생한다. 또 반대의 경우 움직임이 적어 많은 압축이 되는 경우 불필요한 정보를 가지고 있게 된다. VBR(Variable Bit Rate)이란 가변 비트레이트를 의미한다.. VBR는 CBR의 단점을 개선한 방법이다. 영상 데이터 중 데이터가 적은 부분에서는 비트레이트를 낮추고 데이터가 높아지는 부분에서는 비트레이트를 높이는 방법을 이용해 적은 크기의 파일로도 높은 음질 및 화질을 기대할 수 있다. 그러나 VBR로 만들어진 대부분의 파일은 생각보다 작지 않다. 예를 들어 오히려 같은 음악을 MP3로 만들었을 때 비트레이트를 고정시켰을 때(CBR방식)보다 좀더 파일 크기가 더욱 클 때가 많다. VBR로 만들면 높은 음질을 만들기 위해 더욱 높은 비트레이트를 사용하게 된다. 물론 데이터가 적은 부분에서는 비트레이트가 다운되지만 좋은 음질을 만들기 위한 부분에서는 더욱 높은 비트레이트를 사용하기 때문에 용량이 오히려 커지게 된다. 하지만 음질의 차이는 크지 않다.