Hoe Werkt Bestand Compressie Werk?

0
382

Software engineers hebben altijd nieuwe manieren ontwikkeld inbouw van een heleboel gegevens in een kleine ruimte. Dat was zo toen onze harde schijven waren klein, en de komst van het internet heeft, maakte het alleen maar belangrijker. Bestand compressie, speelt een grote rol in het verbinden van ons, en laat ons die zenden, minder gegevens langs de lijn dus die kunnen we snellere downloads en meer aansluitingen op drukke netwerken.

Dus Hoe Werkt het?

Om die vraag te beantwoorden zou inhouden dat het uitleggen van ingewikkelde wiskunde, zeker meer dan we kunnen in dit artikel behandelen, maar je hoeft niet precies te begrijpen hoe het werkt in de wiskunde te begrijpen van de basisprincipes.

De meest populaire bibliotheken voor het comprimeren van tekst rekenen op twee compressie-algoritmen, met behulp van beide op hetzelfde moment te bereiken zeer hoge compressie ratio ‘ s. Deze twee algoritmen zijn “LZ77” en “Huffman coding.” Huffman codering is heel ingewikkeld, en we niet in detail op in hier. In de eerste plaats, het maakt gebruik van een aantal mooie wiskunde toe te wijzen korter binaire codes naar de afzonderlijke letters, krimpen bestandsgrootte in het proces. Als u meer wilt weten over, bekijk dit artikel over hoe de code werkt, of deze toelichting door Computerphile.

LZ77, aan de andere kant, is relatief eenvoudig en is wat we het hier over. Het probeert te verwijderen van dubbele woorden en vervang ze met een kleinere “sleutel” dat is het woord.

Neem dit korte stukje tekst bijvoorbeeld:

De LZ77 algoritme bij het zien van deze tekst, beseffen dat het herhaald “howtogeek” drie keer, en het te veranderen is deze:

Dan, wanneer hij het wil lezen van de tekst terug, het zou vervangen door een exemplaar van (h) met “howtogeek,” brengt ons terug naar de originele frase.

We noemen compressie als dit “lossless”—de gegevens die u is hetzelfde als de gegevens die u krijgt. Niets is verloren.

In werkelijkheid, LZ77 geen gebruik maakt van een lijst van sleutels, maar in plaats daarvan vervangt de tweede en de derde keer met een link terug in het geheugen:

Dus nu, wanneer het te (h), zal het terug te kijken naar “howtogeek” en lees dat in de plaats.

Als u geïnteresseerd bent in een meer gedetailleerde uitleg, deze video van Computerphile is vrij handig.

Nu, dit is een geïdealiseerde voorbeeld. In werkelijkheid, de meeste tekst wordt gecomprimeerd met de toetsen zo klein als slechts een paar letters. Bijvoorbeeld, het woord “de” zou worden gecomprimeerd, zelfs als het verschijnt in woorden als “er” van “hun” en “dan.” Met herhaalde tekst, kunt u een aantal gek compressie ratio ‘ s. Neem deze tekst bestand met het woord “howtogeek” 100 maal herhaald. De oorspronkelijke tekst bestand is drie kb groot. Wanneer gecomprimeerd, hoewel het slechts 158 bytes. Dat is bijna 95% compressie.

Nu natuurlijk, dat is een vrij extreem voorbeeld omdat we hadden net hetzelfde woord steeds herhaald. In een algemene praktijk, krijgt u waarschijnlijk ongeveer 30-40% in de compressie met behulp van een compressie formaat zoals ZIP op een bestand dat voornamelijk uit tekst.

Dit LZ77 algoritme is van toepassing op alle binaire gegevens, door de manier waarop, en niet alleen tekst, maar de tekst is over het algemeen makkelijker te comprimeren, te wijten aan hoe veel herhaalde woorden de meeste talen gebruiken. Een taal als het Chinees is misschien een beetje moeilijker te comprimeren dan het engels, bijvoorbeeld.

Hoe Werkt de Beeld-en Video-Compressie Werk?

Video en audio compressie werkt heel anders. In tegenstelling met de tekst waar u kunt genieten van lossless compressie, en geen gegevens verloren gaan, met beelden die we hebben van zogenaamde “Compressie” waar je niet meer over een aantal gegevens. En hoe meer u comprimeren, hoe meer data u kwijt.

Dit is wat leidt tot die verschrikkelijk uitziende Jpeg ‘ s die mensen hebben geüpload, gedeeld en screenshotted meerdere keren. Elke keer dat het beeld wordt gecomprimeerd, verliest een aantal gegevens.

Hier is een voorbeeld. Dit is een screenshot heb ik dat nog niet is gecomprimeerd.

Toen hield ik dat screenshot en liep het via Photoshop meerdere keren, elke keer exporteren als een JPEG van lage kwaliteit. Hier is het resultaat.

Ziet er bijzonder slecht uit, toch?

Goed, dit is slechts een worst-case scenario, exporteren op 0% JPEG-kwaliteit. Ter vergelijking, hier is een 50% kwaliteit JPEG, die bijna niet te onderscheiden is van de bron PNG-afbeelding, tenzij u op te blazen om een kijkje te nemen.

