¿Cuáles son los pasos del método de codificación JPEG basado en DCT?
La compresión JPEG se divide en cuatro pasos:
1. Conversión y muestreo del modo de color
2. Transformación DCT; >
3. Cuantificación;
4.
ii.
1. Conversión de modo de color y muestreo El sistema de color RGB es nuestra representación de color más utilizada método. Si desea utilizar el método de compresión básico JPEG para procesar imágenes a todo color, primero debe convertir los datos de la imagen del modo de color RGB en datos del modo de color YCbCr. Y representa el brillo, Cb y Cr representan el tono y la saturación. La conversión de datos se puede realizar con la siguiente fórmula. Y = 0.2990R 0.5870G 0.1140B Cb = -0.1687R - 0.3313G 0.5000B 128 Cr = 0.5000R - 0.4187G - 0.0813B 128 El ojo humano es más sensible a los datos de baja frecuencia que a los de alta frecuencia. el ojo humano es más sensible a los datos de baja frecuencia que a los de alta frecuencia. La sensibilidad a los cambios de brillo también es mucho mayor que la sensibilidad a los cambios de color. El ojo humano también es mucho más sensible a los cambios de brillo que a los cambios de color, lo que significa que los datos del componente Y son más importantes. Dado que los datos de los componentes Cb y Cr son relativamente poco importantes, solo se puede extraer una parte de los datos para mejorar la tasa de compresión. JPEG generalmente tiene dos métodos de muestreo: YUV411 y YUV422, que representan la relación de muestreo de los datos de tres componentes de Y, Cb y Cr respectivamente.
2. Transformada DCT El nombre completo de la transformada DCT es Transformada de coseno discreta, que se refiere a convertir un conjunto de datos de intensidad de luz en datos de frecuencia para comprender los cambios de intensidad. Si los datos de alta frecuencia se modifican y luego se vuelven a convertir al formato de datos original, obviamente habrá algunas diferencias con los datos originales, pero no será fácil de identificar para el ojo humano. Al comprimir, los datos de la imagen original se dividen en una matriz de unidades de datos de 8 * 8. Por ejemplo, la primera matriz de valores de brillo es la siguiente:
JPEG utiliza la matriz de brillo completa y la matriz cromática Cb. y matriz de saturación Cr como La unidad básica se llama MCU. El número de matrices contenidas en cada MCU no debe exceder de 10. Por ejemplo, si la relación de muestreo fila-columna es 4:2:2, entonces cada MCU contendrá cuatro matrices de brillo, una matriz de croma y una matriz de saturación. Cuando los datos de la imagen se dividen en matrices de 8 * 8, cada valor debe restarse en 128 y luego integrarse en la fórmula de transformación DCT para lograr el propósito de la transformación DCT. Los valores de los datos de la imagen deben restarse en 128 porque la fórmula de transformación DCT acepta números en el rango de -128 a 127. Fórmula de transformación DCT:
x, y representa el valor de una posición de coordenadas en la matriz de datos de la imagen f(x, y) representa el valor u en la matriz de datos de la imagen, v representa el valor de la siguiente coordenada la posición en la matriz de transformación DCT F(u, v) representa el valor u=0 y v=0 de la siguiente posición de coordenadas de la matriz de transformación DCT c(u)c(v)=1/1.414 ugt o vgt; 0 c(u)c(v) =1 Los datos después de pasar por la matriz de transformación DCT naturalmente tienen varios coeficientes de frecuencia. Estos coeficientes tienen el valor más grande de F (0, 0), que se llama DC. Los coeficientes de frecuencia son números de punto flotante positivos y negativos cercanos a 0. Se llama AC.
3. Cuantización Después de convertir los datos de la imagen en coeficientes de frecuencia, debe someterse a un procedimiento de cuantificación. Ingrese a la etapa de codificación.
La etapa de cuantificación requiere dos datos de matriz de 8 * 8, uno es un coeficiente de frecuencia dedicado al brillo y el otro es un coeficiente de frecuencia utilizado para el croma. Divida el coeficiente de frecuencia por el valor de la matriz de cuantificación y el cociente obtenido será el más cercano. Entero, es decir, se completa la cuantificación. Una vez cuantificados los coeficientes de frecuencia, los coeficientes de frecuencia se convertirán de números de punto flotante a números enteros, lo que resulta beneficioso para realizar la codificación final. Sin embargo, después de la etapa de cuantificación, todos los datos se retienen sólo como aproximaciones de números enteros, perdiendo nuevamente parte del contenido de los datos. JPEG proporciona la siguiente tabla de cuantificación:
4. Codificación La codificación Huffman no está patentada y es el método de codificación más utilizado para JPEG. La codificación Huffman normalmente la realiza una MCU completa. Al codificar, el valor DC y los 63 valores AC de cada dato de matriz utilizarán diferentes tablas de codificación Huffman, y el brillo y el croma también requieren diferentes tablas de codificación Huffman, por lo que un *** requiere cuatro tablas para completar con éxito la codificación JPEG. trabajar. La razón principal para utilizar la codificación de pulsos diferencial es que el tono de la imagen es continuo y los valores de diferencia son en su mayoría más pequeños que los valores originales. La cantidad de bits necesarios para codificar los valores de diferencia será mucho menor que la. Número de bits necesarios para codificar los valores originales. Por ejemplo, cuando la diferencia es 5, su representación binaria es 101. Si la diferencia es -5, primero cámbiela a un entero positivo 5 y luego convierta su binario a complemento a 1. El llamado complemento a 1 significa que si el valor de cada Bit es 0, se cambia a 1; si el Bit es 1, se cambia a 0. La cantidad de dígitos que se deben reservar para una diferencia de 5 dígitos es 3. La siguiente tabla enumera la cantidad de dígitos que se deben reservar para una diferencia de 5 dígitos y el contenido que se debe controlar con una diferencia de 5 dígitos.
Además, agregue algunas diferencias del código Huffman a la diferencia frontal. Por ejemplo, si la diferencia de brillo es 5 (101) y el número de dígitos es 3, entonces el valor del código Huffman debe ser 100. Los dos juntos son 100101. Las dos tablas siguientes son tablas de codificación para la diferencia de brillo y la diferencia de croma CC, respectivamente. Según el contenido de estas dos tablas, se puede agregar el valor del código Huffman de la diferencia de voltaje de CC para completar la codificación de la energía de CC.
Codificación de CA La codificación de CA es ligeramente diferente de la codificación de CC Antes de la codificación de CA, los 63 valores de CA primero deben organizarse en el orden que muestran las flechas en la figura siguiente, es decir, en forma de ". disposición en "zigzag".
Después de organizar los 63 valores de AC, convierta el coeficiente de AC en un símbolo intermedio. El símbolo intermedio se representa como RRRR/SSSSS se refiere al valor de AC antes del primer valor de AC distinto de cero. Número, SSSSS se refiere a la cantidad de bits requeridos para el valor de CA. El rango del coeficiente de CA se compara con la cantidad de bits de diferencia de CC correspondientes a SSSSS y la diferencia de contenido similar en la tabla. Si el número de 0 consecutivos es mayor que 15, se usa 15/0 para representar 16 0 consecutivos. 15/0 se llama ZRL (longitud cero), (0/0) se llama EOB (Enel de bloque), que se usa. para representar el resto Los coeficientes de cambio son todos iguales a 0. Utilizando el valor del símbolo medio como valor de índice, el valor del código Huffman correspondiente se puede encontrar en la tabla de códigos de CA correspondiente y luego compararlo con el número de bits diferencial de CC y la tabla de comparación de contenido diferencial. Encuentre el valor del código Huffman en la tabla de códigos de CA correspondiente y luego conéctelo al valor de CA. Por ejemplo, para un grupo de símbolos intermedios con un brillo de 5/3 y un valor AC de 4, primero use 5/3 como valor de índice para encontrar el valor del código Huffman de 1111111110011110 de la tabla de códigos Huffman con un brillo de AC. Luego agregue El 100 (4) original es el código Huffman 1111111110011110100 usado para obtener [5, 4] [5, 4] significa que el valor AC de 4 está precedido por 5 0. Dado que las tablas de codificación de Huffman para brillo AC y croma AC son relativamente largas, se omiten aquí. Aquellos que estén interesados pueden consultar los libros relevantes. Después de implementar los cuatro pasos anteriores, se completa la compresión JPEG de la imagen.
Referencias [1] Lin Fuzong, "Formato de archivo de imagen (Parte 1) - Programación de Windows", Tsinghua University Press, 1996 [2] Li Zhenhui y Li Ren, "Explorando los misterios de los archivos de imagen", Tsinghua University Press, 1996 [3 ] "Estándar de compresión de datos estáticos JPEG" traducido por Lai Hongsong y Cheng Shi, Academy of Sciences Press, 1996
Espero que sea útil para todos
.