Kompresja danych
Transkrypt
Kompresja danych
Programy kompresujące i archiwizery Program kompresujący to taki program, który potrafi zmniejszyć objętość danych. Musi istnieć możliwość przywrócenia skompresowanych danych do pierwotnej postaci. Dane są pobierane z pliku wejściowego i zapisywane do pliku wyjściowego. Program archiwizujący łączy kilka plików w jeden (który może być potem skompresowany). Kompresując wstępnie zarchiwizowane pliki danych uzyskuje się lepszy stopień kompresji niż przy rozdrobnionych, pojedynczych plikach. Program kompresujący tworzy więc jeden skompresowany plik wyjściowy dla każdego pliku wejściowego. Przykładem kompresora jest GZIP, a archiwizera TAR, a połączonego archiwizerakompresora ARJ. Istnieje jednak dowolność w nazewnictwie - każdy program, który wiąże się z kompresją danych określa się mianem "kompresora", "pakera", czy "archiwizera". Podstawowym zastosowaniem kompresji jest transmisja danych w sieciach, w Internecie. Jest to związane z ograniczoną szybkością połączeń. Objętość tworzonych archiwów zależy od typu kompresowanych danych. Im niżej znajdują się dane na tym wykresie, tym mniej będą zajmowały po kompresji. Jak widać najlepiej kompresują się teksty, pliki MIDI, nieźle pliki wykonywalne, natomiast nie ma sensu kompresja archiwów stworzonych przez inne programy i wcześniej skompresowanych formatów graficznych i muzycznych jak GIF, JPEG, MPEG czy RealAudio. Najpopularniejszym formatem archiwizacji danych jest obecnie ZIP (standard kompresji w Internecie). Liczba wykorzytujących go aplikacji jest bardzo duża i stale się powiększa. Można się czasem również spotkać ze starszymi formatami: ARC, LZH/LHA, ZOO, czy popularnym ARJ. W systemach UNIXowych standardem jest GZIP, TAR i COMPRESS. Coraz częściej można spotkać archiwa rosyjskiego RARa. Niektóre archiwizery pozwalają w pewnych sytuacjach na naprawę niewielkich uszkodzeń archiwum recovery record. Kompresję danych stosuje się nie tylko w komputerach, ale także w wielu urządzeniach elektronicznych, na przykład telewizji HDTV, cyfrowym wideo czy PhotoDisc. Za twórcę i jednego z pierwszych "wynalazców" kompresji uważa się Claude'a Shannona, który pracował nad komunikacją, informacją oraz sposobami przesyłania i przechowywania danych. Są dwa rodzaje kompresji: • ilościowa (bezstratna); • jakościowa. W pierwszym przypadku wielokrotna kompresja i dekompresja nie powodują utraty żadnej części informacji. Dane są po prostu wiernie zakodowywane i rozkodowywane. Kompresję ilościową można realizować: • statycznie - dane są przeglądane w całości, po czym w całości są kompresowane lub dekompresowane; • dynamicznie - dane w miarę nadchodzenia kolejnych bitów) są kompresowane lub dekompresowane. Kompresja jakościowa dopuszcza zmianę danych. Algorytmy należące do tej grupy pozwalają na utratę szczegółów w zamian za duży stopień upakowania. Takie zjawisko jest dopuszczalne na przykład przy zapisie obrazów lub dźwięków. Metodę taką zastosowano na przykład w formacie zapisu obrazów JPEG. Kompresja danych polega na wykorzystywaniu uporządkowanych sekwencji bitów w pliku i ich zastępowaniu w archiwum krótszymi. Współczynnik kompresji jest miarą stosunku rozmiaru pliku pierwotnego do jego rozmiaru po kompresji. Dane na dysku są kompresowane poprzez usunięcie nadmiarowych sekwencji bajtów. Pliki z wieloma powtarzającymi się sekwencjami bajtów, na przykład pliki grafiki bitowej takie jak PaintBrush, kompresują się o wiele efektywniej niż pliki bez takich sekwencji. Maksymalnym współczynnikiem kompresji jest 16:1. Metody kompresji danych są często stosowane dla bazy danych. Używa się do tego kompresji Huffmana. Kompresja fraktalna pozwala osiągnąć kompresję rzędu 0,0001.Twórca fraktali jest Benoit Mandelbrot (urodzony w 1924 roku w Warszawie). Jako przykład posłuży lisic paproci, płatek śniegu. Listki składowe paproci składają się z pomniejszonych liści, które podobne są do całości. Podobieństwo to opisuje się w formie przekształcenia odwzorowującego cały fraktal na jego część. Obraz w postaci fraktalnej zajmuje o wiele mniej miejsca niż ten sam rysunek zapisany piksel po pikselu. Poza tym daje się on dowolnie skalować (tak jak grafika wektorowa). Format wykorzystujący kompresję fraktalami to IFS (Iterative Function Systems) firmy Iterative Systems.