Als Speicherformat TIF oder JPG nehmen?

das nur geladen und unverändert mit gleicher Qualitätseinstellung gespeichert wird?

???

Genau das hat er doch gemacht und nachgewiesen, daß dabei die Änderung der Speichergröße des Files gegen Null geht auch bei großen Kompressionsraten. Ob damit das File bei nicht mehr verringerter Größe im "Endstadium" der Versuchsreihen, Christoph würde sagen Asymptotennäherung, auch strukturell unverändert bleibt, ist nicht erwiesen, aber man darf wohl davon ausgehen.
Entnehmen kann man, daß Laden und anschließendes Speichern ohne dazwischenliegende Bildveränderung nur einen kleinen substantiellen Verlust bedeuten, der mit zunehmender Wiederholung geringer wird.
Leider ist die ganze Sache nicht so recht praxisrelevant, denn in der überwiegenden Mehrzahl der Fälle wird dazwischen eine wie auch immer geartete Bearbeitung liegen. Interessant wäre mal eine Reihe mit eingebauten Bearbeitungsschritten, der Vereinfachung halber z.B. wechselndes Weichzeichnen und Schärfen zu sehen.

Gruß Jochen
 
Hallo Jochen!

Ich kann aus den langen Artikeln auch viel rauslesen. Ich will aber fürs Forum eine klare saubere kurze Zusammenfassung à la 1. 2. 3. ... anfängerverständlich halt.

Was schön öfters in anderen Foren die Frage war: Nur Rote Augen entfernen und dann speichern, ob das nicht verlustfrei geht. Man könnte nun nach obigen Tests den Verlust vielleicht recht genau quantifizieren.

Gruß,

Ralf
 
Hallo, Ralf

ich fürchte, so einfach ist die Sache gar nicht. Habe gerade im "manuellen Kleinversuch" herausgefunden, daß gewisse Bearbeitungsschritte anscheinend eher größere JPG´s erzeugen als vorher geladen wurden. Das hängt sicher davon ab, wie rationell der Komprimierungsalgorithmus mit der bei der Bearbeitung erzeugten Bildstruktur fertig wird. Sehr interessant, aber wahrscheinlich schlecht in einem Schema darzustellen. Sehen wir mal weiter.

Gruß Jochen
 
Hallo!

Bevor es zu akademisch (fruchtlos und vor allem mathematisch, denn ich bin von Hause aus Philologe) wird, bitte ganz einfach die Regeln:

1) JPEG aus der Kamera kann dann als JPEG gespeichert werden, wenn danach keine Bearbeitungsschritte mehr erfolgen!

2) JPEG aus der Kamera soll, falls in mehreren Etappen Bearbeitungen möglich sein sollen, in einem verlustfreien Format (TIFF) abgelegt werden, denn jedes Speichern nach Veränderung bringt Verlust (nicht unbedingt in Bytes, aber an Information. Auch die beliebten Blockartefakte brauchen schließlich Platz.

Gruß

Günter
 
Hallo Günter,

auch nicht am Samstagnachmittag auf dem Sofa, wie wir das als reife Herren tun sollten :)?

JPEG aus der Kamera kann dann als JPEG gespeichert werden, wenn danach keine Bearbeitungsschritte mehr erfolgen!

Die JPG-Rechnung ist als Algorithmus definiert, aber nicht die programmtechnische Ausführung. Ich halte es durchaus für möglich, daß unter beengten Kameraverhältnissen geringfügig anders komprimiert wird, als auf dem PC. Dann wäre möglicherweise das erste Abspeichern mit Neukompression auch ohne vorherige Bearbeitung nicht ohne negative Folgen.

Gruß Jochen
 
Hallo!

Muss mich doch ein Ingenieur bei einer sprachlichen Unsauberkeit erwischen!...

Selbstverständlich meinte ich bei Speichern Verschieben bzw. Kopieren! Denn dabei wird die Datei ja nicht angetastet, sondern nur transportiert. Sorry!

Gruß

Günter
 
Hallo zusammen,

