СПОСОБЫ И СИСТЕМЫ ЭКСПОНЕНЦИАЛЬНОГО РАЗБИЕНИЯ
METHODS AND SYSTEMS FOR EXPONENTIAL PARTITIONING

Область техники, к которой относится изобретение
Настоящее изобретение относится, в общем, к области технологий сжатия и распаковки цифрового видео, включая декодирование и кодирование. В частности, настоящее изобретение направлено на способ и системы для экспоненциального разбиения единиц кодирования.
Уровень техники
Видеокодек может включать в себя электронную схему или программное обеспечение, которое сжимает или распаковывает цифровое видео. Он может конвертировать несжатое видео в сжатый формат и наоборот. В контексте сжатия видео устройство, которое сжимает видео (и/или выполняет некоторые его функции), как правило, может называться кодером, и устройство, которое распаковывает видео (и/или выполняет некоторые его функции), может называться декодером.
Формат сжатых данных может соответствовать стандартной спецификации сжатия видео. Сжатие может осуществляться с потерями, так как в сжатом видео отсутствует некоторая информация, присутствующая в исходном видео. Следствием этого может быть то, что распакованное видео может иметь более низкое качество, чем исходное несжатое видео, так как недостаточно информации для точного восстановления исходного видео.
Могут существовать сложные взаимосвязи между качеством видео, объемом данных, используемых для представления видео (например, определяемых скоростью передачи данных), сложностью алгоритмов кодирования и декодирования, чувствительностью к потерям и ошибкам данных, простотой редактирования, произвольным доступом, сквозной задержкой (например, запаздыванием) и т.п.
Раскрытие сущности изобретения
В одном аспекте изобретения декодер может включать в себя схему, которая может быть выполнена с возможностью приема битового потока. В варианте осуществления схема может быть дополнительно выполнена с возможностью определения того, включен ли режим экспоненциального разбиения, и для разбиения блока на первую область и вторую область в соответствии с кривой линией. В варианте осуществления схема также может быть выполнена с возможностью восстановления пиксельных данных блока с использованием кривой линии, где первая область и вторая область могут быть непрямоугольными.
Декодер может дополнительно включать в себя один или несколько из следующих признаков, взятых по отдельности или в сочетании. В варианте осуществления режим экспоненциального разбиения может сигнализироваться в битовом потоке. В варианте осуществления кривая линия, разбивающая блок на первую область и вторую область, может быть охарактеризована заданным шаблоном. В другом варианте осуществления кривая линия, разбивающая блок на первую область и вторую область, может быть охарактеризована заданным значением коэффициента. Кроме того, в варианте осуществления режим экспоненциального разбиения доступен для размеров блоков, больших или равных 8×8 выборкам яркости. В другом варианте осуществления восстановление пиксельных данных может включать в себя вычисление предиктора для первой области с использованием ассоциированного вектора движения, содержащегося в битовом потоке. В другом варианте осуществления декодер также может включать в себя процессор энтропийного декодера, который может быть выполнен с возможностью приема битового потока и декодирования битового потока в квантованные коэффициенты. Декодер также может включать в себя процессор обратного квантования и обратного преобразования, который может быть выполнен с возможностью обработки квантованных коэффициентов, включая выполнение обратного дискретного косинусного преобразования. Кроме того, декодер может включать в себя фильтр удаления блочности, буфер кадров; и процессор интрапрогнозирования. В варианте осуществления битовый поток может включать в себя параметр, указывающий то, включен ли режим экспоненциального разбиения для блока. В другом варианте осуществления блок может образовывать часть дерева квадрантов плюс бинарное дерево решений. Кроме того, блок может быть нелистовым узлом квадродерева плюс бинарное дерево решений. В варианте осуществления блок может быть единицей дерева кодирования или единицей кодирования. В другом варианте осуществления первая область может быть единицей кодирования или единицей прогнозирования.
В дополнительном аспекте изобретения способ может включать в себя прием, декодером, битового потока и определение, упомянутым декодером, того, включен ли режим экспоненциального разбиения. Способ также может включать в себя определение, декодером, кривой линии, разбивающей блок на первую область и вторую область, а также восстановление, декодером, пиксельных данных блока и использование кривой линии.
Способ может дополнительно включать в себя один или несколько из следующих признаков, взятых по отдельности или в сочетании. В варианте осуществления режим экспоненциального разбиения может сигнализироваться в битовом потоке. В другом варианте осуществления кривая линия, разбивающая блок на первую и вторую области, может быть охарактеризована заданным шаблоном. В варианте осуществления кривая линия, разбивающая блок на первую область и вторую область, может быть охарактеризована заданным значением коэффициента. В варианте осуществления режим экспоненциального разбиения может быть доступен для размеров блоков, больших или равных 8×8 выборкам яркости. В другом варианте осуществления восстановление пиксельных данных может включать в себя вычисление предиктора для первой области с использованием ассоциированного вектора движения, содержащегося в битовом потоке. В другом варианте осуществления декодер может включать в себя процессор энтропийного декодера, который может быть выполнен с возможностью приема битового потока и декодирования битового потока в квантованные коэффициенты. Декодер также может включать в себя процессор обратного квантования и обратного преобразования, который может быть выполнен с возможностью обработки квантованных коэффициентов, включая выполнение обратного дискретного косинусного преобразования. Кроме того, декодирование может включать в себя фильтр удаления блочности, буфер кадров и процессор интрапрогнозирования. В варианте осуществления битовый поток может включать в себя параметр, указывающий то, включен ли режим экспоненциального разбиения для блока. В другом варианте осуществления блок может образовывать часть дерева квадрантов плюс бинарное дерево решений. Кроме того, блок может быть нелистовым узлом квадродерева плюс бинарное дерево решений. В другом варианте осуществления блок может быть единицей дерева кодирования или единицей кодирования. В варианте осуществления первая область может быть единицей кодирования или единицей прогнозирования.
В данном документе описаны также энергонезависимые компьютерные программные продукты (то есть физически воплощенные компьютерные программные продукты), которые хранят инструкции, которые при их исполнении одним или несколькими процессорами данных одной или нескольких вычислительных систем предписывают по меньшей мере одному процессору данных выполнять операции. Аналогичным образом, описаны также компьютерные системы, которые могут включать в себя один или несколько процессоров данных и память, подключенную к одному или нескольким процессорам данных. Память может временно или постоянно хранить инструкции, которые предписывают по меньшей мере одному процессору выполнять одну или несколько операций, описанных в данном документе. Кроме того, способы могут быть реализованы одним или несколькими процессорами данных либо в одной вычислительной системе, либо распределены между двумя или более вычислительными системами. Такие вычислительные системы могут быть соединены и могут обмениваться данными и/или командами, или другими инструкциями и т.п. через одно или несколько соединений, включая соединение по сети (например, Интернет, беспроводную глобальную вычислительную сеть, локальную вычислительную сеть, глобальную сеть, проводную сеть и т.п.), через прямое соединение между одной или несколькими вычислительными системами и т.д.
Подробности одного или нескольких вариантов предмета изобретения, описанного в данном документе, изложены ниже в подробном описании изобретения со ссылкой на сопроводительные чертежи. Другие признаки и преимущества предмета изобретения, описанного в данном документе, будут очевидны из описания и чертежей, а также из формулы изобретения.
Краткое описание чертежей
Фиг.1 – схема, иллюстрирующая пример блочного разбиения;
фиг.2 – схема, иллюстрирующая пример геометрического разбиения;
фиг.3A – схема, иллюстрирующая пример экспоненциального разбиения согласно некоторым аспектам текущего предмета изобретения, которое позволяет повысить эффективность сжатия;
фиг.3B – ряд графиков, иллюстрирующих примерные шаблонные экспоненциальные разбиения;
фиг.3C – примерные кривые, связанные с 4-мя заданными коэффициентами, которые могут определять примерную экспоненциальную функцию;
фиг.3D – другой примерный блок, показывающий разные начальные индексы P1 и конечные индексы P2, которые разбивают прямоугольный блок;
фиг.4 – блок-схема системы, иллюстрирующая пример видеокодера, способного выполнять экспоненциальное разбиение;
фиг.5A – блок-схема процесса, иллюстрирующая примерный процесс кодирования видео с экспоненциальным разбиением согласно некоторым аспектам текущего предмета изобретения, которое позволяет снизить сложность кодирования при одновременном повышении эффективности сжатия;
фиг.5B – блок-схема процесса, иллюстрирующая примерный процесс кодирования видео с экспоненциальным разбиением с использованием параметров разбиения согласно некоторым аспектам текущего предмета изобретения;
фиг.5C – блок-схема процесса, иллюстрирующая примерный процесс кодирования видео с экспоненциальным разбиением с использованием адаптивного дискретного косинусного преобразования формы согласно некоторым аспектам текущего предмета изобретения;
фиг.6 – блок-схема системы, иллюстрирующая примерный декодер, способный декодировать битовый поток с использованием экспоненциального разбиения;
фиг.7 – блок-схема процесса, иллюстрирующая примерный процесс декодирования битового потока с использованием экспоненциального разбиения;
фиг.8 – пример разбиения кадра на основе квадродерева плюс бинарное дерево;
фиг.9 – пример экспоненциального разбиения на уровне CU квадродерева плюс бинарное дерево, показанного на фиг.8;
фиг.10 – изображение, содержащее яблоко, которое не может быть эффективно разбито прямолинейными сегментами;
фиг.11 – схема, иллюстрирующая другой примерный блок, разбитый согласно экспоненциальному разбиению.
фиг.12 – схема, иллюстрирующая наследование параметров экспоненциального разбиения текущим блоком от соседнего в пространстве блока;
фиг.13 – примеры соседних в пространстве блоков для текущего блока; и
фиг.14 – примерный текущий блок со соседним во времени блоком, от которого текущий блок наследует параметры экспоненциального разбиения.
Одинаковые ссылочные позиции на различных чертежах обозначают одинаковые элементы.
Осуществление изобретения
Некоторые реализации текущего предмета изобретения относятся к экспоненциальному разбиению. При экспоненциальном разбиении прямоугольный блок может быть разбит на непрямоугольные области с помощью кривой по сравнению с прямолинейным отрезком. Использование кривой для разбиения блоков позволяет разбиению более точно следовать за границами объекта, что приводит к более низкой ошибке прогнозирования компенсации движения, меньшим остаткам и, таким образом, к повышению эффективности сжатия. В некоторых реализациях кривая может быть охарактеризована экспоненциальной функцией. Кривая (например, экспоненциальная функция) может быть определена с использованием заданных коэффициентов и/или шаблонов, которые можно сигнализировать в битовом потоке для использования декодером. В некоторых реализациях экспоненциальное разбиение может быть доступно для выборок яркости размером, равным 8×8 или более. При разбиении прямоугольных блоков с помощью кривой можно достичь большей эффективности сжатия для определенных объектов, чем в технологиях, ограниченных разбиением с помощью прямолиниейного отрезка, например, с помощью геометрического разбиения.
Кроме того, некоторые реализации текущего предмета изобретения относятся к прогнозированию параметров экспоненциального разбиения с использованием пространственных и/или временных опорных блоков. В некоторых реализациях для данного текущего блока переменная слияния с экспоненциальным разбиением может сигнализироваться, указывая то, что данный текущий блок может наследовать все или некоторые из этих параметров экспоненциального разбиения от другого блока. Этот другой блок может быть смежным в пространстве или во времени. Позволяя блокам наследовать параметры экспоненциального разбиения от других блоков, объем сигнализации в битовом потоке может быть уменьшен, что позволяет обеспечить большую эффективность сжатия.
Кроме того, некоторые реализации текущего предмета изобретения могут включать в себя выполнение адаптивного дискретного косинусного преобразования формы (SADCT) для областей (например, блоков), которые были разбиты на непрямоугольные области с помощью кривой по сравнению с прямолинейным отрезком. Если к блоку применяется экспоненциальное разбиение, существует вероятность того, что результирующие области (например, разбиения) приведут к тому, что одна область будет иметь низкую ошибку прогнозирования, а другая область будет иметь высокую ошибку прогнозирования. Соответственно, текущий предмет изобретения может включать в себя выполнение SADCT для области, имеющей низкую ошибку прогнозирования. За счет выполнения SADCT для области, имеющей низкую ошибку прогнозирования, можно повысить эффективность сжатия. И в некоторых реализациях во время декодирования может выполняться обратное SADCT для одной области, разбитой с использованием экспоненциального разбиения. В некоторых реализациях обратное SADCT может сигнализироваться в битовом потоке как выбор дополнительного преобразования к полному блочному дискретному косинусному преобразованию (DCT) для отрезка с низкой ошибкой прогнозирования. В некоторых реализациях обратное SADCT может выполняться на основе параметров экспоненциального разбиения и без явной сигнализации в битовом потоке, которая предусматривает выполнение обратного SADCT.
Компенсация движения может включать в себя подход к прогнозированию видеокадра или его части, принимая во внимание предыдущие и/или будущие кадры, с учетом движения камеры и/или объектов в видео. Ее можно использовать при кодировании и декодировании видеоданных для сжатия видео, например, при кодировании и декодировании с использованием стандарта экспертной группы по вопросам движущегося изображения (MPEG)-2 (также называемого усовершенствованным кодированием видео (AVC)). Компенсация движения позволяет описать картину в терминах преобразования опорного изображения в текущее изображение. Опорное изображение может быть предыдущим или будущим изображением во времени по сравнению с текущим изображением. В случае, когда изображения можно точно синтезировать из ранее переданных и/или сохраненных изображений, можно повысить эффективность сжатия.
Блочное разбиение может относиться к способу кодирования видео для поиска областей аналогичного движения. Некоторая форма блочного разбиения может быть найдена в стандартах видеокодеков, включая MPEG-2, H.264 (также называемый AVC или MPEG-4, часть 10) и H.265 (также называемый высокоэффективным кодированием видео (HEVC)). В примерных подходах блочного разбиения неперекрывающиеся блоки видеокадра могут быть разбиты на прямоугольные подблоки для поиска блочных разбиений, которые содержат пиксели с аналогичным движением. Этот подход может хорошо работать тогда, когда все пиксели блочного разбиения имеют аналогичное движение. Движение пикселей в блоке можно определить относительно ранее закодированных кадров.
На фиг.1 показана схема, иллюстрирующая пример блочного разбиения пикселей согласно варианту осуществления. Исходное прямоугольное изображение или блок 100, который может быть непосредственно подблоком (например, узлом в дереве кодирования), может быть разбит на прямоугольные подблоки. Например, на этапе 110 блок 100 разбивается на два прямоугольных подблока 110a и 110b. Затем подблоки 110a и 110b могут обрабатываться по отдельности. В качестве другого примера, на этапе 120 блок 100 разбивается на четыре прямоугольных подблока 120a, 120b, 120c и 120d. Сами подблоки могут дополнительно разбиваться до тех пор, пока не будет определено, что пиксели внутри подблоков совместно используют одно и то же движение, не будет достигнут минимальный размер блока или не будут выполнены другие критерии. Когда пиксели в подблоке имеют аналогичное движение, вектор движения может описывать движение всех пикселей в этой области.
Некоторые подходы к кодированию видео могут включать в себя геометрическое разбиение, при котором прямоугольный блок (например, показанный на фиг.1) дополнительно разбивается прямолинейным отрезком на две области, которые могут быть непрямоугольными. Например, на фиг.2 показана схема, иллюстрирующая пример геометрического разбиения. Примерный прямоугольный блок 200 (который может иметь ширину M пикселей и высоту N пикселей и обозначаться как M×N пикселей) может быть разбит вдоль прямолинейного отрезка P1P2 205 на две области (область 0 и область 1). Когда пиксели в области 0 имеют одинаковое движение, вектор движения может описывать движение всех пикселей в этой области. Вектор движения может использоваться для сжатия области 0. Аналогичным образом, когда пиксели в области 1 имеют аналогичное движение, ассоциированный вектор движения может описывать движение пикселей в области 1. Такое геометрическое разбиение может сигнализироваться в приемник (например, декодер) путем кодирования позиций P1 и P2 (или представлений позиций P1 и P2) в битовом потоке видео.
При кодировании видеоданных с использованием геометрического разбиения может быть определен прямолинейный отрезок 205 (или, более конкретно, точки P1 и P2). Но прямолинейный отрезок может не иметь возможности разбить блок таким образом, чтобы отражать границы объекта. В результате разбиение с использованием прямолинейных отрезков не позволяет обеспечить эффективное разбиение блока (например, таким образом, чтобы любой результирующий остаток был маленьким). Это может иметь значение "истина" в случаях, когда блок может содержать пиксели (например, выборки яркости), представляющие объект или границу, имеющую кривую (например, непрямую) границу. Например, обратимся теперь к фиг.10, на которой представлено изображение, содержащее яблоко, которое не может быть эффективно разбито с помощью прямолинейных отрезков. Яблоко включает в себя несколько прямоугольных блоков, указывающих участки изображения, при этом, если они разбиты с использованием прямолинейного отрезка в соответствии с геометрическим разбиением, разбиение не может точно следовать за границей объекта (например, яблока).
Некоторые реализации текущего предмета изобретения включают в себя разбиение прямоугольного блока на непрямоугольные области с помощью кривой по сравнению с прямолинейным отрезком. Использование кривой для разбиения блоков позволяет разбиениям более точно следовать за границами объекта, что приводит к более низкой ошибке прогнозирования, меньшим остаткам и, таким образом, к повышению эффективности сжатия. В некоторых реализациях кривая может быть охарактеризована экспоненциальной функцией. Кривая (например, экспоненциальная функция) может быть представлена с использованием заданных коэффициентов и/или индексов, которые могут сигнализироваться в битовом потоке для использования декодером. В некоторых реализациях экспоненциальное разбиение может быть доступно для блоков, больших или равных 8×8 выборкам яркости. За счет разбиения прямоугольных блоков кривой линией в текущем предмете изобретения можно достичь большей эффективности сжатия для определенных объектов, чем в технологиях, ограниченных разбиением прямолинейными отрезками, например, геометрическим разбиением.
На фиг.3A показана схема, иллюстрирующая пример экспоненциального разбиения согласно некоторым аспектам текущего предмета изобретения, которое позволяет повысить эффективность сжатия. Прямоугольный блок 300 включает в себя пиксели (например, выборки яркости). Прямоугольный блок 300 может иметь, например, размер 8×8 пикселей (например, выборки яркости) или более.
Как показано на фиг.3A, прямоугольный блок 300 может быть разбит на две области (например, область 0 и область 1, обозначенные 310 и 315, соответственно) кривой линией 305. Все выборки яркости в пределах области 310 можно рассматривать как имеющие одинаковое или аналогичное движение и могут быть представлены одним и тем же вектором движения. Аналогичным образом, можно считать, что все выборки яркости в области 315 имеют одинаковое или аналогичное движение и могут быть представлены одним и тем же вектором движения. В некоторых реализациях все выборки яркости слева или выше криволинейного отрезка 305, разделяющего прямоугольный блок 300, можно рассматривать как принадлежащие области 0 (310). В некоторых реализациях все выборки яркости справа или ниже криволинейного отрезка 305, разделяющего прямоугольный блок 300, можно рассматривать как принадлежащие области 1 (315). В некоторых реализациях все выборки яркости, через которые проходит криволинейный отрезок, разделяющий прямоугольный блок 300, принадлежат области 0 (310). В некоторых реализациях все выборки яркости, через которые проходит криволинейный отрезок, разделяющий прямоугольный блок 300, можно рассматривать как принадлежащие области 1 (315). Возможны и другие реализации.
В некоторых реализациях, выполняя экспоненциальное разбиение, можно уменьшить количество возможных разбиений, которые могут возникнуть (например, по сравнению с геометрическим разбиением), что позволяет снизить требования к вычислениям для оценки движения с тем, чтобы определить соответствующее разбиение (например, чтобы определить лучший линейный отрезок для разбиения блока). В некоторых реализациях, выполняя экспоненциальное разбиение, непрямоугольные области (например, 310 и 315) могут более точно следовать за границами объекта, тем самым уменьшая ошибку прогнозирования, остаточный размер и повышая эффективность сжатия по сравнению с кодированием видео с использованием геометрического разбиения.
Экспоненциальное разбиение может быть представлено в битовом потоке. В некоторых реализациях может использоваться режим экспоненциального разбиения, и в битовом потоке могут сигнализироваться соответствующие параметры. Например, экспоненциальное разбиение может быть представлено в битовом потоке посредством сигнализации заданных шаблонов экспоненциального разбиения. На фиг.3B показан ряд графиков, иллюстрирующих примерные разбиения шаблона согласно варианту осуществления. Эти регулярные экспоненциальные разбиения позволяют точно определить набор заданных ориентаций. В некоторых реализациях сигнализация может быть выполнена путем включения индекса в одно или более из этих регулярных (например, шаблонных) экспоненциальных разбиений, которые являются заданными. Например, на фиг.3C показаны примерные кривые, ассоциированные с 4-мя заданными шаблонами (1,2,3,4), согласно варианту осуществления. В некоторых реализациях количество изгибов шаблона может варьироваться.
В качестве другого примера экспоненциальные разбиения могут быть представлены в битовом потоке посредством сигнализации заданных коэффициентов, которые указывают степень кривизны, что позволяет обеспечить дополнительные экспоненциальные функции.
В некоторых реализациях заданный шаблон, используемый в режиме экспоненциального разбиения, может указывать прямолинейный отрезок. Например, на фиг.3C отрезок, индексированный коэффициентом 1, представляет собой прямую линию, которую можно рассматривать как частный случай экспоненциального разбиения, что может привести к результату, аналогичному результату геометрического разбиения.
В некоторых реализациях оба шаблона ориентации, пример которых показан на фиг.3B, и заданные шаблоны, пример которых показан на фиг.3C, могут использоваться для эффективной сигнализации большого количества потенциальных экспоненциальных разбиений.
В некоторых реализациях могут быть заданы начальный и конечный индексы. Например, на фиг.3A показан криволинейный отрезок, начинающийся в нижнем левом углу прямоугольного блока 300 и заканчивающийся в верхнем правом углу прямоугольного блока 300 согласно варианту осуществления. В некоторых реализациях начальный и конечный индексы могут быть явно указаны в битовом потоке. Например, на фиг.3D показан другой примерный блок, показывающий разные начальные индексы P1 и конечные индексы P2, которые разбивают прямоугольный блок 300. Начальные индексы P1 и конечные индексы P2 могут сигнализироваться напрямую или могут указываться индексом в набор заданных значений. В некоторых вариантах осуществления возможны другие параметры.
В некоторых реализациях параметры экспоненциального разбиения не обязательно должны быть включены в битовый поток для каждого блока, подвергающегося экспоненциальному разбиению (например, для которого режим экспоненциального разбиения имеет значение "истина"). Например, для данного текущего блока параметры экспоненциального разбиения могут быть унаследованы от другого блока (иногда называемого родительским блоком). Родительский блок может быть смежным в пространстве и/или во времени. Родительский блок может быть указан в битовом потоке индексом для заданного списка и/или может быть указан по меньшей мере путем создания списка кандидатов, индекс которого сигнализируется в битовом потоке.
На фиг.4 показана блок-схема системы, иллюстрирующая примерный вариант осуществления видеокодера 400, способного выполнять экспоненциальное разбиение, например, с помощью SADCT. Примерный видеокодер 400 принимает входное видео 405, которое может быть первоначально сегментировано или разбито в соответствии со схемой обработки, такой как схема разбиения макроблоков с древовидной структурой (например, квадродерево плюс бинарное дерево (QTBT)). Пример схемы разбиения макроблоков с древовидной структурой может включать в себя разбиение кадра изображения на большие блочные элементы, называемые единицами дерева кодирования (CTU). В некоторых реализациях каждый CTU можно дополнительно разбить один или несколько раз на множество подблоков, называемых единицами кодирования (CU). Результат этого разбиения может включать в себя группу подблоков, которые можно назвать блоками прогнозирования (PU). Кроме того, можно также использовать единицы преобразования (TU). Такая схема разбиения может включать в себя выполнение экспоненциального разбиения согласно некоторым аспектам текущего предмета изобретения. Например, на фиг.8 показан пример QTBT-разбиения кадра, и на фиг.9 показан пример экспоненциального разбиения на уровне CU QTBT, показанного на фиг.8.
Примерный видеокодер 400 включает в себя процессор 415 интрапрогнозирования, процессор 420 оценки/компенсации движения (также называемый процессором интерпрогнозирования), способный поддерживать экспоненциальное разбиение, процессор 425 преобразования/квантования, процессор 430 обратного квантования/обратного преобразования, внутриконтурный фильтр 435, буфер 440 декодированных изображений и процессор 445 энтропийного кодирования. В некоторых реализациях процессор 420 оценки/компенсации движения может выполнять экспоненциальное разбиение, включая определение того, может ли текущий блок унаследовать параметры экспоненциального разбиения от другого блока, и какой блок должен унаследовать параметры экспоненциального разбиения от каких блоков. В некоторых реализациях процессор 425 преобразования/квантования может выполнять SADCT. Параметры битового потока, которые сигнализируют о режимах экспоненциального разбиения и наследования, могут вводиться в процессор 445 энтропийного кодирования для включения в выходной битовый поток 450.
Во время работы для каждого блока кадра входного видео 405 может быть определено то, обрабатывать ли блок посредством интрапрогнозирования изображения или с использованием оценки/компенсации движения. Блок может подаваться в процессор 410 интрапрогнозирования или процессор 420 оценки/компенсации движения. Если блок должен обрабатываться посредством интрапрогнозирования, процессор 410 интрапрогнозирования может выполнять обработку для вывода предиктора. Если блок должен обрабатываться посредством оценки/компенсации движения, процессор 420 оценки/компенсации движения может выполнять обработку, включая использование экспоненциального разбиения для вывода предиктора.
Остаток может быть сформирован путем вычитания предиктора из входного видео. Остаток может быть принят процессором 425 преобразования/квантования, который может выполнять обработку преобразования (например, SADCT) для создания коэффициентов, которые можно квантовать. Квантованные коэффициенты и любая ассоциированная информация сигнализации может быть подана в процессор 445 энтропийного кодирования для энтропийного кодирования и включения в выходной битовый поток 450. Процессор 445 энтропийного кодирования может поддерживать кодирование информации сигнализации, относящейся к экспоненциальному разбиению. Кроме того, квантованные коэффициенты могут подаваться в процессор 430 обратного квантования/обратного преобразования, который может воспроизводить пиксели, которые могут быть объединены с предиктором и обработаны внутриконтурным фильтром 435, выходные данные которого сохраняются в буфере 440 декодированного изображения для использования процессором 420 оценки/компенсации движения, который может поддерживать экспоненциальное разбиение.
На фиг.5A показана блок-схема последовательности операций, иллюстрирующая примерный процесс 500A кодирования видео с экспоненциальным разбиением согласно некоторым аспектам текущего предмета изобретения, который позволяет снизить сложность кодирования при одновременном повышении эффективности сжатия. На этапе 510A видеокадр может подвергаться начальной блочной сегментации, например, с использованием схемы разбиения макроблоков с древовидной структурой, которая может включать в себя разбиение кадра изображения на CTU и CU. На этапе 520 может быть выбран блок для экспоненциального разбиения. Выбор может включать в себя идентификацию согласно правилу метрики того, что блок должен быть обработан в соответствии с режимом экспоненциального разбиения.
На этапе 530A может быть определено экспоненциальное разбиение. Может быть определена кривая линия (например, 305), которая будет разбивать пиксели, содержащиеся в блоке, в соответствии с их движением между кадрами на две непрямоугольные области (например, область 0 и область 1) таким образом, чтобы пиксели (например, выборки яркости) в одной из областей (например, в области 0) имели аналогичное движение, и пиксели в другой области (например, в области 1) имели аналогичное движение. На этапе 550A определенное экспоненциальное разбиение может быть просигнализировано в битовом потоке. Передача сигналов в битовом потоке может включать в себя, например, включение индекса в один или несколько заданных шаблонов и/или коэффициентов.
На фиг.5B показана блок-схема последовательности операций, иллюстрирующая примерный процесс 500B кодирования видео с экспоненциальным разбиением согласно некоторым аспектам текущего предмета изобретения, который позволяет снизить сложность кодирования при одновременном повышении эффективности сжатия. На этапе 510B видеокадр может подвергаться начальной блочной сегментации, например, с использованием схемы разбиения макроблоков с древовидной структурой, которая может включать в себя разбиение кадра изображения на CTU и CU. На этапе 520B может быть выбран блок для экспоненциального разбиения. Выбор может включать в себя идентификацию согласно правилу метрики того, что блок должен быть обработан в соответствии с режимом экспоненциального разбиения.
На этапе 530B может быть определено экспоненциальное разбиение. Может быть определена кривая линия (например, 305), которая будет разбивать пиксели, содержащиеся в пределах блока, в соответствии с их движением между кадрами на две непрямоугольные области (например, область 0 и область 1) таким образом, чтобы пиксели (например, выборки яркости) в пределах одной из областей (например, в области 0) имели аналогичное движение, и пиксели в другой области (например, в области 1) имели аналогичное движение.
На этапе 540B может быть определено представление параметра разбиения, которое может включать в себя определение того, наследует ли текущий блок параметры экспоненциального разбиения от другого блока, и от какого другого блока будет унаследован текущий блок.
На этапе 550B определенное экспоненциальное разбиение может быть просигнализировано в битовом потоке. Сигнализация в битовом потоке может включать в себя, например, включение индекса в заданный список соседних в пространстве и во времени блоков.
На фиг.5C показана блок-схема последовательности операций, иллюстрирующая примерный процесс 500C кодирования видео с экспоненциальным разбиением и SADCT в соответствии с некоторыми аспектами текущего предмета изобретения, который может снизить сложность кодирования при одновременном повышении эффективности сжатия. На этапе 510C видеокадр может подвергаться начальной блочной сегментации, например, с использованием схемы разбиения макроблоков с древовидной структурой, которая может включать в себя разбиение кадра изображения на CTU и CU. На этапе 520C может быть выбран блок для экспоненциального разбиения. Выбор может включать в себя идентификацию согласно правилу метрики того, что блок должен быть обработан в соответствии с режимом экспоненциального разбиения.
На этапе 530C может быть определено экспоненциальное разбиение. Может быть определена кривая линия (например, 305), которая будет разбивать пиксели, содержащиеся в блоке, в соответствии с их движением между кадрами на две непрямоугольные области (например, область 0 и область 1) таким образом, чтобы пиксели (например, выборки яркости) в одной из областей (например, в области 0) имели аналогичное движение, и пиксели в другой области (например, в области 1) имели аналогичное движение. На этапе 540C может быть определено соответствующее преобразование для одной или нескольких из области 0 и области 1. Например, может быть определено то, имеет ли область 0 или область 1 низкую ошибку прогнозирования. В ответ на определение того, что область 0 имеет низкую ошибку прогнозирования, область 0 может быть закодирована с использованием SADCT. В ответ на определение того, что область 1 имеет низкую ошибку прогнозирования, область 1 может быть закодирована с использованием SADCT. В некоторых реализациях можно считать, что область имеет низкую ошибку прогнозирования тогда, когда ошибка прогнозирования ниже заданного порога.
На этапе 550C определенное экспоненциальное разбиение и выбор преобразования могут быть просигнализированы в битовом потоке. Сигнализация в битовом потоке может включать в себя, например, включение индекса в один или несколько заданных шаблонов и/или коэффициентов. Сигнализация в битовом потоке может включать в себя, например, передачу сигналов SADCT в качестве дополнительного выбора преобразования для DCT полного блока для области (например, области 0 или области 1), которая имеет низкую ошибку прогнозирования.
На фиг.6 показана блок-схема системы, иллюстрирующая примерный декодер 600, допускающий декодирование битового потока 670 с использованием экспоненциального разбиения и/или обратного SADCT. Декодер 600 включает в себя процессор 610 энтропийного декодера, процессор 620 обратного квантования и обратного преобразования, фильтр 630 удаления блочности, буфер 640 кадров, процессор 650 компенсации движения и процессор 660 интрапрогнозирования. В некоторых реализациях битовый поток 670 включает в себя параметры, которые сигнализируют режим экспоненциального разбиения. В некоторых реализациях битовый поток 670 включает в себя параметры, которые сигнализируют тип применяемого обратного преобразования (например, обратное блочное DCT или обратное SADCT). Процессор 650 компенсации движения может восстанавливать информацию о пикселях с использованием экспоненциального разбиения и/или обратного SADCT, как описано в данном документе.
Во время работы битовый поток 670 может приниматься декодером 600 и вводиться в процессор 610 энтропийного декодера, который энтропийно декодирует битовый поток в квантованные коэффициенты. Квантованные коэффициенты могут подаваться в процессор 620 обратного квантования и обратного преобразования, который может выполнять обратное квантование и обратное преобразование с использованием обратного SADCT и в соответствии с сигналами в битовом потоке. Обратное преобразование позволяет создать остаточный сигнал, который может быть добавлен к выходному сигналу процессора 650 компенсации движения или процессора 660 интрапрогнозирования в соответствии с режимом обработки. Выходной сигнал процессора 650 компенсации движения и процессора 660 интрапрогнозирования может включать в себя прогнозирование блока на основе ранее декодированного блока. Сумма прогнозирования и остатка может быть обработана фильтром 630 удаления блочности и сохранена в буфере 640 кадров. Для заданного блока (например, CU или PU), когда битовый поток 670 сигнализирует, что режим разбиения является экспоненциальным разбиением, процессор 650 компенсации движения может построить прогнозирование на основе схемы экспоненциального разбиения, описанной в данном документе, включая, для текущего блока, извлечение из битового потока индекса в заданный список соседних в пространстве и во времени блоков и использование параметров экспоненциального разбиения для указанного блока с целью восстановления текущего блока.
На фиг.7 показана блок-схема процесса, иллюстрирующая примерный процесс 700 декодирования битового потока с использованием экспоненциального разбиения, которое в некоторых реализациях может использовать обратное SADCT. На этапе 710 принимается блок (например, CTU, CU, PU). Прием может включать в себя извлечение и/или синтаксический анализ блока и связанной с ним информации сигнализации из битового потока. На этапе 720 можно определить, включен ли режим экспоненциального разбиения (например, значение "истина") для блока. Если режим экспоненциального разбиения не включен (например, значение "ложь"), декодер может обработать блок, используя альтернативный режим разбиения, такой как геометрическое разбиение. Если режим экспоненциального разбиения включен (например, значение "истина"), на этапе 730 декодер может извлечь и/или определить один или несколько параметров, которые характеризуют экспоненциальное разбиение и преобразование. Например, эти параметры могут включать в себя индексы экспоненциального коэффициента, значения экспоненциального коэффициента, индексы шаблона ориентации и/или индексы начала и конца кривой линии (например, P1P2). Параметры извлечения могут включать в себя идентификацию и извлечение параметров из битового потока (например, синтаксический анализ битового потока). Упомянутые параметры могут включать в себя параметры преобразования, например, которые могут указывать то, следует ли обрабатывать блок с помощью обратного SADCT. Кроме того, определение одного или нескольких параметров, которые характеризуют экспоненциальное разбиение, может включать в себя определение того, что было просигнализировано слияние с экспоненциальным разбиением, и определение соседнего блока, от которого текущий блок наследует параметры экспоненциального разбиения, с использованием индекса, содержащегося в битовом потоке. На этапе 740 блок может быть обработан согласно экспоненциальному разбиению (например, для создания прогнозирования), включая определение ассоциированной информации о движении для каждой области. В некоторых реализациях на этапе 740 блок может быть дополнительно обработан с использованием обратного SADCT.
Хотя выше было подробно описано несколько вариаций, возможны другие модификации или дополнения. Например, в некоторых реализациях экспоненциальное разбиение может применяться к симметричным блокам (8×8, 16×16, 32×32, 64×64, 128×128 и т.п.), а также к различным асимметричным блокам (8×4, 16×8 и т.п.).
В некоторых реализациях пространственное и временное прогнозирование экспоненциального параметра может выполняться для размера блока яркости 16×16 или более, такого как 64×64 и/или 128×128. В некоторых реализациях может быть установлен минимальный размер блока 16×16.
Разбиение может быть просигнализировано в битовом потоке на основе решений относительно скорости-искажения в кодере. Кодирование может быть основано на комбинации регулярных заданных разбиений (например, шаблонов), пространственно-временного прогнозирования разбиения и дополнительных смещений. Каждая экспоненциально разбитая область может использовать прогнозирование с компенсацией движения или интрапрогнозированием. Граница прогнозируемых областей может быть сглажена перед добавлением остатка. Для остаточного кодирования кодер может выбирать между обычным прямоугольным DCT для всего блока и DCT с адаптацией к форме для каждой области.
В некоторых реализациях может быть реализовано квадродерево плюс бинарное дерево решений (QTBT). В QTBT на уровне единицы дерева кодирования параметры разбиения QTBT динамически выводятся для адаптации к локальным характеристикам без передачи каких-либо служебных данных. Впоследствии на уровне единицы кодирования (CU) древовидная структура решений совместного классификатора может исключить ненужные итерации и контролировать риск ложного прогнозирования. В некоторых реализациях экспоненциальное разбиение может быть доступно как дополнительный инструмент разбиения, доступный на каждом листовом узле QTBT. В некоторых реализациях экспоненциальное разбиение доступно как дополнительный инструмент кодирования на уровне CU разбиения QTBT. Например, на фиг.8 показан пример разбиения QTBT кадра, и на фиг.9 показан пример экспоненциального разбиения на уровне CU QTBT, показанного на фиг.8.
В некоторых реализациях декодер включает в себя процессор экспоненциального разбиения, который вырабатывает экспоненциальное разбиение для текущего блока и предоставляет всю информацию, относящуюся к разбиениям, для зависимых процессов. Процессор экспоненциального разбиения может напрямую влиять на компенсацию движения, так как оно может выполняться по отрезкам в случае экспоненциального разбиения блока. Кроме того, процессор разбиения может предоставлять информацию о форме в процессор интрапрогнозирования и процессор кодирования с преобразованием.
В некоторых реализациях дополнительные элементы синтаксиса могут сигнализироваться на разных уровнях иерархии битового потока. Для включения экспоненциального разбиения для всей последовательности флаг включения может быть закодирован в наборе параметров последовательности (SPS). Кроме того, флаг CTU может быть закодирован на уровне единицы дерева кодирования (CTU), чтобы указать то, используют ли какие-либо единицы кодирования (CU) экспоненциальное разбиение. Флаг CU может быть закодирован для того, чтобы указать то, использует ли текущая единица кодирования экспоненциальное разбиение. Параметры, которые точно определяют кривую линию в блоке, могут быть закодированы. Для каждой области может быть декодирован флаг, который точно определяют то, является ли текущая область интер- или интрапрогнозируемой.
В некоторых реализациях может быть указан минимальный размер области.
Обратимся теперь к фиг.11, на котором показан график, иллюстрирующий другой примерный блок 1100, разбитый согласно экспоненциальному разбиению. Так как экспоненциальное разбиение, вероятно, будет использоваться для блоков (например, единиц кодирования), содержащих объекты с кривыми границами объектов, вполне вероятно, что разбиение приведет к тому, что одна область будет иметь низкую ошибку прогнозирования, а другая область будет иметь высокую ошибку прогнозирования. Например, как показано на фиг.11, блок разбит кривой в соответствии с экспоненциальным разбиением. Предполагая, что выборки яркости в блоке представляют шар и фон, две области (S0 и S1) будут включать в себя выборки яркости, соответствующие фону и шару, соответственно. В результате, область S0 будет иметь высокую ошибку прогнозирования, так как область S0 относится к фону, тогда как область S1 будет иметь низкую ошибку прогнозирования, так как область S1 относится к шару. Соответственно, некоторые аспекты текущего предмета изобретения могут включать в себя выполнение SADCT для области, имеющей низкую ошибку прогнозирования. За счет выполнения SADCT для области, имеющей низкую ошибку прогнозирования, вместо DCT полного блока, можно повысить эффективность сжатия.
В некоторых реализациях во время декодирования параметры для выполнения обратного SADCT могут быть выведены из параметров экспоненциального разбиения. Например, размер преобразования может быть определен из индекса шаблона экспоненциального разбиения.
В некоторых реализациях SADCT может быть реализован для размеров блоков 64x64 и/или 128×128. В некоторых реализациях SADCT может сигнализироваться как дополнительный выбор преобразования для DCT полных блоков для отрезка с низкой ошибкой прогнозирования.
Обратимся теперь к фиг.12, на которой показан график, иллюстрирующий наследование параметров экспоненциального разбиения текущим блоком 1205 от пространственно соседнего блока 1210. Кривая указывает границу 1215 объекта на изображении. Текущий блок 1205 и пространственно соседний блок 1210 указывают блоки единиц кодирования или единиц прогнозирования в квадродереве плюс бинарное дерево (QTBT). Как показано на чертеже, граница 1215 объекта обычно имеет относительно равномерную кривизну. Как соседний блок 1210, так и текущий блок 1205 будут разбиваться с использованием экспоненциального разбиения. Используя некоторые реализации текущего предмета изобретения, вместо отправки всех параметров экспоненциального разбиения (например, индексов для формирования и/или шаблонов ориентации, коэффициентов, начальных индексов, конечных индексов и/или т.п.), слияние экспоненциального разбиения может сигнализироваться в битовом потоке вместе с индексом соседнего блока 1210. Во время декодирования текущего блока текущий блок может наследовать некоторые или все параметры экспоненциального разбиения от указанного соседнего блока. На фиг.13 показаны примеры соседних в пространстве блоков для текущего блока. Соседние в пространстве блоки могут включать в себя блоки (например, единицы кодирования или единицы прогнозирования), которые находятся в том же месте, что и A0 (снизу слева), A1 (слева), B0 (сверху справа), B1 (сверху) и B2 (сверху слева) (например, перекрываются с ними).
Кроме того, соседний блок, от которого данный текущий блок наследует параметры экспоненциального разбиения, может быть соседним во времени. На фиг.14 показаны примерный текущий блок 1405 с соседним во времени блоком 1410, от которого текущий блок 1405 наследует параметры экспоненциального разбиения. Как показано на фиг.14, опорное изображение 1415 включает в себя соседний блок 1410, который имеет соответствующий вектор движения 1420, характеризующий движение соседнего блока 1410 из опорного изображения 1415 в текущее изображение 1425, которое содержит текущий блок 1405. Используя некоторые реализации текущего предмета изобретения, вместо отправки всех параметров экспоненциального разбиения (например, индексов для формирования и/или шаблонов ориентации, коэффициентов и/или т.п.), слияние экспоненциального разбиения может сигнализироваться в битовом потоке вместе с индексом в соседний блок 1410. Во время декодирования текущего блока 1405, текущий блок 1405 может наследовать некоторые или все параметры экспоненциального разбиения от указанного соседнего блока 1410.
В некоторых реализациях родительский блок не обязательно должен быть смежным блоком, например, он может быть другим блоком в текущем кадре, который был ранее декодирован.
В некоторых реализациях текущий блок может наследовать от другого блока только некоторые параметры экспоненциального разбиения. Например, текущий блок может наследовать от первого родительского блока первый параметр (например, шаблон формы), и в битовый поток могут быть включены дополнительные параметры (например, начальную точку, конечную точку, шаблон ориентации и т.п.).
Предмет изобретения, описанный в данном документе, предусматривает множество технических преимуществ. Например, некоторые реализации текущего предмета изобретения могут предусматривать разбиение блоков, что увеличивает эффективность сжатия. В некоторых реализациях эффективные визуальные эффекты можно достичь за счет реализации разбиения таким образом, чтобы более точно следовать границам объекта. Аналогичным образом, в некоторых реализациях блокирующие артефакты на границах объекта можно уменьшить за счет реализации разбиения таким образом, чтобы более точно следовать границам объекта. В некоторых реализациях эффективность сжатия может быть повышена и сложность может быть уменьшена за счет реализации SADCT в качестве выбора дополнительного преобразования для DCT полного блока и применения SADCT к экспоненциально разбитым областям, которые имеют низкую ошибку прогнозирования.
Один или несколько аспектов или признаков предмета изобретения, описанного в данном документе, могут быть реализованы в виде цифровых электронных схем, интегральных схем, специально разработанных специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), компьютерного оборудования, программно-аппаратного обеспечения, программного обеспечения и/или их комбинаций. Эти различные аспекты или признаки могут включать в себя реализацию в одной или нескольких компьютерных программах, которые являются исполняемыми и/или интерпретируемыми в программируемой системе, в том числе по меньшей мере один программируемый процессор, который может быть специального или общего назначения, подключенный для приема данных и инструкций из системы хранения и передачи данных и инструкций в систему хранения, по меньшей мере одно устройство ввода и по меньшей мере одно устройство вывода. Программируемая система или вычислительная система может включать в себя клиентов и серверы. Клиент и сервер обычно удалены друг от друга и обычно взаимодействуют через сеть связи. Взаимосвязь клиента и сервера возникает благодаря компьютерным программам, запущенным на соответствующих компьютерах и имеющим взаимосвязь клиент-сервер друг с другом.
Эти компьютерные программы, которые также могут упоминаться как программы, программное обеспечение, программные приложения, приложения, компоненты или код, включают в себя машинные инструкции для программируемого процессора и могут быть реализованы на процедурном языке высокого уровня, объектно-ориентированном языке программирования, языке функционального программирования, языке логического программирования и/или языке ассемблера/машинном языке. Используемый в данном документе термин "машиночитаемый носитель информации" относится к любому компьютерному программному продукту, аппаратному устройству и/или устройству, такому, например, как магнитные диски, оптические диски, память и программируемые логические устройства (PLD), используемые для подачи машинных инструкций и/или данных в программируемый процессор, включая машиночитаемый носитель информации, который принимает машинные инструкции в виде машиночитаемого сигнала. Термин "машиночитаемый сигнал" относится к любому сигналу, используемому для подачи машинных инструкций и/или данных в программируемый процессор. Машиночитаемый носитель информации может хранить такие машинные инструкции невременным образом, как, например, в невременной твердотельной памяти, на магнитном жестком диске или на любом эквивалентном носителе информации. Машиночитаемый носитель информации может альтернативно или дополнительно хранить такие машинные инструкции временным образом, например, как в кэш-памяти процессора или другой памяти с произвольным доступом, взаимодействующей с одним или несколькими ядрами физического процессора.
Чтобы обеспечить взаимодействие с пользователем, один или несколько аспектов или признаков предмета изобретения, описанного в данном документе, могут быть реализованы на компьютере, имеющем устройство отображения, такое, например, как электронно-лучевая трубка (ЭЛТ, CRT) или жидкокристаллический дисплей (ЖКД, LCD) или светодиодный (СИД, LED) монитор для отображения информации пользователю, и клавиатуру и указательное устройство, такое, например, как мышь или шаровой манипулятор, с помощью которых пользователь может вводить данные в компьютер. Для взаимодействия с пользователем могут использоваться и другие виды устройств. Например, сигнал обратной связи, подаваемый пользователю, может быть любой формой сенсорной обратной связи, такой, например, как визуальная обратная связь, слуховая обратная связь или тактильная обратная связь; и ввод от пользователя может быть принят в любой форме, включая акустический, речевой или тактильный ввод. Другие возможные устройства ввода включают в себя сенсорные экраны или другие сенсорные устройства, такие как одно- или многоточечные резистивные или емкостные трекпады, аппаратные средства и программное обеспечение для распознавания голоса, оптические сканеры, оптические указатели, цифровые устройства захвата изображений и соответствующее программное обеспечение для интерпретации и т.п.
В приведенных выше описаниях и в формуле изобретения могут встречаться такие фразы, как "по меньшей мере один из" или "один или более из", за которыми следует конъюнктивный список элементов или признаков. Термин "и/или" может также встречаться в списке из двух или более элементов или признаков. Если иное неявно или явно не противоречит контексту, в котором оно используется, такая фраза предназначена для обозначения любого из перечисленных элементов или признаков по отдельности или любых перечисленных элементов или признаков в сочетании с любыми другими перечисленными элементами или признаками. Например, каждая фраза "по меньшей мере один из A и B"; "один или более из A и B" и "A и/или B" означает "A отдельно, B отдельно или A и B вместе". Подобная интерпретация также предназначена для списков, состоящих из трех и более пунктов. Например, каждая фраза "по меньшей мере один из A, B и C;" "один или более из A, B и C" и "A, B и/или C" предназначена для обозначения "A отдельно, B отдельно, C отдельно, A и B вместе, A и C вместе, B и C вместе, или A и B и C вместе". Кроме того, термин "на основе", используемый выше и в формуле изобретения предназначен для обозначения "на основе по меньшей мере частично", поэтому также допустим неуказанный признак или элемент.
Предмет изобретения, описанный в данном документе, может быть воплощен в системах, устройствах, способах и/или изделиях в зависимости от желаемой конфигурации. Реализации, изложенные в предыдущем описании, не представляют все реализации, согласующиеся с предметом изобретения, описанным в данном документе. Вместо этого они представляют собой лишь некоторые примеры, согласующиеся с аспектами, относящимися к описанному предмету изобретения. Хотя некоторые варианты подробно описаны выше, возможны и другие модификации или дополнения. В частности, в дополнение к изложенному в данном документе, могут быть предоставлены дополнительные признаки и/или вариации. Например, реализации, описанные выше, могут быть направлены на различные комбинации и подкомбинации раскрытых признаков и/или комбинации и подкомбинации нескольких дополнительных признаков, раскрытых выше. Кроме того, логические последовательности операций, изображенные на сопроводительных чертежах и/или описанные в данном документе, не обязательно требуют конкретного показанного порядка или последовательного порядка для достижения желаемых результатов. Другие реализации могут находиться в пределах объема нижеследующей формулы изобретения.