Заявку на получение дополнительной информации по этому проекту можно заполнить здесь.
Номер 19-023-05 |
Наименование проекта Диапазонный арифметический кодек низкой избыточности |
Назначение Передача цифровых данных через канал связи |
Рекомендуемая область применения Программно-аппаратные средства компрессии данных в канале связи |
Описание Результат выполнения научно-исследовательской работы. 1. Общая характеристика. Кодек реализует диапазонный (range) арифметический алгоритм. Вычисления выполняются над целочисленными переменными таким образом, чтобы минимизировать погрешность вычисления поддиапазона. Избыточность кодирования над вычисленной энтропией минимальна - в абсолютном выражении имеет порядок разрядности регистра, используемого для хранения значения диапазона. Величина избыточности определяется необходимостью корректного завершения кодируемой последовательности (кодируется дополнительный символEOF) и погрешностью операции целочисленного деления диапазона. Для повышения скорости декодирования используется структура данных, реализующая двоичное дерево поиска в виде статического одномерного массива. 2.Алгоритмы кодирования и декодирования. Алгоритмкодирования. (*======================================================*) Function MulDiv(Factor1 {eax}, Factor2 {edx} ,Divisor {ecx}:cardinal) :cardinal;assembler; asm mul Factor2 div Divisor end; (*======================================================*) Procedure Encode; (* Copyrights (C) Yuri A. Gadzhiev, 2004, all rights reserved.*) var ch,Low,NewLow,Delta,i,count:cardinal; (*======================================================*) begin with Fq do begin StoreFreq; // Cumulative frequences computation Cmlt[0]:=0; for i:=1 to ALPHASIZE-1 do Cmlt[i]:=Cmlt[i-1]+Freq[i-1]; count:=Cmlt[ALPHASIZE-1]+Freq[ALPHASIZE-1]; Delta:=cardinal(-1); Low:=0; RestartInput; POut:=@OutStart; while not EOI do begin while Delta < b[2]="" do=""> Delta:=Delta shl 8; POut(Low shr 24); Low:= Low shl 8; end; ch:=get; NewLow:= Low + MulDiv(Cmlt[ch],Delta,count); if NewLow < low="" then=""> Low:=NewLow; Delta:= MulDiv(Freq[ch],Delta,count); end; while Low<>0 do begin POut(Low shr 24); Low:=Low shl 8 end; OutClose; end; end; Алгоритм декодирования. Procedure Decode; (* Copyrights (C) Yuri A. Gadzhiev, 2004, all rights reserved.*) var count,Low,Delta,ch,r,i:cardinal; begin with Fq do begin GetFreq; // Cumulative frequences computation InitCmlt; count:=Cmlt[1]; // Maximal value for delta assignment Delta:=cardinal(-1); // Most higher digits of code getting from Low:=get shl 24 +get shl 16 + get shl 8 + get; for i:=1 to SourceLength do begin ch:=CmltSeek(Low,Delta,count,r); put(ch); //Offset of Low inside subinterval Low:= Low - r; //Assignment of subinterval as new interval Delta:=MulDiv(Freq[ch],Delta,count); //Expand of interval while Delta < b[2]="" do=""> Delta:=Delta shl 8; Low:= (Low shl 8); if not EOI then Low:=Low + get; end; end; end; end; |
Преимущества перед известными аналогами Низкая величина избыточности, характерная для стандартного арифметического алгоритма в сочетании с целочисленными вычислениями над многоразрядными операндами, характерными для диапазонного (range) алгоритма |
Стадия освоения Внедрено в производство |
Результаты испытаний Соответствует технической характеристике изделия (устройства) |
Технико-экономический эффект Повышение плотности упаковки данных на 60 %. |
Возможность передачи за рубеж Возможна передача за рубеж |
Дата поступления материала 29.06.2005 |
У павильонов Уральской выставки «ИННОВАЦИИ 2010» (г. Екатеринбург, 2010 г.)
Мероприятия на выставке "Инновации и инвестиции - 2008" (Югра, 2008 г.)
Открытие выставки "Малый бизнес. Инновации. Инвестиции" (г. Магнитогорск, 2007 г.)
Демонстрация разработок на выставке "Малый бизнес. Инновации. Инвестиции" (г. Магнитогорск, 2007 г.)