JPEG 파일 교환 형식

JPEG File Interchange Format

JPEG 파일 교환 형식(JFIF)은 이미지 파일 형식 표준이다. JPEG 알고리즘으로 인코딩된 영상 데이터를 포함하는 컨테이너 포맷의 보조 사양을 정의한다. JPEG 컨테이너 형식의 기본 사양은 JPEG 표준의 부속서 B에 정의되어 있으며, JIF(JPEG Interchange Format)로 알려져 있다. JFIF는 불필요한 복잡성, 구성요소 샘플 등록, 분해능, 가로 세로 비율, 색상 공간 등 JIF의 일부 한계를 해결하기 위해 JIF를 기반으로 구축된다. JFIF는 보조 표준이기 때문에 결과 파일 형식을 "JPEG/JFIF"라고 할 수 있다.

JFIF는 새로운 Exchangeable 이미지 파일 형식(Exif)과 상호 호환되지 않는다.

목적

JFIF는 JPEG Part 1 표준(ISO/IEC 10918-1, ITU-T 권장사항 T.81)에 의해 불특정 다수의 세부사항을 정의한다.[1]

구성품샘플등록

JPEG는 다중 구성요소(Y, Cb, Cr 등)의 분해능이 서로 다르도록 허용하지만, 서로 다른 샘플 배열을 어떻게 정렬해야 하는지는 정의하지 않는다. JFIF 표준은 표본을 "간격적으로" 배치하도록 요구한다. 즉, 디코더는 각 구성요소의 배열을 중앙에 샘플링된 동일한 크기의 직사각형 픽셀 배열을 나타내는 것으로 취급할 수 있으며 각 배열이 이미지와 동일한 외부 경계를 갖는다. 이것은 컴퓨터 사용자에게 편리하지만 MPEG-2와 대부분의 비디오 어플리케이션에서 사용되는 정렬은 아니다.

분해능 및 가로 세로 비율

JPEG 표준은 영상의 해상도 또는 가로 세로 비율을 코딩하는 방법을 포함하지 않는다. JFIF는 JPEG에 대한 애플리케이션 세그먼트 확장을 사용하여 해상도 또는 가로 세로 비율 정보를 제공한다. 애플리케이션 세그먼트 #0을 사용하며, 세그먼트 헤더는 ASCII에서 null-종단 문자열 철자 "JFIF"로 구성되고 그 뒤에 0과 같은 바이트가 나타나며, 이것이 파일의 첫 번째 세그먼트여야 함을 명시하여 JFIF 파일을 쉽게 인식할 수 있다. 디지털 카메라에 의해 기록된 Exif 영상은 일반적으로 이 세그먼트를 포함하지 않지만, 일반적으로 다른 모든 측면에서 JFIF 표준을 준수한다.

컬러 스페이스

JFIF 파일의 압축 코딩에 사용되는 JPEG 표준은 영상에 사용할 색상 인코딩을 정의하지 않는다. JFIF는 사용할 색상 모델을 정의한다. Greyscale의 경우 Y 또는 CCIR 601(현재 Rec)에 정의된 RGB 색상 프라이머리에서 파생된 YCbCr. ITU-R BT.601), Y, Cb 및 Cr 구성 요소의 다른 "전체 범위" 스케일링 제외. 검은색은 Y=16, 흰색은 Y=235로 표시되고 이 범위를 벗어난 값은 신호 처리 "헤드룸"과 "풋룸"에 사용할 수 있는 CCIR 601에 정의된 "스튜디오 범위"와 달리, JFIF는 8비트 표현의 256 레벨을 모두 사용하므로 검은색은 Y=0, 피크 화이트는 Y=255로 표시한다. CCIR 601을 통해 JFIF에서 정의한 RGB 컬러 프라이머리는 새로운 애플리케이션에서 일반적인 관행과 다소 다르다(예: sRGB에서 정의한 컬러 프라이머리와 약간 다르다). 더욱이 CCIR 601(2007년 이전)은 RGB 컬러 프라이머리의 정확한 정의를 제공하지 않았으며, 대신에 텔레비전 산업의 기본 관행에 의존하였다.

