Для терміну "Кодування" см. інші значення.

Дельта-кодування ( англ. Delta encoding ) - Спосіб подання даних у вигляді різниці ( дельти) між послідовними даними замість самих даних.

Мабуть, найбільш простий приклад полягає в збереженні значень байтів як відмінності (дельти) між послідовними значеннями, на відміну від самих значень. Тому замість 2, 4, 6, 9, 7, ми будемо зберігати 2, 2, 2, 3, -2. Це не дуже корисно у випадку, коли використовується саме по собі, але може допомогти в разі подальшої компресії цих даних, в яких часто зустрічаються повторювані значення. Наприклад, звуковий формат IFF 8SVX застосовує це кодування до чистих звуковим даними перед тим, як застосовувати до них компресію. Лише 8-бітні звукові семпли добре стискуються в разі дельта-кодування, а в разі 16-бітних і вище семплів цей метод працює гірше. Тому, алгоритми компресії часто вибирають дельта-кодування тільки тоді, коли стиск з ним краще, ніж без нього. Однак, в стисненні відео дельта-фрейми можуть значно зменшувати розмір фрейму, і використовуються практично в кожному відеокодек.

Варіація дельта-кодування, яка кодує відмінності між префіксами або суфіксами рядків, називається інкрементного кодуванням. Воно зокрема ефективно для відсортованих списків з малими відмінностями між рядками, такими, наприклад, як список слів з словника.

У дельта-кодованої передачі по мережі, де тільки одинична копія файлу доступна на кожному кінці комунікаційного каналу, використовуються спеціальні коди корекції помилок для виявлення того, які частини файлу змінилися з часу попередньої версії.

Дельта-кодування застосовується як попередній етап для багатьох алгоритмів стиснення, наприклад RLE, і в інвертованих індексах пошукових програм. Природа даних, які будуть закодовані, значно впливає на ефективність стиснення. Дельта-кодування підвищує коефіцієнт стиснення в тому випадку, коли дані мають маленьку або постійну варіацію (як, наприклад, градієнт на зображенні); для даних, згенерованих генератором випадкових чисел з рівномірним розподілом, коефіцієнт стиснення зміниться не сильно.

Дельта-кодування унеможливлює довільний доступ до даних, так як для звернення до елементу масиву необхідно підсумувати значення всіх попередніх. Якщо це все ж необхідно, застосовується блоковий варіант дельта-кодування, в якому кодуються блоки деякої заданої довжини. Тоді необхідно лише підсумувати значення з початку блоку, якому належить шуканий елемент, але не всього файлу. Розмір блоку вибирається в залежності від програми, зазвичай за результатами хронометражу.


Diff-кодування

Не варто плутати дельта-кодування з diff-кодуванням. Якщо дельта-кодування знаходить різницю між елементами однієї послідовності, то diff-кодування порівнює два різних джерела даних, вказуючи відмінності між ними. Diff-кодування реалізовано в стандартній Unix -утиліті diff, а також для скорочення обсягу інтернет-трафіку в протоколі HTTP згідно RFC 3229.

Приклади реалізації

Наступний код на Сі здійснює просту форму in-place дельта-кодування і декодування:

 # Include   void  delta_encode  (  char  *  bp  ,  size_t  n  )  {  char  last  =  0  ,  tmp  ;  int  i  ;  for  (  i  =  0  ;  i  <  n  ;  + +  i  )  {  tmp  =  bp  [  i  ]  ;  bp  [  i  ]  - =  last  ;  last  =  tmp  ;  }  }  void  delta_decode  (  char  *  bp  ,  size_t  n  )  {  char  last  =  0  ;  int  i  ;  for  (  i  =  0  ;  i  <  n  ;  + +  i  )  {  bp  [  i  ]  + =  last  ;  last  =  bp  [  i  ]  ;  }  } 


Перегляд цього шаблону Методи стиснення
Теорія
Інформація Власна Взаємна Ентропія Умовна ентропія Складність Надмірність
Одиниці виміру Біт Нат Ніббл Хартлі Формула Хартлі
Без втрат
Ентропійно стиснення Алгоритм Хаффмана Адаптивний алгоритм Хаффмана Алгоритм Шеннона - Фано Арифметичне кодування (Інтервальне) Коди Голомба Дельта Універсальний код ( Еліаса Фібоначчі)
Словникові методи RLE Deflate LZ ( LZ77/LZ78 LZSS LZW LZWL LZO LZMA LZX LZRW LZJB LZT)
Інше RLE CTW BWT MTF PPM DMC
Аудіо
Теорія Згортка PCM Аліасінг Дискретизація Теорема Котельникова
Методи LPC (LAR LSP) WLPC CELP ACELP A-закон μ-закон MDCT Перетворення Фур'є Психоакустичної моделі
Інше Компресор аудіосигналу Стиснення мови Смугове кодування
Зображення
Терміни Колірний простір Піксель Субдіскретізація насиченості Артефакти стиснення
Методи RLE DPCM Фрактальний Вейвлетного EZW SPIHT LP ДКП ПКЛ
Інше Бітрейт Test images PSNR Квантування
Відео
Терміни Характеристики відео Кадр Типи кадрів Якість відео
Методи Компенсація руху ДКП Квантування Вейвлетного
Інше Відеокодек Rate distortion theory ( CBR ABR VBR)
Перегляд цього шаблону Системи управління версіями (категорія)
Тільки локальні RCS SCCS Revision controlled project visualization-2010-24-02.svg
Клієнт-серверні CMVC CVS Perforce Rational ClearCase (1992) SourceGear Vault Subversion (SVN) Team Foundation Server Visual SourceSafe
Розподілені Bazaar Darcs Fossil Git Mercurial TeamWare
Гілки Дельта-кодування Форк