¿Qué son los artefactos jpeg y qué se puede hacer al respecto?

Sé que JPEG es un algoritmo de compresión "con pérdida" que descarta información para ahorrar espacio. ¿Cuál es el impacto visual de esto? He oído hablar de "artefactos JPEG". ¿Qué aspecto tienen estos?

¿Hay situaciones en las que el mismo nivel de compresión crea más artefactos y se ve peor? ¿El contenido de la imagen importa en absoluto? ¿Qué maneja bien el algoritmo y con qué tiene problemas?

Suponiendo que JPEG sea un requisito, ¿hay alguna forma de reducir los artefactos? Si estoy subiendo a un servicio web que aplicará su propia compresión fuera de mi control, ¿hay algo que pueda hacer con la imagen por adelantado para que sobreviva mejor?

Algunas respuestas para partes de esta pregunta existen aquí: photo.stackexchange.com/questions/5317/…
Gracias @dpollit. No vi ese debido a la ortografía británica y la falta de etiquetas. Además, se trata muy específicamente de baja resolución y tamaño de archivo reducido.
Me encantaría ver algunos ejemplos a nivel de píxel (o más grandes) en las respuestas.
Lo dirigiría a mi respuesta sobre el tema que @dpollit vinculó antes, específicamente el sitio web vinculado desde allí, que tiene una gran cantidad de imágenes de muestra de todos los niveles principales de "calidad", con detalles a nivel de píxel, para una variedad de tipos. de imágenes
Me di cuenta cuando tomé una imagen de la luna y exporté el archivo a JPEG, el archivo es relativamente pequeño ya que una gran parte de la imagen es negra, exponiendo a la luna. La compresión en este caso parece funcionar mejor, ya que es capaz de eliminar de manera efectiva toda la demás información redundante negra y preocuparse por la luna.
@mattdm Me gustaría señalar que "¿Qué maneja bien el algoritmo y con qué tiene problemas?" no se aplica a todos los .jpeg. Diferentes cámaras y software (por ejemplo, convertir un RAW a .jpeg) lo manejan de manera diferente, por lo que diferentes cámaras producen resultados diferentes. Por lo tanto, es posible que no obtenga una respuesta definitiva.
@BBking: me encantaría ver una respuesta que desarrolle eso, con referencias.
+1 Porque a mí también me gustaría saber. Es solo que, supongo que es difícil saber qué está haciendo exactamente la cámara sin el código fuente, por lo tanto, sin referencias. Pero espero que alguien pueda responder lo suficientemente bien.
@BBking: aquí, sin embargo, no estoy hablando de la conversión RAW → JPEG en su conjunto, solo los artefactos introducidos por la compresión. Dado que esa compresión es estándar, no creo que haya mucho espacio para la variación aquí. (Aparte de usar ISLOW, IFASTo FLOATpara la cuantificación.)
Por supuesto. La única razón por la que mencioné RAW fue porque si tiene un programa de computadora, es posible que pueda hacer ingeniería inversa del proceso. Además, con respecto a los servicios web que comprimen imágenes, eso es más una compresión de cambio de tamaño. Una vez que tiene un tamaño de, digamos, 500 px x 750 px, no hay necesidad real de comprimirlo a una imagen con más pérdidas para ahorrar un par de kbs. Sin embargo, sigue siendo una pregunta válida. :-)
@mattdm Lo siento, olvidé preguntar. ¿Hay un servicio/sitio web en particular que tenía en mente o solo en general?
@BBking -- no. Eso es una especie de complemento a la pregunta básica, porque quería respuestas que cubrieran mucho terreno.

Respuestas (6)

Un ejemplo

Usando la foto actual de la imagen de la semana. Este es el JPEG de alta calidad:

gimp q=99

re-guardado en Gimp con calidad JPEG 80 (baja); tenga en cuenta la pérdida general de nitidez, "puntos" alrededor de los bordes de alto contraste, pérdida de detalle en áreas de bajo contraste:

gimp Q=80

y re-guardado en GIMP con calidad JPEG 30 (muy baja); tenga en cuenta los bloques evidentes de 8x8 y la pérdida severa de nitidez y detalles de color:

gimp Q=30

Tres tipos de distorsiones