ICC 프로파일, 컬러 스페이스 메타데이터 또는 sRGB 태그를 내장하고 이 정보를 해석하는 애플리케이션을 사용하여 JFIF 영상의 색상 해석을 개선할 수 있다.

파일 형식 구조

JFIF 파일은 일련의 마커 또는 마커 세그먼트로 구성된다(자세한 내용은 JPEG, 구문구조를 참조하십시오). 마커는 JPEG Standard의 파트 1에 정의되어 있다.[1] 각 마커는 2바이트로 구성된다: a FF 바이트 뒤에 다음 바이트와 같지 않은 바이트 00 또는 FF 마커 유형을 지정하십시오. 일부 마커는 독립적으로 서 있지만 대부분의 마커 세그먼트는 다음 패턴에 따라 데이터 바이트를 포함하는 마커 세그먼트의 시작을 나타낸다.

FF xx s1 s2 [data bytes]

바이트 s1s2는 다음과 같은 "데이터 바이트"의 길이에 길이를 나타내는 2바이트를 더한 빅 엔디안 16비트 정수를 나타내기 위해 함께 취합된다. 즉, s1s2는 다음과 같은 데이터 바이트의 수를 1+ - 로 지정한다

JPEG 표준 제1부에 따르면 애플리케이션은 APP 마커 세그먼트를 사용할 수 있으며 데이터의 애플리케이션별 의미를 정의할 수 있다. JFIF 표준에서는 다음과 같은 APP 마커 세그먼트를 정의한다.

  • JFIF APP0 마커 세그먼트(짧은 경우 JFIF 세그먼트) (필수)
  • JFIF 확장 APP0 마커 세그먼트(짧은 경우 JFXX 세그먼트) (옵션)

그것들은 아래에 설명되어 있다.

JFIF 표준은 JIFF APP0 마커 세그먼트가 SOI 마커 바로 뒤에 오도록 요구한다. JFIF 확장명 APP0 마커 세그먼트를 사용하는 경우 즉시 JFIF APP0 마커 세그먼트를 따라야 한다.[2] 따라서 JFIF 파일은 다음과 같은 구조를 가질 것이다.

JFIF 파일 구조
세그먼트 코드 설명
SOI FF D8 이미지 시작
JFIF-APP0 FF E0 s1 s2 4A 46 49 46 00 ... 아래 내용 참조.
JFXX-APP0 FF E0 s1 s2 4A 46 58 58 00 ... 선택 사항, 아래 참조
…추가 마커 세그먼트
(예: SOF, DHT, COM)
SOS FF DA 스캔 시작
압축된 이미지 데이터
EOI FF D9 이미지 끝

JFIF APP0 마커 세그먼트

필수 JFIF APP0 마커 세그먼트에서는 영상의 파라미터가 지정된다. 선택적으로 압축되지 않은 섬네일을 포함할 수 있다.

JFIF APP0 마커 세그먼트
크기(바이트) 설명
APP0 마커 2 FF E0
길이 2 APP0 마커를 제외한 세그먼트 길이
식별자 5 4A 46 49 46 00 = ASCII의 "JFIF"로, null 바이트로 종료됨
JFIF 버전 2 주 버전의 경우 첫 번째 바이트, 부 버전의 경우 두 번째 바이트(01 02 1.02)용)
밀도 단위 1 다음 픽셀 밀도 필드의 단위
  • 00 : 단위 없음; 폭:높이 픽셀 가로 세로 비율 = Y밀도:X밀도
  • 01 : 인치당 픽셀(2.54cm)
  • 02 : 센티미터당 픽셀 수
