- 1
Datacompressie algoritmen kunnen worden gedefinieerd als het proces van vermindering van de grootte van bestanden op het moment van het behoud van dezelfde of soortgelijke tot op zekere hoogte van gegevens. Dit wordt gedaan door het uitvoeren van de eliminatie van onnodige gegevens of het maken van de gegevens opnieuw voor een hogere efficiëntie.
Op het moment van compressie, heb je de mogelijkheid om te kiezen uit lossy of lossless methoden. Als we praten over de lossy methode het permanent wist de gegevens. Aan de andere kant, lossless zorgen voor uw originele gegevens. Het type dat u kiest hangt af van de kwaliteit die u van uw bestanden verlangt.
In dit artikel vindt u een mengsel van lossless datacompressie-algoritmen en beeld- en videocompressie-algoritmen op basis van deep learning.
Lossless datacompressie-algoritmen worden normaal gesproken wezens gebruikt voor het uitvoeren van de functie van archief of andere hoogwaardige functies. Deze gegevenscompressie-algoritmen staan u toe om een vermindering van de bestandsgrootte uit te voeren. Het zorgt er ook voor dat bestanden volledig kunnen worden hersteld als dat nodig is.
Table of Contents
- LZ77
- LZR
- LZSS
- Deflate
- LZMA
- LZMA2
- Multi-Layer Perceptron (MLP)-gebaseerde compressie
- Dee Coder- Deep Neural Network Based Video Compressie
- Convolutional Neural Network (CNN) – Based compression
- Generative Adversarial Network (GAN)-gebaseerde compressie
- Voorspelling door gedeeltelijke overeenkomst (PPM)
- Run-length encoding (RLE)
- bzip2
- Huffman-codering
- ZStandard
- Conclusie
LZ77
LZ77 werd in 1977 aangekondigd en genoemd als de basis van zovele andere verliesloze compressie-algoritmen. Het gebruikt normaal de methode van “Sliding Window”. In deze methode wordt gebruik gemaakt van een woordenboek dat gebruik maakt van triples voor het representeren van:
- Offset- Dit kan worden aangeduid als het feitelijke begin van de frase en het begin van het bestand.
- Run-length-It wordt gedefinieerd als de hoeveelheid van de karakters die u helpen bij het maken van een frase.
- Afwijkende karakters-Dit zijn de marketeers die een nieuwe frase aanduiden.
Het bevat een indicatie dat de gebruikte zin volledig gelijk is aan de oorspronkelijke zin en definieert ook of er een afwijkend karakter is.
Zoals u een bestand parseert, wordt het woordenboek dynamisch bijgewerkt voor de weerspiegeling van de gecomprimeerde data-inhoud en grootte ook.
LZR
LZR werd ontwikkeld en aangekondigd in het jaar 1981. Michael Rodeh kondigde het aan, en hij wijzigde het later. Het kan worden gebruikt als een primair alternatief voor het LZ77 data compressie algoritme, maar je hebt ook de mogelijkheid om het te gebruiken voor elke offset binnen het bestand. Als je het niet lineair gebruikt, dan heeft het een aanzienlijke hoeveelheid geheugenopslag nodig. Deze voorwaarde maakt LZ77 een betere optie om te gebruiken. Dit algoritme voor gegevenscompressie is eenvoudig te implementeren en heeft de potentie voor zeer hoge prestaties wanneer het op hardware wordt geïmplementeerd.
Het is het algoritme dat op grote schaal wordt gebruikt Unix algoritme voor gegevenscompressie nut comprimeren en wordt gebruikt in het GIF-afbeeldingsformaat. Het werd het eerste gegevenscompressie-algoritme dat op grote schaal op computers werd gebruikt. Een groot Engels tekstbestand kan typisch worden gecomprimeerd van LZW tot ongeveer de helft van zijn oorspronkelijke grootte.
LZSS
LZSS staat voor Lempel Ziv Storer Szymanski en het werd ontwikkeld en aangekondigd in het jaar 1982. Dit is een algoritme voor gegevenscompressie dat een verbetering is van LZ77. Het comprimeren gebeurt door een methode toe te voegen die in de gaten houdt of een substitutie de bestandsgrootte vermindert. Als dit niet het geval is, wordt de invoer in zijn oorspronkelijke vorm gelaten. Het geeft ook niet de voorkeur aan het gebruik van afwijkende tekens, en geeft alleen de voorkeur aan het gebruik van offset-lengteparen.
Dit algoritme wordt vooral gebruikt voor het archiveren van de bestanden in verschillende formaten zoals RAR of ZIP, of voor het comprimeren van netwerkgegevens.
Het kan worden aangeduid als een woordenboek-coderingstechniek. LZSS probeert een string van symbolen te vervangen door een verwijzing naar een dictionary-locatie van dezelfde string. Het belangrijkste verschil tussen LZ77 en LZSS is dat in LZ77 de verwijzing naar het woordenboek langer kan zijn dan de tekenreeks die wordt vervangen. In LZSS worden dergelijke verwijzingen weggelaten als de lengte kleiner is dan het “break-even” punt.
Deflate
Deflate is een verliesvrij gegevenscompressie algoritme bestandsformaat dat gebruik maakt van een combinatie van LZSS en Huffman codering. Het werd ontworpen door Phil Katz in het jaar 1993. Huffman codering is ook een algoritme dat werd ontwikkeld in 1952. Het kan worden gedefinieerd als een entropie-coderingsalgoritme dat u helpt bij het toewijzen van uw code op basis van de frequentie van het karakter.
Katz ontwierp ook het oorspronkelijke algoritme dat wordt gebruikt om Deflate streams te construeren. Zoals in het RFC-document staat, werd algemeen aangenomen dat een algoritme dat Deflate-bestanden produceert, implementeerbaar was op een manier die niet door octrooien werd gedekt. Dit leidde tot het wijdverbreide gebruik ervan, naast het ZIP-bestandsformaat dat het hoofddoel was van Katz om het te ontwerpen. Het patent is niet langer beschikbaar.
LZMA
LZMA staat voor het Lempel Ziv Markov chain algoritme en het is ontworpen en uitgebracht in het jaar 1998. Het kan ook worden gezien als een wijziging van LZ77. Deze wijziging werd uitgevoerd voor de -Zip archiver met een .7z formaat. De methode van kettingcompressie wordt gebruikt om de gewijzigde LZ77 op bit- in plaats van byte-niveau te implementeren. De uitvoer die verschijnt wordt verder verwerkt met rekenkundige codering voor het uitvoeren van meer compressie.
De prestaties van andere compressiestappen zijn afhankelijk van de exacte implementatie. Dit gegevenscompressie-algoritme maakt gebruik van een woordenboekcompressieschema dat enigszins lijkt op het LZ77-algoritme dat in 1977 door Abraham Lempel en Jacob Ziv werd gepubliceerd. Het heeft ook een hoge compressieverhouding en een variabele compressie-woordenboekgrootte. De decompressiesnelheid is vergelijkbaar met die van andere veelgebruikte compressie-algoritmen.
LZMA2
LZMA2 is ontworpen en uitgebracht in 2009. Het kan ook worden gedefinieerd als de wijziging van LZMA. Het maakt LZMA beter door zijn prestaties te verbeteren met grotere multithreading mogelijkheden. LZMA2 biedt ook een verbeterde behandeling van onsamendrukbare gegevens. Het is een eenvoudig container formaat dat zowel ongecomprimeerde data als LZMA data kan bevatten en dat ook nog met meerdere verschillende LZMA codeer parameters.
LZMA2 ondersteunt willekeurig schaalbare multithreaded compressie en decompressie en efficiënte compressie van data die gedeeltelijk incompressibel is. Het kan echter enkele veiligheidsproblemen hebben en kan onveilig en minder efficiënt zijn dan LZMA. In eenvoudige woorden, dit kan nuttig voor u zijn, maar ja, het is niet zo veilig in vergelijking met LZMA.
Multi-Layer Perceptron (MLP)-gebaseerde compressie
MLP kan worden gedefinieerd als een technologie die meerdere neuronlagen gebruikt voor invoer, verwerking, en het geven van uitvoergegevens. Het kan worden geïmplementeerd voor de reductie van dimensie taken en ook compressie van gegevens. Het op MLP gebaseerde algoritme werd voor het eerst ontwikkeld in het jaar 1988 en sluit zich aan bij de reeds bestaande processen van:
- Binaire codering- standaard twee-symbool codering.
- Kwantisering- problemen van invoer van een continue reeks naar een discrete reeks.
- Transformatie in het ruimtelijke domein- pixel voor pixel veranderingen in de gegevens.
Voor de bepaling van de optimale binaire code gebruikt het MLP-algoritme de outputs van bovenstaande processen in een decompositie neuraal netwerk.
Daarnaast werd dit algoritme gewijzigd met intuïtieve technieken die een nauwkeurige benadering van gegevens volledig op basis van naburige gegevens via backpropagatie mogelijk maakten. Het kan zeer nuttig zijn voor u in de beeld-en video-gegevens compressie.
Dee Coder- Deep Neural Network Based Video Compressie
Deep Coder wordt gedefinieerd als een Convolutional Neural Network (CNN) gebaseerd kader. Dit maakt de weergave van een alternatief voor die video compressie technieken die we hebben gebruikt zo lang. Voor voorspellende en residuele signalen worden verschillende Convolutionele Neurale Netwerken (CNNs) door dit model gebruikt.
Het voert codering van feature maps in de binaire stroom uit met gebruikmaking van scalaire kwantisering en een zeer oud en traditioneel bestandscompressie-algoritme dat Huffman-codering wordt genoemd. Er wordt beweerd dat dit model in staat is superieure prestaties te leveren in vergelijking met de bekende H.264/AVC-videocoderingsnorm.
Convolutional Neural Network (CNN) – Based compression
CNN’s worden gedefinieerd als neurale netwerken van verschillende lagen. Dit wordt vooral gebruikt voor de herkenning van beelden en de detectie van het kenmerk. Op het moment dat je het toepast op compressie, maken deze netwerken gebruik van convolutie voor het berekenen van de verbinding tussen naburige pixels. Als we het vergelijken met MLP-gebaseerde algoritmen, laten CNN’s betere compressieresultaten zien dan zij.
Dit levert ook betere super-resolutie prestaties en artefact reductie op. Daarnaast zorgen CNN-gebaseerde datacompressiealgoritmen voor verbeteringen in de kwaliteit van JPEG-beelden. Dit wordt gedaan door het verminderen van de piek signaal-ruisverhouding en de structurele gelijkenis.
CNN-gebaseerde compressie kan ook samengaan met de prestaties van de High-Efficiency Video Coding standaard. Dit wordt gedaan met behulp van entropie-schatting. Het kan ook zeer nuttig voor u bij het uitvoeren van de compressie van bestanden.
Generative Adversarial Network (GAN)-gebaseerde compressie
GANs kan worden gedefinieerd als een alternatief van neurale netwerken die gebruik maken van twee netwerken die met elkaar concurreren. Dit wordt gedaan voor de productie van meer nauwkeurige analyses en voorspellingen. In het jaar 2017 werden voor het eerst op GAN gebaseerde algoritmen ontwikkeld. Deze datacompressie-algoritmen kunnen de bestanden meer dan tweeënhalf keer kleiner comprimeren in vergelijking met traditionele veelgebruikte methoden, zoals JPEG of WebP.
GAN-gebaseerde algoritmen kunnen worden gebruikt voor real-time compressie waarbij parallelle verwerking samen wordt gebruikt. Dit algoritme werkt omdat het de beelden volledig comprimeert op basis van de meest overeenkomende kenmerken.
Wanneer de decodering wordt uitgevoerd, worden op basis van de voorspellingen die door deze kenmerken zijn gedaan, de beelden gereconstrueerd. Als we het vergelijken met compressie op basis van CNN, levert compressie op basis van GAN beelden van zeer hoge kwaliteit op door de eliminatie van tegenstrijdige verliezen.
Voorspelling door gedeeltelijke overeenkomst (PPM)
PPM is een adaptieve statistische datacompressietechniek op basis van contextmodellering en voorspelling. Deze modellen gebruiken een reeks eerdere symbolen in de ongecomprimeerde symboolstroom om het volgende symbool in de stroom te voorspellen. PPM-algoritmen kunnen ook worden gebruikt om gegevens te clusteren in voorspelde groepen bij clusteranalyse.
Het aantal voorgaande symbolen, n, bepaalt de volgorde van het PPM-model dat wordt aangeduid als PPM(n).
Er bestaan ook onbegrensde varianten waarbij de context geen lengtebeperkingen heeft en die worden aangeduid als PPM. Als op basis van alle n contextsymbolen geen voorspelling kan worden gedaan, wordt geprobeerd een voorspelling te doen met n – 1 symbool. Dit proces wordt herhaald tot een overeenkomst wordt gevonden of tot er geen symbolen meer in de context overblijven. Op dat moment wordt een vaste voorspelling gedaan.
PPM-compressie-implementaties verschillen sterk in andere details. De feitelijke symbolenselectie wordt gewoonlijk vastgelegd met behulp van rekenkundige codering, hoewel het ook mogelijk is Huffman-codering of zelfs een soort woordenboekcoderingstechniek te gebruiken.
Run-length encoding (RLE)
RLW is een vorm van verliesloze gegevenscompressie waarbij runs van gegevens (reeksen waarin dezelfde gegevenswaarde in veel opeenvolgende gegevenselementen voorkomt) worden opgeslagen als een enkele gegevenswaarde en telling, in plaats van als de oorspronkelijke run. Dit is het nuttigst voor gegevens die veel van dergelijke reeksen bevatten.
Bijv. eenvoudige grafische afbeeldingen zoals pictogrammen, lijntekeningen, Conway’s Game of Life, en animaties. Het is niet nuttig bij bestanden die niet veel runs bevatten, omdat het de bestandsgrootte sterk kan vergroten.
RLE kan ook worden gebruikt om te verwijzen naar een vroeg grafisch bestandsformaat dat door CompuServe werd ondersteund voor het comprimeren van zwart-wit afbeeldingen, maar dat op grote schaal werd verdrongen door hun latere Graphics Interchange Format (GIF). RLE verwijst ook naar een weinig gebruikt afbeeldingsformaat in Windows 3.x, met de extensie rule, wat een Run Length Encoded Bitmap is, gebruikt om het Windows 3.x opstartscherm te comprimeren.
bzip2
bzip2 is een gratis en open-source datacompressieprogramma dat gebruik maakt van het Burrows-Wheeler algoritme. Het comprimeert alleen afzonderlijke bestanden en is geen bestandsarchiver. Het is ontwikkeld door Julian Seward en wordt onderhouden door Federico Mena. Seward bracht de eerste publieke versie van bzip2 uit, versie 0.15, in juli 1996. De stabiliteit en populariteit van de compressor groeide in de daaropvolgende jaren, en Seward bracht eind 2000 versie 1.0 uit.
Na een onderbreking van negen jaar van updates voor het project sinds 2010. Op 4 juni 2019 aanvaardde Federico Mena het onderhouderschap van het bzip2-project. bzip2 comprimeert gegevens in blokken met een grootte tussen 100 en 900 kB.
Het gebruikt de Burrows-Wheeler-transformatie om veel voorkomende tekenreeksen om te zetten in reeksen van identieke letters. Vervolgens wordt de “move-to-front”-transformatie en Huffman-codering toegepast. bzip2’s voorouder bzip gebruikte rekenkundige codering in plaats van Huffman. De verandering werd doorgevoerd vanwege een softwareoctrooibeperking.
Huffman-codering
Huffman-codering is een bepaald type optimale prefix-code dat algemeen wordt gebruikt voor verliesloze gegevenscompressie. Voor het vinden of gebruiken van een dergelijke code wordt gebruik gemaakt van Huffman-codering, een algoritme dat is ontwikkeld door David A. Huffman toen hij student was aan het MIT, en dat is gepubliceerd in het in 1952 gepubliceerde artikel “A Method for the Construction of Minimum-Redundancy Codes.
De uitvoer van Huffman’s algoritme kan worden gezien als een codetabel met variabele lengte voor het coderen van een bronsymbool (zoals een teken in een bestand). Het algoritme leidt deze tabel af uit de geschatte waarschijnlijkheid of frequentie van voorkomen (gewicht) voor elke mogelijke waarde van het bronsymbool.
Zoals bij andere entropie-coderingsmethoden worden meer voorkomende symbolen in het algemeen met minder bits gerepresenteerd dan minder voorkomende symbolen. De methode van Huffman kan efficiënt worden geïmplementeerd. Het vinden van een code in tijd lineair met het aantal invoergewichten als deze gewichten zijn gesorteerd.
ZStandard
Zstandard (of zstd) is een verliesloos gegevenscompressie-algoritme ontwikkeld door Yann Collet bij Facebook. Zstd is de referentie-implementatie in C. Versie 1 van deze implementatie werd op 31 augustus 2016 vrijgegeven als gratis software.
Zstandard is ontworpen om een compressieratio te geven die vergelijkbaar is met die van het DEFLATE-algoritme (ontwikkeld in 1991 en gebruikt in de originele ZIP- en gzip-programma’s), maar sneller, vooral voor decompressie. Het is instelbaar met compressieniveaus variërend van negatief 5 (snelste) tot 22 (traagste compressiesnelheid, maar beste compressieverhouding).
Zstd op z’n maximale compressie geeft een compressie ratio dicht bij LZMA, LZAHM, en PPM. Het presteert beter dan LZA, of bzip2. Zstandard bereikt de huidige Pareto grens, omdat het sneller decomprimeert dan elk ander momenteel beschikbaar algoritme met een vergelijkbare of betere compressieverhouding
Woordenboeken kunnen een grote impact hebben op de compressieverhouding van kleine bestanden, dus Zstandard kan een door de gebruiker aangeleverd compressiewoordenboek gebruiken. Het biedt ook een training mode, in staat om een woordenboek te genereren uit een set van samples.
Conclusie
Deze gegevens compressie algoritmen zullen u helpen om de bestandsgrootte te optimaliseren. Verschillende soorten datacompressie algoritmen zullen u verschillende resultaten geven. Als u hier echter niet het juiste algoritme kunt vinden, kunt u een kijkje nemen in deze gids en uw zoekopdracht verfijnen. Er is geen tekort aan algoritmen, maar u moet specifiek zijn bij het zoeken naar het juiste algoritme voor uw project.
Ik hoop dat dit artikel nuttig voor u was bij het kiezen van het beste datacompressiealgoritme op basis van uw behoeften. Dank u voor het lezen van dit artikel. U kunt ook kijken op Beste encryptie en Hashing algorithms.
Stay Tuned