컴퓨터 일반 4강. 멀티미디어 활용
같은 사진을 JPG로 저장하면 10분의 1로 줄어듭니다. 그 9할은 어디로 갔을까요.
풀고 시작
버려도 티가 안 나는 정보가 있습니다
사진 한 장을 BMP로 저장하면 몇 메가바이트인데 JPG로 저장하면 수백 킬로바이트입니다. 그런데 눈으로 보면 거의 같아 보이죠. 사라진 9할은 어디 갔을까요.
버린 겁니다. 그런데 아무거나 버린 게 아니라, 사람 눈이 잘 못 알아채는 것부터 버렸습니다. 사람의 눈은 밝기 변화에는 예민하지만 색의 미세한 변화에는 둔합니다. JPG는 그 성질을 이용해 색 정보를 과감하게 줄입니다. 이렇게 원본을 되살릴 수 없는 압축을 손실 압축(lossy compression) 이라 합니다.
반대로 무손실 압축(lossless compression) 은 되살리면 원본과 한 비트도 다르지 않습니다. 문서나 프로그램은 한 글자만 틀려도 못 쓰게 되니 반드시 무손실이어야 하죠. ZIP이 그렇고, 이미지 쪽에서는 PNG와 GIF가 그렇습니다.
| 형식 | 압축 | 특징 |
|---|---|---|
| BMP | 없음 | 윈도우 기본 형식이고 용량이 가장 큽니다 |
| JPG | 손실 | 사진에 적합하고 투명도를 지원하지 않습니다 |
| GIF | 무손실 | 256색까지만 쓰고 애니메이션과 투명을 지원합니다 |
| PNG | 무손실 | 트루컬러와 부드러운 투명을 지원합니다 |
GIF가 256색뿐이라는 점이 시험에 자주 나옵니다. 그래서 사진에는 어울리지 않고, 색이 적은 아이콘이나 짧은 움직임에 맞습니다.
벡터는 확대해도 깨지지 않습니다
이미지를 만드는 방식에도 두 갈래가 있습니다.
비트맵(bitmap) 은 점을 격자로 늘어놓고 각 점의 색을 기록합니다. 사진처럼 색이 복잡한 것을 표현하기 좋지만, 확대하면 점이 커져서 계단처럼 보입니다. 이 계단을 앨리어싱(aliasing) 이라 하고, 경계를 부드럽게 다듬어 덜 보이게 하는 처리를 안티앨리어싱(anti-aliasing) 이라 합니다.
벡터(vector) 는 점의 좌표와 선의 수식을 기록합니다. 확대하면 수식을 다시 계산해 그리므로 아무리 키워도 매끄럽습니다. 로고와 글꼴이 벡터인 이유죠. 대신 사진처럼 불규칙한 색은 표현하기 어렵습니다.
이미지 편집에서 자주 나오는 다른 용어도 짚어 두겠습니다. 모핑(morphing) 은 한 형상이 다른 형상으로 서서히 변하는 기법이고, 렌더링(rendering) 은 3차원 데이터에 빛과 질감을 입혀 실제 화면으로 만드는 과정이며, 디더링(dithering) 은 쓸 수 있는 색이 모자랄 때 여러 색 점을 섞어 중간색처럼 보이게 하는 기법입니다.
소리와 영상에도 같은 원리가 흐릅니다
소리를 컴퓨터에 담으려면 연속된 파형을 일정 간격으로 찍어 숫자로 바꿔야 합니다. 이것이 샘플링(sampling) 이고, 초당 몇 번 찍는지가 샘플링 레이트입니다. 음악 CD가 44.1kHz인 것은 초당 44,100번 찍는다는 뜻입니다.
| 형식 | 무엇 |
|---|---|
| WAV | 압축하지 않은 소리라 용량이 큽니다 |
| MP3 | 사람이 못 듣는 대역을 버리는 손실 압축입니다 |
| MIDI | 소리 자체가 아니라 악보에 해당하는 연주 정보를 담습니다 |
| FLAC | 무손실 압축이라 원음이 그대로 남습니다 |
MIDI가 소리 파일이 아니라는 점이 시험 단골입니다. 어떤 음을 언제 얼마나 세게 연주하라는 지시만 담기 때문에 용량이 아주 작고, 재생 장치에 따라 소리가 달라집니다. 사람 목소리는 담을 수 없습니다.
영상은 소리와 그림을 함께 담습니다. 이때 담는 그릇이 컨테이너(AVI, MP4)이고, 안의 내용을 압축하고 푸는 것이 코덱(codec) 입니다. 코덱은 압축(compression)과 복원(decompression)을 합친 말입니다. 확장자가 같아도 코덱이 없으면 재생되지 않는 이유가 바로 이 구분 때문입니다.