background image

 

 

Rodzaje i metody 

kompresji w różnych 

systemach 

operacyjnych

background image

 

 

Kompresja JPG
Kompresja MPEG
Kompresja Mp3
Dos – Arj
Windows – WinRar
Linux - tar

Spis treści

Rodzaje kompresji

- stratna
- bezstratna

Algorytmy kompresji

- Huffmana
- statyczne kodowanie Huffmana
- ByteRun
- Kompresja fraktalna

background image

 

 

Kompresja stratna to metody zmniejszania ilości bitów potrzebnych do 
wyrażenia danej informacji, które nie dają gwarancji, że odtworzona 
informacja będzie identyczna z oryginałem. Dla niektórych danych, algorytm 
kompresji stratnej może odtworzyć informację w sposób identyczny. 
Kompresja stratna jest możliwa ze względu na sposób działania ludzkich 
zmysłów, tj. wyższą wartość pewnych części danych nad innymi. Algorytmy 
kompresji stratnej zazwyczaj posługują się modelami psychoakustycznymi, 
psychowizualnymi etc., aby odrzucić najmniej istotne dane o dźwięku, 
obrazie, pozostawiając dane o wyższej wartości dla rozpoznawania tej 
informacji (akustycznej, wizualnej) przez zmysły. Ilość odrzucanych danych 
jest zazwyczaj określana przez stopień kompresji. Z tego też względu nie 
istnieją algorytmy kompresji stratnej, które można stosować do dowolnego 
typu danych. Np. kompresja stratna plików wykonywalnych byłaby 
praktycznie niemożliwa do wykonania, gdyż nie jest to informacja 
odczytywana przez zmysły, a przez maszynę. 
Zwykle kompresję stratną stosuje się do: 

•obrazków

•dźwięków

•ruchomych obrazów, np. w filmie 

Kompresja stratna

background image

 

 

Kompresja stratna

Przy danych audiowizualnych zazwyczaj kompresuje się osobno dźwięk, a 
osobno obraz. Prostym przykładem kompresji stratnej jest np. zachowanie 
tylko, co drugiego piksela, lub odrzucenie 2 najmniej istotnych bitów. Takie 
metody jednak nie dają zazwyczaj tak zadowalających rezultatów jak oparte 
na modelach psychozmysłowych. 
Do najpopularniejszych należą:  
Obraz: 

-JPEG, podstawa algorytmy MPEG, przyjmuje się że daje najlepsze efekty 
objętość/jakość
Video: 
- DivX, przy odpowiednich warunkach może skompresować zawartość płyty 
DVD na zwykłą CD, bez widocznych różnic. 

-  MPEG,  jedną  z  jego  odmian  stosuje  się  przy  filmach  na  DVD,  bardzo 
wysoka jakość, połączona z większymi objętościowo plikami (100Mb DivX = 
ok.350Mb MPEG). 

-  Real  Video,  niską  jakość  obrazu  rekompensuje  mała  objętość  danych 
dzięki czemu wykorzystywany jest przy transmisjach na żywo.

Audio: 

-  MP3,  najpopularniejsze  kodowanie  stratne  audio,  stosuje  model 
psychoakustyczny Instytutu Furenhoffer'a i Firmy Tomphson. 

-  Real  Audio,  podobnie  jak  Real  Video,  rekompensuje  straty  jakości  małą 
objętością, stosowany głównie do transmisji na żywo. 

background image

 

 

Kompresja bezstratna (ang. lossless compression) to metody przestawiania 
danej informacji w postaci zawierającej mniejszą liczbę bitów, tak żeby całą 
informację dało się z tej postaci odtworzyć 
Twierdzenie o zliczaniu (counting theorem) 
Niemożliwe  jest  skonstruowanie  funkcji  przekształcającej  odwracalnie 
informację  na  informację  (czyli  funkcji  kompresji  bezstratnej),  która  nie 
wydłuża jakieś informacji o przynajmniej 1 bit, chyba że nie kompresuje ona 
żadnej informacji. 
Dowód: 
  Załóżmy  że  dana  funkcja  kompresuje  choć  jedną  dowolną  wiadomość  do 
długości N bitów z dowolnej większej długości. Jest X wiadomości o długości 
nie większej od N bitów. Jeśli żadna z wiadomości zawierających nie więcej 
niż  N  bitów  nie  została  wydłużona,  to  w  wyniku  otrzymujemy  przynajmniej 
X+1  wiadomości  o  długości  nie  większej  niż  N  bitów.  Ponieważ  X  jest 
skończone  to  X+1>X,  a  więc  jest  to  sprzeczne  z  założeniem  że  takich 
wiadomości 

jest 

X. 

Co 

należało 

udowodnić. 

 

Skonstruowanie  funkcji,  która  wydłuża  o  nie  więcej  niż  1  bit  jest 

trywialne. Dla dowolnej funkcji f(x), niech f'(x) będzie: 
       dla f(x) zawierającego mniej bitów niż x: f'(x)=<0,f(x)> 

       dla f(x) zawierającego więcej bitów niż x: f'(x)=<1,x> 

    dla  f(x)  zawierającego  tyle  samo  bitów  co  x:  f'(x)=<0,f(x)>  lub 

f'(x)=<1,x> (nie ma to znaczenia)

Kompresja bezstratna

background image

 

 

Algorytm Huffmana (ang. Huffman coding) to jeden z najprostszych, jednak 
niezbyt efektywnych systemów bezstratnej kompresji danych. 
 

Praktycznie nie używa się go samodzielnie, jednak często używa się 

