'''
이론 컴퓨터 과학 {{{#!wiki style="display: inline-block; font-family:Times New Roman, serif;font-style:italic"''' |
|||||
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -5px -1px -11px" |
<colbgcolor=#a36> 이론 | ||||
기본 대상 | 수학기초론{ 수리논리학( 논리 연산) · 계산 가능성 이론 · 범주론 · 집합론} · 이산수학( 그래프 이론) · 수치해석학 · 확률론 및 통계학 · 선형대수학 | ||||
다루는 대상과 주요 토픽 | |||||
계산 가능성 이론 | 재귀함수 · 튜링 머신 · 람다대수 · 처치-튜링 명제 · 바쁜 비버 | ||||
오토마타 이론 | FSM · 푸시다운 · 튜링 머신( 폰노이만 구조) · 정규 표현식 · 콘웨이의 생명 게임 · 형식언어 | ||||
계산 복잡도 이론 | 점근 표기법 · 튜링 기계^ 고전, 양자, 비결정론적, 병렬 임의접근 기계^ · 알고리즘 · 자료구조 · 알고리즘 패러다임( 그리디 알고리즘, 동적 계획법) | ||||
정보이론 | 데이터 압축( 무손실 압축 포맷 · 손실 압축 포맷) · 채널 코딩(채널 용량) · 알고리즘 정보 이론(AIT) · 양자정보과학 | ||||
프로그래밍 언어이론 | 프로그래밍 언어( 함수형 언어 · 객체 지향 프로그래밍 · 증명보조기) · 메타 프로그래밍 · 유형 이론 · 프로그래밍 언어 의미론 · 파싱 · 컴파일러 이론 | ||||
주요 알고리즘 및 자료구조 | |||||
기초 | 정렬 알고리즘 · 순서도 · 탐색 알고리즘 | ||||
추상적 자료형 및 구현 | 배열^ 벡터^ · 리스트^ 연결 리스트^ · 셋(set)^ 레드-블랙 트리, B-트리^ · 우선순위 큐^ 힙, 피보나치 힙^ | ||||
수학적 최적화 | 조합 최적화 | 외판원 순회 문제 · 담금질 기법 · 유전 알고리즘 · 기계학습 | |||
볼록 최적화 | 내부점 방법 · 경사하강법 | ||||
선형계획법 | 심플렉스법 | ||||
계산 수론 및 암호학 | 밀러-라빈 소수판별법 · Pollard-rho 알고리즘 · 쇼어 알고리즘 · LLL 알고리즘 · 해시( MD5 · 암호화폐 · 사전 공격( 레인보우 테이블) · SHA) · 양자 암호 | ||||
대칭키 암호화 방식 | 블록 암호 알고리즘( AES · ARIA · LEA · Camellia) · 스트림 암호 알고리즘(RC4) | ||||
공개키 암호화 방식 | 공개키 암호 알고리즘( 타원 곡선 암호 · RSA) · 신원 기반 암호 알고리즘(SM9) | ||||
계산기하학 | 볼록 껍질 · 들로네 삼각분할 및 보로노이 도형^Fortune의 line-sweeping 알고리즘^ · 범위 탐색^vp-tree, R-tree^ · k-NN | ||||
그래프 이론 | 탐색^ BFS, DFS, 다익스트라 알고리즘, A* 알고리즘^ · 에드몬드-카프 · 크루스칼 알고리즘 · 위상 정렬 · 네트워크 이론 | ||||
정리 | |||||
정지 문제 대각선 논법 · 암달의 법칙 · P-NP 문제미해결 · 콜라츠 추측미해결 | |||||
틀:이산수학 · 틀:수학기초론 · 틀:컴퓨터공학 | }}}}}}}}} |
1. 개요
Lossless compression, 말 그대로 압축된 상태에서도 디지털 원본과 100% 똑같은 형태를 유지하는 방식이다. 따라서 이는 반복 표현되는 정보를 최대한 줄여 수학적으로 정의되는 정보량에 가깝게 만드는 수학적 기법과 관련이 있다.흔히 반대 개념을 손실 압축으로 꼽으나, 내용적으로는 수학과 공학 정도로 큰 차이가 있다. 대표적인 손실 압축인 MP3나 JPEG과 달리, 무손실 압축 포맷은 원본의 데이터를 조금도 훼손하지 않고 용량을 줄이게 된다.
다양한 자료는 이쪽 링크를 참고하자. 위키백과 무손실 압축 포맷 문서(영어)
2. 원리
대학교에서 컴퓨터과학을 전공하게 되면 정보이론에서 이것에 대한 원리를 다루고 있다. 클로드 섀넌의 부호화 정리에 따르면, 어떤 자료를 디지털화 할 때 해당 자료의 엔트로피만큼의 용량이 있으면 충분하다. 그러나 대부분의 경우, 어떤 자료를 디지털 자료로 변환할 때, 파일 관리의 편리성 등을 높이기 위해 필요 이상의 용량을 소모하는 경우가 많다. 자료 저장 시 이론상 가능한 최소의 용량만 사용할 경우 자료를 저장할 때마다 새로운 저장 방식을 골라야 하므로 파일 관리가 매우 힘들어진다. 이 과도하게 사용되는 용량을 줄이는 것이 바로 무손실 압축이다. 바꿔 말하자면 파일의 용량과 엔트로피의 차이가 적을수록 압축의 효과가 떨어진다는 말이 된다.예를 들어 도서관에서는 책을 주제에 따라 정리하기 때문에 서가에 빈 공간이 생길 수밖에 없으며 따라서 필요 이상의 서가를 사용하게 된다. 무손실 압축이란 여기서 책들을 재배치해 빈 공간이 없도록 하여 서가를 덜 사용하게 하는 것인데 문제는 이러면 배치가 중구난방이 되기 때문에 도서관을 다시 열려면 압축을 해제해 책들을 다시 제자리에 두어야 한다.
방식에 따라 다르지만, 원리를 간단하게 설명하자면 파일 내에서 디지털 패턴이 여러 번 나오는 지점에 그런 게 있다는 것만 표시해 두고, 그 표시된 것과 원본을 그대로 복구하기 위해서 그에 관련된 사전을 저장한 후 압축 파일을 만든다. 예를 들면, 102310231023이라는 12바이트의 데이터를 1023=a로 치환해서 aaa라고 표현할 수 있고, 사전 데이터에 1023=a로 기록해 놓으면 총 3바이트를 절약하게 된다. 일반적으로는 압축으로 줄여 놓는 용량이 이 사전의 용량보다 훨씬 크지만, 파일 용량과 엔트로피의 차이가 거의 없다면 이 사전 용량 때문에 압축 후 파일 용량이 커지는 경우도 나온다.
이로 인해 압축률은 대부분의 경우 손실 압축보다 떨어지며, 이미 다른 압축 포맷을 적용하였다면, 또 다른 압축 포맷을 적용해도 별로 효용성이 없다. 또는 원래부터 압축된 데이터(이미 압축한 파일, mp3, 동영상 등)는 또 압축해 봐야 소용 없다. 일부러 보관의 편의를 위해 다중 압축파일을 만들고 또 통 압축 파일을 만들거나 하는 경우는 있다. 이런 경우에는 압축이라기보다 그냥 무압축 컨테이너 개념으로 사용한다.
3. 종류
3.1. 일반 파일
모든 종류의 파일에 대해 범용적으로 사용하는 압축 방식들은 '무손실' 이라는 말을 생략하고 있다. 그러니까, ZIP, RAR, 7z, ALZ, EGG 등의 모든 파일 압축 포맷은 당연히 이 방식이다. 파일을 손실 압축하면 데이터가 변형되니까 곤란하기 때문.윈도우 사용자가 압축 포맷으로 가장 많이 오해하는 TAR는 사실 압축 포맷이 아니다. 초창기 유닉스에서의 TAR는 압축을 하지 않고 권한 정보(리눅스/유닉스/맥)를 포함하여 여러 개의 파일을 하나로 합쳐주는 기능만을 했고, 나중에 압축을 동시에 해주는 -z 옵션이 추가되었다. 이때 이후 유입된 사용자들은 TAR를 압축 프로그램으로 오해하기도 한다.
3.2. 음악
디지털화된 음향 정보는 연속적인 아날로그 데이터를 이산적으로 샘플링한 것이기 때문에 우리가 직접 듣는 음향 정보와 완전하게 같을 수는 없다. 무손실 압축 포맷은 따라서 샘플링된 데이터에 대해 사람에게 인지되기 어려운 영역의 정보를 자르지 않는 것을 목표로 하기 때문에, 데이터 압축률이 크지 않다. MP3 등의 손실 압축 음원에 비해 무손실 압축 음원은 상업적으로 크게 밀리는 이유다. 음악 시장은 점차 스트리밍으로 이동하고 있고, 스트리밍 기술은 같은 음질이라면 1KB라도 더 적게 쓰는 코덱을 써서 통신망 부하를 줄이는 것이 관건인데, 애초에 음질을 위해 스트리밍에서의 통신망 부하 따위는 고려하지도 않은 무손실 압축 포맷은 스트리밍 시장에서 환영받기 어렵다. 물론 여전히 음질을 중시해서 무손실 파일을 직접 스마트폰이나 DAP에 저장해서 듣는 사용자가 많지만 이제는 그런 사용자층이 소수로 줄어들어 틈새 시장화 되었다는 게 문제.본 용어가 가장 흔하게 쓰이는 쪽은 음악 파일 쪽이다. 무손실이기 때문에 MP3나 Vorbis 같은 손실 압축 포맷보다는 용량은 훨씬 크지만, 원본 음질을 유지하려는 사람들이 이 형태로도 공유하고 있다. 그런데 FLAC이랑 MP3랑은 초고가의 오디오 장비가 있어도 구분하기 불가능에 가까울 정도로 쉽지 않다. 음원 추출 시에는 곡 별로 리핑하지 않고 CD 한 장을 통째로 샘플링을 한 뒤에 .cue(bin-cue 형태의 CD 이미지에 쓰는 바로 그것) 형태의 큐시트를 생성할 수도 있다. 압축 시 일반적으로 WAV 파일과 비교하면 약 1/2~2/3 정도 수준 압축이 가능하다. 음원마다 다소 차이가 있으나, 평균 내면 여태껏 100% → 50% 미만이 되도록 압축할 수 있는 포맷은 없다.
주류 포맷은 Monkey's Audio( 확장자 .ape)와 FLAC(확장자 .flac)가 있는데, 애플에서 개발한 Apple Lossless 역시 대기업의 기상으로 점유율을 높이고 있다. 타 무손실 압축과 성격이 비슷하지만 용량이 적고 디코딩이 수월해 휴대용 기기에 적합하다고 하며 2011년에 완전히 오픈 소스가 되었다.
웹상에서는 몇가지 포맷만 유통되고 있는데, 인지도가 낮아서 그렇지 TAK이나 Optimfrog 등 더 최적화되어있거나 압축률이 좋은 포맷도 존재한다. 그러나 몇퍼센트 효율 올리자고 보존했던 자료를 일일이 변환하는 것은 그것도 시간 낭비이므로 계속 쓰던 포맷을 이용하게 되는 듯하다. 한 앨범당 못해도 10곡이 넘는다. 1000앨범이면 일만번 변환해야 한다! 통파일이라도 골때리긴 마찬가지.
포맷이 균일해야 한다는 이유 말고도, 무손실 음원 포맷은 2000년대부터 춘추전국시대를 펼치고 있지만 다양한 이유로 널리 사용되지 못하였다. 멀티채널 음원을 지원하지 않아서 5채널 음원을 변환했더니 프로그램이 물어보지도 않고 2채널 보통 음원으로 바꿔버리면 곤란할 거라는 이유. 고효율 압축으로 갈 수록 재생속도가 떨어진다는 이유 등등.. 제각기 포맷마다 단점이 있으므로 최대한 적절한 것들을 골라서 쓰다보니 암묵적으로 flac을 비롯한 3~4개 포맷 사용으로 통일된 것이다.
그 중 가장 대표적인 예는 LosslessAudio(LA)라는 압축인데, 다른 포맷이 최고옵션으로 압축해도 55~64%에서 노는 반면에, 혼자서 53%의 경이로운 압축률을 보여 준다. 그러나 이 포맷은 오류 복구 기능이 없고, 덤으로 재생속도도 느리다.. 한가지에만 올인하다가 실패하면 어떻게 되는 지 보여 주는 사례인 셈.
3.3. 정지 영상
정지 영상의 경우에는 반대로 기존 손실 압축에서 폭넓게 활용되던 JPEG의 결점이 상당히 뚜렷한 편[1]이기 때문에 무손실 압축 포맷이 상당히 활성화되었다. 특히 프로세서의 성능이 올라가 압축률과 처리 속도의 균형이 맞아간 시점(대략 2000년대 후반)부터는 무손실 압축 포맷에 대한 선호도가 뚜렷히 관측된다.그림 파일 중에서는 PCX, GIF, PNG 등이 이에 속한다. GIF도 무손실 압축 포맷이지만, GIF 최대 지원 색상 수가 256색이기 때문에 만약 256색을 넘는 원본을 GIF로 변환한다면 양자화(혹은 디더링)를 통해서 색상수를 줄이는 과정에서 손실이 발생하는 것이다. 즉 256색을 담는 gif포맷 자체는 무손실이며, 애초에 256색이 아닌 그림을 gif로 저장하기 위해 색상수를 줄이는 작업은 gif포맷과 별개로 일어나는 별도 손실작업이다.[2]
PNG는 GIF와 달리 트루 컬러를 지원하며, 1단계로 이미지 필터링 작업을 거치고, 2단계로 Deflate 압축을 하기 때문에 훨씬 좋은 압축률을 보여 준다. 특히, 자연 이미지가 아닌 선과 면으로 구성된 이미지 파일은 종종 JPEG 포맷보다도 더 좋은 압축률을 보여 주는 경우도 있다.
또한, CG 업계에서 자주 쓰이는 OpenEXR이 있는데, HDR 무손실 압축 포맷이다. 확장자는 .exr로, RGBA로 채널당 16비트 또는 32비트 부동소수점을 지원하고 있는데, 이쪽은 여러가지 압축 옵션이 있어 유저가 선택할 수 있다. 다만 손실압축은 데이터 손실의 위험이 있어 지원하지 않고 있다. 그리고 아래 문단에는 없지만 렌더링 결과를 저장하는 OpenEXR파일은 RAW로서 활용된다.
간혹 디지털 카메라 사용 시 지원하는 RAW[3] 포맷을 무손실 압축으로 여기는 사람도 있으나, 엄밀하게 따지면 이는 아날로그 데이터의 디지털화( 샘플링 레이트)의 관점에서 봐야할 것으로, 무손실 압축과는 관계가 없다. 다만 용례적으로는 무손실의 개념을 어느 정도 포함[4]한다.
3.4. 동영상
동영상은 정지 영상과 달리 움직임 변화 과정에서 인간이 인지하기 어려운 영역을 제거하지 않으면 100배 이상의 데이터를 처리해야 되기 때문에, 용량 이전에 처리 속도면에서라도 손실 압축을 사용할 수밖에 없는 환경이 많다. 다만 영상의 내용은 손실 압축 처리하되, 키프레임을 저장하고 변화량(델타)을 저장하는 것은 일종의 무손실 압축 과정으로 볼 수 있어 각 기법의 혼합물로 간주할 수는 있다.동영상의 무손실 압축 포맷은 많지 않다. 적어도 특수 직종[5]에 일하지 않는 일반인이 볼 일은 없다. 일반적으로 무손실 동영상의 용량은 무시무시하기 때문에 이를 판매용, 혹은 배포용으로 사용하는 것은 무리가 있다. 계산법은 간단한데, 무압축 기준으로 30프레임 Full HD 1080P 영상이라면 1920×1080×(24÷8) = 장당 6MB 수준의 RGB24 이미지가 한 프레임을 차지하기 때문에 초당 180MB, 분당 11.2GB 가량이다. 이는 음성 데이터를 제외한 것이다. 무손실 영상 코덱의 경우 특성 상 무손실 음성 코덱에 비해 압축률이 좋아 대충 1/4 정도로는 압축이 되는데, 그렇게 따져도 원 데이터량이 워낙 넘사벽이라 분당 2.8GB다. 손실 압축이나 TV 방송에서는 YUV를 많이 사용하지만 무손실 영상 코덱은 RGB24를 기본으로 하는 경우가 더 많다. 다만 편집 과정에서의 화질 손상을 방지하기 위해서 Huffyuv나 Lagarith, MSU 등의 무손실 코덱이 사용되기도 한다. 보통은 avisynth나 vfapi를 위시한 프로그램 간의 프레임서버 기능으로 연결하지만 이것이 불가능할 경우에 유용하게 사용할 수 있다.
4. 무손실 압축 포맷 목록
- 일반 압축 포맷
- 음원 압축 포맷
- FLAC
- Apple Lossless
- APE
- TAK
- MP3HD[11]
- WMA Lossless
- TTA
- WV
- OptimFROG
- 동영상 압축 포맷
- HuffYUV
- Lagarith
- MSU
- MagicYUV
- 사기로 밝혀진 포맷
5. 관련 문서
[1]
압축 과정에서 패턴화나 색상 정보 손실(특히 원색계)이 심각하게 나타난다.
[2]
디더링을 해주는 툴의 실력에 따라 체감적 색손실의 격차가 매우 크다. 예를들어 같은 그림을 각각 그림판과 포토샵에서 gif로 저장하면 디더링 결과의 색체감이 엄청 차이가 난다. 왜냐하면 포토샵은 해당 그림에 사용된 색을 추출하여 팔레트에 넣지만, 그림판은 그냥 기본 팔레트를 그 그림에 저장하기 때문이다.
[3]
날 것을 의미하는 영어 raw에서 온 것이고, RAW 포맷과는 다르다. 흔히 말하는 로 데이터(raw data)는 가공되지 않은 날 것 그대로의 데이터로, 보통 통계 기관 등에서 제공하는 원본 데이터 그 자체를 의미할 때 쓰이는 것이며, 여기에서의 RAW 포맷은 디지털 카메라에서 사용되는 이미지 저장 포맷이다.
[4]
카메라의 센서에 들어온 값을 자르지 않고 그대로 활용하는 것으로, 사진 보정이나 편집 시의 손실을 없애기 위해 쓰는 것이기 때문에. 하드웨어 칩셋이나 소프트웨어의 성능이 높아진 요즘에는
키넥트나
플레이스테이션 4 Eye 등에서 이런 일반 정보 외의 데이터까지 실시간으로 처리해서 활용되고 있다.
[5]
CG로 그려진 화면 원본 그대로를 보존하는 등의 특수 목적
[6]
마이크로소프트에서 개발한 압축 포맷. 구형 윈도우 설치 이미지 및 업데이트 파일 등에 사용되었다. 현재도 윈도우 내부에 압축 프로그램 makecab이 내장되어 있고 EXPAND 명령어나 탐색기 자체적으로 압축 해제가 가능하다.
[7]
RAR이 나오기 전에 잠깐 쓰였던 압축 포맷이었다. 당시 찾아보기 힘들었던 분할 압축 기능이 있어서 몇 년 동안 쓰였으나, 도스쉘 형태의 인터페이스를 지원하여 좀 더 쓰기 쉬운 RAR이 나오면서 밀렸다.
[8]
현재 많이 쓰이지 않는 포맷이었으나 2019년, 보안 취약점이 발견되었다!
# 그것도 2000년부터 있는 오래된 취약점인데 19년 만에 알려진 것. 이 취약점을 이용해서 윈도우 시작 폴더에 압축 해제할 수 있다. 하지만 ACE 라이브러리인 UNACEV2.DLL는 업데이트가 끊긴 지 오래되었는데다 소스코드가 공개되어 있지 않아 대다수의 프로그램이 ACE 지원을 종료하게 되었다. 그래도 이 중
반디집은 처음에 ACE 지원을 종료했다가 자체 개발 코드로 대체하여 ACE 지원을 하게 되었다. 물론 UNACEV2.DLL 파일은 삭제되었다.
[9]
저널링 아카이브(버전관리)가 되는 백업용 아카이브.
오픈소스
[10]
tar, zip, rar, 7z 압축파일을 (압축해제 프로그램이 아니라) 만화책뷰어로 실행시키기 위해 확장자만 변경한 포맷이다.
[11]
손실압축으로 잘 알려진 그 MP3 맞다.