Cuantificación (procesado de imagen)

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

La Cuantificación, involucrada en el procesamiento de imagen, es una técnica de compresión con pérdida que consiste en comprimir un rango de valores a un único valor. Cuando el número de símbolos discretos en un flujo dado se reduce, el flujo se vuelve más comprensible. Por ejemplo, reducir el número de colores requeridos para representar una imagen digital, hace posible reducir el tamaño de su archivo. Entre las aplicaciones específicas se incluyen: cuantificación de datos DTC en JPEG y DWT en JPEG 2000.

Cuantificación del color[editar]

La cuantificación del color reduce el número de colores usados en una imagen; esto es importante para visualizar imágenes en dispositivos que soportan un número limitado de colores y para eficiencia de compresión de ciertos tipos de imágenes. La mayoría de los editores de imagen y muchos sistemas operativos soportan de forma nativa la cuantificación del color. Entre los algoritmos de cuantificación de color modernos más populares se encuentran el algoritmo del color más cercano (para paletas fijas), el algoritmo Median cut, y un algoritmo basado en octrees.

Es común combinar la cuantificación de color con la interpolación aleatoria para dar la impresión de que hay un mayor número de colores y para eliminar los artefactos de franjas de color.

Cuantificación de la frecuencia para compresión de imagen[editar]

El ojo humano es bastante bueno percibiendo las pequeñas diferencias en el brillo sobre un área relativamente extensa, pero no es tan bueno distinguiendo la misma intensidad de variación de brillo de alta frecuencia. Este hecho permite reducir la cantidad de información requerida ignorando los componentes de alta frecuencia. Esto se realiza dividiendo cada componente en la matriz de frecuencias entre una constante para dicho componente, y después redondear al valor entero más cercano. Esta es la operación en la que más información se pierde de todo el proceso. Como resultado,es habitual que la mayoría de los componentes de alta frecuencia sean redondeados a cero y muchos de los componentes restantes lleguen a un valor positivo pequeño o negativo.

Como la visión humana es también más sensible a la luminancia que a la crominancia, se puede obtener más compresión trabajando sobre un espacio de colores no-RGB separando ambos canales (p.e. YCbCr) y cuantificándolos.[1]

Matrices de cuantificación[editar]

Un codec de vídeo típico funciona separando la imagen en bloques discretos (8×8 pixels en el caso de MPEG[1] ). Estos bloques pueden ser sometidos a la transformada de coseno discreta (DCT) para separar los componentes de baja y alta frecuencias tanto en la dirección horizontal como en la vertical.[1] El bloque resultante (del mismo tamaño que el bloque original) se divide por la matriz de cuantificación, y cada entrada es redondeada. Los coeficientes de la matriz de cuantificación se diseñan a menudo para mantener ciertas frecuencias en la fuente para evitar pérdidas en la calidad de la imagen. Muchos codificadores de vídeo (tales como DivX, Xvid, y 3ivx) y algoritmos de compresión estándar (tales como MPEG-2 y H.264/AVC) permiten utilizar matrices personalizadas. Alternativamente, el alcance de la reducción puede variarse multiplicando la matriz de cuantificación por un factor de escalado,el código de escalado cuantificador, antes de realizar la división.[1]

Este es un ejemplo de matriz de coeficientes DCT:


\begin{bmatrix}
 -415 & -33 & -58 &  35 &  58 & -51 & -15 & -12 \\
    5 & -34 &  49 &  18 &  27 &   1 &  -5 &   3 \\
  -46 &  14 &  80 & -35 & -50 &  19 &   7 & -18 \\
  -53 &  21 &  34 & -20 &   2 &  34 &  36 &  12 \\
    9 &  -2 &   9 &  -5 & -32 & -15 &  45 &  37 \\
   -8 &  15 & -16 &   7 &  -8 &  11 &   4 &   7 \\
   19 & -28 &  -2 & -26 &  -2 &   7 & -44 & -21 \\
   18 &  25 & -12 & -44 &  35 &  48 & -37 & -3
\end{bmatrix}

Una matriz de cuantificación común es:


\begin{bmatrix}
 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
\end{bmatrix}

Dividiendo los elementos de la matriz de coeficientes DCT con esta matriz de cuantificación, y redondeando a enteros resulta en:


\begin{bmatrix}
 -26 & -3 & -6 &  2 &  2 & -1 & 0 & 0 \\
   0 & -3 & 4 &  1 &  1 &  0 & 0 & 0 \\
  -3 &  1 &  5 & -1 & -1 &  0 & 0 & 0 \\
  -4 &  1 &  2 & -1 &  0 &  0 & 0 & 0 \\
   1 &  0 &  0 &  0 &  0 &  0 & 0 & 0 \\
   0 &  0 &  0 &  0 &  0 &  0 & 0 & 0 \\
   0 &  0 &  0 &  0 &  0 &  0 & 0 & 0 \\
   0 &  0 &  0 &  0 &  0 &  0 & 0 & 0
\end{bmatrix}

Por ejemplo, usando −415 (el coeficiente DC) y redondeando al entero más próximo:


\mathrm{round}
\left(
 \frac{-415}{16}
\right)
=
\mathrm{round}
\left(
 -25.9375
\right)
=
-26

Normalmente, este proceso dará como resultado matrices con valores principalmente en la esquina superior izquierda (baja frecuencia). Utilizando un ordenamiento zig-zag para agrupar las entradas mayores de cero y Run-length encoding, la matriz cuantificada puede ser almacenada de forma mucho más eficiente que la versión no cuantificada.[1]

Referencias[editar]

  1. a b c d e John Wiseman, Una Introducción a la Compresión de Vídeo MPEG, http://www.john-wiseman.com/technical/MPEG_tutorial.htm