go jako ostatniego etapu w różnych systemach kompresji, zarówno 
bezstratnej jak i stratnej. 
 

Algorytm Huffmana to system przypisywania skończonemu zbiorowi 

symboli o z góry znanych prawdopodobieństwach kodów o zmiennej liczbie 
bitów. Później symbole te są zastępowane odpowiednimi bitami na wyjściu. 
Symbole te to najczęściej po prostu bajty, choć nie ma żadnych przeszkód 
żeby było nimi coś innego.

Algorytm Huffmana

background image

 

 

1. Dla każdego symbolu S tworzymy węzeł o wartości równej 

prawdopodobieństwu wystąpienia S. Prawdopodobieństwa nie muszą w 
sumie dawać zera, muszą jedynie zachować proporcje, tak więc można 
równie dobrze używać np. ilości wystąpień danego znaku. 

2. Bierzemy 2 wolne węzły z najmniejszymi wartościami (jeśli kilka węzłów 

ma taką samą wartość bierzemy dowolny z nich) i łączymy je jako 2 
podgałęzie nowego węzła. Węzeł ten ma wartość równą sumie wartości 
obu węzłów. 

3. Powtarzamy tak długo dopóki jest więcej niż 1 wolny węzeł. 

Kody dla znaków obliczamy w następujący sposób - idąc od 

ostatniego wolnego węzła - w lewo bit 0, w prawo bit 1. 

Jednym z głównych problemów stosowania statycznego algorytmu 

Huffmana jest konieczność transmisji całego drzewa lub całej tablicy 
prawdopodobieństw (zwykle to drugie jako bardziej efektywne). 
 

Lepszą kompresję, kosztem jednak bardzo szybkiego wzrostu 

wymagań pamięciowych, uzyskuje się kodując kilka kolejnych znaków na 
raz, nawet jeżeli nie są one skorelowane. 

Algorytm statycznego 

kodowania Huffmana

background image

 

 

Tradycyjne metody kompresji danych graficznych 

powodują jedynie kilkukrotną (od 2 do 5 razy) redukcję ich 
rozmiarów. Wśród profesjonalistów prawdziwą furorę robi 
nowy sposób kodowania obrazów - tzw. kompresja fraktalna. 
Dzięki niej można osiągnąć kompresję rzędu 0,0001 stopni 
kompresji (przy założeniu utraty dokładności informacji). 

Pojęcie fraktala pojawiło się w latach 

siedemdziesiątych.Wprowadził je Benoit Mandelbrot dla opisu 
klasy zbiorów, które uzyskał za pomocą komputera podczas 
badań wahań akcji giełdowych. Nazwę "fraktal" 

(ang. 

fractal) utworzono na bazie łacińskiego słowa "fractus" - 
złamany. Tłumacząc, czym jest fraktal, zazwyczaj daje się 
przykład liścia paproci albo płatka śniegu. Za tym pojęciem 
kryje się bowiem twór "podobny do samego siebie", to znaczy 
taki, że przy jego dowolnym powiększeniu otrzymuje się 
zawsze podobny obraz.
 

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ęść. Fragmenty chmur są podobne do całych obłoków, a 
gałęzie podobne są do drzew.

Kompresja fraktalna

background image

 

 

Format wykorzystujący kompresję fraktalami to IFS (Iterative Function 
Systems) firmy Iterative Systems. Sam algorytm oferowany jest za ciężkie 
pieniądze przez wymienioną wyżej firmę, a z grubsza polega on na podziale 
obrazu na części i dopasowywaniu do nich funkcji IFS w taki sposób, aby 
różnica pomiędzy oryginałem a odtworzonym obrazem była jak najmniejsza. 
Rezultaty są jeszcze lepsze niż w plikach JPEG, ale kompresja trwa dużo 
dłużej. Dekompresja jest błyskawiczna, a obraz można odtworzyć w dowolnej 
rozdzielczości bez zauważalnych efektów pikselizacji.
 

Ideą kompresji fraktalnej jest znajdowanie podobieństwa pomiędzy 

poszczególnymi fragmentami obrazu. Aby wykryć jakiekolwiek 
podobieństwo, należy podzielić obraz na rozłączne wycinki, tzw. płatki, 
pokrywające całą jego powierzchnię. Dla każdego wydzielonego płatka 
poszukuje się transformacji innego fragmentu obrazu, która da w wyniku 
taki płatek. Gdy znajdziemy transformacje dla wszystkich płatków, będziemy 
dysponować zbiorem reguł dla całego obrazka, który można wydajnie 
zapisać. Samopodobieństwo fragmentów obrazu opisywane jest systemami 
funkcji iteracyjnych. Systemy takie składają się z pewnej liczby 
transformacji reprezentujących obrót, przesunięcie i skalowanie. 
Transformacje są regułami na tworzenie obrazu i wymagają niewielkiej ilości 
pamięci na ich przechowanie. Przechowywanie reguł tworzenia obrazu 
zamiast bezwzględnych wartości pikseli pozwala na osiągnięcie wysokiej 
stopy kompresji.

Kompresja fraktalna

background image

 

 