nachdem nun klar sein dürfte, was JPEG eigentlich ist und macht, wie gewünscht, meine Empfehlung und Hinweise für die Bearbeitung von JPG-Bilder z.B. von einer Digicam:

1. Qualitätsfaktor ermitteln, entweder mit Skript oder durch Ausprobieren und Vergleich
der Dateigrößen. Das ist natürlich nur ein Anhaltspunkt, da die genaue Bitverteilung vom
konkreten Algorithmus abhängt und da gibt es Unterschiede. Mein Ixus 400 im Fein-Modus
erzeugt Dateien, die etwa der 98%-Einstellung von FF entsprechen.

2. Wiederholtes Speichern in JPG beeinträchtigt nicht die Bildqualität unveränderter Teile.

3. Neue Details die bei der Bearbeitung eingefügt werden, werden entsprechend der
eingestellten Qualitätsstufe verlustbehaftet komprimiert. Wenn man nicht darauf aus ist,
dass diese Details und Veränderungen (z.B. nicht-mehr rote Augen) eine weit bessere
Qualität haben, als das Orginalbild, ist es nicht nötig, ein nicht-verlustbehaftetes
Dateiformat zu benutzen.

4. Hat man sich für JPG entschieden (z.B. wenn es lediglich um die Korrektur für den
Belichter geht), sollte man, falls möglich für alle Folgebearbeitungsschritte eine Stufe in der
Qualität hochgehen. Damit ist gewährleistet, dass beim Speichern etwas mehr Bits benutzt
werden, als für die Kodierung des Ursprungs-JPG-Bildes tatsächlich benötigt werden.

5. Ist man mit seiner Bearbeitung fertig, kann das Bild wieder in der ursprünglichen oder einer
anderen gewünschten Qualitätsstufe gespeichert werden.

Bemerkung dazu: Ich will denjenigen sehen, der mit blossem Auge ohne Vergrößerung und
Lupe einen Unterschied zwischen Original und 100% JPG erkennen kann. Deshalb zum Schluss noch ein Quicktipp: Alles mit 100% JPG bearbeiten und speichern ;D

Grüße,
Christoph
 
Hallo Jochen,

Jochen schrieb:
Ich halte es durchaus für möglich, daß unter beengten Kameraverhältnissen geringfügig anders komprimiert wird, als auf dem PC. Dann wäre möglicherweise das erste Abspeichern mit Neukompression auch ohne vorherige Bearbeitung nicht ohne negative Folgen.

im Prinzip hast Du Recht, es gibt verschiedene Ausführungen des JPG-Algorithmus, mit verschiedenen Genauigkeiten und Bitverteilungsalgorithmen. Wenn man aber die Faustregel beachtet, immer etwas mehr Bits fürs zweite Speichern zu spendieren (z.B. "gemessene" Quali+1) sollten die Unterschiede zwischen den Algorithmen ausgeglichen werden. Dann kann es Dir nur passieren, dass der Alg. in der Kamera viel effizienter und besser ist, als der von FF und für die gleichen Pixel effektiv weniger Bits benötigt. Das glaube ich erstens nicht, zweitens kann man das einmal ausprobieren und drittens sieht man die Unterschiede wirklich nicht.

Grüße,
Christoph
 
Hallo Jochen,

Jochen schrieb:
ich fürchte, so einfach ist die Sache gar nicht. Habe gerade im "manuellen Kleinversuch" herausgefunden, daß gewisse Bearbeitungsschritte anscheinend eher größere JPG´s erzeugen als vorher geladen wurden. Das hängt sicher davon ab, wie rationell der Komprimierungsalgorithmus mit der bei der Bearbeitung erzeugten Bildstruktur fertig wird. Sehr interessant, aber wahrscheinlich schlecht in einem Schema darzustellen. Sehen wir mal weiter.

dieser Apsekt ist sehr wichtig. Er macht nämlich deutlich, dass es keine Ausgleich der Bits über den jeweiligen 8x8 Block hinaus gibt, d.h. Du kannst die Qualität des Restbildes nicht verschlechtern (etwa durch abziehen von Bits), in dem Du wenige punktuelle Details ins Bild einfügst. Durch eine grossflächige massive Schärfung aber schon.

