Главная » Программирование звука » Методы компрессии с прогнозированием

0

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

Простой  модуль  компрессии  можно  построить,  взяв  за  основу  произвольную функцию  прогнозирования.  Пусть,  например,  этот  модуль  сравнивает  предсказанную  величину  с  той,  что  имеется  на  самом  деле.  Если  предсказанная  величина точно  совпадет  с  фактической,  то  на  выход  компрессора  будем  подавать  бит-единичку. B противном случае будет выдаваться нулевой бит, за которым будет идти реальная  величина.  Если  большую  часть  времени  прогноз  будет  правильным,  то объем  данных,  полученных  на  выходе  этого  модуля, будет  меньше,  чем  поданный на вход.

B силу наличия случайных ошибок и других факторов, добиться точного предсказания  будет  тяжело.  B  большинстве  алгоритмов,  основанных  на  прогнозировании  значений,  вместо  нулей  и  единиц  на  выход  подается  разница  между  предсказанной   величиной   и   фактическим   значением.   Если   прогноз   большую   часть времени  будет  несильно  отличаться  от  истинных  величин,  то  эти  значения  окажутся  маленькими.  Их  можно  будет  хранить,  используя  всего  несколько  битов на каждое, либо воспользоваться другим методом для компрессии этих приращений.

B  ДИКМ,  например,  используется  простейший  метод  прогнозирования:  предполагается,  что  последующее  значение  будет  совпадать  с  предыдущим.  Проводились   исследования   большого   количества   различных   функций   прогнозирования с  целью  получения  более  качественного  алгоритма компрессии  звука,  однако увеличение  накладных  расходов  на  вычисления  ограничили  область  их  распространения.

Кодирование в частотных поддиапазонах

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

Применение   нескольких   поддиапазонов   дает   возможность   воспользоваться знаниями  о  том,  как  устроен  слух  человека  для  получения  еще  более  качественной  компрессии.  Поскольку  человек  в  одних  диапазонах  частот  слышит  лучше, чем в других, вы можете использовать различные параметры компрессии для разных   поддиапазонов.   Поддиапазоны,   расположенные   вблизи   центра   слышимой человеком  области,  удастся  оставить  без  изменений,  в  то  время  как менее  различимые  диапазоны  могут  подвергаться  менее  точной  обработке,  либо  вообще  не учитываться.  Методы  поддиапазонного  кодирования  не  просты   они  основаны как  на  сложном  математическом  аппарате,  используемом  для  выделения  и  анализа  поддиапазонов,  так  и  на  тщательном  изучении  слуха  человека,  необходимом для  разработки  рекомендаций  по  обработке  каждого  из  поддиапазонов.  Обычно поддиапазонное кодирование позволяет сжать ИКМ аудиоданные в 10-20 раз.

Все  наиболее  совершенные  из  действующих  сегодня  день  методов  компрессии, включая MPEG-аудио, Dolby AC-2 и AC-3, систему Sony MiniDisk (ATRAC), а также RealAudio, основаны на поддиапазонном кодировании.

Источник: Кинтцель Т.  Руководство программиста по работе со звуком = A Programmer’s Guide to Sound: Пер. с англ. М.: ДМК Пресс, 2000. 432 с, ил. (Серия «Для программистов»).

По теме:

  • Комментарии