Verlustfreies JPEG - Lossless JPEG

Das verlustfreie JPEG wurde 1993 von der Joint Photographic Experts Group zum JPEG- Standard hinzugefügt , um eine verlustfreie Komprimierung zu ermöglichen . Der Begriff kann jedoch auch verwendet werden, um sich auf alle verlustfreien Komprimierungsschemata zu beziehen, die von der Gruppe entwickelt wurden, einschließlich JPEG 2000 und JPEG-LS.

Verlustfreies JPEG wurde 1993 als späte Ergänzung zu JPEG entwickelt, wobei eine völlig andere Technik als der verlustbehaftete JPEG-Standard verwendet wurde. Es wird ein Vorhersageschema verwendet, das auf den drei nächsten (kausalen) Nachbarn (oben, links und oben links) basiert , und die Entropiecodierung wird für den Vorhersagefehler verwendet. Die Standardbibliotheken der Independent JPEG Group können sie nicht codieren oder decodieren, aber Ken Murchison von Oceana Matrix Ltd. hat einen Patch geschrieben, der die IJG-Bibliothek erweitert, um verlustfreies JPEG zu verarbeiten. Verlustfreies JPEG erfreut sich in der medizinischen Bildgebung einer gewissen Beliebtheit und wird in DNG und einigen Digitalkameras zum Komprimieren von Rohbildern verwendet, wurde aber ansonsten nie weit verbreitet. Das DNG SDK von Adobe bietet eine Softwarebibliothek zum Codieren und Decodieren von verlustfreiem JPEG mit bis zu 16 Bit pro Sample.

Die ISO / IEC Joint Photography Experts Group unterhält eine Referenzsoftware-Implementierung, die sowohl Basis- JPEG- (ISO / IEC 10918-1 und 18477-1) als auch JPEG XT- Erweiterungen (ISO / IEC 18477 Teile 2 und 6-9) sowie codieren kann JPEG-LS (ISO / IEC 14495).

Verlustfreie Betriebsart

Abbildung 1: DPCM- Encoder-Modell
Abbildung 2: Vereinfachte Blockdiagramme für den verlustfreien Modus
Abbildung 3: Drei benachbarte Proben um die vorherzusagende Probe

Verlustfreies JPEG ist eigentlich eine Funktionsweise von JPEG. Dieser Modus existiert, weil die auf der diskreten Cosinustransformation (DCT) basierende Form nicht garantieren kann, dass der Encodereingang genau mit dem Decoderausgang übereinstimmt. Im Gegensatz zum verlustbehafteten Modus, der auf der DCT basiert, verwendet der verlustfreie Codierungsprozess ein einfaches prädiktives Codierungsmodell, das als differentielle Pulscodemodulation (DPCM) bezeichnet wird. Dies ist ein Modell, bei dem Vorhersagen der Stichprobenwerte aus den benachbarten Stichproben geschätzt werden, die bereits im Bild codiert sind. Die meisten Prädiktoren nehmen den Durchschnitt der Stichproben unmittelbar über und links von der Zielstichprobe. DPCM codiert die Unterschiede zwischen den vorhergesagten Proben, anstatt jede Probe unabhängig zu codieren. Die Unterschiede von einer Probe zur nächsten liegen normalerweise nahe bei Null. Ein typischer DPCM-Encoder ist in Abb. 1 dargestellt. Der Block in der Abbildung dient als Speicher für das aktuelle Sample, das später ein vorheriges Sample sein wird.

Die Hauptschritte des verlustfreien Betriebsmodus sind in Fig. 2 dargestellt. Dabei kombiniert der Prädiktor bis zu drei benachbarte Abtastwerte bei A, B und C, die in Fig. 3 gezeigt sind, um eine Vorhersage des Abtastwerts an der mit X gekennzeichneten Position zu erzeugen. Die drei benachbarten Abtastwerte müssen bereits codierte Abtastwerte sein . Jeder der in der folgenden Tabelle gezeigten Prädiktoren kann verwendet werden, um die bei X befindliche Stichprobe zu schätzen. Jeder der acht in der Tabelle aufgeführten Prädiktoren kann verwendet werden. Es ist zu beachten, dass die Auswahlen 1, 2 und 3 eindimensionale Prädiktoren sind und die Auswahlen 4, 5, 6 und 7 zweidimensionale Prädiktoren sind. Der erste Auswahlwert in der Tabelle, Null, wird nur für die Differenzcodierung im hierarchischen Betriebsmodus verwendet. Sobald alle Proben vorhergesagt sind, können die Unterschiede zwischen den Proben unter Verwendung der Huffman-Codierung oder der arithmetischen Codierung verlustfrei erhalten und entropiecodiert werden .