Edit:
Fast hätte ich es vergessen. Solange das Bild seine Lage bzgl. der 8x8 Blöcke nicht verändert z.B. durch Beschneiden, werden eventuelle Blockartefakte nicht kodiert, sondern sind Bestandteil der Kodierung. Verschiebt man das Bild, so muessen die eventuell scharfen Kanten vorhandener Artefakte mit kodiert werden, was dann prinzipiell zu Qualitätsverlust führen kann.

Grüße,
Christoph
 
Hallo!

Halt Christoph - das kann man so nicht stehen lassen!

Ich will jetzt nicht auf die Einzelpunkte eingehen, das würde zu langatmig. Daher ganz kurz nochmal das Wichtigste:

JPEG ist ein Kompressionsalgorithmus (für Antimathematiker wie mich eine Rechenanweisung), die bei jedem Speichervorgang ausgeführt wird. Ist das Ausgangsmaterial unverändert, kommt die Berechnung selbstverständlich bei einer Neuberechnung zum gleichen Ergebnis! Hat sich auch nur eine Kleinigkeit verändert, gibt es ein vollständig verändertes Ergebnis (mit praktisch nicht wahrnehmbaren Unterschieden). Die Berechung geht über alle Daten, nicht nur über Teile. Notwendigerweise kommt es bei fast allen JPEG-Verfahren bei der Berechnung zu Verlusten, was aber nicht unbedingt eine Verringerung der Dateigröße mit sich bringt.

Komischerweise ist der bei FixFoto eingestellte default-Wert von 97% optimal, größere Werte bringen nichts. Es lohnt sich garantiert auch nicht, ein einmal mit 60 % gespeichertes Bild auf 100% aufzupusten.

Lassen wir es bei meiner oben genannten Empfehlung!

Gruß

Günter
 
Die Berechung geht über alle Daten, nicht nur über Teile.

Da liegt das Mißverständnis. Das Bild wird blockweise abgehandelt. In Blöcken mit gleicher Ausgangskonstellation ist das Rechenergebnis geich. Nur veränderte Teile ergeben ein anderes Ergebnis. Hat Christoph gerade geschrieben.

Gruß Jochen
 
Hallo Günter,

guenter_w schrieb:
Halt Christoph - das kann man so nicht stehen lassen!

Ich will jetzt nicht auf die Einzelpunkte eingehen, das würde zu langatmig. Daher ganz kurz nochmal das Wichtigste:

JPEG ist ein Kompressionsalgorithmus (für Antimathematiker wie mich eine Rechenanweisung), die bei jedem Speichervorgang ausgeführt wird. Ist das Ausgangsmaterial unverändert, kommt die Berechnung selbstverständlich bei einer Neuberechnung zum gleichen Ergebnis! Hat sich auch nur eine Kleinigkeit verändert, gibt es ein vollständig verändertes Ergebnis (mit praktisch nicht wahrnehmbaren Unterschieden). Die Berechung geht über alle Daten, nicht nur über Teile. Notwendigerweise kommt es bei fast allen JPEG-Verfahren bei der Berechnung zu Verlusten, was aber nicht unbedingt eine Verringerung der Dateigröße mit sich bringt.

Komischerweise ist der bei FixFoto eingestellte default-Wert von 97% optimal, größere Werte bringen nichts. Es lohnt sich garantiert auch nicht, ein einmal mit 60 % gespeichertes Bild auf 100% aufzupusten.

Lassen wir es bei meiner oben genannten Empfehlung!

Der JPG-Algorithmus arbeitet in 8x8-Blöcken. Wird in im 9. Pixel von links oben etwas verändert, hat das keinen Einfluss auf die Kodierung der ersten 8x8 Pixel.

Was die 97% betrifft, das kann nicht optimal sein, da es in jedem Fall verlustbehaftet ist. Ob Du einen Unterschied siehst ist eine andere Frage und muss jeder selbst entscheiden. Mein Fazit war ja nur ein Quicktipp für alle die, die eigentlich nicht auf unkomprimierte Formate verzichten wollen.

Beim letzten Punkt hast Du Recht, das bringt visuell gar nichts.

