Wie funktioniert es theoretisch?
Wenn Sie auf die Schaltfläche Speichern klicken, erfolgt zunächst eine Konvertierung zwischen RGB- und YCrCb-Farbsystem. Wenn Sie dies schlecht implementieren, ist hier Ihr erster Schritt des Datenverlusts. Es gibt praktische Gründe, warum diese Konvertierung erforderlich ist, aber hier ist sie nicht entscheidend. Nach dieser Konvertierung wird von jedem Pixelwert der Wert 128 abgezogen, um ein Bild mit dem Mittelwert Null zu erzeugen .
Nachdem die Konvertierung von RGB in YCrCb abgeschlossen ist, wird Ihr Bild in Blöcke von 8 x 8 Pixel unterteilt, die als Blöcke oder MCU (Minimal Coded Unit) bezeichnet werden. Nachdem Ihr Bild in 8x8-Blöcke unterteilt wurde, wird die Forward Descreete Cosine-Transformation für jeden 8x8-Block ausgeführt. Die Formel der FDCT ist unten angegeben:
wobei M und N Dimensionen des 8x8-Blocks sind, in unserem Beispiel M = N = 8 und C (u), C (v) Konstanten sind, die im Bild unten angegeben sind:
"
F (u, v) ist das Ergebnis von FDCT, das ebenfalls eine Matrix / ein Block von 8 × 8 Pixeln ist, und F (u, v) -Elemente werden FDCT-Koeffizienten genannt und sind Frequenzdarstellungen des Bildes. Das erste Element F (0,0) wird als Gleichstromkoeffizient bezeichnet, andere als Wechselstromelemente. Das erste Element ist am wichtigsten, da es die meisten Daten des 8x8-Blocks enthält. Wenn wir etwas rechnen, können wir erhalten, dass das erste Element F (0,0) der Mittelwert aller anderen Knoten ist, multipliziert mit 8, was in den folgenden Formeln beschrieben wird.
und du bekommst
Genug der Mathematik :).
Wenn Sie mir folgen, sehen Sie, dass wir bis jetzt nicht so viele Daten verloren haben (wir können immer noch IDCT (I-inverse) ausführen und wir werden unser Startbild mit einigen Verlusten erhalten). Wo ist der Prozess, was ändert sich, wenn Sie beim Speichern von JPEG-Bildern die Größe Ihrer Photoshop / Lightroom-Qualität festlegen? Lass uns weitermachen.
Nehmen wir also an, wir haben ein Bild mit 16 x 16 Pixel. Wenn wir unser Bild in 8x8-Blöcke unterteilen, erhalten wir zwei 8x8-Blöcke. Nachdem wir die Farbkonvertierung durchgeführt haben, gelangen wir zu FDCT. Wir führen FDCT auf dem ersten 8x8-Block aus und erhalten als Ergebnis einen neuen 8x8-Block, der ein Produkt von FDCT ist. Dann führen wir FDCT auf dem zweiten 8x8-Block des Originalbilds aus, und als Ergebnis erhalten wir einen weiteren 8x8-Block FDCT. Insgesamt ist das Ergebnis der FDCT auf unserem 16x16-Bild / unserer Matrix eine neue 16x16-Matrix und wird als F- Matrix bezeichnet.
Jetzt ist die F-Matrix in 8 × 8-Blöcke unterteilt, und sie ist mit einer Quantisierungstabelle unterteilt, die eine Matrix von 8 × 8 Pixeln ist. Quantisierungstabellenwerte sind Konstanten / Zahlen, die durch experimentelle Ergebnisse am menschlichen Auge angegeben werden. Die klassische Quantisierungstabelle ist unten angegeben.
Diese Matrix, die als Q-Matrix bezeichnet wird, wird mit unserer F-Matrix geteilt, tatsächlich mit dem ersten 8x8-Block der F-Matrix, dann mit dem zweiten 8x8-Block der F-Matrix und so weiter. Warum? Um kleinere Zahlen zu erhalten, für die wir weniger Bits benötigen, um sie in einer digitalen Datei darzustellen. Wenn Sie den Wert 105 haben, benötigen Sie 8 Bit für die digitale Darstellung. Aber wenn Sie 105 mit 52 teilen, erhalten Sie 1,90. Sie nehmen nur einen ganzzahligen Teil, der 1,00 beträgt. Für die Dezimalzahl 1 benötigen Sie nur ein Bit, also haben Sie 7 Bits gespeichert. Stellen Sie sich nun Einsparungen für Bilder mit 4000x4000 Pixel vor :).
Dieser Prozess des Teilens der F-Tabelle mit der Q-Tabelle ist der Punkt, an dem ein JPEG-Verlust auftritt. Wenn Q-Elemente größer sind, ist der Verlust größer und umgekehrt.
Wenn Sie also den Photoshop-Spinner von schlechter auf gute Qualität ändern, ändern Sie tatsächlich die Werte der Q-Tabelle.
Sie sehen auch, dass das erste Element der Q-Matrix, Q (0,0), das kleinste ist. Dies liegt daran, dass dieses Element durch das Element F (0,0) geteilt wird, das ein DC-Element ist (Element, das die meisten Daten enthält). Wenn wir es durch eine große Zahl teilen, sehen Sie in Ihrem Bild 8x8 Blöcke wie Sie kann es in Bildern sehen, die von @mattdm gepostet wurden.
Ihre Antwort ist ja es ist :)
Ich hoffe ich habe dir geholfen :)