JPEG tiende a introducir dos tipos de distorsiones:

  • pérdida general de nitidez y oscilaciones alrededor de los bordes de alto contraste: esto se debe a la aproximación de transiciones de intensidad con funciones suaves (cosenos); los ve como pequeños "puntos" o "halos" alrededor de los bordes; son particularmente fáciles de ver en las imágenes de texto de dibujos a mano.
  • estructura de bloqueo: la imagen se procesa por separado para cada bloque de 8x8 (o más grande en caso de reducción de resolución cromática), los bordes de los bloques se vuelven visibles con relaciones de compresión altas.
  • pérdida de detalle de color: depende de los parámetros guardados, el programa puede "reducir la resolución" agresivamente (reducir la resolución de) los canales de cromaticidad; rara vez es un problema para la fotografía natural.

La estructura de bloques visibles y los halos alrededor de los bordes generalmente se denominan artefactos JPEG. Hagamos zoom en nuestro ejemplo para verlos mejor. De izquierda a derecha, un recorte de las imágenes originales, JPEG Q80 y JPEG Q30. Marqué artefactos en verde (círculos para halos y puntos para bloques de 8x8):

comparación de tres vías

Como cualquier pérdida de información, en realidad no se puede recuperar. La nitidez puede ayudar a recuperar el contraste de los bordes perdidos, pero hace que los "halos" sean más evidentes; La eliminación de ruido puede ayudar a eliminar los "halos", pero reduce aún más la nitidez. Si la estructura del bloque es visible, probablemente sea demasiado tarde. Simplemente mantenga las imágenes originales de alta resolución y alta calidad y no las sobrescriba.

Estrategias de hospedaje

Si controla los parámetros de compresión JPEG y desea maximizar la calidad de la imagen:

  • mantenga la relación de compresión lo más baja posible (utilice configuraciones de alta calidad)
  • Considere reducir la resolución de los canales de cromaticidad (puede ser casi imperceptible para algunas imágenes y permite una relación de compresión más baja en el canal de luminosidad dada la misma restricción de tamaño de archivo)
  • Considere usar la transformación de coseno discreta de punto flotante (puede aumentar la precisión de la transformación, pero guardar el archivo llevará más tiempo)
  • considere usar una resolución más baja en lugar de una relación de compresión más alta (dado el mismo límite en el tamaño del archivo)

Si carga a un servicio de terceros y no controla los parámetros de compresión, no puede hacer mucho al respecto:

  • elija un servicio que se sepa que prefiere JPEG de alta calidad (Flickr, SmugMug, 23hq, 500px) a los servicios que se sabe que se comprimen en exceso para ahorrar tráfico (Picasa, Imgur, Dropbox); normalmente obtienes lo que pagas.
  • intente cambiar el tamaño de las fotos usted mismo y cargue el tamaño correcto (algunos servicios lo volverán a comprimir de todos modos, algunos pueden servir su archivo como cargado)

JPEG en realidad usa dos tipos de compresión, una con pérdida y otra sin pérdida. La compresión sin pérdidas no causa artefactos, por lo que podemos ignorar esa parte. El tipo particular de compresión con pérdida en JPEG, llamado transformada de coseno discreta para los knurds matemáticos, permite un equilibrio entre la relación de compresión y la fidelidad. La mayoría del software muestra esto como un valor de "calidad", por lo general en la escala de 0 a 100, siendo 100 una pérdida efectiva nula o muy pequeña y las cosas van hacia abajo a partir de ahí.

Se adoptó este algoritmo de compresión particular porque es bueno para descartar el tipo de cosas que el sistema visual humano no nota tanto como otros componentes de la escena. Esta es en parte la razón por la cual las imágenes que se ven bastante decentes pueden tener índices de compresión impresionantes. Esta es también la razón por la que funciona bien en fotografías reales de tonos continuos y no tan bien en imágenes sintéticas y dibujos lineales.

Aquí hay una región de 200 x 300 de una fotografía más grande con los píxeles replicados 2x para verlos mejor. Esto usó la compresión JPEG "calidad" 100:

Calidad 80, 79 % de reducción del tamaño del archivo:

Calidad 60, 86% de reducción:

Calidad 40, 90% de reducción:

Las reducciones de tamaño de archivo se basaron en compresiones JPEG de todo el archivo, de modo que las estructuras de encabezado y otros gastos generales fijos fueran una pequeña parte de los datos.

Tenga en cuenta que tiene que buscar para encontrar artefactos en la segunda imagen, aunque se descartaron casi 4/5 de la información original. Los artefactos de compresión JPEG suelen ser más visibles en los bordes afilados y en las áreas planas que cambian lentamente. Dado que el arte lineal tiene todos los bordes afilados, la compresión JPEG no es apropiada para eso.