Grüße,
Christoph
 
Hallo Christoph!

Ein Zitat aus http://www.faqs.org/faqs/jpeg-faq/part1/

"Subject: [10] Does loss accumulate with repeated compression/decompression?
It would be nice if, having compressed an image with JPEG, you could decompress it, manipulate it (crop off a border, say), and recompress it without any further image degradation beyond what you lost initially. Unfortunately THIS IS NOT THE CASE. In general, recompressing an altered image loses more information. Hence it's important to minimize the number of generations of JPEG compression between initial and final versions of an image. There are a few specialized operations that can be done on a JPEG file without decompressing it, and thus without incurring the generational loss that you'd normally get from loading and re-saving the image in a regular image editor. In particular it is possible to do 90-degree rotations and flips losslessly, if the image dimensions are a multiple of the file's block size (typically 16x16, 16x8, or 8x8 pixels for color JPEGs). This fact used to be just an academic curiosity, but it has assumed practical importance recently because many users of digital cameras would like to be able to rotate their images from landscape to portrait format without incurring loss #- and practically all digicams that produce JPEG files produce images of the right dimensions for these operations to work. So software that can do lossless JPEG transforms has started to pop up. But you do need special software; rotating the image in a regular image editor won't be lossless. It turns out that if you decompress and recompress an image at the same quality setting first used, relatively little further degradation occurs. This means that you can make local modifications to a JPEG image without material degradation of other areas of the image. (The areas you change will still degrade, however.) Counterintuitively, this works better the lower the quality setting. But you must use *exactly* the same setting, or all bets are off. Also, the decompressed image must be saved in a full-color format; if you do something like JPEG=>GIF=>JPEG, the color quantization step loses lots of information. Unfortunately, cropping doesn't count as a local change! JPEG processes the image in small blocks, and cropping usually moves the block boundaries, so that the image looks completely different to JPEG. You can take advantage of the low-degradation behavior if you are careful to crop the top and left margins only by a multiple of the block size (typically 16 pixels), so that the remaining blocks start in the same places. (True lossless cropping is possible under the same restrictions about where to crop, but again this requires specialized software.) The bottom line is that JPEG is a useful format for compact storage and transmission of images, but you don't want to use it as an intermediate format for sequences of image manipulation steps. Use a lossless 24-bit format (PNG, TIFF, PPM, etc) while working on the image, then JPEG it when you are ready to file it away or send it out on the net. If you expect to edit your image again in the future, keep a lossless master copy to work from. The JPEG you put up on your Web site should be a derived copy, not your editing master. "

=> Die Arbeitsweise mit den 8x8 Blöcken hat nichts damit zu tun, dass beim Speichern nach einer beliebigen Veränderung das komplette Bild neu berechnet wird! Das ist ja das Besondere u.a. an FixFoto, dass bei rechtwinkliger Rotation verlustfrei gespeichert werden kann.

Gruß

Günter
 
Günter, Du hast einen schlechten Tag ::).

Die Arbeitsweise mit den 8x8 Blöcken hat nichts damit zu tun, dass beim Speichern nach einer beliebigen Veränderung das komplette Bild neu berechnet wird!

Und das steht in Deinem Artikel:

This means that you can make local modifications to a JPEG image without material degradation of other areas of the image. (The areas you change will still degrade, however.)

Das ist ja das Besondere u.a. an FixFoto, dass bei rechtwinkliger Rotation verlustfrei gespeichert werden kann.

Und das von Dir dazu:

There are a few specialized operations that can be done on a JPEG file without decompressing it, and thus without incurring the generational loss that you'd normally get from loading and re-saving the image in a regular image editor. In particular it is possible to do 90-degree rotations and flips losslessly, if the image dimensions are a multiple of the file's block size (typically 16x16, 16x8, or 8x8 pixels for color JPEGs). This fact used to be just an academic curiosity, but it has assumed practical importance recently because many users of digital cameras would like to be able to rotate their images from landscape to portrait format without incurring loss #- and practically all digicams that produce JPEG files produce images of the right dimensions for these operations to work.