Auswahlwert Prognose
0 Keine Vorhersage
1 EIN
2 B.
3 C.
4 A + B - C.
5 A + (B - C) / 2
6 B + (A - C) / 2
7 (A + B) / 2

Typischerweise kann Kompressionen lossless Betriebsmodus unter Verwendung erreicht etwa 2: 1 Kompressionsverhältnis für Farbbilder. Dieser Modus ist im Bereich der medizinischen Bildgebung sehr beliebt und wird im DNG-Standard als Option definiert. Ansonsten wird er aufgrund der Komplexität der Arithmetik für 10-, 12- oder 14-bpp-Werte auf einem typischen eingebetteten 32-Bit-Prozessor und a nicht sehr häufig verwendet wenig resultierender Raumgewinn.

JPEG-LS

Allgemeine Beschreibung

JPEG-LS ist ein verlustfreier / nahezu verlustfreier Komprimierungsstandard für Bilder mit kontinuierlichem Ton. Die offizielle Bezeichnung lautet ISO-14495-1 / ITU-T.87. Es ist ein einfacher und effizienter Basisalgorithmus, der aus zwei unabhängigen und unterschiedlichen Stufen besteht, die als Modellierung und Codierung bezeichnet werden. JPEG-LS wurde mit dem Ziel entwickelt, einen verlustfreien und nahezu verlustfreien Bildkomprimierungsstandard mit geringer Komplexität bereitzustellen, der eine bessere Komprimierungseffizienz als verlustfreies JPEG bietet. Es wurde entwickelt, weil zu dieser Zeit der auf Huffman-Codierung basierende verlustfreie JPEG-Standard und andere Standards in ihrer Komprimierungsleistung eingeschränkt waren. Eine vollständige Dekorrelation kann nicht durch Entropie erster Ordnung der von diesen minderwertigen Standards verwendeten Vorhersage-Residuen erreicht werden. JPEG-LS hingegen kann eine gute Dekorrelation erzielen. Teil 1 dieses Standards wurde 1999 fertiggestellt. In Teil 2, der 2003 veröffentlicht wurde, wurden Erweiterungen wie die arithmetische Codierung eingeführt . Der Kern von JPEG-LS basiert auf dem LOCO-I-Algorithmus, der auf Vorhersage, Residuenmodellierung und kontextbasierter Codierung der Residuen beruht. Der größte Teil der geringen Komplexität dieser Technik beruht auf der Annahme, dass Vorhersagereste einer zweiseitigen geometrischen Verteilung (auch als diskrete Laplace-Verteilung bezeichnet ) folgen, und auf der Verwendung von Golomb- ähnlichen Codes, von denen bekannt ist, dass sie für geometrische Verteilungen ungefähr optimal sind . Neben der verlustfreien Komprimierung bietet JPEG-LS auch einen verlustbehafteten Modus ("nahezu verlustfrei"), in dem der maximale absolute Fehler vom Encoder gesteuert werden kann.

Performance

  • Die Komprimierung für JPEG-LS ist im Allgemeinen viel schneller als für JPEG 2000 und viel besser als der ursprüngliche verlustfreie JPEG-Standard.
  • Die Komprimierung für JPEG-LS ist im Allgemeinen etwas schlechter als für JPEG 2000, dies hängt jedoch stark vom Bildinhalt ab.
  • Die Dekomprimierung für JPEG-LS ist im Allgemeinen viel schneller als für JPEG 2000, dies hängt jedoch von den genauen Implementierungen des Software-Decoders ab.
    • Diese Anweisung gilt für Open Source-Implementierungen.

Anwendungsunterstützung

LOCO-I-Algorithmus

Vor der Codierung müssen in der Modellierungsphase zwei wesentliche Schritte ausgeführt werden: Dekorrelation (Vorhersage) und Fehlermodellierung .

Dekorrelation / Vorhersage

In dem LOCO-I-Algorithmus wird eine primitive Kantenerkennung von horizontalen oder vertikalen Kanten erreicht, indem die benachbarten Pixel des aktuellen Pixels X untersucht werden, wie in 3 dargestellt. Das mit B gekennzeichnete Pixel wird im Fall einer vertikalen Kante verwendet, während das bei A befindliche Pixel im Fall einer horizontalen Kante verwendet wird. Dieser einfache Prädiktor wird als MED-Prädiktor ( Median Edge Detection ) oder LOCO-I-Prädiktor bezeichnet. Das Pixel X wird vom LOCO-I-Prädiktor gemäß den folgenden Vermutungen vorhergesagt:

Die drei einfachen Prädiktoren werden gemäß den folgenden Bedingungen ausgewählt: (1) Sie neigen dazu, B in Fällen auszuwählen, in denen links vom X eine vertikale Kante vorhanden ist, (2) A in Fällen einer horizontalen Kante über X oder (3) A. + B - C, wenn keine Kante erkannt wird.

