Kompresja grafiki przy uzyciu stringow cd

0

No wiec pewnie niektorzy pamietaja ten temat http://4programmers.net/Forum/viewtopic.php?id=30287 No mi ostatnio sie przypomnial no i wiec postanowilem sprobowac cos takiego napisac No i musze przyznac ze wyszlo calkiem dobrze :) Napisalem tez przykladowy programik dzieki ktoremu mozecie pobawic sie w kompresowanie i dekompresowanie bmp do ... No wlasnie jeszcze nie wymyslilem nazwy :) Moze ma ktos jakies pomysly :) Chce takze podziekowac Dryobatesowi ktory nieswiadomie wlaczyl sie do projektu :) No chodzi tu oto ze podczas pisania uzylem jego algorytmu do kompresji a dokladnie mowa tu o algorytmie Imploding :) No moze teraz troche osiagniec. Kompresowalem pliki 100*100 calkowicie biale no i tak wyniki tesu wygladaja nastepujaco:
PNG: 237 b //normalnie to dla mnie wygrywa nie wiem jak cos takiego jest mozliwe :)
GIF: 964 b
JPG: 356 b
moja_kompresja: 267 b

No jak widac calkiem niezle :) No tylko z plikami gdzie jest mnÓstwo kolorkow to juz zaczyna sie problem i tak wesolo juz nie jest no np obrazek http://pedroshomepage.republika.pl/zle.bmp juz zostal fatalnie zapisany (205KB) no ale myle ze do np takich rysunkow gdzie nie ma za duzo kolorow to mogloby sie przydac :) Moze jeszcze dzis zamieszcze unit dzieki ktoremu mozna kompresowac pliki na 4p i kazdy bedzie sobie mogl zobaczyc jak to wyglada. No umieszcze tylko bede musial dodac troche komentarzy do kodziku zrodlowego aby wszystko bylo jasne. Co o tym myslicie moze jakies pomysly zeby kompresja byla jeszcze lepsza? Tak sie zastanawialem czy nie zrobic by troche zamazywanego obrazu wtedy bylo by mniej kolorkow no ale to juz bedzie kompresja stratna. No programik przykladowy mozna sciagnac z http://pedroshomepage.republika.pl/kompresor.rar

0

Trzeba było się do mnie zgłosić w czasie pisania to bym Ci troszkę materiałów podesłał.
Zamiast Imploding trzebabyło użyć Huffmana dynamicznego. Do tego mam troszkę na temat kompresji bezstratnej słownikowej (np. w GIF używane) innych metod entropijnych (najlepszy jaki znam: kodowanie arytmetyczne. Bije Huffmana na głowę). A jeżeli stratne, to oprócz różnych transformat (jak w JPEG) to metody HINT (całkiem fajna idea) oraz inne metody predykcyjne.
Podałbym ci też moje bardzo stare obliczenia na kartce (i pomysły) zanim jeszcze miałem jakieś zielone pojęcie na ten temat...

0

Dobra umiescilem plik na serwerze http://4programmers.net/download.php?id=837 No mozna sciagac i sprawdzac, Jezeli chodzi o Hauffmana dynamicznego jezeli jest to ten sam o ktorym pisales art to wcale tak rewelacyjnie nie kompresuje. A jezeli chodzi o inne to moze by bylo lepiej ale zawsze przeciez mozna to jeszcze poprawic :)

0

Jezeli chodzi o Hauffmana dynamicznego jezeli jest to ten sam o ktorym pisales art to wcale tak rewelacyjnie nie kompresuje. A jezeli chodzi o inne to moze by bylo lepiej ale zawsze przeciez mozna to jeszcze poprawic :)

Opiera się na tych samych zasadach co opisany (statyczny), ale tak jak Imploding stopień kompresji zmienia się w trakcie przechodzenia po pliku i dostosowuje do danych. Ten opisany jest niestety fatalny (muszę to zmnienić. Tylko kiedy...).
Zarówno opisane Shanon-Fano, jak i Huffmana opierają się na przyporządkowywaniu któtkich kodów najczęściej wykorzystywanym symbolom. Tak samo jest w kodowaniu arytmetycznym, ale tutaj nie koniecznie muszą być przyporządkowywane całkowite części bitu :) Dlatego kodowanie arytmetyczne może zbliżyć możliwość kompresji do granic wyznaczanych przez entropię źródła.
Oczywiście kodowania Huffmana nigdy nie polecałbym jako samodzielnej metody kompresji, ponieważ jak na to to jest za słabe. Ale po odpowiedniej obróbce danych (jak to ma w JPEG) to świetnie działa. Może jak uda mi się napisać jeszcze kilka artykułów, to podorabiasz jakieś lepsze algorytmy kompresji :) Na razie biorę się za testy twojego programu :)

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