Kompresja delta to kompresja wartości zakodowanych w delcie. Kodowanie delta to transformacja, która powoduje różny statystyczny rozkład liczb. Jeśli rozkład jest korzystny dla wybranego algorytmu kompresji, zmniejsza ilość danych. Działa bardzo dobrze w systemie takim jak gra, w której jednostki poruszają się tylko nieznacznie między dwiema aktualizacjami.
Załóżmy, że masz 100 elementów w 2D. Na dużej siatce 512 x 512. Biorąc pod uwagę tylko liczby całkowite. To dwie liczby całkowite na jednostkę lub 200 liczb.
Pomiędzy dwiema aktualizacjami wszystkie nasze pozycje zmieniają się o 0, 1, -1, 2 lub -2. Było 100 wystąpień 0, 33 wystąpień 1 i -1 i tylko 17 wystąpień 2 i -2. To jest dość powszechne. Do kompresji wybieramy kodowanie Huffmana.
Drzewo Huffmana do tego będzie:
0 0
-1 100
1 101
2 110
-2 1110
Wszystkie twoje 0 zostaną zakodowane jako pojedynczy bit. To tylko 100 bitów. 66 wartości zostanie zakodowanych jako 3 bity, a tylko 34 wartości jako 4 bity. To 434 bity lub 55 bajtów. Plus trochę narzutów, aby uratować nasze drzewo mapowania, ponieważ drzewo jest małe. Pamiętaj, że do zakodowania 5 liczb potrzebujesz 3 bitów. Wymieniliśmy tutaj możliwość użycia 1 bitu dla „0” dla potrzeby użycia 4 bitów dla „-2”.
Porównaj to teraz z wysyłaniem 200 dowolnych numerów. Jeśli twoje byty nie mogą znajdować się na tym samym kafelku, masz prawie gwarancję, że otrzymasz zły rozkład statystyczny. Najlepszym przypadkiem byłoby 100 niepowtarzalnych liczb (wszystkie na tym samym X z innym Y). To co najmniej 7 bitów na liczbę (175 bajtów) i jest bardzo trudne dla dowolnego algorytmu kompresji.
Kompresja delta działa w szczególnym przypadku, gdy twoje byty zmieniają się tylko nieznacznie. Jeśli masz wiele unikalnych zmian, kodowanie delta nie pomoże.
Zauważ, że kodowanie i kompresja delta jest stosowane również w innych sytuacjach z innymi transformacjami.
MPEG dzieli obraz na małe kwadraty, a jeśli część obrazu się porusza, zapisywany jest tylko ruch i zmiana jasności. W filmie o prędkości 25 klatek na sekundę wiele zmian między klatkami jest bardzo niewielkich. Ponownie kodowanie delta + kompresja. Działa najlepiej w przypadku scen statycznych.