Red de conocimientos turísticos - Lugares de interés turístico - ¿Existe alguna diferencia entre comprimir jpg al 85% y al 100%?

¿Existe alguna diferencia entre comprimir jpg al 85% y al 100%?

Puedes ver el principio de compresión a continuación

Tu Nokia logra la compresión durante la cuantificación y codificación. Los primeros dos pasos no cambian en tu teléfono móvil. Lo único es que al guardar será más pequeño y faltarán píxeles. La tasa de compresión del 80% no es fácil de ver con el ojo humano, pero si desea imprimir, aún debe hacerlo sin compresión para un proceso determinado, como si está revelando una fotografía de gran tamaño de 20 pulgadas.

El siguiente es el principio de la compresión JPG

La compresión JPEG se implementa en cuatro pasos:

1. Conversión y muestreo del modo de color

<. p>2 Transformación .DCT;

3. Cuantización;

4.

2.

1. Conversión y muestreo del modo de color El sistema de color RGB es nuestra forma más utilizada de expresar el color. JPEG utiliza el sistema de color YCbCr. 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 completar mediante la siguiente fórmula de cálculo. 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 tiene una mayor sensibilidad a los datos de baja frecuencia que a los de alta -Datos de frecuencia, de hecho, los ojos humanos son mucho más sensibles 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, sólo se puede procesar una parte de los datos. para aumentar la relación de compresión. JPEG generalmente tiene dos métodos de muestreo: YUV411 y YUV422, que representan la relación de muestreo de datos de los tres componentes Y, Cb y Cr.

2. Transformada DCT El nombre completo de transformada DCT es Transformada Coseno Discreta, que se refiere a convertir un conjunto de datos de intensidad de luz en datos de frecuencia para conocer los cambios de intensidad. Si los datos de alta frecuencia se modifican y luego se vuelven a convertir al formato original, obviamente serán algo diferentes de los datos originales, pero no es fácil para los ojos humanos reconocerlos. Al comprimir, los datos de la imagen original se dividen en una matriz de unidades de datos de 8*8. Por ejemplo, el contenido de la primera matriz de valores de brillo es el siguiente:

JPEG combina toda la matriz de brillo con. la matriz de croma Cb, la matriz de saturación Cr y la visual es una unidad básica llamada MCU. El número de matrices contenidas en cada MCU no excederá de 10. Por ejemplo, si la proporción de muestreo de filas y columnas es 4:2:2, cada MCU contendrá cuatro matrices de brillo, una matriz de croma y una matriz de saturación. Después de dividir los datos de la imagen en una matriz de 8 * 8, cada valor debe restarse en 128 y luego insertarse en la fórmula de transformación DCT uno por uno para lograr el propósito de la transformación DCT. El valor de los datos de la imagen se debe restar en 128 porque la fórmula de conversión DCT acepta números en el rango de -128 a +127. Fórmula de transformación DCT:

x, y representa la posición de coordenadas de un determinado valor en la matriz de datos de la imagen f (x, y) representa varios valores en la matriz de datos de la imagen u, v representa un cierto valor en la matriz después de la transformación DCT La posición de coordenadas F(u,v) de un valor representa un cierto valor en la matriz después de la transformación DCT u=0 y v=0 c(u)c(v)=1/1.414 u >0 o v>0 c(u )c(v)=1 Los números naturales de los datos matriciales después de la transformación DCT son coeficientes de frecuencia. Estos coeficientes tienen el valor más grande de F (0, 0), que se llama DC. Los 63 coeficientes de frecuencia restantes están en su mayoría cerca de 0. Los números de punto flotante positivos y negativos se denominan colectivamente AC.

