mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 1.

Podobne dokumenty
mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A

0-0000, , , itd

Przetwarzanie i transmisja danych multimedialnych. Wykład 5 Kodowanie słownikowe. Przemysław Sękalski.

Wprowadzenie Algorytm ByteRun ByteRun - przykład Algorytm RLE Przykład działania RLE Algorytm LZW Przykład kompresji LZW

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

AKD Metody słownikowe

Temat: Algorytm kompresji plików metodą Huffmana

Kodowanie informacji

teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

Algorytmy kodowania entropijnego

teoria informacji Entropia, informacja, kodowanie Mariusz Różycki 24 sierpnia 2015

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Kodowanie Huffmana. Platforma programistyczna.net; materiały do laboratorium 2014/15 Marcin Wilczewski

Cechy formatu PNG Budowa bloku danych Bloki standardowe PNG Filtrowanie danych przed kompresją Wyświetlanie progresywne (Adam 7)

Teoria Informacji - wykład. Kodowanie wiadomości

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F

Teoria informacji i kodowania Ćwiczenia

Kompresja bezstratna. Entropia. Kod Huffmana

Kodowanie informacji

Kodowanie predykcyjne

Nierówność Krafta-McMillana, Kodowanie Huffmana

Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

LZ77 LZ78. Kompresja danych. Tomasz Jurdziński. Wykład 5: kodowanie słownikowe

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

Podstawowe pojęcia. Teoria informacji

Kody Tunstalla. Kodowanie arytmetyczne

Granica kompresji Kodowanie Shannona Kodowanie Huffmana Kodowanie ciągów Kodowanie arytmetyczne. Kody. Marek Śmieja. Teoria informacji 1 / 35

Python: JPEG. Zadanie. 1. Wczytanie obrazka

Laboratorium Sieci Komputerowe

Wstęp Statyczne kody Huffmana Dynamiczne kody Huffmana Praktyka. Kodowanie Huffmana. Dawid Duda. 4 marca 2004

Kodowanie Shannona-Fano

Kodowanie i entropia

Teoria Informacji i Metody Kompresji Danych

Przetwarzanie i transmisja danych multimedialnych. Wykład 3 Kodowanie Shannona Fano i Huffmana. Przemysław Sękalski.

ZESZYTY ETI ZESPOŁU SZKÓŁ W TARNOBRZEGU Nr 1 Seria: Teleinformatyka 2013 KOMPRESJA BEZSTRATNA PLIKÓW ALGORYTM HUFFMANA

Definicja. Jeśli. wtedy

Bitmapy - format i zastosowanie. Podstawowy format plików bitmapowych, dogodność zastosowania bitmap w prostych animacjach 2D.

Formaty obrazów rastrowych biblioteki PBM

0 + 0 = 0, = 1, = 1, = 0.

1.1. Pozycyjne systemy liczbowe

Entropia Kodowanie. Podstawy kompresji. Algorytmy kompresji danych. Sebastian Deorowicz

ZADANIE 1. Rozwiązanie:

Kody blokowe Wykład 2, 10 III 2011

Kwantyzacja wektorowa. Kodowanie różnicowe.

Kompresja video (MPEG)

Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a

Kompresja dźwięku w standardzie MPEG-1

Kody Huffmana. Konrad Wypyski. 11 lutego 2006 roku

Streszczenie Komputery do przechowywania rysunków, zdjęć i innych obrazów używają tylko liczb. Te zajęcia mają ukazać w jaki sposób to robią.

Wygra Polska czy Brazylia, czyli o tym jak zwięźle zapisywać informacje

KODY SYMBOLI. Materiały KODA, A.Przelaskowski. Koncepcja przedziałów nieskończonego alfabetu

Przetwarzanie obrazu cyfrowego

Niech x 1,..., x n będzie ciągiem zdarzeń. ---

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Cała prawda o plikach grafiki rastrowej

Techniki multimedialne

Cyfrowe przetwarzanie i kompresja danych. dr inż.. Wojciech Zając

Elementy teorii informacji i kodowania

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

Analiza obrazu. wykład 3. Marek Jan Kasprowicz Uniwersytet Rolniczy 2009

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

Analiza i przetwarzanie obrazów

Kompresja JPG obrazu sonarowego z uwzględnieniem założonego poziomu błędu

Temat 7. Dekodery, enkodery

Kombinacyjne bloki funkcjonalne - wykład 3

