27.4 Codificare Delta

În știință, inginerie și matematică, litera greacă delta (Δ) este folosită pentru a denumi schimbarea unei variabile. Termenul de codificare delta se referă la mai multe tehnici care stochează datele ca diferența dintre eșantioanele succesive (sau caractere), mai degrabă decât stocarea directă a eșantioanelor însăși. Fig. 27-4 prezintă un exemplu de cum se face acest lucru. Prima valoare din fișierul codificat delta este aceeași cu prima valoare din datele originale. Toate valorile următoare din fișierul codificat sunt egale cu diferența (delta) dintre valoarea corespunzătoare din fișierul de intrare și valoarea precedentă din fișierul de intrare.

Figura 27-4 Exemplu de codificare delta.

Prima valoare din fișierul codificat este aceeași ca prima valoare din fișierul original. După aceea, fiecare eșantion din fișierul codificat este diferența dintre eșantionul curent și ultimul citit din fișierul original.

Codarea Delta poate fi utilizată pentru compresia datelor când valorile din datele originale sunt netede, adică există doar o mică schimbare între valorile adiacente. Acesta nu este cazul pentru textul ASCII și codul executabil; totuși, este foarte comun atunci când fișierul reprezintă un semnal. De exemplu, Fig. 27-5a arată un segment de semnal audio, digitizat la 8 biți, cu fiecare eșantion între -127 și 127. Figura 27-5b prezintă versiunea codată delta a acestui semnal. Caracteristica cheie este că semnalul codat delta are o amplitudine mai mică decât semnalul original. Cu alte cuvinte, codificarea delta a crescut probabilitatea ca valoarea fiecărui eșantion să fie aproape de zero și a scăzut probabilitatea că va fi departe de zero. Această probabilitate denivelată este tocmai chestia pe care trebuie să opereze codificarea Huffman. Dacă semnalul original nu se schimbă sau se schimbă într-o linie dreaptă, codificarea delta va avea ca rezultat rularea unor eșantioane care au aceeași valoare.

Figura 27-5 Exemplu de codificare delta.

Figura (a) este un semnal audio digitizat pe 8 biți. Figura (b) arată versiunea codificată delta a acestui semnal. Codificarea delta este utilă pentru comprimarea datelor dacă semnalul de codificat variază lent de la eșantion-la-eșantion.

Aceasta este ceea ce necesită codarea run-length. Corespunzător, codificarea delta urmată de Huffman și/sau codificarea lungimii de rulare este o strategie comună pentru compresia semnalelor.

Ideea utilizată în codificarea delta poate fi extinsă într-o tehnică mai complicată numită codificare liniară predictivă sau LPC. Pentru a înțelege LPC, imaginați-vă că primele 99 de eșantioane din semnalul de intrare au fost codificate și suntem pe punctul de a lucra la eșantionul numărul 100. Atunci ne întrebăm: pe baza primelor 99 eșantioane, care este cea mai probabilă valoare pentru eșantionul 100? În codificarea delta, răspunsul este că valoarea cea mai probabilă pentru eșantionul 100 este aceeași cu valoarea anterioară, eșantionul 99. Această valoare preconizată este utilizată ca referință la codarea eșantionului 100. Adică, diferența între eșantion și așteptare este plasată în fișierul codificat. LPC se extinde pe aceasta, făcând o mai bună estimare a valorii celei mai probabile. Acest lucru se face examinând ultimele câteva eșantioane, mai degrabă decât doar ultimul eșantion. Algoritmii utilizați de LPC sunt asemănători cu filtrele recursive, făcând uz de transformata-z și alte tehnici matematice intensive.

Secțiunea următoare: Compresie LZW