Af en eller anden grund kan du faktisk passe 2 millioner pixel i et billede uden at bruge 1, 97 megabyte plads. Jeg fandt en sød 1080p tapet (som har ca. 2 millioner pixel) og hentede den. Kontrollerer egenskaberne, jeg bemærkede noget mærkeligt: ​​Det tog kun 230 KB plads på min harddisk. Hvorfor det? For en person, der ikke forstår billedkomprimering, virker det som magi. Men når du kender emnet, forstår du, hvordan nogle billeder er større end andre, på trods af antallet af pixels, de optager på skærmen. Tiden er kort, så lad os tage et hurtigt dykke ind i de grundlæggende principper bag billedkomprimering.

Metoder, Tilgange, Algoritmer Galore.

Det er naivt at tro, at der kun er en måde at komprimere et billede på. Der er forskellige metoder, hver med en unik tilgang til et fælles problem, og hver tilgang anvendes i forskellige algoritmer for at nå en tilsvarende konklusion. Hver algoritme er repræsenteret af et filformat (PNG, JPG, GIF, osv.). For nu vil vi tale om de metoder, der generelt bruges til at komprimere billeder, hvilket vil forklare, hvorfor nogle af dem optager så meget mindre plads.

Lossless Compression

Når du tænker på ordet "lossless" i forbindelse med billedkomprimering, tænker du sandsynligvis på en metode, der forsøger at gøre det hårdest at bevare kvaliteten, mens du stadig opretholder en forholdsvis lille billedstørrelse. Det er meget tæt på sandheden. Som en metode minimerer tabsfri kompression forvrængning så meget som muligt, idet billedklarheden bevares. Det gør det ved at opbygge et indeks for alle pixels og gruppere ensfarvede pixels sammen. Det er ligesom om, hvordan filkomprimering virker, bortset fra at vi beskæftiger os med mindre dataenheder.

DEFLATE er blandt de mest almindelige algoritmer til denne type job. Den er baseret på to andre algoritmer (Huffman og LZ77, hvis du er en bogorm), og den har en meget prøvet og sand måde at gruppere data på i billeder. I stedet for at bare løbe gennem dataens længde og lagre flere forekomster af en pixel med samme farve i en enkelt dataenhed (kendt som kørsel med længdekodning), griber den i to eksemplarer af strenge fundet i hele koden og sætter en "pointer" for hver duplikat fundet. Hvor en bestemt streng data (pixels) bruges ofte, erstatter den alle disse pixels med et vægtet symbol, som yderligere komprimerer alt.

Bemærk hvordan du kører med længdekoder og DEFLATE, ingen af ​​pixelerne bliver faktisk spist eller tvunget til at ændre farve. Brug af denne metode resulterer rent i et billede, der er identisk med den rå original. Den eneste forskel mellem de to ligger i, hvor meget plads faktisk er taget op på din harddisk!

Lossy Compression

Som navnet antyder, tably compression gør et billede miste noget af dets indhold. Når det tages for langt, kan det faktisk gøre billedet uigenkendeligt. Men lossy betyder ikke, at du eliminerer pixels. Der er faktisk to algoritmer, der ofte bruges til at komprimere billeder på denne måde: transform kodning og chroma subsampling . Den førstnævnte er mere almindelig i billeder og sidstnævnte i video.

Med transform kodning, er et billed farver i gennemsnit ud ved hjælp af en særlig matematisk formel kaldet diskret cosinus transformation. Billedet lider farveforringelse og kan introducere artefakter (underlig pixellation i tilfældige punkter af billedet), når de bruges overdrevent. Denne særlige algoritme udgør sin klodset med en stor fordel: Du kan diktere, hvor meget kvalitet du vil forblive med billedet. Med lossless kompression er det nærmeste, du kan komme til at manipulere kvalitet holistisk, ved at indstille antallet af farver, som hvert billede skal have.

Chroma-subsampling tager en anden tilgang. I stedet for at gennemsnitlige små farveblokke, som også kan påvirke billedets lysstyrke, forsøger den omhyggeligt at holde lysstyrken ens på alle områder. Dette tricks dine øjne ind i ikke let at bemærke nogen dyb i kvalitet. Det er faktisk fantastisk til kompression af animationer, og det er derfor, det bruges mere i videostrømme. Det er ikke at sige, at billeder ikke også bruger denne algoritme.

Men vent, der er mere! Google tog også et skud på en ny lossy-algoritme, kendt som WebP. I stedet for gennemsnitlig farveinformation forudsiger den en pixels farve ved at se på de fragmenter, der omgiver den. De data, der faktisk er skrevet i det resulterende komprimerede billede, er forskellen mellem den forudsagte farve og den faktiske farve. I sidste ende vil mange af forudsigelserne være nøjagtige, hvilket resulterer i et nul. Og i stedet for at udskrive en hel masse nul, komprimerer den bare dem alle sammen til et symbol, der repræsenterer dem. Billednøjagtigheden er forbedret, og komprimeringen reducerer billedstørrelsen med i gennemsnit 25 procent sammenlignet med andre lossy-algoritmer, ifølge Google.

Det er tid til spørgsmål og diskussion!

Hvis du er ny i verden af ​​billedfiler, vil du sikkert finde mindst en smule af disse oplysninger forvirrende. Hvis du har et spørgsmål, skal du skrive det i kommentarerne, og vi gør vores bedste for at svare på det. Ellers er du velkommen til at diskutere dette!