3. Cuantización Después de que los datos de la imagen se convierten en coeficientes de frecuencia, deben someterse a un procedimiento de cuantificación antes de ingresar a la etapa de codificación. La etapa de cuantificación requiere dos datos de matriz de 8*8. Uno es el coeficiente de frecuencia que se ocupa específicamente del brillo y el otro es el coeficiente de frecuencia para el croma. Divida el coeficiente de frecuencia por el valor de la matriz de cuantificación para obtener el número entero más cercano al cociente. , es decir, cuantificación completa. Una vez cuantificado el coeficiente de frecuencia, el coeficiente de frecuencia se convierte de un número de coma flotante a un número entero, lo que facilita la codificación final. Sin embargo, después de la etapa de cuantificación, todos los datos solo conservan aproximaciones de números enteros y parte del contenido de los datos se pierde nuevamente. La tabla de cuantificación proporcionada por JPEG es la siguiente:

4. Convertido en el método de codificación más popular de JPEG, la codificación Huffman generalmente se realiza con 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 respectivamente, y el brillo y el croma también requieren diferentes tablas de codificación Huffman, por lo que se necesitan cuatro tablas de codificación a la vez. La codificación JPEG completa funciona sin problemas. . Codificación DC DC es un método de codificación diferencial que utiliza modulación de codificación de pulsos diferenciales, es decir, para la codificación se obtiene la diferencia entre cada valor DC y el valor DC anterior en el mismo componente de imagen.

La razón principal por la que DC utiliza codificación de pulsos de diferencia es que en imágenes de tonos continuos, 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á menor que la cantidad de bits. Se requiere codificar los valores originales. Mucho menos. Por ejemplo, si 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 representación binaria en complemento de 1. El llamado complemento de 1 significa que si el valor de cada Bit es 0, se cambia a 1; si el Bit es 1, se cambia a 0. El número de bits que se deben retener para el valor de diferencia 5 es 3. La siguiente tabla enumera la comparación entre el número de bits que se deben retener para el valor de diferencia y el contenido del valor de diferencia.

Agregue algunos valores de código Huffman diferentes al principio de la diferencia. 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. Ambos cuando están conectados entre sí son 100101. Las dos tablas siguientes son tablas de codificación para diferencias de brillo y croma de CC, respectivamente. Según el contenido de estas dos tablas, el valor del código Huffman se puede agregar al valor de diferencia de DC para completar el trabajo de codificación de DC.

Codificación AC El método de codificación AC es ligeramente diferente al de DC. Antes de la codificación AC, los 63 valores AC primero deben ordenarse en Zig-zag, es decir, concatenarse en el orden indicado por las flechas en. la figura siguiente.

Después de organizar 63 valores de AC, convierta los coeficientes de AC en símbolos intermedios. Los símbolos intermedios se representan como RRRR/SSSS se refiere al número de AC con un valor de 0 antes del no-. cero AC. SSSS se refiere al número de bits requeridos para el valor AC. La relación correspondiente entre el rango del coeficiente AC y el SSSS es similar a la tabla de comparación entre el número de bits de diferencia DC y el contenido de diferencia. Si el número de 0 AC consecutivos es mayor que 15, 15/0 se usa para representar 16 0 consecutivos, 15/0 se llama ZRL (Longitud de ron cero) y (0/0) se llama EOB (Enel of Block). se utiliza para indicar que los coeficientes AC restantes son todos iguales a 0. Utilice el valor del símbolo intermedio como valor de índice, busque el valor del código Huffman apropiado en la tabla de codificación AC correspondiente y luego conéctelo al valor AC. Por ejemplo, el símbolo intermedio de un determinado grupo de brillo es 5/3 y el valor AC es 4. Primero, use 5/3 como valor de índice y encuentre el valor del código Huffman 1111111110011110 de la tabla de codificación Huffman de brillo AC, entonces agregar el 100 original (4) es el código de Huffman 1111111110011110100 usado para tomar [5, 4] [5, 4] significa que hay 5 ceros delante del valor AC de 4. Dado que las tablas de codificación de brillo AC y croma AC Huffman son relativamente largas, se omiten aquí. Aquellos que estén interesados ​​pueden consultar los libros relevantes. La implementación de los cuatro pasos anteriores completará la compresión JPEG de una 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, editores, "Exploring the Mysteries of Image Files", Tsinghua University Press, 1996 [3] "Estándar de compresión de datos fijos JPEG" traducido por Li Hongsong y Cheng Shi, Xueyuan Press, 1996