1. Inicio de la imagen (SOI): El primer marcador, `FF D8`, señala el comienzo del archivo JPEG. Es como decir:"Esta es una imagen JPEG, ¡presta atención!"
2. APP Markers (APPN): Marcadores específicos de la aplicación, indicados por `FF E0` a` FF EF`. Estos a menudo contienen metadatos, como:
* jfif (formato de intercambio de archivos jpeg): Este segmento contiene información sobre la resolución de la imagen, el espacio de color (generalmente YCBCR) y otros parámetros vitales. Es crucial para una exhibición adecuada.
* exif (formato de archivo de imagen intercambiable): Esto contiene metadatos como configuración de cámara, fecha/hora, ubicación GPS, etc. a menudo más extensa que JFIF.
* Otros metadatos: Otras aplicaciones pueden agregar sus propios segmentos de metadatos.
3. Tabla (s) de cuantización (DQT): Estos segmentos (`FF DB`) definen las tablas de cuantización utilizadas para la compresión con pérdida. Estas tablas determinan cuántos detalles se descartan durante la compresión. Se pueden definir diferentes tablas para la luminancia (brillo) y la crominanza (color).
4. Tabla (s) de Huffman (DHT): Estos segmentos (`FF C4`) definen las tablas de codificación de Huffman utilizadas para la codificación de entropía. Estas tablas dictan la frecuencia de que se representan los datos que ocurren con códigos más cortos, mejorando la eficiencia de la compresión.
5. Inicio del marco (SOF): Este marcador (`ff C0`,` ff C1`, `ff C2`) especifica las propiedades básicas de la imagen:
* Formato de datos de imagen: DCT de línea de base, DCT progresivo, etc.
* Factores de muestreo: Cuántos píxeles se muestran para cada componente de color (por ejemplo, 4:2:0, 4:2:2, 4:4:4). Esto afecta la resolución de la información del color.
* Número de componentes: Por lo general, 3 (Y, CB, CR para imágenes en color), pero pueden ser 1 (escala de grises).
* Dimensiones de imagen: Altura y ancho en píxeles.
6. Encabezado de escaneo (SOS): El marcador `FF DA` indica el inicio de los datos de imagen comprimidos. Especifica qué componentes serán escaneados y cómo.
7. Datos de imagen comprimidos: Aquí es donde residen los datos de la imagen reales, codificados utilizando transformación de coseno discreta (DCT), cuantización y codificación de Huffman (o codificación aritmética). Esta es la mayor parte del archivo.
8. Fin de la imagen (EOI): El marcador final, `ff D9`, señala el final del archivo JPEG.
En resumen: Un archivo JPEG no es simplemente un volcado de imagen sin procesar. Es un contenedor cuidadosamente estructurado con metadatos y datos de imagen comprimidos. El proceso de compresión involucra varias etapas:
1. Conversión de color (si corresponde): RGB se convierte típicamente a YCBCR.
2. Transformación de coseno discreto (DCT): Transforma los bloques de imagen en coeficientes de frecuencia.
3. Cuantización: Reduce la precisión de los coeficientes DCT, introduciendo la compresión con pérdida.
4. Codificación de entropía (Huffman o aritmética): Además, comprime los coeficientes cuantificados asignando códigos más cortos a valores más frecuentes.
La estructura exacta y el contenido de un archivo JPEG pueden variar, dependiendo de la configuración utilizada durante la compresión y la presencia de metadatos opcionales. Pero los marcadores básicos y su secuencia siguen siendo consistentes.