СПОСОБ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ ЗВУКА И СИСТЕМА ВЕКТОРНОГО КВАНТОВАНИЯ РЕШЕТЧАТОГО ТИПА
AUDIO ENCODING/DECODING METHOD AND LATTICE-TYPE VECTOR QUANTISING SYSTEM

Область техники
Настоящее изобретение относится к технологии кодирования/декодирования звука и, в частности, к способу кодирования/декодирования звука и системе векторного квантования решетчатого типа.
Уровень техники
Технология кодирования/декодирования звука служит сердцевиной таких прикладных мультимедийных технологий, как цифровое звуковое вещание, музыкальной вещание, звуковые телекоммуникации в Интернете и т.д., которые получили бы значительную выгоду от усовершенствования основных характеристик звуковых кодеров. Использующий особенности восприятия звука кодер, представляющий один из видов кодирования в домене преобразования с потерями, служит основным современным звуковым кодером. Существующие кодеки, такие как кодек ААС Экспертной группы по кинематографии (MPEG) 4 и так далее, выполняют кодирование звука в домене преобразования и декодирование с использованием способа неравномерного скалярного квантования, который характеризуется высокой сложностью выполняемых вычислений и невысокой способностью к сжатию информации. Обычный статистический векторный квантователь (например, имеющийся векторный квантователь с алгоритмом LBG, где обозначение LBG соответствует предложенному Linde, Buzo и Gray способу векторного квантования) обладает значительной способностью к сжатию, и поэтому он широко используется в области сжатия звуковой и видеоинформации. Однако вычислительная сложность такого векторного квантователя экспоненциально увеличивается с увеличением объема информации, и кодовая книга, полученная путем выполнения обучающей последовательности с использованием алгоритма кластеризации, обычно не обладает общей оптимальностью. Недавно предложен новый кодирующий и декодирующий векторный квантователь звука, то есть решетчатый векторный квантователь, обеспечивающий дискретизацию сигналов с использованием узлов, входящих в его пространственную решетку. Так как узлы пространственной решетки обладают регулярной структурой, то кодовая книга может создаваться алгебраическим способом и занимать небольшое место при хранении, а решетчатое векторное квантование обладает преимуществом низкой сложности вычислений и высокой точности дискретизации. Однако из-за того, что в существующем основанном на использовании решетчатого векторного квантования звуковом кодеке (таком как G.719, и т.д.) используется сферическая решетка, учитывающая при кодировании и декодировании кодовую книгу, то округление в кодовой книге может применяться только к информационным источникам со стандартным и гауссовским распределением, а это не очень хорошо влияет на голос, представляющий собой информационный источник с распределением Лапласа. При этом битовая длина этапа существующего решетчатого векторного квантователя (такого как G.719) при кодировании равна целому числу битов (например, одному биту), поэтому используемая длина этапа слишком велика в случае распределения малого количества битов, что приводит к очень концентрированному распределению битов и невозможности более эффективного использования ограниченного их количества; кроме того, решетчатая кодовая книга одиночного битового кодека занимает слишком много места при хранении.
Сущность изобретения
Решаемая в настоящем изобретении техническая проблема заключается в создании способа кодирования звука и системы решетчатого векторного квантования для получения хорошего качества кодирования источника голосовой информации.
Для решения указанной выше технической проблемы в настоящем изобретении предлагается способ кодирования звука с использованием решетчатого векторного квантования, включающий:
разделение коэффициентов звукового сигнала в частотном домене, для которого в множестве поддиапазонов кодирования выполняется модифицированное дискретное косинусное преобразование (МДКП), квантование и кодирование значения огибающей амплитуды сигнала в каждом поддиапазоне кодирования для получения кодированных битовых значений этих амплитуд;
распределение битов в каждый поддиапазон кодирования, осуществление нормализации, квантования и кодирования соответственно векторов в поддиапазоне кодирования малых битовых значений с пирамидальным решетчатым квантованием и векторов в поддиапазоне кодирования больших битовых значений со сферическим решетчатым квантованием с целью получения кодированных битовых значений коэффициентов частотного домена, причем поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов. распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему; и
мультиплексирование и упаковку кодированных битовых значений амплитуд и кодированных битовых значений коэффициентов частотного домена в каждом поддиапазоне кодирования и затем их передачу на сторону декодирования.
Предпочтительно, чтобы при выполнении разделения на поддиапазоны кодирования после выполнения преобразования МДКП осуществлялось разделение коэффициентов частотного домена на несколько поддиапазонов кодирования с однородными интервалами, или их разделение на несколько поддиапазонов кодирования с неоднородными интервалами в соответствии с характеристиками слухового восприятия.
Предпочтительно, чтобы перед этапом выполнения распределения битов в каждый поддиапазон кодирования данный способ дополнительно включал: вычисление исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в каждом поддиапазоне кодирования;
на этапе выполнения распределения битов в каждый поддиапазон кодирования это распределение битов выполнялось для каждого коэффициента частотного домена в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов могла изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
q
2
Предпочтительно, чтобы исходное значение важности вычислялось в соответствии с выбранным оптимальным битовым значением и коэффициентом масштабирования согласно особенностям слухового восприятия при условии получения максимального отношения квантованного сигнала к шуму, или показателя степени квантования Th(j) или значения µ×log[Th(j)]+ν в каждом поддиапазоне кодирования, где µ>0, а µ и ν представляют собой действительные числа.
Предпочтительно, чтобы процесс распределения битов в каждый поддиапазон кодирования включал:
вычисление среднего количества используемых битов для одного коэффициента частотного домена;
вычисление оптимального битового значения при условии получения максимального отношения квантованного сигнала к шуму в соответствии с теорией передачи информации;
вычисление исходного значения важности каждого поддиапазона кодирования при распределении ему битов;
выполнение распределения битов в каждый поддиапазон кодирования в соответствии с важностью каждого поддиапазона кодирования: увеличение количества кодированных битов для каждого коэффициента частотного домена в поддиапазоне кодирования с максимальной важностью и уменьшение важности поддиапазона кодирования до тех пор, пока сумма количества битов, используемых для всех поддиапазонов кодирования, не будет соответствовать установленному максимальному значению при условии ограничения количества битов.
Предпочтительно, чтобы длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были меньше длины этапа распределенных битов и длины этапа уменьшения важности распределения битов после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений.
Предпочтительно, чтобы длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были равны 0,5 (бита); а длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений были равны 1 (биту).
Предпочтительно, чтобы этап выполнения нормализации и квантования в поддиапазоне кодирования малых битовых значений с пирамидальным решетчатым квантованием включал:
выполнение нормализационной обработки всех коэффициентов частотного домена в поддиапазоне кодирования с использованием квантованного значения огибающей амплитуды в данном поддиапазоне кодирования и группирования с образованием множества подлежащих многомерному квантованию векторов; выполнение операции квантования каждого подлежащего квантованию вектора; причем этап выполнения операции квантования каждого подлежащего квантованию вектора включает:
8
осуществление регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования, квантование энергетически отрегулированного 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D, и
8
8
8
8
8
8
сравнение энергии полученного квантованием узла решетки D с закодированным в кодовой книге максимальным пирамидальным поверхностным энергетическим радиусом, и если энергия узла решетки D меньше максимального пирамидального поверхностного энергетического радиуса или равна ему, вычисление в кодовой книге индекса квантования узла решетки D; если энергия узла решетки D больше максимального пирамидального поверхностного энергетического радиуса, выполнение усечения энергии для отрегулированного в поддиапазоне кодирования до тех пор, пока энергия квантованного узла решетки энергетически связанного подлежащего квантованию вектора не станет больше максимального пирамидального поверхностного энергетического радиуса, и одновременного постоянного добавления энергии энергетически связанному подлежащему квантованию вектору до тех пор, пока энергия узла решетки D, до которой квантуется энергетически связанный подлежащий квантованию вектор, не станет больше максимального пирамидального поверхностного энергетического радиуса, и затем определение последнего узла решетки D, чья энергия не больше максимального пирамидального поверхностного энергетического радиуса, как узла решетки векторного квантования, и вычисление индекса квантования узла решетки векторного квантования в кодовой книге;
и/или
этап выполнения нормализации и квантования в поддиапазоне кодирования больших битовых значений в сферическом решетчатом векторном квантовании включает:
выполнение нормализационной обработки всех коэффициентов частотного домена в поддиапазоне кодирования с использованием квантованного значения огибающей амплитуды в данном поддиапазоне кодирования и группирование их с целью образования множества многомерных подлежащих квантованию векторов; выполнение операции квантования каждого подлежащего квантованию вектора; причем этап выполнения операции квантования каждого подлежащего квантованию вектора включает:
8
осуществление регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования, квантование энергетически отрегулированного 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D;
8
8
8
region_bit(j)
деление полученного квантованием значения узла решетки D на 2 в степени количества распределенных битов 2 и затем повторное выполнение квантования для отображения на узел решетки D, вынесение решение о том, является ли полученное повторным квантованием значение узла решетки D нулевым вектором, и в случае положительного решения определение соответствия нулевому векторному состоянию, а в случае отрицательного решения определение несоответствия нулевому векторному состоянию, причем region_bit(j) представляет собой количество битов, распределенных одному коэффициенту частотного домена в j-том поддиапазоне кодирования;
8
при соответствии нулевому векторному состоянию вычисление индексного вектора узла решетки D; и
8
8
8
при несоответствии нулевому векторному состоянию выполнение усечения значения энергии подлежащего квантованию вектора до достижения соответствия нулевому векторному состоянию, сохранение множественного значения w самого подлежащего квантованию вектора, добавление множественного значения w к энергетически связанному подлежащему квантованию вектору, затем квантование для его отображения на узел решетки D, вынесение решения о соответствии нулевому векторному состоянию, в случае отрицательного решения вычисление нового индексного вектора k для узла решетки D, соответствующего нулевому векторному состоянию, в случае положительного решения постоянное добавление множественного значения w к подлежащему квантованию вектору и затем выполнение квантования для отображения на узел решетки D до тех пор, пока не будет получено соответствие нулевому векторному состоянию.
Предпочтительно, чтобы в этапе осуществления регулирования энергии 8-мерного подлежащего квантованию вектора сначала в приводимой ниже таблице выполнялся поиск содержащихся в кодовой книге последовательного номера index и коэффициента масштабирования энергии scale в соответствии с количеством битов region_bit(j), распределенных одному коэффициенту частотного домена в поддиапазоне кодирования j, где располагается 8-мерный подлежащий квантованию вектор; и затем выполнение регулирования энергии подлежащего квантованию вектора в соответствии со следующим уравнением:
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup><mo>=</mo><mrow><mo>(</mo><mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup><mo>−</mo><mi>a</mi></mrow><mo>)</mo></mrow><mo>*</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi><mrow><mo>(</mo><mrow><mi>i</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi></mrow><mo>)</mo></mrow></mrow>
<mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup></mrow>
-6
-6
-6
-6
-6
-6
-6
-6
где
представляет собой m-ый нормализованный 8-мерный подлежащий квантованию вектор в поддиапазоне кодирования j,
представляет собой 8-мерный подлежащий квантованию вектор после осуществления регулирования энергии
, a=(2, 2, 2, 2, 2, 2, 2, 2);
Количество битов
Последовательный номер в кодовой книге
Коэффициент масштабирования энергии
Максимальный пирамидальный поверхностный
Region_bit
Index
Scale
энергетический радиус LargeK
1
0
0,5
2
1,5
1
0,65
4
2
2
0,85
6
2,5
3
1,2
10
3
4
1,6
14
3,5
5
2,25
22
4
6
3,05
30
4,5
7
4,64
44
8
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
на этапе квантования энергетически отрегулированного 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D выполнялось квантование энергетически отрегулированного 8-мерного вектора
для его отображения на узел решетки D
с помощью следующего уравнения:
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup></mrow><mo>)</mo></mrow></mrow>
D8
8
где ƒ(•) представляет собой оператор квантования для отображения определенного 8-мерного вектора на узел решетки D.
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Этап вычисления индекса квантования узла решетки D
в кодовой книге включает:
этап 1, разметка узлов решетки на каждой пирамидальной поверхности в соответствии с амплитудой энергии на пирамидальной поверхности;
L
в котором для целочисленной узловой решетчатой сети Z с размером L пирамидальная поверхность с энергетическим радиусом K определяется как:
<mrow><mi>S</mi><mrow><mo>(</mo><mrow><mi>L</mi><mo>,</mo><mi>K</mi></mrow><mo>)</mo></mrow><mo>=</mo><mo>{</mo><mi>Y</mi><mo>=</mo><mo stretchy="false">(</mo><msub><mi>y</mi><mn>1</mn></msub><mo>,</mo><msub><mi>y</mi><mn>2</mn></msub><mo>,</mo><mo>…</mo><mo>,</mo><msub><mi>y</mi><mi>L</mi></msub><mo stretchy="false">)</mo><mo>∈</mo><msup><mi>Z</mi><mi>L</mi></msup><mo>|</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>L</mi></munderover><mo>|</mo></mstyle><msub><mi>y</mi><mi>i</mi></msub><mo>|</mo><mo>=</mo><mi>K</mi><mo>}</mo></mrow>
L
где N(L,K) обозначает количество узлов решетки в S(L,K), и для определения N(L,К) в целочисленной сети Z используются следующие рекурентные формулы:
N(L,0)=1 (L≥0), N(0,K)=0 (K≥1)
N(L,K)=N(L-1, K)+N(L-1, K-1)+N(L, K-1) (L≥1, K≥1);
1
2
L
L
для идентификации целочисленного узла решетки Y=(y,y,…,y)∈Z на пирамидальной поверхности с энергетическим радиусом К используется число b из последовательности [0,1,…,N(L,K)-1], которое называется меткой узла решетки, и для определения метки b выполняются следующие этапы:
этап 1.1, задается 6=0, i=1, k=K, l=L, вычисляется N(m,n), (m<=L, n<=К) в соответствии с приведенными рекурсивными формулами, и определяется:
<mrow><mi>sgn</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><mtable columnalign="left"><mtr columnalign="left"><mtd columnalign="left"><mn>1</mn></mtd><mtd columnalign="left"><mrow><mi>x</mi><mo>></mo><mn>0</mn></mrow></mtd></mtr><mtr columnalign="left"><mtd columnalign="left"><mn>0</mn></mtd><mtd columnalign="left"><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mtd></mtr><mtr columnalign="left"><mtd columnalign="left"><mrow><mo>−</mo><mn>1</mn></mrow></mtd><mtd columnalign="left"><mrow><mi>x</mi><mo><</mo><mn>0</mn></mrow></mtd></mtr></mtable></mrow></mrow></mrow>
i
этап 1.2, если y=0, тогда b=b+0;
i
<mrow><mi>b</mi><mo>=</mo><mi>b</mi><mo>+</mo><mi>N</mi><mrow><mo>(</mo><mrow><mi>l</mi><mo>+</mo><mn>1,</mn><mi>k</mi></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>[</mo><mrow><mfrac><mrow><mn>1</mn><mo>−</mo><mi>sgn</mi><mrow><mo>(</mo><mrow><msub><mi>y</mi><mi>i</mi></msub></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mrow><mo>]</mo></mrow><mi>N</mi><mrow><mo>(</mo><mrow><mi>l</mi><mo>−</mo><mn>1,</mn><mi>k</mi><mo>−</mo><mn>1</mn></mrow><mo>)</mo></mrow></mrow>
если |y|=1, тогда
;
i
если [y|>1, тогда
<mrow><mtable><mtr><mtd><mrow><mi>b</mi><mo>=</mo><mi>b</mi><mo>+</mo><mi>N</mi><mrow><mo>(</mo><mrow><mi>l</mi><mo>−</mo><mn>1,</mn><mi>k</mi></mrow><mo>)</mo></mrow><mo>+</mo><mn>2</mn><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mrow><mo>|</mo><msub><mi>y</mi><mi>i</mi></msub><mo>|</mo><mo>−</mo><mn>1</mn></mrow></munderover><mrow><mi>N</mi><mrow><mo>(</mo><mrow><mi>l</mi><mo>−</mo><mn>1,</mn><mi>k</mi><mo>−</mo><mi>j</mi></mrow><mo>)</mo></mrow></mrow></mstyle></mrow></mtd></mtr><mtr><mtd><mrow><mo>+</mo><mrow><mo>[</mo><mrow><mfrac><mrow><mn>1</mn><mo>−</mo><mi>sgn</mi><mrow><mo>(</mo><mrow><msub><mi>y</mi><mi>i</mi></msub></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mrow><mo>]</mo></mrow><mi>N</mi><mrow><mo>(</mo><mrow><mi>l</mi><mo>−</mo><mn>1,</mn><mi>k</mi><mo>−</mo><mo>|</mo><msub><mi>y</mi><mi>i</mi></msub><mo>|</mo></mrow><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow>
i
этап 1.3, k=k-|y|, l=l-1, i=i+1, если теперь k=0, прекращение поиска, b(j, m)=b, который представляет собой метку Y, в противном случае продолжение выполнения этапа 1.2;
этап 2, выполнение стандартной разметки узла решетки на всех пирамидальных поверхностях;
в котором вычисляется стандартная метка узла решетки на всех пирамидальных поверхностях в соответствии с количеством узлов решетки на каждой пирамидальной поверхности и меткой узла решетки на собственной пирамидальной поверхности,
<mrow><mi>i</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi><mo>_</mo><mi>b</mi><mrow><mo>(</mo><mrow><mi>j</mi><mo>,</mo><mi>m</mi></mrow><mo>)</mo></mrow><mo>=</mo><mi>b</mi><mrow><mo>(</mo><mrow><mi>j</mi><mo>,</mo><mi>m</mi></mrow><mo>)</mo></mrow><mo>+</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>k</mi><mi>k</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>K</mi><mo>−</mo><mn>2</mn></mrow></munderover><mrow><mi>N</mi><mrow><mo>(</mo><mrow><mn>8,</mn><mi>k</mi><mi>k</mi></mrow><mo>)</mo></mrow></mrow></mstyle></mrow>
8
8
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
где kk представляет собой четное число, b(j,m) представляет собой метку узла решетки D
на той пирамидальной поверхности, на которой располагается узел решетки D
, a index_h(j,m) представляет собой индекс квантования узла решетки D
в кодовой книге.
Предпочтительно
этап кодирования в поддиапазоне кодирования малых битовых значений при пирамидальном узловом векторном квантовании включает:
осуществление кодирования по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений; и
если общее количество расходуемых битов для кодированных по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений меньше общего количества битов, требуемого для натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, тогда осуществление кодирования по способу Хаффмана и установка в 1 (или в истинное состояние) флажка кодирования по способу Хаффмана для коэффициента частотного домена, использование сохраняемых при кодировании по способу Хаффмана битов для изменения количества распределяемых битов в поддиапазоне кодирования и повторное осуществление векторного квантования и кодирования в поддиапазоне кодирования, для которого было произведено изменение количества распределенных битов; а если общее количество расходуемых битов для кодированных по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений больше или равно общему количеству битов, требуемому для натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, тогда осуществление повторного натурального кодирования индекса квантования и установка в 0 (или в ложное состояние) флажка кодирования по способу Хаффмана для коэффициента частотного домена.
Предпочтительно, этап использования сохраняемых при кодировании по способу Хаффмана битов для изменения количества распределяемых битов в поддиапазоне кодирования включая:
вычисление количества битов, сохраняемых при кодировании по способу Хаффмана;
определение во всех поддиапазонах кодирования поддиапазона кодирования с максимальной важностью в том случае, если количество распределенных данному поддиапазону кодирования битов достигло максимального значения, которое может распределяться поддиапазону кодирования, регулировка важности наименее важного поддиапазона кодирования и дальнейшее отсутствие изменения количества распределенных битов для поддиапазона кодирования в том случае, если количество распределенных данному поддиапазону кодирования битов не достигло максимального значения, которое может распределяться поддиапазону кодирования, и затем выполнение изменения распределения битов для поддиапазона кодирования с максимальной важностью; и
в процессе изменения распределения битов распределение 1 бита поддиапазону кодирования с количеством распределенных битов 0 и уменьшение важности на 1 после распределения битов; распределение 0,5 бита поддиапазону кодирования с количеством распределенных битов больше 0 и меньше 5 и уменьшение важности на 0,5 после распределения битов; распределение 1 бита поддиапазону кодирования с количеством распределенных битов больше 5, и уменьшение важности на 1 после распределения битов.
Предпочтительно, чтобы после каждого случая изменения количества распределенных битов, т.е. увеличения на 1 отсчета итераций изменения количества распределенных битов, если значение отсчета итераций изменения количества распределенных битов достигает предустановленной верхней границы или если количество битов, которое может использоваться, меньше количества битов, требуемого для изменения количества распределенных битов, происходило окончание процесса изменения количества распределенных битов.
Предпочтительно, чтобы последовательность мультиплексирования и упаковки закодированных битов была следующей: флажок кодирования по способу Хаффмана огибающей амплитуды, флажок кодирования по способу Хаффмана коэффициента частотного домена, количество итераций изменения распределения битов, кодированные биты огибающей амплитуды, кодированные биты коэффициента частотного домена.
Предпочтительно, чтобы при осуществлении кодирования по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений, для кодирования индекса векторного квантования в поддиапазоне кодирования использовались различные кодовые книги в зависимости от количества битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования.
Для решения указанной выше технической проблемы в настоящем изобретении дополнительно предусматривается способ декодирования звука с решетчатым векторным квантованием, включающий:
декодирование закодированных битов каждой огибающей амплитуды в подлежащем декодированию двоичном потоке с целью получения индекса квантования огибающей амплитуды для каждого поддиапазона кодирования;
выполнение распределения битов в каждый поддиапазон кодирования и осуществление декодирования, инверсного квантования и инверсной нормализации пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений с целью получения в частотном домене коэффициентов для поддиапазона кодирования малых битовых значений, и осуществление декодирования, инверсного квантования и инверсной нормализации сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений с целью получения в частотном домене коэффициентов для поддиапазона кодирования больших битовых значений; причем поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему; и
выполнение обратного модифицированного дискретного косинусного преобразования (ОМДКП) в частотном домене коэффициентов, для которых с целью получения конечного звукового сигнала выполнялось шумовое заполнение.
Предпочтительно, чтобы перед этапом выполнения распределения битов в каждый поддиапазон кодирования данный способ дополнительно включал: вычисление исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в каждом поддиапазоне кодирования;
на этапе выполнения распределения битов в каждый поддиапазон кодирования распределение битов выполнялось для каждого коэффициента частотного домена в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов могли изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
Предпочтительно, чтобы после выполнения распределения битов и перед осуществлением декодирования, в соответствии со значением отсчета итераций изменения количества распределенных битов и важностью каждого поддиапазона кодирования на стороне кодирования, снова с соответствующим отсчетом осуществлялось изменение количества распределенных битов для поддиапазона кодирования.
Предпочтительно, чтобы при осуществлении распределения битов длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были меньше длины этапа распределенных битов и длины этапа уменьшения важности распределения битов после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений;
при изменении распределения битов длина этапа изменения распределенных битов и длина этапа уменьшения важности после изменения битов в поддиапазоне кодирования малых битовых значений должны быть меньше длины этапа изменения распределенных битов и длины этапа уменьшения важности после изменения битов в поддиапазоне кодирования нулевого бита и поддиапазоне кодирования больших битовых значений.
Предпочтительно, чтобы длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были равны 0,5 (бита); а длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования пулевого бита и поддиапазону кодирования больших битовых значений были равны 1 (биту).
Предпочтительно, чтобы в этапе осуществления декодирования, инверсного квантования и инверсной нормализации пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений получение индекса векторного квантования в поддиапазоне кодирования малых битовых значений производилось путем осуществления кодирования по способу Хаффмана или прямого декодирования в поддиапазоне кодирования малых битовых значений в соответствии с флажком кодирования по способу Хаффмана коэффициента частотного домена на стороне кодирования, а инверсное квантование и инверсная нормализация пирамидального решетчатого векторного квантования осуществлялись для всех индексов векторного квантования с целью получения коэффициента частотного домена в поддиапазоне кодирования малых битовых значений; в этапе осуществления декодирования, инверсного квантования и инверсной нормализации сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений для получения индекса векторного квантования в поддиапазоне кодирования больших битовых значений прямо использовалось натуральное декодирование, а инверсное квантование и инверсная нормализация сферического решетчатого векторного квантования осуществлялись для всех индексов векторного квантования с целью получения коэффициента частотного домена в поддиапазоне кодирования больших битовых значений.
Для решения указанной выше технической проблемы в настоящем изобретении дополнительно предусматривается наличие системы кодирования звука с решетчатым векторным квантованием, включающей: узел модифицированного дискретного косинусного преобразования (узел МДКП), узел вычисления огибающей амплитуды, узел квантования и кодирования огибающей амплитуды, узел распределения битов, узел нормализационной обработки, узел классификационного решетчатого векторного квантования и кодирования и мультиплексор битового потока; причем
узел МДКП предназначен для выполнения модифицированного дискретного косинусного преобразования звукового сигнала с получением коэффициентов частотного домена;
узел вычисления огибающей амплитуды соединяется с узлом МДКП и предназначается для разделения полученных узлом МДКП в множестве поддиапазонов кодирования коэффициентов частотного домена, и вычисления значения огибающей амплитуды в каждом поддиапазоне кодирования;
узел квантования и кодирования огибающей амплитуды соединяется с узлом вычисления огибающей амплитуды и предназначен для квантования и кодирования значения огибающей амплитуды в каждом поддиапазоне кодирования с целью получения кодированных битов огибающей амплитуды в каждом поддиапазоне кодирования;
узел распределения битов соединяется с узлом квантования и кодирования огибающей амплитуды и предназначается для выполнения распределения битов с целью получения количества кодированных битов, распределенных каждому коэффициенту частотного домена в каждом поддиапазоне кодирования;
узел нормализационной обработки соединяется с узлом МДКП и предназначается для использования при осуществлении квантования значения огибающей амплитуды в поддиапазоне кодирования с целью выполнения нормализационной обработки всех коэффициентов частотного домена в каждом поддиапазоне кодирования;
узел классификационного решетчатого векторного квантования и кодирования соединяется с узлом нормализационной обработки и узлом распределения битов и предназначен для выполнения квантования и кодирования нормализованных подлежащих квантованию векторов в поддиапазоне кодирования малых битовых значений и поддиапазоне кодирования больших битовых значений с пирамидальным решетчатым векторным квантованием и сферическим решетчатым векторным квантованием соответственно с целью получения кодированных битов коэффициентов частотного домена; где поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему;
мультиплексор битового потока соединяется с узлом квантования и кодирования огибающей амплитуды и узлом классификационного решетчатого векторного квантования и кодирования и предназначен для мультиплексирования кодированных битов в каждом поддиапазоне кодирования и кодированных битов коэффициентов частотного домена для их передачи на сторону декодирования.
Предпочтительно, чтобы при выполнении разделения на поддиапазоны кодирования узел вычисления огибающей амплитуды осуществлял разделение коэффициентов частотного домена после выполнения модифицированного дискретного косинусного преобразования на несколько поддиапазонов кодирования с однородными интервалами, или их разделение на несколько поддиапазонов кодирования с неоднородными интервалами в соответствии с характеристиками слухового восприятия.
Предпочтительно, чтобы узел распределения битов включал соединенные друг с другом модуль вычисления важности и модуль распределения битов, причем
модуль вычисления важности предназначен для вычисления исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в поддиапазоне кодирования;
модуль распределения битов предназначен для выполнения распределения битов каждому коэффициенту частотного домена в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
q
2
Предпочтительно, чтобы исходное значение важности вычислялось согласно выбранному оптимальному битовому значению и коэффициенту масштабирования в соответствии с характеристиками слухового восприятия при условии получения максимального отношения квантованного сигнала к шуму, или показателя степени квантования Th(j) или значения [µ×lig[Th(j)]+ν] в каждом поддиапазоне кодирования огибающей амплитуды, где µ>0, а (и (представляют собой действительные числа.
Предпочтительно, чтобы при вычислении исходного значения важности модуль вычисления важности сначала вычислял среднее количество расходуемых битов для одного коэффициента частотного домена; и затем вычислял оптимальное битовое значение при условии получения максимального отношения квантованного сигнала к шуму в соответствии с теорией передачи информации; после чего вычислял исходное значение важности каждого поддиапазона кодирования при распределении битов в соответствии со средним количеством используемых битов и оптимальной битовой величиной;
модуль вычисления важности при выполнении распределения битов в каждый поддиапазон кодирования в соответствии с важностью каждого поддиапазона кодирования должен обеспечивать: увеличение количества кодированных битов каждого коэффициента частотного домена в поддиапазоне кодирования с максимальной важностью, и уменьшение важности поддиапазона кодирования до тех пор, пока сумма количества битов, используемых всеми поддиапазонами кодирования, не будет соответствовать установленному максимальному значению при условии ограничения количества битов.
Предпочтительно, чтобы при выполнении распределения битов модулем распределения битов длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были меньше длины этапа распределенных битов и длины этапа уменьшения важности распределения битов после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений.
Предпочтительно, чтобы при выполнении распределения битов модулем распределения битов длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были равны 0,5 (бита); а длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений были равны 1 (биту).
Предпочтительно, чтобы узел классификационного решетчатого векторного квантования и кодирования включал классификационный обрабатывающий модуль и модуль пирамидального решетчатого векторного квантования, причем
классификационный обрабатывающий модуль соединяется с узлом нормализационной обработки и предназначается для группирования нормализованных коэффициентов частотного домена создания многомерного подлежащего квантованию вектора и передачи нормализованного подлежащего квантованию вектора из поддиапазона кодирования малых битовых значений в модуль пирамидального решетчатого векторного квантования;
модуль пирамидального решетчатого векторного квантования соединяется с классификационным обрабатывающим модулем и предназначается для выполнения пирамидального решетчатого векторного квантования после нормализации подлежащего квантованию вектора в каждом поддиапазоне кодирования малых битовых значений;
модуль пирамидального решетчатого векторного квантования включает первый субмодуль регулирования энергии, первый субмодуль квантования узла решетки, первый субмодуль настройки энергии и субмодуль вычисления индекса квантования, причем
первый субмодуль регулирования энергии предназначен для выполнения регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования;
8
первый субмодуль квантования узла решетки соединяется с первым субмодулем регулирования энергии и предназначается для квантования 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D;
8
8
8
8
8
8
8
первый субмодуль настройки энергии соединяется с первым субмодулем квантования узла решетки и предназначается для сравнения энергии узла решетки D с закодированным в кодовой книге максимальным пирамидальным поверхностным энергетическим радиусом, если энергия узла решетки D меньше максимального пирамидального поверхностного энергетического радиуса или равна ему, передачи сообщения на субмодуль вычисления индекса квантования о необходимости вычисления индекса квантования узла решетки D в кодовой книге; если энергия узла решетки D больше максимального пирамидального поверхностного энергетического радиуса, осуществления усечения энергии отрегулированного подлежащего квантованию вектора в поддиапазоне кодирования, и передачи сообщения на первый субмодуль квантования узла решетки для усечения энергии до тех пор, пока энергия квантованного узла решетки энергетически связанного подлежащего квантованию вектора не станет больше максимального пирамидального поверхностного энергетического радиуса, и одновременного постоянного добавления энергии энергетически связанному подлежащему квантованию вектору и передачи сообщения на первый субмодуль квантования узла решетки с целью осуществления квантования подлежащего квантованию вектора с добавленной энергией для его отображения на узел решетки D до тех пор, пока энергия узла решетки D, до которой квантуется энергетически связанный подлежащий квантованию вектор, не станет больше максимального пирамидального поверхностного энергетического радиуса, и передачи сообщения на субмодуль вычисления индекса квантования с целью вычисления индекса квантования последнего узла решетки D, чья энергия не больше максимального пирамидального поверхностного энергетического радиуса в кодовой книге;
8
модуль вычисления индекса квантования соединяется с первым субмодулем настройки энергии и предназначается для вычисления индекса квантования узла решетки D в кодовой книге в соответствии с сообщением первого субмодуля настройки энергии;
и
узел классификационного решетчатого векторного квантования и кодирования дополнительно включает модуль сферического решетчатого векторного квантования, соединенный с классификационным обрабатывающим модулем; классификационный обрабатывающий модуль дополнительно предназначен для передачи нормализованного подлежащего квантованию вектора в поддиапазоне кодирования больших битовых значений в модуль сферического решетчатого векторного квантования для обработки;
модуль сферического решетчатого векторного квантования предназначен для выполнения сферического решетчатого векторного квантования нормализованного подлежащего квантованию вектора в поддиапазоне кодирования больших битовых значений; модуль сферического решетчатого векторного квантования включает второй субмодуль регулирования энергии, второй субмодуль квантования узла решетки, субмодуль вынесения решения о наличии нулевого векторного состояния, второй субмодуль настройки энергии и субмодуль вычисления индексного вектора, причем
второй субмодуль регулирования энергии предназначен для выполнения регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования;
8
второй субмодуль квантования узла решетки соединяется со вторым субмодулем регулирования энергии и предназначается для квантования 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D;
8
8
8
8
8
субмодуль вынесения решения о наличии нулевого векторного состояния соединяется со вторым субмодулем квантования узла решетки и предназначен для вынесения решения о том, соответствует ли узел решетки D нулевому векторному состоянию, и в случае такого соответствия передачи сообщения на субмодуль вычисления индексного вектора с целью вычисления индексного вектора узла решетки D, а в случае несоответствия передачи сообщения на второй субмодуль настройки энергии с целью настройки энергии подлежащего квантованию вектора; наличие нулевого векторного состояния вызывает деление полученного квантованием значения узла решетки D на 2 в степени количества распределенных битов region_bit(j), и затем создание узла решетки D, причем созданный узел решетки D представляет собой нулевой вектор, где region_bit(j) представляет собой количество битов, распределенных одному коэффициенту домена частоты в j-том поддиапазоне кодирования;
8
8
8
второй субмодуль настройки энергии соединяется с субмодулем вынесения решения о наличии нулевого векторного состояния и вторым субмодулем квантования узла решетки и предназначен для выполнения усечения значения энергии подлежащего квантованию вектора и передачи сообщения на второй субмодуль квантования узла решетки с целью квантования энергетически отрегулированного подлежащего квантованию вектора для его отображения на узел решетки D до достижения соответствия нулевому векторному состоянию; сохранение множественного значения w самого подлежащего квантованию вектора, добавление сохраненного множественного значения w к энергетически связанному подлежащему квантованию вектору, и передачи сообщения на второй субмодуль квантования узла решетки с целью квантования энергетически отрегулированного подлежащего квантованию вектора для его отображения на узел решетки D до достижения соответствия нулевому векторному состоянию; и передачи сообщения на субмодуль вычисления индексного вектора с целью вычисления самого нового индексного вектора для узла решетки D, соответствующего нулевому векторному состоянию;
8
субмодуль вычисления индексного вектора соединяется с субмодулем вынесения решения о наличии нулевого векторного состояния и вторым субмодулем настройки энергии и предназначен для вычисления индекса квантования узла решетки D в кодовой книге в соответствии с полученными сообщениями из субмодуля вынесения решения о наличии нулевого векторного состояния и второго субмодуля настройки энергии.
Предпочтительно, чтобы узел классификационного решетчатого векторного квантования и кодирования дополнительно включал модуль вынесения решения о типе кодирования, модуль кодирования по способу Хаффмана, модуль натурального кодирования и модуль изменения распределенных битов, причем
модуль вынесения решения о типе кодирования предназначен для вынесения решения о том, является ли общее количество расходуемых битов для кодирования по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений меньше общего количества битов, требуемого для осуществления натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, и в случае положительного решения передачи сообщения на модуль кодирования по способу Хаффмана и модуль изменения распределенных битов; а если общее количество расходуемых битов для кодирования по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений больше или равно общего количества битов, требуемого для натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, передачи сообщения на модуль натурального кодирования;
модуль кодирования по способу Хаффмана предназначен для выполнения кодирования по способу Хаффмана индекса квантования в поддиапазоне кодирования малых битовых значений и установки флажка кодирования коэффициента частотного домена по способу Хаффмана в 1 (или в истинное состояние),
модуль натурального кодирования предназначен для выполнения натурального кодирования индекса квантования в поддиапазоне кодирования малых битовых значений и индексного вектора в поддиапазоне кодирования больших битовых значений;
модуль изменения распределенных битов предназначен для использования битов, сохраненных при кодировании по способу Хаффмана, для изменения количества распределенных битов в поддиапазоне кодирования, и передачи сообщения на классификационный обрабатывающий модуль с целью классификации поддиапазонов кодирования по количеству подлежащих изменению распределенных битов, и затем повторного выполнения векторного квантования и кодирования.
Предпочтительно, чтобы модуль изменения распределенных битов, предназначенный для осуществления при выполнении распределения битов поиска поддиапазона кодирования с максимальной важностью среди всех поддиапазонов кодирования в том случае, если количество распределенных данному поддиапазону кодирования битов достигло максимального значения битов, которое может распределяться поддиапазону кодирования, выполнял регулировку важности наименее важного поддиапазона кодирования и обеспечивал дальнейшее отсутствие изменения количества распределенных битов для поддиапазона кодирования в том случае, если количество распределенных данному поддиапазону кодирования битов не достигло максимального значения, которое может распределяться поддиапазону кодирования, а затем выполнял изменение распределения битов для поддиапазона кодирования с максимальной важностью; и
при изменении распределения битов осуществлял распределение 1 бита поддиапазону кодирования с количеством распределенных битов 0 и уменьшение важности на 1 после распределения битов; распределение 0,5 бита поддиапазону кодирования с количеством распределенных битов больше 0 и меньше 5, и уменьшение важности на 0,5 после распределения битов; распределение 1 бита поддиапазону кодирования с количеством распределенных битов больше 5 и уменьшение важности на 1 после распределения битов.
Предпочтительно, чтобы после каждого случая изменения количества распределенных битов модулем изменения распределенных битов, т.е. увеличения на 1 отсчета итераций изменения количества распределенных битов, если значение отсчета итераций изменения количества распределенных битов достигает предустановленной верхней границы, или если количество битов, которое может использоваться, меньше количества битов, требуемого для изменения количества распределенных битов, происходило окончание процесса изменения количества распределенных битов.
Предпочтительно, чтобы последовательность мультиплексирования и упаковки закодированных битов была следующей: флажок кодирования по способу Хаффмана огибающей амплитуды, флажок кодирования по способу Хаффмана коэффициента частотного домена, количество итераций изменения распределения битов, кодированные биты огибающей амплитуды, кодированные биты коэффициента частотного домена.
Предпочтительно, чтобы при осуществлении модулем кодирования по способу Хаффмана кодирования по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений, для кодирования индексов векторного квантования в поддиапазоне кодирования использовались различные кодовые книги в зависимости от количества битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования.
Для решения указанной выше технической проблемы в настоящем изобретении дополнительно предусматривается наличие системы декодирования звука с решетчатым векторным квантованием, включающей: демультиплексор битового потока, узел декодирования огибающей амплитуды поддиапазона кодирования, узел распределения битов, узел декодирования коэффициента частотного домена, узел инверсного классификационного решетчатого векторного квантования, узел инверсной нормализационной обработки, узел шумового заполнения и узел обратного модифицированного дискретного косинусного преобразования (ОМДКП), причем
демультиплексор битового потока предназначен для отделения вспомогательной информации, кодированных битов огибающей амплитуды и кодированных битов доменного коэффициента от подлежащего декодированию битового потока;
узел декодирования огибающей амплитуды поддиапазона кодирования соединяется с демультиплексором битового потока и предназначается для декодирования закодированных битов огибающей амплитуды с выхода демультиплексора битового потока с целью получения квантованной составляющей огибающей амплитуды в каждом поддиапазоне кодирования;
узел распределения битов соединяется с узлом квантования и кодирования огибающей амплитуды и предназначается для выполнения распределения битов с целью получения количества кодированных битов, распределенных каждому коэффициенту частотного домена в каждом поддиапазоне кодирования;
узел декодирования коэффициента частотного домена соединяется с узлом декодирования огибающей амплитуды и узлом распределения битов и предназначается для осуществления декодирования поддиапазона кодирования малых битовых значений с целью получения индекса квантования в поддиапазоне кодирования малых битовых значений; а также для осуществления декодирования поддиапазона кодирования больших битовых значений с целью получения индексного вектора в поддиапазона кодирования больших битовых значений, где поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов. распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему;
узел инверсного классификационного решетчатого векторного квантования предназначен для инверсного квантования индекса выполненного пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений и осуществления инверсного квантования индексного вектора выполненного сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений;
узел инверсной нормализационной обработки предназначен для выполнения инверсной нормализации значений, полученных после осуществления инверсного квантования в поддиапазоне кодирования, а также для получения коэффициента частотного домена;
узел шумового заполнения предназначен для выполнения заполнения шумом поддиапазона, которому узел инверсной нормализационной обработки не распределил бит для выходного значения коэффициента частотного домена;
узел обратного модифицированного дискретного косинусного преобразования (узел ОМДКП) соединяется с узлом шумового заполнения и предназначен для выполнения обратного модифицированного дискретного косинусного преобразования коэффициента частотного домена, для которого было выполнено шумовое заполнение с целью получения звукового сигнала.
Предпочтительно, чтобы узел распределения битов включал соединенные друг с другом модуль вычисления важности и модуль распределения битов, причем
модуль вычисления важности предназначен для вычисления исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в поддиапазоне кодирования;
модуль распределения битов предназначен для выполнения распределения битов каждому коэффициенту частотного домена в каждом поддиапазоне кодирования согласно исходному значению важности каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
Предпочтительно, чтобы узел распределения битов дополнительно включал модуль изменения распределенных битов, соединенный с модулем распределения битов, и модуль изменения распределенных битов, предназначенный для выполнения изменения распределения битов в поддиапазоне кодирования счетное количество раз после выполнения распределения битов в соответствии со значением отсчета итераций изменения количества распределенных битов и важностью каждого поддиапазона кодирования на стороне кодирования.
Предпочтительно, чтобы при осуществлении модулем распределения битов распределения битов длина этапа распределенных битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений были меньше длины этапа распределенных битов и длины этапа уменьшения важности распределения битов после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений.
Когда модуль изменения распределенных битов выполняет изменение распределения битов, то длина этапа изменения распределенных битов и длина этапа уменьшения важности после изменения распределения битов поддиапазону кодирования малых битовых значений меньше длины этапа изменения распределенных битов и длины этапа уменьшения важности после изменения распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений.
Предпочтительно, чтобы узел декодирования коэффициента частотного домена при осуществлении декодирования в поддиапазоне кодирования малых битовых значений выполнял кодирование по способу Хаффмана в поддиапазоне кодирования малых битовых значений в соответствии со значением флажка кодирования по способу Хаффмана коэффициента частотного домена на стороне кодирования или выполнял натуральное кодирование для получения индекса векторного квантования в поддиапазоне кодирования малых битовых значений; а при осуществлении декодирования в поддиапазоне кодирования больших битовых значений прямо выполнял натуральное кодирование для получения индекса векторного квантования в поддиапазоне кодирования больших битовых значений.
Предпочтительно, чтобы узел инверсного классификационного решетчатого векторного квантования включал классификационный обрабатывающий модуль и модуль инверсного пирамидального решетчатого векторного квантования, причем
классификационный обрабатывающий модуль предназначен для передачи индекса квантования из поддиапазона кодирования малых битовых значений в модуль инверсного пирамидального решетчатого векторного квантования;
модуль инверсного пирамидального решетчатого векторного квантования предназначен для выполнения инверсного квантования индекса квантования в поддиапазоне кодирования малых битовых значений; причем модуль инверсного пирамидального решетчатого векторного квантования включает соединенные друг с другом первый субмодуль инверсного квантования узла решетки и первый субмодуль инверсного регулирования энергии, причем
8
первый субмодуль инверсного квантования узла решетки предназначен для определения энергетической пирамидальной поверхности, на которой располагается индекс квантования в поддиапазоне кодирования малых битовых значений, метка индекса квантования на этой энергетической пирамидальной поверхности, а также последующие решения для соответствующего узла решетки D;
8
первый субмодуль инверсного регулирования энергии предназначен для выполнения инверсного регулирования энергии решения Y для узла решетки D, получаемого из уравнения
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><mrow><mo>(</mo><mrow><mi>Y</mi><mo>−</mo><mi>a</mi></mrow><mo>)</mo></mrow><mo>/</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi><mrow><mo>(</mo><mrow><mi>i</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi></mrow><mo>)</mo></mrow></mrow>
-6
-6
-6
-6
-6
-6
-6
-6
где а=(2, 2, 2, 2, 2, 2, 2, 2), scale(index) представляет собой коэффициент масштабирования;
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
узел инверсной нормализационной обработки предназначен для выполнения инверсной нормализационной обработки
с целью получения коэффициента частотного домена для m-того вектора из поддиапазона кодирования j, восстановленного на стороне декодирования:
<mrow><msubsup><mover accent="true"><mi>X</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msup><mn>2</mn><mrow><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mo stretchy="false">(</mo><mi>j</mi><mo stretchy="false">)</mo><mo>/</mo><mn>2</mn></mrow></msup><mo>⋅</mo><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
q
где Th(j) представляет собой показатель степени квантования огибающей амплитуды в j-том поддиапазоне кодирования.
Предпочтительно, чтобы узел инверсного классификационного решетчатого векторного квантования дополнительно включал модуль инверсного сферического решетчатого векторного квантования; классификационный обрабатывающий модуль дополнительно предназначен для передачи индексного вектора из поддиапазона кодирования больших битовых значений в модуль инверсного сферического решетчатого векторного квантования для обработки;
модуль инверсного сферического решетчатого векторного квантования предназначен для выполнения инверсного квантования индексного вектора в поддиапазоне кодирования больших битовых значений; модуль инверсного сферического решетчатого векторного квантования включает соединенные друг с другом второй субмодуль инверсного квантования узла решетки и второй субмодуль инверсного регулирования энергии, причем
8
8
второй субмодуль инверсного квантования узла решетки предназначен для получения решения для узла решетки D, соответствующего индексному вектору, причем используемый этап для получения такого решения для узла решетки D, соответствующего индексному вектору, включает:
вычисление значения x=k*G и вычисление значения ytemp=x/(2^(region_bit(j));
8
D8
8
и вычисление узла решетки D y=x-ƒ(ytemp)*(2^region_bit(j)); где k представляет собой индексный вектор векторного квантования, region_bit(j) представляет собой количество битов, распределенных одному коэффициенту частотного домена в j-том поддиапазоне кодирования; G представляет собой порождающую матрицу узла решетки D и имеет следующий вид:
<mrow><mi>G</mi><mo>=</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow>
8
второй субмодуль инверсного регулирования энергии предназначен для выполнения инверсного регулирования энергии найденного значения узла решетки D, и обеспечивает получение
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><mi>y</mi><mo>*</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi><mrow><mo>(</mo><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow><mo>)</mo></mrow><mo>/</mo><mrow><mo>(</mo><mrow><msup><mn>2</mn><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></msup></mrow><mo>)</mo></mrow><mo>+</mo><mi>a</mi></mrow>
-6
-6
-6
-6
-6
-6
-6
-6
где a=(2, 2, 2, 2, 2, 2, 2, 2), scale(region_bit(j)) представляет собой коэффициент масштабирования;
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
узел инверсной нормализационной обработки предназначен для выполнения инверсной нормализационной обработки
с целью получения коэффициента частотного домена для m-того вектора из поддиапазона кодирования j, восстановленного на стороне декодирования:
<mrow><msubsup><mover accent="true"><mi>X</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msup><mn>2</mn><mrow><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mo stretchy="false">(</mo><mi>j</mi><mo stretchy="false">)</mo><mo>/</mo><mn>2</mn></mrow></msup><mo>⋅</mo><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
q
где Th(j) представляет собой показатель степени квантования огибающей амплитуды в j-том поддиапазоне кодирования.
Способ кодирования/декодирования звука и система векторного квантования решетчатого типа, заявляемые в настоящем изобретении, полностью учитывают характеристики распределения голосового информационного источника, выполняют квантование подлежащего квантованию вектора с применением совмещенного решетчатого векторного квантования, конкретнее пирамидального решетчатого векторного квантования и сферического решетчатого векторного квантования, соответственно используемых в поддиапазоне кодирования малых битовых значений и в поддиапазоне кодирования больших битовых значений согласно количеству битов, распределяемых соответствующему поддиапазону кодирования, а при декодировании используют обратный кодированию процесс, обеспечивая таким образом хорошее качество кодирования звукового информационного источника. Кроме того, при распределении битов используется процедура распределения битов с переменной длиной этапа, причем длина этапа распределения битов одному коэффициенту частотного домена может минимально устанавливаться на половину бита, таким образом улучшая эффективность использования битов. Также одновременно был разработан пирамидальный решетчатый векторный квантователь с малой битовой длиной этапа и невысокой сложностью используемого алгоритма маркирования узла решетки, уменьшая тем самым требуемый объем хранения. Кроме того, при сферическом решетчатом векторном квантовании в поддиапазоне кодирования больших битовых значений используется новый критерий для метки расширения кодовой книги, таким образом дополнительно уменьшая сложность алгоритма работы решетчатого векторного квантователя. В процессе кодирования также используется разработанный алгоритм сохранения битов.
Краткое описание чертежей
На Фиг.1 представлена соответствующая настоящему изобретению блок-схема способа кодирования звука с решетчатым векторным квантованием.
На Фиг.2 представлена соответствующая настоящему изобретению блок-схема процесса решетчатого векторного квантования.
На Фиг.3 представлена соответствующая настоящему изобретению блок-схема процесса изменения распределения битов.
На Фиг.4 представлена соответствующая настоящему изобретению блок-схема способа декодирования звука с решетчатым векторным квантованием.
На Фиг.5 представлена соответствующая настоящему изобретению структурная блок-схема системы звукового кодирования с решетчатым векторным квантованием.
На Фиг.6 представлена соответствующая настоящему изобретению структурная блок-схема модулей узла классификационного решетчатого векторного квантования и кодирования системы кодирования.
На Фиг.7 представлена соответствующая настоящему изобретению структурная блок-схема системы звукового декодирования с решетчатым векторным квантованием.
На Фиг.8 представлена соответствующая настоящему изобретению структурная блок-схема модулей узла инверсного классификационного решетчатого векторного квантования системы декодирования.
На Фиг.9 представлена соответствующая варианту реализации настоящего изобретения блок-схема структуры битового потока.
Предпочтительные варианты реализации настоящего изобретения
Основная идея настоящего изобретения заключается в осуществлении квантования подлежащих квантованию векторов с использованием совмещенного решетчатого векторного квантования, то есть пирамидального решетчатого векторного квантования и сферического решетчатого векторного квантования, соответственно, для поддиапазона кодирования малых битовых значений и поддиапазона кодирования больших битовых значений согласно количеству битов, распределенных поддиапазону кодирования, и в использовании при декодировании процесса, обратного кодированию, обеспечивая таким образом получение хорошего качества кодирования. Кроме того, при распределении битов используется процедура распределения битов с переменной длиной этапа с целью улучшения эффективности использования битов.
Ниже приводится подробное описание в четырех частях настоящего изобретения, т.е. способа кодирования, способа декодирования, системы кодирования и системы декодирования.
1. Способ кодирования
Способ кодирования звука с решетчатым векторным квантованием в настоящем изобретении включает следующие этапы:
А. Разделение коэффициентов звукового сигнала в частотном домене, для которого в множестве поддиапазонов кодирования выполняется модифицированное дискретное косинусное преобразование (МДКП), квантование и кодирование значения огибающей амплитуды в каждом поддиапазоне кодирования для получения кодированных битовых значений этих амплитуд;
при выполнении разделения на поддиапазоны кодирования после осуществления модифицированного дискретного косинусного преобразования выполняется разделение коэффициентов частотного домена на несколько поддиапазонов кодирования с однородными интервалами, или их разделение на несколько поддиапазонов кодирования с неоднородными интервалами в соответствии с характеристиками слухового восприятия;
В. Выполнение в каждом поддиапазоне кодирования распределения битов и осуществление нормализации, квантования и кодирования соответственно для векторов в поддиапазоне кодирования малых битовых значений с пирамидальным решетчатым векторным квантованием, и для векторов в поддиапазоне кодирования больших битовых значений со сферическим решетчатым квантованием, с целью получения кодированных битовых значений коэффициентов частотного домена, причем поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему;
перед этапом выполнения распределения битов в каждый поддиапазон кодирования вычисление исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в поддиапазоне кодирования; и затем выполнение распределения битов каждому коэффициенту частотного домена в поддиапазоне кодирования в соответствии с важностью поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
Во время распределения битов каждому коэффициенту частотного домена в поддиапазоне кодирования в соответствии с важностью поддиапазона кодирования может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов; в частности,
при выполнении распределения битов поддиапазону кодирования длина этапа распределения битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений меньше длины этапа распределения битов и длины этапа уменьшения важности после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений, причем поддиапазоном кодирования нулевого бита называется поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, равняется нулю в поддиапазоне кодирования;
q
2
исходное значение важности может вычисляться согласно выбранному оптимальному битовому значению при условии получения максимального отношения квантованного сигнала к шуму и соответствия коэффициента масштабирования характеристикам слухового восприятия, и также исходное значение важности для распределения битов в каждом поддиапазоне кодирования может определяться показателем степени квантования Th(j) или значением µ×log[Th(j)]+ν (где µ>0, а µ и ν представляют собой действительные числа, и j=0,…,L-1);
С. Мультиплексирование и упаковка кодированных битовых значений амплитуд и кодированных битовых значений коэффициентов в каждом поддиапазоне кодирования частотного домена и их передача на сторону декодирования.
Пример 1 - Способ кодирования
На Фиг.1 приводится структурная блок-схема способа кодирования звука с решетчатым векторным квантованием в соответствии с примером реализации настоящего изобретения. В качестве примера иллюстрации представленного в настоящем изобретении способа кодирования звука выбран звуковой поток с длительностью пакета 20 мс и частотой дискретизации 32 кГц. Представленный в настоящем изобретении способ также пригоден к использованию при других длительностях пакетов и частоте дискретизации. Как видно из Фиг.1, данный способ предусматривает следующие этапы.
Этап 101, выполнение модифицированного дискретного косинусного преобразования (МДКП) подлежащего кодированию звукового потока с целью получения коэффициентов частотного домена для N точек дискретизации в частотном домене.
Характерные в данном этапе действия могут включать:
<mrow><mover accent="true"><mi>x</mi><mo>¯</mo></mover><mi>n</mi></mrow>
old
получение дискретизованного во временном домене 2N-точечного сигнала
из дискретизованного во временном домене N-точечного сигнала х(n) текущего кадра и дискретизованного во временном домене N-точечного сигнала x(n) предыдущего кадра, где дискретизованный 2N-точечный сигнал во временном домене может быть представлен следующим уравнением:
<mrow><mover accent="true"><mi>x</mi><mo>¯</mo></mover><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><mtable><mtr><mtd><mrow><msub><mi>x</mi><mrow><mi>o</mi><mi>l</mi><mi>d</mi></mrow></msub><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mi>n</mi><mo>=</mo><mn>0,1,</mn><mo>…</mo><mo>,</mo><mi>N</mi><mo>−</mo><mn>1</mn></mrow></mtd></mtr><mtr><mtd><mrow><mi>x</mi><mrow><mo>(</mo><mrow><mi>n</mi><mo>−</mo><mi>N</mi></mrow><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mi>n</mi><mo>=</mo><mi>N</mi><mo>,</mo><mi>N</mi><mo>+</mo><mn>1,</mn><mo>…</mo><mn>,2</mn><mi>N</mi><mo>−</mo><mn>1</mn></mrow></mtd></mtr></mtable><mtext> </mtext><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></mrow></mrow>
Выполнение над  МДКП с целью получения следующих коэффициентов частотного домена:
<mrow><mi>X</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mrow><mn>2</mn><mi>N</mi><mo>−</mo><mn>1</mn></mrow></munderover><mrow><mover accent="true"><mi>x</mi><mo>¯</mo></mover><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mi>w</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mi>cos</mi><mo stretchy="false">[</mo><mfrac><mi>π</mi><mi>N</mi></mfrac><mo stretchy="false">(</mo><mi>n</mi><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo>+</mo><mfrac><mi>N</mi><mn>2</mn></mfrac><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>k</mi><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo stretchy="false">)</mo></mrow></mstyle><mo stretchy="false">]</mo><mtext> </mtext><mi>k</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mo>,</mo><mi>N</mi><mo>−</mo><mn>1</mn><mtext> </mtext><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>
Где w(n) представляет собой синусоидальную оконную функцию, описываемую следующим выражением:
<mrow><mi>w</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mi>sin</mi><mo stretchy="false">[</mo><mfrac><mi>π</mi><mrow><mn>2</mn><mi>N</mi></mrow></mfrac><mo stretchy="false">(</mo><mi>n</mi><mo>+</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo stretchy="false">)</mo><mo stretchy="false">]</mo><mtext> </mtext><mi>n</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mn>,2</mn><mi>N</mi><mo>−</mo><mn>1</mn><mtext> </mtext><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>
Когда длительность пакета равна 20 мс и частота дискретизации равна 32 кГц, получаем 640 коэффициентов частотного домена. Для получения требуемого количества N коэффициентов частотного домена могут использоваться и другие длительности пакетов и частоты дискретизации.
Этап 102, N-точечные коэффициенты частотного домена разделяются на несколько поддиапазонов кодирования, и вычисляются огибающей амплитуды в каждом поддиапазоне кодирования.
В настоящем примере используется разделение на неоднородные поддиапазоны, и в каждом из поддиапазонов вычисляются амплитуды огибающих в частотном домене (называемые для краткости амплитудами огибающих).
Этап может быть реализован в виде следующих подэтапов.
Этап 102а, подлежащие обработке коэффициенты частотного домена в данном частотном диапазоне разделяются на L поддиапазонов (которые можно называть поддиапазонами кодирования).
В настоящем примере подлежащий обработке частотный диапазон составляет 0-13,6 кГц, а неоднородное разделение поддиапазонов может осуществляться в соответствии с характеристиками восприятия человеческого уха. Характерное разделение поддиапазонов показано в Таблице 1.
В Таблице 1 коэффициенты частотного домена в частотном диапазоне 0-13,6 кГц разделены на 28 поддиапазонов кодирования, то есть L=28; а коэффициенты частотного домена для частот более 13,6 кГц приняты равными 0.
Этап 102b, в каждом поддиапазоне кодирования вычисляется амплитуды огибающих в соответствии со следующим уравнением:
<mrow><mi>T</mi><mi>h</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><msqrt><mrow><mfrac><mn>1</mn><mrow><mi>H</mi><mi>I</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>−</mo><mi>L</mi><mi>I</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>+</mo><mn>1</mn></mrow></mfrac><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>k</mi><mo>=</mo><mi>L</mi><mi>I</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow><mrow><mi>H</mi><mi>I</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></munderover><mrow><mi>X</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow><mi>X</mi><mrow><mo>(</mo><mi>k</mi><mo>)</mo></mrow></mrow></mstyle></mrow></msqrt><mtext> </mtext><mi>j</mi><mo>=</mo><mn>0,1,</mn><mo>…</mo><mo>,</mo><mi>L</mi><mo>−</mo><mn>1</mn><mtext> </mtext><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>
Где LIndex(j) и HIndex(j) представляют собой, соответственно, начальную и конечную частотные точки j-го поддиапазона кодирования, характерные значения которых можно видеть в Таблице 1.
Таблица 1Пример неоднородного разделения поддиапазонов в частотном домене
Последовательный номер поддиапазона
Начальная частотная точка (LIndex)
Конечная частотная точка (HIndex)
Ширина поддиапазона (BandWidth)
0
0
7
8
1
8
15
8
2
16
23
8
3
24
31
8
4
32
47
16
5
48
63
16
6
64
79
16
7
80
95
16
8
96
111
16
9
112
127
16
10
128
143
16
11
144
159
16
12
160
183
24
13
184
207
24
14
208
231
24
15
232
255
24
16
256
279
24
17
280
303
24
18
304
327
24
19
328
351
24
20
352
375
24
21
376
399
24
22
400
423
24
23
424
447
24
24
448
471
24
25
472
495
24
26
496
519
24
27
520
543
24
Этап 103, квантование и кодирование значения огибающей амплитуды в каждом поддиапазоне кодирования для получения показателя квантования огибающей амплитуды и показателя квантования кодированных битов огибающей амплитуды (то есть кодированных битов огибающей амплитуды).
Каждая из амплитуд огибающих в поддиапазонах кодирования, вычисленная в соответствии с уравнением (4), подвергается квантованию в соответствии с уравнением (5) для получения показателя квантования огибающей амплитуды в каждом поддиапазоне кодирования:
<mrow><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>[</mo><mrow><mn>2</mn><msub><mrow><mi>log</mi></mrow><mn>2</mn></msub><mi>T</mi><mi>h</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow><mo>]</mo></mrow><mtext> </mtext><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>
q
q
q
q
q
Где [x] означает округление, Th(0) представляет собой показатель квантования огибающей амплитуды в первом поддиапазоне кодирования, диапазон величин которого ограничивается [-5, 34], то есть, когда Th(0)<-5, Th(0)=-5; когда Th(0)>34, Th(0)=34.
Thq(j)/2
Квантованная амплитуда огибающей, откорректированная в соответствии с показателем квантования, равна 2.
Для кодирования показателя квантования огибающей амплитуды в первом поддиапазоне кодирования используются 6 битов, то есть затрачиваются 6 битов.
Разностные оперативные значения между кодированными показателями квантования амплитуд огибающих в поддиапазонах кодирования вычисляются по следующему уравнению:
<mrow><mi>Δ</mi><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mrow><mo>(</mo><mrow><mi>j</mi><mo>+</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>−</mo><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mtext> </mtext><mi>j</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mo>,</mo><mi>L</mi><mo>−</mo><mn>2</mn><mtext> </mtext><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>
q
Огибающей амплитуды могут следующим образом корректироваться для обеспечения пребывания ΔTh(j) в диапазоне [-15, 16]:
q
q
q
q
если ΔTh(j)<-15, ΔTh(j)=-15, Th(j)=Th(j+1)+15, j=L-2,…,0;
q
q
q
q
если ΔTh(j)>16, ΔTh(j)=16, Th(j+1)=Th(j)+16, j=0,…,L-2;
q
q
q
осуществление кодирования по способу Хаффмана для ΔTh(j), j=0,…,L-2 и вычисление количества затраченных для этого битов (кодированных битов по способу Хаффмана). Если количество кодированных битов по способу Хаффмана превышает зафиксированное количество распределенных битов (в настоящем примере, больше чем (L, (1)×5)), тогда для кодирования ΔTh(j), j=0,…,L-2 используется натуральное кодирование, и бит флажка кодирования огибающей амплитуды по способу Хаффмана Flag_huff_rms устанавливается в 0. В противном случае для кодирования ΔTh(j), j=0,…,L-2 используется кодирование по способу Хаффмана, и бит флажка кодирования огибающей амплитуды по способу Хаффмана Flag_huff_rms устанавливается в 1. Показатель квантования кодированных битов огибающей амплитуды (то есть кодированные биты разностного значения огибающей амплитуды) и бит флажка кодирования огибающей амплитуды по способу Хаффмана должны поступать на мультиплексор (MUX).
Этап 104, выполняется распределение битов в каждый поддиапазон кодирования в соответствии с важностью каждого поддиапазона кодирования.
Исходное значения важности каждого поддиапазона кодирования первоначально вычисляется в соответствии с теорией передачи информации и информацией об амплитуде огибающей в поддиапазоне кодирования, и затем выполняется распределение битов каждому поддиапазону в зависимости от его важности. Этап может быть реализован в виде следующих подэтапов.
Этап 104а, вычисление среднего значения затраченных битов на один коэффициент частотного домена.
Количество битов bit_sides, затраченных на дополнительную информацию, и количество битов bits_Th, затраченных на поддиапазон кодирования огибающей амплитуды, получается из общего количества битов bits_available, которое может предоставляться кадрами длительностью 20 мс для получения количества оставшихся битов bits_left, которые могут быть использованы для кодирования коэффициентов частотного домена, то есть:
<mrow><mi>b</mi><mi>i</mi><mi>t</mi><mi>s</mi><mo>_</mo><mi>l</mi><mi>e</mi><mi>f</mi><mi>t</mi><mo>=</mo><mi>b</mi><mi>i</mi><mi>t</mi><mi>s</mi><mo>_</mo><mi>a</mi><mi>v</mi><mi>a</mi><mi>i</mi><mi>l</mi><mi>a</mi><mi>b</mi><mi>l</mi><mi>e</mi><mo>−</mo><mi>b</mi><mi>i</mi><mi>t</mi><mo>_</mo><mi>s</mi><mi>i</mi><mi>d</mi><mi>e</mi><mi>s</mi><mo>−</mo><mi>b</mi><mi>i</mi><mi>t</mi><mi>s</mi><mo>_</mo><mi>T</mi><mi>h</mi><mtext> </mtext><mtext> </mtext><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>
Дополнительная информация включает биты флажка кодирования по способу Хаффмана Flag_huff_rms, коэффициент частотного домена флажка кодирования по способу Хаффмана Flag_huff_plvq и отсчет количества итераций. Параметр Flag_huff_rms используется для идентификации использования кодирования по способу Хаффмана огибающей амплитуды в поддиапазоне; Flag_huff_plvq используется для идентификации использования кодирования по способу Хаффмана при осуществлении векторного квантования и кодирования коэффициента частотного домена; а отсчет количества итераций используется для идентификации количества итераций при изменении распределения битов (подробно описанного в последующих этапах).
Среднее значение затраченных битов R на один коэффициент частотного домена вычисляется по формуле:
<mrow><mover accent="true"><mi>R</mi><mo>¯</mo></mover><mo>=</mo><mfrac><mrow><mi>b</mi><mi>i</mi><mi>t</mi><mi>s</mi><mo>_</mo><mi>l</mi><mi>e</mi><mi>f</mi><mi>t</mi></mrow><mrow><mi>H</mi><mi>I</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi><mrow><mo>(</mo><mrow><mi>L</mi><mo>−</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>+</mo><mn>1</mn></mrow></mfrac><mtext> </mtext><mtext> </mtext><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow>
Где L представляет собой количество поддиапазонов кодирования.
Этап 104b, вычисление оптимальной величины битового потока в соответствии с теорией передачи информации из условия получения максимального отношения квантованного сигнала к шуму.
Оценка искажения передачи основана на использовании гауссовского распределения случайной переменной с оптимизацией методом Лагранжа и оптимального распределения битов при условии получения максимального отношения квантованного сигнала к шуму в каждом поддиапазоне кодирования в условиях предельно допустимых искажений передачи, которые могут быть вычислены по формуле:
<mrow><mi>r</mi><mi>r</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>[</mo><mrow><mover accent="true"><mi>R</mi><mo>¯</mo></mover><mo>+</mo><msub><mi>R</mi><mrow><mi>min</mi></mrow></msub><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo><mtext> </mtext><mi>j</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mo>,</mo><mi>L</mi><mo>−</mo><mn>1</mn><mtext> </mtext><mtext> </mtext><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow>
Где
<mrow><msub><mi>R</mi><mrow><mi>min</mi></mrow></msub><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo stretchy="false">[</mo><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>−</mo><mi>m</mi><mi>e</mi><mi>a</mi><mi>n</mi><mo>_</mo><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mo stretchy="false">]</mo><mtext> </mtext><mi>j</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mo>,</mo><mi>L</mi><mo>−</mo><mn>1</mn><mtext> </mtext><mrow><mo>(</mo><mrow><mn>10</mn></mrow><mo>)</mo></mrow></mrow>
и
<mrow><mi>m</mi><mi>e</mi><mi>a</mi><mi>n</mi><mo>_</mo><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mo>=</mo><mfrac><mn>1</mn><mrow><mi>H</mi><mi>I</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi><mrow><mo>(</mo><mrow><mi>L</mi><mo>−</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>+</mo><mn>1</mn></mrow></mfrac><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>L</mi><mo>−</mo><mn>1</mn></mrow></munderover><mrow><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo stretchy="false">[</mo><mi>H</mi><mi>I</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>−</mo><mi>L</mi><mi>I</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>+</mo><mn>1</mn><mo stretchy="false">]</mo><mtext> </mtext><mrow><mo>(</mo><mrow><mn>11</mn></mrow><mo>)</mo></mrow></mrow></mstyle></mrow>
Этап 104с, вычисление исходного значения важности каждого поддиапазона кодирования при распределении битов.
Исходное значение важности каждого поддиапазона кодирования, используемое при управлении распределением битов, при реальном распределении битов может быть получено с использованием приведенного выше оптимального битового значения и коэффициентов масштабирования, соответствующих характеристикам восприятия человеческого уха:
<mrow><mi>r</mi><mi>k</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mi>α</mi><mo>×</mo><mi>r</mi><mi>r</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><mi>α</mi><mrow><mo>[</mo><mrow><mover accent="true"><mi>R</mi><mo>¯</mo></mover><mo>+</mo><msub><mi>R</mi><mrow><mi>min</mi></mrow></msub><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow><mo>]</mo></mrow><mo>,</mo><mtext> </mtext><mi>j</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mo>,</mo><mi>L</mi><mo>−</mo><mn>1</mn><mtext> </mtext><mrow><mo>(</mo><mrow><mn>12</mn></mrow><mo>)</mo></mrow></mrow>
Где (представляет собой коэффициент масштабирования, связанный с битовой скоростью кодирования и получаемый с использованием статистического анализа, обычно 0<α<1. В настоящем примере значение α принято равным 0,6. Параметр rk(j) представляет собой важность используемого для распределения битов j-го поддиапазона кодирования.
Этап 104d, осуществление распределения битов в каждый поддиапазон кодирования на основе важности каждого поддиапазона кодирования.
Ниже приводится соответствующее описание.
k
k
Сначала находится поддиапазон кодирования с максимальным значением rk(j), и этот поддиапазон кодирования маркируется как j, затем увеличивается количество кодированных битов для каждого коэффициента частотного домена в поддиапазоне кодирования и уменьшается важность поддиапазона кодирования; одновременно вычисляется общее количество битов, затраченных на кодирование поддиапазона bit_band_used(j); наконец, вычисляется суммарное количество битов, затраченных на все поддиапазоны кодирования (bit_band_used(j)), j=0,…,L-1; приведенный выше процесс повторяется до тех пор, пока суммарное количество затраченных битов не будет соответствовать максимальному значению при условии ограничения количества битов.
Количество распределенных битов связано с количеством битов, распределенных одному коэффициенту частотного домена в одном поддиапазоне кодирования. Количество битов, затраченных в одном поддиапазоне кодирования, связано с количеством битов, распределенных одному коэффициенту частотного домена в одном поддиапазоне кодирования, умноженному на количество коэффициентов частотного домена, находящихся в поддиапазоне кодирования.
В настоящем примере длина этапа распределения битов поддиапазону кодирования при количестве распределенных битов 0 равна 1 биту, а длина этапа уменьшения важности после распределения битов равна 1; длина этапа распределения дополнительных битов поддиапазону кодирования с количеством распределенных битов более 0 и меньше порогового значения 5 равна 0,5 бита; и длина этапа уменьшения важности после дополнительного распределения битов также равна 0,5; длина этапа распределения дополнительных битов поддиапазону кодирования с количеством распределенных битов больше порогового значения 5 равна 1, а длина этапа уменьшения важности после дополнительного распределения битов также равна 1.
Способ распределения битов в этапе может быть представлен в виде следующего псевдокода:
пусть region_bit(j)=0, j=0,1,…,L-1;
для поддиапазонов кодирования 0,1,…,L-1:
<mrow><msub><mi>j</mi><mi>k</mi></msub><mo>=</mo><munder><mrow><mi>arg</mi><mi>max</mi><mrow><mo>[</mo><mrow><mi>r</mi><mi>k</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow><mo>]</mo></mrow></mrow><mrow><mi>j</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mo>,</mo><mi>L</mi><mo>−</mo><mn>1</mn></mrow></munder></mrow>
поиск
;
k
если region_bit(j)<5
k
если region_bit(j)=0
k
k
пусть region_bit(j)=region_bit(j)+1;
k
k
k
вычисление bit_band_used(j)=region_bit(j)*BandWidth(j);
k
пусть rk(jk)=rk(j)-1;
k
иначе, если region_bit(j)>=1
пусть region_bit(jk)=region_bit(jk)+0.5;
k
k
k
вычисление bit_band_used(j)=region_bit(j)*BandWidth(j)*0.5;
k
k
пусть rk(j)=rk(j)-0.5;
k
иначе, если region_bit(j)>=5
k
k
пусть region_bit(j)=region_bit(j)+1;
<mrow><mi>r</mi><mi>k</mi><mrow><mo>(</mo><mrow><msub><mi>j</mi><mi>k</mi></msub></mrow><mo>)</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><mtable columnalign="left"><mtr columnalign="left"><mtd columnalign="left"><mrow><mi>r</mi><mi>k</mi><mrow><mo>(</mo><mrow><msub><mi>j</mi><mi>k</mi></msub></mrow><mo>)</mo></mrow><mo>−</mo><mn>1</mn></mrow></mtd><mtd columnalign="left"><mrow><mtext>если region_bit</mtext><mrow><mo>(</mo><mrow><msub><mtext>j</mtext><mtext>k</mtext></msub></mrow><mo>)</mo></mrow><mo><</mo><mi>M</mi><mi>a</mi><mi>x</mi><mi>B</mi><mi>i</mi><mi>t</mi></mrow></mtd></mtr><mtr columnalign="left"><mtd columnalign="left"><mrow><mo>−</mo><mn>100</mn></mrow></mtd><mtd columnalign="left"><mrow><mi>и</mi><mi>н</mi><mi>а</mi><mi>ч</mi><mi>е</mi></mrow></mtd></mtr></mtable></mrow></mrow></mrow>
пусть
;
k
k
вычисление bit_band_used(jk)=region_bit(j)×BandWidth(j);
вычисление bit_used_all=sum(bit_band_used(j)) j=0,1,…,L-1;
если bit_used_all<bits_left - 24, возврат и повторный поиск jk в каждом поддиапазоне кодирования, цикличное вычисление значения для распределения битов;
где 24 представляет собой максимальное значение ширины поддиапазона кодирования;
иначе, окончание цикла, вычисление значения для распределения битов и выдача текущего распределенного битового значения.
Наконец, оставшиеся биты в количестве меньше 24 распределяются поддиапазонам кодирования, соответствующим требованиям следующего принципа, основанного на важности поддиапазона кодирования. Предпочтительно распределение 0,5 бита каждому коэффициенту частотного домена в поддиапазоне кодирования, которому распределен 1 бит, и при этом важность поддиапазона кодирования уменьшается на 0,5; иначе, распределяется 1 бит каждому коэффициенту частотного домена в поддиапазоне кодирования, которому распределено 0 битов, и при этом важность поддиапазона кодирования уменьшается на 1 до тех пор, пока bit_left - bit_used_all<4 после завершения распределения битов.
При этом MaxBit представляет собой максимальное количество кодированных битов, которые могут распределяться одному коэффициенту частотного домена в поддиапазоне кодирования. В настоящем примере используется значение MaxBit=9. Это значение может быть надлежащим образом отрегулировано с учетом скорости кодирования кодека. Параметр region_bit(j) представляет собой количество битов, распределенных одному коэффициенту домена частоты в j-том поддиапазоне кодирования.
Этап 105, пирамидальное решетчатое векторное квантование и сферическое решетчатое векторное квантование соответственно используются к векторам в поддиапазоне кодирования малых битовых значений и в поддиапазоне кодирования больших битовых значений с целью выполнения квантования и кодирования для получения кодированных битов коэффициента частотного домена.
Используемый в настоящем изобретении процесс классификационного решетчатого векторного квантования и кодирования подробно описывается со ссылкой на Фиг.2.
Этап 106, создание потока кода кодирования.
На Фиг.9 представлена блок-схема состава кодового потока в настоящем примере изобретения. Сначала в мультиплексор битового потока MUX записывается дополнительная информация в следующей последовательности: Flag_huff_rms, Flag_huff_plvq и отсчет; затем в мультиплексор (MUX) записывается поддиапазон кодирования огибающей амплитуды в поддиапазоне кодирования, и затем в MUX записываются кодированные биты коэффициента частотного домена; и, наконец, записанный в представленном выше порядке кодовый поток передается на сторону декодирования.
Процесс классификационного решетчатого векторного квантования и кодирования
В частности, как видно из Фиг.2, процесс классификационного решетчатого векторного квантования и кодирования включает следующие этапы.
Этап 201, квантование значения огибающей амплитуды в поддиапазоне кодирования используется для выполнения нормализационной обработки всех коэффициентов частотного домена в данном поддиапазоне кодирования, и все коэффициенты частотного домена группируются для формирования нескольких подлежащих квантованию векторов.
Thq(j)/2
Для выполнения нормализационной обработки всех коэффициентов частотного домена Xj в поддиапазоне кодирования используется квантование огибающей амплитуды 2 в поддиапазоне кодирования ƒ:
<mrow><msubsup><mi>X</mi><mi>j</mi><mrow><mi>n</mi><mi>o</mi><mi>r</mi><mi>m</mi><mi>a</mi><mi>l</mi><mi>i</mi><mi>z</mi><mi>e</mi><mi>d</mi></mrow></msubsup><mo>=</mo><mfrac><mrow><msub><mi>X</mi><mi>j</mi></msub></mrow><mrow><msup><mn>2</mn><mrow><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>/</mo><mn>2</mn></mrow></msup></mrow></mfrac></mrow>
<mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup></mrow>
При этом непрерывно 8 коэффициентов частотного домена в поддиапазоне кодирования группируются с образованием одного 8-мерного вектора. На основе приведенного в Таблице 1 разделения поддиапазона кодирования коэффициенты в поддиапазоне кодирования j надлежащим образом группируются с образованием 8-мерных векторов Lattice_D8(j). Каждый нормализованный и сгруппированный 8-мерный подлежащий квантованию вектор может быть представлен в виде
, где m представляет собой положение 8-мерного вектора в поддиапазоне кодирования, располагающемся между 0 и Lattice_D8(j)-1.
Этап 202, вынесение решения о том, является ли количество распределенных битов в поддиапазоне кодирования j region_bit(j) меньше предустановленной пороговой величины, и при положительном ответе поддиапазон кодирования является поддиапазоном кодирования малых битовых значений, и выполняется этап 203, то есть используется пирамидальное решетчатое векторное квантование, а также выполняется этап 205 для осуществления кодирования после квантования; в противном случае поддиапазон кодирования является поддиапазоном кодирования больших битовых значений, и выполняется этап 204, то есть используется сферическое решетчатое векторное квантование, а также выполняется этап 206 для осуществления кодирования после квантования.
Этап 203, выполнение пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений.
В настоящем примере предустановленная пороговая величина равна 5, то есть количество битов, распределенных поддиапазону кодирования малых битовых значений j, соответствует условию: 1<=region_bit(j)<5.
8
8
В настоящем примере квантуется базирующийся на узле решетки D 8-мерный решетчатый вектор, где узел решетки D определяется следующим образом:
<mrow><msub><mi>D</mi><mn>8</mn></msub><mo>=</mo><mrow><mo>{</mo><mrow><mi>ν</mi><mo>=</mo><msup><mrow><mrow><mo>(</mo><mrow><msub><mi>ν</mi><mn>1</mn></msub><mo>,</mo><msub><mi>ν</mi><mn>2</mn></msub><mo>,</mo><mo>…</mo><mo>,</mo><msub><mi>ν</mi><mn>8</mn></msub></mrow><mo>)</mo></mrow></mrow><mi>T</mi></msup><mo>∈</mo><msup><mi>Z</mi><mn>8</mn></msup><mo>|</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mn>8</mn></munderover><mrow><msub><mi>ν</mi><mi>i</mi></msub><mo>=</mo><mi>e</mi><mi>v</mi><mi>e</mi><mi>n</mi></mrow></mstyle></mrow><mo>}</mo></mrow></mrow>
8
8
где Z представляет собой 8-мерное целочисленное пространство. Ниже описывается основной способ отображения 8-мерного вектора (то есть квантования) на узел решетки D:
1
2
8
1
2
8
1
2
k
8
8
8
8
предполагается, что х представляет собой произвольное действительное число, ƒ(x) представляет собой округляющую дискретизацию (квантование) ближайшего к x целого числа из двух соседних к нему целых чисел, w(x) представляет собой округляющее квантование целого числа, расположенного дальше от х из двух соседних к нему целых чисел. Аналогично для любого вектора могут быть определены Х=(х,х,…,х)∈R, ƒ(X)=(ƒ(x), ƒ(x),…,ƒ((x)). Минимальный индекс в составляющих с максимальным абсолютным значением ошибки округления при квантовании выбирается в ƒ(X) и обозначается как k, далее определяется функция g(X)=(ƒ(x), ƒ(x),…,w(x),…,ƒ(x)), и тогда одна и только одна из функций ƒ(х) или g(Х) представляет значение узла решетки D, и теперь квантованное значение для узла решетки D равно:
<mrow><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><mtable columnalign="left"><mtr columnalign="left"><mtd columnalign="left"><mrow><mi>ƒ</mi><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow><mo>,</mo><mtext> </mtext><mi>е</mi><mi>с</mi><mi>л</mi><mi>и</mi></mrow></mtd><mtd columnalign="left"><mrow><mi>ƒ</mi><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow><mo>∈</mo><msub><mi>D</mi><mn>8</mn></msub></mrow></mtd></mtr><mtr columnalign="left"><mtd columnalign="left"><mrow><mi>g</mi><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow><mo>,</mo><mtext> </mtext><mi>е</mi><mi>с</mi><mi>л</mi><mi>и</mi></mrow></mtd><mtd columnalign="left"><mrow><mi>g</mi><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow><mo>∈</mo><msub><mi>D</mi><mn>8</mn></msub></mrow></mtd></mtr></mtable></mrow></mrow></mrow>
Процесс осуществления пирамидального решетчатого векторного квантования подлежащего квантованию вектора в поддиапазоне кодирования малых битовых значений включает:
Этап 203а, выполнение регулирования энергии подлежащего квантованию вектора.
В соответствии с количеством битов region_bit(f), распределенных одному коэффициенту частотного домена в поддиапазоне кодирования j, где располагается подлежащий квантованию вектор, в приводимой ниже Таблице 2 находят соответствующие количеству битов последовательный номер в кодовой книге (index) и коэффициент масштабирования энергии (scale), затем выполняется регулирование энергии подлежащего квантованию вектора в соответствии со следующим уравнением:
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup><mo>=</mo><mrow><mo>(</mo><mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup><mo>−</mo><mi>a</mi></mrow><mo>)</mo></mrow><mo>*</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi><mrow><mo>(</mo><mrow><mi>i</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi></mrow><mo>)</mo></mrow></mrow>
<mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mi>Y</mi><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup></mrow>
-6
-6
-6
-6
-6
-6
-6
-6
где
представляет собой m-тый нормализованный 8-мерный подлежащий квантованию вектор в поддиапазоне кодирования j,
представляет 8-мерный подлежащий квантованию вектор после осуществления регулирования энергии
, а=(2, 2, 2, 2, 2, 2, 2, 2).
Следует отметить, что приводимая ниже Таблица 2 получена на основе использования статистических данных и применения следующего статистического метода.
Прежде всего, ограничение коэффициента масштабирования энергии scale в определенном диапазоне и использование специальной длины этапа 1 с целью вычисления среднеквадратического значения ошибки пирамидального решетчатого векторного квантования и инверсного квантования при условии использования определенного количества битов квантования при выборе соответствующей длины этапа, и поиск определенного диапазона, в котором расположено значение scale, соответствующее минимальному среднеквадратическому значению ошибки; и использование специальной длины этапа 2 для поиска среднеквадратического значения ошибки, соответствующего пирамидальному решетчатому векторному квантованию и инверсному квантованию при условии использования определенного количества битов квантования, и поиск значения scale, соответствующего минимальному среднеквадратическому значению ошибки, которое соответствует значению scale при квантовании в условиях определенного битового состояния.
Таблица 2Взаимосвязь между количеством битов пирамидального решетчатого векторного квантования, последовательным номером в кодовой книге, коэффициентом масштабирования энергии и максимальным пирамидальным поверхностным энергетическим радиусом
Количество битов region_bit
Последовательный номер в кодовой книге Index
Коэффициент масштабирования энергии Scale
Максимальный пирамидальный поверхностный энергетический радиус LargeK
1
0
0,5
2
1,5
1
0,65
4
2
2
0,85
6
2,5
3
1,2
10
3
4
1,6
14
3,5
5
2,25
22
4
6
3,05
30
4,5
7
4,64
44
Этап 203b, квантование энергетически отрегулированного вектора для его отображения на узел решетки.
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Энергетически отрегулированный вектор сначала подвергается квантованию для его отображения на узел решетки, и затем выносится решение о том, является ли энергия пирамидальной поверхности квантованного узла решетки
меньшей или равной максимальному пирамидальному поверхностному энергетическому радиусу в кодовой книге кодирования, и при положительном ответе переход к этапу 203с, а в противном случае осуществление усечения энергии энергетически отрегулированного вектора, и затем выполняется квантование узла решетки.
<mrow><msubsup><mi>Y</mi><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
8
Квантование энергетически отрегулированного 8-мерного вектора
для его отображения на узел решетки D
:
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup></mrow><mo>)</mo></mrow></mrow>
D8
8
где ƒ(•) представляет собой оператор квантования для отображения определенного 8-мерного вектора на узел решетки D.
8
8
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Вычисляется энергия пирамидальной поверхности узла решетки D
и сравнивается с максимальным пирамидальным поверхностным энергетическим радиусом в кодовой книге кодирования. Энергия пирамидальной поверхности узла решетки D
представляет собой сумму абсолютных величин всех составляющих
. Кодовая книга кодирования означает набор всех узлов решетки D, используемых при квантовании подлежащего квантованию вектора.
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Если энергия пирамидальной поверхности узла решетки D
не превышает максимального пирамидального поверхностного энергетического радиуса LargeK(index), то прямо выполняется этап 203с, и вычисляется индекс квантования узла решетки в кодовой книге.
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mi>Y</mi><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup></mrow>
8
8
Если энергия пирамидальной поверхности узла решетки
больше максимального пирамидального поверхностного энергетического радиуса, то выполняется усечение энергии отрегулированного вектора
в поддиапазоне кодирования до тех пор, пока энергия квантованного узла решетки для энергетически отрегулированного подлежащего квантованию вектора не станет больше максимального пирамидального поверхностного энергетического радиуса; в текущий момент времени к энергетически связанному подлежащему квантованию вектору постоянно добавляется энергия до тех пор, пока энергия узла решетки D, на который квантуется вектор, не станет больше максимального пирамидального поверхностного энергетического радиуса; последний узел решетки D, чья энергия не больше максимального пирамидального поверхностного энергетического радиуса, определяется как квантованное значение подлежащего квантованию вектора, то есть узла решетки, создающего индекс векторного квантования.
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Если энергия узла решетки
больше максимального пирамидального поверхностного энергетического радиуса, то приводимым ниже псевдокодом может быть описан характерный процесс усечения энергии подлежащего квантованию вектора:
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
вычисление пирамидальной поверхностной энергии узла решетки D
, то есть нахождение суммы абсолютных значений всех составляющих
:
<mrow><mi>t</mi><mi>e</mi><mi>m</mi><mi>p</mi><mo>_</mo><mi>K</mi><mo>=</mo><mi>s</mi><mi>u</mi><mi>m</mi><mrow><mo>(</mo><mrow><mrow><mo>|</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow><mo>|</mo></mrow></mrow><mo>)</mo></mrow></mrow>
<mrow><mi>Y</mi><mi>b</mi><mi>a</mi><mi>k</mi><mo>=</mo><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Kbak=temp_К
if temp_K>LargeK(index)
В то время как temp_K>LargeK(index)
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup><mo>=</mo><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup><mo>/</mo><mn>2</mn></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup></mrow><mo>)</mo></mrow></mrow>
<mrow><mi>t</mi><mi>e</mi><mi>m</mi><mi>p</mi><mo>_</mo><mi>K</mi><mo>=</mo><mi>s</mi><mi>u</mi><mi>m</mi><mrow><mo>(</mo><mrow><mrow><mo>|</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow><mo>|</mo></mrow></mrow><mo>)</mo></mrow></mrow>
<mrow><mi>w</mi><mo>=</mo><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup><mo>/</mo><mn>16</mn></mrow>
<mrow><mi>Y</mi><mi>b</mi><mi>a</mi><mi>k</mi><mo>=</mo><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Kbak-temp_K
В то время как temp K<=LargeKindex)
<mrow><mi>Y</mi><mi>b</mi><mi>a</mi><mi>k</mi><mo>=</mo><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Kbak-temp_K
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup><mo>=</mo><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup><mo>+</mo><mi>w</mi></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup></mrow><mo>)</mo></mrow></mrow>
<mrow><mi>t</mi><mi>e</mi><mi>m</mi><mi>p</mi><mo>_</mo><mi>K</mi><mo>=</mo><mi>s</mi><mi>u</mi><mi>m</mi><mrow><mo>(</mo><mrow><mrow><mo>|</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow><mo>|</mo></mrow></mrow><mo>)</mo></mrow></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><mi>Y</mi><mi>b</mi><mi>a</mi><mi>k</mi></mrow>
temp_K=Kbak
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
8
В текущий момент времени
представляет собой последний узел решетки D, чья энергия не больше максимального пирамидального поверхностного энергетического радиуса, и temp_К представляет собой энергию узла решетки.
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Этап 203с, вычисление индекса векторного квантования узла решетки D
в кодовой книге.
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Этап вычисления индекса векторного квантования узла решетки D
в кодовой книге включает:
этап 1, маркирование узлов решетки каждой пирамидальной поверхности в соответствии со значением энергии пирамидальной поверхности.
L
Для целочисленной решетчатой узловой сети Z c размером L пирамидальная поверхность с энергетическим радиусом K определяется как:
<mrow><mi>S</mi><mrow><mo>(</mo><mrow><mi>L</mi><mo>,</mo><mi>K</mi></mrow><mo>)</mo></mrow><mo>=</mo><mo>{</mo><mi>Y</mi><mo>=</mo><mo stretchy="false">(</mo><msub><mi>y</mi><mn>1</mn></msub><mo>,</mo><msub><mi>y</mi><mn>2</mn></msub><mo>,</mo><mo>…</mo><mo>,</mo><msub><mi>y</mi><mi>L</mi></msub><mo stretchy="false">)</mo><mo>∈</mo><msup><mi>Z</mi><mi>L</mi></msup><mo>|</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>L</mi></munderover><mrow><mo>|</mo><msub><mi>y</mi><mi>i</mi></msub></mrow></mstyle><mo>|</mo><mo>=</mo><mi>K</mi><mo>}</mo></mrow>
L
Отметим, что N(L,K) представляют собой номера узлов решетки в S(L,K), и для целочисленной сети Z справедливы следующие рекурентные формулы для N(L,K):
N(L,0)=1 (L≥0), N(0,K)=0 (K≥1)
N(L,K)=N(L-1, K)+N(L-1, K-1)+N(L, K-1) (L≥1, K≥1).
1
2
L
L
Для целочисленного узла решетки Y=(y,y,…,y)∈Z на пирамидальной поверхности с энергетическим радиусом К номер b в последовательности [0,1,…,N(L,K)-1] используется для идентификации, причем b называется меткой узла решетки, и для определения метки b используются следующие этапы:
этап 1.1, пусть b=0, i=1, k=K, l=L, вычисление N(m,n), (m<=L, n<=K) в соответствии с рекурсивными формулами, и определение:
<mrow><mi>sgn</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>{</mo><mrow><mtable columnalign="left"><mtr columnalign="left"><mtd columnalign="left"><mn>1</mn></mtd><mtd columnalign="left"><mrow><mi>x</mi><mo>></mo><mn>0</mn></mrow></mtd></mtr><mtr columnalign="left"><mtd columnalign="left"><mn>0</mn></mtd><mtd columnalign="left"><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow></mtd></mtr><mtr columnalign="left"><mtd columnalign="left"><mrow><mo>−</mo><mn>1</mn></mrow></mtd><mtd columnalign="left"><mrow><mi>x</mi><mo><</mo><mn>0</mn></mrow></mtd></mtr></mtable></mrow></mrow></mrow>
i
этап 1.2, если y=0, тогда b=b+0;
i
<mrow><mi>b</mi><mo>=</mo><mi>b</mi><mo>+</mo><mi>N</mi><mrow><mo>(</mo><mrow><mi>l</mi><mo>+</mo><mn>1,</mn><mi>k</mi></mrow><mo>)</mo></mrow><mo>+</mo><mrow><mo>[</mo><mrow><mfrac><mrow><mn>1</mn><mo>−</mo><mi>sgn</mi><mrow><mo>(</mo><mrow><msub><mi>y</mi><mi>i</mi></msub></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mrow><mo>]</mo></mrow><mi>N</mi><mrow><mo>(</mo><mrow><mi>l</mi><mo>−</mo><mn>1,</mn><mi>k</mi><mo>−</mo><mn>1</mn></mrow><mo>)</mo></mrow></mrow>
если |y|=1, тогда
i
если |y|>1, тогда
<mrow><mtable><mtr><mtd><mrow><mi>b</mi><mo>=</mo><mi>b</mi><mo>+</mo><mi>N</mi><mrow><mo>(</mo><mrow><mi>l</mi><mo>−</mo><mn>1,</mn><mi>k</mi></mrow><mo>)</mo></mrow><mo>+</mo><mn>2</mn><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mrow><mo>|</mo><msub><mi>y</mi><mi>i</mi></msub><mo>|</mo><mo>−</mo><mn>1</mn></mrow></munderover><mrow><mi>N</mi><mrow><mo>(</mo><mrow><mi>l</mi><mo>−</mo><mn>1,</mn><mi>k</mi><mo>−</mo><mi>j</mi></mrow><mo>)</mo></mrow><mo>;</mo></mrow></mstyle></mrow></mtd></mtr><mtr><mtd><mrow><mo>+</mo><mrow><mo>[</mo><mrow><mfrac><mrow><mn>1</mn><mo>−</mo><mi>sgn</mi><mrow><mo>(</mo><mrow><msub><mi>y</mi><mi>i</mi></msub></mrow><mo>)</mo></mrow></mrow><mn>2</mn></mfrac></mrow><mo>]</mo></mrow><mi>N</mi><mrow><mo>(</mo><mrow><mi>l</mi><mo>−</mo><mn>1,</mn><mi>k</mi><mo>−</mo><mo>|</mo><msub><mi>y</mi><mi>i</mi></msub><mo>|</mo></mrow><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mrow>
i
этап 1.3, k=k-|y|, l=l-1, i=i+1, если теперь k=0, прекращение поиска, b(j,m)=b, который представляет собой метку Y, иначе, продолжение выполнения этапа 1.2;
этап 2, однотипная маркировка номеров узлов решетки на всех пирамидальных поверхностях;
где вычисление метки каждого узла решетки на всех пирамидальных поверхностях производится в соответствии с количеством узлов решетки на каждой пирамидальной поверхности и метки узла решетки на собственной пирамидальной поверхности,
<mrow><mi>i</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi><mo>_</mo><mi>b</mi><mrow><mo>(</mo><mrow><mi>j</mi><mo>,</mo><mi>m</mi></mrow><mo>)</mo></mrow><mo>=</mo><mi>b</mi><mrow><mo>(</mo><mrow><mi>j</mi><mo>,</mo><mi>m</mi></mrow><mo>)</mo></mrow><mo>+</mo><mstyle displaystyle="true"><munderover><mo>∑</mo><mrow><mi>k</mi><mi>k</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>K</mi><mo>−</mo><mn>2</mn></mrow></munderover><mi>N</mi></mstyle><mrow><mo>(</mo><mrow><mn>8,</mn><mi>k</mi><mi>k</mi></mrow><mo>)</mo></mrow></mrow>
8
8
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
где kk представляет собой четное число, b(j,m) представляет собой метку узла решетки D
на той пирамидальной поверхности, на которой располагается узел решетки D
, и index_b(j,m) представляет собой индекс узла решетки D
, в кодовой книге, то есть индекс m-того 8-мерного вектора в поддиапазоне кодирования j.
этап 203d, приведенные выше этапы 203а~203с повторяются до тех пор, пока закончится вычисление индекса векторного квантования для каждого 8-мерного вектора в каждом поддиапазоне кодирования с количеством кодированных битов, превышающим 0, но меньше порогового значения 5.
Этап 204, выполнение квантования в поддиапазоне кодирования больших битовых значений при сферическом решетчатом квантовании.
Количество битов, распределенных поддиапазону кодирования больших битовых значений j, удовлетворяет условию 5<=region_bit(j)<=9.
8
Здесь также применяется базирующееся на использовании решетки D 8-мерное решетчатое векторное квантование.
Процесс осуществления сферического решетчатого квантования подлежащего квантованию вектора в поддиапазоне кодирования больших битовых значений включает:
Этап 204а, выполнение регулирования энергии подлежащего квантованию вектора.
<mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup></mrow>
Для m-того нормализованного подлежащего квантованию вектора
, в поддиапазоне кодирования у выполняется следующее регулирование энергии:
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><mi>β</mi><mrow><mo>(</mo><mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup><mo>−</mo><mi>a</mi></mrow><mo>)</mo></mrow></mrow>
-6
-6
-6
-6
-6
-6
-6
-6
где a=(2, 2, 2, 2, 2, 2, 2, 2),
а параметр scale(region_bit(j)) представляет собой коэффициент масштабирования энергии в том случае, когда количество распределенных битов одному коэффициенту частотного домена в поддиапазоне кодирования задается параметром region_bit(j), и соответствующая взаимосвязь между ними может быть найдена из Таблицы 3.
Статистический способ получения приведенной ниже Таблицы 3 аналогичен способу получения Таблицы 2.
Таблица 3Взаимосвязь между количеством распределенных битов и коэффициентом масштабирования энергии для сферического решетчатого векторного квантования
Количество region_bit распределенных битов
Коэффициент масштабирования энергии scale
5
6
6
6,2
7
6,5
8
6,2
9
6,6
<mrow><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>/</mo><msup><mn>2</mn><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></msup></mrow><mo>)</mo></mrow></mrow>
region_bit(j)
Этап 204b, квантование энергетически отрегулированного вектора для его отображения на узел решетки и вынесение решения о том, является ли квантованное значение
, полученное после выполнения деления значения квантованного узла решетки на 2 в степени количества распределенных битов 2 и затем отображенное на узел решетки, нулевым вектором, и в случае положительного решения переход к этапу 204с, а в противном случае выполнение усечения энергии энергетически отрегулированного вектора и затем квантование этого вектора для его отображения на узел решетки.
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Для выполнения отображения на узел решетки D
энергетически отрегулированного m-того подлежащего квантованию вектора
в поддиапазоне кодирования j:
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow><mo>)</mo></mrow><mo>,</mo></mrow>
D8
8
где ƒ(•) представляет собой оператор квантования для отображения определенного 8-мерного вектора на узел решетки D.
<mrow><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>/</mo><msup><mn>2</mn><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></msup></mrow><mo>)</mo></mrow></mrow>
region_bit(j)
Для вынесения решения о том, является ли квантованное значение
, полученное после выполнения деления значения квантованного узла решетки на 2 в степени количества распределенных битов 2 и затем отображенное на узел решетки, нулевым вектором, то есть являются ли все составляющие квантованного значения нулями, и в случае положительного решения сообщение о соответствии нулевому векторному состоянию, а в противном случае сообщение о несоответствии нулевому векторному состоянию.
В случае соответствия нулевому векторному состоянию осуществляется прямое выполнение этапа 204с.
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>/</mo><msup><mn>2</mn><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></msup></mrow><mo>)</mo></mrow></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
8
8
8
При несоответствии нулевому векторному состоянию выполняется усечение энергии энергетически отрегулированного вектора
. В настоящем примере значение
делится на 2 до тех пор, пока не будет получено соответствие нулевому векторному состоянию
, и небольшое многозначное значение
само сохраняется как w, и затем это небольшое сохраненное многозначное значение w добавляется к энергетически усеченному вектору
с последующим квантованием данного вектора для его отображения на узел решетки D, и теперь снова выносится решение о его соответствии нулевому векторному состоянию. При несоответствии нулевому векторному состоянию в качестве квантованного узла решетки для подлежащего квантованию вектора выбирается последний узел решетки D, соответствующий нулевому векторному состоянию, а в противном случае к вектору
постоянно добавляется небольшое сохраненное многозначное значение w, и затем вектор квантуется для его отображения на узел решетки D до тех пор, пока не будет получено его соответствие нулевому векторному состоянию.
Типичный процесс осуществления усечения энергии подлежащего квантованию вектора может быть описан в виде следующего псевдокода:
<mrow><mi>t</mi><mi>e</mi><mi>m</mi><mi>p</mi><mo>_</mo><mi>D</mi><mo>=</mo><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>/</mo><msup><mn>2</mn><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></msup></mrow><mo>)</mo></mrow></mrow>
<mrow><mi>Y</mi><mi>b</mi><mi>a</mi><mi>k</mi><mo>=</mo><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Dbak=temp_D≠0
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>/</mo><mn>2</mn></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow><mo>)</mo></mrow></mrow>
<mrow><mi>t</mi><mi>e</mi><mi>m</mi><mi>p</mi><mo>_</mo><mi>D</mi><mo>=</mo><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>/</mo><msup><mn>2</mn><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></msup></mrow><mo>)</mo></mrow></mrow>
<mrow><mi>w</mi><mo>=</mo><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>/</mo><mn>16</mn></mrow>
<mrow><mi>Y</mi><mi>b</mi><mi>a</mi><mi>k</mi><mo>=</mo><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Dbak=temp_D
В то время как temp_D=0
Dbak=temp_D
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>+</mo><mi>w</mi></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow><mo>)</mo></mrow><mo>,</mo></mrow>
<mrow><mi>t</mi><mi>e</mi><mi>m</mi><mi>p</mi><mo>_</mo><mi>D</mi><mo>=</mo><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>/</mo><msup><mn>2</mn><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></msup></mrow><mo>)</mo></mrow></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><mi>Y</mi><mi>b</mi><mi>a</mi><mi>k</mi></mrow>
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Этап 204с, создание индексного вектора для векторного квантования узла решетки D
.
Индекс векторного квантования может быть получен путем использования следующего уравнения создания индексного вектора:
<mrow><mi>k</mi><mo>=</mo><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><msup><mi>G</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup></mrow><mo>)</mo></mrow><mi>mod</mi><msup><mn>2</mn><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></msup></mrow>
8
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
На выходе теперь будет получен индексный вектор k узла решетки D
, G представляет собой порождающую матрицу узла решетки D и имеет следующий вид:
<mrow><mi>G</mi><mo>=</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow>
Этап 205, выполнение кодирования индекса векторного квантования в поддиапазоне кодирования малых битовых значений и окончание этапа.
Как уже описывалось выше, количество битов, распределяемых поддиапазону кодирования малых битовых значений должно соответствовать условию:
1<=region_bit(j)<5.
Выполнение кодирования индекса векторного квантования в поддиапазоне кодирования малых битовых значений включает следующие этапы:
этап 205а, выполнение кодирования по способу Хаффмана индекса векторного квантования в поддиапазоне кодирования малых битовых значений.
Кодирование по способу Хаффмана индекса векторного квантования выполняется в наборе С, охватывающем все 1 поддиапазоны кодирования, в которых количество распределенных битов одному коэффициенту частотного домена меньше определенного порогового значения. Индекс векторного квантования index_b(j,k) каждого 8-мерного вектора в каждом поддиапазоне кодирования получается на основе использования пирамидального решетчатого векторного квантования, где k соответствует k-му 8-мерному вектору в поддиапазоне кодирования j. Осуществление кодирования по способу Хаффмана индекса квантования index_b(j,k) включает следующие сценарии:
а) во всех поддиапазонах кодирования, в которых количество битов, распределенных одному коэффициенту частотного домена, больше 1, меньше 5, и не равно 2, каждые четыре бита в натуральном двоичном коде для каждого индекса векторного квантования выделяются в одну группу, и кодирование по способу Хаффмана осуществляется в этой группе, а сумма количества битов при кодировании по способу Хаффмана для всех этих 4-битовых групп представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
б) во всех поддиапазонах кодирования, в которых количество битов, распределенных одному коэффициенту частотного домена равняется 2, для кодирования каждого индекса квантования 8-мерного пирамидального решетчатого вектора используются 15 битов;
эти 15 битов разбиваются на 3 4-битовые группы и 1 3-битовую группу, и затем осуществляется кодирование данных групп по способу Хаффмана, причем сумма количества затраченных битов для этих 4 групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
в) когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования меньше 127, тогда индекс квантования кодируется 7 битами, которые разбиваются на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
г) когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования равен 127, тогда натуральный двоичный код индекса квантования определяется как "1111 1110", 7 первых 1 разбиваются на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
д) когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования равен 128, тогда натуральный двоичный код индекса квантования определяется как "1111 1111", 7 первых 1 разбиваются на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования.
Способ осуществления кодирования по способу Хаффмана индекса квантования может быть описан следующим псевдокодом:
во всех поддиапазонах кодирования region_bit(j)=1.5 и 2<region_bit(j)<5,
n находится в диапазоне [0, region_bit(j)×8/4-1], увеличивается при длине этапа 1 и выполнении следующего цикла:
пусть index_b(j,k) задает сдвиг вправо на 4*n битов,
Вычисление младших 4 битов tmp для index_b(j,k), то есть Imp=and(index_b(j,k), 15)
Вычисление кодового слова tmp в кодовой книге и количества расходуемых битов:
plvq_codebook(j,k)=plvq_code(tmp+1);
plvq_count(j,k)=plvq_bit_count(tmp+1);
где plvq_codebook(j,k) и plvq_count(j,k) представляют собой, соответственно, кодовое слово и количество затраченных битов при кодировании по способу Хаффмана с использованием кодовой книги k-того 8-мерного вектора j-того поддиапазона; plvq_bit_count и plvq_code выполнение поиска на основе Таблицы 4.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению:
bit_used_huff_all=bit_used_huff_all+plvq_bit_count(tmp+1);
В поддиапазоне кодирования region_bit(j)=2
n находится в диапазоне [0, region_bit(j)×8/4-2], увеличивается при длине этапа 1 и выполнении следующего цикла:
Пусть index_b(j,k) задает сдвиг вправо на 4*n битов,
Вычисление младших 4 битов tmp для index_b(j,k), то есть imp=and(index_b(j,k), 15)
Вычисление кодового слова tmp в кодовой книге и количества расходуемых битов:
plvq_count(j,k)=plvq_bit_count(tmp+1);
plvq_codebook(j,k)=plvq_code(tmp+1);
где plvq_codebook(j,k) и plvq_count(j,k) представляют собой, соответственно, кодовое слово и количество затраченных битов при кодировании по способу Хаффмана с использованием кодовой книги k-того 8-мерного вектора j-того поддиапазона; plvq_bit_count и plvq_code выполнение поиска на основе Таблицы 4.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению:
bit_used_huff_all=bit_used_huff_all+plvq_bit_count(tmp+1);
Ниже рассматривается подлежащее обработке 3-битовое состояние: после index_b(j,k) задает сдвиг вправо на [region_bit(j)×8/4-2]*4 бита,
вычисление младших 3 битов tmp of index_b(j,k'), то есть tmp=and(index_b(j,k), 7)
вычисление кодового слова tmp в кодовой книге и количества расходуемых битов:
plvq_count(j,k)=plvq_bit_count_r2_3(tmp+1);
plvq_codebook(j,k)=plvq_code_r2_3(tmp+1);
где plvq_count(j,k) и plvq_codebook(j,k) представляют собой, соответственно, кодовое слово и количество затраченных битов при кодировании по способу Хаффмана с использованием кодовой книги k-того 8-мерного вектора j-того поддиапазона; plvq_bit_count_r2_3 и plvq_code_r2_3 выполнение поиска на основе Таблицы 5.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению:
bit_used_huff_all=bit_used_huff_all+plvq_bit_count(tmp+1);
В поддиапазоне кодирования region_bit(j)=1
Если index_b(j,k)<127
Вычисление младших 4 битов tmp для index_b(j,k), то есть tmp=and(index_b(j,k), 15)
Вычисление кодовых слов для tmp в кодовой книге и количества расходуемых битов:
plvq_count(j,k)=plvq_bit_count_r1_4(tmp+1);
plvq_codebook(j,k)=plvq_code_r1_4(tmp+1);
где plvq_count(j,k) и plvq_codebook(j,k) представляют собой, соответственно, кодовое слово и количество затраченных битов при кодировании по способу Хаффмана с использованием кодовой книги k-того 8-мерного вектора j-того поддиапазона; plvq_bit_count_r1_4 и plvq_code_r1_4 выполнение поиска на основе Таблицы 6.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению:
bit_used_huff_all=bit_used_huff_all+plvq_bit_count(tmp+1);
Ниже рассматривается подлежащее обработке 3-битовое состояние:
Пусть index_b(j,k) задает сдвиг вправо на 4 бита,
Вычисление младших 3 битов tmp для index_b(j,k), то есть tmp=and(index_b(j,k), 7)
Вычисление кодового слова tmp в кодовой книге и количества расходуемых битов:
plvq_count(j,k)=plvq_bit_count_r1_3(tmp+1);
plvq_codebook(j,k)=plvq_code_r1_3(tmp+1);
где plvq_count(j,k) и plvq_codebook(j,k) представляют собой, соответственно, кодовое слово и количество затраченных битов при кодировании по способу Хаффмана с использованием кодовой книги k-того 8-мерного вектора j-того поддиапазона; кодовая книга plvq_bit_count_r1_3 and plvq_code_r1_3 выполнение поиска на основе Таблицы 7.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению:
bit_used_huff_all=bit_used_huff_all+plvq_bit_count(tmp+1);
Если index_b(j,k)=127
{его двоичное значение равно "1111 1110"
Относительно первых трех "1" и последних четырех "1", следует соответственно выполнять поиск в таблицах по способу Хаффмана, приведенных в Таблице 7 и в Таблице 6,
способ вычислений тот же самый, что и по вышеупомянутому условию для index_b(j,k)<127.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению: всего требуется 8 битов.
Если index_b(j,k)=128
{его двоичное значение равно "1111 1111"
Относительно первых трех "1" и последних четырех "1", следует соответственно выполнять поиск в таблицах по способу Хаффмана, приведенных в Таблице 7 и в Таблице 6, способ вычислений тот же самый, что и по вышеупомянутому условию для index_b(j,k)<127.
Общее количество расходуемых битов после осуществления кодирования по способу Хаффмана подлежит обновлению: всего требуется 8 битов.
Таблица 4Кодовая таблица пирамидального векторного кодирования по способу Хаффмана
Tmp
Plvq_bit count
plvq_code
0
2
0
1
4
6
2
4
1
3
4
5
4
4
3
5
4
7
6
4
13
7
4
10
8
4
11
9
5
30
10
5
25
11
5
18
12
5
9
13
5
14
14
5
2
15
4
15
Таблица 5
Кодовая таблица пирамидального векторного кодирования по способу Хаффмана
Tmp
Plvq_bit_count_r2_3
plvq_code_r2_3
0
1
0
1
4
1
2
4
15
3
5
25
4
3
3
5
3
5
6
4
7
7
5
9
Таблица 6
Кодовая таблица пирамидального векторного кодирования по способу Хаффмана
Tmp
Plvq_bit_count_r1_4
plvq_code_r1_4
0
3
7
1
5
13
2
5
29
3
4
14
4
4
3
5
4
6
6
4
1
7
4
0
8
4
8
9
4
12
10
4
4
11
4
10
12
4
9
13
4
5
14
4
11
15
4
2
Таблица 7
Кодовая таблица пирамидального векторного кодирования по способу Хаффмана
Tmp
Plvq_bit_count_r1_3
plvq_code_r1_3
0
2
1
1
3
0
3
3
2
3
4
7
4
4
15
5
3
6
6
3
4
7
3
3
Когда осуществляется кодирование по способу Хаффмана индексов пирамидального решетчатого векторного квантования во всех поддиапазонах кодирования, используются различные кодовые книги для кодирования индекса векторного квантования в поддиапазоне кодирования в соответствии с количеством битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования.
Этап 205b, вынесение решения об экономии битов при кодировании по способу Хаффмана, и в случае положительного решения использование кодирования по способу Хаффмана индекса квантования, и выполнение этапа 205с, в противном случае выполняется натуральное кодирование индекса квантования.
Согласно этапу 205а в С bit_used_huff_all вычисляется общее количество затраченных битов во всех поддиапазонах кодирования при кодировании по способу Хаффмана индексов квантования, относящихся к 8-мерным векторам. Параметр bit_used_huff_all сравнивается с суммой битов, затраченных во всех поддиапазонах кодирования, в параметре С sum(bit_band_used(j), j∈C), то есть сравнивается с суммой произведений количества коэффициентов частотного домена для всех поддиапазонов кодирования в С, на количество битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования. Если bit_used_huff_all<sum(bit_band_used(j), j∈C), то передаются биты кодированного по способу Хаффмана индекса квантования, и при этом флажок кодирования по способу Хаффмана коэффициента частотного домена Flag_huff_plvq устанавливается в 1; в противном случае осуществляется натуральное кодирование индекса векторного квантования, и флажок кодирования по способу Хаффмана коэффициента частотного домена Flag_huff_plvq устанавливается в 0.
Этап 205с, осуществление изменения распределения битов и повторное выполнение векторного квантования и кодирования в поддиапазоне кодирования, для которого было изменено распределение битов.
Если флажок кодирования по способу Хаффмана коэффициента частотного домена Flag_huff_plvq равняется 0, то распределенные поддиапазону кодирования биты не изменяются. Если флажок кодирования по способу Хаффмана коэффициента частотного домена Flag_huff_plvq равняется 1, то распределенные поддиапазону кодирования биты изменяются с использованием битов, сохраненных при кодировании по способу Хаффмана.
Когда распределенные поддиапазону кодирования биты изменяются, как в настоящем примере, то длина этапа изменения количества битов и длина этапа уменьшения важности после изменения количества битов в поддиапазоне кодирования малых битовых значений равны 0.5; длина этапа увеличения количества битов и длина этапа уменьшения важности после увеличения количества битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений равны 1.
Поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему. Поддиапазон кодирования нулевого бита представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, равняется нулю.
Как видно из Фиг.3, процесс изменения распределения битов в этап в 205с, в частности, включает следующие этапы:
этап 301, вычисление количества битов, сохраняемых при кодировании по способу Хаффмана при diff_huff, пусть count=0:
diff_huff=sum(bit_band_used(j), j∈C)-bit_used_huff_all.
Если diff_huff больше 0, то это соответствует случаю сохранения битов при кодировании по способу Хаффмана, и количество сохраненных битов при кодировании по способу Хаффмана представляет собой количество битов, которое может быть использовано при выполнении изменения распределения битов в поддиапазоне кодирования.
Этап 302, определение поддиапазона кодирования с максимальной важностью во всех поддиапазонах кодирования;
k
определение максимального значения rk(j) в каждом поддиапазоне rk(j)(j=0,…,L-1), представленного в уравнении:
<mrow><msub><mi>j</mi><mi>k</mi></msub><mo>=</mo><munder><mrow><mi>arg</mi><mi>max</mi><mrow><mo>[</mo><mrow><mi>r</mi><mi>k</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow><mo>]</mo></mrow></mrow><mrow><mi>j</mi><mo>=</mo><mn>0,</mn><mo>…</mo><mo>,</mo><mi>L</mi><mo>−</mo><mn>1</mn></mrow></munder></mrow>
k
k
jk
Этап 303, вынесение решения о том, является ли количество распределенных битов в поддиапазоне кодирования с максимальной важностью плюс 1 (region_bit(j)+1) (меньше или равно максимальному количеству кодированных битов, которые могут быть распределены одному коэффициенту частотного домена в поддиапазоне кодирования MaxBit (например, MaxBit=9), и в случае положительного решения переход к этапу 304, а в противном случае выполнение регулирования важности поддиапазона кодирования в соответствии с j самого низкого значения (например, пусть rk()=-100), что соответствует отсутствию необходимости изменения распределения битов в поддиапазоне кодирования, а затем переход к этапу 302.
Если количество битов, распределяемых поддиапазону кодирования с максимальной важностью, достигло максимально возможного количества, важность поддиапазона кодирования устанавливается на самую низкую, и распределенное поддиапазону кодирования количество битов не изменяется.
k
k
Этап 304, вынесение решения о том, является ли значение diff_puff-(region_bit(j)+1)×BandWidth(j)) больше или равно 0, и в случае положительного решения указание о том, что количество сохраненных битов достаточно для выполнения изменения распределения битов в поддиапазоне кодирования, и затем переход к этапу 305; в противном случае завершение процесса изменения распределения битов.
k
Этап 305, вынесение решения о том, является ли количество распределенных битов region_bit(j) равным 0, или большим или равным порогового значения 5, и в случае положительного решения переход к этапу 306, в противном случае переход к этапу 307.
k
k
k
k
k
k
k
Этап 306, изменение количества битов, распределенных поддиапазону кодирования j region_bit(j) для того, чтобы region_bit(j)=region_bit(j)+1, уменьшение значения важности поддиапазона rk(j) для того, чтобы rk(j)=rk(j)-1; пусть отсчет итераций изменения количества распределенных битов станет count=count+1, и повторное выполнение векторного квантования и кодирования по способу Хаффмана в поддиапазоне кодирования jk, и затем обновление значения diff_huff.
k
k
k
k
k
k
k
k
Этап 307, изменение количества битов, распределенных поддиапазону кодирования j region_bit(j) для того, чтобы region_bit(j)=region_bit(j)+0.5; уменьшение значения важности поддиапазона rk(j) для того, чтобы rk(j)=rk(j)-0.5; пусть count=count+1, и повторное выполнение векторного квантования и кодирования по способу Хаффмана в поддиапазоне кодирования j, и затем обновление значения diff_huff.
Повторное выполнение векторного квантования и кодирования в поддиапазоне кодирования, для которого было изменено распределение битов, и выполнение кодирования по способу Хаффмана до тех пор, пока будет сохраняться большее количество битов, чем при натуральном кодировании, сохраненные биты дополнительно используются для изменения распределения битов в поддиапазоне кодирования.
Этап 308, вынесение решение о том, является ли количество отсчетов итераций изменения распределения битов count меньше Maxcount, и в случае положительного решения переход к этапу 302, в противном случае завершение процесса изменения распределения битов.
Приведенное выше значение Maxcount представляет собой наибольшее предельное значения количества итераций изменения распределения битов, определяемое кодированным битовым потоком и частотой дискретизации. В настоящем примере используется значение Maxcount=31.
Этап 206, кодирование индекса векторного квантования в поддиапазоне кодирования больших битовых значений.
Количество битов, распределенных поддиапазону кодирования больших битовых значений j, удовлетворяет условию: 5<=region_bit(j)<=9.
Индексный вектор k={k1, k2, k3, k4, k5, k6, k7, k8} получается после квантования 8-мерного вектора в поддиапазоне кодирования с количеством кодированных битов от 5 до 9, каждая составляющая индексного вектора k подвергается прямому кодированию в соответствии с количеством битов, распределенных одному коэффициенту частотного домена с целью получения кодированных битов вектора.
Из статистических результатов можно видеть, что при условии использования частоты дискретизации 32 кГц и скорости кодового потока 32 кбит/с 96% всех поддиапазонов кодирования будут поддиапазонами кодирования с количеством распределенных битов меньше 5. То есть возможность использования пирамидального решетчатого векторного квантования составляет 96% от всего векторного квантования. Пирамидальное решетчатое векторное квантование играет очень важную роль в настоящем изобретении и использование изменяемой длины этапа распределения битов для распределения битов, где длина этапа распределения битов одного коэффициента частотного домена может минимально регулироваться до половины бита, таким образом улучшая эффективность использования битов. Примененный в настоящем изобретении алгоритм маркирования узла решетки для способа пирамидального решетчатого векторного квантования с малой длиной битового этапа обладает низкой сложностью и занимает мало места при хранении. Кроме того, используется новый закон принятия решения для расширения маркирования кодовой книги при осуществлении сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений, таким образом дополнительно уменьшая сложность способа решетчатого векторного квантования.
2. Способ декодирования
Способ декодирования звука с решетчатым векторным квантованием в настоящем изобретении обратен способу кодирования и включает:
A. Декодирование кодированных битов каждой огибающей амплитуды в подлежащем декодированию битовом потоке получения квантованной составляющей огибающей амплитуды в каждом поддиапазоне кодирования.
В. Выполнение распределения битов в каждый поддиапазон кодирования, разделение поддиапазона кодирования на поддиапазон кодирования малых битовых значений и поддиапазон кодирования больших битовых значений в соответствии с количеством распределенных битов в каждый поддиапазон кодирования, выполнение декодирования, инверсное квантование и инверсная нормализация пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений и выполнение декодирования, инверсное квантование и инверсная нормализация сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений, а также получение коэффициентов частотного домена в поддиапазоне кодирования малых битовых значений и в поддиапазоне кодирования больших битовых значений; где поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему;
перед этапом выполнения распределения битов в каждый поддиапазон кодирования сначала осуществляется вычисление исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в поддиапазоне кодирования и затем выполняется распределение битов каждому коэффициенту частотного домена в поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов. После выполнения распределения битов и перед осуществлением декодирования выполняется изменение распределения битов и поддиапазоне кодирования счетное количество раз в соответствии со значением отсчета итераций изменения распределения битов и важности каждого поддиапазона кодирования на стороне кодирования.
При выполнении декодирования в поддиапазоне кодирования малых битовых значений осуществляется кодирование по способу Хаффмана или прямое декодирование в поддиапазоне кодирования малых битовых значений в соответствии с состоянием флажка кодирования по способу Хаффмана для коэффициента частотного домена на стороне кодирования для получения индекса векторного квантования в поддиапазоне кодирования малых битовых значений и выполнение инверсного пирамидального решетчатого векторного квантования всех индексов векторного квантования с целью получения коэффициента частотного домена в поддиапазоне кодирования; при декодировании в поддиапазоне кодирования больших битовых значений осуществляется прямое натуральное декодирование в поддиапазоне кодирования больших битовых значений для получения индекса векторного квантования в поддиапазоне кодирования больших битовых значений и осуществления инверсного квантования всех индексов векторного квантования при сферическом решетчатом векторном квантовании с целью получения коэффициента частотного домена в поддиапазоне кодирования.
С. Выполнение обратного модифицированного дискретного косинусного преобразования (ОМДКП) частотного коэффициента после шумового заполнения для получения конечного звукового сигнала.
На Фиг.4 приводится структурная блок-схема способа декодирования звука с решетчатым векторным квантованием в соответствии с примером реализации настоящего изобретения. Как видно из Фиг.4, данный способ предусматривает следующие этапы.
Этап 401, декодирование кодированных битов каждой огибающей амплитуды для получения показателя квантования огибающей амплитуды в каждом поддиапазоне кодирования.
q
Кадр закодированных битов извлекается из поступающего со стороны кодирования закодированного битового потока (то есть поступающего от демультиплексора битового потока DeMUX); после извлечения кодированных битов сначала выполняется декодирование дополнительной информации, а затем закодированные биты каждой огибающей амплитуды в кадре подвергаются декодированию по способу Хаффмана или прямому декодированию в соответствии со значением огибающей амплитуды флажка кодирования по способу Хаффмана Flag_huff_rms с целью получения показателя квантования огибающей амплитуды в каждом поддиапазоне кодирования Th(j) j=0,…,L-1.
Этап 402, выполнение распределения битов в каждом поддиапазоне кодирования.
В каждом поддиапазоне кодирования в соответствии с показателем квантования огибающей амплитуды вычисляется исходное значение важности каждого поддиапазона кодирования, и это значение важности поддиапазона кодирования используется для выполнения распределения битов в каждый поддиапазон кодирования с целью получения количества битов, распределенных данному поддиапазону кодирования; распределение количества битов на стороне декодирования и на стороне кодирования одинаковое. При распределении битов длина этапа распределения битов и длина этапа уменьшения важности в поддиапазоне кодирования после распределения битов могут изменяться.
После выполнения указанного выше распределения битов процесс завершается, выполняется изменение распределения битов в поддиапазоне кодирования счетное количество раз в соответствии со значением отсчета итераций изменения распределения битов и важности каждого поддиапазона кодирования на стороне кодирования, и затем процесс распределения битов завершается.
Во время распределения битов и выполнения их изменения длина этапа распределения битов и длина этапа изменения распределения битов равны 1 биту в случае распределения битов поддиапазону кодирования с количеством распределенных битов 0, а длина этапа уменьшения важности после распределения битов и изменения распределения битов равна 1. Длина этапа распределения битов и длина этапа изменения распределения битов равны 0,5 бита в случае дополнительного распределения битов поддиапазону кодирования с количеством распределенных битов больше 0 и меньше определенного порогового значения, а длина этапа уменьшения важности после распределения битов и изменения распределения битов также равна 0.5. Длина этапа распределения битов и длина этапа изменения распределения битов равны 1 биту в случае дополнительного распределения битов поддиапазону кодирования с количеством распределенных битов больше порогового значения или равным ему, а длина этапа уменьшения важности после распределения битов и изменения распределения битов также равна 1.
Этап 403, разделение всех поддиапазонов кодирования на поддиапазоны кодирования малых битовых значений и поддиапазоны кодирования больших битовых значений в соответствии с количеством битов, распределенных поддиапазону кодирования, то есть вынесение решения о том, является ли количество битов, распределенных поддиапазону кодирования j region_bit(j) меньше предварительно установленного порогового значения, и в случае положительного решения поддиапазон кодирования представляет собой поддиапазон кодирования малых битовых значений, переход к этапу 404, в противном случае поддиапазон кодирования представляет собой поддиапазон кодирования больших битовых значений, переход к этапу 405.
8
Этап 404, декодирование поддиапазона кодирования малых битовых значений для получения индекса пирамидального решетчатого векторного квантования и вычисление узла решетки D, соответствующего индексу пирамидального решетчатого векторного квантования, а также получение коэффициента частотного домена в поддиапазоне кодирования малых битовых значений после выполнения инверсной нормализации; переход к этапу 406.
Выполнение декодирования по способу Хаффмана или прямого натурального декодирования в поддиапазоне кодирования малых битовых значений в соответствии с дополнительной информацией для получения индекса пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений.
Если Flag_huff_plvq=0, прямое выполнение натурального декодирования для получения индекса m-того векторного квантования в поддиапазоне кодирования малых битовых значений j index_b(j,m); если Flag_huff_plvq=1, индекс m-того вектора квантования в поддиапазоне кодирования малых битовых значений j index_b(j,m) получается в соответствии с кодовой таблицей для кодирования по способу Хаффмана, согласно количеству битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования.
Когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, и если значение натурального двоичного кода индекса квантования меньше "1111 111", тогда индекс квантования вычисляется в соответствии со значением натурального двоичного кода; если значение натурального двоичного кода индекса квантования равно "1111 111", тогда постоянно считывается следующий бит, причем если следующий бит - 0, тогда значение индекса квантования равно 127, если следующий бит - 1, тогда значение индекса квантования равно 128.
8
Процесс вычисления узла решетки D, соответствующего индексу пирамидального решетчатого векторного квантования, представляет собой процесс, обратный процессу векторного квантования, и данный процесс инверсного квантования пирамидального решетчатого векторного квантования осуществляется следующим образом.
Этап 404а, определение энергетической пирамидальной поверхности, на которой располагается индекс квантования, и метки индекса квантования на этой энергетической пирамидальной поверхности.
Осуществление поиска kk для энергии пирамидальной поверхности от 2 до LargeK(region_bit(j)) при выполнении следующего неравенства:
N(8,kk)<=index_b(j,m)<N(8,kk+2),
8
8
8
если такое значение kk находится, тогда K=kk представляет энергию пирамидальной поверхности, где узел решетки D соответствует найденному индексу квантования index_b(j,m), b=index_b(j,m)-N(8,kk) представляет собой метку индекса узла решетки D на той пирамидальной поверхности, на которой располагается узел решетки D.
8
если такое значение kk не находится, тогда энергия пирамидальной поверхности узла решетки D соответствует индексу квантования index_b(j,m) К=0, а метка индекса b=0.
8
этап 404b, характерные этапы по нахождению решения для вектора Y=(y1, y2, у3, у4, у5, у6, у7, у8) узла решетки D, чья энергия пирамидальной поверхности К и метка индекса b находятся следующим образом:
этап 1, пусть Y=(0,0,0,0,0,0,0,0), xb=0, i=1, k=K, l=8;
этап 2, если b=xb, тогда yi=0; переход к этапу 6;
этап 3, если b<xb+N(l-1, k), тогда yi=0, и переход к этапу 5;
иначе, xb=xb+N(l-1, k); пусть j=1;
этап 4, если b<xb+2*N(l-1, k-j), тогда
если xb<=b<xb+N(l-1, k-j), тогда yi=j;
если b>=xb+N(l-1, k-j), тогда yi=-j, xb=xb+N(l-1, k-j);
иначе, xb=xb+2*N(l-1, k-j), j=j+1; продолжение выполнения этапа;
этап 5, обновление значения k=k-|yi], l=l-1, i=i+l, если k>0, тогда переход к этапу 2;
этап 6, если k>0, тогда y8=k-|yi|, Y=(y1, y2,…,y8) это полученный узел решетки.
8
Этап 404с, выполнение инверсного регулирования энергии найденного значения узла решетки D для получения
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><mrow><mo>(</mo><mrow><mi>Y</mi><mo>+</mo><mi>a</mi></mrow><mo>)</mo></mrow><mo>/</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi><mrow><mo>(</mo><mrow><mi>i</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi></mrow><mo>)</mo></mrow></mrow>
-6
-6
-6
-6
-6
-6
-6
-6
где а=(2, 2, 2, 2, 2, 2, 2, 2), scale{index} представляет собой коэффициент масштабирования, который может быть найден в Таблице 2.
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Этап 404d, осуществление инверсной нормализационной обработки
с целью получения коэффициента частотного домена m-того вектора в поддиапазоне кодирования j, восстановленного на стороне декодирования:
<mrow><msubsup><mover accent="true"><mi>X</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msup><mn>2</mn><mrow><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mo stretchy="false">(</mo><mi>j</mi><mo stretchy="false">)</mo><mo>/</mo><mn>2</mn></mrow></msup><mo>⋅</mo><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
q
где Th(j) представляет собой показатель степени квантования огибающей амплитуды в j-том поддиапазоне кодирования.
Этап 405, выполнение декодирования, инверсного квантования и инверсной нормализации сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений с целью получения коэффициента частотного домена в поддиапазоне кодирования больших битовых значений.
Прямое выполнение натурального декодирования кодированных битов в поддиапазоне кодирования больших битовых значений для получения m-того индексного вектора k для старших кодированных битов j. Процесс осуществления инверсного квантования индексного вектора сферического решетчатого векторного квантования действительно обратен процессу квантования, и ниже приводятся его характерные этапы:
8
этап 405а, вычисление значения x=k*G, и вычисление значения ytemp=x/(2^(region_bit(j)); где k представляет собой индексный вектор векторного квантования, region_bit(j) представляет собой количество битов, распределенных одному коэффициенту частотного домена в j-том поддиапазоне кодирования; G представляет собой порождающую матрицу узла решетки D и имеет следующий вид:
<mrow><mi>G</mi><mo>=</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow>
D8
этап 405b, вычисление y=x-ƒ(ytemp)*(2^region_bit(f));
8
этап 405с, выполнение инверсной регулировки энергии найденного значения узла решетки D для получения
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><mi>y</mi><mo>*</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi><mrow><mo>(</mo><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow><mo>)</mo></mrow><mo>/</mo><mrow><mo>(</mo><mrow><msup><mn>2</mn><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></msup></mrow><mo>)</mo></mrow><mo>+</mo><mi>a</mi></mrow>
-6
-6
-6
-6
-6
-6
-6
-6
где а=(2, 2, 2, 2, 2, 2, 2, 2), scale(region_bit(j)) представляет собой коэффициент масштабирования и может быть найден в Таблице 3.
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
этап 405d, выполнение инверсной нормализационной обработки
с целью получения коэффициента частотного домена m-того вектора в поддиапазоне кодирования j, восстановленного на стороне декодирования:
<mrow><msubsup><mover accent="true"><mi>X</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msup><mn>2</mn><mrow><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mo stretchy="false">(</mo><mi>j</mi><mo stretchy="false">)</mo><mo>/</mo><mn>2</mn></mrow></msup><mo>⋅</mo><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
q
где Th(j) представляет собой показатель степени квантования огибающей амплитуды в j-том поддиапазоне кодирования.
Этап 406, упорядочение коэффициентов частотного домена всех поддиапазонов кодирования в соответствии со значением частоты, шумовым заполнением и расширением полосы частот поддиапазонов с нераспределенными кодированными битами в процессе кодирования или поддиапазонов, утраченных в процессе передачи.
Этап 407, выполнение обратного модифицированного дискретного косинусного преобразования (ОМДКП) коэффициента частотного домена после осуществления шумового заполнения и расширения полосы частот с целью получения конечного звукового сигнала.
3. Система кодирования
Для реализации указанного выше способа декодирования в настоящем изобретении дополнительно предусматривается наличие системы кодирования звука с решетчатым векторным квантованием, как видно из Фиг.5, эта система включает узел модифицированного дискретного косинусного преобразования (МДКП) 51, узел вычисления огибающей амплитуды 52, узел квантования и кодирования огибающей амплитуды 53, узел распределения битов 54, узел нормализационной обработки 55, узел классификационного решетчатого векторного квантования и кодирования 56 и мультиплексор битового потока (MUX) 57. Причем
узел МДКП предназначен для выполнения МДКП звукового сигнала с с получением коэффициентов частотного домена;
узел вычисления огибающей амплитуды соединяется с узлом МДКП и предназначается для разделения полученных узлом МДКП в нескольких поддиапазонах кодирования коэффициентов частотного домена и вычисления значения огибающей амплитуды в каждом поддиапазоне кодирования;
при выполнении разделения на поддиапазоны кодирования узел вычисления огибающей амплитуды осуществляет разделение коэффициентов частотного домена после выполнения модифицированного дискретного косинусного преобразования на несколько поддиапазонов кодирования с однородными интервалами, или их разделение на несколько поддиапазонов кодирования с неоднородными интервалами в соответствии с характеристиками слухового восприятия.
Узел квантования и кодирования огибающей амплитуды соединяется с узлом вычисления огибающей амплитуды и предназначен для квантования и кодирования значения огибающей амплитуды в каждом поддиапазоне кодирования с целью получения кодированных битов огибающей амплитуды в каждом поддиапазоне кодирования.
Узел распределения битов соединяется с узлом квантования и кодирования огибающей амплитуды и предназначается для выполнения распределения битов с целью получения количества кодированных битов, распределенных каждому коэффициенту частотного домена в каждом поддиапазоне кодирования.
В частности, узел распределения битов включает соединенные друг с другом модуль вычисления важности и модуль распределения битов, где
модуль вычисления важности предназначен для вычисления исходного значения важности каждого поддиапазона кодирования в соответствии со значением огибающей амплитуды в поддиапазоне кодирования;
модуль распределения битов предназначен для выполнения распределения битов каждому коэффициенту частотного домена в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов.
q
2
Исходное значение важности вычисляется согласно оптимальному битовому значению при условии получения максимального отношения квантованного сигнала к шуму и коэффициенту масштабирования в соответствии с характеристиками слухового восприятия, или показателя степени квантования Th(j) или значения [µ×log[Th(j)]+ν] в каждом поддиапазоне кодирования огибающей амплитуды, где µ>0, a µ и ν представляют собой действительные числа.
Модуль вычисления важности сконфигурирован таким образом, чтобы при вычислении исходного значения важности сначала осуществлялось вычисление среднего количества используемых битов одного коэффициента частотного домена; и затем вычислялось оптимальное битовое значение при условии получения максимального отношения квантованного сигнала к шуму в соответствии с теорией передачи информации; после чего вычислялось исходное значение важности каждого поддиапазона кодирования при распределении битов в соответствии со средним количеством используемых битов и оптимальной битовой величиной;
модуль распределения битов предназначен для выполнения распределения битов в каждом поддиапазоне кодирования в соответствии с важностью каждого поддиапазона кодирования, увеличения количества кодированных битов каждого коэффициента частотного домена в поддиапазоне кодирования с максимальной важностью, и уменьшения важности поддиапазона кодирования до тех пор, пока сумма количества битов, используемых всеми поддиапазонами кодирования, не будет соответствовать установленному максимальному значению при условии ограничения количества битов.
Когда модуль изменения распределенных битов выполняет изменение распределения битов, то длина этапа изменения распределенных битов и длина этапа уменьшения важности после изменения распределения битов поддиапазону кодирования малых битовых значений меньше длины этапа изменения распределенных битов и длины этапа уменьшения важности после изменения распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений. Например, когда модуль распределения битов выполняет распределение битов, то длина этапа распределения битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования малых битовых значений равна 0,5; длина этапа распределения битов и длина этапа уменьшения важности после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений равна 1.
Узел нормализационной обработки соединяется с узлом МДКП и предназначается для использования при осуществлении квантования значения огибающей амплитуды в поддиапазоне кодирования с целью выполнения нормализационной обработки всех коэффициентов частотного домена в каждом поддиапазоне кодирования.
Узел классификационного решетчатого векторного квантования и кодирования соединяется с узлом нормализационной обработки и узлом распределения битов и предназначается для выполнения квантования и кодирования нормализованных подлежащих квантованию векторов в поддиапазоне кодирования малых битовых значений и в поддиапазоне кодирования больших битовых значений, соответственно, для пирамидального решетчатого векторного квантования и сферического решетчатого векторного квантования, с целью получения кодированных битов коэффициента частотного домена; причем поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, а поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему.
Мультиплексор битового потока (MUX) соединяется с узлом квантования и кодирования огибающей амплитуды и узлом классификационного решетчатого векторного квантования и кодирования, и предназначается для мультиплексирования кодированных битов в каждом поддиапазоне кодирования и кодированных битов коэффициентов частотного домена, и передачи их на сторону декодирования.
Узел классификационного решетчатого векторного квантования и кодирования подробно описывается со ссылкой на Фиг.6:
как видно из Фиг.6, узел классификационного решетчатого векторного квантования и кодирования включает классификационный обрабатывающий модуль 61, модуль пирамидального решетчатого векторного квантования 62, модуль сферического решетчатого векторного квантования 63, модуль вынесения решения о типе кодирования 64, модуль кодирования по способу Хаффмана 65, модуль натурального кодирования 66 и модуль изменения распределенных битов 67, причем
классификационный обрабатывающий модуль соединяется с узлом нормализационной обработки и предназначен для группирования нормализованных коэффициентов частотного домена с целью создания 8-мерного подлежащего квантованию вектора и передачи нормализованного подлежащего квантованию вектора из поддиапазона кодирования малых битовых значений в модуль пирамидального решетчатого векторного квантования, а также передачи нормализованного подлежащего квантованию вектора из поддиапазона кодирования больших битовых значений в модуль сферического решетчатого векторного квантования для обработки;
модуль пирамидального решетчатого векторного квантования соединяется с классификационным обрабатывающим модулем и предназначен для выполнения пирамидального решетчатого векторного квантования нормализованного подлежащего квантованию вектора в каждом поддиапазоне кодирования малых битовых значений;
модуль пирамидального решетчатого векторного квантования включает первый субмодуль регулирования энергии 621, первый субмодуль квантования узла решетки 622, первый субмодуль настройки энергии 623 и субмодуль вычисления индекса квантования 624, причем
первый субмодуль регулирования энергии предназначен для выполнения регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования;
первый субмодуль регулирования энергии дополнительно предназначен для осуществления при выполнении регулирования энергии 8-мерного подлежащего квантованию вектора первичного поиска в предшествующей Таблице 2 последовательного номера в кодовой книге (Index) и коэффициента масштабирования энергии (scale), соответствующих количеству битов (region_bit(j)), распределенных одному коэффициенту частотного домена в поддиапазоне кодирования j, где располагается 8-мерный подлежащий квантованию вектор; и затем выполнения регулирования энергии подлежащего квантованию вектора в соответствии со следующим уравнением:
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup><mo>=</mo><mrow><mo>(</mo><mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup><mo>−</mo><mi>a</mi></mrow><mo>)</mo></mrow><mo>*</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi><mrow><mo>(</mo><mrow><mi>i</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi></mrow><mo>)</mo></mrow></mrow>
<mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup></mrow>
-6
-6
-6
-6
-6
-6
-6
-6
где
представляет собой m-й нормализованный 8-мерный подлежащий квантованию вектор в поддиапазоне кодирования j,
представляет собой 8-мерный подлежащий квантованию вектор после осуществления регулирования энергии
, a=(2, 2, 2, 2, 2, 2, 2, 2);
8
первый субмодуль квантования узла решетки соединяется с первым субмодулем регулирования энергии и предназначается для квантования 8-мерного подлежащего квантованию вектора для его отображения на узел решетки D;
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
8
при осуществлении решетчатого квантования первый субмодуль квантования узла решетки выполняет квантование 8-мерного вектора
для его отображения на узел решетки D
с использованием следующего уравнения:
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mrow><mi>j</mi><mo>,</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi></mrow><mi>m</mi></msubsup></mrow><mo>)</mo></mrow></mrow>
D8
8
где ƒ(•) представляет собой оператор квантования для отображения определенного 8-мерного вектора на узел решетки D;
8
8
8
8
8
8
8
первый субмодуль настройки энергии соединяется с первым субмодулем квантования узла решетки и предназначен для сравнения энергии узла решетки D с закодированным в кодовой книге максимальным пирамидальным поверхностным энергетическим радиусом, и если энергия узла решетки D меньше максимального пирамидального поверхностного энергетического радиуса или равна ему, передачи сообщения на субмодуль вычисления индекса квантования о необходимости вычисления индекса квантования узла решетки D в кодовой книге; если энергия узла решетки D больше максимального пирамидального поверхностного энергетического радиуса, осуществления усечения энергии отрегулированного подлежащего квантованию вектора в поддиапазоне кодирования, и передачи сообщения на первый субмодуль квантования узла решетки для усечения энергии до тех пор, пока энергия квантованного узла решетки энергетически связанного подлежащего квантованию вектора не станет больше максимального пирамидального поверхностного энергетического радиуса, и одновременно постоянного добавления энергии энергетически связанному подлежащему квантованию вектору, передачи сообщения на первый субмодуль квантования узла решетки с целью осуществления квантования подлежащего квантованию вектора с добавленной энергией для его отображения на узел решетки D до тех пор, пока энергия узла решетки D, до которой квантуется подлежащий квантованию вектор с добавленной энергией, не станет больше максимального пирамидального поверхностного энергетического радиуса, и передачи сообщения на субмодуль вычисления индекса квантования с целью вычисления индекса квантования последнего узла решетки D, чья энергия не больше максимального пирамидального поверхностного энергетического радиуса в кодовой книге;
8
модуль вычисления индекса квантования соединяется с первым субмодулем настройки энергии и предназначается для вычисления индекса квантования узла решетки D в кодовой книге в соответствии с сообщением первого субмодуля настройки энергии.
8
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Субмодуль вычисления индекса квантования предназначен для осуществления при вычислении индекса квантования узла решетки D
в кодовой книге, маркирования узлов решетки на каждой пирамидальной поверхности в соответствии с амплитудой энергии пирамидальной поверхности и затем выполнения стандартного маркирования узлов решетки на всех пирамидальных поверхностях, причем стандартная метка представляет собой индекс квантования узла решетки D
в кодовой книге.
Модуль сферического решетчатого векторного квантования соединяется с классификационным обрабатывающим модулем и предназначается для выполнения сферического решетчатого векторного квантования нормализованного подлежащего квантованию вектора в поддиапазоне кодирования больших битовых значений; причем модуль сферического решетчатого векторного квантования включает второй субмодуль регулирования энергии 631, второй субмодуль квантования узла решетки 632, субмодуль вынесения решения о наличии нулевого векторного состояния 633, второй субмодуль настройки энергии 634 и субмодуль вычисления индексного вектора 635, при этом
второй субмодуль регулирования энергии предназначен для выполнения регулирования энергии 8-мерного подлежащего квантованию вектора в поддиапазоне кодирования;
<mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup></mrow>
при выполнении регулирования энергии 8-мерного подлежащего квантованию вектора второй субмодуль регулирования энергии сначала выполняет поиск коэффициента масштабирования энергии scale(region _bit{j)) в соответствии с количеством битов region_bit(j), распределенных одному коэффициенту частотного домена в поддиапазоне кодирования j, где располагается подлежащий квантованию вектор
; затем он выполняет регулирование энергии подлежащего квантованию вектора
в соответствии со следующим уравнением:
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><mi>β</mi><mrow><mo>(</mo><mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup><mo>−</mo><mi>a</mi></mrow><mo>)</mo></mrow></mrow>
<mrow><msubsup><mi>Y</mi><mi>j</mi><mi>m</mi></msubsup></mrow>
-6
-6
-6
-6
-6
-6
-6
-6
где
представляет собой m-тый нормализованный 8-мерный подлежащий квантованию вектор в поддиапазоне кодирования j, а=(2, 2, 2, 2, 2, 2, 2, 2),
a scale(region_bit(j)) представляет собой коэффициент масштабирования энергии в том случае, когда количество битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования, равно region_bit(j), а соответствующую взаимосвязь можно с использованием Таблицы 3;
8
второй субмодуль квантования узла решетки соединяется со вторым субмодулем регулирования энергии и предназначается для квантования 8-мерного подлежащего квантованию вектора с целью его отображения на узел решетки D;
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
8
второй субмодуль квантования узла решетки осуществляет преобразование m-того подлежащего квантованию вектора
в поддиапазоне кодирования j для его отображения на узел решетки D
с использованием следующего уравнения:
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msub><mi>ƒ</mi><mi>D</mi></msub><msub><mrow /><mn>8</mn></msub><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>^</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow><mo>)</mo></mrow><mo>;</mo></mrow>
8
8
8
8
8
region_bit(j)
субмодуль вынесения решения о наличии нулевого векторного состояния соединяется со вторым субмодулем квантования узла решетки и предназначен для вынесения решения о том, соответствует ли узел решетки D нулевому векторному состоянию, и в случае такого соответствия передачи сообщения на субмодуль вычисления индексного вектора с целью вычисления индексного вектора узла решетки D; а в случае несоответствия - передачи сообщения на второй субмодуль настройки энергии с целью настройки энергии подлежащего квантованию вектора; наличие нулевого векторного состояния вызывает деление полученного квантованием значения узла решетки D на 2 в степени количества распределенных битов 2 и затем создание узла решетки D, причем созданный узел решетки D представляет собой нулевой вектор, где region_bit(j) представляет собой количество битов, распределенных одному коэффициенту домена частоты в j-том поддиапазоне кодирования;
8
8
8
второй субмодуль настройки энергии соединяется с субмодулем вынесения решения о наличии нулевого векторного состояния и вторым субмодулем квантования узла решетки и предназначен для выполнения усечения значения энергии подлежащего квантованию вектора, и передачи сообщения на второй субмодуль квантования узла решетки с целью квантования энергетически отрегулированного подлежащего квантованию вектора для его отображения на узел решетки D до достижения соответствия нулевому векторному состоянию; сохранение множественного значения w самого подлежащего квантованию вектора, добавление сохраненного множественного значения w к энергетически связанному подлежащему квантованию вектору, и передачи сообщения на второй субмодуль квантования узла решетки с целью квантования энергетически отрегулированного подлежащего квантованию вектора для его отображения на узел решетки D до достижения соответствия нулевому векторному состоянию; и передачи сообщения на субмодуль вычисления индексного вектора с целью вычисления нового индексного вектора узла решетки D, соответствующего нулевому векторному состоянию;
8
субмодуль вычисления индексного вектора соединяется с субмодулем вынесения решения о наличии нулевого векторного состояния и вторым субмодулем настройки энергии и предназначен для вычисления индекса квантования узла решетки D в кодовой книге в соответствии с полученными сообщениями из субмодуля вынесения решения о наличии нулевого векторного состояния и второго субмодуля настройки энергии.
8
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
Субмодуль вычисления индексного вектора вычисляет индекс векторного квантования k m-ого векторного квантования для отображения на узел решетки D
в j-м поддиапазоне кодирования в соответствии со следующим уравнением:
<mrow><mi>k</mi><mo>=</mo><mrow><mo>(</mo><mrow><msubsup><mover accent="true"><mi>Y</mi><mo>˜</mo></mover><mi>j</mi><mi>m</mi></msubsup><msup><mi>G</mi><mrow><mo>−</mo><mn>1</mn></mrow></msup></mrow><mo>)</mo></mrow><mi>mod</mi><msup><mn>2</mn><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></msup></mrow>
где region_bit(j) представляет собой количество битов, распределенных одному коэффициенту частотного домена в j-м поддиапазоне кодирования; G представляет
8
собой порождающую матрицу узла решетки D и имеет следующий вид:
<mrow><mi>G</mi><mo>=</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow>
Модуль вынесения решения о типе кодирования соединяется с модулем пирамидального решетчатого векторного квантования и предназначается для вынесения решения о том, является ли общее количество расходуемых битов для кодированных по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений меньше общего количества битов, требуемых для выполнения натурального кодирования индексов квантования всех поддиапазонов кодирования малых битовых значений, и в случае положительного решения передачи сообщения на модуль кодирования по способу Хаффмана и модуль изменения распределенных битов; в противном случае выполняется передача сообщения на модуль натурального кодирования.
Модуль кодирования по способу Хаффмана предназначен для выполнения кодирования по способу Хаффмана индекса квантования в поддиапазоне кодирования малых битовых значений, и установки флажка кодирования коэффициента частотного домена по способу Хаффмана в состояние, соответствующее использованию кодирования по способу Хаффмана.
Когда модуль кодирования по способу Хаффмана выполняет соответствующее кодирование индексов квантования всех поддиапазонов кодирования малых битовых значений,
во всех поддиапазонах кодирования, в которых количество битов, распределенных одному коэффициенту частотного домена, больше 1, меньше 5 и не равно 2, каждые четыре бита в натуральном двоичном коде для каждого индекса векторного квантования выделяются в одну группу, и кодирование по способу Хаффмана осуществляется для этой группы, а сумма количества битов при кодировании по способу Хаффмана для всех этих 4-битовых групп представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
во всех поддиапазонах кодирования, в которых количество битов, распределенных одному коэффициенту частотного домена равняется 2, для кодирования каждого индекса квантования 8-мерного пирамидального решетчатого вектора используются 15 битов, и эти 15 битов разбиваются на 3 4-битовые группы и 1 3-битовую группу, и затем осуществляется кодирование данных групп по способу Хаффмана, причем сумма количества затраченных битов для этих 4 групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования меньше 127, тогда индекс квантования кодируется 7 битами, которые разбиваются на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования равен 127, тогда натуральный двоичный код индекса квантования определяется как "1111 1110", 7 первых 1 разбиваются на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования;
когда количество битов, распределенных одному коэффициенту частотного домена поддиапазона кодирования, равно 1, то если индекс квантования равен 128, тогда натуральный двоичный код индекса квантования определяется как "1111 1111", 7 первых 1 разбиваются на 1 3-битовую группу и 1 4-битовую группу, и осуществляется кодирование по способу Хаффмана, соответственно, этих двух групп, причем сумма количества затраченных битов для этих двух групп при кодировании по способу Хаффмана представляет собой количество битов, затраченных при кодировании по способу Хаффмана индекса квантования.
Когда осуществляется кодирование по способу Хаффмана индексов квантования всех поддиапазонов кодирования малых битовых значений, для кодирования индексов векторного квантования в поддиапазоне кодирования используются различные кодовые книги в соответствии с количеством битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования.
Модуль натурального кодирования предназначен для выполнения натурального кодирования индекса квантования в поддиапазоне кодирования малых битовых значений, и индексного вектора в поддиапазоне кодирования больших битовых значений.
Модуль изменения распределенных битов предназначен для использования битов, сохраненных при кодировании по способу Хаффмана, для изменения количества распределенных битов в поддиапазоне кодирования, и передачи сообщения на классификационный обрабатывающий модуль с целью классификации поддиапазонов кодирования по количеству подлежащих изменению распределенных битов, и затем повторного выполнения векторного квантования и кодирования.
При выполнении распределения битов модуль изменения распределенных битов выполняет поиск поддиапазона кодирования с максимальной важностью среди всех поддиапазонов кодирования в том случае, если количество распределенных данному поддиапазону кодирования битов достигло максимального значения битов, которое может распределяться поддиапазону кодирования, выполняет регулировку важности наименее важного поддиапазона кодирования, и не может дальше изменять количество распределенных битов поддиапазону кодирования, в противном случае он выполняет изменение распределения битов для поддиапазона кодирования с максимальной важностью;
при изменении распределения битов, модуль изменения распределенных битов распределяет 1 бит поддиапазону кодирования с количеством распределенных битов 0 и выполняет уменьшение важности на 1 после распределения битов; он выполняет распределение 0,5 бита поддиапазону кодирования с количеством распределенных битов больше 0 и меньше 5, и уменьшение важности на 0,5 после распределения битов; он выполняет распределение 1 бита поддиапазону кодирования с количеством распределенных битов больше 5 и уменьшение важности на 1 после распределения битов.
После каждого случая изменения количества распределенных битов модулем изменения распределенных битов происходит увеличение на 1 отсчета итераций изменения количества распределенных битов, и если значение отсчета итераций изменения количества распределенных битов достигло предустановленной верхней границы, или если количество битов, которое может использоваться, меньше количества битов, требуемого для изменения количества распределенных битов, происходит окончание процесса изменения количества распределенных битов.
Для мультиплексора последовательность мультиплексирования и упаковки закодированных битов следующая: флажок кодирования по способу Хаффмана огибающей амплитуды, флажок кодирования по способу Хаффмана коэффициента частотного домена, количество итераций изменения распределения битов, кодированный бит огибающей амплитуды, кодированный бит коэффициента частотного домена.
4. Система декодирования
Для реализации указанного выше способа декодирования в настоящем изобретении дополнительно предусматривается наличие системы декодирования звука с решетчатым векторным квантованием, и, как видно из Фиг.7, эта система включает демультиплексор битового потока (DeMUX) 71, узел декодирования огибающей амплитуды поддиапазона кодирования 72, узел распределения битов 73, узел декодирования коэффициента частотного домена 74, узел инверсного классификационного решетчатого векторного квантования 75, узел инверсной нормализационной обработки 76, узел шумового заполнения 77 и узел обратного модифицированного дискретного косинусного преобразования (ОМДКП) 78, причем
демультиплексор битового потока (DeMUX) предназначен для отделения вспомогательной информации, кодированных битов огибающей амплитуды и кодированных битов доменного коэффициента от подлежащего декодированию битового потока;
узел декодирования огибающей амплитуды соединяется с демультиплексором битового потока и предназначен для декодирования кодированных битов огибающей амплитуды с выхода демультиплексора битового потока с целью получения огибающей амплитуды показателя квантования в каждом поддиапазоне кодирования;
узел распределения битов соединяется с узлом декодирования огибающей амплитуды поддиапазона кодирования и предназначается для выполнения распределения битов с целью получения количества кодированных битов, распределенных каждому коэффициенту частотного домена в каждом поддиапазоне кодирования;
узел распределения битов включает модуль вычисления важности, модуль распределения битов и модуль изменения распределенных битов, причем
модуль вычисления важности предназначен для вычисления исходного значения важности каждого поддиапазона кодирования в соответствии с поддиапазоном кодирования значения огибающей амплитуды;
модуль распределения битов предназначен для выполнения распределения битов каждому коэффициенту частотного домена в каждом поддиапазоне кодирования согласно исходному значению важности каждого поддиапазона кодирования, причем во время распределения битов может изменяться длина этапа распределения битов и длина этапа уменьшения важности после распределения битов;
модуль изменения распределенных битов предназначен для выполнения изменения распределенных битов в поддиапазоне кодирования счетное количество раз после выполнения распределения битов в соответствии со значением отсчета итераций изменения количества распределенных битов и важностью каждого поддиапазона кодирования на стороне кодирования.
Когда модуль распределения битов выполняет распределения битов, то длина этапа распределения битов и длина этапа уменьшения важности после распределения битов в поддиапазоне кодирования малых битовых значений меньше длины этапа распределения битов и длины этапа уменьшения важности после распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений.
Когда модуль изменения распределенных битов выполняет изменение распределения битов, то длина этапа изменения распределенных битов и длина этапа уменьшения важности после изменения распределения битов поддиапазону кодирования малых битовых значений меньше длины этапа изменения распределенных битов и длины этапа уменьшения важности после изменения распределения битов поддиапазону кодирования нулевого бита и поддиапазону кодирования больших битовых значений.
Узел декодирования коэффициента частотного домена соединяется с узлом декодирования огибающей амплитуды и узлом распределения битов и предназначается для осуществления декодирования поддиапазона кодирования малых битовых значений с целью получения индекса квантования в поддиапазоне кодирования малых битовых значений; и для осуществления декодирования поддиапазона кодирования больших битовых значений с целью получения индексного вектора в поддиапазоне кодирования больших битовых значений, где поддиапазон кодирования малых битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, меньше предварительно установленного порогового значения, поддиапазон кодирования больших битовых значений представляет собой поддиапазон кодирования, в котором количество битов, распределенных одному коэффициенту частотного домена, больше предварительно установленного порогового значения или равно ему;
узел декодирования коэффициента частотного домена осуществляет при выполнении декодирования в поддиапазоне кодирования малых битовых значений кодирование по способу Хаффмана в поддиапазоне кодирования малых битовых значений в соответствии с флажком кодирования по способу Хаффмана коэффициента частотного домена на стороне кодирования или прямое декодирование поддиапазона кодирования малых битовых значений с целью получения индекса векторного квантования в поддиапазоне кодирования малых битовых значений; при выполнении декодирования в поддиапазоне кодирования больших битовых значений он выполняет прямое декодирование в поддиапазоне кодирования больших битовых значений с целью получения индекса векторного квантования в поддиапазоне кодирования больших битовых значений.
Узел декодирования коэффициента частотного домена при выполнении декодирования по способу Хаффмана в поддиапазоне кодирования малых битовых значений в том случае, когда количество битов, распределенных одному коэффициенту частотного домена в поддиапазоне кодирования, равно 1, если значение натурального двоичного кода индекса квантования меньше "1111 1111", вычисляет индекс квантования в соответствии со значением натурального двоичного кода; если значение натурального двоичного кода индекса квантования равно "1111 1111", тогда выполняется постоянное считывание следующего бита, и если следующий бит равен 0, тогда значение индекса квантования равно 127, а если следующий бит равен 1, тогда значение индекса квантования равно 128.
Узел инверсного классификационного решетчатого векторного квантования предназначен для инверсного квантования индексного вектора выполненного пирамидального решетчатого векторного квантования в поддиапазоне кодирования малых битовых значений и осуществления инверсного квантования индексного вектора выполненного сферического решетчатого векторного квантования в поддиапазоне кодирования больших битовых значений.
Узел инверсной нормализационной обработки предназначен для выполнения инверсной нормализации значений, полученных после осуществления инверсного квантования в поддиапазоне кодирования, а также для получения коэффициента частотного домена.
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
В частности, для
выполняется инверсная нормализация с целью получения коэффициента частотного домена m-того вектора поддиапазона кодирования j, восстановленного на стороне декодирования:
<mrow><msubsup><mover accent="true"><mi>X</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><msup><mn>2</mn><mrow><mi>T</mi><msub><mi>h</mi><mi>q</mi></msub><mo stretchy="false">(</mo><mi>j</mi><mo stretchy="false">)</mo><mo>/</mo><mn>2</mn></mrow></msup><mo>⋅</mo><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup></mrow>
q
где Th(j) представляет собой показатель степени квантования огибающей амплитуды в j-том поддиапазоне кодирования.
Узел шумового заполнения предназначен для выполнения заполнения шумом поддиапазона, которому узел инверсной нормализационной обработки не распределил бит для выходного значения коэффициента частотного домена;
узел обратного модифицированного дискретного косинусного преобразования (ОМДКП) соединяется с узлом шумового заполнения и предназначен для выполнения ОМДКП коэффициента частотного домена, для которого было выполнено шумовое заполнение с целью получения звукового сигнала.
Узел инверсного классификационного решетчатого векторного квантования подробно описывается со ссылкой на Фиг.8.
Как видно из Фиг.8, узел инверсного классификационного решетчатого векторного квантования включает классификационный обрабатывающий модуль 81, модуль инверсного пирамидального решетчатого векторного квантования 82 и модуль инверсного сферического решетчатого векторного квантования 83, причем
классификационный обрабатывающий модуль предназначен для передачи индекса квантования из поддиапазона кодирования малых битовых значений в модуль инверсного пирамидального решетчатого векторного квантования для обработки и для передачи индекса квантования из поддиапазона кодирования больших битовых значений в модуль инверсного сферического решетчатого векторного квантования для обработки.
Модуль инверсного пирамидального решетчатого векторного квантования предназначен для выполнения инверсного квантования индекса квантования в поддиапазоне кодирования малых битовых значений; причем модуль инверсного пирамидального решетчатого векторного квантования 82 включает соединенные друг с другом первый субмодуль инверсного квантования узла решетки 821 и первый субмодуль инверсного регулирования энергии 822, причем
8
первый субмодуль инверсного квантования узла решетки предназначен для определения энергетической пирамидальной поверхности, на которой располагается индекс квантования в поддиапазоне кодирования малых битовых значений, метка индекса квантования на этой энергетической пирамидальной поверхности, а также последующие решения для соответствующего узла решетки D;
8
первый субмодуль инверсного регулирования энергии предназначен для выполнения инверсного регулирования энергии решения Y для узла решетки D, получаемого из уравнения
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><mrow><mo>(</mo><mrow><mi>Y</mi><mo>+</mo><mi>a</mi></mrow><mo>)</mo></mrow><mo>/</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi><mrow><mo>(</mo><mrow><mi>i</mi><mi>n</mi><mi>d</mi><mi>e</mi><mi>x</mi></mrow><mo>)</mo></mrow></mrow>
-6
-6
-6
-6
-6
-6
-6
-6
где a=(2, 2, 2, 2, 2, 2, 2, 2) scale(index) представляет собой коэффициент масштабирования.
Модуль инверсного сферического решетчатого векторного квантования предназначен для выполнения инверсного квантования индексного вектора в поддиапазоне кодирования больших битовых значений; модуль инверсного сферического решетчатого векторного квантования 83 включает соединенные друг с другом второй субмодуль инверсного квантования узла решетки 831 и второй субмодуль инверсного регулирования энергии 832, при этом
8
второй субмодуль инверсного квантования узла решетки предназначен для получения решения для узла решетки D, соответствующего индексному вектору, и в частности включает:
вычисление значения x=k*G,
D8
и вычисление значения ytemp=x/(2^(region_bit(j)); y=x-ƒ(ytemp)*(2^(region_bit(j));
8
где k представляет собой индексный вектор вектора квантования, region_bit(j) представляет собой количество битов, распределенных одному коэффициенту частотного домена в j-м поддиапазоне кодирования; G представляет собой порождающую матрицу узла решетки D и имеет следующий вид:
<mrow><mi>G</mi><mo>=</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mn>2</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow>
8
второй субмодуль инверсного регулирования энергии предназначен для выполнения инверсного регулирования энергии найденного значения узла решетки D и обеспечивает получение
<mrow><msubsup><mover accent="true"><mi>Y</mi><mo>¯</mo></mover><mi>j</mi><mi>m</mi></msubsup><mo>=</mo><mi>y</mi><mo>−</mo><mi>s</mi><mi>c</mi><mi>a</mi><mi>l</mi><mi>e</mi><mrow><mo>(</mo><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow><mo>)</mo></mrow><mo>/</mo><mrow><mo>(</mo><mrow><msup><mn>2</mn><mrow><mi>r</mi><mi>e</mi><mi>g</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>b</mi><mi>i</mi><mi>t</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></mrow></msup></mrow><mo>)</mo></mrow><mo>+</mo><mi>a</mi></mrow>
-6
-6
-6
-6
-6
-6
-6
-6
где a=(2, 2, 2, 2, 2, 2, 2, 2), scale(region_bit(j)) представляет собой коэффициент масштабирования.
Способ кодирования/декодирования звука и система векторного квантования решетчатого типа в соответствии с настоящим изобретением, полностью учитывающие характеристики голосового источника информации, осуществляющие квантование подлежащего дискретизации вектора путем совмещенного решеточного векторного квантования с использованием пирамидального решетчатого векторного квантования и сферического решетчатого векторного квантования, соответственно, для поддиапазона кодирования малых битовых значений и поддиапазона кодирования больших битовых значений, в частности, в соответствии с количеством битов, распределяемых поддиапазону кодирования, и обратного кодированию процесса, используемого для декодирования, с получением хорошего качества кодирования голосового информационного источника. Дополнительно для распределения битов используется распределение битов с изменяемой длиной этапа, и длина этапа распределения битов одному коэффициенту частотного домена может регулироваться до минимальной величины в половину бита, таким образом улучшая эффективность использования битов. Одновременно разработан пирамидальный решетчатый векторный квантователь с малой битовой длиной этапа, и несложный алгоритм маркировки узла решетки, уменьшающий требуемый объем для хранения информации. Дополнительно при сферическом решетчатом векторном квантовании в поддиапазоне кодирования больших битовых значений используется новый критерий для метки расширения кодовой книги, таким образом дополнительно уменьшая сложность алгоритма решетчатого векторного квантователя. В процессе кодирования также предусмотрен алгоритм использования сохраненных битов.
Специалисты должны понимать, что все или часть предусмотренных в представленном выше способе операций (этапов) могут выполняться связанными с программами аппаратными средствами, и программы могут сохраняться в считываемой компьютерами среде хранения, такой как предназначенные для считывания запоминающие устройства, магнитные или оптические диски и т.д. Дополнительно все или часть операций в приведенных выше примерах могут быть также реализованы в виде одной или более интегральных схем. Соответственно, все модули/узлы в приведенных выше примерах могут быть реализованы в виде аппаратных или программных функциональных модулей. Настоящее изобретение не ограничивается любым сочетанием аппаратных и программных средств.
Промышленная применимость
Способ кодирования/декодирования звука и система векторного квантования решетчатого типа в соответствии с настоящим изобретением, полностью учитывающие характеристики голосового источника информации, осуществляющие квантование подлежащего дискретизации вектора путем совмещенного решеточного векторного квантования с использованием пирамидального решетчатого векторного квантования и сферического решетчатого векторного квантования, соответственно, для поддиапазона кодирования малых битовых значений и поддиапазона кодирования больших битовых значений, в частности, в соответствии с количество битов, распределяемых поддиапазону кодирования, и обратного кодированию процесса, используемого для декодирования, с получением хорошего качества кодирования голосового информационного источника. Дополнительно для распределения битов используется распределение битов с изменяемой длиной этапа, и длина этапа распределения битов одному коэффициенту частотного домена может регулироваться до минимальной величины в половину бита, таким образом улучшая эффективность использования битов. Одновременно разработан пирамидальный решетчатый векторный квантователь с малой битовой длиной этапа, и несложный алгоритм маркировки узла решетки, уменьшающий требуемый объем для хранения информации. Дополнительно при сферическом решетчатом векторном квантовании в поддиапазоне кодирования больших битовых значений используется новый критерий для метки расширения кодовой книги, таким образом дополнительно уменьшая сложность алгоритма решетчатого векторного квантователя.