2013-05-09 16 views
22

Zastanawiam się, czy ktoś ma listę algorytmów kompresji danych. Zasadniczo nic nie wiem o kompresji danych i miałem nadzieję dowiedzieć się więcej o różnych algorytmach i zobaczyć, które z nich są najnowsze i które jeszcze nie zostały opracowane na wielu układach ASIC.Algorytmy kompresji danych

Mam nadzieję, że do realizacji ASIC kompresji danych, który jest niezależny od typu danych pochodzących w (audio, wideo, zdjęć, itp.)

Jeśli moje pytanie jest zbyt otwarty zakończony, proszę dać mi znać i zrewiduję. Dziękujemy

+1

Hmmmm Istnieje wiele algorytmów kompresji, czego szukasz w kategoriach "najlepszych". Takich jak szybkość, lub całkowicie bez strat, lub najwyższy współczynnik kompresji? W odniesieniu do których ASIC przeznaczone dla nich jest bardziej pytanie badawcze. Jestem pewien, że większość, jeśli nie wszystkie, głównego algorytmu kompresji ma jakieś implementacje ASIC. – Nomad101

+1

http://www.ccs.neu.edu/home/jnl22/oldsite/cshonor/jeff.html – taocp

+0

@taocp, dziękuję! – Veridian

Odpowiedz

31

Istnieje mnóstwo algorytmów kompresji. To, czego potrzebujesz, to bezstratny algorytm kompresji. Bezstratny algorytm kompresji kompresuje dane w taki sposób, że można je zdekompresować, aby osiągnąć dokładnie to, co podano przed kompresją. Przeciwieństwem byłby algorytm kompresji stratnej. Kompresja stratna może usunąć dane z pliku. Obrazy PNG używają bezstratnej kompresji, podczas gdy obrazy JPEG mogą i często wykorzystują kompresję stratną.

Niektóre z najbardziej znanych algorytmów kompresji obejmują:

archiwa ZIP użyć kombinacji kodowania Huffmana i LZ77 dać szybką kompresję i czasy dekompresji i dość dobre kompresja ra tios.

LZ77 jest w dużym stopniu uogólnioną formą RLE i często przynosi znacznie lepsze wyniki.

Huffman pozwala najbardziej powtarzającym się bajtom reprezentować najmniejszą liczbę bitów. Wyobraźmy sobie plik tekstowy, który wyglądał tak:

aaaaaaaabbbbbcccdd 

Typowa implementacja Huffman skutkowałoby poniższej mapie:

Bits Character 
    0   a 
    10   b 
110   c 
1110   d 

Więc plik zostanie sprężony do tego:

00000000 10101010 10110110 11011101 11000000 
             ^^^^^ 
           Padding bits required 

18 bajtów zejść do 5. Oczywiście tabela musi być zawarta w pliku. Ten algorytm działa lepiej z większą ilością danych: P

Alex Allain ma a nice article na algorytmie kompresji Huffmana, jeśli Wiki nie jest wystarczający.

Możesz poprosić o więcej informacji. Ten temat jest dość szeroki.

+0

Po prostu pytam z ciekawości - czy są jakieś algorytmy kompresji, które rozpoznają wzorce w danych? Na przykład: 'ababab'. – Novak

+0

To jest nieco bardziej złożona wersja RLE, a ściślej LZ77: P (Rozumiem przez to, że LZ77 to obsługuje, ale zwykle nic nie zrobi, chyba że manipulacja kawałkiem danych zmniejszy plik) –

+0

@ Magtheridon96, wow, dziękuję bardzo. Czy znasz jakieś zasoby pokazujące oceny wydajności tych algorytmów na różnych platformach? Na przykład, jak szybko ktoś może uruchomić Huffmana i czy jest to wdrożenie oprogramowania lub sprzętu? Zamierzam wprowadzić sprzętową jednostkę do kompresji danych (jeśli uważam, że ma to sens), która zapewnia znaczną poprawę w stosunku do implementacji oprogramowania. – Veridian

3

Istnieje bardzo dużo algorytmów kompresji danych. Jeśli szukasz czegoś encyklopedycznego, polecam Salomonowi i wsp., Który jest mniej więcej tak obszerny, jak ci się wydaje (i ma dobre rozdziały dotyczące zasad i praktyki kompresji danych). dobrze).

Moje najlepsze przypuszczenie jest takie, że kompresja ASIC jest zwykle zaimplementowana dla konkretnej aplikacji lub jako wyspecjalizowany element SoC, a nie jako samodzielny układ kompresji. Wątpię też, że szukanie "najnowszego i najlepszego" formatu kompresji jest sposobem na osiągnięcie tego celu - oczekiwałbym, że standaryzacja, dojrzałość i przydatność do określonego celu będą ważniejsze.

1

Oto niektóre algorytmy bezstratne (można doskonale odzyskania danych źródłowych przy użyciu poniższych):

  • kodu Huffmana
  • LZ78 (i LZW zmienności)
  • LZ77
  • kodowania arytmetycznego
  • Sequitur
  • prognozowanie z częściowym dopasowaniem (ppm)

Wiele dobrze znanych formatów, takich jak warianty użycia png lub gif lub ich kombinacje.

Z drugiej strony istnieją również algorytmy stratne (kompromisowa dokładność kompresji danych, ale często działa całkiem dobrze).

Aby dowiedzieć się więcej o kompresji danych, polecam https://www.elsevier.com/books/introduction-to-data-compression/sayood/978-0-12-809474-7. Jest to bardzo przystępny tekst wprowadzający. Trzecia edycja dostępna w pdf online.

+0

Dla mnie, rahilshaikh.weebly robi *** nie ** wygląda ** legit ***. Przegląd, cena (15% zniżki w Elsevier) i objętość wersji z miękką okładką wyglądają imponująco. – greybeard