Autor Tema: Que es y como se comprime un JPG  (Leído 19626 veces)

Medyr

  • Palizas oficial
  • *
  • Mensajes: 5413
    • Apratizando
Que es y como se comprime un JPG
« on: 13 ago 2008, 17:31 pm »
Bueno, no se si va a qui, pero es donde puedo escribir, quien lo crea necesario, que lo mueva.

Formato JPG:

Bueno, pues he visto que hay división de opiniones con el JPG, entre los que lo dominan y los que lo ven como una caja negra por donde entra lo que editan con el GIMP y sale la foto que sube al foro para hacernos disfrutar. Debido a eso, pues me lio la manta a la cabeza e intenaré liaros más con el tema explicar en que consiste la cajita de marras.

Lo primero es saber lo que es, y lo más rapido.... preguntar a nuestra querida wikipedia:

Cita
JPEG (Joint Photographic Experts Group) es un algoritmo diseñado para comprimir imágenes con 24 bits de profundidad o en escala de grises. JPEG es también el formato de archivo que utiliza este algoritmo para almacenar las imágenes comprimidas. JPEG sólo trata imágenes fijas, pero existe un estándar relacionado llamado MPEG para videos. El formato de archivos JPEG se abrevia frecuentemente .jpg debido a que algunos sistemas operativos sólo aceptan tres letras de extensión.

Bien, lo mismo a alguno esto le deja totalmente igual. Por lo que vamos a ir desguazandolo por partes.

Lo primero que dice es que es un algoritmo. ¿Qué es un algoritmo?

Hay que tener claro que NO ES UN BAILE.

Un algoritmo es:

Cita
En matemáticas, ciencias de la computación, y disciplinas relacionadas, un algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema. Dado un estado inicial y una entrada, a través de pasos sucesivos y bien definidos se llega a un estado final, obteniendo una solución. Los algoritmos son objeto de estudio de la algoritmia, y su definición queda formalizada por el modelo computacional de la Máquina de Turing.


Es decir, una serie de pasos (leñe, pues que va a ser un baile) que nos lleva de un punto a otro. Es decir, la caja negra tiene cosas dentro y no nos tima, algo se hace.

Sirve para comprimir, eso es bueno, es para lo que queremos, que los tiff molan mucho pero pesan lo que no está escrito, que usa 24 bits de profundidad o escala de grises.

¿No deciamos que GIMP solo trabaja en 8 bits? Si, solo en 8 bits por canal, como trabajamos con tres canales 3 X 8 =  :? a si 24  ;-)

Bien, tenemos que tener en cuenta una cosa MUY importante:

Cita
JPEG es un algoritmo de compresión con pérdida. Esto significa que al descomprimir la imagen no obtenemos exactamente la misma imagen que teníamos antes de la compresión.

Es decir, que si abrimos un JPG, lo modificamos y lo guardamos otra vez, perdemos datos. Si continuamos este proceso una y otra vez, corromperemos la imagen, apareceran artefactos y se volverá inservible. JPG es un formato final, es para almacenar una imagen ya totalmente trabajada. Hay que tener en alguna parte el "original" de la imagen guardado en cualquier otro formato que no degrade la calidad de imagen. Esto de por si es una buena razón para disparar en RAW y no en JPG.

Bueno, tenemos que atrevernos y abrir la cajita. Y aprovechando que el Pisuerga pasa por Valladolid, pues uso esta imagen que me deja el trabajo realizado:


El primer paso es cambiar el espacio de color, nuestro amado RGB pasa a ser YUV. Tenerlo claro, nos pongamos como nos pongamos, los datos del archivo de un JPG siempre esta en YUV. Bien, seguramente preguntareis que es YUV. Pues por un lado tenemos nuestro RGB, el universo de rojo (RED), verde (GREEN) y azul (BLUE). Una imagen en RGB tiene tres capas, una por color, cada pixel es la combinación de un pixel de cada capa, el cual es la representación de la proporción de ese color en la mezcla. Como hablamos de luz, la mezcla de todos los colores es blanco y la ausencia de color es negro (justo al revés que cuando jugamos de enanos con las ceras). Se puede decir que una imagen en RGB descompuesta se veria de esta manera:


