파일 구조2009.10.09 19:46

[출처]-http://yebig.tistory.com/165
http://yebig.tistory.com/trackback/165

1. JPEG 개관

영상압축 표준 중의 하나인 JPEG은 칼라 정지영상의 부호화 표준을 목표로 ISO/CCITT에서 1988년 ADCT(Adaptive Discrete Consine Transformation)를 기초로 하는 알고리즘을 선택, 이 부화화 방식을 JPEG이라 명명하였으며 최종적으로 1992년 국제 표준으로 JPEG(Joint Photographic Expert Group) 알고리즘이 확정되었다.

JPEG은 기본적으로 화상의 크기, 칼라 시스템 및 칼라 성분에 대한 제한을 갖지 않으며, 압축 모드로는 순차적 부호화, 점진적 부호화, 계층적 부호화, 무손실 부호화가 있다.

JPEG의 기본 개념은 여러가지 응용 목적에 맞게 부호화 방식을 선택해서 필요한 부분을 선택적으로 적용할 수 있도록 툴 키트 개념을 바탕으로 한다.

즉 JPEG은 무손실 부호화(Lossless Compression)방식과 손실 부호화(Lossy Compression)방식을 모두 포함하고 있으며 칼라정지 화상에 대한 부호화 방식을 폭넓게 수용하고 있으므로 응용 분야에 따라 부호화 방식이나 사용되는 매개변수 등을 적절히 선택해서 조합하여 사용할 수 있다.

JPEG은 손실없는 부호화 방식을 사용할 경우 정보량의 약 1/2정도로 압축이 가능하며, 베니스 라인 방식을 적용할 경우 칼라 화상의 화질에 거의 손상을 주지 않고 평균 1/20까지, 그리고 최대 1/50까지 정보량을 압축할 수 있다.

알고리즘 측면에서 살펴보면 JPEG은 사실상 모든 압축 표준안의 기본이 된다고 말할 수 있다.

동영상의 압축 표준화인 MPEG 또한 JPEG의 기본개념을 많이 따랐다. MPEG은 동영상에 대한 압축을 목표로 하지만 동화상이라는 것은 정지영상인 프레임이 연속적으로 전개되는 것에 불과하기 때문이다.

그럼 구체적으로 JPEG 압축을 살펴보자.

2. JPEG Major Steps

* Encoding
1. RGB영역에서 YIQ영역으로 변환
2. YIQ의 macroblock화
3. macroblock을 8*8 block화
4. 이산코사인변환(DCT)
5. 양자화(Quantizing)
6. Zig-zag scanning
7. 차등부호화(DPCM on DC component) 또는 부호화흐름길이 부호화(RLE on AC component)
8. 엔트로피코딩(Etropy coding : 허프만 부호화 또는 산술부호화)


* Decoding은 Encoding의 역순이다.

3. DCT(Discrete Cosine Transform)

DCT 알고리즘은 영상 압축을 위한 효과적인 코딩기술인데 이를 이용하여 원 데이터의 블록들은 트랜스폼- 영역으로 변환한 것이고, IDCT는 처리된 트랜스폼-영역의 데이터 블록들을 원 데이터로 변환시킨 것이다.

u,v는 변환 영역의 좌표이고 i,j는 화소 영역의 공간 좌표이다.


2차원 DCT의 일반식은 다음과 같다.

Discrete Cosine Transform (DCT):



Inverse Discrete Cosine Transform (IDCT):


여기서 F[0,0]은 DC와 AC성분을 정의한다.

이 DCT를 이용하면 영상을 공간 영역에서 주파수 영역으로 변환할 수 있으며, 영상 데이터는 변화가 적으므로 낮은 주파수, 특히 0 주파수(DC)성분이 큰 값을 가지게 되고 높은 주파수 성분은 상대적으로 낮은 값을 갖게 되므로서, 대부분의 정보가 낮은 주파수 쪽으로 몰리게 되므로 양자화 과정을 적절히 거치면 높은 압축률로 우수한 화질을 얻을 수 있다.

64 (8*8) DCT basis funtions


4. Quantizing & Coding

양자화 과정이란 DCT를 통해 얻어진 DCT계수값 등을 어떤 상수들로 나누어 유효자리의 비트수를 줄이는 과정이다.

양자화된 8*8 block을 1*64 벡테로 Zig-zag scaning을 한다.

Zig-zag scaning을 거친 DC요소(저주파수)에 대해서는 DPCM(Diffrerntial Pulse Code Modulation), AC요소(고주파수)성분에 대해서는 RLE(Run Length Codig)으로 부호화 한다.

DPCM은 가장 간단한 예측 압축 기법으로서 픽셀 레벨에서 이루어진다. 직전 픽셀과 비교하여 둘 사이의 차이만을 전송하는 것이다. 이웃한 픽셀들은 종종 동일 하거나, 이웃한 픽셀들 사이의 차이가 적을 확률이 높기 때문에 새로운 픽셀값 전체를 전송하는 것보다 더 적은 비트를 가지고 안전하게 전송할 수 있다. 이러한 이유로 DC요소(저주파수)에 대해서는 DPCM부호화를 사용한다.

반복길이부호화(RLE) 기법은 반복되는 픽셀의 블럭을 하나의 값과 그값의 반복회수로 나타내는 것이다.
RLE부호화의 장점은 데이타의 압축률을 높일 수 있다는 것이다.

이 방법은 반복되는 횟수가 클때 큰 효과를 낼 수 있으며, 단순히 2번 반복되는 경우의 데이타 흐름이나 또는 연속인 같은 값의 수에 의한 데이타의 흐름은 부호화 할 수 없기 때문에 AC요소에 대해서는 RLE코딩을 사용하난 것이다.

5. Overview of the JPEG bitstream



A "Frame" is a picture, a "scan" is a pass through the pixels (e.g., the red component), a "segment" is a group of blocks, a "block" is an 8x8 group og pixels.

Frame header : sample precision (width, height) og image number of components unique ID (for each component) horizontal/vertical sampling factors (for each component) quantization table to use (for each component)

Scan header : Number of components in scan component ID (for each component) Huffman table for each component (for each component)

Misc. (can occur between headers)
Quantization tables
Huffman Tables
Arithmetic Coding Tables
Comments
Application Data

동영상의 경우는 DCT와 더불어 화면간 물체들의 움직임 보상(motion compensation)을 이용한 예측부호화를 기반으로 하고 있다.
저작자 표시 비영리 변경 금지
신고

'파일 구조' 카테고리의 다른 글

[BMP] BMP 파일의 구조  (0) 2009.10.24
[JPEG] JPEG의 파일구조  (0) 2009.10.10
[JPEG] JPEG 개요  (0) 2009.10.09
Posted by 코멧'★

티스토리 툴바