JPEG
위키백과 ― 우리 모두의 백과사전.
확장자: | .jpeg, .jpg, .jfif |
MIME 종류: | image/jpeg |
개발: | Joint Photographic Experts Group |
파일 포맷 종류: | 래스터 이미지 |
JPEG(Joint Photographic Experts Group, 제이펙)은 정지 화상을 위해서 만들어진 손실 압축 방법 표준이다. 이 표준은 ISO와 ITU-T에서 제정하였다. JPEG를 사용하는 파일 형식들도 보통 JPEG 이미지라 불리며, .jpg, .jpeg, .jpe 등의 확장자를 사용한다.
JPEG 표준은 이미지가 어떻게 바이트 스트림으로 바뀌는 지만을 규정한다. 독립 JPEG 그룹(Independent JPEG Group; IJG)에서 만든 JPEG의 확장인 JFIF(JPEG File Interchange Format)는 JPEG 스트림을 저장과 전송에 적합한 형태로 담는 이미지 파일 형식이다. 디지털 카메라의 사진 저장 방식으로는 다른 확장인 EXIF JPEG 형식이 더 자주 사용된다. 일반적으로 JPEG 파일이라고 할 때는 JFIF 형식이거나 EXIF JPEG 형식을 가리키지만, JNG와 같은 JPEG 기반의 다른 파일 형식도 존재한다.
JPEG/JFIF는 웹 상에서 사진 등의 화상을 보관하고 전송하는 데 가장 널리 사용되는 파일 형식이다. 하지만 이 압축 방법은 문자, 선, 세밀한 격자 등 고주파 성분이 많은 이미지의 변환에서는 GIF나 PNG에 비해 불리하며, 나쁜 품질을 보이는 경우가 많다. JPEG 표준에도 비손실 압축 방법이 정의되어 있지만 특허 문제와 압축률 등의 이유로 잘 사용되지는 않으며, PNG 등의 비손실 압축을 지원하는 포맷을 많이 사용한다.
목차 |
[편집] 압축과정 실례
JPEG 표준 안에는 많은 선택사항들이 있지만, 그 중 대부분은 거의 사용되지 않는다. 아래 설명은 픽셀당 24비트 (빨강, 초록, 파랑 각 8비트씩)의 색상정보를 가진 데이터를 변환하는 일반적인 방법에 대한 간단한 설명이다. 아래 설명한 방식에선 손실 압축 방식을 사용한다.
[편집] 색공간 변환
우선 각 픽셀의 RGB 데이터를 YCbCr이라는 다른 색공간 데이터로 변환한다. 이 색공간은 NTSC나 PAL 방식의 컬러 텔레비전 전송에 쓰에는 색공간과 유사하다. Y 성분은 픽셀의 루마(luma, 비디오 분야에서 휘도를 나타내는 값의 일종으로, 비디오 분야에서 정의된 luminance와 구분된다) 정보를 가지고 있으며, Cb와 Cr성분은 색차 정보(chroma components)를 가지고 있다. 사람의 눈이 색상 성분보다 휘도 성분에 더 민감하기 때문에 색상 정보를 더 많이 압축하기 위해서 YCbCr 색공간으로 변환한다. 색공간 변환 시 제한된 정밀도 (채널당 8 비트) 때문에 정보가 완전히 보전되지 않는다. 따라서 뒤에서 양자화를 전혀하지 않더라도 원본과 완전히 일치하지 않는다. 즉, JPEG 저장시 화질을 100%으로 하더라도 원본과 차이가 있게 된다.
[편집] 크로마 서브샘플링
때때로 Cb와 Cr 성분의 수를 줄인다. (이를 "다운샘플링", 혹은 "크로마 서브샘플링"이라 한다.) 이어지는 설명은 각 성분에 대한 것으로, 성분별로 같은 절차가 진행된다.
[편집] 이산 코사인 변환
전체 화상은 8×8 픽셀의 크기를 갖는 섹션으로 나뉘어지고 각 8×8 섹션의 각 성분 데이터는 이차원 이산 코사인 변환(DCT)을 이용하여 주파수 공간으로 변환된다.
[편집] 양자화
다음 단계: 양자화(퀀타이제이션). 사람의 눈은 명도에 대해 비교적 넓은 영역에서 작은 차이를 구분할 수 있다. 그러나 고주파의 명도 변화에서는 그 구별능력이 떨어진다. 이 사실에 근거하여 고주파 성분의 정보의 많은 부분은 버릴 수 있다. 이런 작업은 주파수 영역의 각 성분에 대해 특정 상수로 나누고 정수 몫만을 취함으로써 수행된다. 이 작업이 전체 압축 과정에서 가장 손실이 큰 부분이다. 이 방법으로 고주파 성분들은 거의 0이나 0이 근접한 양수, 혹은 음수가 된다. (여기서 말하는 주파수는 전자기파의 주파수를 말하는 것이 아니라, 데이터를 격자상에 늘어 놓았을 때의 공간적인 변화를 말하는 것이 주의.)
[편집] 엔트로피 부호화
마지막 단계: 엔트로피 부호화 (이 과정은 비손실 압축 방식이다.) 8×8 격자의 성분들을 저주파부터 지그재그로 일렬로 세운 뒤. 반복된 0에만 RLE를 적용하고, 그 결과들에 대해 허프만 부호화를 한다. 표준은 허프만 부호화 대신에 더 압축률이 좋은 산술 부호화도 가능하다고 기술하지만 산술 코딩은 인코딩, 디코딩시의 지연, 경제성 등의 이유로 잘 쓰이지 않는다.
압축을 푸는 디코딩 과정은 위 과정을 거꾸로 하면 가능하다.
[편집] 규격서
규격은 합동 그룹에서 만들어졌기 때문에, ISO와 ITU-T 양측에서 나오고 있다.
- ITU-T권고 T.81
- JIS X 4301
- ISO/IEC 10918-1:1994