Krzysztof Leszczyński Adam Sosnowski Michał Winiarski. Projekt UCYF

Analiza ilościowa w przetwarzaniu równoległym

Algorytmy i struktury danych

Wykład I: Kodowanie liczb w systemach binarnych. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Algorytmy podstawieniowe

Ćwiczenie nr 4: Kodowanie arytmetyczne, range coder

2 Kryptografia: algorytmy symetryczne

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Teoria informacji i kodowania Ćwiczenia Sem. zimowy 2016/2017

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

WYBRANE PROBLEMY BEZSTRATNEJ KOMPRESJI OBRAZÓW BINARNYCH

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Wstęp do Informatyki

dr inż. Jarosław Forenc

16MB - 2GB 2MB - 128MB

Instrukcje dla zawodników

Algorytmy zachłanne. dr inż. Urszula Gałązka

Tadeusz Pankowski

Systemy liczenia. 333= 3*100+3*10+3*1

Joint Photographic Experts Group

Kody splotowe. Zastosowanie

Tranzystor JFET i MOSFET zas. działania

Kompresja danych DKDA (7)

Modelowanie motywów łańcuchami Markowa wyższego rzędu

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Instrukcje dla zawodników

Komunikacja człowiek-komputer

Wydawanie czytnikami by CTI. Instrukcja

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

2. Arytmetyka procesorów 16-bitowych stałoprzecinkowych

