ОБРАТИМОЕ ПРЕОБРАЗОВАНИЕ ДЛЯ СЖАТИЯ ДВУМЕРНЫХ ДАННЫХ С ПОТЕРЯМИ И БЕЗ ПОТЕРЬ
REVERSIBLE TRANSFORMATION FOR LOSSY OR LOSSLESS TWO-DIMENSIONAL DATA COMPRESSION

Область техники, к которой относится изобретение
Настоящее изобретение относится, в общем, к блочному основанному на преобразовании сжатию цифрового мультимедиа (к примеру, видео и изображений).
Предшествующий уровень техники
Блочное основанное на преобразовании кодирование
Кодирование с преобразованием - это методика сжатия, используемая во многих системах сжатия звука, изображений и видео. Несжатое цифровое изображение или видео в типичном случае представляется или захватывается в качестве выборок элементов картинки или цветов в местах в изображении или видеокадре, организованных в соответствии с двумерной (2D) сеткой. Это упоминается как представление в пространственной области изображения или видео. Например, типичный формат для изображений состоит из потока 24-битных выборок элементов цветной картинки, размещенных как сетка. Каждая выборка - это число, представляющее цветовые компоненты в местоположении пиксела в сетке в рамках цветового пространства, такого как RGB или YIQ, помимо прочего. Различные системы изображений и видео могут использовать различные цветовые, пространственные и временные разрешения при взятии выборок. Также цифровое аудио в типичном случае представляется как дискретизированный по времени поток звуковых сигналов. Например, типичный формат аудио состоит из потока 16-битных выборок по амплитуде звукового сигнала, взятых с постоянным интервалом времени.
Несжатые цифровые сигналы звука, изображений и видео могут потреблять значительную емкость при хранении и передаче. Кодирование с преобразованием уменьшает размер цифрового аудио, изображений и видео посредством преобразования представления сигнала в пространственной области в представление в частотной области (или другой аналогичной области преобразования) и последующего уменьшения разрешения определенных, в общем, менее воспринимаемых частотных компонентов представления в области преобразования. Это обычно приводит к гораздо менее воспринимаемому ослаблению цифрового сигнала по сравнению с уменьшением цветового или пространственного разрешения изображений или видео в пространственной области или звука во временной области.
1
n
Более конкретно, типичный блочный основанный на преобразовании кодек 100, показанный на фиг. 1, делит пиксели несжатого цифрового изображения на двумерные блоки фиксированного размера (X,..., X), при этом каждый блок, возможно, перекрывается другими блоками. Линейное преобразование 120-121, которое выполняет анализ пространственных частот, применяется к каждому блоку, что преобразует разнесенные выборки в рамках блока к набору коэффициентов частот (или преобразования), обычно представляющих интенсивность цифрового сигнала в соответствующих полосах частот по блочному интервалу. Для сжатия коэффициенты преобразования могут быть выборочно квантованы 130 (т.е. уменьшено их разрешение, например, посредством отбрасывания наименее значимых битов значений коэффициентов или иного отображения значений в числовом множестве с более высоким разрешением на меньшее разрешение), а также закодированы 130 статистическим кодированием или кодированием с переменной длиной в сжатый поток данных. При декодировании коэффициенты преобразования обратно преобразуются 170-171, чтобы приблизительно восстановить исходный дискретизованный по цвету/пространству сигнал изображения/видео (восстановленные блоки ).
x
N.
y
= Mx,
M
N
Блочное преобразование 120-121 может быть задано как математическая операция над вектором размера Более часто операцией является линейное умножение, генерирующее выход области преобразования где  - матрица преобразования. Когда входные данные имеют произвольную длину, они сегментируются на векторов определенной длины, и блочное преобразование применяется к каждому сегменту. Для целей сжатия данных выбираются обратимые блочные преобразования. Другими словами, матрица M является обратимой. В нескольких измерениях (к примеру, для изображения и видео) блочные преобразования в типичном случае реализуются как раздельные операции. Матричное умножение применяется раздельно вдоль каждого измерения данных (т.е. и строк, и столбцов).
y
Для сжатия коэффициенты преобразования (компоненты вектора ) могут быть выборочно квантованы (т.е. уменьшено их разрешение, например, посредством отбрасывания самых младших битов значений коэффициентов или иного отображения значений в числовом множестве с более высоким разрешением на меньшее разрешение), а также закодированы статистическим кодированием или кодированием с переменной длиной в сжатый поток данных.
M
-1
При декодировании в декодере 150 инверсия этих операций (деквантование/статистическое декодирование 160 и обратное блочное преобразование 170-171) применяется на стороне декодера 150, как показано на фиг. 1. При восстановлении данных обратная матрица  (обратное преобразование 170-171) применяется в качестве множителя к данным области преобразования. При применении к данным области преобразования обратное преобразование приблизительно восстанавливает исходное цифровое мультимедиа временной области или пространственной области.
Во многих приложениях кодирования на основе блочного преобразования желательно, чтобы преобразование было обратимым, чтобы поддерживать кодирование как с потерями, так и без потерь в зависимости от коэффициента квантования. При отсутствии квантования (обычно представляемого как коэффициент квантования 1), например, кодек, использующий обратимое преобразование, может точно воспроизводить входные данные при декодировании. Тем не менее, требование обратимости в этих приложениях ограничивает выбор преобразований, на основе которых может быть разработан кодек.
Многие системы сжатия изображений и видео, такие как MPEG и Windows Media, помимо прочих, используют преобразования на основе дискретного косинусного преобразования (DCT). DCT, как известно, имеет подходящие свойства энергетического сжатия, что приводит к практически оптимальному сжатию данных. В этих системах сжатия обратное DCT (IDCT) используется в циклах восстановления как в кодере, так и в декодере системы сжатия для восстановления отдельных блоков изображений. DCT описано в публикации N. Ahmed, T. Natarajan и K.R. Rao "Discrete Cosine Transform", IEEE Transactions on Computers, C-23 (январь 1974), на стр. 90-93. Примерная реализация IDCT описана в"IEEE Standard Specification for the Implementations of 8x8 Inverse Discrete Cosine Transform", IEEE Std. 1180-1990, 6 декабря 1990 г.
Традиционные преобразования данных, используемые, чтобы реализовать средство обратимого сжатия двумерных данных, в общем, имели один или более следующих основных недостатков.
1. Неравные нормы между коэффициентами преобразования, требующие сложных схем статистического кодирования.
2. Неточные аппроксимации к оптимальным преобразованиям, таким как DCT.
3. Высокая вычислительная сложность.
Традиционная реализация двумерного преобразования
T
X
T
Y
Раздельное двумерное преобразование в типичном случае реализуется посредством выполнения одномерных преобразований над строками данных, после чего следует одномерное преобразование над столбцами данных (или наоборот). См. публикацию A. K. Jain "Fundamentals of Digital Image Processing". Prentice Hall, 1989. В матричном представлении, пусть представляет матрицу преобразования, а является двумерными данными. Раздельное двумерное преобразование с помощью задано в следующем уравнении:
Y = T X T'
(1)
T
T
1
2
На самом деле построчные и постолбцовые преобразования могут отличаться. Например, матрица данных может быть не квадратной (скажем, размера 4×8), либо построчные и постолбцовые преобразования могут быть DCT и дискретным синусным преобразованием (DST) соответственно. В этом случае и множители умножения справа и слева отличаются (скажем,  и ), и преобразование задается как
Y = T
X T'
1
2
(2)
Например, фиг. 2 показывает двумерное DCT 4×4, реализованное в две стадии. На первой стадии столбцы матрицы данных преобразуются с помощью 4-точечного одномерного DCT. На второй стадии четырехточечные одномерные DCT применяются вдоль строк. С бесконечной арифметической точностью это упорядочивание может быть переключено без изменений в выходе.
Четырехточечное одномерное DCT может быть реализовано как последовательность операций умножения и сложения над 4 значениями входных данных, как представлено на сигнальном ориентированном графе, показанном на фиг. 3. Значения c и s в этом схеме являются соответственно косинусом и синусом π/8. Подход раздельного преобразования хорошо подходит для кодека с потерями данных. Кодеки без потерь более сложно реализовать. Даже при квантовании с коэффициентом единица не гарантируется, что описанное выше раздельное двумерное DCT совместно с раздельным обратным DCT или IDCT обеспечит точное до бита совпадение с исходным вводом. Это обусловлено тем, что делители на фиг. 3 вызывают ошибки округления, которые могут не быть скомпенсированы между кодером и декодером.
Лифтинг-преобразование
Чтобы добиться сжатия без потерь с помощью блочного основанного на преобразовании кодека, необходимо заменить вышеописанное двумерное DCT 4×4 на преобразование без потерь. Раздельное преобразование может быть использовано только в том случае, если каждое одномерное преобразование выполняется без потерь или является обратимым. Хотя существует несколько вариантов для обратимых одномерных преобразований, основанные на "лифтинг-преобразовании" (схеме преобразования сигнала, заключающейся в сокращении числа его выборок за счет удаления коррелирующих значений при сохранении определенных скалярных характеристик) являются наиболее желательными. Лифтинг-преобразование - это процесс выполнения матрично-векторного умножения с помощью последовательных "сдвигов". Сдвиг задается как умножение вектора-операнда на матрицу, которая является единичной матрицей, плюс один ненулевой недиагональный элемент. Перемена знака одного или более векторных коэффициентов может осуществляться где-либо в ходе этого процесса без потери общности.
Лифтинг-преобразование ранее реализовывалось посредством структур лестничного или решетчатого фильтра. Основанные на лифтинг-преобразовании или последовательном сдвиге методики использовались в графике. См. публикацию A. Tanaka, M. Kameyama, S. Kazama и O. Watanabe. "A rotation method for raster image using skew transformation". Proc IEEE Confon Computer Vision and Pattern Recognition, страницы 272-277, июль 1986 г.; и A. W. Paeth "A fast algorithm for general raster rotation". Proceedings of Graphics Interface '86, стр. 77-81, май 1986 г. Фактически можно утверждать, что исключение Гаусса-Джордана - это демонстрация лифтинг-преобразования. Одной простой двухточечной операцией является преобразование Адамара, заданное матрицей преобразования
.
Два подхода, как правило, используются для реализации основанного на лифтинг-преобразовании (обратимого) одномерного преобразования Адамара. Первый заключается в том, чтобы реализовать нормированное или безмасштабное преобразование Адамара по этапам лифтинг-преобразования, как показано на фиг. 4. Второй подход заключается в том, чтобы разрешить масштабам различаться между двумя коэффициентами преобразования, как показано на фиг. 5.
Проблемы при лифтинг-преобразовании
Лифтинг-преобразование имеет свои проблемы. В первом подходе преобразования Адамара, показанном на фиг. 4, два коэффициента преобразования нормированы. Это желательно для реализации многостадийных преобразований, таких как четырех- или восьмиточечное DCT. Тем не менее, эта реализация имеет два основных недостатка - во-первых, каждое двухточечное преобразование Адамара требует трех нетривиальных (т.е. с большим объемом вычислений) этапов лифтинг-преобразования, а во-вторых, ошибки округления на этапах лифтинг-преобразования обуславливают "перетекание" низкочастотной энергии в высокочастотный терм, приводя к снижению эффективности сжатия. В этом первом подходе использование аппроксимации  и  приводит к базисной функции переменного тока (АС) [0,75-0,7188]. Хотя расхождение с требуемым [0,7071-0,7071] не кажется слишком большим, сигнал постоянного тока (CD) амплитуды 64 генерирует АС отклик тока в 2 единицы, который перетекает в требующий больших ресурсов для кодирования диапазон высоких частот.
Второй подход (фиг. 5) использует этапы тривиального лифтинг-преобразования. Тем не менее, терм низких частот увеличивается на коэффициент , тогда как терм высоких частот уменьшается на 1/ (или наоборот). Разрешение двух коэффициентов отличается на один бит. В двух измерениях терм "высокие-высокие" меньше по разрешению на 2 бита по сравнению с термом "низкие-низкие". Стадии каскадного преобразования только увеличивают это расхождение. Статистическое кодирование более сложно реализовать вследствие отличающихся диапазонов коэффициентов.
Обобщая, при основанных на лифтинг-преобразовании преобразованиях без потерь возникают следующие проблемы.
1. Возможно неравное масштабирование между коэффициентами преобразования, приводящее к более сложным механизмам статистического кодирования.
2. Неточные аппроксимации к требуемым базисным функциям преобразования, которые могут вызвать нежелательные эффекты, такие как перетекание DC частот в АС частоты.
3. Потенциально высокая вычислительная сложность, особенно если основанная на лифтинг-преобразовании реализация предназначена, чтобы хорошо аппроксимировать необходимое преобразование.
Сущность изобретения
Система кодера/декодера цифрового мультимедиа основана на раздельном двумерном блочном преобразовании, которое имеет множество реализаций, описанных в данном документе, которые разрешают вышеуказанные проблемы и недостатки преобразований предшествующего уровня техники. В частности, описанная реализация пары раздельного двумерного преобразования и его инверсии имеет последовательность этапов лифтинг-преобразования, предназначенных для снижения вычислительной сложности (т.е. уменьшения числа нетривиальных операций). Эта пара преобразования имеет свойства энергетического сжатия, аналогичные DCT, и также выполняется без потерь и является безмасштабной. Термин "без потерь" означает, что исходный целочисленный ввод в преобразование может быть восстановлен без ошибки посредством обратного преобразования на основе его целочисленных коэффициентов преобразования, предполагая отсутствие квантования. "Безмасштабное" относится к тому, что базисные функции пары преобразования имеют одинаковый масштаб, что также означает, что результирующая матрица преобразования является ортогональной.
Одной описанной реализацией этой пары преобразования является преобразование 4×4, но оно также может быть расширено до других размеров (к примеру, 8×8 и т.д.). Более того, каскады пары преобразования могут быть использованы, чтобы реализовать иерархические пирамиды и более крупные преобразования. Например, одна описанная реализация использует двухуровневый каскад преобразования. На второй стадии преобразования преобразование применяется к 16 DC коэффициентам, сгенерированным в рамках макроблока. Поскольку преобразование аналогично DCT, оно может быть использовано, чтобы реализовать кодек цифрового мультимедиа без потерь и с потерями (т.е. кодек, чей параметр квантования может быть варьирован от настройки без потерь до настроек с потерями) с хорошими рабочими характеристиками искажения в зависимости от скорости передачи и эффективностью сжатия.
Дополнительные признаки и преимущества станут более явными из последующего подробного описания вариантов осуществления, которое осуществляется со ссылками на прилагаемые чертежи.
Краткое описание чертежей
Фиг. 1 - блок-схема традиционного блочного основанного на преобразовании кодека согласно предшествующему уровню техники.
Фиг. 2 - блок-схема двумерного DCT 4×4, реализованного в две стадии, также согласно предшествующему уровню техники.
Фиг. 3 - сигнальный ориентированный граф одномерного DCT 4×4, также согласно предшествующему уровню техники.
Фиг. 4 - сигнальный ориентированный граф нормированного 2-точечного преобразования Адамара с использованием лифтинг-преобразования, также согласно предшествующему уровню техники.
Фиг. 5 - сигнальный ориентированный граф тривиального 2-точечного преобразования Адамара, также согласно предшествующему уровню техники.
Фиг. 6 - блок-схема работы кодера, основанного на усовершенствованном обратимом двумерном преобразовании.
Фиг. 7 - блок-схема работы декодера, основанного на усовершенствованном обратимом двумерном преобразовании.
Фиг. 8 - сигнальный ориентированный граф нормированной основанной на лифтинг-преобразовании реализации обратимого преобразования Адамара 2×2.
Фиг. 9 - листинг программы на языке программирования C для реализации нормированного обратимого преобразования Адамара 2×2 по фиг. 8.
Фиг. 10 - сигнальный ориентированный граф нормированного обратимого преобразования Адамара по фиг. 8.
odd
Фиг. 11 - график потока сигналов ориентированный граф нормированной основанной на лифтинг-преобразовании реализации преобразования T.
odd
Фиг. 12 - листинг программы на языке программирования C для реализации нормированного преобразования T по фиг. 11.
odd
Фиг. 13 - сигнальный ориентированный граф нормированной основанной на лифтинг-преобразовании версии инверсии преобразования T по фиг. 11.
odd-odd
Фиг. 14 - сигнальный ориентированный граф нормированной основанной на лифтинг-преобразовании реализации преобразования T.
odd-odd
Фиг. 15 - листинг программы на языке программирования C для реализации нормированного преобразования T по фиг. 14.
odd-odd
Фиг. 16 - сигнальный ориентированный граф нормированной основанной на лифтинг-преобразовании версии инверсии преобразования T по фиг. 14.
Фиг. 17 - схема, иллюстрирующая упорядочивание данных 2×2 в приведенных здесь иллюстрациях операций преобразования и обратного преобразования.
Фиг. 18 - график потока сигналов ориентированный граф, иллюстрирующий двумерное DCT, реализованное раздельно как одномерное вертикальное DCT и одномерное горизонтальное DCT, примененное к столбцам и строкам соответственно, ввода данных 4×4.
Фиг. 19 - сигнальный ориентированный граф, иллюстрирующий обратимое безмасштабное двумерное преобразование, реализованное посредством чередования операций горизонтального и вертикального преобразования в две стадии.
Фиг. 20 - схема, иллюстрирующая точки блока данных 4×4, к которому применено преобразование Адамара 2×2 по фиг. 8 на первой стадии усовершенствованного обратимого двумерного преобразования в кодере по фиг. 6.
odd
odd-odd
Фиг. 21 - схема, иллюстрирующая точки блока данных 4×4, к которому применено преобразование Адамара 2×2 по фиг. 8, преобразование T по фиг. 11 и преобразование T по фиг. 14 на второй стадии реализации усовершенствованного обратимого двумерного преобразования в кодере по фиг. 6.
odd
odd-odd
Фиг. 22 - схема, иллюстрирующая точки блока коэффициентов преобразования 4×4, к которому применено преобразование Адамара 2×2 по фиг. 8, преобразование T по фиг. 11 и преобразование T по фиг. 14 на первой стадии реализации обратимого двумерного преобразования в декодере по фиг. 7.
Фиг. 23 - схема, иллюстрирующая упорядочивание коэффициентов преобразования для прямого и обратного двумерного преобразования в кодере по фиг. 6 и декодере по фиг. 7.
Фиг. 24 - блок-схема подходящей вычислительной среды для реализации блочного основанного на преобразовании кодека с усовершенствованным перекрывающимся преобразованием пространственной области по фиг. 6 и 7.
Фиг. 25 - сигнальный ориентированный граф структуры нормированной основанной на лифтинг-преобразовании реализации обратимых двумерных преобразований, показанных на фиг. 11 и 14.
Подробное описание изобретения
Последующее описание относится к системе сжатия или кодеку цифрового мультимедиа, который использует усовершенствованное обратимое безмасштабное двумерное преобразование. В целях иллюстрации вариантом осуществления системы сжатия, содержащей в себе усовершенствованное преобразование, является система сжатия изображений или видео. Альтернативно, усовершенствованное преобразование также может быть включено в системы сжатия или кодеки для других двумерных данных. Преобразование не требует, чтобы система сжатия цифрового мультимедиа кодировала сжатые цифровые мультимедийные данные в конкретном формате кодирования.
1. Кодер/декодер
Фиг. 6 и 7 - это обобщенная диаграмма процессов, используемых в репрезентативном кодере 600 и декодере 700 двумерных (2D) данных, основанном на усовершенствованном обратимом безмасштабном двумерном преобразовании 650, подробно описанном ниже. Эти схемы представляют обобщенную или упрощенную иллюстрацию использования и применения данного преобразования в системе сжатия, включающей в себя кодер и декодер двумерных данных. В альтернативных кодерах, основанных на этом преобразовании, дополнительное или меньшее число процессов, чем проиллюстрировано в репрезентативном кодере и декодере, может быть использовано для сжатия двумерных данных. Например, некоторые кодеры/декодеры могут также включать в себя цветовое преобразование, форматы цветов, масштабируемое кодирование, кодирование без потерь, режимы макроблоков и т.д. Усовершенствованное двумерное преобразование разрешает системе сжатия (кодеру и декодеру) предоставлять кодирование двумерных данных без потерь и/или с потерями, в зависимости от квантования, которое может быть основано на параметре квантования, варьирующемся от режима “без потерь” до режима “с потерями”.
Кодер 600 двумерных данных генерирует сжатый поток 620 битов, который является более компактным представлением (для типичного ввода) двумерных данных 610, представляемых в качестве входа кодеру. Например, вводом двумерных данных может быть изображение, кадр видеопоследовательности или другие данные, имеющие два измерения. Кодер двумерных данных разбивает 630 входные данные на макроблоки, которые имеют размер 16×16 пикселей в данном репрезентативном кодере. Кодер двумерных данных дополнительно разбивает макроблок на блоки 632 4×4. Оператор 640 "прямого перекрытия" применяется к каждому краю между блоками, после чего каждый блок 4×4 преобразуется с помощью обратимого безмасштабного преобразования 650. Далее DC коэффициент 660 каждого блока преобразования 4×4 подлежит аналогичной цепочке обработки (разбиение, прямое перекрытие, за которым следует преобразование блоков 4×4). В отношении результирующих DC коэффициентов преобразования выполняются квантование 670, статистическое кодирование 680 и пакетирование 690.
Декодер выполняет обратный процесс. На стороне декодера биты коэффициентов преобразования извлекаются 710 из своих соответствующих пакетов, на основе которых сами коэффициенты декодируются 720 и деквантуются 730. DC коэффициенты 740 регенерируются посредством применения обратного преобразования, и плоскость DC коэффициентов "перекрывается в обратном порядке" с помощью подходящего сглаживающего оператора, применяемого по краям блока DC. В дальнейшем все данные регенерируются посредством применения обратного преобразования 750 4×4 к DC коэффициентам, и АС коэффициенты 742 декодируются из потока битов. Наконец, края блока в плоскостях результирующих изображений фильтруются 760 с помощью обратного перекрытия. Это дает на выходе восстановленные двумерные данные.
2. Реализация усовершенствованного обратимого безмасштабного преобразования
Как описано, к примеру, в A. K. Jain "Fundamentals of Digital Image Processing". Prentice Hall, 1989 г., раздельное двумерное преобразование может быть реализовано как одномерное преобразование, работающее в отношении данных, упорядоченных одномерно, генерируя также упорядоченный векторный результат. Матрица эквивалентного преобразования генерируется произведением Кронекера умножения справа и слева множителей, используемых в раздельном случае. Если x и y означают векторы данных и преобразования, переупорядоченные из своего двумерного представления в (2), их соотношение задается следующим образом:
y=Tx, (3)
T
T
1
2
где T = Kron(, ).
Хотя раздельная реализация двумерного преобразования, показанная в уравнении (2), вычислительно более эффективна (в асимптотическом смысле), чем в уравнении (3), существуют определенные случаи, когда последнее представление приводит к требуемым свойствам. Например, реализация, основанная на уравнении (3), имеет меньшую задержку, чем в уравнении (2), благодаря одностадийному перемножению матриц (которое является операцией, поддерживаемой изначально на нескольких процессорах цифровых сигналов (DSP)). Для усовершенствованного обратимого безмасштабного преобразования, описанного в данном документе, одномерное представление этапов 2×2 приводит к безмасштабной обратимой структуре.
T
T
1
2
Более того, раздельное двумерное преобразование может быть реализовано как каскад более простых одномерных преобразований. Предположим, что матрицы преобразования  и  могут быть разложены на составные части следующим образом:
T
= T
T
1
1A
1B
T
= T
T
2
2A
2B
Ассоциативность операции перемножения матриц может быть использована, чтобы переупорядочить двумерное преобразование (2) следующим образом:
<i>Y = T</i><sub>1</sub><i> X T'</i><sub>2</sub> == <i>T</i><sub>1A</sub><i>T</i><sub>1B</sub><i>X</i><i>T'</i><sub>2B</sub><i>T'</i><sub>2A</sub> == <i>T</i><sub>1A </sub>(<i>T</i><sub>1B </sub><i>X</i><i>T'</i><sub>2B</sub>)<i>T'</i><sub>2A</sub>
(5)
приводя к каскадной одномерной реализации
y = Kron <i>(T</i><sub>1A</sub>, <i>T</i><sub>2A</sub><i> ) </i>· Kron <i>(T</i><sub>1B</sub><i>, T</i><sub>2B</sub> )·x
(6)
Преобразования, такие как DCT, могут быть сформулированы как каскад элементарных двухточечных операций поворота. Двумерное DCT может быть сформулировано с помощью структуры (6), чтобы обладать определенными требуемыми свойствами, которые подробнее описаны далее.
А. Двумерное преобразование Адамара
Двумерное преобразование Адамара, реализованное как одномерная операция, генерируется произведением Кронекера,
<img file="00000006.tif" he="25" wi="70" img-content="undefined" img-format="tif" />
(7)
Интересно, что можно реализовать безмасштабное обратимое преобразование, соответствующее уравнению (7), используя только этапы тривиального лифтинг-преобразования. Реализация этой формы показана в качестве сигнального ориентированного графа 800 на фиг. 8. Соответствующий код C++, исключая некоторые избыточные операции, показан на фиг. 9. В этом листинге 900 кода функция "swap(x,y)" - это функция, которая меняет значения своих аргументов.
T
B
C
H
Из вышеописанного можно видеть, что нормированное обратимое двумерное преобразование Адамара может быть сформулировано только с помощью этапов тривиального лифтинг-преобразования, хотя это невозможно для, вероятно, "более простого" случая одномерного преобразования Адамара! Хотя матрица преобразования сама является инволютивной (т.е.  совпадает с собственной обратной матрицей), восстановление без потерь требует, чтобы этапы лифтинг-преобразования были тщательно реверсированы так, чтобы точно генерировать любые эффекты округления. Инверсия 1000 структуры 800 на фиг. 8 представлена на фиг. 10 - структура 1000 идентична прямому преобразованию в данном случае. Заметим, что коэффициенты преобразования и  переставлены в сигнальных ориентированных графах.
Обратимое безмасштабное двумерное преобразование 650 в кодере 600 по фиг. 6 использует аппроксимацию к DCT 4×4. Последующее описание демонстрирует, что весь процесс преобразования 650 может быть реализован как каскад трех элементарных операций преобразования 2×2, которые являются преобразованием Адамара 2×2, и следующие:
Y = T
X T'
R
H
Нечетное (odd) преобразование поворота:
Нечетное-нечетное (odd-odd) преобразование поворота:
<i>Y = T</i><sub>R </sub><i>X T'</i><sub>R</sub><i>,</i>
(8)
R
где двухточечная матрица вращения T задана как
<img file="00000007.tif" he="14" wi="62" img-content="undefined" img-format="tif" />
(9)
одномерные реализации уравнения (8) получаются посредством вычисления произведения Кронекера матриц преобразования (аппроксимированных до четырех десятичных знаков), являющихся множителями слева и справа
<img file="00000008.tif" he="25" wi="109" img-content="undefined" img-format="tif" />
(10)
и
<img file="00000009.tif" he="25" wi="114" img-content="undefined" img-format="tif" />
(11)
“^”
H
odd
odd-odd
Символ означает требуемую матрицу преобразования. Преобразования, получающиеся из фактических реализаций, не имеют этого символа. Для преобразования Адамара 2×2 требуемая матрица преобразования и ее аппроксимация идентичны. Поэтому T используется, чтобы означать преобразование Адамара 2×2, реализованное одномерно, без какой-либо неопределенности. Далее мы рассмотрим реализацию лифтинг-преобразования в Tи T.
B. Реализация T
odd
odd
odd
Безмасштабная основанная на лифтинг-преобразовании реализация преобразования 1100 T показана как сигнальный ориентированный граф на фиг. 11 и в листинге 1200 программы кода C++ на фиг. 12. Можно видеть, что первая и последняя стадии лифтинг-преобразования идентичны случаю преобразования Адамара. Помимо тривиальных сдвигов два нетривиальных поворота с лифтинг-преобразованием применяются на промежуточных стадиях. Каждый нетривиальный поворот реализован в трех этапах, с умножением на 3 и битовым сдвигом на 3 или 4 бита. Поэтому T может быть реализовано обратимым безмасштабным способом посредством использования 6 этапов нетривиального лифтинг-преобразования.
odd
odd
Получившаяся матрица T одномерного преобразования показана ниже (12), она находится в близком соответствии с исходной формулировкой ^T в (10). Можно видеть, что вторая и четвертая строки получившейся матрицы преобразования в сумме дают ноль, что означает, что нет перетекания постоянного тока в полосы переменного тока. Это требуемое свойство получается несмотря на то, что требуемые двумерные вращения просто аппроксимированы в структуре.
<img file="00000010.tif" he="25" wi="83" img-content="undefined" img-format="tif" />
(12)
odd
odd
odd
Хотя матрица преобразования T является инволютивной (т.е. совпадает с собственной инверсией), ошибки округления не компенсируются в двух последовательных применениях сигнального ориентированного графа или кода. Инверсия T без потерь получается посредством реверсирования этапов лифтинг-преобразования либо в сигнальном ориентированном графе, либо в коде C++, чтобы реплицировать ошибки округления при прямом преобразовании. Сигнальный ориентированный граф инверсии 1300 T показан на фиг. 13 - код может быть получен аналогично.
C. Реализация T
odd-odd
odd-odd
odd-odd
odd
R
odd-odd
T
Преобразование 1400 T составлено из двух поворотов, ни один из которых не является преобразованием Адамара. Интересно, что T может быть реализовано с помощью меньшего числа этапов лифтинг-преобразования, чем T. Это обусловлено свойствами симметрии произведения Кронекера с собой. Сигнальный ориентированный граф преобразования 1400 T и листинг 1500 программы его реализации в коде C++ показаны на фиг. 14 и 15 соответственно.
odd-odd
Можно видеть, что только один нетривиальный поворот, реализованный посредством трех этапов нетривиального лифтинг-преобразования, требуется, чтобы реализовать T. Этот поворот соответствует безмасштабному одномерному двухточечному преобразованию Адамара.
<img file="00000011.tif" he="25" wi="88" img-content="undefined" img-format="tif" />
(13)
odd-odd
odd-odd
Как и в случае других рассмотренных здесь преобразований, T, как представлено в уравнении (13), является инволютивной, хотя и не является точной до бита инверсией себя. Инверсия 1600 без потерь T получается посредством реверсирования сигнального ориентированного графа, используемого для прямого преобразования, как показано на фиг. 16.
D. Представление и получение вышеописанных реализаций преобразований 2×2
В приведенных здесь иллюстрациях обратимого безмасштабного двумерного преобразования с помощью этих трех обратимых двумерных преобразований применяются следующие точки. Во-первых, упорядочивание 1700 данных 2×2, приводящее к вышеуказанным сигнальным ориентированным графам и коду C++, выполняется так, как показано на фиг. 17. Точки пространственной области показаны слева, а соответствующие точки частотной области - справа. Цветовое кодирование с помощью четырех уровней серого, чтобы указывать четыре точки данных, введено здесь, чтобы облегчить описание обратимого безмасштабного двумерного преобразования, которое следует далее.
Часто двухточечные преобразования или повороты задаются как следующая операция:
<img file="00000012.tif" he="12" wi="37" img-content="undefined" img-format="tif" />
(14)
вместо инволютивной формы
<img file="00000013.tif" he="12" wi="38" img-content="undefined" img-format="tif" />
(15)
Эти две формы по сути идентичны, поскольку они отличаются только в знаке второго коэффициента преобразования. Здесь используется второе представление (15), хотя все рассмотрение в данном документе в равной степени применимо к первой форме (14).
H
odd
odd-odd
Структура базовых преобразований 2×2, T, T и T, заданных выше, составляется посредством отмечания того, что каждое двухточечное преобразование является поворотом. Дополнительно произведение Кронекера двух двухточечных поворотов задается следующим образом:
<img file="00000014.tif" he="13" wi="79" img-content="undefined" img-format="tif" />
(16)
H
Затем мы задаем оператор следующим образом:
<img file="00000015.tif" he="27" wi="69" img-content="undefined" img-format="tif" />
(17)
H
представляет ненормированную операцию двойной "бабочки" и может быть эффективно реализован с помощью лифтинг-преобразования.
Выполняется следующая факторизация:
Т
На ее основе произведение Кронекера типа может быть реализовано как каскад из 3 стадий.
A. Операция двойной "бабочки", заданная оператором H с помощью этапов лифтинг-преобразования.
B. Двухточечные повороты между первой парой компонентов и между второй парой компонентов.
C. Обращение двойной "бабочки", выполненной на этапе A.
H
odd
odd-odd
Для специального случая T предусмотрено даже более простое разложение, которое показано в качестве сигнального ориентированного графа 800 на фиг. 8 и описано выше. Для других случаев (к примеру, Tи T) результирующая структура может быть обобщена как ориентированный граф 2500, показанный на фиг. 25.
a-d
b-c
A
D,
B
Если посмотреть на три сигнальных ориентированных графа преобразований, описанных выше (а также их инверсий), можно заметить фундаментальную схожесть в их структуре. Первая стадия преобразования - это операция лифтинг-преобразования между коэффициентами и . Также последняя стадия - это процесс обратного лифтинг-преобразования (опуская знак и перемены коэффициентов). Соответственно первая стадия обратного преобразования - это операция лифтинг-преобразования между и а также между и C, с обратной операцией на последней стадии. Этапы лифтинг-преобразования между диагональными элементами - это отличительный признак объединенного двумерного преобразования 2×2, представленного здесь.
В следующем разделе обсуждается составление безмасштабного преобразования без потерь, которое аппроксимирует DCT/IDCT 4×4. Хотя примерный вариант осуществления преобразования показан в этом подробном техническом описании, аналогичная процедура с дополнительным определением других элементарных обратимых основанных на лифтинг-преобразовании преобразований 2×2 может быть использована, чтобы сгенерировать варианты осуществления обратимого преобразования с большим числом измерений с требуемыми свойствами.
E. Безмасштабное преобразование без потерь
/8
Четырехточечное DCT может быть уменьшено до последовательности четырех операций "бабочки", как показано на сигнальном ориентированном графе по фиг. 3. Первая стадия состоит из двух "бабочек", выполняющих двухточечные операции Адамара над входными данными (т.е. одно двухточечное преобразование Адамара с индексами 0 и 3 входных данных; и второе с индексами 1 и 2 входных данных). Вторая стадия содержит двухточечную операцию Адамара над низкочастотными результатами первой стадии, чтобы сгенерировать четные частотные компоненты (индексы 0 и 2), и двухточечное вращение на π, чтобы сгенерировать нечетные частотные компоненты (индексы 1 и 3).
В двух измерениях DCT может быть реализован раздельно: вертикальное одномерное четырехточечное DCT каждого столбца входных данных 4×4, за которым следует горизонтальное одномерное четырехточечное DCT строк (или наоборот). Это изображено как раздельная реализация 100 DCT на фиг. 18. Альтернативно, две описанные выше стадии одномерного DCT могут чередоваться между вертикальным и горизонтальным, используя теорию уравнения (5), как показано в качестве реализации 1900 чередующегося DCT на фиг. 19.
odd
odd-odd
Более того, при следовании вышеуказанному подходу соответствующие горизонтальные и вертикальные стадии могут быть дополнительно объединены. Например, первая стадия - это двухточечное преобразование Адамара в отношении "внутренних" и "внешних" входных элементов. Горизонтальная и вертикальная стадии могут быть объединены вместе в 4 применениях двумерного преобразования Адамара 2×2 в отношении 16 элементов входных данных, причем каждое преобразование применяется к симметричному набору входных точек. Также горизонтальная и вертикальная стадии второго этапа могут быть объединены в преобразование Адамара 2×2 и три преобразования 2×2, два из которых являются транспонированием. Заметим, что последние три преобразования 2×2 на самом деле являются двумерными переотображениями T и T, заданных ранее.
odd
odd-odd
Более конкретно, обратимое безмасштабное двумерное преобразование 650 (фиг. 6) реализуется посредством перегруппировки операций преобразования в схему преобразований Адамара 2×2, T и T. Две стадии этого преобразования 650 выполняются, как показано на фиг. 20 и 21 соответственно. Каждая стадия состоит из четырех преобразований 2×2, которые могут быть выполнены в произвольной последовательности или параллельно в рамках стадии.
T
T
H
H
odd
odd-odd
Для обратного двумерного преобразования 750 (фиг. 7) стадии реверсируются надлежащим образом, и этапы в рамках каждой стадии преобразования используют инверсию этапов процесса прямого преобразования. Как указывалось ранее, обратимое преобразование Адамара 2×2  является собственной инверсией, в смысле побитовой точности или без потерь. Поэтому вторая стадия обратного преобразования Фотона - это просто первая стадия прямого преобразования Фотона, как показано на фиг. 20. Первая стадия 2200 обратного преобразования Фотона изображена на фиг. 22. Четыре этапа в рамках этой стадии (которые, как и для случая прямого преобразования, могут быть исполнены в произвольном порядке или параллельно) применяют инверсии , T и T, как задано ранее, и переотображаются обратно в двумерное пространство 2×2.
После выполнения этапов прямого усовершенствованного двумерного преобразования, показанных на фиг. 20 и 21, получившиеся коэффициенты преобразования упорядочиваются, как показано на фиг. 23. То же упорядочивание 2300 предполагается для коэффициентов, инверсно преобразованных с помощью этапов на фиг. 22 и 20, в этом порядке.
T
x
r) >> k
x
r
k
k
x >>
H
odd
odd-odd
Вышеописанная усовершенствованная реализация прямого двумерного преобразования 650 состоит из пяти применений , двух применений T и одного применения T к каждому блоку 4×4. То же число применений этих преобразований вовлечено в реализацию обратного двумерного преобразования 750. Следовательно, общее число этапов нетривиального лифтинг-преобразования равно 5×0+2×6+1×3 = 15 для каждого блока, чтобы реализовать прямое или обратное двумерное преобразования без потерь. Это около 1 нетривиального этапа на пиксель. Нетривиальный этап - это операция формы (3 × + , где - это операнд, и - это ограничения, определяющие округление и битовый сдвиг, равно 2, 3 или 4. Также предусмотрено 17 одноместных сдвигов вправо (т.е. 1) на блок. Сложения, вычитания и отрицания не учитываются в данном обзоре.
/8
Для сравнения рассмотрим раздельную реализацию 1800 двумерного DCT, проиллюстрированную на фиг. 18. Допустим, что каждое четырехточечное DCT реализуется с помощью трех двухточечных нормированных операций Адамара, как показано на фиг. 3, и поворот на πреализован с помощью трех этапов нетривиального лифтинг-преобразования. Общее число операций нетривиального лифтинг-преобразования на блок 4×4 для прямого или обратного преобразования составляет 2×4×3 = 24. Общее число одноместных сдвигов вправо также составляет 24. Эти числа примерно на 50% выше, чем в усовершенствованных реализациях прямого преобразования 650 и обратного преобразования 750, не учитывая тот факт, что результирующее преобразование генерирует базисные функции с нормами в диапазоне от 1/4 до 2 (или до 4, если исключаются базисные функции иррационального диапазона). Наоборот, все базисные функции усовершенствованного преобразования 650 являются единичными нормами.
F. Усовершенствованное преобразование для цветового пространства 4:2:0
H
В одной примерной реализации кодера 600 (фиг. 6) и декодера 700 (фиг. 7) цветовое пространство YUV 4:2:0 используется, чтобы представлять цвет пикселей в изображении (или видеокадре). В данном примере кодека макроблок в цветовом пространстве YUV 4:2:0 задается как мозаика 16×16 пикселей в канале сигнала яркости (Y) и мозаика 8×8 в каналах сигналов цветности (U и V). Они дополнительно делятся на блоки 4×4, которые кодируются с преобразованием, используя вышеописанное преобразование 650. Преобразование 650 4×4 применяется к DC коэффициентам каналов сигнала яркости. Тем не менее, только выборки 2×2 цветности доступны в макроблоке. Примерный кодек затем применяет T, которым, как описано выше, является обратимое безмасштабное преобразование Адамара 2×2, к значениям цветности постоянного тока в каждом макроблоке. Таким образом, структура макроблока формата примерного кодека сохраняется, и дополнительные преобразования не должны быть введены в кодеке для обработки формата 4:2:0.
G. Минимизация ошибок округления
H
odd
odd-odd
x+ = (y
-1/4
x
x:= x + y/2
y
y
Ошибки округления появляются в этапах лифтинг-преобразования преобразований T, T и T, которые влекут за собой битовый сдвиг вправо. Эти ошибки округления имеют известное смещение и могут нарастать в ходе преобразования. Например, известно, что этап формы  >> 1) приводит к смещению на в значении по сравнению с его математическим эквивалентом . Это обусловлено тем, что (y >> 1) - это деление на 2 с округлением в меньшую сторону, которое является точным, если - четное число, и смещается на 1/2, если  - нечетное число. С вероятностной точки зрения, оно смещается на -1/4. Ошибок округления нельзя избежать в преобразованиях целое-в-целое, задействующих лифтинг-преобразование, но желательно минимизировать смещение в системе в целом.
T
T
T
H
odd
odd-odd
H
H
Формулировки , T и T, показанные выше как фрагменты кода C++, добавляют переменные коэффициенты в операнды, которые делятся или битово сдвигаются вправо. Эти коэффициенты выбираются таким образом, чтобы минимизировать смещение. В частности, можно показать, что смещение в четырех коэффициентах преобразования после операции первой стадии  (к несмещенному вводу) с помощью листинга 900 кода C++ на фиг. 9 составляет [1/4 -1/4 -1/4 -1/4]. Применение на второй стадии  в усовершенствованном двумерном преобразовании 650 (фиг. 6) оперирует с DC значениями первой стадии, т.е. с коэффициентами, которые уже смещены на 1/4. Результат операции на второй стадии генерирует смещение в [3/4 -1/4 -1/4 -1/4]. Поскольку первый коэффициент - это DC постоянного тока, он, как ожидается, будет иметь большое значение, и относительно высокое смещение в 3/4 не влияет на эффективность кодирования.
odd
odd-odd
odd-odd
odd
odd-odd
a+ =
b +
Этапы нетривиального лифтинг-преобразования в T и T предоставляют свободу выбирать коэффициенты округления для минимизации смещения при преобразовании. Листинг 1500 кода C++ (фиг. 15) для Tпоказывает, что иногда нецентральные правила округления (например, (3 5) >> 3) приводят к меньшему общему смещению, особенно в тех случаях, когда входные данные смещены сами. Для этапов усовершенствованного двумерного преобразования T и T все входы смещены на -1/4.
В типичном случае задание кодека ограничено заданием декодера потока битов. Исключение из этого правила делается для кодеков без потерь, поскольку кодер и декодер должны точно соответствовать друг другу для того, чтобы входные данные были восстановлены без потерь. В случае кодека с переключением между зажимами “с потерями” и “без потерь” это задается и на стороне кодера, и на стороне декодера. Тем не менее, когда с кодером осуществляются действия только в режиме “с потерями”, некоторые сокращения или улучшения могут быть допустимы, которые обеспечивают лучшую производительность (в показателях искажения в зависимости от скорости передачи или показателя вычислительных циклов), чем базовая производительность, заданная в спецификации кодека.
Одно средство повышения производительности кодера относится к смещению коэффициента преобразования. Можно уменьшить эффект смещения в некоторых вариантах осуществления кодера 600/декодера 700 посредством выполнения следующей процедуры для каждого блока 4×4.
m = 2
m =
k
1. Увеличить размер блока 4×4 посредством умножения на  (в типичном случае хорошо подходит 4).
2. Выполнить усовершенствованное двумерное преобразование 650 над блоком.
m
m
3. Квантовать блок с помощью квантователя, который в раз превышает исходный требуемый параметр квантования (например, использовать коэффициент квантования (QP) в 32, если требуемое значение QP равно 8, а = 4 на этапе 1).
На стороне декодера 700 изменений нет, хотя более оптимальные значения PSNR возможны при той скорости передачи битов. Разумеется, это не подходит для кодирования без потерь.
3. Вычислительная среда
Вышеописанный кодек с усовершенствованным обратимым безмасштабным двумерным преобразованием может быть применен в любом из множества устройств, в котором выполняется обработка цифровых мультимедийных сигналов, в том числе (помимо других примеров) на вычислительных машинах (компьютерах); на оборудовании для записи, передачи и приема изображений и видео; на портативных видеопроигрывателях; в устройствах видеоконференц-связи и т.д. Методики кодирования цифрового мультимедиа могут быть реализованы в аппаратной схемотехнике, а также в программном обеспечении обработки цифрового мультимедиа, исполняемом на вычислительной машине или в другой вычислительной среде, такой как показана на фиг. 24.
Фиг. 24 иллюстрирует обобщенный пример подходящей вычислительной среды 2400, в которой могут быть реализованы описанные варианты осуществления. Не подразумевается, что вычислительная среда 2400 налагает какое-либо ограничение на область использования или функциональность изобретения, поскольку настоящее изобретение может быть реализовано в различных вычислительных средах общего или специального назначения.
Согласно фиг. 24 вычислительная среда 2400 включает в себя, по меньшей мере, один модуль 2410 обработки данных и память 2420. На фиг. 24 эта наиболее общая конфигурация 2430 показана пунктирной линией. Модуль 2410 обработки данных исполняет машиноисполняемые инструкции и может быть реальным или виртуальным процессором. В многопроцессорной системе несколько модулей обработки данных исполняют машиноисполняемые инструкции, чтобы повысить вычислительную мощность. Памятью 2420 может быть энергозависимая память (к примеру, регистры, кэш, ОЗУ), энергонезависимая память (к примеру, ПЗУ, электрически стираемое программируемое ПЗУ (ЭСППЗУ), флэш-память и т.д.) или какое-либо их сочетание. Память 2420 сохраняет программное обеспечение 2480, реализующее описанный кодер/декодер и преобразования.
Вычислительная среда может иметь дополнительные признаки. Например, вычислительная среда 2400 включает в себя хранилище 2440 данных, устройства 2450 ввода, одно или более устройств 2460 вывода и одно или более подключений 2470 связи. Механизм межкомпонентного соединения (не показан), такой как шина, контроллер или сеть соединяет между собой компоненты вычислительной среды 2400. В типичном случае программное обеспечение операционной системы (не показано) предоставляет рабочую среду для другого программного обеспечения, исполняемого в вычислительной среде 2400, и координирует действия компонентов вычислительной среды 2400.
Хранилище 2440 данных может быть съемным или стационарным и включает в себя магнитные диски, магнитные ленты или кассеты, CD-ROM, CD-RW, DVD или любой другой носитель, который может быть использован, чтобы сохранять информацию, и к которому можно осуществлять доступ в рамках вычислительной среды 2400. Хранилище 2440 данных сохраняет инструкции для программного обеспечения 2480, реализующие кодек с усовершенствованным SDLT.
Устройством(ами) 2450 ввода может быть устройство сенсорного ввода, такое как клавиатура, мышь, перо или шаровой манипулятор, устройство голосового ввода, устройство сканирования или другое устройство, которое обеспечивает ввод в вычислительную среду 2400. Для аудиоустройством(ами) 2450 ввода может быть звуковая плата или аналогичное устройство, которое принимает ввод звука в аналоговой или цифровой форме, либо устройство считывания CD-ROM, которое предоставляет аудиовыборки вычислительной среде.
Устройствами 2460 вывода может быть дисплей, принтер, динамик, устройство записи CD-RW или другое устройство, которое предоставляет вывод из вычислительной среды 2400.
Коммутационные соединения 2470 обеспечивают обмен данными по среде обмена данными с другой вычислительной объектной сущностью. Среда обмена данными передает информацию, такую как машиноисполняемые инструкции, сжатую аудио- и видеоинформацию или другие данные в модулированном информационном сигнале. Модулированный информационный сигнал - это сигнал, одна или более характеристик которого установлены или изменены таким образом, чтобы кодировать информацию в этом сигнале. В качестве примера, а не ограничения, среда обмена данными включает в себя проводные или беспроводные методики, реализованные с помощью электрического, оптического, радиочастотного, инфракрасного, акустического или другого носителя.
Методики обработки цифрового мультимедиа в данном документе могут быть описаны в общем контексте машиночитаемых носителей. Машиночитаемые носители - это любые доступные носители, к которым можно осуществлять доступ в вычислительной среде. В качестве примера, а не ограничения, в вычислительной среде 2400 машиночитаемые носители включают в себя память 2420, хранилище 2440 данных, среды обмена данными и сочетания любого из вышеуказанного.
Методики обработки цифрового мультимедиа в данном документе могут быть описаны в общем контексте машиноисполняемых инструкций, таких как включенные в программные модули, исполняемые в вычислительной среде на целевом реальном или виртуальном процессоре. В общем, программные модули включают в себя процедуры, программы, библиотеки, объекты, классы, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют определенные абстрактные типы данных. Функциональные возможности программных модулей могут быть сочетаемы или разделены между программными модулями, как требуется в различных вариантах осуществления. Машиноисполняемые инструкции для программных модулей могут быть исполняемы в локальной или распределенной вычислительной среде.
Для целей представления подробное описание использует такие термины, как "определить", "сгенерировать", "настроить" и "применить", чтобы описывать операции вычислительной машины в вычислительной среде. Эти термины являются высокоуровневыми абстракциями для операций, выполняемых вычислительной машиной, и их не следует путать с действиями, выполняемыми человеком. Фактические операции вычислительной машины, соответствующие этим терминам, различаются в зависимости от реализации.
Принимая во внимание множество возможных вариантов осуществления, к которым могут быть применены принципы нашего изобретения, мы заявляем в изобретении все такие варианты осуществления, которые могут подпадать под объем, определяемый нижеследующей формулой изобретения и ее эквивалентами.