Kontextmodellierung

Der JPEG-LS-Algorithmus schätzt die bedingten Erwartungen der Vorhersagefehler unter Verwendung entsprechender Stichprobenmittel in jedem Kontext Ctx . Der Zweck der Kontextmodellierung besteht darin, dass die Strukturen höherer Ordnung wie Texturmuster und lokale Aktivität des Bildes durch Kontextmodellierung des Vorhersagefehlers ausgenutzt werden können. Kontexte werden bestimmt, indem die Unterschiede der benachbarten Stichproben erhalten werden, die den lokalen Gradienten darstellen :

Der lokale Gradient spiegelt den Grad der Aktivitäten wie Glätte und Nervosität der benachbarten Proben wider. Beachten Sie, dass diese Unterschiede eng mit dem statistischen Verhalten von Vorhersagefehlern zusammenhängen. Jeder der in der obigen Gleichung gefundenen Unterschiede wird dann in ungefähr gleichwahrscheinliche und verbundene Regionen quantisiert. Für JPEG-LS werden die Differenzen g1, g2 und g3 in 9 Regionen quantisiert und die Region von –4 bis 4 indiziert. Der Zweck der Quantisierung besteht darin, die gegenseitige Information zwischen dem aktuellen Abtastwert und seinem Kontext so zu maximieren, dass Die Abhängigkeiten höherer Ordnung können erfasst werden. Man kann die Kontexte unter der Annahme erhalten, dass

Nach dem Zusammenführen von Kontexten mit positiven und negativen Vorzeichen ist die Gesamtzahl der Kontexte Kontexte. Eine Bias-Schätzung könnte erhalten werden, indem kumulative Vorhersagefehler innerhalb jedes Kontexts durch eine Anzahl von Kontextvorkommen geteilt werden. Im LOCO-I-Algorithmus wird dieses Verfahren so modifiziert und verbessert, dass die Anzahl der Subtraktionen und Additionen reduziert wird. Das Verfahren zur Berechnung der teilungsfreien Vorspannung wird in [2] demonstriert . Die Verfeinerung der Vorhersage kann dann erfolgen, indem diese Schätzungen in einem Rückkopplungsmechanismus angewendet werden, der Vorhersageverzerrungen in verschiedenen Kontexten beseitigt.

Codierung korrigierter Vorhersagereste

Im regulären Modus von JPEG-LS verwendet der Standard Golomb-Rice-Codes, mit denen nicht negative Lauflängen codiert werden können. Sein Sonderfall mit dem optimalen Codierungswert 2 k ermöglicht einfachere Codierungsverfahren.

Lauflängencodierung in einheitlichen Bereichen

Da Golomb-Rice-Codes für die Codierung von Verteilungen mit niedriger Entropie ziemlich ineffizient sind, da die Codierungsrate mindestens ein Bit pro Symbol beträgt, kann eine signifikante Redundanz erzeugt werden, da die glatten Bereiche in einem Bild mit weniger als 1 Bit pro Symbol codiert werden können. Um eine übermäßige Codelänge über der Entropie zu vermeiden, kann eine Alphabeterweiterung verwendet werden, die Symbolblöcke codiert, anstatt einzelne Symbole zu codieren. Dies verteilt die überschüssige Codierungslänge auf viele Symbole. Dies ist der "Run" -Modus von JPEG-LS und wird ausgeführt, sobald ein flacher oder glatter Kontextbereich erkannt wird, der durch Nullgradienten gekennzeichnet ist. Ein Lauf des Westsymbols "a" wird erwartet und das Ende des Laufs tritt ein, wenn ein neues Symbol auftritt oder das Zeilenende erreicht ist. Der gesamte Lauf der Länge wird codiert und der Codierer würde in den "normalen" Modus zurückkehren.

JPEG 2000

JPEG 2000 enthält einen verlustfreien Modus, der auf einem speziellen ganzzahligen Wavelet- Filter (biorthogonal 3/5) basiert . Der verlustfreie Modus von JPEG 2000 läuft langsamer und weist häufig schlechtere Komprimierungsverhältnisse als JPEG-LS bei künstlichen und zusammengesetzten Bildern auf, ist jedoch besser als die UBC-Implementierung von JPEG-LS bei Digitalkamerabildern. JPEG 2000 ist auch skalierbar, progressiv und umfassender implementiert.

JPEG XT

JPEG XT enthält einen verlustfreien DCT-Transformationsmodus von Ganzzahl zu Ganzzahl, der auf der Wavelet-Komprimierung von JPEG 2000 basiert.

Verweise

Externe Links