Was im Übrigen anscheinend bedeutet, daß ein einmal beschnittenes Bild nicht mehr verlustlos gedreht werden kann, wenn die Bildmasse in Pixeln nicht ganzzahlig durch 8 teilbar sind.

Gruß Jochen
 
Re: Farbformat

Hallo,

noch zwei Bemerkungen.

Das mit dem verlustfreien Drehen ist denke ich klar, man muss einfach die Koeffizientenmatrix an der Diagonalen spiegeln und die Blöcke entsprechend anders anordnen, dann hat man ein um 90 Grad gedrehtes Bild. Andere Operationen erfordern komplexere Matrizenoperationen und damit haben wir wieder Rechenungenauigkeiten (aber nur die). Prinzipiell sollten eine Menge Filter, eben gerade die welche eine Fouriertransformation benötigen, auch im DCT-Raum funktionieren. Muss ich mal im Netz schauen, ob es sowas gibt.

In dem Artikel von Günter wird noch ein wichtiger Punkt erwähnt, der Farbraum. Es gibt verschiedene Verhältnisse mit denen die Helligkeit (Y) bzgl. der Farbinformation (U,V) beim Digitalisieren abgetastet (Sampling) werden kann, z.B. 4:1:1 oder 4:2:2. Das letztere bedeutet, es werden alle 4 Helligkeitspixel gespeichert, aber nur jedes zweite Farbpixel, die Farbauflösung also halbiert!

Was heisst das jetzt in der Praxis. Erstens, da Digitalkameras mit 4:2:2 oder sogar 4:1:1 digitalisieren (Weiss das einer genau?), sind deren JPG-Dateien gleicher Qualitätsstufe deutlich kleiner (da weniger unterschiedliche Farbpixel und damit weniger Bits) als gleichaufgelöste Scanner-Bilder die natürlich mit 4:4:4 digitalisieren. Zweitens handelt man sich bei der Hin- und Herkonvertierung zwischen YUV und RGB auch wieder Rundungsfehler ein, wobei ich die persönlich für vernachlässigbar halte (sowas sollte man aber nicht bei doom9 ins Forum posten ::))

Grüße,
Christoph
 
Hallo,

nach einem schönen Wochenende will ich auch mal wieder in die Diskussion einmischen.
Ich mache es aber nicht wissenschftlich.
Ich möchte im Vorfeld betonen, daß meine Erkenntnisse nicht bedeuten, daß die beim Speicheren erfolgte Inhaltsveränderung Auswirkung auf die sichtbare Qualtät von Bildern hat.