Bueno, pues de este modelo cambia a YUV en el primer paso dentro de la caja negra. No os preocupeis, que tambien contamos que es YUV:

Cita
El modelo YUV define un espacio de color en términos de una componente de luminancia y dos componentes de crominancia. El modelo YUV es usado en los sistemas PAL y NTSC de difusión de televisión, el cual es el estándar en la mayoría del mundo.

El modelo YUV está más próximo al modelo humano de percepción que el estándar RGB usado en el hardware de gráficos por ordenador.

Es decir, que lo conociamos de toda la vida, pero no lo sabiamos (reconozco que me he enterado escribiendo esto).

¿Para qué cambiamos de un sistema a otro si los dos son básicamente un sistemas de 3 capas con 8 bits por capa? Pues para poder hacer trampas:

Cita
El algoritmo de compresión JPEG se basa en dos defectos visuales del ojo humano, uno es el hecho de que es mucho más sensible al cambio en la luminancia que en la crominancia, es decir, notamos más claramente los cambios de brillo que de color. El otro es que notamos con más facilidad pequeños cambios de brillo en zonas homogéneas que en zonas donde la variación es grande, por ejemplo en los bordes de los cuerpos de los objetos.

Es decir, como somos más sensibles para unas cosas que para otras, pues dejamos sin tocar la parte a la que somos más sensibles y la parte que nos da un poo más igual, pues la guarreamos. Veamos con un ejemplo como se descompone una imagen en YUV:



Pues tenemos el mismo cubo de antes, pero este podemos trastearlo. La parte de arriba, la tapa, es la luminancia, el canal Y, ese al que somos más sensibles. En este canal se guarda la información de luz. Los otros dos canales guardan la información de crominancia, la que nos da un poco más igual. El primer truco que comprime bastante la imagen corresponde al cuadratido que nos da la opción 4:2:2, o 1:1:1 en las opciones avanzadas de convertir a JPG. Con esta opción decidimos si queremos guardar toda la información (1:1:1 o 4:4:4) o queremos reducir la resolución (empequeñecer 4:2:2) la resolución de estos dos canales. La variación a 4:2:2 es bastante común y viene por defecto. Practicamente no se aprecia variación de una imagen a otra, incluso haciendo zoom sobre la misma, pero de tres canales, dos ocupan la mitad. Se combinan pixeles dentro de unos límites.

Nota: 4:0:0 es una imagen pasada a blanco y negro en luminancia, por eso ocupa mucho menos, nos comemos dos canales.

De las dos opciones de compresión, esta es el patito feo que nadie suele usar, aunque es la que más facilmente se entiende (al menos yo).


Ahora viene la parte que da alergia a muchos, las mates.

Resumiendo, se cogen cuadrados de 8X8 pixeles y se aplican una serie de ecuaciones. Si estas en este punto es que la wikipedia no te convence, por lo que lo de explicar las ecuaciones nos lo saltamos. Simplemente se le hacen unas cuantas indecencias a la pobre y tierna matriz (tranformadas de coseno y semejante obscenidades) y luego se la junta con una matriz de cuantificación. Lo importante aqui es la matriz cuantica esta. Esta matriz la define el usuario cuando juega con el valor de compresión, cuanta más compresión pides, mayor número de valores dentro de la matriz original se convierten en cero, por lo que la imagen es más pequeña. Aquí es cuando vienen los problemas:


Cita
El resultado tras la compresión, puede variar, en función de la agresividad de los divisores de la matriz de cuantización, a mayor valor de esos divisores, más coecifientes se convierten en ceros, y más se comprime la imagen. Pero mayores compresiones producen mayor ruido en la imagen, empeorando su calidad.