Jest najprostszym istniejącym sposobem kompresji danych. Nie jest zbyt 
skomplikowany w implementacji, ma małe wymagania pamięciowe i 
wreszcie jest szybki zarówno podczas kompresji, jak i dekompresji- 
wykonywanie tych operacji "w locie" (tzn. z dysku lub na dysk) jest 
praktycznie nieodczuwalne. Tu jednak zalety tego algorytmu się kończą. 
ByteRun jest bardzo mało efektywny. O ile dobrze radzi sobie z danymi, w 
których występują ciągi jednakowych bajtów, to gdy jest to np. zwykły plik 
tekstowy (z dużym prawdopodobieństwem można przyjąć, że liczba 
występujących obok siebie identycznych znaków jest mała), wtedy plik 
wynikowy (spakowany) może być dłuższy od oryginału! Nie oznacza to 
jednak, że algorytm ten jest bezużyteczny -- wystarczy tylko wiedzieć, do 
jakich danych można go użyć. Idealnie nadaje się do zastosowania we 
własnych programach, które korzystają z zewnętrznych, ładowanych plików 
z danymi, co do których mamy pewność, że kompresja przyniesie 
spodziewany efekt. Osiągnięcie stopnia kompresji 10:1 jest całkiem realne 
(np.: można je uzyskać dla pliku zawierającego wzór czcionki w formacie 
RAW, który z 32 000 bajtów "spakował" się do 3276 bajtów). Można ten 
sposób kompresji stosować do wszelkiego rodzaju plików graficznych, w 
których każdy kolor można identyfikować innym ciągiem zerojedynkowym. 
Wspominając o zastosowaniach, warto dodać, że ByteRun jest wewnętrznym 
formatem kompresji plików graficznych IFF. 

Kompresja ByteRun

background image

 

 

Kompresja ByteRun polega na zliczaniu leżących obok siebie takich samych 
bajtów i zapisywaniu na wyjście liczby takich powtórzeń pomniejszonej o 
jeden oraz samego bajtu. W przypadku ciągu bajtów różnych od siebie, na 
wyjście zapisuję ciąg tych bajtów. Na przykład, jeżeli chcę poddać kompresji 
ciąg bajtów: ABABABAAAAAABBBBBBBBCCABCDEEEEEEABCD 
postępowanie będzie następujące:
        pierwsze sześć bajtów są różne, więc zapisuję je na wyjście; zawartość 

pliku wyjściowego: ABABAB 
        kolejne sześć bajtów jest identyczne, na wyjście dopisuję liczbę 

powtórzeń zmniejszoną o jeden oraz bajt, który się powtarza, podobnie z 
następnymi ośmioma i kolejnymi dwoma; zawartość pliku wyjściowego: 
ABABABA5B7C1 
        następne cztery bajty są różne -- postępuję jak w pierwszym kroku: 

zawartość pliku wyjściowego: ABABABA5B7C1ABCD 
        kolejne sześć bajtów jest identycznych, postępuję jak w pierwszym 

kroku: zawartość pliku wyjściowego: ABABABA5B7C1ABCDE5 
        ostatnie cztery bajty są różne, więc ostateczna zawartość pliku 

wyjściowego będzie następująca: ABABABA5B7C1ABCDE5ABCD. 
Z powyższego przykładu można wyciągnąć następujące wnioski: 
1.      zysku nie ma, jeśli sąsiadują ze sobą tylko dwa identyczne bajty; 
2.      jeżeli w danych poddawanych kompresji nie wystąpią ciągi 
jednakowych bajtów (więcej niż dwa), to długość danych po kompresji 
będzie w najgorszym wypadku większa od oryginału.

Kompresja ByteRun

background image

 

 

Kompresja JPEG

JPEG to jeden z formatów plików graficznych i jednocześnie nazwa 
algorytmu kompresji danych zastosowanego w tym formacie oraz skrót 
niezależnej grupy ekspertów, która wmyśliła ten algorytm 
 

JPEG jest formatem plików stworzonym do przechowywania 

obrazków, które wymagają "pełnego koloru", ale nie mają zbyt wielu ostrych 
krawędzi i małych detali - a więc zdjęć pejzaży, portretów i innych 
"naturalnych" obiektów. 
 

Algorytm kompresji używany przez JPEG jest algorytmem stratnym, 

tzn. w czasie jego wykonywania tracona jest bezpowrotnie część pierwotnej 
informacji 

• obrazek jest konwertowany z kanałów czerwony – zielony - niebieski na 
jasność i kanały 2 barwy. Ludzie znacznie dokładniej postrzegają drobne 
różnice jasności od drobnych różnic barwy, a więc użyteczne jest tutaj użycie 
różnych parametrów kompresji. Krok nie jest obowiązkowy.(opcjonalnie 
można nie wykonywać tego kroku)

• wstępnie odrzucana jest część pikseli kanałów barwy, ponieważ ludzkie 
oko ma znacznie niższą rozdzielczość barwy niż rozdzielczość jasności. 
Można nie redukować wcale, redukować 2 do 1 lub 4 do 1. 

• kanały są dzielone na bloki 8x8. W przypadku kanałów kolorów, jest to 8x8 
aktualnych danych, a więc zwykle 16x8. 

background image

 

 

Kompresja JPEG

•na blokach wykonywane jest DCT. Zamiast wartości pixeli mamy teraz 
średnią wartość wewnątrz bloku oraz częstotliwości zmian wewnątrz bloku, 
obie wyrażone przez liczby zmiennoprzecinkowe. Transformata DCT jest 
odwracalna, więc na razie nie tracimy żadnych danych.

• Zastąpienie średnich wartości bloków przez różnice wobec wartości 
poprzedniej. Poprawia to w pewnym stopniu współczynnik kompresji 

