Lempel Ziv coding을 이용하여 압축 프로그램을 만들어 보자.
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

Lempel Ziv coding을 이용하여 압축 프로그램을 만들어 보자.에 대한 보고서 자료입니다.

본문내용

ode=new_code;
}
printf("\n");
}
/*
** 이것은 string table로부터 간단하게 decode하는 루틴이다.
** 버퍼는 expansion 프로그램과 역으로 출력가능하다.
*/
char *decode_string(unsigned char *buffer,unsigned int code)
{
int i;
i=0;
while (code > 255)
{
*buffer++ = append_character[code];
code=prefix_code[code];
if (i++>=4094)
{
printf("Fatal error during code expansion.\n");
exit();
}
}
*buffer=code;
return(buffer);
}
/*
** 다음의 두 routines는 variable length code의 출력에 쓰인다.
*/
input_code(FILE *input)
{
unsigned int return_value;
static int input_bit_count=0;
static unsigned long input_bit_buffer=0L;
while (input_bit_count <= 24)
{
input_bit_buffer |=
(unsigned long) getc(input) << (24-input_bit_count);
input_bit_count += 8;
}
return_value=input_bit_buffer >> (32-BITS);
input_bit_buffer <<= BITS;
input_bit_count -= BITS;
return(return_value);
}
output_code(FILE *output,unsigned int code)
{
static int output_bit_count=0;
static unsigned long output_bit_buffer=0L;
output_bit_buffer |= (unsigned long) code << (32-BITS-output_bit_count);
output_bit_count += BITS;
while (output_bit_count >= 8)
{
putc(output_bit_buffer >> 24,output);
output_bit_buffer <<= 8;
output_bit_count -= 8;
}
}
프로그램에 test.bmp 파일을 넣어 test.lzw와 test.out화일이 출력되었습니다. 여기서 test.lzw는 원본 파일을 압축한 것이고 test.out화일은 압축한 파일을 토대로 다시 복원한 파일입니다.
여기서 보면 압축한 파일은 1048kb였고 다시 복원된 파일은 원본 파일과 크기에서 같았습니다. 약 45.5%의 압축률을 보였습니다. test.out인 복원화일은 이미지를 열어본 결과 원본 파일과 정확히 같은 모습을 보였습니다.
test.bmp(원본입력화일)
test.out(압축후 복원화일)
다른 압축 표준인 jpeg 파일을 압축하여 보았는데 압축된 파일이 원본 파일보다 오히려 용량이 늘었습니다. Jpeg의 압축 기술이 훨씬 효율 적이란 것을 대략적으로 알게 되었습니다.
프로그램을 코딩하면서 압축에 관한 기술을 살펴보게 되었는데요, 프로그래밍 자체도 어려웠지만 압축 알고리즘을 이해하는데도 어려움을 겪었습니다. 어찌 되었건 어떤 데이터를 압축한다는 것은 상당히 어려운 기술임을 알게 되었는데요, 압축의 효율은 몇가지 요인에 달려있음을 알게 되었습니다. LZW compression은 data stream 들이 반복되는 string을 가지고 있으면 효율적으로 압축을 할 수 있었습니다. 이런 이유로 text를 압축할 때 LZW는 상당한 위력을 발휘하고 압축률은 50%까지 되고 또는 그 이상을 기대할 수 있습니다.
이진 data를 압축하려하면 조금 어려운데 압축은 좋은 결과를 나타낼 수도 있고 그렇지 않을 수도 있습니다. 어떤 경우 data 파일은 text화일보다 더 잘 압축이 되는 반면 그렇지 않은 경우도 있는데 이것은 data화일에 따라 다름을 알게 되었습니다.
이상으로 LZW를 이용한 압축프로그램을 만들고 고찰해 보는데요, 기회가 된다면 JPEG, MP3, MPEG등 좀 더 복잡한 그리고 현재 상용되고 있는 압축 표준에 대해 배워 보았으면 합니다. 과제를 하면서 압축이라는 새로운 영역을 알게 되었는데요, 매번 과제 할 때마다 하나씩 알아가는 재미에 프로그램 실력도 늘고 새로운 분야도 알게 되어 정보이론 시간이 즐겁습니다.

키워드

C++,   프로그램,   압축
  • 가격1,000
  • 페이지수9페이지
  • 등록일2004.04.25
  • 저작시기2004.04
  • 파일형식한글(hwp)
  • 자료번호#247407
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니