Aqui es cuando la podemos cagar y tenemos que andar con cuidado. Es cuando se pixeliza la imagen, cuando se ve peor, cuando aparecen artefactos....

         


Bueno, pues ya sabemos como se comprime una imagen usando el algoritmo JPG. Intentaré resolver todas las dudas que tengais.


Consejo de sabios, sed crueles con la corrección.


Más curiosidades sobre JPG:

Si realizamos un volcado a hexadecimal de un fichero JPG, siempre comenzará por FF D8 FF, digamos que es su "firma".
« Última Modificación: 14 ago 2008, 06:22 am por medyr »
"Es hora de que nos empecemos a tomar en serio la fotografía y la tratemos como una afición"
Elliott Erwitt

Maky

  • Monitor
  • Milenari@
  • *
  • Mensajes: 1635
    • [Escuela villana-Trucos Digitales]
Re: Que es y como se comprime un JPG
« Respuesta #1 on: 13 ago 2008, 19:16 pm »
Cogne Medyr! vaya currazo, cuando tenga tiempo me lo leo con detenimiento pero por lo que he leído por encima esta fenomenal, muchas gracias!  :plasplas:
"No dejes crecer la hierba en el camino de la amistad"
Mis galerias
Escuela villana-Trucos Digitales

invisible

  • Moderador
  • Palizas oficial
  • *****
  • Mensajes: 8097
    • INVItARTE
Re: Que es y como se comprime un JPG
« Respuesta #2 on: 13 ago 2008, 20:12 pm »
Prometo leérmelo mañana.
zzzzzzzzzz q:)
"Si quieres ver lo invisible, observa con atención lo visible."
                                                     Manuel Álvarez Bravo (1902-2002)

redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Que es y como se comprime un JPG
« Respuesta #3 on: 13 ago 2008, 20:49 pm »
Bueno, pues ya sabemos como se comprime una imagen usando el algoritmo JPG. Intentaré resolver todas las dudas que tengais.

Ostras si hasta creo que lo he entendido y todo...  :taclaro:  :plasplas: :plasplas: :plasplas: :plasplas:
Admiro a la gente que sabe contar historias solamente con sus fotos, porque en el fondo las fotos son como los chistes; si tienes que explicarlas es que no son buenas...


Medyr

  • Palizas oficial
  • *
  • Mensajes: 5413
    • Apratizando
Re: Que es y como se comprime un JPG
« Respuesta #4 on: 13 ago 2008, 20:53 pm »
Redy, mal vamos, que yo te ponia en el grupo de corregirme, no de entenderme  :?
"Es hora de que nos empecemos a tomar en serio la fotografía y la tratemos como una afición"
Elliott Erwitt

JoRdi

  • Palizas oficial
  • *
  • Mensajes: 10191
Re: Que es y como se comprime un JPG
« Respuesta #5 on: 14 ago 2008, 03:21 am »
Buenas,

Menuda currada te has pegado medyr :arte: :plas:

Me lo he leído todo enterito, de cabo a rabo, pero como ahora me voy a dormir y estoy algo cansado, me lo releeré durante el día de hoy, que hay algunas cosas que se me han escapado, mis neuronas que me están diciendo, duerme, duerme, duerme y no se concentran.... :)o

Saludos, JoRdi :-)

invisible

  • Moderador
  • Palizas oficial
  • *****
  • Mensajes: 8097
    • INVItARTE
Re: Que es y como se comprime un JPG
« Respuesta #6 on: 15 ago 2008, 18:46 pm »
Prometo leérmelo mañana.
zzzzzzzzzz q:)
Bueno, ya es mañana y ya me lo he leído.
Muchas gracias por la explicación; ahora me resulta mucho más comprensible el hecho de que el jotapegé es un formato final y que hay que usar como lo que es: un formato para no tocar más. q:)
Por cierto, te lo muevo a un lugar más adecuado.
"Si quieres ver lo invisible, observa con atención lo visible."
                                                     Manuel Álvarez Bravo (1902-2002)