JPEG 압축은 어떻게 작동할까

효율적인 이미지 압축 과정을 간단히 정리한 설명

휴대폰이나 카메라로 사진을 찍으면 몇 초 안에 바로 작고 빠르면서도 선명한 JPEG 형식으로 저장되는지 궁금했던 적이 있나요? 이 과정의 이면에는 대용량 이미지 파일을 원래 크기의 일부로 줄이면서도 높은 품질을 유지하게 해 주는 정교한 처리 과정이 있습니다. 그렇다면 이게 실제로 어떻게 동작하는 걸까요? 오늘은 JPEG 압축의 원리를 살펴보며, 이 마법 같은 이미지 압축 과정을 이해할 수 있도록 각 단계를 쉽게 설명해 드립니다.

JPEG란?

JPEG (Joint Photographic Experts Group의 약자) 는 가장 일반적인 이미지 형식 중 하나로, 디지털 사진을 저장할 때 많이 사용하는 형식입니다. JPEG의 핵심은 이미지 파일을 압축해 눈에 띄는 품질 손실 없이 훨씬 더 작게 만드는 능력에 있습니다.

예를 들어, 고품질 비압축 이미지는 46MB에 이를 수 있습니다. JPEG로 압축하면 같은 이미지가 4.1MB 정도로 줄어듭니다! 그런데도 어떻게 이미지를 선명하게 유지할 수 있을까요?

그 비밀은 compression process, 우리 눈의 특성을 활용해 불필요한 데이터를 제거하는 압축 과정에 있습니다.

JPEG는 무엇을 하나요?

간단히 말해, JPEG는 이미지를 분석해 우리 눈에 잘 보이지 않는 요소를 제거합니다. JPEG로 이미지를 압축할 때는 얼마나 강하게 압축할지 조절할 수 있습니다. "품질" 설정을 조정해 얼마나 용량을 줄일지 결정할 수 있습니다. 품질을 100%에서 0%로 낮출수록 파일 크기도 함께 줄어듭니다.

압축을 더 많이 할수록 이미지 해상도는 그대로지만, "아티팩트"라고 불리는 결함이 보이기 시작할 수 있습니다. 이런 결함은 작은 네모 형태로 나타나며, 보통은 확대해서 보지 않으면 잘 보이지 않습니다. JPEG의 목표는 이미지가 사람 눈에 나쁘게 보이지 않는 범위 안에서 파일을 최대한 작게 만드는 것입니다.

JPEG 압축 단계

JPEG 압축 은 하나의 마법 같은 기술이 아니라, 이미지 크기를 줄이기 위해 설계된 여러 단계의 스마트한 과정입니다. JPEG를 효율적으로 만드는 다섯 가지 핵심 단계를 살펴보겠습니다.

1단계: 색 공간 변환

이미지는 픽셀로 구성되며, 각 픽셀은 색을 만들기 위해 빨강, 초록, 파랑(RGB) 성분을 가지고 있습니다. JPEG는 먼저 이러한 RGB 값 을 다른 색 공간으로 변환합니다:

  • 휘도(밝기): 픽셀의 밝기 정도를 나타내며, 전체 이미지의 명암과 대비를 결정하는 중요한 요소입니다.
  • 색차(색상): 색조와 채도를 포함한 색상 정보를 나타냅니다.

이 변환은 사람의 눈이 색상(색차)보다 밝기(휘도)에 더 민감하다는 사실을 활용합니다. 밝기와 색을 분리함으로써 JPEG는 이후 단계에서 필요한 부분만 선택적으로 데이터를 줄일 수 있고, 중요한 시각적 디테일은 유지할 수 있습니다.

이 단계에서는 실제로 데이터가 손실되지는 않지만, 효율적인 압축을 위한 기반을 마련합니다.

2단계: 색차 다운샘플링/크로마 서브샘플링

크로마 서브샘플링 는 은 색 공간 변환 이후에 적용되는 기술입니다. 앞에서 말했듯이, 사람의 눈은 밝기(휘도)에 비해 색(색차)을 잘 구분하지 못합니다.

JPEG는 이 점을 활용해 색상 데이터를 줄입니다. 파랑과 빨강 색차 이미지를 네 개 픽셀 단위로 평균 내서 더 작은 블록으로 축소합니다. 이렇게 하면 색상 데이터는 훨씬 줄어들지만, 휘도(밝기)는 그대로 유지됩니다. 이 시점에서 이미지는 절반 정도 압축된 상태가 됩니다!

3단계: 이산 코사인 변환(DCT)

