Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo analizar y procesar el flujo de datos de imágenes en formato JPEG? ¿Cuáles son los procesos y algoritmos?

¿Cómo analizar y procesar el flujo de datos de imágenes en formato JPEG? ¿Cuáles son los procesos y algoritmos?

JPEG (Joint Photographic Experts Group) es un grupo de expertos compuesto conjuntamente por ISO e IEC. Es responsable de formular estándares de codificación y compresión de datos de imágenes digitales estáticas. El algoritmo desarrollado por este grupo de expertos se denomina algoritmo JPEG. se ha convertido en un estándar aceptado internacionalmente, por lo que también se le llama estándar JPEG. JPEG es un estándar de compresión de datos de imágenes fijas ampliamente aplicable que se puede utilizar tanto para imágenes en escala de grises como en color.

El grupo de expertos en JPEG ha desarrollado dos algoritmos de compresión básicos: uno es un algoritmo de compresión con pérdida basado en la transformada de coseno discreta (DCT) y el otro se basa en tecnología de predicción basada en un algoritmo de compresión sin pérdidas. Cuando se utiliza un algoritmo de compresión con pérdida, cuando la relación de compresión es 25:1, la imagen restaurada después de la compresión se compara con la imagen original. Es difícil para los expertos en imágenes encontrar la diferencia entre ellas, por lo que se usa ampliamente. Por ejemplo, en la tecnología de compresión de imágenes de televisión V-CD y DVD-Video, el algoritmo de compresión con pérdida de JPEG se utiliza para cancelar datos redundantes en la dirección espacial. Para mejorar aún más la relación de compresión y garantizar la calidad de la imagen, el grupo de expertos JPEG ha estado formulando el estándar JPEG 2000 (JP 2000 para abreviar) en los últimos años, que utilizará el algoritmo de transformación wavelet (wavelet).

La compresión JPEG es una compresión con pérdida, que aprovecha las características del sistema de perspectiva humana y utiliza una combinación de cuantificación y codificación de compresión sin pérdidas para eliminar la información redundante de la perspectiva y la información redundante de los datos en sí. La codificación de compresión se divide aproximadamente en tres pasos:

1. Utilice la transformación de coseno discreta directa (FDCT) para transformar la imagen representada en el dominio espacial en la imagen representada en el dominio de frecuencia.

2. Utilice una función de ponderación para cuantificar los coeficientes DCT. Esta función de ponderación es óptima para el sistema visual humano.

3. Utilice el codificador de longitud de palabra variable Huffman para codificar los coeficientes cuantificados.

El proceso de decodificación o descompresión es exactamente lo contrario al proceso de codificación por compresión.

El algoritmo JPEG no tiene nada que ver con el espacio de color, por lo que la "transformación de RGB a YUV" y la "transformación de YUV a RGB" no están incluidas en el algoritmo JPEG. La imagen en color procesada por el algoritmo JPEG es una imagen de componente de color independiente, por lo que puede comprimir datos de diferentes espacios de color, como RGB, YCbCr y CMYK.

Los principales pasos de cálculo del algoritmo de codificación de compresión JPEG son los siguientes:

1.

2. Cuantización.

3.Codificación en zigzag (escaneo en zigzag).

4. Utilice modulación de código de pulso diferencial (DPCM) para codificar el coeficiente DC (DC).

5. Utilice la codificación de longitud de ejecución (RLE) para codificar el coeficiente AC (AC).

6. Codificación entropía.

2. Cuantización

La cuantización consiste en cuantificar los coeficientes de frecuencia después de la transformación FDCT. El propósito de la cuantificación es reducir la magnitud de los coeficientes distintos de "0" y aumentar el número de coeficientes con valor "0". La cuantificación es la principal causa de degradación de la calidad de la imagen.

Para los algoritmos de compresión con pérdida, el algoritmo JPEG utiliza un cuantificador uniforme para la cuantificación. El paso de cuantificación se determina de acuerdo con la posición del coeficiente y el valor de tono de cada componente de color. Debido a que el ojo humano es más sensible a las señales de brillo que a las señales de diferencia de color, se utilizan dos tablas de cuantificación: valores de cuantificación de brillo y valores de cuantificación de diferencia de color.

Además, dado que el ojo humano es más sensible a las imágenes con componentes de baja frecuencia que a las imágenes con componentes de alta frecuencia, el paso de cuantificación en la esquina superior izquierda de la figura es menor que el paso de cuantificación en la esquina inferior derecha.

3. Disposición en zigzag

Los coeficientes cuantificados deben reorganizarse para aumentar el número de coeficientes "0" consecutivos, que es la longitud de ejecución de "0". está dispuesto en forma de Z, como se muestra en la Figura 5-17. Esto convierte una matriz de 8 - 8 en un vector de 1 - 64, con los coeficientes de frecuencia más bajos colocados en la parte superior del vector.

4. Codificación de coeficientes DC

8? Los coeficientes DC obtenidos después de la transformación DCT de 8 bloques de imágenes tienen dos características: una es que el valor numérico del coeficiente es relativamente grande. y la otra es que el coeficiente es relativamente grande. Los valores del coeficiente DC de 8-8 bloques de imágenes adyacentes no cambian mucho. De acuerdo con esta característica, el algoritmo JPEG utiliza tecnología de codificación de modulación de pulso diferencial (DPCM) para codificar la diferencia (Delta) de coeficientes DC cuantificados entre bloques de imágenes adyacentes,

Delta=DC(0, 0 )k- DC(0, 0)k-1 ......... (5-5)

5. Codificación de coeficientes AC

Características de los coeficientes AC cuantificados Hay Hay muchos coeficientes "0" contenidos en el vector 1? 64, y muchos "0" son consecutivos, por lo que se codifican utilizando una codificación de longitud de ejecución (RLE) muy simple e intuitiva.

JPEG utiliza los 4 bits superiores de 1 byte para representar el número de "0" consecutivos y utiliza los 4 bits inferiores para representar el número de bits necesarios para codificar el siguiente coeficiente distinto de "0". , seguido del valor del coeficiente AC cuantificado.

6. Codificación de entropía

La codificación de entropía también se puede utilizar para comprimir aún más los coeficientes DC después de la codificación DPCM y los coeficientes AC después de la codificación RLE.

En el algoritmo de compresión con pérdida JPEG, se utiliza un codificador Huffman para reducir la entropía. La razón para utilizar el codificador Huffman es que se puede codificar mediante un método de tabla de búsqueda muy simple. Al comprimir símbolos de datos, el codificador Huffman asigna códigos más cortos a los símbolos que aparecen con más frecuencia y asigna códigos más largos a los símbolos que aparecen con menos frecuencia. Esta tabla de códigos Huffman de longitud variable se puede definir de antemano.