Puede ver que los artefactos de compresión empeoran progresivamente con relaciones de compresión más altas. Sin embargo, tenga en cuenta que la imagen inferior retiene una cantidad sorprendente de información visual por haber eliminado 9/10 de su información sin procesar.

Los tipos de artefactos característicos de la compresión con pérdida JPEG son "bloqueos" en áreas planas que cambian lentamente y "suciedad" alrededor de los bordes de alto contraste. Por ejemplo, vea el área inferior derecha en la imagen de arriba. Eso contiene un fondo desenfocado, por lo que los valores están cambiando lentamente. El bloqueo es bastante evidente. Para ver ejemplos de "suciedad", mire alrededor del cuerno izquierdo de la cabra. Estos dos tipos de artefactos suelen ser una pista sólida de que se utilizó la compresión JPEG. También búsquelos en las otras imágenes de arriba para tener una idea de cómo se ven cuando comienzan a aparecer, y qué tipo de relación de compresión podría tolerar en diversas circunstancias.

La pérdida visible no proviene de la propia DCT, sino de la cuantificación de los coeficientes de la DCT después de la transformación.

La compresión JPG se realiza en bloques de píxeles. En una imagen JPG altamente comprimida, se pueden ver los bordes de esos bloques: en la imagen original, dos píxeles pueden haber estado muy cerca en brillo y color, pero si están en bloques diferentes, luego de la compresión y descompresión (cuando se ven) cada uno de ellos sus valores pueden diferir del original, por lo que pierde esa mezcla gradual y comienza a ver este "bloqueo".

ingrese la descripción de la imagen aquí

Aquí hay un ejemplo típico en un cielo: JPG guardado con calidad 0.

Si lo subieron a un sitio que usa compresión JPG, puede obtener mejores resultados haciendo dos cosas (deberá experimentar con el sitio para ver qué funciona):

  • cambie el tamaño de las dimensiones de su imagen para que esté dentro de la altura/anchura máxima permitida por el sitio, para que el sitio web no cambie el tamaño de sus imágenes por usted

  • haga su propia compresión para obtener un tamaño de archivo más pequeño con buena calidad. Dependiendo de cómo funcione el sitio, si la imagen ya es lo suficientemente pequeña, es posible que no se comprima más, o incluso si lo hace, puede tener un efecto menor.

En cuanto a la eliminación de artefactos JPG de una imagen, los artefactos JPG pueden tener un aspecto similar al ruido normal del sensor. El software de reducción de ruido tendrá cierto éxito en la eliminación de algunos artefactos JPG menores, pero con pérdida de detalles.

ruido como artefactos jpg

Aquí hay un ejemplo con una calidad JPG del 50%, con bloques, pero también píxeles más oscuros y más brillantes que se asemejan al ruido.

Topaz Labs tiene un producto llamado DeJpeg , que actúa específicamente sobre artefactos JPG. Hace un buen trabajo de esto sin demasiada pérdida de detalles. El complemento también puede hacer algo de nitidez y reducción general de ruido. El complemento es compatible con Photoshop CS, Photoshop Elements y Paint Shop Pro. No creo que funcione con Lightroom o Aperture.

¿Puede dar un ejemplo de un artefacto jpeg que parezca similar al ruido del sensor?
He agregado uno de un cielo oscuro guardado al 50% de calidad JPG.

Para los sitios web que comprimen archivos hasta que alcanzan un determinado tamaño de archivo objetivo, existe una manera de mejorar la calidad de las imágenes en determinadas circunstancias.

JPEG funciona convirtiendo la imagen en una [serie de] representaciones de espacio de frecuencias (donde X e Y representan frecuencias horizontales y verticales, y "brillo" representa la amplitud de la frecuencia). Las frecuencias por debajo de cierta amplitud se ignoran, lo que reduce la cantidad de datos que se almacenan y se logra la compresión.

El ruido tiene un amplio espectro de frecuencias que JPEG no puede comprimir. Es por eso que puede tener dos imágenes, aplicar el mismo nivel de compresión y obtener dos tamaños de archivo diferentes después de la compresión JPEG.

Si toma su imagen y desenfoca intencionalmente las áreas de fondo sin importancia, reduce la cantidad total de información y logra una compresión mucho mayor de estas áreas, lo que le deja más kilobytes para codificar las áreas donde el detalle es importante. Esto funciona especialmente bien con imágenes en las que el fondo ya está desenfocado.

