Radosław Kaczyński Wrocław 2006

Slides:



Advertisements
Podobne prezentacje
Data Mining w e-commerce
Advertisements

Kodowanie informacji Instytut Informatyki UWr Studia wieczorowe
Kodowanie informacji Instytut Informatyki UWr Studia wieczorowe
Metody kompresji.
DYSKRETYZACJA SYGNAŁU
dr A Kwiatkowska Instytut Informatyki
Wprowadzenie do języka skryptowego PHP
Kompresja danych.
Sortowanie na stercie Heap Sort
Skalowalny algorytm estymacji ruchu dla systemów rozproszonych
Materiały pochodzą z Platformy Edukacyjnej Portalu
Materiały pochodzą z Platformy Edukacyjnej Portalu
Bezstratna kompresja obrazów
Kompresja stratna obrazów
Paweł Kupis Jacek Mańdziuk
Geometria obrazu Wykład 8
Różnice pomiędzy formatem GIF a JPG
Zapis informacji Dr Anna Kwiatkowska.
Kody Liniowe Systemy cyfrowe.
Metody Symulacyjne w Telekomunikacji (MEST) Wykład 4: Generowanie zdarzeń  Dr inż. Halina Tarasiuk p. 337, tnt.tele.pw.edu.pl.
Mechanizm kompresji danych w SQL Server 2008
Wykonały: Maja Fedoryka, Joanna Luty
Sposób zmniejszenia wielkości plików cyfrowych (głos, tekst, grafika, ruchome sekwencje obrazowe) dla efektywnego wykorzystania przestrzeni pamięciowej.
KOMPRESJA DANYCH Marek Dyoniziak.
KOMPRESJA DANYCH DAWID FREJ. Kompresja danych Kompresja danych - polega na zmianie sposobu zapisu informacji w taki sposób, aby zmniejszyć redundancję
AUTORZY: Paulina Pluta kl. 3c Agata Łoboda kl.3c
Kasia Sobiło i Kornelia Szydłowska
Kompresja danych Autorzy: Pamela Sobczak i Natalia Buchcik Klasa IIIc
Kod Graya.
minimalizacja automatów
CYFROWE PRZETWARZANIE SYGNAŁÓW
Typy kompresji. Kompresja plików graficznych.
Kierunek : Elektronika i Telekomunikacja
Kodowanie informacji Kodowanie
Zastosowania ciągów.
Liczby całkowite dodatnie BCN
SYSTEMY EKSPERTOWE I SZTUCZNA INTELIGENCJA
Podstawy Techniki Cyfrowej
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Tworzenie i obróbka filmów na potrzeby dydaktyczne z zakresu fizyki
1 Prowadzący: Dr inż. Sławomir Samolej D102 C, tel: , WWW: ssamolej.prz-rzeszow.pl INFORMATYKA.
Adam Łożyński IVi System plików NTFS listy kontroli dostępu (ACL)
Danuta Stanek KODOWANIE LICZB Systemy liczenia III.
RAR jako format kompresji bezstratnej.. RAR został stworzony przez Rosjanina Eugene Roshala. Do kompresji danych używa odmiany kompresji LZSS. Jest wolniejszym.
JĘZYKI ASSEMBLEROWE ..:: PROJEKT ::..
Podstawy Techniki Cyfrowej
Systemy liczenia IV Kodowanie i kody Danuta Stanek.
Geometria obrazu Wykład 3 Jak oszczędzać przestrzeń i czas ? 1.Przerzedzanie triangulacji – modelowanie terenu, – kompresja danych. 2.Kompresja stratna.
Kompresja i Szyfrowanie
Algorytmy kodowania Shannona-Fano i Huffmana
Kompresja danych Instytut Informatyki UWr Studia dzienne Wykład nr 3: kody Golomba, kody Tunstalla.
Algorytm kodowania arytmetycznego
Kompresja danych Instytut Informatyki UWr Studia dzienne Wykład nr 2: rozszerzone i dynamiczne Huffmana.
 Multimedia jest to ogólne określenie środków komunikacji wykorzystujących różne formy przekazu w celu dostarczenia odbiorcom rozrywki. Multimedia są.