• Kwantyzacja, czyli zastąpienie danych zmiennoprzecinkowych przez liczby 
całkowite. To właśnie tutaj występują straty danych. Zależnie od parametrów 
kompresora, odrzuca się mniej lub więcej danych. Zasadniczo większa 
dokładność jest stosowana do danych dotyczących niskich częstotliwości niż 
wysokich 

• współczynniki DCT są uporządkowywane w taki sposób żeby zera leżały 
obok siebie. 

• współczynniki niezerowe są kompresowane algorytmem Huffmana. Są 
specjalne kody dla ciągów zer. 

Wielką innowacją algorytmu JPEG była możliwość kontroli stopnia kompresji 
w jej trakcie, co umożliwia dobranie jego stopnia do danego obrazka, tak aby 
uzyskać jak najmniejszy plik, ale o zadowalającej jakości. Format JPEG, obok 
formatu GIF i PNG jest najczęściej stosowanym formatem grafiki na 
stronach WWW.

background image

 

 

Przykład kompresji JPEG

Obrazek podstawowy, przed skompresowaniem zajmuje 
196662b 

Obrazek potraktowany silną kompresją. Wg programu 
kompresującego po DCT dane zostają uproszone do 
poziomu ok. 25% Rozmiar po kompresji: 4070b. Efekt 
pocięcie raczej niewidoczny, ale widać przekłamania w 
kolorach 
Obrazek potraktowany bardzo silną kompresją. Wg 
programu kompresującego po DCT dane zostają 
uproszone do poziomu ok.5% Rozmiar po kompresji: 
1741b. Widoczne silne "pocięcie" obrazka na kwadraty 
oraz dużo przekłamań w kolorach 

background image

 

 

Kompresja MPEG

Nazwa kompresji MPEG pochodzi nie od sposobu jej działania, ale od grupy, 
która ją stworzyła - Motion Picture Expert Group. Początki MPEG sięgają 
początku lat 80. Jej pierwowzorem była M-JPEG, polegająca na kompresji 
poszczególnych klatek do formatu JPEG wraz z informacją o kolejności ich 
odtwarzania. Ten format do dziś używany jest w prostych kartach służących 
do nieliniowego montażu wideo. Problemem w tego typu kompresji jest zapis 
dźwięku, który nie jest jednolity. MPEG likwiduje te niedogodności, a przede 
wszystkim używa dużo bardziej skomplikowanych metod kompresji (o czym 
niżej). Użytkownik najczęściej spotyka się z formatem MPEG-1, który ze 
względu na swoje parametry - obraz o rozdzielczości 352*240 punktów przy 
transferze 192 Kb/s - wykorzystywany jest do zapisu filmów na płytach CD, 
Video-CD, będących częścią interaktywnych gier lub filmami samymi 
w sobie. Format MPEG-2 staje się, głównie za sprawą DVD, również coraz 
bardziej popularny. Stworzony jako format dla telewizji cyfrowej pozwala 
zapisać dane z bardzo dobrą jakością (756×512 przy transferze 1355 Kb/s), 
dzięki czemu konkuruje z analogowymi systemami wykorzystywanymi w TV. 
Przykłady wykorzystania MPEG-2 to wspomniane filmy zapisane na nośniku 
DVD i obraz wyświetlany przez odbiorniki telewizji cyfrowej. Od strony 
technologicznej oba standardy są podobne, z tym, że MPEG-2 umożliwia 
znacznie większą kompresję oraz realizuje dodatkowe funkcje ułatwiające 
nawigację po zapisanym materiale, np. przeszukiwanie przód-tył, skok do 
wybranej sceny. Jak to działa? Standard MPEG, bez względu na to, czy jest 
to MPEG-1 czy -2, używa podobnych metod kompresji. Większość z nich 
bazuje na oszukiwaniu ludzkich zmysłów.

background image

 

 

Konwersja barw
Oko człowieka jest bardziej wrażliwe na zmianę jasności niż barwy. z tego 
względu informacja o obrazie RGB jest przekształcana do postaci informacji 
YUV, czyli informacji o jasności obrazu (luminancja) i różnicach barw 
(chrominancja). Wynika z tego, że możemy usunąć część danych 
o chrominancji UV, a nasze zmysły i tak tego nie zauważą.
Kodowanie blokowe
Kolejny etap to podzielenie każdej z klatek na bloki o wymiarach 8×8 pikseli 
(w celu uproszczenia procesu obliczeniowego). Następnie informacje 
o poszczególnych pikselach w bloku podlegają transformacji za pomocą 
obliczeń matematycznych, zwanych Dyskretną Transformacją Kosinusową. 
Efektem transformacji jest macierz – z niej usuwamy wartości, których nie 
dostrzeże ludzkie oko.
Kompensacja ruchu
Teraz możemy wrócić do wspomnianej wcześniej kompensacji ruchu (rys. 2). 
Jeżeli  pomiędzy  kolejnymi  klatkami  występuje  ruch  obiektu,  to możemy  go 
opisać wektorowo. w tym celu kompresja MPEG dzieli klatkę na makrobloki 
(16×16),  a te  z kolei  na  bloki  (8×8)  i porównuje  zmiany  między  klatkami 
typu  i i P. Po  wykryciu  poruszającego  się  obiektu,  MPEG  opisuje  bloki  – 
z których się składa – wektorem ruchu, zawierającym informacje o kierunku 
i czasie  trwanie  ruchu.  Dzięki  kompensacji  ruchu  możliwe  stało  się 
zastosowanie  bardzo  wysokiego  stopnia  kompresji  (nawet  200:1)  bez 
zwiększania strat jakości.

Kompresja MPEG

background image

 

 

