Кодер, декодер и способ
Иллюстрации
Показать всеГруппа изобретений относится к области кодирования. Техническим результатом является увеличение степени сжатия данных. Кодек (30) включает, по меньшей мере, один кодер (10) и, по меньшей мере, один декодер (20). Кодер включает схему обработки данных для применения к входным данным (D1) одной из форм разностного и/или суммирующего кодирования для формирования одной или более соответствующих кодированных последовательностей, которую подвергают циклическому переходу относительно максимального значения и/или циклическому переходу относительно минимального значения для формирования кодированных выходных данных (D2 или D3). Декодер включает схему обработки данных для обработки одной или более частей кодированных данных (D2 или D3), выполненную с возможностью применения одного из видов разностного и/или суммирующего декодирования к одной или более соответствующих кодированных последовательностей упомянутых одной или более частей, при этом одна или более кодированные последовательности подвергаются операции циклического перехода относительно максимального значения и/или циклического перехода относительно минимального значения, для формирования декодированных выходных данных (D5). 7 н. и 37 з.п. ф-лы, 3 ил., 2 табл.
Реферат
Область техники
Настоящее изобретение относится к кодерам, например, к кодерам, которые подходят для применения оператора прямого О-дельта-кодирования (О-дельта-кодирования). Также настоящее изобретение относится к способам кодирования данных, например, к способам кодирования данных с применением оператора прямого О-дельта-кодирования. Также настоящее изобретение относится к декодерам для декодирования кодированных данных, например, к декодерам, которые подходят для применения оператора обратного О-дельта-кодирования. Дополнительно, настоящее изобретение относится к способам декодирования кодированных данных, например, к способам декодирования кодированных данных с применением оператора обратного О-дельта-кодирования. Также, дополнительно, настоящее изобретение относится к программным продуктам, записанным на машиночитаемом носителе для хранения данных, при этом такие программные продукты могут исполняться на вычислительном оборудовании с целью реализации упомянутых выше способов.
Предпосылки создания изобретения
Математическую теорию связи, которая легла в основу современных систем связи, предложил Клод Шеннон. При этом в свете упомянутой теории были разработаны различные современные методы кодирования. Список информационных источников, дающих обзор современного уровня технических знаний, приведен в таблице 1.
В патенте EP 1376974 B1 («Способ и устройство для сжатия заголовка пакета» ("Method and apparatus for packet header compression"), принадлежащем компании Alcatel Lucent, Франция) описан способ передачи пакетов данных, в котором пакеты данных включают поле (CF), содержащее сжатое значение. Это сжатое значение представляет собой значение, изменяющееся от пакета к пакету и охватывающее заранее заданный интервал (далее - «интервал интерпретации»). Способ включает следующие шаги:
(i) если расстояние между сжимаемым значением и заранее заданной границей циклического перехода меньше, чем заранее заданное пороговое значение, добавление дополнительного бита к сжатому значению, причем этот дополнительный бит уникально задает положение сжатого значения относительно границы циклического перехода;
(ii) в приемнике, вычисление первого интервала интерпретации в соответствии со всеми принятыми битами сжатого значения;
(iii) сигнализация о циклическом переходе, если более одного значения в первом интервале интерпретации совпадает с принятым сжатым значением;
(iv) после сигнализации о циклическом переходе, вычисление второго интервала интерпретации в соответствии со всеми принятыми битами сжатого значения, кроме дополнительного бита; и
(v) разрешение неопределенности декомпрессированного значения во втором интервале интерпретации с использованием дополнительного бита.
Определение энтропии Шеннона дано в документах Р7 и Р8, перечисленных в таблице 1. Существует множество различных методов сжатия, которые могут применяться для уменьшения энтропии исходных данных. Такие методы иногда применяют для изменения энтропии, например, для получения более высоких степеней сжатия исходных данных, выполняемого без потерь; такие изменяющие энтропию методы включают, например, кодирование длин серий (run-length-encoding, RLE) в соответствии с описанием в документе Р2 из таблицы 1, кодирование переменной длины (variable-length-coding, VLC) в соответствии с описанием в документе Р1 из таблицы 1, кодирование Хаффмана в соответствии с описанием в документе Р3 из таблицы 1, дельта-кодирование в соответствии с описанием в документе Р4 из таблицы 1. Эти методы могут эффективно применяться для сжатия данных, представляющих собой алфавитные символы, числа, байты или слова. Однако эти методы не являются хорошо приспособленными для сжатия исходных данных на битовом уровне, и по этой причине не подходят для эффективного сжатия исходных данных, меняющихся побитно.
Дельта-кодирование, например, в соответствии с описанием в документе Р6 из таблицы 1, подходит для формирования дельта-значений (значений разности), которые могут быть положительными или отрицательными значениями, на основе положительных значений исходных данных. При этом известны существующие реализации дельта-кодеров для применения с 8-битным, 16-битным или 32-битным циклическим переходом, в зависимости от применяемого размера элементов данных. Однако не существует современных дельта-кодеров, оптимизированных для других режимов, помимо 8-битных, 16-битных или 32-битных значений. В частности, существующие дельта-кодеры особенно неэффективны при кодировании исходных битовых значений, а именно «0» и «1», например, при побитовом кодировании, так как в результате их работы обычно получают три различных значения, а именно «-1», «0» и «1».
Любые типы данных занимают определенный объем памяти, а при перемещении данных из одного места в другое необходимы передающие ресурсы системы связи. С ростом объемов данных, например, в результате развития мультимедийных технологий, таких как 3-мерный видеоконтент, соответственно, требуется все больший объем памяти и все больше передающих ресурсов для обращения с данными, и при этом также, с ростом объемов данных, растет энергопотребление. На глобальном уровне, объемы передаваемых данных увеличиваются с каждым днем; например, Интернет содержит громадные объемы данных, часть из которых хранится во множестве копий. При этом на существующем уровне техники известны методы понижения энтропии Е, связанной с данными, например, для применения при сжатии объема данных. Также на существующем уровне техники известны способы изменения энтропии, к примеру, дельта-кодирование или кодирование длин серий (RLE), однако необходимы усовершенствованные методы для обеспечения большей степени сжатия данных, чем это возможно на сегодняшний день.
Также требуется оптимизация применения существующих методов дельта-кодирования, которая позволила бы более быстро и более эффективно выполнять кодирование исходных данных, например, побитное кодирование, при котором используются не все значения из элементов исходных данных, и/или при котором предыдущий или последующий метод кодирования, применяемый в комбинации с дельта-кодированием, требует более формата большей разрядности, нежели побитное изменение, исходно применяемое для кодируемых данных.
Сущность изобретения
Цель настоящего изобретения - предложить усовершенствованную форму дельта-кодера, а именно «прямой О-дельта-кодер», который более эффективен при кодировании индивидуальных битов, а именно, при побитном кодировании, а также для других значений данных.
Еще одна цель настоящего изобретения - предложить усовершенствованный способ дельта-кодирования данных, а именно, способ прямого О-дельта-кодирования данных.
Еще одна цель настоящего изобретения - предложить усовершенствованный декодер для декодирования кодированных данных, например, данных, закодированных методом О-дельта-кодирования, а именно, обратный О-дельта-декодер.
Еще одна цель настоящего изобретения - предложить усовершенствованный способ декодирования кодированных данных, например, данных, закодированных методом О-дельта-кодирования, а именно, способ обратного О-дельта-декодирования данных.
В соответствии с первым аспектом настоящего изобретения предложен кодер по п. 1 приложенной формулы изобретения: предложен кодер для кодирования входных данных (D1), включающих последовательность числовых значений, с целью формирования соответствующих кодированных выходных данных (D2 или D3), включающий схему обработки данных для применения ко входным данным (D1) одной из форм разностного и/или суммирующего кодирования с целью формирования одной или более соответствующих кодированных последовательностей, при этом одну или более соответствующих кодированных последовательностей подвергают циклическому переходу (wraparound) относительно максимального значения и/или циклическому переходу относительно минимального значения с целью формирования кодированных выходных данных (D2 или D3).
Предпочтительно, циклический переход применяют для исключения появления отрицательных разностей или слишком больших значений при реализации кодера. Выражение «числовое значение» следует понимать как включающее индивидуальные биты (двоичное значение), а также группы бит (значение большего порядка, чем двоичное).
Настоящее изобретение обладает тем преимуществом, что комбинация разностного и/или суммирующего кодирования с циклическим переходом позволяет получить полезное изменение энтропии входных данных (D1) с формированием кодированных данных (D2), что обеспечивает возможность более эффективного сжатия данных в заданном энтропийном кодере при формировании кодированных данных (D3) на основе кодированных данных (D2).
Опционально, для кодера, схема обработки данных выполнена с возможностью анализа входных данных (D1) и/или одной или более соответствующих кодированных последовательностей с целью вычисления одного или более значений смещения, минимальных и/или максимальных значений для применения к одной или более соответствующим кодированным последовательностям с целью использования при формировании кодированных выходных данных (D2 или D3). Также, опционально, для кодера, одно или более значений смещения имеют значение «0».
Опционально, кодер выполнен с возможностью обработки числовых значений, включающих одно или более 1-битных значений, и при этом кодер выполнен с возможностью кодирования входных данных (D1) побитно.
Опционально, в кодере, одна или более соответствующих кодированных последовательностей представляют изменения в последовательных значениях входных данных (D1).
Опционально, кодер выполнен с возможностью применения значения циклического перехода (wrapValue), при этом значение циклического перехода равно максимальному значению (highValue) минус минимальное значение (lowValue) плюс 1. Это значение циклического перехода используют, предпочтительно, при формировании кодированных выходных данных (D2 или D3), чтобы исключить появление таких значений, которые были бы меньше минимального значения (lowValue) (т.е. часто, отрицательным значением) или больше максимального значения (highValue).
Опционально, кодер выполнен с возможностью разбиения входных данных (D1) на множество фрагментов данных, которые кодируют отдельно. Также, опционально, кодер выполнен с возможностью избирательного применения кодирования к фрагментам данных, только когда при помощи этого может быть достигнуто сжатие данных в кодированных выходных данных (D2 или D3).
Опционально, кодер выполнен с возможностью применения заданного по умолчанию первого значения предсказания для последовательности значений предсказания, которые применяют для создания выходных кодированных данных (D2 или D3), с использованием входного значения, значения предсказания и оператора кодирования. Также, опционально, в кодере, заданное по умолчанию первое значение предсказания равно «0». Также, опционально, первое значение предсказания может представлять собой минимальное значение (lowValue), максимальное значение (highValue), (максимальное значение (highValue) плюс минимальное значение (lowValue) плюс 1) разделить на 2, и т.п.
Опционально, кодер выполнен с возможностью применения дополнительного кодирования с целью формирования кодированных выходных данных (D2 или D3), при этом дополнительное кодирование включает по меньшей мере одно из следующего: кодирование длин серий (RLE), раздельное RLE-кодирование, модификатор энтропии (entropy modifier, ЕМ), кодирование переменной длины (VLC), кодирование Хаффмана, арифметическое кодирование, интервальное кодирование.
Опционально, кодер выполнен с возможностью разбиения входных данных (D1) на множество фрагментов в зависимости от длины серий идентичных друг другу битов в них, что является эффективным для кодирования с использованием кодирования длин серий (RLE), раздельного RLE-кодирования, модификатора энтропии (ЕМ), кодирования Хаффмана, кодирования переменной длины (VLE), интервального кодирования и/или арифметического кодирования.
Опционально, в кодере схема обработки данных реализована с использованием вычислительной аппаратуры, выполненной с возможностью исполнения одного или более программных продуктов, записанных на машиночитаемом носителе для хранения данных.
В соответствии со вторым аспектом настоящего изобретения предложен способ использования кодера для кодирования входных данных (D1), включающих последовательность числовых значений, с целью формирования соответствующих кодированных выходных данных (D2 или D3), включающий:
(a) использование схемы обработки данных кодера для применения ко входным данным (D1) одной из форм разностного и/или суммирующего кодирования, с целью получения одной или более соответствующих кодированных последовательностей; и
(b) использование схемы обработки данных для выполнения над одной или более соответствующими кодированными последовательностями операции циклического перехода относительно максимального значения и/или циклического перехода относительно минимального значения, с целью формирования кодированных выходных данных (D2 или D3).
Предпочтительно, циклический переход применяют для исключения появления отрицательных разностей или слишком больших значений при реализации способа кодирования. Выражение «числовое значение» следует понимать как включающее индивидуальные биты (двоичное значение), а также группы битов (значение большего порядка, чем двоичное).
Опционально, способ включает использование схемы обработки данных для анализа входных данных (D1) и/или одной или более соответствующих кодированных последовательностей с целью вычисления одного или более значений смещения, минимальных и/или максимальных значений для применения к одной или более соответствующим кодированным последовательностям с целью использования при формировании кодированных выходных данных (D2 или D3). Также, опционально, способ включает использование, в качестве одного или более значений смещения, значения «0».
Опционально, способ включает обработку числовых значений, включающих одно или более 1-битных значений, при этом кодер выполнен с возможностью кодирования входных данных (D1) побитно. Также, опционально, способ включает использование, в качестве одного или более значений смещения, значения «0».
Опционально, при реализации способа, одна или более соответствующих кодированных последовательностей представляют изменения в последовательных значениях входных данных (D1).
Опционально, способ включает управление кодером для применения значения циклического перехода (wrapValue), при этом значение циклического перехода равно максимальному значению (highValue) минус минимальное значение (lowValue) плюс 1. Это значение циклического перехода используют, предпочтительно, при формировании кодированных выходных данных (D2 или D3), чтобы исключить появление таких значений, которые были бы меньше минимального значения (lowValue) (т.е. часто, отрицательным значением) или больше максимального значения (highValue).
Опционально, способ включает разбиение входных данных (D1) на множество фрагментов данных, которые кодируют отдельно. Также, опционально, способ включает избирательное применение кодирования к фрагментам данных, только когда при помощи этого может быть достигнуто сжатие данных в кодированных выходных данных (D2 или D3).
Опционально, способ включает использование кодера для применения заданного по умолчанию первого значения предсказания для последовательности значений предсказания, которые применяют для создания кодированных выходных данных (D2 или D3), с использованием входного значения, значения предсказания и оператора кодирования. Также, опционально, в этом способе заданное по умолчанию первое значение предсказания равно «0». Также, опционально, первое значение предсказания может представлять собой минимальное значение (lowValue), максимальное значение (highValue), (максимальное значение (highValue) плюс минимальное значение (lowValue) плюс 1) разделить на 2, и т.п.
Опционально, способ включает применение дополнительного кодирования с целью формирования кодированных выходных данных (D2 или D3), при этом дополнительное кодирование включает по меньшей мере одно из следующего: кодирование длин серий (RLE), раздельное RLE-кодироавние, модификатор энтропии (ЕМ), кодирование переменной длины (VLC), кодирование Хаффмана, арифметическое кодирование, интервальное кодирование.
Также, опционально, способ включает разбиение входных данных (D1) на множество фрагментов в зависимости от длины серий идентичных друг другу битов в них, что является эффективным для кодирования с использованием кодирования длин серий (RLE), раздельного RLE-кодирования, модификатора энтропии (ЕМ), кодирования Хаффмана, кодирования переменной длины (VLE), интервального кодирования и/или арифметического кодирования.
Также, опционально, способ включает реализацию схемы обработки с использованием вычислительной аппаратуры, выполненной с возможностью исполнения одного или более программных продуктов, записанных на машиночитаемом носителе для хранения данных.
В соответствии с третьим аспектом настоящего изобретения предложен декодер для декодирования кодированных данных (D2, D3 или D4) с целью формирования соответствующих декодированных выходных данных (D5), включающий схему обработки данных для обработки одной или более частей кодированных данных (D2, D3 или D4), при этом схема обработки данных выполнена с возможностью применения одного из видов разностного и/или суммирующего декодирования к одной или более соответствующим кодированным последовательностям упомянутых одной или более частей, при этом одну или более кодированные последовательности подвергают операции циклического перехода относительно максимального значения и/или циклического перехода относительно минимального значения с целью формирования декодированных выходных данных (D5).
Опционально, декодер выполнен с возможностью декодирования кодированных данных (D2, D3 или D4), включающих одно или более 1-битных значений, при этом декодер выполнен с возможностью декодирования кодированных данных (D2, D3 или D4) побитно.
Опционально, декодер сконфигурирован таким образом, что схема обработки данных выполнена с возможностью приема одного или более значений для применения к одной или более кодированным последовательностям с целью использования при формировании декодированных выходных данных (D5). Также, опционально, принятые значения являются максимальными значениями, минимальными значениями и/или значениями смещения. Также, опционально, декодер выполнен с возможностью функционирования так, что одно или более значений смещения имеют значение «0».
Опционально, декодер выполнен с возможностью функционирования в случае, когда одна или более кодированных последовательностей представляют изменения в последовательных значениях, закодированных в кодированных данных (D2, D3 или D4).
Опционально, декодер выполнен с возможностью применения значения циклического перехода (wrapValue), при этом значение циклического перехода равно максимальному значению (highValue) минус минимальное значение (lowValue) плюс 1. Это значение циклического перехода используют, предпочтительно, при формировании кодированных выходных данных (D5), чтобы исключить появление таких значений, которые были бы меньше минимального значения (lowValue) (т.е. часто, отрицательным значением) или больше максимального значения (highValue).
Опционально, декодер сконфигурирован таким образом, что схема обработки данных выполнена с возможностью применения к данным, обрабатываемым при ее помощи, операции, обратной по меньшей мере одному из следующего: кодирование длин серий (RLE), раздельное RLE-кодирование, модификатор энтропии (ЕМ), кодирование переменной длины (VLC), кодирование Хаффмана, арифметическое кодирование, интервальное кодирование.
Опционально, схема обработки данных выполнена с возможностью предположения задаваемого по умолчанию значения для первого значения предсказания в последовательности данных, декодируемых с ее помощью. Также, опционально, заданное по умолчанию значение предсказания имеет значение «0». Однако значение предсказания может также представлять собой минимальное значение (lowValue), максимальное значение (highValue), (максимальное значение (highValue) плюс минимальное значение (lowValue) плюс 1) разделить на 2 и т.п., как это упоминалось выше.
Опционально, в декодере, схема обработки данных реализована с использованием вычислительной аппаратуры, выполненной с возможностью исполнения одного или более программных продуктов, записанных на машиночитаемом носителе для хранения данных.
В соответствии с четвертым аспектом настоящего изобретения предложен способ использования декодера для декодирования кодированных данных (D2, D3 или D4) с целью формирования соответствующих декодированных выходных данных (D5), включающий:
использование схемы обработки данных для обработки одной или более частей кодированных данных (D2, D3 или D4), при этом схема обработки данных выполнена с возможностью применения одного из видов разностного и/или суммирующего декодирования к одной или более соответствующим кодированным последовательностям упомянутых одной или более частей, при этом одну или более кодированных последовательностей подвергают операции циклического перехода относительно максимального значения и/или циклического перехода относительно минимального значения с целью формирования декодированных выходных данных (D5).
Опционально, способ включает декодирование кодированных данных (D2, D3 или D4), включающих одно или более 1-битных значений, и использование декодера для декодирования кодированных данных (D2, D3 или D4) побитно. Также, опционально, в способе, одно или более значений смещения имеют значение «0».
Опционально, способ включает использование схемы обработки данных для приема значений входных данных (D1) и/или одной или более соответствующих кодированных последовательностей (D2, D3 или D4) с целью применения их к одной или более соответствующим кодированным последовательностям для использования при формировании кодированных выходных данных (D5).
Опционально, в способе одна или более соответствующих кодированных последовательностей представляют изменения в последовательных значениях, закодированных в кодированных данных (D2, D3 или D4).
Опционально, способ включает использование циклического перехода относительно максимального значения или циклического перехода относительно минимального значения с целью исключения возникновения отрицательных разностей или слишком больших значений при формировании декодированных выходных данных (D5).
Опционально, в способе схема обработки данных выполнена с возможностью применения к данным, обрабатываемым при ее помощи, обработки, обратной по меньшей мере одному из следующего: кодирование длин серий (RLE), раздельное RLE-кодирование, модификатор энтропии (ЕМ), кодирование переменной длины (VLC), кодирование Хаффмана, арифметическое кодирование, интервальное кодирование.
Опционально, схема обработки данных выполнена с возможностью предположения задаваемого по умолчанию значения для первого значения предсказания в последовательности данных, декодируемых с ее помощью. Также, опционально, в способе заданное по умолчанию значение предсказания имеет значение «0».
Также, опционально, в способе схему обработки данных реализуют с использованием вычислительной аппаратуры, выполненной с возможностью исполнения одного или более программных продуктов, записанных на машиночитаемом носителе для хранения данных.
В соответствии с пятым аспектом настоящего изобретения предложен способ использования декодера для декодирования кодированных данных (D2, D3 или D4) с целью формирования соответствующих декодированных выходных данных (D5), включающий:
(a) использование схемы обработки данных для обработки кодированных данных (D2, D3 или D4) с целью применения декодирования к одной или более частям кодированных данных (D2, D3 или D4), с учетом того, что кодированные данные (D2, D3 или D4) содержат по меньшей мере одну кодированную последовательность, представляющую изменения в последовательных значениях смещенных данных, и используют циклический переход относительно максимального значения или циклический переход относительно минимального значения; и
(b) использование схемы обработки данных для формирования соответствующих обработанных данных, а также для смещения упомянутых одной или более частей с использованием по меньшей мере одного значения предварительного смещения и/или пост-смещения с целью формирования декодированных выходных данных (D5).
Что касается описанных выше аспектов, в отношении значений смещения, опционально, в декодере, схема обработки данных выполнена с возможностью приема диапазона значений кодированных данных (D2, D3 или D4) и для вычисления на его основе по меньшей мере одного значения предварительного смещения и/или пост-смещения. Значение пост-смещения может использоваться для формирования смещенных данных перед применением обратного оператора, например, оператора обратного О-дельта-кодирования, а значение предварительного смещения используют для смещения данных после применения обратного оператора. Это по меньшей мере одно значение смещения, опционально, комбинируют с обработанными данными с целью получения декодированных выходных данных (D5).
Смещение, опционально, поддерживается в декодере. Смещение используют тогда, когда оно использовано также и в кодере. Циклический переход в пределах параметра (wrapValue), для которого используется диапазон (lowValue, highValue), обратный оператор (суммирующий либо дифференциальный) и обратное устройство предсказания (входное значение на основе выходного значения) являются важными элементами декодера.
Опционально, в декодере схема обработки данных выполнена с возможностью применения к данным, обрабатываемым при ее помощи, обработки, обратной по меньшей мере одному из следующего: кодирование длин серий (RLE), раздельное RLE-кодирование, модификатор энтропии (ЕМ), кодирование переменной длины (VLC), кодирование Хаффмана, арифметическое кодирование, интервальное кодирование. Обработку выполняют с целью формирования данных (D4) на основе данных (D3).
В декодере, схема обработки данных выполнена с возможностью применения циклического перехода в пределах параметра (wrapValue), для которого использован диапазон (lowValue, highValue), при реализации в виде обратного декодирования, например, обратного О-дельта-декодирования.
В соответствии с шестым аспектом настоящего изобретения предложен кодек, включающий по меньшей мере один кодер по первому аспекту настоящего изобретения, для кодирования входных данных (D1) с целью формирования соответствующих кодированных данных (D2 или D3), а также по меньшей мере один декодер по третьему аспекту настоящего изобретения, для декодирования кодированных данных (D2, D3 или D4) с целью формирования соответствующих декодированных данных (D5).
В соответствии с седьмым аспектом настоящего изобретения предложен программный продукт, записанный на машиночитаемом носителе для хранения данных и являющийся исполняемым на вычислительном оборудовании с целью выполнения способа кодирования данных по второму аспекту настоящего изобретения.
В соответствии с восьмым аспектом настоящего изобретения предложен программный продукт, записанный на машиночитаемом носителе для хранения данных и являющийся исполняемым на вычислительном оборудовании с целью исполнения способа декодирования данных по четвертому аспекту настоящего изобретения.
Нужно понимать, что отличительные признаки настоящего изобретения могут комбинироваться произвольным образом в пределах объема настоящего изобретения, заданного приложенной формулой изобретения.
Описание чертежей
Далее, исключительно в качестве примера и со ссылками на приложенные чертежи, будут описаны примеры осуществления настоящего изобретения, где:
Фиг. 1 представляет собой иллюстрацию кодека, включающего кодер и декодер, реализованных для функционирования согласно настоящему изобретению;
Фиг. 2 представляет собой иллюстрацию шагов способа кодирования данных, выполняемого в кодере, показанном на фиг. 1; и
Фиг. 3 представляет собой иллюстрацию шагов способа декодирования данных, выполняемого в декодере, показанном на фиг. 1.
На приложенных чертежах числа, выделенные подчеркиванием, используются для обозначения элементов, над которыми находится подчеркнутое число, или с которыми подчеркнутое число является смежным. Неподчеркнутые числовые обозначения относятся к объектам, указанным линией, которая соединяет неподчеркнутое число и объект. Если число не выделено подчеркиванием и сопровождается связанной с ним стрелкой, это неподчеркнутое число используется для обозначения общего элемента, на который указывает стрелка.
Описание вариантов осуществления изобретения
При описании вариантов осуществления настоящего изобретения будут использованы следующие сокращения и определения, приведенные в таблице 2:
В целом, на примере фиг. 1, настоящее изобретение относится к кодеру 10 и связанному с ним способу функционирования; предпочтительно, кодер 10 реализован в виде прямого О-дельта-кодера. При этом настоящее изобретение относится также к соответствующему декодеру 20; предпочтительно, декодер 20 реализован в виде обратного О-дельта-декодера. В вариантах осуществления настоящего изобретения, предпочтительно, применяется оператор прямого О-дельта-кодирования, который является вариантом упомянутого выше существующего способа дельта-кодирования, оптимизированным для побитного кодирования, а также вариантом, оптимизированным по диапазону в случае других данных. О-дельта-кодирование используют в вычислительном оборудовании или специальном цифровом оборудовании, где применяются информационные слова переменной длины, например, 8/16/32/64 бит, и/или где применяется кодирование переменной длины для 8/16/32/64-битных элементов данных, исходное значение которых выражено в диапазоне от 1 до 64 бит, и соответствующее кодированное значение формируют с использованием от 1 до 64 бит. Очевидно, кодер 10 и декодер 20 являются, в любом случае, осведомленными о типе числовых значений, присутствующих в данных D1, например, исходных данных, и соответственно их определение или передача не будут рассматриваться здесь более подробно. Просто предполагается, что известен диапазон чисел (от MIN до МАХ), и что данные D1 подходят для применения.
Существующие методы дельта-кодирования расширяют диапазон значений от исходного (MIN, МАХ) до результирующего (MIN-MAX, MAX-MIN). Это означает, что они также создают отрицательные значения, даже если исходные данные содержат только положительные значения. Оператор О-дельта-кодирования, соответствующий настоящему изобретению, никогда не создает значений, не лежащих в диапазоне соответствующих исходных значений, и не расширяет используемого диапазона данных, и следовательно, эффективно применяется, например, при понижении энтропии и соответствующем сжатии данных. Рассмотрим пример, в котором при помощи существующих способов дельта-кодирования обрабатывают потоки 5-битных данных, а именно, данных, лежащих в диапазоне значений от 0 до 31: значения данных, формируемых такими способами дельта-кодирования будут лежать в диапазоне от -31 до +31, а именно, будут присутствовать 63 значения, которые, соответственно, могут быть представлены с использованием 6 бит (т.е. знакового бита +5 бит); в отличие от них, оператор прямого О-дельта-кодирования при работе с упомянутыми выше потоками 5-битных данных будет формировать значения, также лежащие в диапазоне от 0 до 31. При этом существующие способы дельта-кодирования не допускают рекурсивной реализации, тогда как оператор прямого или обратного О-дельта-кодирования в соответствии с настоящим изобретением может быть реализован рекурсивно и при этом также сохраняет используемый диапазон значений. Диапазон значений не обязательно должен иметь точность до одного бита, например, если значения от 0 до 31 представляемы 5 битами, оператор О-дельта-кодирования может использовать любой диапазон значений, к примеру, диапазон значений от 0 до 25, и при этом также функционировать корректным образом.
В принципе, способы О-дельта-кодирования, описанные в настоящем изобретении, всегда способны функционировать на базе имеющегося диапазона данных, примеры чего будут рассмотрены ниже. Способы О-дельта-кодирования могут быть усовершенствованы за счет предоставления информации, указывающей наименьшее встречающееся в данных значение ("lowValue") и наибольшее встречающееся в данных значение ("highValue"). Нужно отметить, что lowValue>=MIN, a highValue<=МАХ, и что эти значения являются опциональными.
Ниже описаны два примера операторов прямого и обратного О-дельта-кодирования в соответствии с настоящим изобретением. Первый пример операторов прямого и обратного О-дельта-кодирования является эффективным и относительно простым в реализации, например, в электронном и/или вычислительном оборудовании, выполненном с возможностью исполнения одного или более программных продуктов, записанных на машиночитаемом носителе для хранения данных.
При реализации операторов прямого или обратного О-дельта-кодирования в соответствии с настоящим изобретением, предпочтительно, все значения данных в исходной последовательности являются положительными, и наименьшее значение равно 0. Опционально, может использоваться некоторое значение смещения, например, значение предварительного смещения или значение пост-смещения, для смещения значения данных таким образом, чтобы все они были положительными и наименьшим значением был «0». Оператор О-дельта-кодирования в соответствии с настоящим изобретением допускает непосредственное применение с любыми типами данных; как правило, он позволяет получить сжатие данных, а именно, снизить требуемую скорость передачи данных, поскольку при добавлении значения смещения ко всем значениям или при вычитании значения смещения изо всех значений диапазон значений данных может быть задан с использованием меньшего количества битов. Например, если исходные значения данных, перед применением оператора прямого или обратного О-дельта-кодирования лежат в диапазоне от -11 до +18, этот диапазон может быть преобразован в диапазон от 0 до 29 с помощью значения смещения, равного 11, при этом преобразованный диапазон, соответственно, может быть представлен 5 битами. Если подобное значение предварительного смещения или значение пост-смещения не применяют, исходные данные требуют для своего описания по меньшей мере 6 битов, а на практике, для удобства, часто применяют полный 8-битный байт со знаком.
Аналогичная оптимизация диапазона данных также возможна при использовании обобщенного оператора прямого или обратного О-дельта-кодирования. То есть, если с помощью оператора прямого или обратного О-дельта-кодирования, или какого-либо иного способа, формируют значения данных, которые могут быть представлены, с использованием значения смещения, меньшим количеством битов, чем полный диапазон значений, то такая оптимизация диапазона может выполняться на любом из этапов способа О-дельта-кодирования. Когда используют значение смещения, будь оно отрицательным или положительным, его необходимо передавать из кодера 10 в декодер 20, как это показано ниже на примере фиг. 1, фиг. 2 и фиг. 3.
Оператор прямого О-дельта-кодирования может иметь 1-битную реализацию, например, для побитного кодирования исходных данных D1; в случае 1-битной реализации способ 1 и способ 3, в соответствии с последующим более подробным описанием, формируют значение «0», когда в исходных данных, проиллюстрированных на фиг. 1, отсутствуют изменения битового значения, и значение «1», когда происходит изменение битового значения. Предсказание для первого бита в исходных данных, опционально, имеет значение «0», и соответственно, значение первого бита исходны