Grafika rastrowa - parametry
TEMAT : Kompresja i Archiwizacja danych Informatyka Zakres rozszerzony
K ODY ZMIENNEJ DŁUGOŚCI Alfabet Morsa Kody Huffmana.
MARCIN WOJNOWSKI KOMPRESJA I DEKOMPRESJA PLIKÓW. KOMPRESJA Kodowanie danych w taki sposób, aby zajmowały najmniej miejsca na dysku. Najbardziej znanymi.
Elektroniczne Archiwum Wieczyste J.P. Walczak, ATM SA K. Marasek, PJWSTK.
Elementy cyfrowe i układy logiczne
Podstawy Informatyki.
Nazwiska autorów Afiliacje autorów
Wstęp do Informatyki - Wykład 6
Wstęp do Informatyki - Wykład 4
Efektywność algorytmów
Statyczna równowaga płynu
Układy asynchroniczne
Algorytmy i struktury danych
Kompresja danych.
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

Radosław Kaczyński Wrocław 2006 Kompresja bezstratna Radosław Kaczyński Wrocław 2006

Spis zagadnień Wprowadzenie Kompresja bezstratna i kompresja stratna Metody kompresji bezstratnej Postacie algorytmów kodowania Efektywność kompresji Kodowanie Huffmana Kodowanie arytmetyczne Praktyczna implementacja metod - wstęp- czym jest kompresja i jakie są jej zastosowania, - wprowadzenie pojęć: kompresja bezstratna i stratna, - trzy podstawowe postacie algorytmów kodowania - przegląd metod kompresji bezstratnej, - efektywność kompresji, - kodowanie Huffmana- koncepcja, - kodowanie arytmetyczne- koncepcja, - krótka prezentacja mojej pracy (mowa tu o referacie wysłanym na KNS)- opis programu i metody pomiarów. (wspomnę o języku C#, podobnym do Javy, o której to będzie opowiadał Maciek). 2/16

Wprowadzenie Kompresja- wstęp Kompresja danych to proces przekształcenia pierwotnej reprezentacji sekwencji danych w reprezentację o mniejszej liczbie bitów. Kompresja- zastosowania Kompresja jest ogólnie znanym pojęciem. Większości osób nie obce są formaty takie jak: *.zip, *.rar, *.mp3, *.jpg, czy *.mpg. Kompresja jest sposobem reprezentacji informacji w zwięzłej postaci, na podstawie znajomości ich własności strukturalnych, towarzyszy ona rozwojowi informatyki od samego początku. Poniżej podana została definicja kompresji, zaczerpniętą z książki Artura Przelaskowskiego [2]. Kompresja danych to proces przekształcenia pierwotnej reprezentacji sekwencji danych w reprezentację o mniejszej liczbie bitów. Wraz z rosnącą ilością magazynowanych, transmitowanych i przetwarzanych danych, gdy zwiększające się przepustowości łącz telekomunikacyjnych oraz zwiększające się pojemności pamięci masowych, nie są w stanie w pełni sprostać wymaganiom konsumentów, pojawia się problem reprezentacji tych danych w najzwięźlejszej formie. Problem ten dotyczy coraz częściej użytkowników popularnych urządzeń przenośnych, takich jak telefony komórkowe, odtwarzacze MP3, czy PDA. W tym przypadku pojawiające się bardziej pojemne (a zarazem droższe) pamięci (Np. SD, MMC, Compact Flash) oraz częste sposoby wymiany danych, takie jak GPRS, EDGE, IrDA, Bluetooth, Wi-Fi, czy też protokół USB 2.0, stają się niewydajne przy ogromnej liczbie przechowywanych i transmitowanych informacji. Rozwiązaniem ww. problemów może być kompresja danych. 3/16

Kompresja bezstratna Kompresja bezstratna (kodowanie)- typ kompresji nie dopuszczający utraty wiadomości. Dane po skompresowaniu i późniejszym zdekompresowaniu są identyczne. Kompresja bezstratna (często nazywana kodowaniem) jest typem kompresji nie dopuszczającym utraty wiadomości. Gwarantuje ona, że dane po skompresowaniu późniejszym zdekompresowaniu będą identyczne. Często stosowanymi metodami kodowania są kodowanie Huffmana, oraz kodowanie arytmetyczne (w wersjach statycznych, semiadaptacyjnych i adaptacyjnych). 4/16

Metody kompresji bezstratnej Kodowanie Huffmana Kodowanie arytmetyczne Kodowanie słownikowe Kodowanie predykcyjne 5/16

Kompresja stratna Kompresja stratna - typ kompresji dopuszczający utratę wiadomości. Dane po skompresowaniu i późniejszym zdekompresowaniu nie muszą być identyczne. Możliwa ze względu na działanie ludzkich zmysłów (modele psychoakustyczne, psychowizualne itp.). 6/16

Postacie algorytmów kodowania Trzy podstawowe postacie: Model jest jednakowy Model wyznaczany na podstawie wstępnej analizy Model dynamicznie dostosowywany na podstawie bieżącej analizy Postacie algorytmów kodowania Statyczna Semiadaptacyjna Algorytmy kodowania są realizowane zazwyczaj w jednej z trzech podstawowych postaci: 1. Statycznej- model danych wejściowych jest jednakowy dla całej grupy zbiorów o zbliżonym charakterze; 2. Semiadaptacyjnej- model danych wejściowych jest jednakowy w obrębie całej sekwencji wejściowej, wyznaczony na podstawie wstępnej analizy danych; Adaptacyjny- model danych wejściowych jest dynamicznie dostosowany do lokalnej statystyki danych źródłowych na podstawie bieżącej analizy właściwości sekwencji danych kodowanych. Semiadaptacyjne analizują dane wejściowe przed rozpoczęciem kompresji i na ich podstawie budują drzewo Huffmana lub tworzą tablicę częstości. Adaptacyjne metody analizują dane wejściowe i aktualizują modele probabilistyczne (np. tablica częstości występowania znaków) w trakcie działania algorytmu kompresji. Adaptacyjna 7/16

Porównywanie metod kompresji Współczynnik kompresji Czas kompresji Zużycie energii Porównując różne metody kompresji, często stosuje się pojęcie współczynnika kompresji wspkomp= (dl(wej) – dl(wyj))/dl(wej)*100% (1) Warto zaznaczyć, że większy współczynnik oznacza lepszą kompresję, zaś w przypadku, gdy długość wyjściowa jest większa niż wejściowa współczynnik kompresji przyjmuje wartości ujemne. 8/16

Kodowanie Huffmana Algorytm zaproponowany przez Davida Huffmana w 1954 roku Kody generowane przez algorytm to optymalne kody prefiksowe Założenia algorytmu: Algorytm Huffmana został zaproponowany w 1952 przez Davida Huffmana jako część rozwiązania zadania na zajęciach studenckich. Kody generowane przez ten algorytm nazywane są kodami Huffmana i są to kody prefiksowe, będące optymalnymi dla przyjętego modelu probabilistycznego [3]. Kod jest kodem prefiksowym, jeśli żadne słowo kodu nie jest przedrostkiem żadnego innego słowa kodu. Kodem optymalnym nazywamy kod, dla którego oczekiwany koszt kompresji [1] jest najmniejszy spośród wszystkich kodów dla danego rozkładu prawdopodobieństwa P. Algorytm Huffmana opiera się na dwóch własnościach optymalnych kodów prefiksowych: 1. Symbolom występującym częściej (o większym prawdopodobieństwie wystąpienia) odpowiadają w kodzie optymalnym krótsze słowa niż symbolom, występującym rzadziej. 2. Dwa najrzadziej występujące symbole mają w kodzie słowa kodowe tej samej długości. Symbolom występującym częściej odpowiadają krótsze słowa niż symbolom występującym rzadziej, Dwa najrzadziej występujące symbole mają w kodzie słowa kodowe tej samej długości, Dwa najrzadziej występujące symbole mają w kodzie słowa kodowe różniące się tylko ostatnim bitem. 9/16

Kodowanie arytmetyczne Koncepcja opiera się na kodowaniu komunikatu jako liczby z przedziału {y:0≤y<1}. Znajdowanie tej liczby polega na zwiększaniu jej precyzji przez stopniowe zawężanie przedziału, przy użyciu prawdopodobieństwa aktualnie przetwarzanej litery. Koncepcja kodowania arytmetycznego opiera się na kodowaniu komunikatu jako liczby z przedziału {y: 0≤y<1}. Znajdowanie tej liczby polega na zwiększaniu jej precyzji przez stopniowe zawężanie przedziału, przy użyciu prawdopodobieństwa aktualnie przetwarzanej litery. Przyjmijmy, że wszelkie komunikaty są złożone z n liter pochodzących z alfabetu S= {x1,...,xn}, przy czym każdej literze xi odpowiada prawdopodobieństwo jej użycia pi należące do zbioru P= {p1,...,pn}. Wyznaczenia liczby y dokonuje się używając zbioru przedziałów określonych na podstawie prawdopodobieństw ze zbioru P ZP={[0,p1),[p1,p1+p2),[p1+p2,p1+p2+p3),…, [p1+…+pn-1,p1+…+pn)} (2) lub, wyrażając to względem prawdopodobieństwa kumulatywnego Pi= ∑ij=1pj ZP={[0,P1),[P1,P2),[P2,P3),…,[Pn-1,1)} (3) Przedziały te, w trakcie kodowania, określają proporcjonalny podział danego przedziału [L, R), zawartego w [0,1), na podprzedziały ZP[L,R]={{[L,L+(R-L)P1),[L+(R-L)P1, L+(R-L)P2), [L+(R-L)P2, L+(R-L)P3),…, [L+(R-L)Pn-1, L+(R-L)) (4) 10/16

Praktyczna implementacja Program napisany w języku C#, w środowisku Visual Studio 2005 na urządzenia typu Pocket PC z systemem operacyjnym Windows Mobile 2003 SE Implementacja semiadaptacyjnego kodowania Huffmana oraz semiadaptacyjnego i adaptacyjnego kodowania arytmetycznego Do porównania podanych dwóch metod kompresji bezstratnej wykorzystano program implementujący semiadaptacyjne kodowanie Huffmana, semiadaptacyjne kodowanie arytmetyczne oraz adaptacyjne kodowanie arytmetyczne. Warto w tym miejscu wyjaśnić działanie semiadaptacyjnych i adaptacyjnych metod. Program implementuje jedynie algorytmy kompresji (nie zawiera algorytmów dekompresujących), a w pliku skompresowanym zawarta jest tylko reprezentacja bitowa zakodowanych danych bez uwzględnienia informacji nagłówkowych niezbędnych do dekompresji danych (m.in. drzewa Huffmana, tablicy częstości). Takie uproszczenie wprowadza pewien błąd podczas porównywania metod pod względem współczynnika kompresji. Program został napisany w środowisku Microsoft Visual Studio 2005, w języku C#, dla urządzeń przenośnych typu Pocket PC z systemem Microsoft Windows Mobile 2003 SE. 11/16

Porównanie algorytmów Testy zostały wykonane przy użyciu Pocket PC- Dell Axim X30, z procesorem Intel PXA270, 32 MB pamięci RAM, baterią Li-ion (3.7V, 950 mAh), kartą pamięci SD 256MB (Kingston Elite Pro). Jako dane testowe posłużyły pliki tekstowe (*.txt i *.psw), pliki arkuszy kalkulacyjnych (*.pxl), pliki graficzne (*.bmp i *.jpg) oraz pliki muzyczne (*.wav, *.mp3),. Wszystkie pliki znajdowały się na zewnętrznej karcie pamięci. Rys. 1. Porównanie algorytmów pod względem współczynnika kompresji 12/16

Porównanie algorytmów Rys.2. Zestawienie średnich czasów znormalizowanych (a) oraz średnich znormalizowanych zużyć energii (b) 13/16

Implementacja metod kodowania Klasa AlgorytmHuffmana – składowe, metody oraz klasy wewnętrzne implementujące metodę Huffmana Klasa KodowanieArytmetyczne – składowe, metody oraz klasy wewnętrzne implementujące kodowanie arytmetyczne 14/16

Literatura [1] DROZDEK A., Wprowadzenie do kompresji danych, Warszawa, Wydawnictwa Naukowo-Techniczne, 1999, 37–75. [2] PRZELASKOWSKI A., Kompresja danych, podstawy, metody bezstratne, kodery obrazów, Warszawa, Wydawnictwo BTC, 2005, 15–152. [2] SAYOOD K., Kompresja danych- wprowadzenie, Warszawa, Wydawnictwo RM, 2002, 13–186. 15/16

Pytania Co to jest kompresja? Kompresja stratna a bezstratna- podaj różnice. Wymień trzy przykłady metod kompresji bezstratnej. Co to jest współczynnik kompresji? Podaj założenia kodowania Huffmana. Na czym polega kodowanie arytmetyczne? 16/16