Kolory i kompresja

20.04.2010 - Krzysztof Dryś
TrudnośćTrudność

Czy potrzebujemy kompresji?

Najpierw spróbujmy zrozumieć, dlaczego potrzebujemy algorytmów kompresji. W tym celu poszukajmy odpowiedzi na pytanie: w jaki sposób zapamiętać obrazek na dysku? Można zwyczajnie zapisać odpowiadające mu trzy macierze R,G i B. Policzmy, ile by to zajęło miejsca. Obrazek, na którym będziemy dzisiaj robili przekształcenia, ma wymiary 512 na 512 pikseli. Każda z liczb w macierzach $ R $, $ G $ i $ B $ pamiętana jest na 8 bitach (czyli jednym bajcie). Mnożąc to przez siebie otrzymujemy $ 512 \times 512 \times 3 \times 8 \mbox{ bitów} = 768 \mbox{KB} $.

Poniżej możecie sami przekonać się, że ten sam obrazek zapisany w formacie png zajmuje już tylko około 485KB. Jeżeli go zapisać w formacie jpg, przy wybraniu najsłabszej kompresji, to zajmuje on 241KB. Wreszcie zapis w formacie jpg, przy wybraniu trochę mocniejszej kompresji, skutkuje plikiem o wielkości 40KB. Widać więc, że jest o co walczyć!

Straty kompresji stratnej

Obrazki zapisane w formacie png są większe od tych w formacie jpg. Ale mają jedną przewagę. Otóż png jest formatem bezstratnym, natomiast jpeg stratnym. Co to znaczy? Jeżeli zapiszemy obrazek w formacie png a potem ponownie otworzymy, to zobaczymy to samo, co zapisywaliśmy. Nie jest to prawdą dla formatu jpeg. Tutaj zapisany obrazek różni się trochę oryginału. Jak bardzo? To zależy od wybranego sposobu kompresji.

alternative text alternative text alternative text alternative text Lewy górny róg: obrazek zapisany w formacie png zajmuje 485KB. Prawy górny róg: Zapis w formacie jpg oznacza 241KB przy słabej kompresji. Lewy dolny róg: Trochę mocniejsza (a więc trochę bardziej stratna) kompresja oznacza 40KB. Prawy dolny róg: mocna (a więc i mocno stratna) kompresja jpg zmniejsza plik do zaledwie 14 KB, ale powoduje duże zniekształcenia. Możecie kliknąć na obrazki, żeby je powiększyć i lepiej się im przyjrzeć.

Co mamy w planie?

W tym artykule zobaczmy dwa algorytmy służące do kompresji: bezstratny i stratny. Pierwszy stanowi podstawę kompresji wszystkich danych, nie tylko obrazków. Drugi natomiast jest (pierwszą) częścią kompresji jpeg.

5
Twoja ocena: Brak Ocena: 5 (1 ocena)

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com