Sind „Windows Photo Viewer“ -Rotationen verlustfrei?

58

Kann ich verlustbehaftete komprimierte Fotos drehen, die ich in Windows Photo Viewer ansehe, ohne mir Sorgen machen zu müssen, dass durch die Komprimierung noch mehr Informationen verloren gehen?


quelle
1
Beachten Sie, dass - soweit ich weiß - eine 90-Grad-Drehung (und 180, 270) an und für sich verlustfrei ist, da es sich um ein Vertauschen von x- und y-Koordinaten handelt (andere Winkel erfordern Interpolation). Jeder Verlust, der der Transformation zugeschrieben wird, ist auf die erneute Komprimierung zurückzuführen. Sie können diese Neuberechnung vermeiden, indem Sie das transformierte Bild in einem verlustfreien Format speichern, aber das gehört eindeutig nicht zu Ihrer Frage, und ich werde es nicht vorschlagen
Horatio
5
@horatio, das Vielfache von 90 Grad ist ein Sonderfall für die JPG-Komprimierung, bei der es technisch möglich ist, das Bild ohne Komprimierungszyklus zu drehen, indem die komprimierten Daten "einfach" neu angeordnet werden. Das Entfernen und Anwenden einer Schicht verlustfreier Komprimierung ist erforderlich, sodass sich die Dateigröße möglicherweise ändert, jedoch keine verlustbehafteten Vorgänge erforderlich sind.
RBerteig
1
Ich glaube, ich verstehe Sie, aber mein Punkt ist, dass JPEG ein Plattenspeicherformat ist und keinen Einfluss auf die Qualität der Transformationen selbst hat. Das heißt, obwohl man oft davon spricht, mit JPEGs usw. zu arbeiten, handelt es sich bei der Datei, die auf dem Bildschirm angezeigt und bearbeitet wird, nicht um ein JPEG.
Horatio
1
Mann, ich wollte IMMER die Antwort auf diese Frage wissen. IMO sollten sie sein. Aber höchstwahrscheinlich aufgrund des JPEG-Standards ... Ich denke nicht, dass es technisch möglich ist, diesen Vorgang verlustfrei zu machen.
Trevor Boyd Smith
2
Google Picasa Image Viewer ist verlustfrei. aber es betrügt. Das Bild wird nicht gedreht. In den Metadaten wird nur "Dieses Bild gedreht anzeigen" markiert.
Trevor Boyd Smith

Antworten:

64

Wenn die Abmessungen des Bildes ein Vielfaches von 8 sind (oder 16, wenn eine Chroma-Unterabtastung verwendet wird), sind die Rotationen verlustfrei. Andernfalls ist es nicht möglich, das Bild zu drehen, ohne die Blöcke neu zu berechnen, dh das Bild erneut zu komprimieren, was verlustbehaftet ist.

Der Grund dafür ist, dass JPEG-Bilder in eine Reihe von 8x8- oder 16x16-Blöcken aufgeteilt werden, die einzeln komprimiert werden. Unvollständige Blöcke sind nur am rechten und unteren Rand zulässig. Ist Ihr Bild also kein exaktes Vielfaches von 8/16, enthält es unvollständige Blöcke, die nach der Drehung am falschen Rand landen.

Ich habe die obige Behauptung mit der Version von Windows Photo Viewer überprüft, die mit Windows 7 geliefert wird. Ich habe zwei Bilder mit Farbrauschen verwendet. Ein Bild war 256x256, dh beide Größen Vielfache von 8. Das andere Bild war das gleiche, aber auf 253x253 beschnitten, dh keine der Größen war ein Vielfaches von 8. Hier sind die Bilder:

256 x 256

253 x 253

Ich habe dann vier Drehungen gegen den Uhrzeigersinn ausgeführt und den Photo Viewer nach jeder Drehung geschlossen, um sicherzustellen, dass das Bild im gedrehten Zustand gespeichert wurde.

256 x 256

253 x 253

Es ist keine Subtraktion erforderlich, um den Unterschied zum 253-Pixel-Bild zu erkennen. Es ist merklich dunkler und matschiger.

Ein Unterschied zum anderen Bild sieht folgendermaßen aus:

dh die Bilder sind identisch, die Rotationen waren verlustfrei.

Matt Grum
quelle
1
Ich weiß, dass ich in der Vergangenheit bei Rotationen gewarnt habe, dass die Rotation verlustbehaftet ist, was bedeutet, dass in Fällen, in denen die Warnung nicht angezeigt wurde, die Transformation verlustfrei war, ich sie jedoch nicht überprüft habe. Ich kann mich auch nicht erinnern, welche Version von WPV ich verwendet habe, ohne die Möglichkeit auszuschließen, dass MS die Codebasis geändert hat, also kann ich nicht sicher sein.
Matt Grum
1
@Tim ein Bild von reinem Rauschen ist per definitionem der schlechteste Fall für JPEG (oder einen beliebigen Komprimierungsalgorithmus), weshalb ich es gewählt habe! Ergebnisse auf realen Bildern würden besser aussehen.
Matt Grum
1
@ MattGrum, sehr coole Demo. Ich hoffe, alle Digitalkamerahersteller haben ihre Bildgrößen in ganzzahligen Vielfachen von 8!
Trevor Boyd Smith
1
@MattGrum Früher habe ich im WPV-Team gearbeitet. AFAIK, (und ich bin mir ziemlich sicher) Ihre Antwort ist richtig. +1 für eine sehr gründliche Methode, um Ihre Hypothese zu beweisen:)
Tristan
@ TrevorBoydSmith Jede Kamera, die ich gesehen habe, hat Bildabmessungen, die ein Vielfaches von 8 oder 16 sind. Die Drehung ist nicht unbedingt der Grund, sie kann nur eine Optimierung der JPEG-Pipeline ermöglichen.
Mark Lösegeld