~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ B038E12838A72642E77068D940061042__1709598240 ✰
Заголовок документа оригинал.:
✰ Golomb coding - Wikipedia ✰
Заголовок документа перевод.:
✰ Кодирование Голомба — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Golomb_coding ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/b0/42/b038e12838a72642e77068d940061042.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/b0/42/b038e12838a72642e77068d940061042__translat.html ✰
Дата и время сохранения документа:
✰ 18.06.2024 17:54:23 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 5 March 2024, at 03:24 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Кодирование Голомба — Википедия Jump to content

Кодирование Голомба

Из Википедии, бесплатной энциклопедии

Кодирование Голомба — это метод сжатия данных без потерь с использованием семейства кодов сжатия данных , изобретенных Соломоном В. Голомбом в 1960-х годах. Алфавиты, следующие геометрическому распределению , будут иметь код Голомба в качестве оптимального префиксного кода . [1] что делает кодирование Голомба очень подходящим для ситуаций, в которых появление малых значений во входном потоке значительно более вероятно, чем больших значений.

Кодирование риса [ править ]

Кодирование Райса (изобретое Робертом Ф. Райсом ) означает использование подмножества семейства кодов Голомба для создания более простого (но, возможно, неоптимального) префиксного кода. Райс использовала этот набор кодов в схеме адаптивного кодирования ; «Кодирование Райса» может относиться либо к этой адаптивной схеме, либо к использованию этого подмножества кодов Голомба. В то время как код Голомба имеет настраиваемый параметр, который может быть любым положительным целым значением, коды Райса — это те, в которых настраиваемый параметр представляет собой степень двойки. Это делает коды Райса удобными для использования на компьютере, поскольку умножение и деление на 2 можно более эффективно реализовать в двоичной арифметике .

Райс была мотивирована предложить это более простое подмножество из-за того, что геометрические распределения часто меняются со временем и не известны точно, или и то, и другое, поэтому выбор, казалось бы, оптимального кода может быть не очень выгодным.

Кодирование Райса используется в качестве этапа энтропийного кодирования во многих методах сжатия изображений без потерь и сжатия аудиоданных .

Обзор [ править ]

Пример кодирования Голомба для источника x с геометрическим распределением, с параметром p (0) = 0,2 , с использованием кода Голомба с M = 3 . 2-битный код 00 используется в 20% случаев; 3-битные коды 010, 011 и 100 используются более 38% времени; 4 бита и более необходимы в меньшинстве случаев. Для этого источника энтропия = 3,610 бит; для этого кода с этим источником скорость = 3,639 бит; следовательно, избыточность = 0,030 бит или эффективность = 0,992 бит на бит.

Построение кодов [ править ]

Кодирование Голомба использует настраиваемый параметр M для разделения входного значения x на две части: q , результат деления на M , и r , остаток. Частное передается в унарном кодировании , за которым следует остаток в усеченном двоичном кодировании . Когда , кодирование Голомба эквивалентно унарному кодированию.

Коды Голомба-Райса можно рассматривать как коды, которые указывают число по положению ячейки ( q ) и смещению внутри ячейки ( r ). На рисунке в качестве примера показаны позиция q и смещение r для кодирования целого числа x с использованием параметра Голомба-Райса M = 3 с вероятностями источника, следующими за геометрическим распределением с p (0) = 0,2 .

Формально эти две части задаются следующим выражением, где x — кодируемое неотрицательное целое число:

и

.
На этом изображении показана избыточность кода Голомба в битах при M оптимальном выборе для 1 − p (0) ≥ 0,45.

И q , и r будут закодированы с использованием переменного числа битов: q - унарным кодом, а r - b битами для кода Райса или выбором между b и b +1 битами для кода Голомба (т. е. M не является степенью 2) . ), с . Если , затем используйте b бит для кодирования r ; в противном случае используйте b +1 бит для кодирования r . Четко, если M — степень 2, и мы можем закодировать все значения r с помощью b бит.

Целое число x , обработанное Голомбом, было длиной прогона процесса Бернулли , который имеет геометрическое распределение, начинающееся с 0. Наилучший выбор параметра M - это функция соответствующего процесса Бернулли, который параметризуется выражением вероятность успеха в данном испытании Бернулли . M — это либо медиана распределения, либо медиана ±1. Его можно определить с помощью неравенств:

которые решаются

.

Для примера с p (0) = 0,2 :

.

Код Голомба для этого распределения эквивалентен коду Хаффмана для тех же вероятностей, если бы можно было вычислить код Хаффмана для бесконечного набора исходных значений.

Использовать с целыми числами со знаком [ править ]