이산 코사인 변환(DCT) 은 이미지 데이터를 변환하기 위해 사용되는 수학적 기법으로, 이미지가 픽셀 격자로 표현되는 공간 영역에서 주파수 영역으로 변환합니다. 이 과정은 이미지에서 어떤 부분이 중요한 시각 정보를 담고 있고, 어떤 부분을 삭제되었습니다.

DCT는 이미지를 8x8 블록으로 나누고 각 블록을 여러 개의 주파수 값 집합으로 변환합니다. 더 높은 주파수(픽셀 값이 빠르게 변하는 경계선이나 노이즈 등)는 사람의 눈에는 덜 두드러져 보이므로 단순화하거나 제거할 수 있습니다.

4단계: 양자화

DCT가 적용되면, 그 결과로 나온 주파수 데이터는 양자화과정을 거칩니다. 이 단계에서는 주파수 값 범위를 양자화 테이블이라고 불리는 상수 값들로 나누어 줄입니다. 이 과정은 주파수 값을 반올림하여 더 단순하게 만드는 것입니다.

고주파수 값은 더 강하게 양자화되며, 전체 이미지 품질에 덜 중요하기 때문에 정밀도가 더 많이 손실됩니다. 이 네 번째 단계는 이미지를 표현하는 데 필요한 데이터 양을 줄여 파일 크기를 작게 만듭니다. 하지만 양자화를 과하게 적용하면, 특히 높은 압축률에서 블록 노이즈나 흐려짐 같은 눈에 띄는 아티팩트가 생길 수 있습니다.

5단계: 런렝스 및 허프만 인코딩

양자화 이후에도 데이터는 아직 효율적으로 저장하기에는 충분히 압축되지 않았습니다. 여기서 런렝스 인코딩(RLE)허프만 인코딩 이 사용됩니다.

먼저 RLE는 0과 같은 반복되는 데이터가 길게 이어질 때, 각각의 값을 모두 저장하는 대신 반복 횟수만 저장하여 데이터를 단순화합니다. 그다음 자주 등장하는 값을 더 짧은 비트 코드로 바꾸는 허프만 인코딩을 적용해 파일을 한 번 더 줄입니다.

These two 인코딩 방식이 서로 결합되어 파일 크기를 크게 줄이면서도 이미지 품질을 크게 떨어뜨리지 않습니다!

추가 참고 사항

JPEG는 매우 효율적인 형식이지만, 고려해야 할 몇 가지 중요한 점이 있습니다.

  • 압축 수준: JPEG는 사용자가 압축 수준을 선택할 수 있지만, 압축률이 높을수록 파일 크기는 줄어드는 대신 흐린 가장자리나 픽셀 깨짐 같은 눈에 띄는 아티팩트가 발생할 수 있습니다. 이는 양자화 테이블 값이 너무 커져 0이 더 많이 생성되고, 그 결과 파일은 더 작아지지만 이미지 품질이 저하되기 때문입니다.
  • 고주파수 데이터 손실: 양자화는 고주파수 데이터(날카로운 경계 등의 디테일)의 정밀도를 줄입니다. 그래서 JPEG는 부드러운 텍스처에는 적합하지만, 날카로운 선이나 벡터 그래픽에는 약할 수 있습니다.
  • 벡터 그래픽에는 적합하지 않음: JPEG는 벡터 그래픽을 압축하는 데 최선의 선택이 아니며, 도형이나 선의 경계 부분에 눈에 띄는 아티팩트를 유발할 수 있습니다.

이러한 한계에도 불구하고 JPEG는 오래되고, 널리 이해되며, 로열티가 필요 없다는 점 때문에 여전히 가장 많이 사용되는 이미지 형식입니다. 하지만 WebP 또는 HEIF 와 같은 최신 형식은 품질을 유지하면서도 더 높은 압축률을 제공하여, 특정 상황에서는 매력적인 대안이 됩니다.

마무리

JPEG 압축 알고리즘은 이미지 데이터 관리 측면에서 뛰어난 기술입니다. 이미지를 작은 블록으로 나누고, 여러 수학적 변환을 적용하며, 런렝스 및 허프만 인코딩 같은 효율적인 인코딩 기법을 사용함으로써, 고품질 이미지를 훨씬 작은 파일 크기로 저장할 수 있게 해 줍니다.

JPEG에는 특히 높은 압축률이나 벡터 그래픽에서 몇 가지 한계가 있지만, 사진 이미지에서 좋은 결과를 제공하고 널리 사용된다는 점 덕분에 오래 지속되는 표준으로 자리 잡고 있습니다.

AI 아트 생성기 AI Creator Studio로 창의력을 발휘하고 텍스트를 예술 작품으로 바꾸세요
지금 사용하기