JPEG ( / ˈdʒeɪpɛɡ / JAY -peg , abreviatura de Joint Photographic Experts Group ) [2] es un método de compresión con pérdida de uso común para imágenes digitales , en particular para aquellas imágenes producidas por fotografía digital . El grado de compresión se puede ajustar, lo que permite un equilibrio seleccionable entre el tamaño de almacenamiento y la calidad de la imagen . JPEG normalmente logra una compresión de 10:1 con poca pérdida perceptible en la calidad de la imagen. [3] Desde su introducción en 1992, JPEG ha sido el estándar de compresión de imágenes más utilizado en el mundo, [4] [5] y el formato de imagen digital más utilizado , con varios miles de millones de imágenes JPEG producidas todos los días a partir de 2015. [6]
El Joint Photographic Experts Group creó el estándar en 1992. [7] JPEG fue en gran medida responsable de la proliferación de imágenes digitales y fotografías digitales en Internet y más tarde en las redes sociales . [8] [ referencia circular ] La compresión JPEG se utiliza en varios formatos de archivos de imagen . JPEG/ Exif es el formato de imagen más común utilizado por las cámaras digitales y otros dispositivos de captura de imágenes fotográficas; junto con JPEG/ JFIF , es el formato más común para almacenar y transmitir imágenes fotográficas en la World Wide Web . [9] Estas variaciones de formato a menudo no se distinguen y simplemente se denominan JPEG.
El tipo de medio MIME para JPEG es "image/jpeg", excepto en versiones anteriores de Internet Explorer , que proporcionan un tipo MIME de "image/pjpeg" al cargar imágenes JPEG. [10] Los archivos JPEG suelen tener una extensión de nombre de archivo de "jpg" o "jpeg". JPEG/JFIF admite un tamaño de imagen máximo de 65.535 × 65.535 píxeles, [11] por lo tanto hasta 4 gigapíxeles para una relación de aspecto de 1:1. En 2000, el grupo JPEG introdujo un formato que pretendía ser un sucesor, JPEG 2000 , pero no pudo reemplazar al JPEG original como el estándar de imagen dominante. [12]
Historia
Fondo
La especificación JPEG original publicada en 1992 implementa procesos de varios artículos de investigación y patentes anteriores citados por el CCITT (ahora ITU-T ) y el Joint Photographic Experts Group. [1]
La especificación JPEG cita patentes de varias empresas. Las siguientes patentes sirvieron de base para su algoritmo de codificación aritmética . [1]
- IBM
- Patente estadounidense 4.652.856 – 4 de febrero de 1986 – Kottappuram MA Mohiuddin y Jorma J. Rissanen – Código aritmético multialfabético sin multiplicación
- Patente estadounidense 4.905.297 – 27 de febrero de 1990 – G. Langdon, JL Mitchell , WB Pennebaker y Jorma J. Rissanen – Sistema codificador y decodificador de codificación aritmética
- Patente estadounidense 4.935.882 – 19 de junio de 1990 – WB Pennebaker y JL Mitchell – Adaptación de probabilidad para codificadores aritméticos
- Mitsubishi Eléctrico
- JP H02202267 (1021672) – 21 de enero de 1989 – Toshihiro Kimura, Shigenori Kino, Fumitaka Ono, Masayuki Yoshida – Sistema de codificación
- JP H03247123 (2-46275) – 26 de febrero de 1990 – Tomohiro Kimura, Shigenori Kino, Fumitaka Ono y Masayuki Yoshida – Aparato de codificación y método de codificación
La especificación JPEG también cita otras tres patentes de IBM. Otras empresas citadas como titulares de patentes incluyen AT&T (dos patentes) y Canon Inc. [1] No aparece en la lista la patente estadounidense 4.698.672 , presentada por Wen-Hsiung Chen y Daniel J. Klenke de Compression Labs en octubre de 1986. La patente describe un algoritmo de compresión de imágenes basado en DCT y más tarde sería motivo de controversia en 2002 (véase la controversia sobre patentes a continuación). [13] Sin embargo, la especificación JPEG sí citó dos artículos de investigación anteriores de Wen-Hsiung Chen, publicados en 1977 y 1984. [1]
Estándar JPEG
"JPEG" significa Joint Photographic Experts Group , el nombre del comité que creó el estándar JPEG y otros estándares de codificación de imágenes fijas. "Joint" significa ISO TC97 WG8 y CCITT SGVIII. Fundado en 1986, el grupo desarrolló el estándar JPEG a fines de la década de 1980. El grupo publicó el estándar JPEG en 1992. [4]
En 1987, ISO TC 97 se convirtió en ISO/IEC JTC 1 y, en 1992, CCITT se convirtió en ITU-T. Actualmente, en el lado del JTC1, JPEG es uno de los dos subgrupos del Comité Técnico Mixto ISO / IEC 1 , Subcomité 29, Grupo de Trabajo 1 ( ISO/IEC JTC 1/SC 29 /WG 1), titulado Codificación de imágenes fijas . [14] [15] [16] En el lado de ITU-T, ITU-T SG16 es el organismo respectivo. El Grupo JPEG original se organizó en 1986, [17] emitiendo el primer estándar JPEG en 1992, que fue aprobado en septiembre de 1992 como Recomendación ITU-T T.81 [18] y, en 1994, como ISO / IEC 10918-1 .
El estándar JPEG especifica el códec , que define cómo se comprime una imagen en un flujo de bytes y se descomprime nuevamente en una imagen, pero no el formato de archivo utilizado para contener ese flujo. [19] Los estándares Exif y JFIF definen los formatos de archivo comúnmente utilizados para el intercambio de imágenes comprimidas en JPEG.
Las normas JPEG se denominan formalmente Tecnología de la información: compresión digital y codificación de imágenes fijas de tono continuo . La norma ISO/IEC 10918 consta de las siguientes partes:
Ecma International TR /98 especifica el formato de intercambio de archivos JPEG (JFIF); la primera edición se publicó en junio de 2009. [23]
Controversia sobre patentes
En 2002, Forgent Networks afirmó que poseía y haría cumplir los derechos de patente sobre la tecnología JPEG, que surgían de una patente que se había presentado el 27 de octubre de 1986 y concedida el 6 de octubre de 1987: la patente estadounidense 4.698.672 de Wen-Hsiung Chen y Daniel J. Klenke de Compression Labs . [13] [24] Si bien Forgent no era propietario de Compression Labs en ese momento, Chen vendió más tarde Compression Labs a Forgent, antes de que Chen pasara a trabajar para Cisco . Esto llevó a Forgent a adquirir la propiedad de la patente. [13] El anuncio de Forgent de 2002 creó un furor que recuerda a los intentos de Unisys de hacer valer sus derechos sobre el estándar de compresión de imágenes GIF.
El comité JPEG investigó las reivindicaciones de patente en 2002 y opinó que habían sido invalidadas por el estado de la técnica , [25] una opinión compartida por varios expertos. [13] [26]
Entre 2002 y 2004, Forgent logró obtener cerca de 105 millones de dólares estadounidenses al conceder licencias de su patente a unas 30 empresas. En abril de 2004, Forgent demandó a otras 31 empresas para exigir el pago de más licencias. En julio del mismo año, un consorcio de 21 grandes empresas informáticas presentó una contrademanda con el objetivo de invalidar la patente. Además, Microsoft presentó una demanda por separado contra Forgent en abril de 2005. [27] En febrero de 2006, la Oficina de Patentes y Marcas de los Estados Unidos acordó volver a examinar la patente JPEG de Forgent a petición de la Public Patent Foundation. [28] El 26 de mayo de 2006, la USPTO declaró inválida la patente basándose en la técnica anterior. La USPTO también determinó que Forgent conocía la técnica anterior, pero evitó decírselo intencionalmente a la Oficina de Patentes. Esto hace que sea muy poco probable que prospere cualquier apelación para restablecer la patente. [29]
Forgent también posee una patente similar otorgada por la Oficina Europea de Patentes en 1994, aunque no está claro hasta qué punto es ejecutable. [30]
El 27 de octubre de 2006, el plazo de 20 años de la patente estadounidense parece haber expirado y, en noviembre de 2006, Forgent acordó abandonar la aplicación de las reclamaciones de patentes contra el uso del estándar JPEG. [31]
Uno de los objetivos explícitos del comité JPEG es que sus estándares (en particular sus métodos de referencia) se puedan implementar sin pago de licencias, y ha obtenido los derechos de licencia adecuados para su estándar JPEG 2000 de más de 20 grandes organizaciones.
A principios de agosto de 2007, otra empresa, Global Patent Holdings, LLC, afirmó que su patente ( patente estadounidense 5.253.341 ) concedida en 1993 se infringe al descargar imágenes JPEG en un sitio web o por correo electrónico. Si no se invalida, esta patente podría aplicarse a cualquier sitio web que muestre imágenes JPEG. La patente estuvo bajo reexaminación por la Oficina de Patentes y Marcas de los Estados Unidos desde 2000 hasta 2007; en julio de 2007, la Oficina de Patentes revocó todas las reivindicaciones originales de la patente, pero determinó que una reivindicación adicional propuesta por Global Patent Holdings (reivindicación 17) era válida. [32] Global Patent Holdings presentó entonces una serie de demandas basadas en la reivindicación 17 de su patente.
En sus dos primeras demandas tras la reexaminación, ambas presentadas en Chicago, Illinois, Global Patent Holdings demandó a los Green Bay Packers , CDW , Motorola , Apple , Orbitz , Officemax , Caterpillar , Kraft y Peapod como acusados. Una tercera demanda fue presentada el 5 de diciembre de 2007, en el sur de Florida contra ADT Security Services , AutoNation , Florida Crystals Corp., HearUSA, MovieTickets.com , Ocwen Financial Corp. y Tire Kingdom , y una cuarta demanda el 8 de enero de 2008, en el sur de Florida contra Boca Raton Resort & Club . Una quinta demanda fue presentada contra Global Patent Holdings en Nevada. Esa demanda fue presentada por Zappos.com , Inc., que supuestamente fue amenazada por Global Patent Holdings, y solicitó una declaración judicial de que la patente '341 es inválida y no infringida.
Global Patent Holdings también había utilizado la patente '341 para demandar o amenazar a críticos abiertos de patentes de software de amplio alcance, incluyendo a Gregory Aharonian [33] y al operador anónimo de un blog de un sitio web conocido como " Patent Troll Tracker ". [34] El 21 de diciembre de 2007, el abogado de patentes Vernon Francissen de Chicago pidió a la Oficina de Patentes y Marcas de los Estados Unidos que reexaminara la única reivindicación restante de la patente '341 sobre la base de nueva técnica anterior. [35]
El 5 de marzo de 2008, la Oficina de Patentes y Marcas de los Estados Unidos acordó reexaminar la patente '341, y concluyó que la nueva técnica anterior planteaba nuevas cuestiones sustanciales con respecto a la validez de la patente. [36] A la luz de la reexaminación, los infractores acusados en cuatro de las cinco demandas pendientes presentaron mociones para suspender (parar) sus casos hasta que se completara la revisión de la patente '341 por parte de la Oficina de Patentes y Marcas de los Estados Unidos. El 23 de abril de 2008, un juez que presidía las dos demandas en Chicago, Illinois, concedió las mociones en esos casos. [37] El 22 de julio de 2008, la Oficina de Patentes emitió la primera "Acción de Oficina" de la segunda reexaminación, y determinó que la reivindicación era inválida con base en diecinueve motivos separados. [38] El 24 de noviembre de 2009, se emitió un Certificado de Reexaminación que cancelaba todas las reivindicaciones.
A partir de 2011 y hasta principios de 2013, una entidad conocida como Princeton Digital Image Corporation, [39] con sede en el este de Texas, comenzó a demandar a un gran número de empresas por supuesta infracción de la patente estadounidense 4.813.056 . Princeton afirma que el estándar de compresión de imágenes JPEG infringe la patente '056 y ha demandado a un gran número de sitios web, minoristas, fabricantes de cámaras y dispositivos y revendedores. La patente originalmente era propiedad de General Electric y estaba asignada a ella. La patente expiró en diciembre de 2007, pero Princeton ha demandado a un gran número de empresas por "infracción pasada" de esta patente. (Según las leyes de patentes de EE. UU., el propietario de una patente puede demandar por "infracción pasada" hasta seis años antes de la presentación de una demanda, por lo que Princeton teóricamente podría haber seguido demandando a las empresas hasta diciembre de 2013). A marzo de 2013, Princeton tenía demandas pendientes en Nueva York y Delaware contra más de 55 empresas. Se desconoce la participación de General Electric en la demanda, aunque los registros judiciales indican que asignó la patente a Princeton en 2009 y conserva ciertos derechos sobre la patente. [40]
Uso típico
El algoritmo de compresión JPEG funciona mejor en fotografías y pinturas de escenas realistas con variaciones suaves de tono y color. Para el uso en la Web, donde reducir la cantidad de datos utilizados para una imagen es importante para una presentación ágil, las ventajas de compresión de JPEG hacen que JPEG sea popular. JPEG/ Exif es también el formato más común guardado en cámaras digitales.
Sin embargo, el formato JPEG no es adecuado para dibujos lineales y otros gráficos textuales o icónicos, donde los fuertes contrastes entre píxeles adyacentes pueden causar artefactos notables. Es mejor guardar estas imágenes en un formato de gráficos sin pérdida , como TIFF , GIF , PNG o un formato de imagen sin procesar . El estándar JPEG incluye un modo de codificación sin pérdida, pero ese modo no es compatible con la mayoría de los productos.
Dado que el uso típico de JPEG es un método de compresión con pérdida , que reduce la fidelidad de la imagen, no es apropiado para la reproducción exacta de datos de imágenes (como algunas aplicaciones de imágenes científicas y médicas y ciertos trabajos de procesamiento técnico de imágenes ).
El formato JPEG tampoco es adecuado para archivos que se someterán a múltiples ediciones, ya que se pierde algo de calidad de imagen cada vez que se vuelve a comprimir, en particular si se recorta o desplaza la imagen, o si se modifican los parámetros de codificación (consulte la sección Pérdida de generación digital para obtener más información). Para evitar la pérdida de información de la imagen durante la edición secuencial y repetitiva, la primera edición se puede guardar en un formato sin pérdida, editar posteriormente en ese formato y, finalmente, publicar como JPEG para su distribución.
Compresión JPEG
JPEG utiliza una forma de compresión con pérdida basada en la transformada de coseno discreta (DCT) . Esta operación matemática convierte cada cuadro/campo de la fuente de vídeo del dominio espacial (2D) al dominio de frecuencia (también conocido como dominio de la transformada). Un modelo perceptual basado libremente en el sistema psicovisual humano descarta la información de alta frecuencia, es decir, las transiciones bruscas en intensidad y tono de color. En el dominio de la transformada, el proceso de reducción de información se denomina cuantificación. En términos más simples, la cuantificación es un método para reducir de manera óptima una escala de números grandes (con diferentes ocurrencias de cada número) en una más pequeña, y el dominio de la transformada es una representación conveniente de la imagen porque los coeficientes de alta frecuencia, que contribuyen menos a la imagen general que otros coeficientes, son valores típicamente pequeños con alta compresibilidad. Luego, los coeficientes cuantificados se secuencian y se empaquetan sin pérdida en el flujo de bits de salida. Casi todas las implementaciones de software de JPEG permiten al usuario controlar la relación de compresión (así como otros parámetros opcionales), lo que permite al usuario sacrificar calidad de imagen por un tamaño de archivo más pequeño. En aplicaciones integradas (como miniDV, que utiliza un esquema de compresión DCT similar), los parámetros están preseleccionados y fijados para la aplicación.
El método de compresión suele ser con pérdida , lo que significa que se pierde parte de la información de la imagen original y no se puede recuperar, lo que posiblemente afecte a la calidad de la imagen. Existe un modo opcional sin pérdida definido en el estándar JPEG. Sin embargo, este modo no es ampliamente compatible con los productos.
También existe un formato JPEG progresivo entrelazado , en el que los datos se comprimen en múltiples pasadas de detalles progresivamente mayores. Esto es ideal para imágenes grandes que se mostrarán mientras se descargan a través de una conexión lenta, lo que permite una vista previa razonable después de recibir solo una parte de los datos. Sin embargo, la compatibilidad con JPEG progresivos no es universal. Cuando los programas que no los admiten (como las versiones de Internet Explorer anteriores a Windows 7 ) reciben JPEG progresivos [41], el software muestra la imagen solo después de que se haya descargado por completo.
También existen muchas aplicaciones de imágenes médicas, de tráfico y de cámaras que crean y procesan imágenes JPEG de 12 bits, tanto en escala de grises como en color. El formato JPEG de 12 bits está incluido en una parte extendida de la especificación JPEG. El códec libjpeg admite JPEG de 12 bits e incluso existe una versión de alto rendimiento. [42]
Edición sin pérdida
Se pueden realizar varias modificaciones en una imagen JPEG sin pérdida (es decir, sin recompresión y la pérdida de calidad asociada) siempre que el tamaño de la imagen sea un múltiplo de 1 bloque MCU (unidad mínima codificada) (normalmente 16 píxeles en ambas direcciones, para submuestreo de croma 4:2:0 ). Las utilidades que implementan esto incluyen:
- jpegtran y su GUI, Jpegcrop.
- IrfanView utiliza "JPG Lossless Crop (PlugIn)" y "JPG Lossless Rotation (PlugIn)", que requieren la instalación del complemento JPG_TRANSFORM.
- Visor de imágenes FastStone que utiliza "Recorte a archivo sin pérdida" y "Rotación sin pérdida JPEG".
- XnViewMP utiliza "transformaciones sin pérdida JPEG".
- ACDSee admite la rotación sin pérdida (pero no el recorte sin pérdida) con su opción "Forzar operaciones JPEG sin pérdida".
Los bloques se pueden rotar en incrementos de 90 grados, voltear en los ejes horizontal, vertical y diagonal y mover en la imagen. No es necesario utilizar todos los bloques de la imagen original en la imagen modificada.
El borde superior e izquierdo de una imagen JPEG debe estar en un límite de bloque de 8 × 8 píxeles (o 16 × 16 píxeles para tamaños de MCU más grandes), pero el borde inferior y derecho no necesitan estarlo. Esto limita las posibles operaciones de recorte sin pérdida y evita volteos y rotaciones de una imagen cuyo borde inferior o derecho no se encuentra en un límite de bloque para todos los canales (porque el borde terminaría en la parte superior o izquierda, donde, como se mencionó anteriormente, un límite de bloque es obligatorio).
Las rotaciones en las que la imagen no es un múltiplo de 8 o 16, cuyo valor depende del submuestreo de croma, no son sin pérdida. Al rotar una imagen de este tipo, se vuelven a calcular los bloques, lo que da como resultado una pérdida de calidad. [43]
Al utilizar el recorte sin pérdida, si el lado inferior o derecho de la región de recorte no se encuentra en el límite de un bloque, el resto de los datos de los bloques parcialmente utilizados seguirán estando presentes en el archivo recortado y podrán recuperarse. También es posible realizar transformaciones entre formatos de línea base y progresivos sin ninguna pérdida de calidad, ya que la única diferencia es el orden en el que se colocan los coeficientes en el archivo.
Además, se pueden unir varias imágenes JPEG sin pérdidas, siempre que se hayan guardado con la misma calidad y los bordes coincidan con los límites de los bloques.
Archivos JPEG
El formato de archivo conocido como "JPEG Interchange Format" (JIF) se especifica en el Anexo B de la norma. Sin embargo, este formato de archivo "puro" rara vez se utiliza, principalmente debido a la dificultad de programar codificadores y decodificadores que implementen completamente todos los aspectos de la norma y debido a ciertas deficiencias de la norma:
- Definición del espacio de color
- Registro de submuestreo de componentes
- Definición de relación de aspecto de píxeles.
Se han desarrollado varios estándares adicionales para abordar estas cuestiones. El primero de ellos, publicado en 1992, fue el formato de intercambio de archivos JPEG (o JFIF), seguido en los últimos años por el formato de archivo de imagen intercambiable (Exif) y los perfiles de color ICC . Ambos formatos utilizan la disposición de bytes JIF real, que consta de diferentes marcadores , pero además, emplean uno de los puntos de extensión del estándar JIF, es decir, los marcadores de aplicación : JFIF utiliza APP0, mientras que Exif utiliza APP1. Dentro de estos segmentos del archivo que se dejaron para uso futuro en el estándar JIF y que no son leídos por él, estos estándares agregan metadatos específicos.
Por lo tanto, en algunos aspectos, JFIF es una versión reducida del estándar JIF, ya que especifica ciertas restricciones (como no permitir todos los diferentes modos de codificación), mientras que en otros aspectos es una extensión de JIF debido a los metadatos agregados. La documentación del estándar JFIF original establece: [44]
El formato de intercambio de archivos JPEG es un formato de archivo mínimo que permite intercambiar secuencias de bits JPEG entre una amplia variedad de plataformas y aplicaciones. Este formato mínimo no incluye ninguna de las funciones avanzadas que se encuentran en la especificación TIFF JPEG ni en ningún formato de archivo específico de la aplicación. Tampoco debería incluirlo, ya que el único propósito de este formato simplificado es permitir el intercambio de imágenes comprimidas JPEG.
Los archivos de imagen que emplean compresión JPEG se denominan comúnmente "archivos JPEG" y se almacenan en variantes del formato de imagen JIF. La mayoría de los dispositivos de captura de imágenes (como las cámaras digitales) que generan JPEG en realidad crean archivos en formato Exif , el formato que la industria de las cámaras ha estandarizado para el intercambio de metadatos. Por otro lado, dado que el estándar Exif no permite perfiles de color, la mayoría del software de edición de imágenes almacena JPEG en formato JFIF e incluye el segmento APP1 del archivo Exif para incluir los metadatos de una manera casi compatible; el estándar JFIF se interpreta de manera algo flexible. [45]
En sentido estricto, los estándares JFIF y Exif son incompatibles, porque cada uno especifica que su segmento marcador (APP0 o APP1, respectivamente) aparece primero. En la práctica, la mayoría de los archivos JPEG contienen un segmento marcador JFIF que precede al encabezado Exif. Esto permite que los lectores más antiguos gestionen correctamente el segmento JFIF del formato más antiguo, mientras que los lectores más nuevos también decodifican el siguiente segmento Exif, siendo menos estrictos en cuanto a exigir que aparezca primero.
Extensiones de nombre de archivo JPEG
Las extensiones de nombre de archivo más comunes para archivos que emplean compresión JPEG son .jpgy , .jpegaunque también se utilizan y . [46] También es posible que los datos JPEG se incorporen en otros tipos de archivos: los archivos codificados TIFF a menudo incorporan una imagen JPEG como miniatura de la imagen principal; y los archivos MP3 pueden contener un JPEG de la carátula en la etiqueta ID3v2 .
.jpe.jfif.jif
Perfil de color
Muchos archivos JPEG incorporan un perfil de color ICC ( espacio de color ). Los perfiles de color más utilizados son sRGB y Adobe RGB . Debido a que estos espacios de color utilizan una transformación no lineal, el rango dinámico de un archivo JPEG de 8 bits es de aproximadamente 11 pasos ; consulte la curva gamma .
Si la imagen no especifica información de perfil de color ( sin etiqueta ), se supone que el espacio de color es sRGB para fines de visualización en páginas web. [47] [48]
Sintaxis y estructura
Una imagen JPEG consta de una secuencia de segmentos , cada uno de los cuales comienza con un marcador , cada uno de los cuales comienza con un byte 0xFF, seguido de un byte que indica qué tipo de marcador es. Algunos marcadores constan solo de esos dos bytes; otros son seguidos por dos bytes (alto y luego bajo), que indican la longitud de los datos de carga útil específicos del marcador que siguen. (La longitud incluye los dos bytes para la longitud, pero no los dos bytes para el marcador). Algunos marcadores son seguidos por datos codificados por entropía ; la longitud de dicho marcador no incluye los datos codificados por entropía. Tenga en cuenta que los bytes 0xFF consecutivos se utilizan como bytes de relleno para fines de relleno , aunque este relleno de bytes de relleno solo debe tener lugar para los marcadores inmediatamente después de los datos de escaneo codificados por entropía (consulte la sección B.1.1.2 y E.1.2 de la especificación JPEG para obtener más detalles; específicamente "En todos los casos en los que se agregan marcadores después de los datos comprimidos, los bytes de relleno 0xFF opcionales pueden preceder al marcador").
Dentro de los datos codificados por entropía, después de cualquier byte 0xFF, el codificador inserta un byte 0x00 antes del siguiente byte, de modo que no parezca que hay un marcador donde no se pretende que haya ninguno, lo que evita errores de encuadre. Los decodificadores deben omitir este byte 0x00. Esta técnica, denominada relleno de bytes (consulte la sección F.1.2.3 de la especificación JPEG), solo se aplica a los datos codificados por entropía, no a los datos de carga útil de marcadores. Sin embargo, tenga en cuenta que los datos codificados por entropía tienen algunos marcadores propios; específicamente, los marcadores de reinicio (0xD0 a 0xD7), que se utilizan para aislar fragmentos independientes de datos codificados por entropía para permitir la decodificación paralela, y los codificadores tienen la libertad de insertar estos marcadores de reinicio a intervalos regulares (aunque no todos los codificadores lo hacen).
Hay otros marcadores de inicio de cuadro que introducen otros tipos de codificaciones JPEG.
Dado que varios proveedores pueden usar el mismo tipo de marcador APP n , los marcadores específicos de la aplicación a menudo comienzan con un nombre estándar o de proveedor (por ejemplo, "Exif" o "Adobe") o alguna otra cadena de identificación.
En un marcador de reinicio, las variables predictoras de bloque a bloque se restablecen y el flujo de bits se sincroniza con un límite de bytes. Los marcadores de reinicio proporcionan medios para la recuperación después de un error en el flujo de bits, como la transmisión a través de una red no confiable o la corrupción de un archivo. Dado que las ejecuciones de macrobloques entre marcadores de reinicio se pueden decodificar de forma independiente, estas ejecuciones se pueden decodificar en paralelo.
Ejemplo de códec JPEG
Aunque un archivo JPEG se puede codificar de varias maneras, la más común es la codificación JFIF. El proceso de codificación consta de varios pasos:
- La representación de los colores en la imagen se convierte de RGB a Y′C B C R , que consta de un componente de luminancia (Y'), que representa el brillo, y dos componentes de croma (C B y C R ), que representan el color. Este paso a veces se omite.
- La resolución de los datos de croma se reduce, normalmente en un factor de 2 o 3. Esto refleja el hecho de que el ojo es menos sensible a los detalles finos de color que a los detalles finos de brillo.
- La imagen se divide en bloques de 8×8 píxeles y, para cada bloque, cada uno de los datos Y, C B y C R se somete a la transformada de coseno discreta (DCT). Una DCT es similar a una transformada de Fourier en el sentido de que produce una especie de espectro de frecuencia espacial.
- Las amplitudes de los componentes de frecuencia están cuantificadas . La visión humana es mucho más sensible a pequeñas variaciones de color o brillo en áreas grandes que a la intensidad de las variaciones de brillo de alta frecuencia. Por lo tanto, las magnitudes de los componentes de alta frecuencia se almacenan con una precisión menor que los componentes de baja frecuencia. La configuración de calidad del codificador (por ejemplo, 50 o 95 en una escala de 0 a 100 en la biblioteca del Independent JPEG Group [50] ) afecta hasta qué punto se reduce la resolución de cada componente de frecuencia. Si se utiliza una configuración de calidad excesivamente baja, los componentes de alta frecuencia se descartan por completo.
- Los datos resultantes de todos los bloques de 8×8 se comprimen aún más con un algoritmo sin pérdida, una variante de la codificación Huffman .
El proceso de decodificación invierte estos pasos, excepto la cuantificación, ya que es irreversible. En el resto de esta sección, se describen con más detalle los procesos de codificación y decodificación.
Codificación
Muchas de las opciones del estándar JPEG no se utilizan comúnmente y, como se mencionó anteriormente, la mayoría del software de imágenes utiliza el formato JFIF más simple al crear un archivo JPEG, que, entre otras cosas, especifica el método de codificación. Aquí se incluye una breve descripción de uno de los métodos de codificación más comunes cuando se aplica a una entrada que tiene 24 bits por píxel (ocho de cada uno de los siguientes : rojo, verde y azul ). Esta opción en particular es un método de compresión de datos con pérdida . Se representan en las matrices a continuación.
Transformación del espacio de color
En primer lugar, la imagen debe convertirse de RGB (por defecto sRGB, [47] [48] pero otros espacios de color son posibles) a un espacio de color diferente llamado Y′C B C R (o, informalmente, YCbCr). Tiene tres componentes Y', C B y C R : el componente Y' representa el brillo de un píxel, y los componentes C B y C R representan la crominancia (dividida en componentes azul y rojo). Este es básicamente el mismo espacio de color que se utiliza en la televisión digital en color , así como en el vídeo digital, incluidos los DVD de vídeo . La conversión del espacio de color Y′C B C R permite una mayor compresión sin un efecto significativo en la calidad de la imagen perceptual (o una mayor calidad de la imagen perceptual para la misma compresión). La compresión es más eficiente porque la información de brillo, que es más importante para la calidad perceptual final de la imagen, se limita a un solo canal. Esto se corresponde más estrechamente con la percepción del color en el sistema visual humano. La transformación del color también mejora la compresión mediante decorrelación estadística .
En el estándar JFIF se especifica una conversión particular a Y′C B C R , que debe realizarse para que el archivo JPEG resultante tenga la máxima compatibilidad. Sin embargo, algunas implementaciones de JPEG en modo de "máxima calidad" no aplican este paso y, en su lugar, mantienen la información de color en el modelo de color RGB, [51] donde la imagen se almacena en canales separados para los componentes de brillo rojo, verde y azul. Esto da como resultado una compresión menos eficiente y probablemente no se utilizaría cuando el tamaño del archivo es especialmente importante.
Reducción de muestreo
Debido a la densidad de los receptores sensibles al color y al brillo en el ojo humano, los seres humanos pueden ver considerablemente más detalles finos en el brillo de una imagen (el componente Y') que en el tono y la saturación del color de una imagen (los componentes Cb y Cr). Con este conocimiento, se pueden diseñar codificadores para comprimir imágenes de manera más eficiente.
La transformación al modelo de color Y′C B C R permite el siguiente paso habitual, que consiste en reducir la resolución espacial de los componentes Cb y Cr (denominado " submuestreo de croma "). Las proporciones en las que se realiza habitualmente el submuestreo para imágenes JPEG son 4:4:4 (sin submuestreo), 4:2:2 (reducción por un factor de 2 en la dirección horizontal) o (lo más habitual) 4:2:0 (reducción por un factor de 2 tanto en la dirección horizontal como en la vertical). Para el resto del proceso de compresión, Y', Cb y Cr se procesan por separado y de una manera muy similar.
División de bloques
Después del submuestreo , cada canal debe dividirse en bloques de 8×8. Según el submuestreo de croma, esto produce bloques de Unidad Mínima Codificada (MCU) de tamaño 8×8 (4:4:4 – sin submuestreo), 16×8 (4:2:2) o, más comúnmente, 16×16 (4:2:0). En la compresión de video, las MCU se denominan macrobloques .
Si los datos de un canal no representan un número entero de bloques, el codificador debe rellenar el área restante de los bloques incompletos con algún tipo de datos ficticios. Rellenar los bordes con un color fijo (por ejemplo, negro) puede crear artefactos de zumbido a lo largo de la parte visible del borde; repetir los píxeles del borde es una técnica común que reduce (pero no elimina necesariamente) dichos artefactos, y también se pueden aplicar técnicas de relleno de bordes más sofisticadas.
Transformada de coseno discreta

A continuación, cada bloque 8×8 de cada componente (Y, Cb, Cr) se convierte en una representación en el dominio de la frecuencia , utilizando una transformada de coseno discreta (DCT) de tipo II normalizada y bidimensional (véase la cita 1 en la transformada de coseno discreta). A veces se hace referencia a la DCT como "DCT de tipo II" en el contexto de una familia de transformadas como en la transformada de coseno discreta , y la inversa correspondiente (IDCT) se denota como "DCT de tipo III".
A modo de ejemplo, una subimagen de 8 bits de 8×8 podría ser:
Antes de calcular la DCT del bloque de 8×8, sus valores se desplazan de un rango positivo a uno centrado en cero. Para una imagen de 8 bits, cada entrada del bloque original cae en el rango . El punto medio del rango (en este caso, el valor 128) se resta de cada entrada para producir un rango de datos que está centrado en cero, de modo que el rango modificado es . Este paso reduce los requisitos de rango dinámico en la etapa de procesamiento de DCT que sigue.
Este paso da como resultado los siguientes valores:

El siguiente paso es tomar la DCT bidimensional, que viene dada por:
dónde
- es la frecuencia espacial horizontal , para los números enteros .
- es la frecuencia espacial vertical, para los números enteros .
- es un factor de escala normalizador para hacer que la transformación sea ortonormal
- es el valor del píxel en las coordenadas
- es el coeficiente DCT en las coordenadas
Si realizamos esta transformación en nuestra matriz anterior, obtenemos lo siguiente (redondeado a los dos dígitos más cercanos más allá del punto decimal):
Obsérvese la entrada de la esquina superior izquierda con la magnitud bastante grande. Este es el coeficiente DC (también llamado componente constante), que define el tono básico para todo el bloque. Los 63 coeficientes restantes son los coeficientes AC (también llamados componentes alternantes). [52] La ventaja de la DCT es su tendencia a agregar la mayor parte de la señal en una esquina del resultado, como se puede ver arriba. El paso de cuantificación a continuación acentúa este efecto al mismo tiempo que reduce el tamaño general de los coeficientes de la DCT, lo que da como resultado una señal que es fácil de comprimir de manera eficiente en la etapa de entropía.
La DCT aumenta temporalmente la profundidad de bits de los datos, ya que los coeficientes DCT de una imagen de 8 bits/componente requieren hasta 11 bits o más (según la fidelidad del cálculo DCT) para almacenarse. Esto puede obligar al códec a utilizar temporalmente números de 16 bits para almacenar estos coeficientes, duplicando el tamaño de la representación de la imagen en este punto; estos valores normalmente se reducen a valores de 8 bits en el paso de cuantificación. El aumento temporal del tamaño en esta etapa no es un problema de rendimiento para la mayoría de las implementaciones JPEG, ya que normalmente solo una parte muy pequeña de la imagen se almacena en formato DCT completo en un momento dado durante el proceso de codificación o decodificación de la imagen.
Cuantización
El ojo humano es bueno para ver pequeñas diferencias de brillo en un área relativamente grande, pero no tan bueno para distinguir la intensidad exacta de una variación de brillo de alta frecuencia. Esto permite reducir en gran medida la cantidad de información en los componentes de alta frecuencia. Esto se hace simplemente dividiendo cada componente en el dominio de frecuencia por una constante para ese componente y luego redondeando al entero más cercano. Esta operación de redondeo es la única operación con pérdida en todo el proceso (aparte del submuestreo de croma) si el cálculo de DCT se realiza con una precisión suficientemente alta. Como resultado de esto, es típico que muchos de los componentes de frecuencia más alta se redondeen a cero, y muchos del resto se conviertan en pequeños números positivos o negativos, que requieren muchos menos bits para representarse.
Los elementos de la matriz de cuantificación controlan la relación de compresión, y los valores más altos producen una mayor compresión. Una matriz de cuantificación típica (para una calidad del 50%, como se especifica en el estándar JPEG original) es la siguiente:
Los coeficientes DCT cuantificados se calculan con
donde son los coeficientes DCT no cuantificados; es la matriz de cuantificación anterior; y son los coeficientes DCT cuantificados.
El uso de esta matriz de cuantificación con la matriz de coeficientes DCT de arriba da como resultado:

Por ejemplo, utilizando −415 (el coeficiente DC) y redondeando al entero más cercano
Observe que la mayoría de los elementos de mayor frecuencia del subbloque (es decir, aquellos con una frecuencia espacial x o y mayor que 4) se cuantifican en valores cero.
Codificación de entropía

La codificación por entropía es una forma especial de compresión de datos sin pérdida . Implica la disposición de los componentes de la imagen en un orden en " zigzag " empleando el algoritmo de codificación por longitud de ejecución (RLE) que agrupa frecuencias similares, insertando ceros de codificación de longitud y luego utilizando la codificación de Huffman en lo que queda.
El estándar JPEG también permite, pero no exige, que los decodificadores admitan el uso de codificación aritmética , que es matemáticamente superior a la codificación Huffman. Sin embargo, esta característica rara vez se ha utilizado, ya que históricamente estaba cubierta por patentes que requerían licencias con regalías y porque es más lenta de codificar y decodificar en comparación con la codificación Huffman. La codificación aritmética generalmente hace que los archivos sean aproximadamente un 5-7% más pequeños [ cita requerida ] .
El coeficiente de CC cuantificado anterior se utiliza para predecir el coeficiente de CC cuantificado actual. Se codifica la diferencia entre los dos en lugar del valor real. La codificación de los 63 coeficientes de CA cuantificados no utiliza dicha diferencia de predicción.
A continuación se muestra la secuencia en zigzag de los coeficientes cuantificados anteriores. (El formato que se muestra es solo para facilitar la comprensión y visualización).
Si el bloque i -ésimo está representado por y las posiciones dentro de cada bloque están representadas por donde y , entonces cualquier coeficiente en la imagen DCT puede representarse como . Por lo tanto, en el esquema anterior, el orden de los píxeles de codificación (para el bloque i -ésimo) es , , , , , , , y así sucesivamente.

Este modo de codificación se denomina codificación secuencial de línea base . El JPEG de línea base también admite la codificación progresiva . Mientras que la codificación secuencial codifica los coeficientes de un solo bloque a la vez (en forma de zigzag), la codificación progresiva codifica un lote de coeficientes de todos los bloques en una posición similar de una sola vez (llamado escaneo ), seguido por el siguiente lote de coeficientes de todos los bloques, y así sucesivamente. Por ejemplo, si la imagen se divide en N bloques de 8×8 , entonces una codificación progresiva de 3 escaneos codifica el componente DC, para todos los bloques, es decir, para todos , en el primer escaneo. A esto le sigue el segundo escaneo que codifica algunos componentes más (suponiendo que hay cuatro componentes más, son , todavía en forma de zigzag) coeficientes de todos los bloques (por lo que la secuencia es: ), seguido de todos los coeficientes restantes de todos los bloques en el último escaneo.
Una vez que se han codificado todos los coeficientes en posiciones similares, la siguiente posición que se codificará es la que aparece a continuación en el recorrido en zigzag, como se indica en la figura anterior. Se ha descubierto que la codificación JPEG progresiva de referencia suele ofrecer una mejor compresión en comparación con la codificación JPEG secuencial de referencia debido a la capacidad de utilizar diferentes tablas de Huffman (ver a continuación) adaptadas a diferentes frecuencias en cada "escaneo" o "paso" (que incluye coeficientes en posiciones similares), aunque la diferencia no es demasiado grande.
En el resto del artículo, se supone que el patrón de coeficientes generado se debe al modo secuencial.
Para codificar el patrón de coeficientes generado anteriormente, JPEG utiliza la codificación Huffman. El estándar JPEG proporciona tablas Huffman de uso general; los codificadores también pueden optar por generar tablas Huffman optimizadas para las distribuciones de frecuencia reales en las imágenes que se están codificando.
El proceso de codificación de los datos cuantificados en zigzag comienza con una codificación de longitud de ejecución que se explica a continuación, donde:
- x es el coeficiente de CA cuantificado y distinto de cero.
- RUNLENGTH es el número de ceros que vienen antes de este coeficiente de CA distinto de cero.
- TAMAÑO es el número de bits necesarios para representar x .
- AMPLITUD es la representación en bits de x .
La codificación por longitud de ejecución funciona examinando cada coeficiente de CA distinto de cero x y determinando cuántos ceros había antes del coeficiente de CA anterior. Con esta información, se crean dos símbolos:
Tanto RUNLENGTH como SIZE se encuentran en el mismo byte, lo que significa que cada uno contiene solo cuatro bits de información. Los bits más altos se ocupan de la cantidad de ceros, mientras que los bits más bajos indican la cantidad de bits necesarios para codificar el valor de x .
Esto tiene la implicación inmediata de que el Símbolo 1 solo puede almacenar información sobre los primeros 15 ceros que preceden al coeficiente AC distinto de cero. Sin embargo, JPEG define dos palabras de código Huffman especiales. Una es para finalizar la secuencia prematuramente cuando los coeficientes restantes son cero (llamado "Fin de bloque" o "EOB"), y otra cuando la serie de ceros supera los 15 antes de alcanzar un coeficiente AC distinto de cero. En un caso como este, en el que se encuentran 16 ceros antes de un coeficiente AC distinto de cero dado, el Símbolo 1 se codifica "especialmente" como: (15, 0)(0).
El proceso general continúa hasta que se alcanza "EOB", indicado por (0, 0).
Con esto en mente, la secuencia anterior se convierte en:
- (0, 2)(-3);(1, 2)(-3);(0, 2)(-2);(0, 3)(-6);(0, 2)(2);( 0, 3)(-4);(0, 1)(1);(0, 2)(-3);(0, 1)(1);(0, 1)(1);
- (0, 3)(5);(0, 1)(1);(0, 2)(2);(0, 1)(-1);(0, 1)(1);(0, 1 )(-1);(0, 2)(2);(5, 1)(-1);(0, 1)(-1);(0, 0);
(El primer valor de la matriz, −26, es el coeficiente DC; no está codificado de la misma manera. Véase más arriba).
A partir de aquí, se realizan cálculos de frecuencia en función de las ocurrencias de los coeficientes. En nuestro bloque de ejemplo, la mayoría de los coeficientes cuantificados son números pequeños que no están precedidos inmediatamente por un coeficiente cero. Estos casos más frecuentes se representarán mediante palabras de código más cortas.
Relación de compresión y artefactos



La relación de compresión resultante se puede variar según las necesidades, siendo más o menos agresivos los divisores utilizados en la fase de cuantificación. La compresión de diez a uno suele dar como resultado una imagen que no se puede distinguir a simple vista de la original. Normalmente es posible una relación de compresión de 100:1, pero se verá claramente distorsionada en comparación con la original. El nivel adecuado de compresión depende del uso que se le vaya a dar a la imagen.
Quienes utilizan la World Wide Web pueden estar familiarizados con las irregularidades conocidas como artefactos de compresión que aparecen en las imágenes JPEG, que pueden tomar la forma de ruido alrededor de los bordes contrastantes (especialmente curvas y esquinas), o imágenes "en bloques". Estos se deben al paso de cuantificación del algoritmo JPEG. Son especialmente notables alrededor de las esquinas agudas entre colores contrastantes (el texto es un buen ejemplo, ya que contiene muchas de esas esquinas). Los artefactos análogos en el video MPEG se conocen como ruido de mosquito , ya que la "ocupación de los bordes" resultante y los puntos espurios, que cambian con el tiempo, se asemejan a mosquitos que pululan alrededor del objeto. [53] [54]
Estos artefactos se pueden reducir eligiendo un nivel de compresión más bajo ; se pueden evitar por completo guardando una imagen utilizando un formato de archivo sin pérdida, aunque esto dará como resultado un tamaño de archivo más grande. Las imágenes creadas con programas de trazado de rayos tienen formas de bloques notables en el terreno. Ciertos artefactos de compresión de baja intensidad pueden ser aceptables cuando simplemente se ven las imágenes, pero se pueden enfatizar si la imagen se procesa posteriormente, lo que generalmente da como resultado una calidad inaceptable. Considere el siguiente ejemplo, que demuestra el efecto de la compresión con pérdida en un paso de procesamiento de detección de bordes .
Algunos programas permiten al usuario variar la cantidad de compresión de los bloques individuales. Se aplica una compresión más fuerte a las áreas de la imagen que muestran menos artefactos. De esta manera, es posible reducir manualmente el tamaño del archivo JPEG con una menor pérdida de calidad.
Dado que la etapa de cuantificación siempre da como resultado una pérdida de información, el estándar JPEG siempre es un códec de compresión con pérdida. (La información se pierde tanto en la cuantificación como en el redondeo de los números de punto flotante). Incluso si la matriz de cuantificación es una matriz de unos , se perderá información en el paso de redondeo.
Descodificación
Decodificar para mostrar la imagen consiste en hacer todo lo anterior a la inversa.
Tomando la matriz de coeficientes DCT (después de agregar nuevamente la diferencia del coeficiente DC)
y tomando el producto entrada por entrada con la matriz de cuantificación anterior se obtiene
que se parece mucho a la matriz de coeficientes DCT original para la parte superior izquierda.
El siguiente paso es tomar la DCT inversa bidimensional (una DCT tipo III 2D), que viene dada por:
dónde
- es la fila de píxeles, para los números enteros .
- es la columna de píxeles, para los números enteros .
- es el factor de escala normalizador definido anteriormente para los números enteros .
- es el coeficiente DCT aproximado en las coordenadas
- es el valor del píxel reconstruido en las coordenadas
Al redondear la salida a valores enteros (ya que el original tenía valores enteros), se obtiene una imagen con valores (aún desplazados hacia abajo en 128)
y añadiendo 128 a cada entrada
Esta es la subimagen descomprimida. En general, el proceso de descompresión puede producir valores fuera del rango de entrada original de . Si esto ocurre, el decodificador debe recortar los valores de salida para mantenerlos dentro de ese rango y evitar el desbordamiento al almacenar la imagen descomprimida con la profundidad de bits original.
La subimagen descomprimida se puede comparar con la subimagen original (ver también las imágenes a la derecha) tomando la diferencia (original - sin comprimir) que da como resultado los siguientes valores de error:
con un error absoluto promedio de aproximadamente 5 valores por píxel (es decir, ).
El error es más notorio en la esquina inferior izquierda, donde el píxel inferior izquierdo se vuelve más oscuro que el píxel situado inmediatamente a su derecha.
Precisión requerida
La precisión de implementación requerida de un códec JPEG se define implícitamente a través de los requisitos formulados para el cumplimiento de la norma JPEG. Estos requisitos se especifican en la Recomendación ITU.T T.83 | ISO/IEC 10918-2. A diferencia de las normas MPEG y muchas normas JPEG posteriores, el documento anterior define tanto las precisiones de implementación requeridas para el proceso de codificación como de decodificación de un códec JPEG por medio de un error máximo tolerable de la DCT directa e inversa en el dominio DCT según lo determinado por los flujos de prueba de referencia. Por ejemplo, la salida de una implementación de decodificador no debe superar un error de una unidad de cuantificación en el dominio DCT cuando se aplica a los flujos de código de prueba de referencia proporcionados como parte de la norma anterior. Si bien es inusual, y a diferencia de muchas otras normas más modernas, la Recomendación ITU.T T.83 | ISO/IEC 10918-2 no formula límites de error en el dominio de la imagen.
Efectos de la compresión JPEG
Los artefactos de compresión JPEG se combinan bien con fotografías con texturas no uniformes y detalladas, lo que permite mayores índices de compresión. Observe cómo un índice de compresión más alto afecta primero a las texturas de alta frecuencia en la esquina superior izquierda de la imagen, y cómo las líneas contrastantes se vuelven más borrosas. El índice de compresión muy alto afecta gravemente la calidad de la imagen, aunque los colores generales y la forma de la imagen aún son reconocibles. Sin embargo, la precisión de los colores se ve menos afectada (para un ojo humano) que la precisión de los contornos (basada en la luminancia). Esto justifica el hecho de que las imágenes se deban transformar primero en un modelo de color que separe la luminancia de la información cromática, antes de realizar un submuestreo de los planos cromáticos (que también pueden utilizar una cuantificación de menor calidad) para preservar la precisión del plano de luminancia con más bits de información.
Fotografías de muestra

For information, the uncompressed 24-bit RGB bitmap image below (73,242 pixels) would require 219,726 bytes (excluding all other information headers). The filesizes indicated below include the internal JPEG information headers and some metadata. For highest quality images (Q=100), about 8.25 bits per color pixel is required. On grayscale images, a minimum of 6.5 bits per pixel is enough (a comparable Q=100 quality color information requires about 25% more encoded bits). The highest quality image below (Q=100) is encoded at nine bits per color pixel, the medium quality image (Q=25) uses one bit per color pixel. For most applications, the quality factor should not go below 0.75 bit per pixel (Q=12.5), as demonstrated by the low quality image. The image at lowest quality uses only 0.13 bit per pixel, and displays very poor color. This is useful when the image will be displayed in a significantly scaled-down size. A method for creating better quantization matrices for a given image quality using PSNR instead of the Q factor is described in Minguillón & Pujol (2001).[55]
The medium quality photo uses only 4.3% of the storage space required for the uncompressed image, but has little noticeable loss of detail or visible artifacts. However, once a certain threshold of compression is passed, compressed images show increasingly visible defects. See the article on rate–distortion theory for a mathematical explanation of this threshold effect. A particular limitation of JPEG in this regard is its non-overlapped 8×8 block transform structure. More modern designs such as JPEG 2000 and JPEG XR exhibit a more graceful degradation of quality as the bit usage decreases – by using transforms with a larger spatial extent for the lower frequency coefficients and by using overlapping transform basis functions.
Lossless further compression
From 2004 to 2008, new research emerged on ways to further compress the data contained in JPEG images without modifying the represented image.[56][57][58][59] This has applications in scenarios where the original image is only available in JPEG format, and its size needs to be reduced for archiving or transmission. Standard general-purpose compression tools cannot significantly compress JPEG files.
Typically, such schemes take advantage of improvements to the naive scheme for coding DCT coefficients, which fails to take into account:
- Correlations between magnitudes of adjacent coefficients in the same block;
- Correlations between magnitudes of the same coefficient in adjacent blocks;
- Correlations between magnitudes of the same coefficient/block in different channels;
- The DC coefficients when taken together resemble a downscale version of the original image multiplied by a scaling factor. Well-known schemes for lossless coding of continuous-tone images can be applied, achieving somewhat better compression than the Huffman coded DPCM used in JPEG.
Some standard but rarely used options already exist in JPEG to improve the efficiency of coding DCT coefficients: the arithmetic coding option, and the progressive coding option (which produces lower bitrates because values for each coefficient are coded independently, and each coefficient has a significantly different distribution). Modern methods have improved on these techniques by reordering coefficients to group coefficients of larger magnitude together;[56] using adjacent coefficients and blocks to predict new coefficient values;[58] dividing blocks or coefficients up among a small number of independently coded models based on their statistics and adjacent values;[57][58] and most recently, by decoding blocks, predicting subsequent blocks in the spatial domain, and then encoding these to generate predictions for DCT coefficients.[59]
Typically, such methods can compress existing JPEG files between 15 and 25 percent, and for JPEGs compressed at low-quality settings, can produce improvements of up to 65%.[58][59]
A freely available tool called packJPG is based on the 2007 paper "Improved Redundancy Reduction for JPEG Files." As of version 2.5k of 2016, it reports a typical 20% reduction by transcoding.[60] JPEG XL (ISO/IEC 18181) of 2018 reports a similar reduction in its transcoding.
Derived formats for stereoscopic 3D
JPEG Stereoscopic

JPS is a stereoscopic JPEG image used for creating 3D effects from 2D images. It contains two static images, one for the left eye and one for the right eye; encoded as two side-by-side images in a single JPG file. JPEG Stereoscopic (JPS, extension .jps) is a JPEG-based format for stereoscopic images.[61][62] It has a range of configurations stored in the JPEG APP3 marker field, but usually contains one image of double width, representing two images of identical size in cross-eyed (i.e. left frame on the right half of the image and vice versa) side-by-side arrangement. This file format can be viewed as a JPEG without any special software, or can be processed for rendering in other modes.
JPEG Multi-Picture Format
JPEG Multi-Picture Format (MPO, extension .mpo) is a JPEG-based format for storing multiple images in a single file. It contains two or more JPEG files concatenated together.[64][65] It also defines a JPEG APP2 marker segment for image description. Various devices use it to store 3D images, such as Fujifilm FinePix Real 3D W1, HTC Evo 3D, JVC GY-HMZ1U AVCHD/MVC extension camcorder, Nintendo 3DS, Panasonic Lumix DMC-TZ20, DMC-TZ30, DMC-TZ60, DMC-TS4 (FT4), and Sony DSC-HX7V. Other devices use it to store "preview images" that can be displayed on a TV.
In the last few years, due to the growing use of stereoscopic images, much effort has been spent by the scientific community to develop algorithms for stereoscopic image compression.[66][67]
Implementations
A very important implementation of a JPEG codec is the free programming library libjpeg of the Independent JPEG Group. It was first published in 1991 and was key for the success of the standard. This library was used in countless applications.[68] The development went quiet in 1998; when libjpeg resurfaced with the 2009 version 7, it broke ABI compatibility with previous versions. Version 8 of 2010 introduced non-standard extensions, a decision criticized by the original IJG leader Tom Lane.[69]
libjpeg-turbo, forked from the 1998 libjpeg 6b, improves on libjpeg with SIMD optimizations. Originally seen as a maintained fork of libjpeg, it has become more popular after the incompatible changes of 2009.[70][71] In 2019, it became the ITU|ISO/IEC reference implementation as ISO/IEC 10918-7 and ITU-T T.873.[72]
ISO/IEC Joint Photography Experts Group maintains the other reference software implementation under the JPEG XT heading. It can encode both base JPEG (ISO/IEC 10918-1 and 18477–1) and JPEG XT extensions (ISO/IEC 18477 Parts 2 and 6–9), as well as JPEG-LS (ISO/IEC 14495).[73] In 2016, "JPEG on steroids" was introduced as an option for the ISO JPEG XT reference implementation.[74]
There is persistent interest in encoding JPEG in unconventional ways that maximize image quality for a given file size. In 2014, Mozilla created MozJPEG from libjpeg-turbo, a slower but higher-quality encoder intended for web images.[75] In March 2017, Google released the open source project Guetzli, which trades off a much longer encoding time for smaller file size (similar to what Zopfli does for PNG and other lossless data formats).[76]
In April 2024, Google introduced Jpegli, a new JPEG coding library that offers enhanced capabilities and a 35% compression ratio improvement at high quality compression settings, while the coding speed is comparable with MozJPEG.[77]
Successors
The Joint Photographic Experts Group has developed several newer standards meant to complement or replace the functionality of the original JPEG format.
JPEG LS
Originating in 1993 and published as ISO-14495-1/ITU-T.87, JPEG LS offers a low-complexity lossless file format which was more efficient than JPEG's original lossless implementation. It also features a lossy mode close to lossless. Its functionality is largely limited to that, and largely shares the same limitations of the original JPEG in other aspects.
JPEG 2000
JPEG 2000 was published as ISO/IEC 15444 in December 2000. It is based on a discrete wavelet transform (DWT) and was designed to completely replace the original JPEG standard and exceed it in every way. It allows up to 38 bits per colour channel and 16384 channels, more than any other format, with a multitude of colour spaces, and thus high dynamic range (HDR). Furthermore, it supports alpha transparency coding, billions-by-billions pixel images, which is also more than any other format, and lossless compression. It has significantly improved lossy compression ratio with significantly less visible artefacts at strong compression levels.[78]
JPEG XT
JPEG XT (ISO/IEC 18477) was published in June 2015; it extends base JPEG format with support for higher integer bit depths (up to 16 bit), high dynamic range imaging and floating-point coding, lossless coding, and alpha channel coding. Extensions are backward compatible with the base JPEG/JFIF file format and 8-bit lossy compressed image. JPEG XT uses an extensible file format based on JFIF. Extension layers are used to modify the JPEG 8-bit base layer and restore the high-resolution image. Existing software is forward compatible and can read the JPEG XT binary stream, though it would only decode the base 8-bit layer.[79]
JPEG XL
JPEG XL (ISO/IEC 18181) was published in 2021–2022. It replaces the JPEG format with a new DCT-based royalty-free format and allows efficient transcoding as a storage option for traditional JPEG images.[80] The new format is designed to exceed the still image compression performance shown by HEIF HM, Daala and WebP. It supports billion-by-billion pixel images, up to 32-bit-per-component high dynamic range with the appropriate transfer functions (PQ and HLG), patch encoding of synthetic images such as bitmap fonts and gradients, animated images, alpha channel coding, and a choice of RGB/YCbCr/ICtCp color encoding.[81][82][83][84]
See also
- AVIF
- Better Portable Graphics, a format based on intra-frame encoding of the HEVC
- C-Cube, an early implementer of JPEG in chip form
- Comparison of graphics file formats
- Deblocking filter (video), the similar deblocking methods could be applied to JPEG
- Design rule for Camera File system (DCF)
- FELICS, a lossless image codec
- File extensions
- Graphics editing program
- High Efficiency Image File Format, image container format for HEVC and other image coding formats
- Lenna (test image), the traditional standard image used to test image processing algorithms
- Motion JPEG
- WebP
References
- ^ a b c d e "T.81 – DIGITAL COMPRESSION AND CODING OF CONTINUOUS-TONE STILL IMAGES – REQUIREMENTS AND GUIDELINES" (PDF). CCITT. September 1992. Archived (PDF) from the original on 30 December 2019. Retrieved 12 July 2019.
- ^ "Definition of "JPEG"". Collins English Dictionary. Archived from the original on 21 September 2013. Retrieved 23 May 2013.
- ^ Haines, Richard F.; Chuang, Sherry L. (1 July 1992). The effects of video compression on acceptability of images for monitoring life sciences experiments (Technical report). NASA. NASA-TP-3239, A-92040, NAS 1.60:3239. Retrieved 13 March 2016.
The JPEG still-image-compression levels, even with the large range of 5:1 to 120:1 in this study, yielded equally high levels of acceptability
- ^ a b Hudson, Graham; Léger, Alain; Niss, Birger; Sebestyén, István; Vaaben, Jørgen (31 August 2018). "JPEG-1 standard 25 years: past, present, and future reasons for a success". Journal of Electronic Imaging. 27 (4): 1. doi:10.1117/1.JEI.27.4.040901. S2CID 52164892.
- ^ Svetlik, Joe (31 May 2018). "The JPEG Image Format Explained". BT.com. BT Group. Archived from the original on 5 August 2019. Retrieved 5 August 2019.
- ^ Baraniuk, Chris (15 October 2015). "Copy Protections Could Come to JPEGs". BBC News. BBC. Archived from the original on 9 October 2019. Retrieved 13 September 2019.
- ^ Trinkwalder, Andrea (7 October 2016). "JPEG: 25 Jahre und kein bisschen alt" [JPEG: 25 years (old) and not a bit old]. de:Heise online (in German). Archived from the original on 5 September 2019. Retrieved 5 September 2019.
- ^ Caplan, Paul (24 September 2013). "What Is a JPEG? The Invisible Object You See Every Day". The Atlantic. Archived from the original on 9 October 2019. Retrieved 13 September 2019.
- ^ "HTTP Archive – Interesting Stats". httparchive.org. Retrieved 6 April 2016.
- ^ "MIME Type Detection in Internet Explorer". Microsoft. 13 July 2016. Archived from the original on 30 October 2022. Retrieved 2 November 2022.
- ^ "JPEG File Interchange Format" (PDF). 3 September 2014. Archived from the original on 3 September 2014. Retrieved 16 October 2017.
{{cite web}}: CS1 maint: bot: original URL status unknown (link) - ^ "Why JPEG 2000 Never Took Off". American National Standards Institute. 10 July 2018. Archived from the original on 16 December 2018. Retrieved 13 September 2019.
- ^ a b c d Lemos, Robert (23 July 2002). "Finding patent truth in JPEG claim". CNET. Archived from the original on 13 July 2019. Retrieved 13 July 2019.
- ^ ISO/IEC JTC 1/SC 29 (7 May 2009). "ISO/IEC JTC 1/SC 29/WG 1 – Coding of Still Pictures (SC 29/WG 1 Structure)". Archived from the original on 31 December 2013. Retrieved 11 November 2009.
{{cite web}}: CS1 maint: numeric names: authors list (link) - ^ a b ISO/IEC JTC 1/SC 29. "Programme of Work, (Allocated to SC 29/WG 1)". Archived from the original on 31 December 2013. Retrieved 7 November 2009.
{{cite web}}: CS1 maint: numeric names: authors list (link) - ^ ISO. "JTC 1/SC 29 – Coding of audio, picture, multimedia and hypermedia information". Archived from the original on 3 July 2010. Retrieved 11 November 2009.
- ^ a b JPEG. "Joint Photographic Experts Group, JPEG Homepage". Archived from the original on 27 September 2009. Retrieved 8 November 2009.
- ^ "T.81: Information technology – Digital compression and coding of continuous-tone still images – Requirements and guidelines". Itu.int. Archived from the original on 6 November 2012. Retrieved 7 November 2009.
- ^ William B. Pennebaker; Joan L. Mitchell (1993). JPEG still image data compression standard (3rd ed.). Springer. p. 291. ISBN 978-0-442-01272-4.
- ^ ISO. "JTC 1/SC 29 – Coding of audio, picture, multimedia and hypermedia information". Archived from the original on 3 July 2010. Retrieved 7 November 2009.
- ^ "SPIFF, Still Picture Interchange File Format". Library of Congress. 30 January 2012. Archived from the original on 31 July 2018. Retrieved 31 July 2018.
- ^ JPEG (24 April 2009). "JPEG XR enters FDIS status: JPEG File Interchange Format (JFIF) to be standardized as JPEG Part 5" (Press release). Archived from the original on 8 October 2009. Retrieved 9 November 2009.
- ^ "JPEG File Interchange Format (JFIF)". ECMA TR/98 1st ed. Ecma International. 2009. Archived from the original on 14 January 2021. Retrieved 1 August 2011.
- ^ "Forgent's JPEG Patent". SourceForge. 2002. Archived from the original on 13 May 2019. Retrieved 13 July 2019.
- ^ "Concerning recent patent claims". Jpeg.org. 19 July 2002. Archived from the original on 14 July 2007. Retrieved 29 May 2011.
- ^ "JPEG and JPEG2000 – Between Patent Quarrel and Change of Technology". Archived from the original on 17 August 2004. Retrieved 16 April 2017.
{{cite web}}: CS1 maint: bot: original URL status unknown (link) - ^ Kawamoto, Dawn (22 April 2005). "Graphics patent suit fires back at Microsoft". CNET News. Archived from the original on 20 January 2023. Retrieved 20 January 2023.
- ^ "Trademark Office Re-examines Forgent JPEG Patent". Publish.com. 3 February 2006. Archived from the original on 15 May 2016. Retrieved 28 January 2009.
- ^ "USPTO: Broadest Claims Forgent Asserts Against JPEG Standard Invalid". Groklaw.net. 26 May 2006. Archived from the original on 16 May 2019. Retrieved 21 July 2007.
- ^ "Coding System for Reducing Redundancy". Gauss.ffii.org. Archived from the original on 12 June 2011. Retrieved 29 May 2011.
- ^ "JPEG Patent Claim Surrendered". Public Patent Foundation. 2 November 2006. Archived from the original on 2 January 2007. Retrieved 3 November 2006.
- ^ "Ex Parte Reexamination Certificate for U.S. Patent No. 5,253,341". Archived from the original on 2 June 2008.
- ^ Workgroup. "Rozmanith: Using Software Patents to Silence Critics". Eupat.ffii.org. Archived from the original on 16 July 2011. Retrieved 29 May 2011.
- ^ "A Bounty of $5,000 to Name Troll Tracker: Ray Niro Wants To Know Who Is saying All Those Nasty Things About Him". Law.com. Archived from the original on 21 November 2010. Retrieved 29 May 2011.
- ^ Reimer, Jeremy (5 February 2008). "Hunting trolls: USPTO asked to reexamine broad image patent". Arstechnica.com. Archived from the original on 8 December 2008. Retrieved 29 May 2011.
- ^ U.S. Patent Office – Granting Reexamination on 5,253,341 C1
- ^ "Judge Puts JPEG Patent On Ice". Techdirt.com. 30 April 2008. Archived from the original on 14 November 2011. Retrieved 29 May 2011.
- ^ "JPEG Patent's Single Claim Rejected (And Smacked Down For Good Measure)". Techdirt.com. 1 August 2008. Archived from the original on 28 November 2019. Retrieved 29 May 2011.
- ^ Workgroup. "Princeton Digital Image Corporation Home Page". Archived from the original on 11 April 2013. Retrieved 1 May 2013.
- ^ Workgroup (3 April 2013). "Article on Princeton Court Ruling Regarding GE License Agreement". Archived from the original on 9 March 2016. Retrieved 1 May 2013.
- ^ "Progressive Decoding Overview". Microsoft Developer Network. Microsoft. Archived from the original on 19 November 2012. Retrieved 23 March 2012.
- ^ Fastvideo (May 2019). "12-bit JPEG encoder on GPU". Archived from the original on 6 May 2019. Retrieved 6 May 2019.
- ^ "Why You Should Always Rotate Original JPEG Photos Losslessly". Petapixel.com. 14 August 2012. Archived from the original on 17 October 2017. Retrieved 16 October 2017.
- ^ "JFIF File Format as PDF" (PDF). Archived (PDF) from the original on 13 January 2021. Retrieved 19 June 2006.
- ^ Tom Lane (29 March 1999). "JPEG image compression FAQ". Archived from the original on 10 November 2010. Retrieved 11 September 2007. (q. 14: "Why all the argument about file formats?")
- ^ "Everything you need to know about JPEG files | Adobe". www.adobe.com. Retrieved 18 August 2023.
- ^ a b "A Standard Default Color Space for the Internet - sRGB". www.w3.org. Archived from the original on 18 February 2022. Retrieved 18 February 2022.
- ^ a b "IEC 61966-2-1:1999/AMD1:2003 | IEC Webstore". webstore.iec.ch. Archived from the original on 18 February 2022. Retrieved 18 February 2022.
- ^ "ISO/IEC 10918-1: 1993(E) p.36". Archived from the original on 1 August 2011. Retrieved 30 November 2007.
- ^ Thomas G. Lane. "Advanced Features: Compression parameter selection". Using the IJG JPEG Library. Archived from the original on 26 November 2001. Retrieved 8 October 2008.
- ^ Ryan, Dan (20 June 2012). E - Learning Modules: Dlr Associates Series. AuthorHouse. ISBN 978-1-4685-7520-0.
- ^ "DC / AC Frequency Questions - Doom9's Forum". forum.doom9.org. Archived from the original on 17 October 2017. Retrieved 16 October 2017.
- ^ a b Phuc-Tue Le Dinh and Jacques Patry. Video compression artifacts and MPEG noise reduction Archived 2006-03-14 at the Wayback Machine. Video Imaging DesignLine. February 24, 2006. Retrieved May 28, 2009.
- ^ "3.9 mosquito noise: Form of edge busyness distortion sometimes associated with movement, characterized by moving artifacts and/or blotchy noise patterns superimposed over the objects (resembling a mosquito flying around a person's head and shoulders)." ITU-T Rec. P.930 (08/96) Principles of a reference impairment system for video Archived 2010-02-16 at the Wayback Machine
- ^ Julià Minguillón, Jaume Pujol (April 2001). "JPEG standard uniform quantization error modeling with applications to sequential and progressive operation modes" (PDF). Electronic Imaging. 10 (2): 475–485. Bibcode:2001JEI....10..475M. doi:10.1117/1.1344592. hdl:10609/6263. S2CID 16629522. Archived (PDF) from the original on 3 August 2020. Retrieved 23 September 2019.
- ^ a b I. Bauermann and E. Steinbacj. Further Lossless Compression of JPEG Images. Proc. of Picture Coding Symposium (PCS 2004), San Francisco, US, December 15–17, 2004.
- ^ a b N. Ponomarenko, K. Egiazarian, V. Lukin and J. Astola. Additional Lossless Compression of JPEG Images, Proc. of the 4th Intl. Symposium on Image and Signal Processing and Analysis (ISPA 2005), Zagreb, Croatia, pp. 117–120, September 15–17, 2005.
- ^ a b c d M. Stirner and G. Seelmann. Improved Redundancy Reduction for JPEG Files. Proc. of Picture Coding Symposium (PCS 2007), Lisbon, Portugal, November 7–9, 2007
- ^ a b c Ichiro Matsuda, Yukio Nomoto, Kei Wakabayashi and Susumu Itoh. Lossless Re-encoding of JPEG images using block-adaptive intra prediction. Proceedings of the 16th European Signal Processing Conference (EUSIPCO 2008).
- ^ Stirner, Matthias (19 February 2023). "packjpg/packJPG". GitHub. Archived from the original on 2 March 2023. Retrieved 2 March 2023.
- ^ J. Siragusa; D. C. Swift (1997). "General Purpose Stereoscopic Data Descriptor" (PDF). VRex, Inc., Elmsford, New York, US. Archived from the original (PDF) on 30 October 2011.
- ^ Tim Kemp, JPS files Archived 2009-01-18 at the Wayback Machine
- ^ "CGImageSource.SupportedTypes". Claris FileMaker MBS Plug-in. MonkeyBread Software. Archived from the original on 30 December 2020. Retrieved 21 May 2023.
- ^ "Multi-Picture Format" (PDF). 2009. Archived from the original (PDF) on 5 April 2016. Retrieved 30 December 2015.
- ^ "MPO2Stereo: Convert Fujifilm MPO files to JPEG stereo pairs", Mtbs3d.com, archived from the original on 31 May 2010, retrieved 12 January 2010
- ^ Alessandro Ortis; Sebastiano Battiato (2015), Sitnik, Robert; Puech, William (eds.), "A new fast matching method for adaptive compression of stereoscopic images", Three-Dimensional Image Processing, Three-Dimensional Image Processing, Measurement (3DIPM), and Applications 2015, 9393, SPIE - Three-Dimensional Image Processing, Measurement (3DIPM), and Applications 2015: 93930K, Bibcode:2015SPIE.9393E..0KO, doi:10.1117/12.2086372, S2CID 18879942, archived from the original on 3 March 2016, retrieved 30 April 2015
- ^ Alessandro Ortis; Francesco Rundo; Giuseppe Di Giore; Sebastiano Battiato, Adaptive Compression of Stereoscopic Images, International Conference on Image Analysis and Processing (ICIAP) 2013, archived from the original on 3 March 2016, retrieved 30 April 2015
- ^ "Overview of JPEG". jpeg.org. Archived from the original on 21 October 2017. Retrieved 16 October 2017.
- ^ Tom Lane, January 16, 2013: jpeg-9, API/ABI compatibility, and the future role of this project Archived 2018-12-04 at the Wayback Machine
- ^ Software That Uses or Provides libjpeg-turbo Archived 2017-03-18 at the Wayback Machine. February 9, 2012.
- ^ Issue 48789 – chromium – Use libjpeg-turbo instead of libjpeg Archived 2015-08-01 at the Wayback Machine. April 14, 2011.
- ^ "ISO/IEC 10918-7: 2019 Information technology — Digital compression and coding of continuous-tone still images — Part 7: Reference software". ISO. Archived from the original on 7 May 2022. Retrieved 7 May 2022."T.873 (05/19): Information technology - Digital compression and coding of continuous-tone still images: Reference software". www.itu.int. Archived from the original on 2 June 2022. Retrieved 1 March 2023.
- ^ "JPEG - JPEG XT". jpeg.org. Archived from the original on 4 March 2018. Retrieved 3 March 2018.
- ^ Richter, Thomas (September 2016). "JPEG on STEROIDS: Common optimization techniques for JPEG image compression". 2016 IEEE International Conference on Image Processing (ICIP). pp. 61–65. doi:10.1109/ICIP.2016.7532319. ISBN 978-1-4673-9961-6. S2CID 14922251.
- ^ "Introducing the 'mozjpeg' Project". Mozilla Research. 5 March 2014. Archived from the original on 1 March 2023. Retrieved 1 March 2023.
- ^ "Announcing Guetzli: A New Open Source JPEG Encoder". Research.googleblog.com. 16 March 2017. Archived from the original on 6 October 2017. Retrieved 16 October 2017.
- ^ "Introducing Jpegli: A New JPEG Coding Library". Google Open Source Blog. 3 April 2024. Archived from the original on 3 April 2024. Retrieved 4 April 2024.
- ^ Sneyers, Jon (22 February 2021). "It's High Time to Replace JPEG With a Next-Generation Image Codec". Cloudinary. Retrieved 14 November 2023.
- ^ "JPEG - JPEG XT". jpeg.org. Archived from the original on 4 March 2018. Retrieved 3 March 2018.
- ^ Alakuijala, Jyrki; van Asseldonk, Ruud; Boukortt, Sami; Bruse, Martin; Comșa, Iulia-Maria; Firsching, Moritz; Fischbacher, Thomas; Kliuchnikov, Evgenii; Gomez, Sebastian; Obryk, Robert; Potempa, Krzysztof; Rhatushnyak, Alexander; Sneyers, Jon; Szabadka, Zoltan; Vandervenne, Lode; Versari, Luca; Wassenberg, Jan (6 September 2019). "JPEG XL next-generation image compression architecture and coding tools". In Tescher, Andrew G; Ebrahimi, Touradj (eds.). Applications of Digital Image Processing XLII. Vol. 11137. p. 20. Bibcode:2019SPIE11137E..0KA. doi:10.1117/12.2529237. ISBN 978-1-5106-2967-7. S2CID 202785129. Archived from the original on 26 December 2021. Retrieved 26 December 2021.
- ^ Rhatushnyak, Alexander; Wassenberg, Jan; Sneyers, Jon; Alakuijala, Jyrki; Vandevenne, Lode; Versari, Luca; Obryk, Robert; Szabadka, Zoltan; Kliuchnikov, Evgenii; Comsa, Iulia-Maria; Potempa, Krzysztof; Bruse, Martin; Firsching, Moritz; Khasanova, Renata; Ruud van Asseldonk; Boukortt, Sami; Gomez, Sebastian; Fischbacher, Thomas (2019). "Committee Draft of JPEG XL Image Coding System". arXiv:1908.03565 [eess.IV].
- ^ "N79010 Final Call for Proposals for a Next-Generation Image Coding Standard (JPEG XL)" (PDF). ISO/IEC JTC 1/SC 29/WG 1 (ITU-T SG16). Archived (PDF) from the original on 31 October 2022. Retrieved 29 May 2018.
- ^ ISO/IEC 18181-1:2022 Information technology — JPEG XL image coding system — Part 1: Core coding system.
- ^ ISO/IEC 18181-2:2021 Information technology — JPEG XL image coding system — Part 2: File format.
External links
- Official website
- JPEG Standard (JPEG ISO/IEC 10918-1 ITU-T Recommendation T.81) at W3.org
- JFIF File Format at W3.org
- Example images over the full range of quantization levels from 1 to 100 at visengi.com
- JPEG decoder open source code, copyright (C) 1995–1997, Thomas G. Lane