Aquí hay un ejemplo de un jpeg ampliado:

ingrese la descripción de la imagen aquí

Imagen del usuario de Wikipedia FelixH. Esta imagen tiene la licencia Creative Commons Attribution-Share Alike 3.0 Unported.

En esta imagen se pueden ver claramente los llamados "artefactos" en el área azul. Observe cómo la imagen parece estar dividida en bloques y los límites de los bloques no coinciden.

Hay una serie de cosas que se pueden hacer para evitar o reducir este problema:

  • La más obvia: no uses jpeg. Es posible que desee trabajar con sus imágenes utilizando un formato de compresión sin pérdidas, como RAW, PNG o TIFF sin pérdidas. Solo baja a jpeg en el último paso, cuando desea cargar la imagen en la web, correo electrónico, etc.

  • El formato jpeg permite la configuración del nivel de compresión. Puede obtener menos artefactos si lo desea, pero el archivo será más grande.

  • Evite volver a guardar un jpeg una y otra vez, ya que cada generación degrada aún más la calidad.

Incluso RAW y PNG pueden tener artefactos debido a la cuantificación de píxeles. Siempre que no cambie ningún valor, es solo un efecto único y no se producen más pérdidas debido a la digitalización. Sin embargo, si cambia los valores en cualquier paso, como oscurecer o iluminar una escena, o mezclarlos con otros valores, etc., los cambios de valor pueden generar nuevos artefactos en el siguiente guardado (incluso sin compresión) debido a la cuantificación (posiblemente una forma de compresión) para guardar la nueva imagen calculada. Para minimizar estos efectos, utilice la mayor cantidad de bits posible en cada paso y mantenga todo el flujo de trabajo.
@Skaperen: estás confundiendo dos cosas diferentes aquí. Esta pregunta es sobre la pérdida de detalles debido a la compresión jpeg. Lo que está describiendo es la pérdida de detalles introducida por ciertos algoritmos de procesamiento de imágenes. Lo que está describiendo es correcto, pero no está relacionado con los formatos de imagen en absoluto, por lo que decir que RAW y PNG están asociados con la cuantificación de píxeles es incorrecto, esos formatos de archivo no causan ninguna pérdida de calidad.
Esta imagen también demuestra otro problema, por cierto: muestra un halo de máscara de enfoque.

Los artefactos son los efectos secundarios no deseados del procesamiento de una imagen. En este caso, resultan de la forma en que el algoritmo JPEG comprime los datos.

En general, la gente quiere poder almacenar fotos digitalmente, sin usar demasiado espacio de almacenamiento. Como resultado, la mayoría de las fotos se almacenan en formato JPEG. Este es un formato que comprime los datos que componen la imagen de una manera que intenta preservar la mayor cantidad de detalles posible. El nivel de compresión se puede cambiar cuando se crea el archivo. Sin embargo, es un algoritmo con "pérdida", lo que significa que descarta algunos datos: no es posible volver de un archivo JPEG comprimido a los datos originales.

Esta pérdida de datos se produce a expensas de la calidad de la imagen. La compresión está diseñada para crear un impacto mínimo en la imagen general, pero puede notarse a niveles altos de compresión.

Los artefactos JPEG comúnmente se ven como secciones de color en bloques. Se pueden ver donde hay un sutil cambio de color graduado en un gran lavado de color, por ejemplo, en un cielo azul o una escena con niebla. Los artefactos parecen contornos irregulares de un color específico en lugar de una mezcla suave.

Con escenas más comprimidas, también se pueden ver artefactos alrededor de los bordes de los sujetos, por ejemplo, las ramas de un árbol contra un cielo claro. Estos parecen bloques con manchas que rodean al sujeto.

El mejor enfoque para reducir los artefactos es:

  1. Mantenga siempre la imagen original: no guarde un archivo JPEG comprimido, luego vuelva a abrirlo más tarde y vuelva a guardarlo. Para ver un ejemplo extremo de esto, vea Generation Loss , un video que muestra una imagen recomprimida 600 veces.
  2. Guarde con la mayor calidad posible, dadas las restricciones de tamaño de archivo.
  3. Evite el uso de servicios que vuelvan a comprimir severamente sus imágenes; si es necesario, alójelas en otro lugar y vincúlelas directamente.

Para obtener más información, consulte http://photo.net/learn/jpeg/