Heim  >  Artikel  >  Was sind die am häufigsten verwendeten verlustfreien Komprimierungsalgorithmen?

Was sind die am häufigsten verwendeten verlustfreien Komprimierungsalgorithmen?

藏色散人
藏色散人Original
2020-11-04 13:51:2419713Durchsuche

Häufig verwendete verlustfreie Komprimierungsalgorithmen sind: 1. LZ77-Algorithmus, der die Grundlage vieler anderer verlustfreier Komprimierungsalgorithmen bildet; 2. LZR-Algorithmus, ein Algorithmus zur Verbesserung von LZ77; 3. LZSS-Algorithmus, der LZ77 A werden soll; linearer Zeitersetzungsalgorithmus; 4. DEFLATE-Algorithmus; 5. LZMA-Algorithmus usw.

Was sind die am häufigsten verwendeten verlustfreien Komprimierungsalgorithmen?

Datenkomprimierung ist der Prozess, bei dem die Dateigröße reduziert wird, während die gleichen oder die meisten Daten erhalten bleiben. Dabei werden unnötige Daten eliminiert oder in ein effizienteres Format umorganisiert. Beim Komprimieren von Daten können Sie zwischen verlustbehafteten und verlustfreien Methoden wählen. Verlustbehaftete Methoden löschen einige Daten dauerhaft, während verlustfreie Methoden sicherstellen, dass alle Daten erhalten bleiben. Welche Methode Sie verwenden, hängt davon ab, wie genau Ihre Datei sein soll.

Dieser Artikel stellt Ihnen 6 verschiedene verlustfreie Datenkomprimierungsalgorithmen und 4 Bild-/Videokomprimierungsalgorithmen vor, die auf Deep Learning basieren.

6 Algorithmen zur verlustfreien Datenkomprimierung

Verlustfreie Komprimierungsalgorithmen werden normalerweise für die Archivierung oder andere High-Fidelity-Zwecke verwendet. Mit diesen Algorithmen können Sie die Dateigröße reduzieren und gleichzeitig sicherstellen, dass die Datei vollständig wiederherstellbar ist. Es stehen viele verlustfreie Komprimierungsalgorithmen zur Auswahl. Im Folgenden werden 6 häufig verwendete Algorithmen vorgestellt:

1. LZ77

Der LZ77-Algorithmus wurde 1977 veröffentlicht. Als Grundlage für viele andere verlustfreie Komprimierungsalgorithmen verwendet es das Konzept der „gleitenden Fenster“. In diesem Konzept verwaltet LZ77 ein Wörterbuch. Dieses Wörterbuch verwendet Tripel:

Offset: der Abstand zwischen dem Anfang der Phrase und dem Anfang der Datei

Lauflänge: die Anzahl der Zeichen, aus denen die Phrase besteht

Offset: gibt ein neues Phrasensymbol an, das erste Symbol im Vorwärtspuffer nach dem Abgleich

Wenn die Datei analysiert wird, wird das Wörterbuch in Echtzeit aktualisiert, um die neuesten komprimierten Daten und die neueste Größe widerzuspiegeln. Wenn eine Datei beispielsweise die Zeichenfolge „abbadabba“ enthält, lautet das im Wörterbuch komprimierte Element „abb(0,1,'d')(0,3,'a')“. Sie können den Demontageprozess in der folgenden Tabelle betrachten:

Was sind die am häufigsten verwendeten verlustfreien Komprimierungsalgorithmen?

In diesem Beispiel sind die komprimierten Daten nicht viel kleiner als die ursprünglichen Daten. Im Allgemeinen tritt dieser Komprimierungseffekt jedoch auf, wenn die Datei sehr lang ist.

2. LZR

LZR wurde 1981 von Michael Rodeh vorgeschlagen. Es wurde auf Basis von LZ77 entwickelt. Das Ziel dieses Algorithmus besteht darin, ein linearer Zeitersetzungsalgorithmus von LZ77 zu werden. Nach der Codierung zeigt der Udell-Zeiger jedoch möglicherweise auf einen beliebigen Offset der Datei, was bedeutet, dass er einen erheblichen Speicherverbrauch erfordert und daher nicht so gut ist wie bei LZ77 .

3. LZSS

LZSS, vollständiger Name Lempel-Ziv-Storer-Szymanski, wurde 1982 vorgeschlagen. Es handelt sich auch um einen Algorithmus zur Verbesserung von LZ77. Es führt eine Methode ein, um zu erkennen, ob die Dateigröße tatsächlich reduziert wird. Wenn der Komprimierungseffekt nicht erreicht werden kann, wird das ursprüngliche Eingabeformat beibehalten. LZSS entfernt auch die Verwendung von Offset-Zeichen und verwendet nur -Paare. Dieser Komprimierungsalgorithmus wird häufig in Archivformaten wie RAR und bei der Komprimierung von Netzwerkdaten verwendet.

4. Der DEFLATE-Algorithmus wurde 1993 vorgeschlagen. Der Autor ist Phil Katz. Dieser Algorithmus kombiniert den LZ77- oder LZSS-Präprozessor mit der Huffman-Codierung. Die Huffman-Kodierung ist ein 1952 vorgeschlagenes Gesetz. Es handelt sich um eine Entropiekodierung, die Codes hauptsächlich auf Grundlage der Häufigkeit des Auftretens von Zeichen zuordnet.

5. LZMA