X밀도 2 수평 픽셀 밀도. 0이 아니어야 함
이밀도 2 수직 픽셀 밀도. 0이 아니어야 함
엑스썸네일 1 다음 포함 RGB 축소판 그림의 수평 픽셀 수입니다. 0일 수 있음
이썸네일 1 다음 포함 RGB 축소판 그림의 수직 픽셀 수입니다. 0일 수 있음
섬네일 데이터 3 × n R0, G0, B0, ...의 순서로 압축되지 않은 24비트 RGB(컬러 채널당 8비트) 래스터 섬네일 데이터 Rn-1, Gn-1, Bn-1, n = X썸네일 × Y썸네일

JFIF 확장 APP0 마커 세그먼트

JFIF APP0 마커 세그먼트 바로 뒤에 JFIF 확장 APP0 마커 세그먼트가 있을 수 있다. 이 세그먼트는 JFIF 버전 1.02 이상에만 존재할 수 있다. 그것은 3가지 다른 형식의 섬네일 이미지를 포함시킬 수 있다.

JFIF 확장 APP0 마커 세그먼트
크기(바이트) 설명
APP0 마커 2 FF E0
길이 2 APP0 마커를 제외한 세그먼트 길이
식별자 5 4A 46 58 58 00 = ASCII의 "JFXX"로, null 바이트로 종료됨
썸네일 형식 1 다음 포함 섬네일에 사용할 데이터 형식을 지정하십시오.
  • 10 : JPEG 형식
  • 11 : 픽셀당 1바이트 설정 형식
  • 13 : 픽셀당 3바이트 RGB 형식
섬네일 데이터 가변적 축소판 그림 형식에 따라 다름(아래 참조)

썸네일 데이터는 다음과 같이 썸네일 형식에 따라 달라진다.

JPEG 인코딩을 사용하여 저장된 축소판 그림
크기(바이트) 설명
SOI 2 FF D8
가변적 YCbCr 또는 Y만 사용하는 JIF 형식이어야 하며, JFIF 또는 JFX 세그먼트를 포함해서는 안 된다.
EOI 2 FF D9
픽셀당 1바이트를 사용하여 저장된 축소판 그림
크기(바이트) 설명
엑스썸네일 1 다음 포함된 축소판 그림의 수평 픽셀 수입니다. 0이 아니어야 함
이썸네일 1 다음 포함된 축소판 그림의 수직 픽셀 수입니다. 0이 아니어야 함
썸네일 팔레트 768 각각 24비트 RGB 색상 값을 포함하는 256개의 팔레트 항목
섬네일 데이터 n 팔레트 내의 색 인덱스를 포함하는 픽셀당 1바이트,

n = X썸네일 × Y썸네일

픽셀당 3바이트를 사용하여 저장된 미리 보기
크기(바이트) 설명
엑스썸네일 1 다음 포함된 축소판 그림의 수평 픽셀 수입니다. 0이 아니어야 함
이썸네일 1 다음 포함된 축소판 그림의 수직 픽셀 수입니다. 0이 아니어야 함
섬네일 데이터 3 × n R0, G0, B0, ...의 순서로 압축되지 않은 24비트 RGB(컬러 채널당 8비트) 래스터 섬네일 데이터 Rn-1, Gn-1, Bn-1, n = X썸네일 × Y썸네일

호환성.

새로운 Exchangeable 이미지 파일 형식(Exif)은 JFIF와 비슷하지만, 두 표준은 상호 호환성이 없다. 이는 두 표준 모두 특정 애플리케이션 세그먼트(JFIF의 경우 APP0, Exif의 경우 APP1)가 즉시 SOI 마커를 따라야 한다고 명시하고 있기 때문이다. 실제로 많은 프로그램과 디지털 카메라는 두 가지 애플리케이션 세그먼트가 모두 포함된 파일을 생산한다. 이는 대부분의 디코더에 대한 이미지 디코딩에는 영향을 미치지 않지만 잘못 설계된 JFIF 또는 Exif 파서들은 파일을 제대로 인식하지 못할 수 있다.

