Изобретение относится к области, связанной с сокращением избыточности передаваемой и хранимой информации, и может быть использовано для сжатия и восстановления без потерь цифровых данных в информационных системах и системах электросвязи.
Основы теории информации были заложены К. Шенноном в 1948 году в своей пионерской работе по теории информации (Д. Сэломон, «Сжатие данных, изображений и звука«, М.: Техносфера, 2004, стр.25), в которой он ввел понятие энтропии источника. Фундаментальное значение этой величины состоит в том, что она задает нижнюю границу возможного сжатия (Д. Сэломон, «Сжатие данных, изображений и звука», М.: Техносфера, 2004, стр.8). К этой границе можно приближаться сколь угодно близко, с помощью подходящего способа кодирования источника. Под энтропией символа а, имеющего вероятность Р, подразумевается количество информации, содержащейся в а, которая равна: - P·log2(P) (Д. Сэломон, «Сжатие данных, изображений и звука», М.: Техносфера, 2004, стр.25).
Одним из основных показателей эффективности сжатия является коэффициент сжатия - Кс, который определяется как:
Кс = Размер выходного потока/размер входного потока.
Различают сжатие без потерь, при котором возможно полностью восстановить исходную информацию, и сжатие с частичной потерей данных, при котором происходит восстановление данных с частичной потерей информации.
Известны статистические способы сжатия и восстановления данных, которые используют статистические свойства сжимаемых данных (Д. Сэломон, «Сжатие данных, изображений и звука«, М.: Техносфера, 2004, стр.25). Под статистическими свойствами понимают вероятность каждого символа в потоке данных. Для нахождения статистических свойств считают количество каждого символа в потоке данных.
Известен статистический способ сжатия и восстановления данных без потерь с использованием кодов переменной длины (Д. Сэломон, "Сжатие данных, изображений и звука", М.: Техносфера, 2004 г. стр.26), включающий выбор алфавита - набора символов от a1 до an, сбор статистики - подсчет количества каждого символа в сжимаемом потоке данных и вычисление вероятностей каждого символа алфавита в сжимаемом потоке данных, составление кодов переменной длины и замену исходных символов кодами переменной длины, при этом часто встречающимся символам присваивают короткие коды, а редко встречающимся - длинные. Для восстановления первоначального потока данных в соответствии с построенными кодами переменной длины заменяют коды переменной длины на исходные символы алфавита. Наиболее известным из способов кодирования кодами переменной длины является способ Хаффмана (Д. Сэломон, "Сжатие данных, изображений и звука", М.: Техносфера, 2004, стр.30).
Недостатками известного способа является то, что:
- максимальное сжатие достигается, если вероятности символов равны отрицательным степеням числа 2;
- различные длины кодовых слов приводят к неравномерным задержкам при восстановлении данных;
- способ неэффективен, если символы алфавита имеют близкие вероятности;
- способ неприменим в случае использования двухсимвольного алфавита.
Известен также статистический способ сжатия и восстановления данных без потерь под названием арифметическое кодирование (Д.Сэломон, "Сжатие данных, изображений и звука", М.: Техносфера, 2004, стр.63), принятый за прототип, который включает:
- сбор статистики о сжимаемом потоке данных, то есть подсчет в сжимаемом потоке данных количества каждого символа;
- задание «текущего интервала» [0, 1);
- повторение следующих действий для каждого символа входного потока данных;
- разделение текущего интервала на части пропорционально вероятностям каждого символа;
- выбор подинтервала, соответствующего символу, и назначение его новым текущим интервалом.
Когда весь входной поток данных будет обработан, выходом алгоритма объявляется любая точка, которая однозначно определяет текущий интервал и будет записана в виде конечного цифрового кода.
Для декодирования полученной строки цифр в известном способе читают первую цифру кода и в соответствии с значениями таблицы, в которую на этапе сжатия были занесены символы сжимаемого потока данных, частоты и вероятности символов, интервалы, присвоенные символам, определяют первый символ, затем удаляют эффект первого символа из кода с помощью вычитания нижнего конца интервала символа и деления на длину этого интервала. Далее повторяют предыдущую последовательность действий до конца кода.
Способ сжатия и восстановления данных без потерь под названием арифметическое кодирование позволяет сжимать данные до теоретического предела (Д. Сэломон, "Сжатие данных, изображений и звука", М.: Техносфера, 2004, стр.76). Недостатком известного способа является:
- метод неэффективен, если вероятности символов в сжимаемом потоке данных равны или имеют близкие значения, то есть в случаях, когда энтропия потока данных стремится к максимальному значению.
Техническим результатом заявляемого изобретения является:
- повышение степени сжатия данных;
- возможность сжатия данных, ранее подвергнутых сжатию.
Указанный технический результат достигается тем, что в способе сжатия и восстановления данных без потерь, включающем подсчет количества в сжимаемом потоке данных, состоящем из р различных символов, каждого символа и обозначение через n1, n2…np, согласно изобретению выбирают алгоритм присвоения неповторяющихся цифровых кодов всем возможным перестановкам с повторениями из произвольного количества символов и нахождения в соответствии с присвоенным цифровым кодом и количеством каждого символа соответствующей перестановки с повторениями, затем присваивают конкретному потоку данных из р различных символов в количестве n1, n2…np в соответствии с выбранным алгоритмом конкретный цифровой код Nc, после чего присвоенный цифровой код Nc и количество каждого символа n1, n2…np сохраняют, а для восстановления потока данных в соответствии с выбранным алгоритмом, присвоенным цифровым кодом Nc и значениями n1, n2…np находят конкретную перестановку с повторениями из р различных символов в количестве n1, n2…np, которая соответствует исходному потоку данных.
Указанный технический результат достигается также тем, что в способе сжатия и восстановления данных без потерь в сжимаемом потоке данных, состоящем из р различных символов, считают количество каждого символа в потоке данных и обозначают через n1, n2…np, согласно изобретению выбирают алгоритм А присвоения неповторяющихся цифровых кодов всем возможным перестановкам с повторениями из произвольного количества символов и нахождения в соответствии с присвоенным цифровым кодом и количеством каждого символа соответствующей перестановки с повторениями, затем присваивают конкретному потоку данных из р различных символов в количестве n1, n2…np в соответствии с выбранным алгоритмом А конкретный цифровой код Nc, после чего считают общее количество символов в цифровом коде Nc и обозначают его через nc, затем выбирают алгоритм В определения значений n1, n2…np через значение nc и новые значения d1, d2…dp и нахождения значений n1, n2…np через значения nc, d1, d2…dp, затем присвоенный цифровой код Nc и значения d1, d2…dp сохраняют, а для восстановления потока данных считают общее количество символов в цифровом коде Nc и обозначают его через nc, затем в соответствии с выбранным алгоритмом В и значениями d1, d2…dp находят значения n1, n2…np, после чего в соответствии с выбранным алгоритмом А, кодом Nc и значениями n1, n2…np находят конкретную перестановку с повторениями из р различных символов в количестве n1, n2…np, которая соответствует исходному потоку данных. Способ осуществляют следующим образом.
В сжимаемом потоке данных, состоящем из р различных символов, считают количество каждого символа в потоке данных и обозначают через n1, n2…np. Затем выбирают алгоритм присвоения неповторяющихся цифровых кодов всем возможным перестановкам с повторениями из произвольного количества символов и нахождения в соответствии с присвоенным цифровым кодом и количеством каждого символа соответствующей перестановки с повторениями, после чего присваивают конкретному потоку данных из р различных символов в количестве n1, n2…np в соответствии с выбранным алгоритмом конкретный цифровой код Nс, присвоенный цифровой код Nc и количество каждого символа n1, n2…np сохраняют.
Возможны различные алгоритмы нахождения Nc и восстановления исходного потока данных по значениям Nc, n1, n2…np, при этом наиболее оптимальным будет алгоритм, которому для нахождения Nc и для восстановления исходного потока данных по значениям Nc, n1, n2…np требуется выполнение наименьшего количества перестановок с повторениями, либо наименьшее количество вычислительных операций. Сжатие данных в заявляемом способе достигается за счет того, что для записи количества перестановок с повторениями из р различных символов в количестве n1, n2…np, определяемого формулой (n0+n1…+np)!/n0!n1!…np! (М. Холл, «Комбинаторика», М.: Мир, 1970, стр.13), требуется всегда меньшее количество информации, например бит, в случае использования двухсимвольного алфавита, чем для записи несжатого потока данных, то есть logk[(n0+n1…+np)!/n0!n1!…np!]<[n0+n1…+np], где n0…np - количество каждого символа от l до р, logk - логарифм по основанию k.
В случае когда для хранения или передачи значений Nc и n1, n2…np требуется меньшее количество информации, чем для хранения или передачи исходного потока данных, достигается указанный технический результат.
Для восстановления потока данных в соответствии с выбранным алгоритмом, присвоенным цифровым кодом Nc и значениями n1, n2…np находят конкретную перестановку с повторениями из р различных символов в количестве n1, n2…np, которая соответствует исходному потоку данных.
Для реализации способа сжатия и восстановления данных без потерь для сжатия данных, ранее подвергнутых сжатию и имеющих высокую энтропию, в сжимаемом потоке данных, состоящем из р различных символов, считают количество каждого символа в потоке данных и обозначают через n1, n2…np, затем выбирают алгоритм А присвоения неповторяющихся цифровых кодов всем возможным перестановкам с повторениями из произвольного количества символов и нахождения в соответствии с присвоенным цифровым кодом и количеством каждого символа соответствующей перестановки с повторениями, после чего присваивают конкретному потоку данных из р различных символов в количестве n1, n2…np в соответствии с выбранным алгоритмом А конкретный цифровой код Nc.
Возможны различные алгоритмы нахождения Nc и восстановления исходного потока данных по значениям Nc, n1, n2…np, при этом наиболее оптимальным будет алгоритм, которому для нахождения Nc и для восстановления исходного потока по значениям Nc, n1, n2…np требуется выполнение наименьшего количества перестановок с повторениями либо наименьшее количество вычислительных операций. Сжатие данных в заявляемом способе достигается за счет того, что для записи количества перестановок с повторениями из р различных символов в количестве n1, n2…np, определяемого формулой (n0+n1…+np)!/n0!n1!…np! (М. Холл, «Комбинаторика», М.: Мир, 1970, стр.13), требуется всегда меньшее количество информации, например бит, в случае использования двухсимвольного алфавита, чем для записи несжатого потока данных, то есть logk[(n0+n1…+np)!/n0!n1!…np!]<[n0+n1…+np], где n0…np - количество каждого символа от l до р, logk - логарифм по основанию k.
Далее считают общее количество символов в цифровом коде Nc и обозначают его через nc, затем выбирают алгоритм В определения значений n1, n2…np через значение nc и новые значения d1, d2…dp и нахождения значений n1, n2…np через значения nc, d1, d2…dp, затем присвоенный цифровой код Nc и значения d1, d2…dp сохраняют.
Возможны различные алгоритмы определения значений n1, n2…np через значение nc и новые значения d1, d2…dp и нахождения значений n1, n2…np через значения nc, d1, d2…dp. Задача этого алгоритма - сократить затраты информации на хранение и передачу значений n1, n2…np. Поскольку ранее сжатые данные имеют более высокую неупорядоченность по сравнению с несжатыми данными, то есть более высокую энтропию, то во многих случаях n1, n2…np имеют близкие значения и могут быть сохранены более эффективно, например в случае использования двухсимвольного алфавита значения n0, n1, где n0 - количество нулей в потоке данных, n1 - количество единиц в потоке данных, могут отличаться от nc на близкие величины, и хранение новых значений вместо n1, n2…np будет более оптимальным.
Для восстановления потока данных считают общее количество символов в цифровом коде Nc и обозначают его через nc, затем в соответствии с выбранным алгоритмом В и значениями nc, d1, d2…dp находят значения n1, n2…np, после чего в соответствии с выбранным алгоритмом А, кодом Nc и значениями n1, n2…np находят конкретную перестановку с повторениями из р различных символов в количестве n1, n2…np, которая соответствует исходному потоку данных.
Пример 1 конкретного выполнения способа.
В качестве примера выполнения заявляемого способа сжатия и восстановления данных без потерь с целью наглядности и простоты выбираем двоичный алфавит, состоящий из символов нуль и единица. В сжимаемом двоичном потоке данных, например 000100000000, подсчитывают количество нулей и обозначают это количество через n0, подсчитывают количество единиц и обозначают это количество через n1. В данном случае n0 равно одиннадцати, а n1 равно единице. Затем в соответствии с выбранным алгоритмом конкретному двоичному потоку 000100000000, состоящему из нулей в количестве одиннадцать и одной единицы, присваивают только один неповторяющийся двоичный код Nc, который не используют для кодирования других двоичных чисел, состоящих из такого же количества нулей и единиц.
Для нахождения двоичного числа Nc могут быть использованы различные алгоритмы, например составляют перестановки с повторениями из одиннадцати нулей и одной единицы, причем вначале помещают все нули, а затем все единицы и этой перестановке присваивают первый порядковый номер - нуль, далее осуществляют перестановки с повторениями из одиннадцати нулей и одной единицы, результаты перестановок с повторениями и присвоенные порядковые номера в порядке возрастания сохраняют, а перестановки с повторениями осуществляют до тех пор, пока результат перестановок не совпадет с исходным несжатым двоичным потоком данных, или составляют перестановки с повторениями из одиннадцати нулей и одной единицы, причем вначале помещают все единицы, а затем все нули и этой перестановке присваивают первый порядковый номер - нуль, далее осуществляют перестановки с повторениями из одиннадцати нулей и одной единицы, результаты перестановок с повторениями и присвоенные порядковые номера в порядке убывания сохраняют, а перестановки с повторениями осуществляют до тех пор, пока результат перестановок не совпадет с исходным несжатым двоичным потоком данных.
Для данного примера 1 выполнения заявляемого способа сжатия и восстановления данных без потерь выбран следующий алгоритм нахождения числа Nc. Составляют перестановки с повторениями из одиннадцати нулей и одной единицы, причем вначале помещают все нули, а затем все единицы и этой перестановке присваивают первый порядковый номер - нуль. Далее осуществляют перестановки с повторениями из одиннадцати нулей и одной единицы. Результаты перестановок с повторениями и присвоенные порядковые номера в порядке возрастания заносят в Таблицу 1. Перестановки с повторениями осуществляют до тех пор, пока результат перестановок не совпадет с исходным несжатым двоичным потоком данных.
Далее сохраняют значения n0, которое равно в двоичном виде 1011 и занимает четыре бита, n1, которое равно в двоичном виде 1 и занимает один бит, а также двоичное число Nc длиной четыре бита, которое равно в двоичном виде 1000 и содержится в графе 3 строке 9 Таблицы 1 и соответствует порядковому номеру числа перестановок с повторениями из нулей в количестве одиннадцать и одной единицы в потоке данных 000100000000.
Таким образом, для записи исходного несжатого потока данных длиной двенадцать бит необходимо девять бит.
Для восстановления первоначального потока данных составляют перестановку длиной n0 плюс n1 бит, то есть 12 бит, причем вначале помещают все нули, в данном случае одиннадцать нулей, а затем все единицы, в данном случае одну. Таким образом получают перестановку 000000000001. Далее осуществляют перестановки с повторениями из одиннадцати нулей и одной единицы, причем результаты перестановок рассматривают как двоичные числа и осуществляют перестановки в порядке их возрастания, а число таких перестановок равно Nc, результат последней перестановки под номером Nc будет соответствовать несжатому потоку данных. Восстановленный поток данных представлен в графе 3 строке 9 Таблицы 2.
Пример 2 конкретного выполнения способа.
Также существует следующий вариант сжатия потока данных, представленного в примере 1. Составляют перестановки с повторениями из одиннадцати нулей и одной единицы, причем вначале помещают все нули, а затем все единицы и этой перестановке присваивают первый порядковый номер - нуль. Далее осуществляют перестановки с повторениями из одиннадцати нулей и одной единицы.
Результаты перестановок с повторениями и присвоенные порядковые номера в порядке возрастания заносят в Таблицу 1. Перестановки с повторениями осуществляют до тех пор, пока результат перестановок не совпадет с исходным несжатым двоичным потоком данных.
Для сохранения сжатых данных выбирают один из возможных алгоритмов определения значений n0, n1 через nc и новые значения d1, d2.
В данном примере для сохранения сжатых данных вместо сохранения значений Nc, n0, n1 сохраняют следующие значения:
Nc;
d1=n1+n0-nc;
d2=(n1+n0)/2-n1.
Для восстановления первоначального потока данных считывают общее количество символов в цифровом коде Nc и обозначают через nc. Далее находят значения n1 и n0 следующим образом:
- n1+n0=d1+nc;
- n1=(n1+n0)/2-d2,
- n0=d1+nc-n1.
Затем составляют перестановку длиной n0 плюс n1 бит, то есть 12 бит, причем вначале помещают все нули, в данном случае одиннадцать нулей, а затем все единицы, в данном случае одну. Таким образом получают перестановку 000000000001. Далее осуществляют перестановки с повторениями из одиннадцати нулей и одной единицы, причем результаты перестановок рассматривают как двоичные числа и осуществляют перестановки в порядке их возрастания, а число таких перестановок равно Nc, результат последней перестановки под номером Nc будет соответствовать несжатому потоку данных. Восстановленный поток данных представлен в графе 3 строке 9 Таблицы 2.
В данном варианте реализации способа сжатия и восстановления данных без потерь:
Nc=1000, а длина двоичного числа Nc равна четыре бита;
d1=n-nc=12-4=8, a длина двоичного числа d1 пять бита;
d2=(n1+n0)/2-n1=(1+11)/2-1=5; а длина двоичного числа d2 три бита.
Таким образом, при данном варианте сохранения двоичных чисел для восстановления потока данных будет необходимо 4+5+3=12 бит, то есть для записи результатов способа сжатия потребуется столько же бит, сколько и составляет длина несжатого потока данных. Поэтому для сохранения сжатого потока данных в данном конкретном примере целесообразно хранить непосредственно значения Nc, n1, n1.
Таким образом, выбор варианта сохранения результатов сжатия данных зависит от конкретного потока данных и может быть легко определен для конкретного потока данных.
Сравним полученные результаты с теоретическими расчетами, которые позволяют судить о максимально возможном сжатии конкретного потока данных.
В соответствии с теорией (Д. Сэломон, "Сжатие данных, изображений и звука", М.: Техносфера, 2004, стр.26, 75) максимальное сжатие последовательности из одиннадцати нулей и одной единицы, которое теоретически может быть достигнуто с помощью способа арифметического кодирования, составляет log2(1/12)1*(11/12)11=5 бит, также понадобится как минимум четыре бита для хранения количества нулей и один бит для хранения количества единиц, которые будут необходимы для восстановления потока данных, всего для сохранения результатов сжатия необходимо минимум 10 бит, а коэффициент сжатия Кс указанного двоичного потока данных составит:
Kc(арифметическое кодирование)=10/12=0,833.
В примере 1 для записи указанной последовательности потребовалось 9 бит, а коэффициент сжатия указанного потока:
Kc(заявляемый способ)=9/12=0,75.
Таким образом, заявляемый способ превосходит способ арифметического кодирования по степени сжатия.
Для иллюстрации преимуществ сохранения не трех двоичных чисел Nc, n0, n1, а сохранения значений Nc, d1 и d2 оценим результаты сжатия двоичного потока данных длиной 65536 бит, состоящего из 215=32768 нулей - двоичное число n0, и 215=32768 единиц - двоичное число n1. Поскольку в данном потоке данных количество единиц и количество нулей одинаково, то данный поток невозможно сжать с помощью способа арифметического кодирования.
Для записи количества перестановок с повторениями из 32768 нулей и 32768 единиц потребуется:
log2[(n0+n1)!/(n0!n1!)]=65528 бит.
Для записи двоичного числа d1=n1+n0-nc=32768+32768-65528=8 потребуется, включая случай, когда двоичное число d1 равно нулю, log2(8+1)=4 бита. Для записи двоичного числа d2=(n1+n0)/2-n1=0 потребуется один бит. Таким образом, для записи исходного потока данных потребуется 65528+4+1=65533 бита, что на 3 бита короче, чем исходный несжатый поток данных. Если для записи результатов сжатия сохранять значения Nc, n0, n1, то потребуется log2(Nc)+log2(n0)+log2(n1)=65528+15+15=65558, что на 22 бита больше, чем исходный поток данных.
Необходимо отметить, что заявляемый способ сжатия и восстановления данных без потерь, учитывая его высокую эффективность с точки зрения степени сжатия данных, в том числе и данных с высокой энтропией, может быть использован для сжатия данных, которые уже подвергались сжатию другими способами. Кроме этого заявляемый способ позволяет многократно сжимать уже сжатые этим же способом данные и в случае, когда затраты на хранение сжатых данных будут меньше, чем исходный несжатый поток данных, применение заявляемого способа будет эффективным.
Заявляемый способ сжатия и восстановления данных без потерь может быть применим для сжатия и последующего восстановления без потерь любых типов данных, например графических файлов, видеофайлов, файлов баз данных и других типов данных. Особенно актуальным может быть применение заявляемого способа в случаях, когда данные необходимо предварительно сжать, причем время, необходимое на сжатие, не является критически важным, а затем передавать по каналам связи уже сжатые данные, в том числе по каналам связи с низкой скоростью передачи данных. В этом случае за счет многократного сжатия данных возможно значительно сократить время, необходимое для передачи больших объемов данных.
Также эффективно применение заявляемого способа для сжатия данных в режиме реального времени. В этом случае сжимаемый поток данных может быть разделен на отрезки известной длины, для сжатия которых заявляемым способом потребуется приемлемое время с учетом использования конкретных вычислительных мощностей.
Для того чтобы ускорить процесс сжатия и восстановления данных в заявляемом способе сжатия и восстановления данных без потерь могут быть использованы алгоритмы, предусматривающие параллельную обработку данных. Применение параллельных механизмов обработки данных также позволит использовать заявляемый способ сжатия и восстановления данных без потерь для сжатия и последующего восстановления данных в режимах реального времени, например, при передаче голосового или видеотрафика в сетях связи.
название | год | авторы | номер документа |
---|---|---|---|
Компрессионный накопитель данных и устройство для его осуществления | 2019 |
|
RU2739705C1 |
СПОСОБ СЖАТИЯ И ВОССТАНОВЛЕНИЯ ДАННЫХ БЕЗ ПОТЕРЬ | 2008 |
|
RU2382492C1 |
УСТРОЙСТВО ДЛЯ СЖАТИЯ ДАННЫХ | 2016 |
|
RU2622878C1 |
УСТРОЙСТВО ДЛЯ РАСПАКОВКИ ДАННЫХ | 2017 |
|
RU2658147C1 |
УСТРОЙСТВО ДЛЯ УПАКОВКИ ДАННЫХ | 2019 |
|
RU2701711C1 |
СПОСОБ МЯГКОГО ДЕКОДИРОВАНИЯ БЛОКОВЫХ КОДОВ | 2015 |
|
RU2580797C1 |
СПОСОБ, УСТРОЙСТВО И КОМПЬЮТЕРНЫЙ ПРОГРАММНЫЙ ПРОДУКТ ДЛЯ СОПОСТАВЛЕНИЯ ОТПЕЧАТКОВ ПАЛЬЦЕВ | 2007 |
|
RU2468429C2 |
УСТРОЙСТВО ДЛЯ ДЕКОМПРЕССИИ ДАННЫХ | 2018 |
|
RU2697618C1 |
УСТРОЙСТВО ДЛЯ КОМПРЕССИИ ДАННЫХ | 2017 |
|
RU2672625C1 |
СПОСОБ АУТЕНТИФИКАЦИИ ЭЛЕКТРОННОГО ИЗОБРАЖЕНИЯ | 2014 |
|
RU2568268C1 |
Изобретение относится к области, связанной с сокращением избыточности передаваемой и хранимой информации, и может быть использовано для сжатия и восстановления без потерь цифровых данных в информационных системах и системах электросвязи. Техническим результатом является повышение степени сжатия данных и возможность сжатия данных, ранее подвергнутых сжатию. Указанный технический результат достигается тем, что в сжимаемом потоке данных считают количество нулей n0 и количество единиц n1, выбирают алгоритм присвоения неповторяющихся цифровых кодов всем возможным перестановкам с повторениями из n0 нулей и n1 единиц и нахождения в соответствии с присвоенным цифровым кодом и количеством каждого символа соответствующей перестановки с повторениями, присваивают конкретному потоку данных из n0 нулей и n1 единиц в соответствии с выбранным алгоритмом цифровой код Nc, считают общее количество символов в цифровом коде Nc nc, определяют значение d1, которое равно сумме n1 и n0 минус значение nc, а также значение d2, которое равно половине разницы значений n0 и n1, после чего присвоенный цифровой код Nc и значения d1 и d2 сохраняют, а для восстановления потока данных выполняют обратные операции и в соответствии с выбранным алгоритмом по значениям n0, n1 и Nc находят конкретную перестановку с повторениями из n0 нулей и n1 единиц, которая соответствует исходному потоку данных. 2 табл.
Способ сжатия и восстановления двоичных данных без потерь, согласно которому в сжимаемом потоке данных считают количество нулей и обозначают через n0 и количество единиц и обозначают через n1, затем выбирают алгоритм присвоения неповторяющихся цифровых кодов всем возможным перестановкам с повторениями из n0 нулей и n1 единиц и нахождения в соответствии с присвоенным цифровым кодом и количеством каждого символа соответствующей перестановки с повторениями, затем присваивают конкретному потоку данных из n0 нулей и n1 единиц в соответствии с выбранным алгоритмом конкретный цифровой код Nc, отличающийся тем, что считают общее количество символов в цифровом коде Nc и обозначают его через nc, определяют значения d1, которое равно сумме n1 и n0 минус значение nc, а также значение d2, которое равно половине разницы значений n0 и n1, после чего присвоенный цифровой код Nc и значения d1 и d2 сохраняют, а для восстановления потока данных вначале в соответствии с сохраненными значениями d1 и d2, а также вычисляемым значением nc, которое равно длине цифрового кода Nc, находят значение n1, которое равно половине суммы значений d1 и nc минус значение d2 и значение n0, которое, в свою очередь, равно сумме значений d1 и nc минус значение n1, а затем в соответствии с выбранным алгоритмом по значениям n0, n1 и Nc находят конкретную перестановку с повторениями из n0 нулей и n1 единиц, которая соответствует исходному потоку данных.
RU 94004747 A1, 27.07.1996 | |||
СПОСОБ КОДИРОВАНИЯ-ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЙ И УСТРОЙСТВО ДЛЯ ЕГО ОСУЩЕСТВЛЕНИЯ | 1995 |
|
RU2093968C1 |
ЕР 1187338 А2, 13.03.2002 | |||
JP 2005260420 A, 22.09.2005 | |||
US 7199735 B1, 03.04.2007 | |||
WO 9843359 A1, 01.10.1998 | |||
СЭЛОМОН Д | |||
Сжатие данных, изображений и звука | |||
- М.: Техносфера, 2004 | |||
ЛОБАНОВ С.В | |||
Статистический алгоритм сжатия информации, электронный журнал «Труды МАИ», 27.11.2001, №6. |
Авторы
Даты
2010-11-10—Публикация
2009-02-09—Подача