W tył i w przód
Nawet ujęcia pokazujące bardzo szybką akcję na poziomie pojedynczych 
klatek składają się z obrazów, na których tylko część obiektów zmienia swoją 
pozycję z klatki na klatkę. Twórcy standardu MPEG wpadli na pomysł, aby 
wykorzystać to w procesie kompresji. Ta technika w kompresji materiału 
wideo nosi nazwę kompensacji ruchu. By jednak można było ją 
przeprowadzić, trzeba wiedzieć, jak kompresowane będą poszczególne 
klatki. w tym celu klatki w sekwencji wideo zostały podzielne na trzy 
rodzaje: i (klatka wprowadzająca), P (klatka zapowiadająca) i B (klatka 
dwustronna)

Kompresja MPEG

background image

 

 

Klatka typu i - Intra picture - jest kodowana tylko na podstawie danych 
o obrazie, które sama posiada. Tego typu klatka w filmie skompresowanym 
w standardzie MPEG-2 pojawia się średnio co 1/2 sekundy. Pozwala to np. na 
oglądanie filmu podczas przewijania. Klatka P - Predicted picture - 
kodowana jest na podstawie informacji o najbliższej następnej klatce typu 
i lub P. to właśnie tego typu klatki są wykorzystywane podczas kompensacji 
ruchu. Klatki B - Bidirectional - powstają na podstawie następujących 
i poprzedzających klatek i i P, przez co podlegają największej kompresji.
Kodowanie Huffmana
Jest  najczęściej  stosowaną  metodą  kompresji.  Polega  na  usunięciu 
powtarzających się informacji z zerojedynkowego ciągu danych i pisanie ich 
krótkimi  kodami.  Po  tego  typu  zabiegach  otrzymujemy  strumień  danych 
wideo  zapisany  w standardzie  MPEG.  Efekt  jest  zaskakujący  – 
półtoragodzinny  film  o świetnej  jakości  i równie  dobrym  dźwięku  zajmuje 
jedynie  4  gigabajty  danych.  Oczywiście  nie  jest  to mało,  a patrząc  na  tę 
objętość  z perspektywy  dzisiejszych  dysków  (standard  to 4-6  GB)  –  jest 
to dużo.  Dlatego  producenci  filmów  zapisanych  w standardzie  MPEG-2 
wykorzystują do swoich celów bardzo pojemny nośnik (do 18 GB), jakim jest 
DVD.

Kompresja MPEG

background image

 

 

Dźwięk
Jeszcze kilka słów o dźwięku, który będzie towarzyszył obrazowi. Wiadomo, że ma być 
jak najwyższej jakości i najlepiej, aby był przestrzenny, a to oznacza, że  podobnie jak 
obraz  będzie zajmował bardzo dużo danych. Dlatego tutaj również wkracza 
kompresja. Po pierwsze usuwane są te dźwięki, których większość z nas i tak nie 
usłyszy  tony bardzo wysokie i bardzo niskie; cichsze dźwięki maskowane przez 
głośniejsze. Drugi etap do kompresja powtarzających się elementów w informacji 
o dźwięku
Komputer to za mało
MPEG-1 został stworzony z myślą o odtwarzaniu zapisanych w tym standardzie filmów 
z CD-ROM-u (192 kB/s). MPEG-2 potrzebuje zaś, po pierwsze, dużej przepustowości 
nośnika (1350 kB/s) i ogromnej mocy obliczeniowej, która pozwoli zdekodować 
i wyświetlić skompresowany obraz.W jaki sposób dekoder rozszyfrowuje obraz? 
Sekwencję klatek ...IPBBPBB... dekoder odczytuje w następującej kolejności: najpierw 
łatwo dekoduje klatkę I, która posiada pełną informację o obrazie, potem na podstawie 
klatki i odkodowywany jest obraz P. Teraz na podstawie znajdujących się w pamięci 
danych o klatkach i i P budowane są dwie klatki B. Następnie układne są 
w następującym porządku IBBP, konwertowane do postaci RGB, synchronizowane 
z dźwiękiem (który też musiał zostać zdekodowany) i dopiero teraz wyświetlane na 
monitorze. Wniosek nasuwa się chyba od razu  MPEG-2 potrzebuje sprzętowego 
dekodera, aby móc go odtwarzać bez zbytniego obciążania procesora. Owszem, jeżeli 
dysponujemy mocą Pentium II 400, to odpowiednie oprogramowanie jest w stanie 
przejąć zadanie karty dekodującej. Jednak w tym wypadku na komputerze nie będzie 
można już robić nic innego, tylko oglądać film. Znacznie gorzej przedstawia się proces 
kompresji strumienia wideo do standardu MPEG. Już nawet na poziomie MPEG-1 
potrzebujemy specjalnej karty kodera, o ile nie chcemy obliczać kilkuminutowego 
filmu przez całą noc. Przygotowywanie filmów w MPEG-2 wymaga jeszcze bardziej 
wydajnego sprzętu, na który mogą sobie pozwolić jedynie producenci płyt DVD 
czy telewizje cyfrowe. Nam pozostaje tylko oglądać efekty ich pracy.

Kompresja MPEG

background image

 

 

Kompresja MP3

Dźwięk CD
 

Dźwięk CD to 16-bitowe próbki wykonywane z częstotliwością 44,1 

kHz dla każdego kanału z osobna. Jedna sekunda ma więc objętość 1411,2 
kilobitów danych (16*44,1*2), co daje ok. 10,3 MB na minutę.
Model psychoakustyczny, kompresja stratna
 