Transkrypt:

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 1. KOMPRESJA ALGORYTMEM HUFFMANA I LZ77 Idea algorytmu Huffmana Huffman kontra LZW Sposób tworzenia słownika Etapy budowy drzewa kodu Słów kilka o teorii informacji Algorytm LZ77 Standard zlib

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 2. Idea algorytmu Huffmana Algorytm Huffmana, nazwany tak od nazwiska jego twórcy, został ogłoszony drukiem w 1952 roku, a więc ponad pół wieku temu. Mimo to pozostaje nadal jednym z najbardzoej rozpowszechnionym algorytmem kompresji bezstratnej, dzięki efektywności, względnej prostocie i brakowi zastrzeżeń patentowych. W słowniku kompresora Huffmana znajdują się wyłącznie elementy alfabetu wiadomości, tak więc rozmiar słownika jest stały i z góry znany (słownik nie jest rozbudowywany w czasie kompresji). Kody przydzielone poszczególnym znakom alfabetu są natomiast różne. Kody dobiera się w taki sposób, żeby łączna długość skompresowanej wiadomości była jak najkrótsza. Osiąga się to wtedy, gdy długość kodu dla danego elementu alfabetu jest odwrotnie proporcjonalna do jego częstości występowania w wiadomości (najczęściej występujące elementy alfabetu mają najkrótsze kody). Cechą charakterystyczną zestawu kodów Huffmana jest jego nieprefiksowość, oznacza to, że żaden kod Huffmana nie jest początkiem innego kodu. Znacznie upraszcza to budowę dekodera. W idealnym przypadku częstości występowania poszczególnych znaków alfabetu wyznaczamy dokładnie, analizując całą wiadomość. W przypadku wiadomości bardzo długich, bądź też generowanych na bieżąco, jest to niemożliwe. Wtedy mamy do wyboru kilka rozwiązań: 1. Estymacja statyczna na podstawie początku wiadomości, lub wiedzy o procesie generującym wiadomość. 2. Estymacja blokowa, dzielimy wiadomość na duże bloki i dla każdego budujemy oddzielny słownik. 3. Estymacja adaptacyjna, statystyki są korygowane na bieżąco na bazie określonej ilości ostatnich znaków (tzw. okno kompresora).

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 3. Huffman kontra LZW Nie należy uważać, że algorytm Huffmana jest zawsze lepszy od LZW, choć istotnie z reguły algorytm Huffmana daje lepszą kompresję (ale nie zawsze!). wiadomość statystyka koder budowa słownika dekoder Huffman wiadomość Należy pamiętać o dwóch potencjalnych wadach algorytmu Huffmana: Algorytm Huffmana nie posiada w słowniku sekwencji dłuższych niż 1 znak alfabetu. Algorytm Huffmana wymaga przesłania słownika do dekodera. Pierwszą wadę łatwo sobie uzmysłowić, niech sekwencją do kompresji będzie ABCABCABCABC... Tu koder LZW szybko sobie w słownik wstawi symbol ABC (czy też BCA, CAB, obojętnie) i będzie emitował jeden symbol, co więcej wkrótce zbuduje sobie również dłuższe sekwencje typu ABCABC. Huffman będzie zaś bezradnie powtarzał trzy symbole na każde ABC... Druga wada jest oczywista konieczność przesłania słownika zwiększa rozmiar kompresowanego pliku, co pogarsza ostateczną efektywność kompresji. wiadomość koder dekoder wiadomość słownik słownik LZW

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 4. Sposób budowy słownika Pierwszą czynnością przy kompresji wiadomości jest wyznaczenie częstości występowania znaków alfabetu w wiadomości, metodą dokładną, lub za pomocą estymacji. Wróćmy do naszej przykładowej linii obrazu: i wyznaczmy częstość występowania czterech znaków alfabetu: 10/36 = 0,278 11/36 = 0,306 6/36 = 0,166 9/36 = 0,250 Można przewidywać, że najdłuższy kod przypadnie w udziale kolorowi zielonemu (jest najmniej pikseli w tym kolorze), najkrótszy zaś czerwonemu (tych jest najwięcej). Kod drugi z kolei będzie niebieski, trzeci szary. Czas zbudować słownik, robimy to za pomocą drzewa. Zaczynamy od czterech liści drzewa, są to nasze elementy alfabetu, ustawione w kolejności od najrzadszego, do najczęstszego: 0,166 0,250 0,278 0,306 Następnie bierzemy dwa najrzadziej spotykane elementy i tworzymy dla nich wspólny korzeń drzewa, który zajmuje ich miejsce. Czynność tę powtarzamy, aż do połączenia w drzewo o jednym korzeniu wszystkich początkowych liści. Następnie wszystkie gałęzie odchodzące od korzenia w lewo oznaczamy jako 0, a odchodzące w prawo jako 1. Te cyfry binarne tworzą nam kod danego elementu alfabetu, który czytamy idąc od korzenia do liścia. Na następnej planszy widzimy etapy budowy drzewa, oraz gotowy słownik kodera.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 5. Etapy budowy drzewa kodu 0,166 0,250 0,278 0,306 0,416 0,278 0,306 0,166 0,250 1,000 0 1 0,416 0,694 0,166 0,250 0,278 0,306 0,416 0,166 0,250 0,278 0,694 0 1 0 1 0,306 Gotowy słownik 10 11 00 01

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 6. Trochę teorii informacji Sprawdźmy teraz jak bliski idealnemu jest ten kod. Górną granicę możliwej kompresji wiadomości wyznacza Twierdzenie Shannona o kodowaniu źródła, mówi ono, że minimalna ilość bitów jaka jest konieczna do przesłania symbolu wiadomości jest równa entropii informacyjnej tej wiadomości. Ta z kolei entropia wyraża się wzorem: n E X = i=1 p x i log 2 p x i gdzie X to nasza informacja, zaś p(x i ), to prawdopodobieństwo wystąpienia symbolu x i w wiadomości. Biorąc pod uwagę naszą linię pikseli, możemy wyliczyć, że entropia wynosi dla niej 1,96625537. Średnia zaś długość kodu Huffmana, jaki uzyskaliśmy, wynosi 2 (bo wszystkie kody mają długość 2). Widać więc, że nie jest źle, można udowodnić, że żadne kombinowanie nie da lepszych rezultatów. Przykładowo, gdybyśmy kolorowi czerwonemu (jako najczęstszemu) dali kod 1- bitowy, to zielony i szary musiałyby dostać 3 bity, wtedy średnia długość kodu wyniosłaby 1 0,306 + 2 0,278 + 3 0,250 + 3 0,166 = 2,11, a więc popsuliśmy. Skoro entropia wiadomości wynosi 1,96625537, to minimalna ilość bitów potrzebna do przesłania całości wynosi 36 razy tyle, a więc (zaokrąglając w górę do całkowitego bitu) 71 bitów. Huffman daje nam 72 bity, kodowanie LZW (5 bitów na symbol, 22 symbole) jest gorsze, bo 110 bitów, ale nie zapominajmy, że przy Huffmanie trzeba jeszcze przesłać słownik, albo tablicę prawdopodobieństw (wtedy słownik można zbudować w dekoderze). Tablica prawdopodobieństw to mogą być po prostu ilości poszczególnych pikseli, co wymaga minimum 24 bitów (po 6 na kolor) i tu zbliżamy się powoli do LZW.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 7. Trochę teorii informacji 2 Tutaj warto zauważyć ogólną małą celowość stosowania kompresji do naszej nieszczęsnej linii pikseli. Dlaczego? Otóż zauważmy, że algorytm Huffmana przydzielił po prostu dwubitowy kod każdemu z 4 kolorów, równie dobrze sami moglibyśmy wpaść na to, że skoro kolory są 4, to trzeba 2 bitów do ich zapisania... Bez żadnej zabawy w kompresje... Dlaczego tak się dzieje? Wyjaśnia to właśnie twierdzenie Shannona o kodowaniu źródła. Otóż jeżeli w informacji prawdopodobieństwa wystąpienia każdego z elementów alfabetu są jednakowe, a ilość elementów w alfabecie jest równa 2 N, to minimalną ilością bitów na symbol jest N, ni mniej ni więcej. Żadna kompresja bezstratna nie ma szans. W naszej informacji prawdopodobieństwa wystąpienia kolorów są dość wyrównane, stąd entropia jest nieco mniejsza od 2 bitów na symbol. Dla porównania wyobraźmy sobie linię złożoną z 3 pikseli zielonych, 5 czerwonych, 9 szarych i 19 niebieskich (warto zauważyć, że kolejność, wbrew pozorom jest nieistotna). Tym razem entropia KKK wiadomości jest znacznie mniejsza i wynosi 1,68. Daje to teoretyczną 19/36 = 0,528 nadzieję na spakowanie wiadomości do 61 bitów. Na kolejnym slajdzie 5/36 = 0,139 pokazano proces powstawania drzewa Huffmana dla tej drugiej 3/36 = 0,083 wiadomości, słownik znajduje się poniżej. Obliczmy najpierw średną 9/36 = 0,250 oczekiwaną ilość bitów na piksel: 0,528 1 + 0,250 2 + 0,139 3 + 0,083 3 = 1,694, a więc niewiele więcej niż entropia. Długość Gotowy słownik skompresowanej wiadomości wyniesie natomiast 19 + 9 2 + 5 3 + 3 1 3 = 61 bitów! Wycisnęliśmy więc maksa, ale nie zapominajmy, że 001 jakoś trzeba przesłać słownik... 000 01

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 8. Drzewo Huffmana, drugi przykład 0,083 0,139 0,250 0,528 0,222 0,250 0,528 0 1 0,083 0,139 1,000 0 1 0,222 0,528 0,472 0,528 0 1 0 1 0,222 0,250 0,222 0,250 0 1 0 1 0,083 0,139 0,083 0,139

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 9. Kompresja LZ77 Algorytm LZ77, opracowany przez Ziva i Lempela jest zbliżony w swojej zasadzie działania do LZW, jednak jako słownika używa określonej ilości ostatnio skompresowanych danych źródłowych. Kompresor odnajduje ciągi danych, które już wcześniej wystąpiły w danych, następnie zamiast tychże danych zapisuje długość powtórzonego ciągu, oraz jego przesunięcie do tyłu. Tak więc słownikiem kompresji jest po prostu N bajtów ostatnio przetwarzanych danych źródłowych. W praktycznych implementacjach N jest dość duże i wynosi od 2 kb do 64 kb. Dekoder oczywiście używa jako słownika zdekompresowanych danych, zatem podobnie jak LZW, LZ77 nie wymaga przesyłania słownika wraz z zakodowanym strumieniem danych. Ostatnie N bajtów danych można traktować jako okno przesuwające się nad danymi, stąd LZ77 jest nazywany algorytmem z przesuwającym się oknem. Poniższy przykład pokazuje ideę kompresji LZ77, w roli głównej nasza nieśmiertelna linia pikseli: Zakładamy, że rozmiar okna obejmie całą linię (jest przecież bardzo krótka). Na początku okno jest puste, zatem jedyne co możemy zrobić, to wyemitować symbol 0. Kolejny niebieski symbol można już zapisać jako parę długość-przesunięcie [1, -1], ale LZ77 pozwala na więcej, mianowicie na długość większą niż przesunięcie, co teoretycznie oznacza wyjście poza bufor, a w praktyce oznacza powtarzanie zawartości bufora (jest to więc zaawansowana forma kompresji ByteRun), a więc można zapisać dwa kolejne niebieskie piksele jako [2, -1]. Piksel czerwony to 1, kolejne trzy zapiszemy w stylu ByteRun jako [3, -1]. Zauważmy, że przesunięcie liczę tu od końca okna, można też liczyć je od początku, to kwestia umowna. Zielony piksel da nam 2, dwa niebieskie zaś mamy już w naszym oknie i to na dwa sposoby: [2, -7] albo [2, -8], w praktyce używa się zawsze mniejszego przesunięcia. Szary piksel jest pierwszy raz, więc 3, czerwony można albo zapisać jawnie jako 1, albo jako przesunięcie [1, -5], zależnie od tego, co zajmuje mniej miejsca.

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 10. Kompresja LZ77 (2) Dla przykładowej linii pikseli kompresja LZ77 nie będzie tak efektywna jak Huffman czy LZW, dlatego, że działa ona efektywnie gdy większość okna jest wypełniona danymi, a rozmiar okna jest spory. Standard zlib Zlib to biblioteka do bezstratnej kompresji danych, oraz nazwa formatu danych produkowanego między innymi przez tę bibliotekę. Format danych jest zdefiniowany w dokumencie RFC 1950, natomiast algorytmów kompresji może być użytych kilka, jednak najczęściej używany jest algorytm deflate, który jest kombinacją kodowania LZ77 i Huffmana. Algorytm deflate jest zdefiniowany w dokumencie RFC 1951. Bloki skompresowanych danych zabezpieczone są sumą kontrolną liczoną algorytmem ADLER-32. wiadomość koder LZ77 alfabet wiadomości + koder Huffmana alfabet długości + alfabet przesunięć koder Huffmana wiadomość skompresowana słownik statyczny

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 11. Standard zlib (2) W praktyce blok danych zlib spakowany algorytmem deflate może używać jednej z trzech metod kompresji: 1. Bez kompresji. 2. Kompresja ze statycznym słownikiem kodów Huffmana. W praktyce stosowana bardzo rzadko. Słownik statyczny jest oparty na założeniu, że najczęściej będą się trafiały znaki z alfabetu długości LZ77 od 3 do 114 bajtów (7-bitowe kody Huffmana), później kody alfabetu wiadomości od 0 do 143, kody długości LZ77 od 115 do 258 (8-bitowe kody Huffmana), najrzadziej kody z alfabetu wiadomości od 144 do 255 (9-bitowe kody Huffmana). Ta statystyka nie zawsze odpowiada rzeczywistej. 3. Kompresja z dynamicznym słownikiem kodów Huffmana (drzewo jest budowane dla każdego bloku), przed danymi przesyłane są długości kodów dla wszystkich znaków obu alfabetów (wiadomość + długości, oraz przesunięcia). Przy założeniu alfabetyczności kodu Huffmana (dla dowolnych dwóch kodów Huffmana o tej samej długości, kolejność kodów jest taka sama jak kodowanych symboli) długości kodów wystarczają do zbudowania kompletnego drzewa. kod alfabetyczny A 011 B 101 C 111 kod niealfabetyczny A 100 B 001 C 110

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 12. Standard zlib (3) Techniki zmniejszania drzewa Huffmana W standardzie zlib tylko drzewo Huffmana dla alfabetu wiadomości (obejmujące bajty od 0 do 255) jest pełne (w sumie 511 węzłów). W celu zmniejszenia drzewa długości LZ77 i przesunięć LZ77 (zwłaszcza to ostatnie byłoby bardzo duże, 65535 węzłów!) stosuje się technikę dzielenia elementu alfabetu na kod i przyrostek. Kod określa pewien zakres znaków alfabetu, natomiast przyrostek konkretny element z tego zakresu. Dzięki temu drzewo wspólnego alfabetu wiadomości i długości LZ77 ma 575 węzłów zamiast 1023, drzewo alfabetu przesunięć LZ77 zredukowano do 63 węzłów. Zakresy znaków w obu przypadkach zwiększają się w przybliżeniu wykładniczo Oto przykładowy sposób zakodowania przesunięcia 5500 bajtów: kod Huffmana dla zakresu 24 10101111100 zakres 24: 4097-6144 11 bitów (1404) 4096 + 1404 = 5500 Zastosowania Zlib jest wolny od patentów i ma licencję umożliwiającą stosowanie go w dowolnych projektach, również komercyjnych. Dzięki temu jest szeroko stosowanym standardem. Oto niektóre zastosowania: format zapisu obrazów PNG, protokół internetowy HTTP/1.1, pakiet OpenSSH, kompresory ZIP i GZIP.