Podstawy kompresji danych

0

Witam jestem poczatkujacym programista i potrezbuje paru informacji.
1)Czy za pomoca algorytmu dynamicznej kompresji huffmana moge spakowac kazdy plik?(mov,mpg,obrazkow,tekstowe)
2)w jakiej kolejnosc najlepiej utworzyc slownik(jakie litery maja sie p[ojawiac jako pierwsze)?
3)jak odczytac informacje z jakiegos pliku?jak otwrzyc *.bmp, *.mpg by odczytac informacje....
4)z ilu elementow powinien skladac sie slownik prz kompresji pliku obrazkowego,video.czyli jakie znaki sie w nim pojawiaja?
5)W pliku z jakim rozszerzeniem powinieneiem zapisac skompresowany plik?gdy txt postaci: "aa" jako skompresowany czyli postaci:"000001" zapisuje w pliku txt to zajmuje wiecej miejsca niz wejsciowy.dlaczego?

Bradzo dziekuje za odpowiedz.Pozdrawiam

0
  1. Tak;
  2. http://myfileformats.com/
  3. Uroki kompresji Huffmana.
0

to co to za kompresja skoro zawsze otrzymuje cos wiekszego?to maq jakies zwiazek z reprezentacja bbitowa.gdy sa bity to zajmuja mniej miejsca niz kody ascii, ale jak zapisac bity a nie kody ascii?(jak zapisuje wjako plik txt to zapisuje ascii a nie bity)

0

kompresja wavelet jest świetna !

0
  • nie kompresuj mpg. To już jest tak skompresowany plik, że nie zejdziesz już zbytnio poniżej tego co jest

  • kompresujesz kody ascii do postaci zerojedynkowej, ale nie zapisuje 0 i 1, ale całe bajty. Musisz bity wrzucić do jednego bajtu. Dodatkowo, jeżeli jest to kompresja statyczna, to pliki <= 256 znaków nie ma sensu kompresować, bo i tak trzeba zapamiętać słownik lub przynajmniej rozkład prawdopodopodobieństw (na podstawie któych można odbudować słownik). Jeżeli jest to dynamiczna, to i tak nie ma większego sensu przy małych plikach tego robić. Wszystkie algorytmy opierające się o kodowanie entropijne zbliżają się do swoich granicznych wartości dopiero przy danych dążących do nieskończoności. Dynamiczne mają tylko tą zaletę, że lokalnie mogą dawać lepsze rezultaty, a co za tym idzie całość pliku też jest lepiej kompresowana. Ale zanim kodowanie dynamiczne osiągnie odpowiednią "jakość", to musi przelecieć pewien ciąg danych troszkę słabiej kompresując.

  • nie budowałbym na twoim miejscu słownika a priori. Jeżeli to ma być przeznaczone do grafiki, to nie jesteś za bardzo w stanie przewidzieć co wystąpi. Jest zbyt duża różnorodność plików graficznych. Chyba, że to są jakieś specyficzne obrazy, o których budowie dużo wiesz (np. zdjęcia o dużej ilości czerni itp.). W takich przypadkach lepiej jest stosować algorytmy o dynamicznym słowniku

  • skoro chcesz kompresować obrazy, to weź pod uwagę, że zazwyczaj w obrazach występuje duża korelacja pomiędzy sąsiadującymi pikselami. I to zarówno w pionie jak i w poziomie. Dobrze jest więc przeglądać obraz według pewnego schematu uwzględniającego zależności pomiędzy pikselami. Podobno całkiem niezłe rezultaty uzyskuje się przeglądając obraz po krzywej Peano i inne tego typu. Jeżeli dołączysz do tego jeszcze metody predykcyjne, to całkiem niezłe efekty można osiągnąć

0

bity wrzucic do jednego bajtu?czyli biore 8 elementow ze zbioru (0,1) i wyznaczam wartosc dziesietna calosci?

Bardzo wyczerpujaca odpowiedz , bardzo dziekuje...

0

bylem na stronie file formats ale nie o to mi chodzi, a mianowicie chodzi mi o to jak przejrzec zawartosc dowonego pliku, slyszalem ze to jakies operacje na strumieniach.znacie jakas strone gdzie jest to dobrze wytlumaczone?

0

aha jescze jedno. po otwarciu pliku z pomoca strumienia otrzymujemy dziwaczne kody ascii, w zwiazku z tym slownik powinien zawierac liste wszystkich kodow ascii?ile ich jest bo nie pamietam...?

0

ile ich jest bo nie pamietam...?

255 ;] nie licząc #0

0

gdy wczytuje duzy plik za pomoca strumieni to wszystko sie zawiesza.da sie jakos zrobic by wczytac np 50kb, po chwili znow 50kb i tak az do konca pliku?

// coś czuję, że temat wyląduje w newbie... - Ł
//a ja, że zostanie zablokowany... - M

0

a ja bym chetnei uslyszal odpowiedz jak to zrobic....czy to takie newbie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1