De PNG voor deze afbeelding is 200 KB groot zijn, maar dit 50% kwaliteit JPEG is slechts 28 KB.

Hoe werkt het bespaart dus veel ruimte? Goed, het JPEG-algoritme is een staaltje van techniek. De meeste beelden opslaan van een lijst van getallen, waarbij ieder getal dat één pixel.

JPEG heeft niets van dit alles. In plaats daarvan slaat de beelden met behulp van iets genaamd een Discrete Cosinus Transformatie, dat is een verzameling van sinusgolven opgeteld bij verschillende intensiteiten. Het maakt gebruik van 64 verschillende vergelijkingen, maar de meeste van deze niet gebruikt. Dit is wat de schuifregelaar kwaliteit voor JPEG-in voor Photoshop en andere foto-apps niet—kiezen hoeveel vergelijkingen te gebruiken. De apps dan gebruik Huffman-codering voor het verminderen van de grootte van het bestand nog verder.

Dit geeft Jpeg met een waanzinnig hoge compressieverhouding, die kan verminderen een bestand dat zou wel meerdere mb ‘ s tot een paar kilobytes, afhankelijk van de kwaliteit. Natuurlijk, als je er teveel van gebruiken, moet je eindigen met dit:

Dat beeld is verschrikkelijk. Maar kleine bedragen van JPEG-compressie kan een aanzienlijke impact hebben op de grootte van het bestand, en dit maakt JPEG zeer nuttig voor de compressie van afbeeldingen op websites. De meeste foto ‘ s die je online te zien zijn gecomprimeerd op te slaan op download-tijden, vooral voor mobiele gebruikers met slechte verbindingen. In feite, alle beelden op How-To Geek zijn gecomprimeerd om het laden van pagina ‘ s sneller, en u waarschijnlijk nooit opgemerkt.

Video Compressie

Video werkt een beetje anders in beelden. Je zou denken dat ze gewoon zouden comprimeren elk frame van de video met behulp van de JPEG, en ze zeker doen, maar er is een betere methode voor video.

We gebruiken een zogenaamde “interframe compressie,” die berekent de veranderingen tussen elk frame en bewaart die. Dus, bijvoorbeeld, als u een relatief nog shot dat neemt enkele seconden in een video, een stuk van de ruimte wordt opgeslagen omdat de compressie-algoritme niet nodig om alle spullen in de scene, dat verandert niet. Interframe compressie is de belangrijkste reden dat we hebben digitale TV en web video. Zonder deze video ‘ s zou worden honderden gigabytes, meer dan de gemiddelde harde schijf grootte in 2005 als YouTube gelanceerd.

Ook, aangezien de interframe compressie werkt het beste met meestal stationaire video, dit is de reden waarom confetti ruïnes video kwaliteit.

Opmerking: GIF doet dit niet, die is de reden waarom animated GIFs zijn vaak zeer kort en klein, maar hebben nog steeds een vrij grote bestandsgrootte.

Een ander ding om in gedachten te houden over de video is de bitrate is de hoeveelheid gegevens die is toegestaan in elke seconde. Als uw bitrate van 200 kb/s, bijvoorbeeld van uw video vrij slecht. De kwaliteit gaat omhoog als de bitrate omhoog gaat, maar na een paar megabytes per seconde, krijgt u afnemende meeropbrengst.

Dit is een ingezoomde frame van een video van een kwal. De linker is in 3Mb/s, en de een aan de rechterkant is 100Mb/s.

Een 30x toename in de grootte van het bestand, maar niet veel toename in kwaliteit. In het algemeen, YouTube-video ‘ s zitten rond de 2-10Mb/s, afhankelijk van uw verbinding, als iets meer zou waarschijnlijk niet opgemerkt worden.

Deze demo is beter te werken met video, dus als je wilt om het te controleren voor uzelf, u kunt downloaden op dezelfde bitrate test video ‘ s.

Audio Compressie

Audio compressie werkt op vergelijkbare wijze als tekst en beeld compressie. Waar JPEG verwijdert detail van een afbeelding die je niet ziet, audio compressie doet hetzelfde voor geluiden. Je zou het niet nodig zijn om te horen, het kraken van het plectrum op de string als de werkelijke gitaar is veel, veel luider.

MP3 gebruikt ook bitrate, variërend van het lage einde van de 48 en 96 kbps (de low-end) 128 en 240kbps (vrij goed) tot 320 kbps (high-end audio), en je zal waarschijnlijk alleen het verschil horen met een uitzonderlijk goede hoofdtelefoon (en oren).

Er zijn ook lossless compressie codecs voor audio—de belangrijkste FLAC—die gebruik maakt van LZ77 codering te leveren volledig lossless audio. Sommige mensen zweren bij FLAC is een perfecte audio kwaliteit, maar met de prevalentie van de MP3, het lijkt de meeste mensen het niet kunnen zien of niet let op het verschil.