Teoretycznie słyszymy dźwięki z zakresu od 20 Hz do 20 kHz, więc 

płyta CD oferuje nam pełną skalę doznań. Jednak w rzeczywistości 
większość ludzi jest głucha na wszystko powyżej 16-17 kHz. Na dodatek 
ucho najlepiej reaguje na pasmo 2 do 4 kHz (mowa mieści się w zakresie 
tzw. pasma telefonicznego - 0,5 do 2 kHz). Gdy słyszymy dźwięk o wysokim 
natężeniu, blokuje on percepcję fal o podobnej częstotliwości, lecz 
mniejszym natężeniu. Muszą być znacznie głośniejsze niż to wynika z 
normalnej charakterystyki ucha, abyśmy mogli je wychwycić. Mocny dźwięk 
zwie się maskującym, słabszy zaś - maskowanym. Zjawisko maskowania 
może pojawiać się nie tylko przy jednoczesnym pojawieniu się dwóch 
dźwięków o różnym natężeniu i podobnej częstotliwości. Istnieje ono także w 
funkcji czasu (ogranicza percepcję innych dźwięków w następnych 
sekundach). 
Wykorzystując tę psychoakustyczną ułomność zmysłu, stworzono kodowanie 
podzakresowe SBC, którego podstawowym założeniem jest odrzucanie 
wszystkich zbędnych informacji o maskowanych częstotliwościach. A jako że 
jest ich sporo, efekt kodowania okazuje się rewelacyjny. Co prawda sygnał 
wyjściowy nie odpowiada oryginałowi, ale ucho ludzkie tego nie rozróżnia.

background image

 

 

Algorytm koderów
 

Ogólny algorytm postępowania koderów jest następujący: sygnał 

wejściowy zostaje najpierw podzielony na podzakresy częstotliwościowe dla 
danej jednostki czasu (po ludzku: co jakiś czas branych jest ileś próbek 
pasma). Podzakresy porównywane są z orginałem i na podstawie analizy 
modelu psychoakustycznego koder określa próg słyszalności dla próbki. 
Następnie każda z próbek jest kwantowana (zamieniana na postać cyfrową) 
tak, by słowo ją opisujące było na tyle małe, żeby szum kwantowania nadal 
znajdował się poniżej progu słyszalności. Długość słowa uzyskuje się przez 
podzielenie wartości poziomu stosunku sygnału do szumu przez 6 (1 bit 
kwantyzacji to poprawa dynamiki o 6 dB) i zaokrąglenie wyniku wzwyż. 
Przykładowo, jeśli maskujący ma 70 dB, a maskowane przez niego dźwięki 
zanajdują się poniżej poziomu 50 dB, to różnica wynosi 20 dB i jest to 
stosunek sygnału do szumu w danym podzakresie. Błąd kwantowania w tym 
podzakresie może być duży, bo i tak szum zostanie zakyty dźwiękiem 
maskującym. Do opisu próbek wystarczą wtedy 4 bity (20/6) zamiast 16 jak 
w CD.
Z gotowych danych koder formuje strumień, dzieląc go na czasowe ramki, 
by dekoder się nie pogubił. Dodatkowo umieszcza informacje o układzie 
bitów na przestrzeni widma, czyli 
w którym miejscu ile bitów opisuje próbki. Algorytmy cyfrowego kodowania i 
dekodowania sygnałów dźwiękowych, takie jak MPEG Audio Layer-3, są 
asymetryczne. Oznacza to, że kodowanie wymaga dużo więcej operacji 
obliczeniowych niż dekodowanie. Dekoder jest prostrzy, bo nie wymaga 
modelu psychoakustycznego. Rozpakowywuje jedynie ramki, dekoduje 
próbki z podzakresów i mapowaniem przywraca do postaci sygnału audio.

Kompresja MP3

background image

 

 

MP3 to wcale nie MPEG-3!
 

Ten skrót wziął się jedynie z rozszerzenia plików. W rzeczywistości 

nazwa wywodzi się z MPEG-1 Layer 3. Zarówno standard MPEG-1, jak i MPEG-2 
zawierają 3 warstwy obsługi kanałów audio: najprostszą i najstarszą Layer 1, 
Layer 2 i Layer 3 (powstałą w 1991 roku w instytucie Fraunhofer). Im wyższy 
numer warstwy, tym większa kompresja, a więc niższe pasmo transmisji i 
wielkość pliku wyjściowego. W Layer 1 kompresja sygnału wynosi 4:1, więc dane 
wędrują z szybkością 384 kbps. W Layer 2 stopień upakowania wzrósł do 
6:1...8:1, co dało 256...192. Layer 3 to najbardziej zaawansowana technologia z 
kompresją nawet 10:1...12:1 umożliwiającą transmisję 128...112 kbps. We 
wszystkich trzech warstwach kodery dzielą sygnał na ramki zawierające po 384 
próbki - po 12 z każdego z 32 podzakresów.
Różnice między warstwami
 

Layer 1 dzieli pasmo na podzakresy o tym samym rozrzucie 