Схема Голомба была разработана для кодирования последовательностей неотрицательных чисел. Однако его легко расширить для приема последовательностей, содержащих отрицательные числа, используя схему перекрытия и чередования , в которой все значения переназначаются некоторому положительному числу уникальным и обратимым способом. Последовательность начинается: 0, -1, 1, -2, 2, -3, 3, -4, 4, ... n -е отрицательное значение (т. е. ) отображается в n й нечетное число ( ), и им й положительное значение сопоставляется с m -м четным числом ( ). Математически это можно выразить следующим образом: положительное значение x отображается в ( ), а отрицательное значение y отображается в ( ). Такой код можно использовать для простоты, даже если он неоптимален. По-настоящему оптимальные коды для двусторонних геометрических распределений включают в себя несколько вариантов кода Голомба в зависимости от параметров распределения, в том числе и этот. [2]

Простой алгоритм [ править ]

Ниже приведена кодировка Райса-Голомба, где в остаточном коде используется простая усеченная двоичная кодировка, также называемая «кодированием Райса» (для остаточных кодов возможны другие двоичные кодировки различной длины, такие как арифметические кодировки или кодировки Хаффмана, если статистическое распределение коды остатков не являются плоскими, особенно когда используются не все возможные остатки после деления). В этом алгоритме, если параметр M равен степени 2, он становится эквивалентным более простому кодированию Райса:

  1. Присвойте параметру M целочисленное значение.
  2. Для N числа, которое нужно закодировать, найдите
    1. частное = q = пол( N / M )
    2. остаток = r = N по модулю M
  3. Создать кодовое слово
    1. Формат кода: <Код частного><Код остатка>, где
    2. Частный код (в унарном кодировании )
      1. Запишите строку длиной q из 1 бита (или из 0 бит).
      2. Запишите 0 бит (соответственно 1 бит)
    3. Код остатка (в усеченной двоичной кодировке )
      1. Позволять
        1. Если код r в двоичном представлении с использованием b бит.
        2. Если закодируйте номер в двоичном представлении с использованием b + 1 бит.

Расшифровка:

  1. Декодируйте унарное представление q (подсчитайте число 1 в начале кода)
  2. Пропустить разделитель 0
  3. Позволять
    1. Интерпретируйте следующие b бит как двоичное число r' . Если удерживается, затем напоминание
    2. В противном случае интерпретируйте b + 1 бит как двоичное число r' , напоминание будет выглядеть так:
  4. Вычислить

Пример [ править ]

Установите М = 10 . Таким образом . Прекращение .

Кодирование частной части
д выходные биты
0 0
1 10
2 110
3 1110
4 11110
5 111110
6 1111110
Н
Кодирование оставшейся части
р компенсировать двоичный выходные биты
0 0 0000 000
1 1 0001 001
2 2 0010 010
3 3 0011 011
4 4 0100 100
5 5 0101 101
6 12 1100 1100
7 13 1101 1101
8 14 1110 1110
9 15 1111 1111

Например, при кодировании Райса-Голомба с использованием параметра M = 10 десятичное число 42 сначала будет разделено на q = 4 и r = 2 и будет закодировано как qcode( q ),rcode( r ) = qcode(4 ),rcode(2) = 11110,010 (вам не нужно кодировать разделительную запятую в выходном потоке, поскольку 0 в конце q- кода достаточно, чтобы сказать, когда q заканчивается и начинается r ; оба qcode и rcode являются саморазграниченными).

Использовать для кодирования по длине [ править ]

Обратите внимание, что p и 1 – p в этом разделе поменяны местами по сравнению с использованием в предыдущих разделах.

Учитывая алфавит из двух символов или набор из двух событий, P и Q , с вероятностями p и ( 1 − p ) соответственно, где p ≥ 1/2 , кодирование Голомба может использоваться для кодирования серий из нуля или более P ′ s, разделенные одиночными Q 's. В этом приложении наилучшей настройкой параметра M является ближайшее целое число к . Когда p = 1/2, M = 1 и код Голомба соответствует унарному коду ( n ≥ 0 P , за которым следует Q , кодируется как n единиц, за которыми следует ноль). Если требуется более простой код, можно присвоить параметр Голомба – Райса b (т. е. параметр Голомба ) до целого числа, ближайшего к ; хотя это не всегда лучший параметр, обычно это лучший параметр Райса, и его производительность сжатия довольно близка к оптимальному коду Голомба. (Сам Райс предлагал использовать различные коды для одних и тех же данных, чтобы выяснить, какой из них лучше. Более поздний исследователь JPL предложил различные методы оптимизации или оценки параметра кода. [3] )

Рассмотрите возможность использования кода Райса с двоичной частью, имеющей b битов, для кодирования последовательностей серий, где P имеет вероятность p . Если — это вероятность того, что бит будет частью k -битной серии ( Ps и один Q ) и - степень сжатия этого пробега, тогда ожидаемая степень сжатия равна

