JPEG File Interchange Format

El JFIF (JPEG File Interchange Format = format d’intercanvi de fitxers JPEG) és un format de fitxer estàndard d’imatge. Defineix especificacions complementàries per al format de contenidor que conté les dades d'imatge codificades amb l'algorisme JPEG. Les especificacions bàsiques per a un format de contenidor JPEG es defineixen a l'annex B de l'estàndard JPEG, conegut com a format d'intercanvi JPEG (JIF). JFIF es basa en JIF per resoldre algunes de les limitacions de JIF, com ara complexitat innecessària, registre de mostres de components, resolució, relació d'aspecte i espai de color. Com que JFIF és un estàndard suplementari, el format de fitxer resultant es pot anomenar "JPEG / JFIF".

Infotaula de format de fitxerJFIF
Una fotografia d'una flor amb molta ràtio de compressió.
TipusFormat d'imatge amb pèrdua
Extensió.jpg, .jpeg, .jpe
.jif, .jfif, .jfi (containers)
MIMEimage/jpeg
Codi de tipusJPEG
Uniform Type Identifierpublic.jpeg
Magic numberff d8
DesenvolupadorJoint Photographic Experts Group
EstàndardCompressed Image File Formats (en) Tradueix Modifica el valor a Wikidata
Més informació
Wiki del format de fitxerJFIF Modifica el valor a Wikidata

JFIF és incompatible mútuament amb el nou format de fitxer d'imatge intercanviable (EXIF).

Propòsit modifica

JFIF defineix una sèrie de detalls que no s’especifiquen segons la norma JPEG Part 1 (ISO / IEC 10918-1, Recomanació UIT-T T.81).) [1]

Registre d'exemple de components modifica

JPEG permet que diversos components (com ara Y, Cb i Cr) tinguin resolucions diferents, però no defineix com s’han d’alinear aquestes matrius de mostra diferents. L'estàndard JFIF requereix que les mostres es situïn " intersticialment ", és a dir, el decodificador pot tractar cada matriu de components com una matriu de píxels rectangulars de mida igual mostrejats als seus centres, amb cada matriu els mateixos límits exteriors que la imatge. Això és convenient per als usuaris d’ordinadors, però no és l’alineació que s’utilitza a MPEG-2 i a la majoria d’aplicacions de vídeo.

Resolució i relació d'aspecte modifica

L'estàndard JPEG no inclou cap mètode per codificar la resolució ni la relació d'aspecte d'una imatge. JFIF proporciona informació de resolució o relació d’aspecte mitjançant una extensió de segment d’aplicació a JPEG. Utilitza el segment d'aplicació # 0, amb una capçalera de segment que consisteix en l'ortografia de cadena d'acabament nul "JFIF" en ASCII seguida d'un byte igual a 0, i especifica que aquest ha de ser el primer segment del fitxer, per la qual cosa és més senzill reconèixer un fitxer JFIF. Les imatges Exif enregistrades per càmeres digitals generalment no inclouen aquest segment, però normalment compleixen amb la resta de la norma JFIF.

Espai de color modifica

L'estàndard JPEG utilitzat per a la codificació de compressió en fitxers JFIF no defineix quina codificació de color s'ha d'utilitzar per a les imatges. JFIF defineix el model de color a utilitzar: ja sigui Y per a escala de grisos o YCbCr derivat de primàries de color RGB tal com es defineixen a CCIR 601 (ara conegut com a Rec. UIT-R BT.601), excepte amb una escala de "rang complet" diferent dels components Y, Cb i Cr. A diferència del "rang d'estudi" definit al CCIR 601, en què el negre està representat per Y = 16 i el blanc per Y = 235 i els valors fora d'aquest rang estan disponibles per al processament del senyal "espai lliure" i "espai lliure", JFIF utilitza els 256 nivells de la representació de 8 bits, de manera que Y = 0 per al negre i Y = 255 per al blanc màxim. Les primàries de color RGB definides a JFIF mitjançant CCIR 601 també difereixen una mica del que s'ha convertit en pràctica habitual en aplicacions més recents (per exemple, difereixen lleugerament de les primàries de color definides a sRGB). A més, CCIR 601 (abans del 2007) no proporcionava una definició precisa de les primàries de color RGB; en canvi, es basava en les pràctiques subjacents de la indústria televisiva.

La interpretació del color d’una imatge JFIF es pot millorar incrustant un perfil ICC, metadades de l'espai de colors o una etiqueta sRGB i mitjançant una aplicació que interpreta aquesta informació.

Estructura del format del fitxer modifica

Un fitxer JFIF consisteix en una seqüència de marcadors o segments de marcadors (per obtenir més informació, consulteu JPEG, sintaxi i estructura). Els marcadors es defineixen a la part 1 de l'estàndard JPEG.[2] Cada marcador consta de dos bytes: un FF seguit d'un byte que no és igual a 00 o FF i especifica el tipus de marcador. Alguns marcadors són independents, però la majoria indiquen l’inici d’un segment de marcador que conté grups de bytes de dades segons el patró següent:

