El formato JPEG
JPEG es una familia de técnicas de compresión (29 procesos de codificación diferentes) estandarizadas por el grupo
Joint Photographic Experts Group
Cooperación conjunta realizada por ISO (International Organization for Standardization) y CCITT (International Telegraph and Telephone Consultative Committee
El ojo humano puede percibir mejor pequeños cambios en el brillo de una imagen que pequeños cambios en el color. Por ello, la compresión JPEG perderá alguna información sobre el color. Con esta técnica se pueden conseguir tasas de compresión de 20 a 1 sin que apenas se note
Se puede controlar la tasa de compresión de una imagen especificando el valor de un parámetro Q; cuando se elige un valor de Q grande la imagen tiene una mayor calidad y ocupa mayor espacio que cuando se elige un valor pequeño
La técnica JPEG básica (baseline JPEG) consta de cinco pasos:
Transformación de la imagen RGB a una imagen en el espacio de colores YCr Cb.
2. Reducción de las componentes de color (opcional).
3. Partición de la imagen en bloques (ventanas) de 8?8 pixeles y determinación de la transformada del coseno discreta (TCD) para cada bloque.
4. Cuantificación de los coeficientes de la TCD.
5. Codificación sin pérdidas de los coeficientes reducidos utilizando el algoritmo de Huffman modificado.
1. Transformación del espacio de color
Luminancia Y
Naranja ? Cian que es muy importante para crear el color del cutis:
R ? Y ?[ ?0.701, 0.701 ]
Verde ? Magenta: B ? Y ?[ ?0.886, 0.886 ]
Los valores de esta representación de colores se pueden convertir en una codificación binaria mediante las expresiones:
Y = redondear (219?Y + 16)
Cr = redondear (224?0.713?(R?Y) + 128)
CB = redondear (224?0.564?(B?Y) + 128)
El valor de luminancia, Y, es compatible con las televisiones en blanco y negro.
Como el ojo humano es más sensible a pequeños cambios en la luminancia que en la saturación o el matiz de los colores, y percibe los detalles más finos (que no se pueden distinguir con la información del color) por su intensidad luminosa, entonces los valores cromáticos, (R?Y) y (B?Y), se pueden codificar a niveles más pequeños de resolución y precisión, manteniéndose un nivel razonable de calidad en la imagen.
El segundo paso es opcional y conlleva pérdida de información. Se deja la componente Y como está y se muestrean las componentes de color (hay diferentes esquemas de muestreo).
Una forma de hacer el muestreo consiste en dividir la imagen en bloques de 4 píxeles y se extrae uno o se promedian los cuatro píxeles de cada bloque.
El tercer paso consiste en dividir las componentes de la imagen en bloques (ventanas) 8?8 (si lo valores de los píxeles varían de 0 a 255 se les resta 128 para conseguir valores enteros positivos y negativos) a los que se les aplica la transformada discreta del coseno.
El elemento (0,0) de la TDC nos da el valor medio de los 64 píxeles del bloque y lo representamos por DC, el resto de elementos por ACij siendo (i,j) la posición del píxel en el bloque.
En el cuarto paso se cuantifican los coeficientes de la TDC de cada bloque.
Para ello, dichos coeficientes se dividen por su correspondiente coeficiente de cuantificación y se redondean al valor entero más próximo. Este paso reduce muchos elementos a cero favoreciendo la compresión. El valor de Q determina los coeficientes de cuantificación. Así, se dispone de varias tablas de coeficientes de cuantificación. Una tabla de coeficientes de cuantificación para la luminancia es:
16 11 10 16 24 40 51 61
12 12 14 19 26 58 60 55
14 13 16 24 40 57 69 56
14 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99
En el cuarto paso se cuantifican los coeficientes de la TDC de cada bloque.
Coeficientes de cuantificación para las
componentes cromáticas:
17 18 24 47 99 99 99 99
18 21 26 66 99 99 99 99
24 26 56 99 99 99 99 99
47 66 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99
99 99 99 99 99 99 99 99
En el quinto paso se realiza una codificación sin pérdidas.
Los valores DC se codifican por diferencia con el valor del bloque previo (adyacente). Esto se hace porque dichos valores están muy correlacionados.
Los demás valores (ACij) se colocan en fila siguiendo un orden en zigzag
( AC00 , AC01 , AC10 , AC20 , AC11 , AC02 , AC03 , AC12 , AC21 , AC30 , AC40 ,……, AC77 )
para conseguir que los términos de bajas frecuencias estén juntos.
Los términos de bajas frecuencias es más probable que sean diferentes de cero. Muchos de los coeficientes de alta frecuencia serán nulos y se codificarán fácilmente mediante el código de longitud de la racha.
Los coeficientes no nulos y las longitudes de las rachas se codifican usando una codificación de Huffman o una codificación aritmética.
altas frecuencias
Cada término en la codificación por la longitud de la racha consta de tres valores: una Longitud de Racha que nos da el número de ceros que preceden al término, un Tamaño que nos da el número de bits utilizados para representar el valor del término (Tabla I) y un VALOR DEL DATO que es el valor actual del término.
TAMAÑO Rango de Valores
1 ?1, 1
2 ?3, ?2, 2, 3
3 ?7, ?6,…,?4, 4,…, 6, 7
4 ?15, ?14,…., ?7, ?8, 8, 7,…….,14, 15
Por ejemplo, en una representación con 8 bits, el valor 6 tiene como representación binaria de complemento a 1:
00000110
y su codificación del valor del dato serían los tres últimos dígitos (tamaño)
Para un valor negativo, como, por ejemplo -6, su representación binaria de complemento a 1, es
11111001
y se codificaría como 001
JPEG es un algoritmo simétrico pues la descompresión la hace con el mismo número de operaciones pero en sentido inverso
Criterios de Fidelidad de una imagen
Error cuadrático medio
Tasa señal/ruido
Página anterior | Volver al principio del trabajo | Página siguiente |