Witam
Mam zadanie, polegające na napisaniu programu kompresującego bitmapę z wykorzystaniem algorytmu Huffmana (oraz dekompresującego). Bitmapa jest 8-bitowa (8 bitów na piksel, paleta kolorów lub odcienie szarości).
Stworzyłem ogólny algorytm. Bardzo proszę o sprawdzenie toku rozumowania i wskazanie błędów :)
Kodowanie:
- Tworzę w programie tablicę, składającą się z 256 elementów.
- Z nagłówka pliku BMP odczytuję wysokość i szerokość obrazu
- Przechodzę do tablicy pikseli i odczytuje ją po jednym bajcie.
- Inkrementuję w mojej tablicy indeks, odpowiadający odczytanemu bajtowi.
- Gdy dochodzę do końca pliku to w tablicy mam zliczone wsytąpienia poszczególnych kolorów.
- Dane z tablicy "przekazuję" do algorytmu Huffmana i dla każdego indeksu (koloru) otrzymuję jego kod.
- Tworzę nowy plik (skompresowany) i umieszczam w jego nagłówku wysokość i szerokość obrazu.
- Tworzę nową paletę barw - składowe pobieram z "oryginalnej" palety, jednak zamiast indeksów daję kod.
- "Przepisuję" tablicę pikselów z oryginalnego obrazu, uwzględniając kody znajdujące się w nowej (skompresowanej) palecie barw.
Pozdrawiam