FF xx s1 s2 [bytes de dades]

Els bytes s1 i s2 es prenen junts per representar un enter de 16 bits en format big-endian que especifica la longitud dels següents "bytes de dades" més els 2 bytes utilitzats per representar la longitud. En altres paraules, s1 i s2 especifiquen el nombre dels bytes de dades següents com a   .

Segons la part 1 de l'estàndard JPEG, les aplicacions poden utilitzar segments de marcador APP i definir un significat específic de l'aplicació de les dades. A l'estàndard JFIF, es defineixen els següents segments de marcador APP, que es descriuen a continuació.:

  • Segment de marcador APP0 JFIF (segment abreujat de JFIF) (obligatori)
  • Segment de marcador d'extensió JFIF APP0 (segment JFXX per abreujar) (opcional)

L'estàndard JFIF requereix que el segment del marcador JFIF APP0 segueixi immediatament el marcador SOI. Si s’utilitza un segment de marcador APP0 d’extensió JFIF, ha de seguir immediatament el segment de marcador APP0 JFIF.[3] Per tant, un fitxer JFIF tindrà l'estructura següent:

Estructura de fitxers JFIF
Segment Codi Descripció
SOI FF D8 Inici de la imatge
JFIF-APP0 FF E0 s1 s2 4A 46 49 46 00 ... vegeu més avall
JFXX-APP0 FF E0 s1 s2 4A 46 58 58 00 ... opcional, vegeu més avall
... segments de marcador addicionals

(per exemple, SOF, DHT, COM)

SOS FF DA Inici de l'escaneig
dades d'imatge comprimides
EOI FF D9 Final de la imatge

Segment de marcadors JFIF APP0 modifica

En el segment obligatori del marcador JFIF APP0 s'especifiquen els paràmetres de la imatge. Opcionalment, es pot inserir una miniatura sense comprimir.

Segment de marcadorS JFIF APP0
Camp Mida (bytes) Descripció
Marcador APP0 2 FF E0
Llargada 2 Longitud del segment excloent el marcador APP0
Identificador 5 4A 46 49 46 00 = "JFIF" en ASCII, finalitzat per un byte nul
Versió JFIF 2 Primer byte per a versió major, segon byte per a versió menor (per a 1.02) 01 02
Unitats de densitat 1 Unitats per als següents camps de densitat de píxels
  • 00 : Sense unitats; ample: alçada proporció de píxels = Ydensity: Xdensityy
  • 01 : Píxels per polzada (2,54 cm)
  • 02 : Píxels per centímetre
Xdensity 2 Densitat horitzontal de píxels. No ha de ser zero
Ydensity 2 Densitat de píxels verticals. No ha de ser zero
Xthumbnail 1 Recompte horitzontal de píxels de la següent miniatura RGB incrustada. Pot ser zero
Ythumbnail 1 Recompte de píxels vertical de la següent miniatura RGB incrustada. Pot ser zero
Dades en miniatura 3 × n Dades de miniatures RGB de 24 bits sense comprimir (8 bits per canal de color) en l'ordre R0, G0, B0, ... Rn-1, Gn-1, Bn-1; amb n = Xthumbnail × Ythumbnail

Segment de marcador APP0 d'extensió JFIF modifica

Immediatament després del segment de marcador APP0 JFIF pot haver-hi un segment de marcador APP0 d’extensió JFIF. Aquest segment només pot estar present per a versions JFIF 1.02 i posteriors. Permet incrustar una imatge en miniatura en 3 formats diferents.

Segment de marcador APP0 d'extensió JFIF
Camp Mida (bytes) Descripció
Marcador APP0 2 FF E0
Llargada 2 Longitud del segment excloent el marcador APP0
Identificador 5 4A 46 58 58 00 = "JFXX" en ASCII, finalitzat per un byte nul
Format de miniatura 1 Especifica quin format de dades s'utilitza per a la miniatura incrustada següent:
  • 10 : Format JPEG
  • 11 : Format paletitzat d'1 byte per píxel
  • 13 : Format RGB de 3 byte per píxel
Dades en miniatura variable Depèn del format de la miniatura, vegeu més avall

Les dades de miniatures depenen del format de miniatura de la següent manera:

Miniatura emmagatzemada mitjançant la codificació JPEG
Camp Mida (bytes) Descripció
SOI 2 FF D8
variable Ha de ser en format JIF utilitzant YCbCr o simplement Y, i no ha de contenir segments JFIF o JFXX
EOI 2 FF D9
Miniatura emmagatzemada amb un byte per píxel
Camp Mida (bytes) Descripció
Xthumbnail 1 Recompte horitzontal de píxels de la següent miniatura incrustada. No ha de ser zero
Ythumbnail 1 Recompte de píxels verticals de la miniatura incrustada següent. No ha de ser zero
Paleta de miniatures 768 256 entrades de paleta, cadascuna amb un valor de color RGB de 24 bits
Dades en miniatura n Un byte per píxel que conté l'índex del color dins de la paleta,