Der LZMA-Algorithmus, der vollständige Name ist Lempel-Ziv-Markov-Kettenalgorithmus (LZMA), wurde 1998 vorgeschlagen. Es handelt sich um eine verbesserte Version von LZ77 und ist für die Archivierung von 7-ZIp-Dateien im .7z-Format konzipiert . Es verwendet eine Kettenkomprimierungsmethode, die einen modifizierten LZ77-Algorithmus auf Bitebene statt auf Byteebene anwendet. Die Ausgabe dieses Komprimierungsalgorithmus wird später durch arithmetische Codierung für die anschließende weitere Komprimierung verarbeitet. Abhängig von der spezifischen Implementierung können zusätzliche Komprimierungsschritte eingeführt werden.

6. LZMA2

Der LZMA2-Algorithmus wurde 2009 vorgeschlagen und ist eine verbesserte Version von LZMA. Es verbessert die Leistung von LZMA im Hinblick auf Multithreading-Funktionen und verbessert die Leistung bei der Verarbeitung inkompressibler Datentypen.

4 Deep-Learning-basierte Bild-/Videokomprimierungsalgorithmen

Zusätzlich zu den oben vorgestellten statischen Komprimierungsalgorithmen stehen auch Deep-Learning-basierte Komprimierungsalgorithmen zur Auswahl.

1. Komprimierungsalgorithmus basierend auf mehrschichtigem Perzeptron

Die Multi-Layer-Perceptron-Technologie (MLP) nutzt mehrere Schichten von Neuronen, um Daten zu erfassen, zu verarbeiten und auszugeben. Es kann auf Aufgaben zur Reduzierung der Datendimensionalität und zur Datenkomprimierung angewendet werden. Der erste MLP-basierte Algorithmus wurde 1988 vorgeschlagen und angewendet auf:

Binäre Kodierung – Standard-Zwei-Symbol-Kodierung

Quantisierung – Beschränkung der Eingabe von kontinuierlichen Mengen auf diskrete Mengen

Konvertierung innerhalb bestimmter Felder – Pixelebene Datenänderungen

Der MLP-Algorithmus verwendet die Ausgabe des vorherigen Schritts des neuronalen Zerlegungsnetzwerks, um die beste Binärcodekombination zu bestimmen. Später werden Vorhersagetechniken verwendet, um diese Methode zu optimieren. Vorhersagetechniken können die Datengenauigkeit basierend auf benachbarten Daten durch Backpropagation verbessern.

2. DeepCoder – tiefes neuronales Netzwerk basierend auf Videokomprimierung

DeepCoder ist ein Framework, das auf Convolutional Neural Network (CNN) basiert und eine Alternative zur herkömmlichen Videokomprimierungstechnologie darstellt. Dieses Modell verwendet separate CNNs für das vorhergesagte Signal und das Restsignal. Es verwendet skalare Quantisierungstechniken und einen traditionellen Dateikomprimierungsalgorithmus – die Huffman-Codierung –, um die Codierungsmerkmale in einen Binärstrom abzubilden. Es wird allgemein angenommen, dass die Leistung dieses Modells besser ist als die berühmte H.264/AVC-Videocodierungsspezifikation.

3. CNN-basierter Komprimierungsalgorithmus

CNN ist ein geschichtetes neuronales Netzwerk, das normalerweise zur Bilderkennung und Merkmalserkennung verwendet wird. Bei der Komprimierung verwenden diese neuronalen Netze Faltungsoperationen, um Korrelationen zwischen benachbarten Pixeln zu berechnen. CNN zeigt bessere Komprimierungsergebnisse als MLP-basierte Algorithmen, verbessert die Superauflösungsleistung und reduziert Artefakte. Darüber hinaus verbessert die CNN-basierte Komprimierung auch die Qualität von JPEG-Bildern, da sie das Spitzensignal-Rausch-Verhältnis (PSNR) und die strukturelle Ähnlichkeit (SSIM) reduziert. Die CNN-basierte Komprimierung erzielt auch HEVC-Leistung durch den Einsatz von Entropieschätzungsmethoden.

4. Komprimierungsalgorithmus basierend auf Generative Adversarial Network (GAN)

GAN ist eine Art neuronales Netzwerk, das zwei neuronale Netzwerke verwendet, um miteinander zu konkurrieren und genauere Analysen und Vorhersagen zu erstellen. Der früheste GAN-basierte Komprimierungsalgorithmus wurde 2017 vorgeschlagen. Das Dateikomprimierungsverhältnis dieser Algorithmen ist 2,5-mal so hoch wie das anderer gängiger Methoden (wie JPEG, WebP usw.). Sie können GAN-basierte Methoden verwenden, um durch Parallelisierung der Verarbeitung eine Echtzeitkomprimierung zu erreichen. Das Hauptprinzip besteht darin, Bilder basierend auf den relevantesten Merkmalen zu komprimieren. Bei der Dekodierung rekonstruiert der Algorithmus das Bild anhand dieser Merkmale. Im Vergleich zu CNN-basierten Algorithmen können GAN-basierte Komprimierungsalgorithmen Bilder mit höherer Qualität erzeugen, indem sie gegnerische Verluste eliminieren.

Zusammenfassung

Komprimierungsalgorithmen können Ihnen dabei helfen, die Dateigröße zu optimieren. Unterschiedliche Algorithmen führen zu unterschiedlichen Ergebnissen. In diesem Artikel werden kurz 6 statische verlustfreie Komprimierungsalgorithmen und 4 auf Deep Learning basierende Komprimierungsalgorithmen beschrieben. Wenn keiner dieser Algorithmen auf Ihr Szenario zutrifft, können Sie diesen Artikel natürlich lesen, um einen Algorithmus zu finden, der zu Ihrem Szenario passt. Es gibt viele Algorithmen, es gibt immer einen, der zu Ihnen passt!

Das obige ist der detaillierte Inhalt vonWas sind die am häufigsten verwendeten verlustfreien Komprimierungsalgorithmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn