60일차

ssongyi·2022년 5월 27일
0

CS스터디

목록 보기
50/51

060. ZIP 파일로 압축할 때

가용 메모리와 대역폭을 더 효율적으로 활용하는 한 가지 방법은 데이터를 압축하는 것이다.
압축의 기본 아이디어는 군더더기 정보, 즉 연결 부분의 반대쪽에서 데이터를 수신했을 때 재현하거나 유추할 수 있는 정보는 저장하거나 보내지 않는 것이다.
압축의 목표는 같은 정보를 더 적은 비트로 인코딩 하는 것이다.

허프만 코딩(huffman coding) 이라는 알고리즘은 처리를 체계적으로 수행하여 개별 문자를 인코딩하는 가장 효율적인 방법을 찾는다.

이미지도 압축할 수 있다. 가장 흔한 압축 형태는 GIF(Graphics Interchange Format)와 PNG(Portable Network Graphics) 두 가지이다. 둘다 주로 텍스트, 선 그림 또는 단색 블록으로 구성된 이미지에 사용하려고 만들어진 포맷이다.

이상의 기술은 모두 무손실 압축(Iossless compression)을 수행한다. 무손실 압축 기법에서는 압축해도 정보가 소실되지 않으므로 압축을 풀면 원본 소스가 정확하게 복원된다.

원본 입력을 정확히 재현하지 않아도 되는, 다시 말해 원본에 근접한 형태여도 충분할 경우에는 손실 압축(lossy compression) 기술을 사용한다.

손실 압축은 사람들이 보거나 듣는 콘텐츠를 압축하는 데 가장 흔히 사용된다. 사람의 눈으로는 서로 가까이 있는 색상을 구별하지 못하므로 입력된 것과 정확히 같은 색상을 보존하지 않아도 된다. 따라서 적은 수의 색상으로도 충분히 표현할 수 있기 때문에 이미지를 더 적은 비트로 인코딩한다.

영화와 TV를 압축하기 위한 MPEG 계열의 알고리즘도 사람의 인지 능력의 한계를 이용한 기법이다.
MPEG는 개별 프레임을 JPEG처럼 압축할 뿐만 아니라 한 프레임에서 다음 프레임으로 갈 때 크게 변하지 않는 일련의 블록을 압축한다.
움직임의 결과를 예측하여 변경 사항만 인코딩할 수 있고, 심지어 정적인 배경에서 움직이는 전경을 분리하고 배경에 더 적은 비트를 사용하여 압축하기도 한다.

MP3와 그 뒤를 이은 기술인 AAC는 MPEG의 오디오 부분으로, 음향을 압축하기 위한 지각 부호화(perceptual coding) 알고리즘이다. 무엇보다도 이런 알고리즘은 시끄러운 소리가 조용한 소리를 가리고, 사람의 청각이 약 20kHz보다 높은 주파수를 들을 수 없는 점을 이용한다. MP3나 AAC 인코딩은 일반적으로 표준 CD 오디오를 약 10배 비율로 압축한다.

휴대전화도 압축 기술을 많이 사용한다. 음성은 다른 임의의 소리보다 훨씬 더 많이 압축할 숙 있다.

어떤 형태든 압축 알고리즘에 담긴 아이디어는 나중에 사용될 가능성이 있는 정보를 전혀 전달하지 않는 비트를 줄이거나 없애는 것이다.
이렇게 하려면 더 자주 발생하는 요소를 더 적은 비트로 인코딩하고, 자주 나타나는 일련의 정보에 대한 사전을 만들고, 반복되는 요소는 그 횟수와 함께 인코딩하면 된다.

무손실 압축을 이용하면 원본을 완벽하게 재구성할 수 있다. 손실 압축은 수신자에게 필요하지 않은 일부 정보를 버리는 것으로, 품질과 압축률 간 트레이드오프가 발생한다.

또 다른 트레이드오프를 고려해야 하는 경우도 있다. 압축할 때의 속도 및 복잡도와 압축 해제할 때의 속도 및 복잡도를 비교하는 것이 하나의 예다.

0개의 댓글