amb n = Xthumbnail × Ythumbnail

Miniatura emmagatzemada amb tres byte per píxel
Camp Mida (bytes) Descripció
Xthumbnail 1 Recompte horitzontal de píxels de la següent miniatura incrustada. No ha de ser zero
Ythumbnail 1 Recompte de píxels verticals de la miniatura incrustada següent. No ha de ser zero
Dades en miniatura 3 × n Dades de miniatures RGB de 24 bits sense comprimir (8 bits per canal de color) en l'ordre R0, G0, B0, ... Rn-1, Gn-1, Bn-1; amb n = Xthumbnail × Ythumbnail

Compatibilitat modifica

El nou format de fitxer d'imatge intercanviable (Exif) és comparable a JFIF, però els dos estàndards són mútuament incompatibles. Això es deu al fet que tots dos estàndards especifiquen que el seu segment d'aplicació particular (APP0 per a JFIF, APP1 per Exif) ha de seguir immediatament el marcador SOI. A la pràctica, molts programes i càmeres digitals produeixen arxius amb els dos segments d'aplicació inclosos. Això no afectarà la descodificació d'imatges per a la majoria dels descodificadors, però els analitzadors JFIF o Exif mal dissenyats poden no reconèixer el fitxer correctament.

JFIF és compatible amb les extensions JPEG "Bloc de Recursos d'Informació" d'Adobe Photoshopi les metadades del model d'intercanvi d'informació IPTC, ja que JFIF no exclou altres segments d'aplicació, i les extensions de Photoshop no estan obligades a ser les primeres de l'arxiu. No obstant això, Photoshop generalment estalvia memòries intermèdies CMYK com a "JPEGs d'Adobe" de quatre components que no estan conformes amb JFIF. Atès que aquests fitxers no es troben en un espai de color YCbCr, normalment no són descodibles pels navegadors web i altres programes d'Internet.

Història modifica

El desenvolupament del document JFIF va ser dirigit per Eric Hamilton, de C-Cube Microsystems, i l’acord sobre la primera versió es va establir a finals de 1991 en una reunió celebrada a C-Cube que va comptar amb aproximadament 40 representants de diverses empreses d’informàtica, telecomunicacions i imatge. Poc després es va publicar una revisió menor: JFIF 1.01.[4] Durant gairebé 20 anys, l'última versió disponible va ser v1.02, publicada l'1 de setembre de 1992.[5]

El 1996, RFC 2046 va especificar que el format d'imatge utilitzat per transmetre imatges JPEG a través d'Internet hauria de ser JFIF. El tipus MIME d '"imatge / jpeg" s'ha de codificar com a JFIF. A la pràctica, però, pràcticament tot el programari d'Internet pot descodificar qualsevol imatge JIF de línia de base que utilitzi components Y o YCbCr, tant si compleix JFIF com si no.

Amb el pas del temps, C-Cube es va reestructurar (i finalment es va convertir en Harmonic, LSI Logic, Magnum Semiconductor, Avago Technologies, Broadcom i GigOptix, GigPeak, etc.) i va perdre l’interès pel document i l'especificació no tenia cap editor oficial fins que va ser recollit per Ecma International i el grup conjunt d’experts fotogràfics ITU-T / ISO / IEC cap al 2009 per evitar que es perdés a la història i proporcionar una manera de citar-lo formalment en publicacions estàndard i millorar-ne la qualitat editorial. Va ser publicat per l'ECMA el 2009 com a informe tècnic número 98 per evitar la pèrdua del registre històric,[6] i va ser formalitzat formalment per l'UIT-T el 2011 com a Recomanació T.871 [7] i per la ISO / IEC el 2013. com ISO / IEC 10918-5,[8] Les publicacions més recents inclouen millores editorials, però no hi ha canvis tècnics substancials.

Vegeu també modifica

Referències modifica

  1. «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-02-1992. [Consulta: 15 juny 2015].
  2. «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-02-1992. [Consulta: 15 juny 2015].
  3. Hamilton, Eric. «JPEG File Interchange Format, Version 1.02» (pdf, 0.02 MB), 12-09-1992. [Consulta: 15 juny 2015].
  4. «JPEG File Interchange Format (JFIF)». ecma-international.org. [Consulta: 15 juny 2015].
  5. Hamilton, Eric. «JPEG File Interchange Format, Version 1.02» (pdf, 0.02 MB), 12-09-1992. [Consulta: 15 juny 2015].
  6. «JPEG File Interchange Format (JFIF)». ecma-international.org. [Consulta: 15 juny 2015].
  7. «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-05-2011. [Consulta: 15 juny 2015].
  8. «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, 01-05-2013. [Consulta: 15 juny 2015].

Bibliografia modifica

Llibres modifica

Estàndards modifica

Enllaços externs modifica