guenter_w schrieb:
....denn jedes Speichern nach Veränderung bringt Verlust (nicht unbedingt in Bytes, aber an Information.

Ich behaupte, jedes JPG-Speichern, auch ohne Veränderung, bringt Verlust. Da mich dieses Thema vor längerer Zeit schon interessiert hat habe ich ein Skript gebastelt, was zwei Bilder per Pixelebene vergleicht.

Script Download hier

Dort gibt es einen Vergleichsmodus Total. Hier der Auszug aus der Beschreibung:

"Total" vergleicht die beiden Bilder pixelweise auf absolute Übereinstimmung. Jedes
identische Pixel wird im Differenzbild als schwarzes Pixel dargestellt, jedes
unterschiedliche durch ein farbiges. Dabei spielt die Größe der Abweichung keine Rolle,
auch ein einzelnes Bit Unterschied führt zur Anzeige.
Interessante Anwendung: Bild_1 zum Bearbeiten laden und ohne jeglichen
Bearbeitungsschritt
als "Bild_2.JPG" speichern ("Speichern unter" mit gewünschter JPG-Qualität). Dann
beide Bilder mit "Total" vergleichen und staunen, wieviele Pixel sich durch das
Nichtbearbeiten geändert haben. Aber nicht erschrecken, es wird lediglich die Menge
der geänderten Pixel sichtbar - eine Schlußfolgerung auf die (sichtbare)
Qualitätsveränderung ist daraus nicht ableitbar.

Im übrigen kann eine JPG-Datei auch größer werden nach Bearbeitung. Da der JPG-Algorithmus bei detailreicheren Bildern größere Dateien erzeugt als bei detailarmen, kann zum Beispiel ein kantengeschärftes Bild durchaus mehr Platz auf der Platte brauchen als vor der Bearbeitung.

Gruß
Ralf
 
Ich behaupte, jedes JPG-Speichern, auch ohne Veränderung, bringt Verlust.

Hier eine ebenso kompetente wie präzise Darlegung, warum das leider tatsächlich so ist :(.

http://www.mathematik.de/spurendermathematik/spudema_beitraege/beitraege/rooch/nkap04.html

Christophs Aussage, daß unveränderte Blöcke keinen Kompressionsverlust erleiden, ist so wohl doch nicht zu verallgemeinern, auch Günters englischer Beitrag liegt schief.

Man muß wohl korrekt so zusammenfassen:

JPG-komprimierte Bilder erleiden bei erneuter Speicherung an unveränderten Bildstellen keinen weiteren Verlust, mit Ausnahme marginaler Rechenverluste aus der Integerrundung der Quantisierungsfaktoren. Der Rechenverlust geht an unveränderten Bildstellen mit zunehmender Anzahl der Speicherungen gegen Null.

So haben also alle ein wenig Recht und ein wenig Unrecht gehabt.

Warum der Verlust mit zunehmender Anzahl der Speicherungen geringer wird, ist mir nicht ganz klar. Möglicherweise erreicht man irgendwann durch mehrfaches Hin- und Hercodieren und Runden immer mehr durch ganzzahlige Division erzielte Faktoren, die dann stabil bleiben.

Habe mit Hilfe von Squirrels Script stichprobenartig einige Pixel auf RGB-Differenz untersucht, diese ist marginal. Ein typisches, immer wiederkehrendes Bild ist z.B (mit Standard 97%-Kompression).

Original-JPG-Pixel : RGB 104-115-81
nach 1. Speicherung: RGB 104-115-81
nach 2. Speicherung: RGB 106-116-82
nach 3. Speicherung: RGB 105-116-82 <- ab hier stabil
nach 4. Speicherung: RGB 105-116-82

Der Unterschied betrug nie mehr als einen oder zwei R-,G und/oder B-Werte, was wohl im Bildergebnis zu vernachlässigen ist, insbesondere als sich die Änderungen immer nur auf einen begrenzte Anzahl Pixel im Bild erstreckt. Ausreißer sind mir nicht untergekommen.

Gruß Jochen
 
Hallo!

Jochen schrieb:
JPG-komprimierte Bilder erleiden bei erneuter Speicherung an unveränderten Bildstellen keinen weiteren Verlust, mit Ausnahme marginaler Rechenverluste aus der Integerrundung der Quantisierungsfaktoren. Der Rechenverlust geht an unveränderten Bildstellen mit zunehmender Anzahl der Speicherungen gegen Null.

Exakt. Wobei ich die Rundungsverluste nicht bestritten, sondern nur für vernachlässigbar gehalten habe ;)

Jochen schrieb:
Warum der Verlust mit zunehmender Anzahl der Speicherungen geringer wird, ist mir nicht ganz klar. Möglicherweise erreicht man irgendwann durch mehrfaches Hin- und Hercodieren und Runden immer mehr durch ganzzahlige Division erzielte Faktoren, die dann stabil bleiben.

Diese Erklärung klingt plausibel.

Nochwas zu den Rundungsverlusten. Man muss sich bewusst sein, dass auch jedes Filtern Rundungsverluste in ähnlicher Größenordnung mitsichbringt. Insbesondere FFT-Filter (z.B. zur Rauschunterdrückung) machen im wesentlichen auch nichts anderes, als das Bild in den FFT-Raum zu transformieren, zu bearbeiten und rückzutransfomieren. Wer sein Bild mit möglichst hoher Präzision bearbeiten will muss zum 32bit-RGB und Floating-Point-Operationen greifen. Das frisst dann entsprechend Speicherplatz und Rechenleistung und ist m.E. nach für DigiFoto-Zwecke absoluter Overkill insbesondere dann, wenn die Kamera selbst nur JPG liefert.

Grüße,
Christoph
 
Zurück
Oben