częstotliwości, a model psychoakustyczny wykorzystuje tylko maskowanie 
częstotliwościowe. Layer 2 w filtrowaniu kieruje się trzema ramkami: 
poprzednią, obecną i następną, wykorzystuje więc element maskowania 
czasowego. Layer 3 wprowadza nierówny rozdział częstotliwości 
w podzakresach (uwzględnia różną czułość ucha ludzkiego dla różnych 
częstotliwości 
z naciskiem na przedział 2 do 4 kHz), używa zaawansowanego maskowania 
czasowego, redukuje powtarzalność sygnałów stereo (gdy oba kanały mają te 
same lub bardzo podobne wartości w niższym przedziale pasma, są łączone w 
jeden strumień; człowiek nie wie, 
z jakiego kierunku rozchodzą się dźwięki poniżej pewnej częstotliwości, stąd idea 
subwooferów) i używa znanego algorytmu kompresji Huffmana. 

Kompresja MP3

background image

 

 

Arj jest jednym ze starszych programów do kompresji, jest doskonały dla 
systemu DOS, jego obsługa nie jest skomplikowana, wystarczy znać kilka 
podstawowych opcji a praca z tym programem nie będzie trudna. Poniżej 
znajduje się opis niektórych funkcji, sposób obsługi programu oraz przkłady.
arj <komenda> [-opcje] <nazwa_archiwum> [pliki] [ścieżka]
Przykład: arj a -r docs.arj *.doc 

a - Add (dodaj do archiwum) 
Do  archiwum  zostaną  bezwarunkowo  dodane  wymienione  jako  parametr 
pliki. 

Jeśli 

w  archiwum  istnieją  zbiory  o  nazwach  takich  samych,  jakie  mają  pliki 
dodawane,  to  zostaną  one  nadpisane.  Jeśli  archiwum  o  podanej  nazwie  nie 
istnieje, to zostanie utworzone.
u - Update (uzupełnij archiwum) 
Działa podobnie jak komenda Add. Jedyna różnica polega na tym, ze przy 
uzupełnianiu archiwum, w wypadku konfliktu nazw plików, zostaną 
nadpisane tylko te pliki 
w archiwum, które mają starszą datę modyfikacji od plików dodawanych. 
Dzięki temu można mieć pewność, że w archiwum znajdują się najnowsze 
wersje zbiorów. 
m - Move (przenieś) 
Komenda działa dokładnie tak samo jak komenda Add, z tym, że po dodaniu 
plików do archiwum zostaną one skasowane.

Kompresja pod DOS-em – 

ARJ

background image

 

 

Kompresja pod DOS-em – 

ARJ

e - Extract ("rozpakuj") 
Wskazane w archiwum pliki zostaną rozpakowane do podanego katalogu. 
Jeśli katalog docelowy nie zostanie podany, to zawartość archiwum zostanie 
rozpakowana do aktualnego katalogu. Jeśli nie zostaną wskazane żadne pliki 
to rozpakowana zostanie cała zawartość archiwum.
x - eXtract with full pathnames ("rozpakuj" z uwzględnieniem 
ścieżek)
 
Działa  podobnie  jak  komenda  e  (Extract),  z  tym,  że  odtworzona  zostanie 
oryginalna  struktura  katalogów  zapisana  w  archiwum.  Lepiej  używać  do 
dekompresji właśnie tej komendy (a nie e - Extract).
d - Delete (skasuj) 
Kasuje ze wskazanego archiwum wymienione pliki lub grupy plików.
l - List (wyświetl) 
v - Verbose (wyświetl ze szczegółami) 
Komenda  list, jak nietrudno się domyślić, wyświetla zawartość archiwum, a 
więc  znajdujące  się  w  archiwum  pliki,  ich  oryginalną  długość,  stopień  i 
rodzaj  kompresji,  datę  ostatniej  modyfikacji.  Verbose  wyświetla  zazwyczaj 
więcej szczegółowych informacji (np. pełne ścieżki zbiorów).
t - Test (testuj) 
Testowana jest poprawność zapisu wskazanych plików w archiwum. Jeśli nie 
wskaże się żadnych plików, testowane jest całe archiwum. Niektóre 
archiwizery pozwalają 
w pewnych sytuacjach na naprawę niewielkich uszkodzeń archiwum 

background image

 

 

Kompresja pod DOS-em – 

ARJ

-r - Recurse subdirectories (uwzględnij podkatalogi) 
Przy operacji dodawania do archiwum archiwizer zagłębi się rekurencyjnie w 
podkatalogi określonego przez użytkownika katalogu. Oznacza to, że spakowane 
zostaną wszystkie zbiory w katalogu, który wybraliśmy, a także w podkatalogach 
tego katalogu, podkatalogach tych katalogów, itd.
-v[rozmiar] - multi Volume archive (dziel archiwum na części) 
Utworzone archiwum zostanie podzielone na części, których wielkość określona 
będzie parametrem [rozmiar]. Dzięki temu można podzielić archiwum, które 
można nagrać na wielu dyskietkach (zresztą do tego przede wszystkim ta opcja 
służy).
-m[kompresja] - compression Method (schemat kompresj) 
Ta  opcja  określa  "siłę"  kompresji.  Parametr  [kompresja]  musi  się  mieścić  w 
zakresie  0-5.  Im  mniejsza  liczba  tym  gorsza  kompresja  (ale  szybszy  czas 
działania programu). Przy 5-tce wydusimy z programu max. możliwości, ale zysk 
na  objętości  archiwum  nie  jest  większy  niż  kilka  procent  od  trybu  normalnego. 
Czas 

kompresji 

dłuższy 

nawet 

do 

dwóch 

razy.

3-ka  to  tryb  normalny  (używany  standardowo  przez  ARJ).  Kompromis  między 
szybkością  działania  i  stopniem  kompresji.  1-ka  -  max.  szybkość,  trochę 
kompresja 

słabsza 

niż 