JFIF는 JFIF가 다른 애플리케이션 세그먼트를 배제하지 않으며, 포토샵 확장이 파일의 첫 번째가 될 필요가 없기 때문에 Adobe Photoshop의 JPEG "정보 리소스 블록" 확장자, IPTC 정보 교환 모델 메타데이터와 호환된다. 그러나 포토샵은 일반적으로 CMYK 버퍼를 JFIF와 부합하지 않는 4개 성분의 "Adobe JPEGs"로 저장한다. 이 파일들은 YCbCr 컬러 공간에 있지 않기 때문에 일반적으로 웹 브라우저와 다른 인터넷 소프트웨어로 해독할 수 없다.

역사

JFIF 문서 개발은 C-큐브 마이크로시스템스의 에릭 해밀턴이 주도했으며, 1991년 말 C-큐브에서 각종 컴퓨터·통신·영상업체 대표 40여명이 참석한 가운데 열린 회의에서 1차본 합의서가 성립됐다. 그 직후, JFIF 1.01이라는 작은 개정판이 발표되었다.[3] 거의 20년 동안 이용할 수 있는 최신 버전은 1992년 9월 1일 발행된 v1.02이다.[2]

1996년에 RFC 2046은 인터넷을 통해 JPEG 이미지를 전송하는 데 사용되는 이미지 형식을 JFIF로 규정하였다. "이미지/jpeg"의 MIME 유형은 JFIF로 인코딩되어야 한다. 그러나 실제로 거의 모든 인터넷 소프트웨어는 그것이 JFIF와 호환되든 아니든 Y 또는 YCbCr 구성요소를 사용하는 모든 기준 JIF 이미지를 디코딩할 수 있다.

As time went by, C-Cube was restructured (and eventually devolved into Harmonic, LSI Logic, Magnum Semiconductor, Avago Technologies, Broadcom, and GigOptix, GigPeak, etc), and lost interest in the document, and the specification had no official publisher until it was picked up by Ecma International and the ITU-T/ISO/IEC Joint Photographic Experts 2009년 전후에 그룹화하여 역사에 길이 남을 것을 피하고 표준 간행물에 정식으로 인용하고 편집 품질을 향상시키는 방법을 제공하십시오. ECMA가 이 역사적 기록의 유실을 피하기 위해 2009년 기술보고서 제98호로 발행하였으며,[3] 2011년 ITU-T에 의해 권고안 T.871로[4], 2013년 ISO/IEC에 의해 ISO/IEC 10918-5로 정식 표준화되었으며,[5] 새로운 간행물에는 편집개선이 포함되었지만 실질적인 기술적 변화는 없었다.

참고 항목

참조

  1. ^ Jump up to: a b "Recommendation ITU-T T.81: Information technology – Digital compression and coding of continuous-tone still images – Requirements and guidelines" (PDF). ITU-T (formerly CCITT). 18 February 1992. Retrieved 15 June 2015.
  2. ^ Jump up to: a b Hamilton, Eric (12 September 1992). "JPEG File Interchange Format, Version 1.02" (pdf, 0.02 MB). Retrieved 15 June 2015.
  3. ^ Jump up to: a b "JPEG File Interchange Format (JFIF)". ecma-international.org. 2009. Retrieved 15 June 2015.
  4. ^ "Recommendation ITU-T T.871: Information technology – Digital compression and coding of continuous-tone still images: JPEG File Interchange Format (JFIF)" (PDF). ITU-T. 14 May 2011. Retrieved 15 June 2015.
  5. ^ "ISO/IEC 10918-5:2013: Information technology – Digital compression and coding of continuous-tone still images: JPEG File Interchange Format (JFIF)". ISO/International Electrotechnical Commission. 1 May 2013. Retrieved 15 June 2015.

추가 읽기

책들

표준