¿Las rotaciones de "Windows Photo Viewer" son sin pérdida?

58

¿Puedo rotar fotos comprimidas con pérdida que veo en Windows Photo Viewer sin preocuparme por perder aún más información por la compresión?


fuente
1
Tenga en cuenta que, hasta donde yo sé, una rotación de 90 grados (y 180, 270) no tiene pérdidas en sí misma porque es un intercambio de coordenadas x e y (otros ángulos requieren interpolación). Entonces, cualquier pérdida atribuida a la transformación proviene de la recompresión. Puede evitar este recálculo por el ahorro de la imagen transformada en un formato sin pérdida, pero eso no es claramente parte de su pregunta, así que no sugerirlo
Horatio
55
@horatio, los múltiplos de 90 grados son un caso especial para la compresión JPG, donde técnicamente es posible rotar la imagen sin un ciclo de compresión "simplemente" reorganizando los datos comprimidos. Implica eliminar y aplicar una capa de compresión sin pérdidas, por lo que el tamaño del archivo puede cambiar, pero no se requieren operaciones con pérdidas.
RBerteig
1
Creo que te entiendo, pero mi punto es que jpeg es un formato de almacenamiento en disco y no tiene ninguna relación con la calidad de las transformaciones. Es decir, aunque a menudo se habla de trabajar con jpegs, etc., aunque el archivo se muestra en la pantalla y se manipula, no es un jpeg.
Horatio
1
Hombre, SIEMPRE he querido saber la respuesta a esta pregunta. OMI deberían ser. Pero probablemente debido al estándar JPEG ... No creo que sea técnicamente posible hacer esta operación sin pérdidas.
Trevor Boyd Smith
2
El visor de imágenes de Google Picasa NO tiene pérdidas. Pero hace trampa. No gira la imagen. solo marca en metadatos "mostrar esta imagen rotada".
Trevor Boyd Smith

Respuestas:

64

Si las dimensiones de la imagen son múltiplos de 8 (o 16 si se usa submuestreo de croma), entonces las rotaciones son sin pérdidas. De lo contrario, no es posible rotar la imagen sin volver a calcular los bloques, es decir, volver a comprimir la imagen, que tiene pérdidas.

La razón de esto es que las imágenes jpeg se dividen en una serie de bloques de 8x8 o 16x16 que se comprimen individualmente. Los bloques incompletos solo se permiten en el borde derecho y en el borde inferior. Por lo tanto, si su imagen no es un múltiplo exacto de 8/16, contendrá bloques incompletos, que terminarán en el borde incorrecto después de la rotación.

Verifiqué la afirmación anterior utilizando la versión de Windows Photo Viewer que se incluye con Windows 7. Utilicé dos imágenes de ruido de color. Una imagen era 256x256, es decir, ambos tamaños múltiplos de 8. La otra imagen era la misma pero recortada a 253x253, es decir, ninguno de los tamaños era múltiplo de 8. Aquí están las imágenes:

256x256

253x253

Luego realicé cuatro rotaciones en sentido antihorario, cerrando el visor de fotos después de cada rotación para asegurar que la imagen se guardara en su estado girado.

256x256

253x253

No hay necesidad de realizar una resta para ver la diferencia con la imagen de 253 píxeles, ¡es notablemente más oscura y turbia!

Una diferencia en la otra imagen se ve así:

es decir, las imágenes son idénticas, las rotaciones fueron sin pérdidas.

Matt Grum
fuente
1
Sé que en el pasado, cuando hice rotaciones, me advirtió que la rotación sería con pérdidas, lo que implica que en los casos en que no se mostró la advertencia, la transformación no tuvo pérdidas, pero no lo comprobé. Tampoco recuerdo qué versión de WPV estaba usando, sin excluir la posibilidad de que MS haya cambiado la base de código, así que no, no estoy seguro.
Matt Grum
1
@ Ajustar una imagen de ruido puro es, por definición, el peor caso para JPEG (o cualquier algoritmo de compresión), ¡por eso lo elegí! Los resultados en imágenes reales se verían mejor.
Matt Grum
1
@MattGrum, muy buena demostración. ¡Espero que todos los fabricantes de cámaras digitales tengan sus tamaños de imagen en múltiplos enteros de 8!
Trevor Boyd Smith
1
@MattGrum Solía ​​trabajar en el equipo de WPV. AFAIK, (y estoy bastante seguro) su respuesta es correcta. Además, +1 para un método muy completo de probar su hipótesis
:)
@TrevorBoydSmith, cada cámara que he visto tiene dimensiones de imagen que son múltiplos de 8 o 16. La rotación no es necesariamente la razón, solo puede permitir alguna optimización de la tubería JPEG.
Mark Ransom