Сжатие часто выражается через , пропорция сжата. Для подход кодирования длин серий приводит к степени сжатия, близкой к энтропии . Например, используя код Райса для дает степень сжатия 91,89% , а предел энтропии составляет 91,92% .

Адаптивное кодирование Голомба-Райса [ править ]

Если распределение вероятностей для целых чисел неизвестно, оптимальный параметр кодера Голомба – Райса определить невозможно. Таким образом, во многих приложениях используется двухпроходный подход: сначала блок данных сканируется для оценки функции плотности вероятности (PDF) для данных. Затем на основе этой оцененной PDF определяется параметр Голомба – Райса. Более простой вариант этого подхода состоит в том, чтобы предположить, что PDF принадлежит параметризованному семейству, оценить параметры PDF на основе данных, а затем вычислить оптимальный параметр Голомба – Райса. Именно этот подход используется в большинстве приложений, обсуждаемых ниже.

Альтернативный подход к эффективному кодированию целочисленных данных, PDF которых неизвестен или варьируется, заключается в использовании обратно-адаптивного кодировщика. Кодер RLGR [1] достигает этого, используя очень простой алгоритм, который регулирует параметр Голомба-Райса вверх или вниз, в зависимости от последнего закодированного символа. Декодер может следовать тому же правилу для отслеживания изменений параметров кодирования, поэтому не требуется передавать никакой дополнительной информации, а только закодированные данные. Предполагая обобщенный гауссовский PDF-файл, который охватывает широкий диапазон статистических данных, наблюдаемых в данных, таких как ошибки прогнозирования или коэффициенты преобразования в мультимедийных кодеках, алгоритм кодирования RLGR может очень хорошо работать в таких приложениях.

Приложения [ править ]

Эксперимент по коэффициентам сжатия алгоритма Райса, закодированного Голомбом

Многочисленные кодеки сигналов используют код Райса для предсказания остатков. В алгоритмах прогнозирования такие остатки имеют тенденцию попадать в двустороннее геометрическое распределение , причем небольшие остатки встречаются чаще, чем большие остатки, а код Райса близко аппроксимирует код Хаффмана для такого распределения без накладных расходов, связанных с передачей таблицы Хаффмана. . Одним из сигналов, который не соответствует геометрическому распределению, является синусоидальная волна , поскольку дифференциальные остатки создают синусоидальный сигнал, значения которого не создают геометрическое распределение (самое высокое и самое низкое значения остатка имеют одинаковую высокую частоту появления, только медианные положительные и отрицательные значения остатки встречаются реже).

Несколько аудиокодеков без потерь , таких как Shorten , [4] ФЛАК , [5] Apple Lossless и MPEG-4 ALS используют код Райса после этапа линейного прогнозирования (называемого «адаптивным FIR-фильтром» в Apple Lossless). Кодирование Райса также используется в FELICS кодеке изображений без потерь .

Кодер Голомба-Райса используется на этапе энтропийного кодирования алгоритма Райса на основе кодеков изображений без потерь . Один из таких экспериментов дает показанный график степени сжатия.

Схема JPEG-LS использует Райс-Голомба для кодирования остатков прогнозирования.

Упомянутая выше адаптивная версия кодирования Голомба-Райса, кодировщик RLGR [2] , используется для кодирования содержимого экрана в виртуальных машинах в компоненте RemoteFX протокола удаленного рабочего стола Microsoft.

См. также [ править ]

Ссылки [ править ]

  1. ^ Галлагер, Р.Г.; ван Вурхис, округ Колумбия (1975). «Оптимальные исходные коды для геометрически распределенных целочисленных алфавитов». Транзакции IEEE по теории информации . 21 (2): 228–230. дои : 10.1109/тит.1975.1055357 .
  2. ^ Мерхав, Н.; Серусси, Г.; Вайнбергер, MJ (2000). «Кодирование источников с двусторонними геометрическими распределениями и неизвестными параметрами». Транзакции IEEE по теории информации . 46 (1): 229–236. дои : 10.1109/18.817520 .
  3. ^ Кили, А. (2004). Выбор параметра Голомба при кодировании Райса (технический отчет). Лаборатория реактивного движения . 42-159.
  4. ^ «Человек укорачивается» . Архивировано из оригинала 30 января 2014 г. Проверено 7 декабря 2008 г.
  5. ^ «FLAC — Обзор формата» . xiph.org .

Дальнейшее чтение [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: B038E12838A72642E77068D940061042__1709598240
URL1:https://en.wikipedia.org/wiki/Golomb_coding
Заголовок, (Title) документа по адресу, URL1:
Golomb coding - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)