w trybie normalnym. 0 - Sama archiwizacja bez kompresji.
-g[hasło] - Garble with password (zabezpiecz hasłem) 
Archiwum zostanie zabezpieczone hasłem. Jego podanie będzie niezbędne przy 
dekompresji plików z takiego archiwum. Hasło powinno być długie i trudne do 
zgadnięcia.
Przykład: arj a -gast93ERtty1 foo *.*
Archiwum foo.arj zostanie zabezpieczone hasłem gast93ERtty1.

background image

 

 

Kompresja pod DOS-em – 

ARJ – przykład

background image

 

 

Win Rar jest jednym z najlepszych programów do kompresji dla systemów 
Windows. Obsługuje formaty: rar i zip, cab, arj, lzh, posiada możliwość 
podziału pakowanych plików na woluminy, wprowadzania hasła dla 
spakowanych plików, symulację kompresji (dla  formatów rar i zip, i 
wszystkich stopni kompresji). Kompresja i dekompresja plików 
i katalogów programem WinRar jest bardzo prosta, wystarczy kilka kliknięć 
myszką 
i program sam spakuje wybrane pliki, katalogi. Wystarczy je wybrać, wybrać 
opcję 
a otrzymamy jeden plik który możemy rozpakować przy pomocy Winrar-a lub 
plik samorozpakowywujący do którego rozpakowania nie potrzeba Winrar-a. 
WinRar-a możemy uruchomić z menu podręcznego, klikając prawym 
przyciskiem myszy na wybranych plikach które chcemy skompresować lub z 
menu start.
Operacje rozpakowywania i testowania teraz można wykonywać również bez 
otwierania archiwum. Po zaznaczeniu grupy plików i folderów i wybraniu 
jednego z tych dwóch poleceń, WinRAR przeszuka ją pod kątem 
występowania archiwów a następnie wykona żądaną operację na każdym 
znalezionym archiwum. Upraszcza to znacznie wykonywanie tych operacji 
na wielu archiwach. Np. aby przetestować wszystkie archiwa znajdujące się 
na dysku twardym wystarczy zaznaczyć wszystkie pliki i foldery znajdujące 
się w głównym folderze danego dysku i nacisnąć przycisk "Testuj".

Kompresja pod Windows - 

WinRar

background image

 

 

Nazwa pliku po 
kompresji

WinRAR

widok okna uruchomionego z menu 

podręcznego

Wybór rodzaju 
kompresji

Rozmiar woluminu, 
możemy wykonać  kilka 
plików i przenosić je np. 
na dyskietkach

Wybór metody 
kompresji

background image

 

 

WinRAR

widok okna uruchomionego z menu start

Dodaje plik, 
katalog do 
archiwum

Wypakowuje 
pliki z 
archiwum do 
wskazanego 
katalogu

Symuluje kompresje

background image

 

 

Budowa polecenia tar jest następująca: 
tar  opcje  nazwa_pliku_lub_katalogu
tar zxvf plik.tar.gz – 
rozpakowuje archiwum tar, dekompresując je 
uprzednio programem gzip
tar cvfz plik.tar.gz plik1 plik2 plik3 .... plikN – tworzy archiwum o 
nazwie plik.tar.gz złożone z podanych plików, katalogów

Opis opcji:
-A dołączenie istniejących plików .tar do archiwum
-c utworzenie nowego archiwum
-d znalezienie różnic między archiwum, a systemem plików
--delete usunięcie plików z archiwum
-r dołączenie plików do archiwum
-t, --list wypisywanie zawartości archiwum
-u, --update dołączenie tylko tych plików, które są nowsze niż egzemplarze 
w archiwum
-x, --extract, --get dekompresja plików z archiwum
-b, --block-size N rozmiar bloku ma być równy Nx512 bajtów (domyślnie 
N=20)

Kompresja pod Linuxem

background image

 

 

-h, --dereference nie archiwizuje dowiązań symbolicznych, tylko pliki, 
które one wskazują
-k ochrona istniejących plików, nie będą nadpisywane pliki z archiwum
-K, --starting-file F zacznij dekompresję z archiwum od pliku F
-l archiwizuj tylko pliki z bieżącego systemu plików
-v wypisywanie wszystkich nazw plików
-V, --label NAZWA utworzenie archiwum z woluminem o nazwie NAZWA
--version wypisanie numeru wersji programu tar
-w pytanie o zgodę na każde działanie
-Z skompresowanie archiwum programem compress
-z skompresowanie archiwum programem gzip

Kompresja pod Linuxem

background image

 

 

Kompresja pod Linuxem w 

środowisku X-window

W środowisku Xwindow możemy używać prostego w obsłudze programu o 
nazwie Generator Archiwów. Tworzy on pliki o rozszerzeniu *.tar.gz a 
skuteczność pakowania przedstawiona jest w poniższej tabeli. Jedyne co 
trzeba zrobić aby spakować pliki lub kataolgi jet ich wybranie i naciśnięcie 
przycisku Utwórz Archiwum i wybór gdzie ono ma się znaleźć. Na rysunkach 
poniżej widać krok po kroku jak odbywa się  kompresja.

Po uruchomieniu programu wybieramy opcję dodaj plik lub katalog

background image

 

 

Wybieramy lokalizację 
gdzie chcemy zapisać 
archiwum i klikamy Ok.

Po wybraniu plików lub katalogów
 klikamy Utwórz archiwum

Zaznaczamy pliki lub katalogi, 
które chcemy skompresować
i klikamy Ok

Kompresja pod Linuxem w 

środowisku X-window


Document Outline