Algorytmy kompresji stratnej i bezstratnej

Kompresja danych – polega na zmianie sposobu zapisu informacji tak, aby zmniejszyć objętość zbioru. Innymi słowy chodzi o wyrażenie tego samego zestawu informacji, lecz za pomocą mniejszej liczby bitów.

Można obliczyć współczynnik kompresji

R=(Vk/Vnk)*100% <- wzór na to jak bardzo zmniejszyły sie dane w stosunku do oryginalnych

R=(1-Vk/Vnk)*100% <- ile miejsca zaoszczędziliśmy

Vk – dane skompresowane (w bajtach)
Vnk – dane nieskompresowane (w bajtach)

Rodzaje kompresji:
1. kompresja bezstratna
2. kompresja stratna

Kompresja dzieli się na bezstratną – w której z postaci skompresowanej można odzyskać identyczną postać pierwotną oraz stratną – w której takie odzyskanie jest niemożliwe, jednak główne właściwości, które nas interesują, zostają zachowane, np. jeśli kompresowany jest obrazek, nie występują w postaci odtworzonej widoczne różnice w stosunku do oryginału. Pomimo to może się już nie nadawać zbyt dobrze np. do dalszej przeróbki czy do wydruku, gdyż w tych zastosowaniach wymaga się zachowania innych właściwości.

Algorytmy kompresji stratnej
Bazują na niedoskonałościach ludzkich zmysłów. Ludzkie oko nie dostrzega niewielkich zmian w zmianach kolorów albo w jednej chwili nie słyszymy wszystkich dźwięków. Algorytmy kompresji stratnej po porostu usuwają te informacje których w danej chwili nie widzimy albo nie słyszymy. Objętość pliku stosując kompresję stratną można zmniejszyć nawet dziesięciokrotnie.

Algorytmy kompresji bezstratnej dzielimy na statyczne i słownikowe.

Algorytmy statyczne bazują na takich faktach że np. znaki w tekście występują z różną częstotliwością.
W kodzie ASCII każdy znak zajmuję 8 bitów czyli 1 Bajt. Gdyby podzielić znaki na te które w polskich słowach występują częściej i rzadziej a nawet bardzo rzadko i przydzielić im odpowiednią długość bitów moglibyśmy zaoszczędzić dużo więcej miejsca. np.:
polskim literom które często występują w wyrazach przydzielimy po 3 bity a tym które występują rzadziej np. 8 bitów.
Prawda jest taka aby każdy znak dało się jednoznacznie zidentyfikować mogą wystąpić takie znaki których długość przekroczy 8 bitów ale całość kompresji i tak okaże się bardziej efektywna niż brak kompresji.Najczęstszym stosowanych przykładem kodowania który opiera się właśnie na  tej metodzie to kod Morse’a.

Litery alfabetu łacińskiego
Litera Kod Litera Kod
A • — N — •
B — • • • O — — —
C — • — • P • — — •
D — • • Q — — • —
E R • — •
F • • — • S • • •
G — — • T
H • • • • U • • —
I • • V • • • —
J • — — — W • — —
K — • — X — • • —
L • — • • Y — • — —
M — — Z — — • •

Kodowanie Huffmana

jedna z najprostszych i łatwych w implementacji metod kompresji bezstratnej. Została opracowana w 1952 roku przez Amerykanina Davida Huffmana.