СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ВИДЕОСИГНАЛОВ Российский патент 2024 года по МПК H04N19/109 H04N19/119 H04N19/503 

Описание патента на изобретение RU2813667C2

Предпосылки изобретения

Область техники, к которой относится изобретение

[01] Настоящее изобретение относится к способу и устройству для кодирования и декодирования видеосигналов.

Предшествующий уровень техники

[02] По мере увеличения дисплейных панелей требуется все больше видеоуслуг более высокого качества. Самой большой проблемой видеоуслуг высокой четкости является значительное увеличение объема данных, и для решения этой проблемы активно проводятся исследования по улучшению степени сжатия видео. В качестве иллюстративного примера группа экспертов по кинематографии (MPEG) и группа экспертов по видеокодированию (VCEG) в рамках сектора по стандартизации телекоммуникаций в составе Международного союза электросвязи (ITU-T) сформировали объединенную команду по видеокодированию (JCT-VC) в 2009 году. JCT-VC предложила высокоэффективное видеокодирование (HEVC), которое представляет собой стандарт сжатия видео, имеющий эффективность сжатия примерно вдвое выше, чем эффективность сжатия H.264/AVC, и он одобрен в качестве стандарта 25 января 2013 г. С быстрым развитием видеоуслуг высокой четкости эффективность HEVC постепенно обнаруживает свои ограничения.

Сущность изобретения

[03] Целью настоящего изобретения является предоставление способа уточнения вектора движения, полученного из кандидата на слияние, на основании вектора смещения при кодировании/декодировании видеосигнала и устройства для выполнения способа.

[04] Другой целью настоящего изобретения является предоставление способа передачи вектора смещения при кодировании/декодировании видеосигнала и устройства для выполнения способа.

[05] Технические задачи, которые должны быть решены в настоящем изобретении, не ограничиваются техническими задачами, упомянутыми выше, и не упомянутые другие задачи могут быть ясно поняты специалистами в данной области техники из следующего описания.

[06] Способ декодирования/кодирования видеосигналов согласно настоящему изобретению включает следующие этапы: генерирование списка кандидатов на слияние для текущего блока; определение кандидата на слияние для текущего блока из кандидатов на слияние, включенных в список кандидатов на слияние; получение вектора смещения для текущего блока; и получение вектора движения для текущего блока путем сложения вектора смещения с вектором движения кандидата на слияние.

[07] В способе кодирования и декодирования видеосигналов согласно настоящему изобретению величина вектора смещения может быть определена на основании первой индексной информации, указывающей одного из кандидатов величины движения.

[08] В способе кодирования и декодирования видеосигналов согласно настоящему изобретению по меньшей мере одно из максимального числового значения и минимального числового значения кандидатов величины движения может устанавливаться по-разному согласно числовому значению флага, указывающего диапазон числовых значений кандидатов величины движения.

[09] В способе кодирования и декодирования видеосигналов согласно настоящему изобретению флаг может передаваться посредством набора параметров изображения.

[10] В способе кодирования и декодирования видеосигналов согласно настоящему изобретению по меньшей мере одно из максимального числового значения и минимального числового значения кандидатов величины движения может быть установлено по-разному согласно точности вектора движения для текущего блока.

[11] В способе кодирования и декодирования видеосигналов согласно настоящему изобретению величина вектора смещения может быть получена путем применения операции сдвига к значению, указанному кандидатом величины движения, указанным первой индексной информацией.

[12] В способе кодирования и декодирования видеосигналов согласно настоящему изобретению направление вектора смещения может быть определено на основании второй индексной информации, указывающей одного из кандидатов на направление вектора.

[13] Признаки, кратко изложенные выше в отношении настоящего изобретения, являются просто иллюстративными аспектами подробного описания настоящего изобретения, которые будут описаны ниже, и не ограничивают объем настоящего изобретения.

[14] Согласно настоящему изобретению эффективность предсказания, осуществляемого между изображениями, может быть повышена за счет уточнения вектора движения кандидата на слияние на основании вектора смещения.

[15] Согласно настоящему изобретению эффективность предсказания, осуществляемого между изображениями, может быть повышена за счет адаптивного определения величины и направления вектора смещения.

[16] Эффекты, которые могут быть получены из настоящего изобретения, не ограничены упомянутыми выше эффектами, и не упомянутые другие эффекты могут быть ясно поняты специалистами в данной области техники из следующего описания.

Краткое описание графических материалов

[17] На фиг.1 представлена структурная схема, показывающая видеокодер согласно одному варианту осуществления настоящего изобретения.

[18] На фиг.2 представлена структурная схема, показывающая видеодекодер согласно одному варианту осуществления настоящего изобретения.

[19] На фиг.3 представлен вид, показывающий базовый элемент кодового дерева согласно одному варианту осуществления настоящего изобретения.

[20] На фиг.4 представлен вид, показывающий различные типы разбиения блока кодирования.

[21] На фиг.5 представлен вид, показывающий схему разбиения элемента кодового дерева.

[22] На фиг.6 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, согласно одному варианту осуществления настоящего изобретения.

[23] На фиг.7 представлен вид, показывающий нелинейные движения объекта.

[24] На фиг.8 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, на основании аффинного движения согласно одному варианту осуществления настоящего изобретения.

[25] На фиг.9 представлен вид, показывающий пример аффинных исходных векторов каждой модели аффинного движения.

[26] На фиг.10 представлен вид, показывающий пример аффинных векторов подблоков в 4-параметрической модели движения.

[27] На фиг.11 представлена блок-схема, изображающая процесс получения информации о движении текущего блока с использованием режима слияния.

[28] На фиг.12 представлен вид, показывающий пример кандидатных блоков, используемых для получения кандидата на слияние.

[29] На фиг.13 представлен вид, показывающий положения опорных отсчетов.

[30] На фиг.14 представлен вид, показывающий пример кандидатных блоков, используемых для получения кандидата на слияние.

[31] На фиг.15 представлен вид, показывающий пример, в котором положение опорного отсчета изменено.

[32] На фиг.16 представлен вид, показывающий пример, в котором положение опорного отсчета изменено.

[33] На фиг.17 представлен вид, показывающий вектор смещения согласно значениям distanceidx, указывающей величину вектора смещения, и direction_idx, указывающей направление вектора смещения.

[34] На фиг.18 представлен вид, показывающий вектор смещения согласно значениям distance_idx, указывающей величину вектора смещения, и direction_idx, указывающей направление вектора смещения.

Подробное описание предпочтительного варианта осуществления

[35] Далее будет подробно описан вариант осуществления настоящего изобретения со ссылкой на прилагаемые графические материалы.

[36] Кодирование и декодирование видео выполняется посредством элемента блока. Например, процесс кодирования/декодирования, такой как преобразование, квантование, предсказание, фильтрование в контуре, восстановление и т.п., может выполняться в отношении блока кодирования, блока преобразования или блока предсказания.

[37] Далее блок, подлежащий кодированию/декодированию, будет называться «текущим блоком». Например, текущий блок может представлять блок кодирования, блок преобразования или блок предсказания согласно текущему этапу процесса кодирования/декодирования.

[38] Кроме того, следует понимать, что термин «элемент», используемый в настоящем описании, обозначает базовый элемент для выполнения конкретного процесса кодирования/декодирования, и термин «блок» обозначает массив отсчетов предварительно определенного размера. Если не указано иное, «блок» и «элемент» могут использоваться с одинаковым значением. Например, в варианте осуществления, описанном ниже, следует понимать, что блок кодирования и элемент кодирования имеют одинаковое значение.

[39] На фиг.1 представлена структурная схема, показывающая видеокодер согласно одному варианту осуществления настоящего изобретения.

[40] Как показано на фиг.1, устройство 100 для кодирования видео может содержать часть 110 для разбиения изображений, части 120 и 125 для предсказания, часть 130 для преобразования, часть 135 для квантования, часть 160 для перестановки, часть 165 для энтропийного кодирования, часть 140 для обратного квантования, часть 145 для обратного преобразования, часть 150 для фильтрации и запоминающее устройство 155.

[41] Каждый из компонентов, показанных на фиг.1, показан независимо, чтобы представить характерные функции, отличающиеся друг от друга в устройстве для кодирования видео, но это не означает, что каждый компонент образован элементом конфигурации отдельного аппаратного обеспечения или одного программного обеспечения. То есть каждый компонент включен в список в качестве компонента для удобства объяснения, и по меньшей мере два из компонентов могут быть объединены для образования единого компонента, или один компонент может быть разделен на множество компонентов для выполнения функции. Варианты осуществления с объединением и варианты осуществления с разделением компонентов также входят в объем настоящего изобретения, если они не выходят за рамки сущности настоящего изобретения.

[42] Кроме того, некоторые из компонентов не являются важными компонентами, которые выполняют основные функции в настоящем изобретении, но могут быть необязательными компонентами только для повышения эффективности. Настоящее изобретение может быть реализовано путем включения только компонентов, необходимых для реализации сущности настоящего изобретения, за исключением компонентов, используемых для повышения эффективности, и конструкция, содержащая только необходимые компоненты, за исключением необязательных компонентов, используемых для повышения эффективности, также включена в объем настоящего изобретения.

[43] Часть 110 для разбиения изображений может разбивать входное изображение на по меньшей мере один элемент обработки. В этом случае элемент обработки может представлять собой элемент предсказания (PU), элемент преобразования (TU) или элемент кодирования (CU). Часть 110 для разбиения изображений может разбивать изображение на совокупность, состоящую из множества элементов кодирования, элементов предсказания и элементов преобразования, и кодировать изображение за счет выбора совокупности элемента кодирования, элемента предсказания и элемента преобразования на основании предварительно определенного критерия (например, функции стоимости).

[44] Например, одно изображение может быть разбито на множество элементов кодирования. Для разбиения элементов кодирования в изображении может использоваться структура в виде рекурсивного дерева, такая как структура в виде четвертичного дерева. Видео или элемент кодирования, разбитые на разные элементы кодирования с использованием наибольшего элемента кодирования в качестве корня, могут быть разбиты так, чтобы иметь столько же узлов-потомков, сколько разбитых элементов кодирования. Элемент кодирования, который больше не разбивается согласно предварительно определенному ограничению, становится листовым узлом. То есть, если предполагается, что возможно только квадратное разбиение для одного элемента кодирования, один элемент кодирования может быть разбит на не более чем четыре разных элемента кодирования.

[45] Далее в варианте осуществления настоящего изобретения элемент кодирования может использоваться в значении элемента, выполняющего кодирование, или в значении элемента, выполняющего декодирование.

[46] Элемент предсказания может представлять собой элемент, разбитый в форме по меньшей мере одного квадрата, прямоугольника и т.п. одинакового размера в пределах одного элемента кодирования, или он может представлять собой любой элемент предсказания из элементов предсказания, разбитых в пределах одного элемента кодирования, который разбит так, что имеет форму и/или размер, отличающиеся от таковых другого элемента предсказания.

[47] Если элемент кодирования не является наименьшим элементом кодирования, когда генерируется элемент предсказания, который выполняет внутреннее предсказание на основании элемента кодирования, внутреннее предсказание может выполняться без разбиения изображения на множество элементов предсказания N×N.

[48] Части 120 и 125 для предсказания могут содержать часть 120 для предсказания, осуществляемого между изображениями, которая выполняет предсказание, осуществляемое между изображениями, и часть 125 для внутреннего предсказания, которая выполняет внутреннее предсказание. Может быть определено, использовать ли предсказание, осуществляемое между изображениями, или выполнить внутреннее предсказание для элемента предсказания, и определить конкретную информацию (например, режим внутреннего предсказания, вектор движения, опорное изображение и т.д.) согласно каждому способу предсказания. В этом случае элемент обработки для выполнения предсказания может отличаться от элемента обработки для определения способа предсказания и конкретного содержимого. Например, способ предсказания и режим предсказания могут быть определены в элементе предсказания, и предсказание может выполняться в элементе преобразования. Остаточный коэффициент (остаточный блок) между восстановленным блоком предсказания и первоначальным блоком может быть введен в часть 130 для преобразования. Кроме того, информация о режиме предсказания, информация о векторе движения и т.п., используемые для предсказания, могут быть кодированы посредством части 165 для энтропийного кодирования вместе с остаточным коэффициентом и переданы на декодер. Когда используется конкретный режим кодирования, первоначальный блок может быть кодирован как есть и передан на декодер без генерирования блока предсказания посредством частей 120 и 125 для предсказания.

[49] Часть 120 для предсказания, осуществляемого между изображениями, может предсказывать элемент предсказания на основании информации о по меньшей мере одном изображении из изображений перед текущим изображением или после него, и в некоторых случаях она может предсказывать элемент предсказания на основании информации о частичной области, которая была закодирована в текущем изображении. Часть 120 для предсказания, осуществляемого между изображениями, может содержать часть для интерполяции опорного изображения, часть для предсказания движения и часть для компенсации движения.

[50] Часть для интерполяции опорного изображения может принимать информацию об опорном изображении от запоминающего устройства 155 и генерировать информацию о пикселе для целого числа пикселей или меньше из опорного изображения. В случае пикселя яркости 8-отводный интерполяционный фильтр на основе DCT с переменным коэффициентом фильтрования может использоваться для генерирования информации о пикселе целого числа пикселей или меньше посредством элемента, состоящего из 1/4 пикселей. В случае цветоразностного сигнала 4-отводный интерполяционный фильтр на основе DCT с переменным коэффициентом фильтрования может использоваться для генерирования информации о пикселе целого числа пикселей или меньше посредством элемента, состоящего из 1/8 пикселей.

[51] Часть для предсказания движения может выполнять предсказание движения на основании опорного изображения, интерполированного частью для интерполяции опорного изображения. Различные способы, такие как алгоритм сопоставления блоков на основе полного поиска (FBMA), трехступенчатый поиск (TSS), алгоритм нового трехступенчатого поиска (NTS) и т.п., могут использоваться в качестве способа вычисления вектора движения. Вектор движения может иметь значение вектора движения в виде элемента, состоящего из 1/2 или 1/4 пикселей, на основании интерполированных пикселей. Часть для предсказания движения может предсказывать текущий элемент предсказания за счет изменения режима предсказания движения. Различные способы, такие как режим пропуска, режим слияния, режим усовершенствованного предсказания вектора движения (AMVP), режим внутриблочного копирования и т.п., могут использоваться в качестве режима предсказания движения.

[52] Часть 125 для внутреннего предсказания может генерировать элемент предсказания на основании информации об опорных пикселях, расположенных поблизости от текущего блока, которая представляет собой информацию о пикселе в текущем изображении. Когда блок, находящийся поблизости от текущего элемента предсказания, представляет собой блок, в отношении которого было выполнено предсказание, осуществляемое между изображениями, и, таким образом, опорный пиксель представляет собой пиксель, в отношении которого было выполнено предсказание, осуществляемое между изображениями, опорный пиксель, включенный в блок, в отношении которого было выполнено предсказание, осуществляемое между изображениями, может использоваться вместо информации об опорном пикселе блока, находящегося поблизости, в отношении которого было выполнено внутреннее предсказание. То есть, когда опорный пиксель недоступен, по меньшей мере один опорный пиксель из доступных опорных пикселей может использоваться вместо недоступной информации об опорном пикселе.

[53] При внутреннем предсказании режим предсказания может предусматривать режим предсказания, основанный на информации об углах, в котором используется информация об опорном пикселе согласно направлению предсказания, и режим предсказания, не основанный на информации об углах, в котором не используется информация о направлении при выполнении предсказания. Режим для предсказания информации о яркости может отличаться от режима для предсказания информации о цветовой разности, и информация о режиме внутреннего предсказания, используемая для предсказания информации о яркости или информации о предсказанном сигнале яркости, может использоваться для предсказания информации о цветовой разности.

[54] Если размер элемента предсказания такой же, как размер элемента преобразования, когда выполняется внутреннее предсказание, внутреннее предсказание может выполняться для элемента предсказания на основании пикселя на левой стороне, пикселя на верхней левой стороне и пикселя сверху от элемента предсказания. Однако, если размер элемента предсказания отличается от размера элемента преобразования, когда выполняется внутреннее предсказание, внутреннее предсказание может выполняться с использованием опорного пикселя на основании элемента преобразования. Кроме того, внутреннее предсказание с использованием разбиения N × N может использоваться только для наименьшего элемента кодирования.

[55] Посредством способа внутреннего предсказания можно генерировать блок предсказания после применения фильтра адаптивного внутреннего сглаживания (AIS) к опорному пикселю согласно режиму предсказания. Тип фильтра AIS, применяемого к опорному пикселю, может варьировать. Для выполнения способа внутреннего предсказания режим внутреннего предсказания текущего элемента предсказания может быть предсказан из режима внутреннего предсказания элемента предсказания, существующего поблизости от текущего элемента предсказания. Когда режим предсказания текущего элемента предсказания предсказан с использованием информации о режиме, предсказанной из соседнего элемента предсказания, если режимы внутреннего предсказания текущего элемента предсказания такие же, как элемент предсказания поблизости, то информация, указывающая, что режимы предсказания текущего элемента предсказания такие же, как элемент предсказания поблизости, может передаваться с использованием информации о предварительно определенном флаге, и если режимы предсказания текущего элемента предсказания и элемента предсказания поблизости отличаются друг от друга, информация о режиме предсказания текущего блока может быть кодирована за счет выполнения энтропийного кодирования.

[56] Кроме того, может быть сгенерирован остаточный блок, содержащий элемент предсказания, который выполнил предсказание на основании элемента предсказания, сгенерированного частями 120 и 125 для предсказания, и информации об остаточном коэффициенте, которая представляет собой значение разницы элемента предсказания от первоначального блока. Сгенерированный остаточный блок может быть введен в часть 130 для преобразования.

[57] Часть 130 для преобразования может преобразовывать остаточный блок, содержащий первоначальный блок и информацию об остаточном коэффициенте элемента предсказания, сгенерированного посредством частей 120 и 125 для предсказания, с использованием способа преобразования, такого как дискретное косинусное преобразование (DCT) или дискретное синусное преобразование (DST). В этом случае основа преобразования DCT содержит по меньшей мере одно из DCT2 и DCT8, и основа преобразования DST содержит DST7. Применять или не применять DCT или DST для преобразования остаточного блока, может быть определено на основании информации о режиме внутреннего предсказания элемента предсказания, используемого для генерирования остаточного блока. Преобразование в отношении остаточного блока может быть пропущено. Может кодироваться флаг, указывающий, пропускать или не пропускать преобразование в отношении остаточного блока. Пропуск преобразования может являться допустимым для остаточного блока, имеющего размер, меньший или равный пороговому значению, компоненты яркости или компоненты цветности в формате 4:4:4 формат.

[58] Часть 135 для квантования может квантовать значения, преобразованные в частотную область посредством части 130 для преобразования. Коэффициенты квантования могут изменяться в зависимости от блока или важности видео. Значение, вычисленное частью 135 для квантования, может быть предоставлено в часть 140 для обратного квантования и часть 160 для перестановки.

[59] Часть 160 для перестановки может выполнять перестановку значений коэффициентов для квантованных остаточных коэффициентов.

[60] Часть 160 для перестановки может изменять коэффициенты двумерной формы блока на одномерную векторную форму посредством способа сканирования коэффициентов. Например, часть 160 для перестановки может сканировать от коэффициентов DC до коэффициентов высокочастотной области с использованием способа зигзагообразного сканирования и менять коэффициенты с приданием им одномерной векторной формы. Согласно размеру элемента преобразования и режиму внутреннего предсказания вместо зигзагообразного сканирования может использоваться вертикальное сканирование в виде сканирования коэффициентов двумерной формы блока в направлении столбцов и горизонтальное сканирование коэффициентов двумерной формы блока в направлении строк. То есть согласно размеру элемента преобразования и режиму внутреннего предсказания может быть определен способ сканирования, который будет использоваться, из зигзагообразного сканирования, сканирования в вертикальном направлении и сканирования в горизонтальном направлении.

[61] Часть 165 для энтропийного кодирования может выполнять энтропийное кодирование на основании значений, вычисленных частью 160 для перестановки. Для энтропийного кодирования могут использоваться различные способы кодирования, такие как кодирование экспоненциальным способом Голомба, контекстно-адаптивное кодирование с переменной длиной слова (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABАС) и т.п.

[62] Часть 165 для энтропийного кодирования может кодировать различную информацию, такую как информация об остаточном коэффициенте и информация о типе блока элемента кодирования, информация о режиме предсказания, информация об элементе разбиения, информация об элементе предсказания и информация об элементе передачи, информация о векторе движения, информация об опорном кадре, информация об интерполяции блока и информация о фильтрации, которая введена из части 160 для перестановки и частей 120 и 125 для предсказания.

[63] Часть 165 для энтропийного кодирования может выполнять энтропийное кодирование значения коэффициента элемента кодирования, введенного из части 160 для перестановки.

[64] Часть 140 для обратного квантования и часть 145 для обратного преобразования выполняют обратное квантование значений, квантованных посредством части 135 для квантования, и обратное преобразование значений, преобразованных посредством части 130 для преобразования. Остаточный коэффициент, сгенерированный частью 140 для обратного квантования и частью 145 для обратного преобразования, может быть объединен с элементом предсказания, предсказанным посредством части для оценки движения, часть для компенсации движения и части для внутреннего предсказания, включенных в части 120 и 125 для предсказания, для генерирования восстановленного блока.

[65] Часть 150 для фильтрации может содержать по меньшей мере одно из деблочного фильтра, элемента для коррекции смещения и адаптивного контурного фильтра (ALF).

[66] Деблочный фильтр может удалять искажение блока, возникающее на границе между блоками в восстановленном изображении. Определение того, выполнять ли удаление блочности, применять ли деблочный фильтр к текущему блоку, может осуществляться на основании пикселей, содержащихся в нескольких столбцах или строках, содержащихся в блоке. Сильный фильтр или слабый фильтр может применяться согласно необходимой степени фильтрации для удаления блочности при применении деблочного фильтра к блоку. Кроме того, когда выполняются фильтрация в вертикальном направлении и фильтрация в горизонтальном направлении при применении деблочного фильтра, фильтрация в вертикальном направлении и фильтрация в горизонтальном направлении могут осуществляться параллельно.

[67] Элемент для коррекции смещения может корректировать смещение первоначального видео посредством элемента, состоящего из пикселей, для видео, в отношении которого было выполнено удаление блочности. Для выполнения коррекции смещения для конкретного изображения можно использовать способ разделения пикселей, включенных в видео, на определенное количество областей, определения области для выполнения смещения, и применения смещения к области, или способ применения смещения, учитывающий информацию о крае каждого пикселя.

[68] Адаптивная контурная фильтрация (ALF) может выполняться на основании значения, полученного за счет сравнения восстановленного и отфильтрованного видео с первоначальным видео. После разделения пикселей, включенных в видео, на предварительно определенные группы, может быть определен один фильтр, который должен применяться к соответствующей группе, и фильтрация может выполняться по-разному для каждой группы. Сигнал яркости, который представляет собой информацию, связанную с тем, применять ли ALF, может передаваться для каждого элемента кодирования (CU), и форма и коэффициент фильтрования фильтра ALF, который должен быть применен, могут варьировать в зависимости от каждого блока. Кроме того, фильтр ALF того же типа (фиксированного типа) может применяться независимо от характеристики применяемого блока.

[69] Запоминающее устройство 155 может хранить восстановленный блок или изображение, вычисленные посредством части 150 для фильтрации, и восстановленный и сохраненный блок или изображение могут быть предоставлены в части 120 и 125 для предсказания при выполнении предсказания, осуществляемого между изображениями.

[70] На фиг.2 представлена структурная схема, показывающая видеодекодер согласно одному варианту осуществления настоящего изобретения.

[71] Как показано на фиг.2, видеодекодер 200 может содержать часть 210 для энтропийного декодирования, часть 215 для перестановки, часть 220 для обратного квантования, часть 225 для обратного преобразования, части 230 и 235 для предсказания, часть 240 для фильтрации и запоминающее устройство 245.

[72] Когда битовый поток видео вводится из видеокодера, входной битовый поток может быть декодирован согласно процедуре, противоположной процедуре работы видеокодера.

[73] Часть 210 для энтропийного декодирования может выполнять энтропийное декодирование согласно процедуре, противоположной процедуре выполнения энтропийного кодирования в части для энтропийного декодирования видеокодера. Например, могут применяться различные способы, соответствующие способу, выполняемому видеокодером, такие как кодирование экспоненциальным способом Голомба, контекстно-адаптивное кодирование с переменной длиной слова (CAVLC) и контекстно-адаптивное двоичное арифметическое кодирование (САВАС).

[74] Часть 210 для энтропийного декодирования может декодировать информацию, связанную с внутренним предсказанием и предсказанием, осуществляемым между изображениями, выполняемыми кодером.

[75] Часть 215 для перестановки может выполнять перестановку в отношении битового потока, подвергнутого энтропийному декодированию посредством части 210 для энтропийного декодирования, на основании способа перестановки, выполняемого кодером. Коэффициенты, выраженные в одномерной векторной форме, могут быть восстановлены и переставлены как коэффициенты в двумерной форме блока. Часть 215 для перестановки может принимать информацию, связанную со сканированием коэффициентов, выполняемым частью для кодирования, и выполнять восстановление посредством способа обратного сканирования на основании порядка сканирования, выполняемого соответствующей частью для кодирования.

[76] Часть 220 для обратного квантования может выполнять обратное квантование на основании параметра квантования, предоставленного кодером, и значения коэффициента переставленного блока.

[77] Часть 225 для обратного преобразования может выполнять обратное преобразование, т.е. обратное DCT или обратное DST, в отношении преобразования, выполненного частью для преобразования в отношении результата квантования, выполняемого видеокодером. В этом случае основа преобразования DCT может содержать по меньшей мере одно из DCT2 и DCT8, и основа преобразования DST может содержать DST7. Альтернативно, когда преобразование в видеокодере пропускается, часть 225 для обратного преобразования также может не выполнять обратное преобразование. Обратное преобразование может выполняться на основании элемента передачи, определенного видеокодером. Часть 225 для обратного преобразования видеодекодера может выборочно выполнять метод преобразования (например, DCT или DST) согласно множеству фрагментов информации, такой как способ предсказания, размер текущего блока, направление предсказания и т.п.

[78] Части 230 и 235 для предсказания могут генерировать блок предсказания на основании информации, относящейся к генерированию блока предсказания, предоставленного энтропийным декодером 210, и информации о ранее декодированном блоке или изображении, предоставленном запоминающим устройством 245.

[79] Как описано выше, если размер элемента предсказания и размер элемента преобразования одинаковы, когда внутреннее предсказание выполняется таким же образом, как операция в видеокодере, внутреннее предсказание выполняется в отношении элемента предсказания на основании пикселя, находящегося на левой стороне, пикселя на верхней левой стороне и пикселя сверху элемента предсказания. Однако, если размер элемента предсказания и размер элемента преобразования отличаются друг от друга, когда выполняется внутреннее предсказание, внутреннее предсказание может выполняться с использованием опорного пикселя на основании элемента преобразования. Кроме того, внутреннее предсказание с использованием разбиения N × N может использоваться только для наименьшего элемента кодирования.

[80] Части 230 и 235 для предсказания могут содержать часть для определения элемента предсказания, часть для предсказания, осуществляемого между изображениями, и часть для внутреннего предсказания. Часть для определения элемента предсказания может принимать различную информацию, такую как информация об элементе предсказания, введенная от части 210 для энтропийного декодирования, информация о режиме предсказания для способа внутреннего предсказания, информация, относящаяся к предсказанию движения для способа предсказания, осуществляемого между изображениями, и т.п., идентифицировать элемент предсказания из текущего элемента кодирования и определять, выполняет элемент предсказания предсказание, осуществляемое между изображениями, или внутреннее предсказание. Часть 230 для предсказания, осуществляемого между изображениями, может выполнять предсказание, осуществляемое между изображениями, в отношении текущего элемента предсказания на основании информации, включенной в по меньшей мере одно изображение из изображений до или после текущего изображения, включая текущий элемент предсказания, за счет использования информации, необходимой для предсказания, осуществляемого между изображениями, текущего элемента предсказания, предоставленного видеокодером. Альтернативно часть 230 для предсказания, осуществляемого между изображениями, может выполнять предсказание, осуществляемое между изображениями, на основании информации о частичной области, ранее восстановленной в текущем изображении, содержащем текущий элемент предсказания.

[81] Для выполнения предсказания, осуществляемого между изображениями, можно определить на основании элемента кодирования, является способ предсказания движения элемента предсказания, включенного в соответствующий элемент кодирования, режимом пропуска, режимом слияния, режимом предсказания вектора движения (режимом AMVP) или режимом внутриблочного копирования.

[82] Часть 235 для внутреннего предсказания может генерировать блок предсказания на основании информации о пикселе в текущем изображении. Когда элемент предсказания представляет собой элемент предсказания, который выполнил внутреннее предсказание, внутреннее предсказание может быть выполнено на основании информации о режиме внутреннего предсказания элемента предсказания, предоставленного видеокодером. Часть 235 для внутреннего предсказания может содержать фильтр адаптивного внутреннего сглаживания (AIS), часть для интерполяции опорного пикселя и фильтр DC. Фильтр AIS представляет собой часть, которая выполняет фильтрацию в отношении опорного пикселя текущего блока, и может определять, применять ли фильтр согласно режиму предсказания текущего элемента предсказания, и применять фильтр. Фильтрация AIS может выполняться в отношении опорного пикселя текущего блока за счет использования режима предсказания и информации о фильтре AIS элемента предсказания, предоставленного видеокодером. Когда режим предсказания текущего блока представляет собой режим, который не выполняет фильтрацию AIS, фильтр AIS может не применяться.

[83] Когда режим предсказания элемента предсказания представляет собой элемент предсказания, который выполняет внутреннее предсказание на основании значения пикселя, полученного за счет интерполяции опорного пикселя, часть для интерполяции опорного пикселя может генерировать опорный пиксель элемента, состоящего из пикселей, который имеет целое значение или меньше за счет интерполяции опорного пикселя. Когда режим предсказания текущего элемента предсказания представляет собой режим предсказания, который генерирует блок предсказания без интерполяции опорного пикселя, опорный пиксель может не быть интерполирован. Фильтр DC может генерировать блок предсказания посредством фильтрации, когда режим предсказания текущего блока представляет собой режим DC.

[84] Восстановленный блок или изображение могут быть предоставлены в часть 240 для фильтрации. Часть 240 для фильтрации может содержать деблочный фильтр, элемент для коррекции смещения и ALF.

[85] Информация о том, применять ли деблочный фильтр к соответствующему блоку или изображению, и информация о том, применять сильный фильтр или слабый фильтр, когда применяется деблочный фильтр, могут быть предоставлены видеокодером. В деблочный фильтр видеодекодера может быть предоставлена информация, связанная с деблочным фильтром, предоставленная видеокодером, и видеодекодер может выполнять фильтрацию для удаления блочности в отношении соответствующего блока.

[86] Элемент для коррекции смещения может выполнять коррекцию смещения в отношении восстановленного видео на основании типа коррекции смещения и информации о значении смещения, применяемых к видео при выполнении кодирования.

[87] ALF может применяться к элементу кодирования на основании информации о том, следует или нет применять ALF, и информации о коэффициентах ALF, предоставленной кодером. Информация об ALF может быть предоставлена для включения в набор конкретных параметров.

[88] Запоминающее устройство 245 может хранить восстановленное изображение или блок и использовать их в качестве опорного изображения или опорного блока и может предоставлять восстановленное изображение на элемент вывода.

[89] На фиг.3 представлен вид, показывающий базовый элемент кодового дерева согласно одному варианту осуществления настоящего изобретения.

[90] Блок кодирования максимального размера может быть определен как блок кодового дерева. Изображение разбивается на множество элементов кодового дерева (CTU). Элемент кодового дерева представляет собой элемент кодирования, имеющий максимальный размер, и может называться большим элементом кодирования (LCU). На фиг.3 представлен пример, в котором изображение разбивается на множество элементов кодового дерева.

[91] Размер элемента кодового дерева может быть определен на уровне изображения или уровне последовательности. С этой целью информация, указывающая размер элемента кодового дерева, может передаваться посредством набора параметров изображения или набора параметров последовательности.

[92] Например, размер элемента кодового дерева для всего изображения в последовательности может быть установлен равным 128 × 128. Альтернативно на уровне изображения любой размер из 128 × 128 и 256 × 256 может быть определен как размер элемента кодового дерева. Например, размер элемента кодового дерева может быть установлен равным 128 × 128 в первом изображении, и размер элемента кодового дерева может быть установлен равным 256 × 256 во втором изображении.

[93] Блоки кодирования могут быть сгенерированы за счет разбиения элемента кодового дерева. Блок кодирования указывает базовый элемент для выполнения кодирования/декодирования. Например, предсказание или преобразование может выполняться для каждого блока кодирования, или режим кодирования с предсказанием может быть определен для каждого блока кодирования. В данном случае режим кодирования с предсказанием указывает способ генерирования изображения предсказания. Например, режим кодирования с предсказанием может включать предсказание в пределах изображения (внутреннее предсказание), предсказание между изображениями (предсказание, осуществляемое между изображениями), привязку к текущему изображению (CPR), или внутриблочное копирование (IBC), или комбинированное предсказание. Для блока кодирования блок предсказания может быть сгенерирован за счет использования по меньшей мере одного режима кодирования с предсказанием из внутреннего предсказания, предсказания, осуществляемого между изображениями, привязки к текущему изображению и комбинированного предсказания.

[94] Информация, указывающая режим кодирования с предсказанием текущего блока, может передаваться посредством битового потока. Например, информация может представлять собой 1-битный флаг, указывающий, является режим кодирования с предсказанием внутренним режимом или режимом, осуществляемым между изображениями. Только когда режим кодирования с предсказанием текущего блока определен как режим, осуществляемый между изображениями, может использоваться привязка к текущему изображению или комбинированное предсказание.

[95] Привязка к текущему изображению предназначена для установления текущего изображения как опорного изображения и получения блока предсказания текущего блока из области, которая уже была кодирована/декодирована в текущем изображении. В данном случае текущее изображение означает изображение, содержащее текущий блок. Информация, указывающая, применяется ли привязка к текущему изображению к текущему блоку, может передаваться посредством битового потока. Например, информация может представлять собой 1-битный флаг. Когда флаг является истинным, режим кодирования с предсказанием текущего блока может быть определен как привязка к текущему изображению, а когда флаг является ложным, режим предсказания текущего блока может быть определен как предсказание, осуществляемое между изображениями.

[96] Альтернативно режим кодирования с предсказанием текущего блока может быть определен на основании индекса опорного изображения. Например, когда индекс опорного изображения указывает текущее изображение, режим кодирования с предсказанием текущего блока может быть определен как привязка к текущему изображению. Когда индекс опорного изображения указывает изображение, отличающееся от текущего изображения, режим кодирования с предсказанием текущего блока может быть определен как предсказание, осуществляемое между изображениями. То есть привязка к текущему изображению представляет собой способ предсказания, использующий информацию об области, в которой было осуществлено кодирование/декодирование, в текущем изображении, и предсказание, осуществляемое между изображениями, представляет собой способ предсказания, использующий информацию о другом изображении, в котором было осуществлено кодирование/декодирование.

[97] Комбинированное предсказание представляет режим кодирования, в котором объединены два или более из внутреннего предсказания, предсказания, осуществляемого между изображениями, и текущего опорного изображения. Например, при применении комбинированного предсказания первый блок предсказания может быть сгенерирован на основании одно из внутреннего предсказания, предсказания, осуществляемого между изображениями, и привязки к текущему изображению, а второй блок предсказания может быть сгенерирован на основании другого из них. При генерировании первого блока предсказания и второго блока предсказания, конечный блок предсказания может быть сгенерирован посредством операции усреднения или операции взвешенного суммирования первого блока предсказания и второго блока предсказания. Информация, указывающая, применяется ли комбинированное предсказание, может передаваться посредством битового потока. Информация может представлять собой 1 -битный флаг.

[98] На фиг.4 представлен вид, показывающий различные типы разбиения блока кодирования.

[99] Блок кодирования может быть разбит на множество блоков кодирования на основании разбиения на основе четверичного дерева, разбиения на основе двоичного дерева или разбиения на основе троичного дерева. Разбитый блок кодирования может быть разбит снова на множество блоков кодирования на основании разбиения на основе четверичного дерева, разбиения на основе двоичного дерева или разбиения на основе троичного дерева.

[100] Разбиение на основе четверичного дерева относится к методу разбиения, который разбивает текущий блок на четыре блока. В результате разбиения на основе четвертичного дерева текущий блок может быть разбит на четыре раздела квадратной формы (см. «SPLIT_QT» на фиг.4(a)).

[101] Разбиение на основе двоичного дерева относится к методу разбиения, который разбивает текущий блок на два блока. Разбиение текущего блока на два блока вдоль вертикального направления (т.е. с использованием вертикальной линии, пересекающей текущий блок) может называться разбиением на основе двоичного дерева в вертикальном направлении, и разбиение текущего блока на два блока вдоль горизонтального направления (т.е. с использованием горизонтальной линии, пересекающей текущий блок) может называться разбиением на основе двоичного дерева в горизонтальном направлении. В результате разбиения на основе двоичного дерева текущий блок может быть разбит на два раздела неквадратной формы. «SPLIT_BT_VER» на фиг.4 (b) представляет результат разбиения на основе двоичного дерева в вертикальном направлении, a «SPLIT_BT_HOR» на фиг.4 (с) представляет результат разбиения на основе двоичного дерева в горизонтальном направлении.

[102] Разбиение на основе троичного дерева относится к методу разбиения, который разбивает текущий блок на три блока. Разбиение текущего блока на три блока вдоль вертикального направления (т.е. с использованием двух вертикальных линий, пересекающих текущий блок) может называться разбиением на основе троичного дерева в вертикальном направлении, и разбиение текущего блока на три блока вдоль горизонтального направления (т.е. с использованием двух горизонтальных линий, пересекающих текущий блок) может называться разбиением на основе троичного дерева в горизонтальном направлении. В результате разбиения на основе троичного дерева текущий блок может быть разбит на три раздела неквадратной формы. В этом случае ширина/высота раздела, расположенного в центре текущего блока, может быть вдвое больше ширины/высоты других разделов. «SPLIT_TT_VER» на фиг.4 (d) представляет результат разбиения на основе троичного дерева в вертикальном направлении, a «SPLIT_TT_HOR» на фиг.4 (е) представляет результат разбиения на основе троичного дерева в горизонтальном направлении.

[103] Количество разбиений элемента кодового дерева может быть определено как глубина разбиения. Максимальная глубина разбиения элемента кодового дерева может быть определена на уровне последовательности или уровне изображения. Соответственно, максимальная глубина разбиения элемента кодового дерева может отличаться для каждой последовательности или изображения.

[104] Альтернативно максимальная глубина разбиения для каждого метода разбиения может быть определена отдельно. Например, максимальная глубина разбиения, допускаемая для разбиения на основе четверичного дерева, может быть отличной от максимальной глубины разбиения, допускаемой для разбиения на основе двоичного дерева и/или разбиения на основе троичного дерева.

[105] Кодер может передавать информацию, указывающую по меньшей мере одно из типа разбиения и глубины разбиения текущего блока посредством битового потока. Декодер может определять тип разбиения и глубину разбиения элемента кодового дерева на основании информации, проанализированной из битового потока.

[106] На фиг.5 представлен вид, показывающий схему разбиения элемента кодового дерева.

[107] Разбиение блока кодирования с использованием такого метода разбиения, как разбиение на основе четверичного дерева, разбиение на основе двоичного дерева и/или разбиение на основе троичного дерева, может называться разбиением на основе нескольких деревьев.

[108] Блоки кодирования, сгенерированные путем применения разбиения на основе нескольких деревьев к блоку кодирования, могут называться нижними блоками кодирования. Когда глубина разбиения блока кодирования представляет собой к, глубина разбиения нижних блоков кодирования установлена равной k+1.

[109] И, с другой стороны, для блоков кодирования, имеющих глубину разбиения k+1, блок кодирования, имеющий глубину разбиения к, может называться верхним блоком кодирования.

[110] Тип разбиения текущего блока кодирования может быть определен на основании по меньшей мере одного из типа разбиения верхнего блока кодирования и типа разбиения соседнего блока кодирования. В данном случае соседний блок кодирования представляет собой блок кодирования, смежный с текущим блоком кодирования, и может включать по меньшей мере один из верхнего соседнего блока и левого соседнего блока текущего блока кодирования, и соседний блок, смежный с верхним левым углом. В данном случае тип разбиения может включать по меньшей мере одно из следующего: применялось ли разбиение на основе четверичного дерева, применялось ли разбиение на основе двоичного дерева, направление разбиения на основе двоичного дерева, применялось ли разбиение на основе троичного дерева и направление разбиения на основе троичного дерева.

[111] Чтобы определить тип разбиения блока кодирования, информация, указывающая то, может ли быть разбит блок кодирования, может передаваться посредством битового потока. Информация представляет собой 1-битный флаг «split_cu_flag», и, когда флаг является истинным, она указывает, что блок кодирования разбит с помощью метода разбиения на основе нескольких деревьев.

[112] Когда split_cu_flag является истинным, информация, указывающая то, разбит ли блок кодирования на основе четверичного дерева, может передаваться посредством битового потока. Информация представляет собой 1-битный флаг в виде split_qt_flag, и, когда флаг является истинным, блок кодирования может быть разбит на четыре блока.

[113] Например, в примере, показанном на фиг.5, когда элемент кодового дерева разбит на основе четвертичного дерева, генерируются четыре блока кодирования, имеющие глубину разбиения 1. Кроме того, показано, что разбиение на основе четвертичного дерева применяется снова к первому и четвертому блокам кодирования из четырех блоков кодирования, сгенерированных в результате разбиения на основе четвертичного дерева. В результате могут быть сгенерированы четыре блока кодирования, имеющие глубину разбиения 2.

[114] Кроме того, блоки кодирования, имеющие глубину разбиения, равную 3, могут быть сгенерированы путем повторного применения разбиения на основе четверичного дерева к блоку кодирования, имеющему глубину разбиения, равную 2.

[115] Когда разбиение на основе четверичного дерева не применяется к блоку кодирования, может быть определено то, выполняется ли разбиение на основе двоичного дерева или разбиение на основе троичного дерева в отношении блока кодирования, с учетом по меньшей мере одного из следующего: размера блока кодирования, расположен ли блок кодирования на границе изображения, максимальной глубины разбиения и типа разбиения соседнего блока. Когда определено, что следует выполнить разбиение на основе двоичного дерева или разбиение на основе троичного дерева в отношении блока кодирования, информация, указывающая направление разбиения, может передаваться посредством битового потока. Информация может представлять собой 1-битный флаг в виде mtt_split_cu_vertical_flag. На основании флага может быть определено, является направление разбиения вертикальным направлением или горизонтальным направлением. Дополнительно информация, указывающая то, применено ли разбиение на основе двоичного дерева или разбиение на основе троичного дерева к блоку кодирования, может передаваться посредством битового потока. Информация может представлять собой 1-битный флаг в виде mtt_split_cu_binary_flag. На основании флага может быть определено то, применено ли разбиение на основе двоичного дерева или разбиение на основе троичного дерева к блоку кодирования.

[116] Например, в примере, показанном на фиг.5, показано, что разбиение на основе двоичного дерева в вертикальном направлении применено к блоку кодирования, имеющему глубину разбиения, равную 1, разбиение на основе троичного дерева в вертикальном направлении применено к левому блоку кодирования из блоков кодирования, сгенерированных в результате разбиения, и разбиение на основе двоичного дерева в вертикальном направлении применено к правому блоку кодирования.

[117] Предсказание, осуществляемое между изображениями, представляет собой режим кодирования с предсказанием, который предсказывает текущий блок путем использования информации о предшествующем изображении. Например, блок в том же положении, что и текущий блок в предшествующем изображении (далее - совмещаемый блок), может быть установлен как блок предсказания текущего блока. Далее блок предсказания, сгенерированный на основании блока в том же положении, что и текущий блок, будет называться совмещаемым блоком предсказания.

[118] С другой стороны, когда объект, находящийся в предшествующем изображении, переместился в другое положение в текущем изображении, текущий блок может быть эффективным образом предсказан путем использования движения объекта. Например, когда направление движения и размер объекта можно узнать путем сравнения предшествующего изображения и текущего изображения, блок предсказания (или изображение предсказания) текущего блока может быть сгенерирован с учетом информации о движении объекта. Далее блок предсказания, сгенерированный путем использования информации о движении, может называться блоком предсказания движения.

[119] Остаточный блок может быть сгенерирован путем вычитания блока предсказания из текущего блока. В этом случае, когда имеется движение объекта, энергия остаточного блока может быть уменьшена путем использования блока предсказания движения вместо совмещаемого блока предсказания, и, таким образом, эффективность сжатия остаточного блока может быть улучшена.

[120] Как описано выше, генерирование блока предсказания путем использования информации о движении может называться предсказанием с компенсацией движения. В большинстве предсказаний, осуществляемых между изображениями, блок предсказания может быть сгенерирован на основании предсказания с компенсацией движения.

[121] Информация о движении может содержать по меньшей мере одно из вектора движения, индекса опорного изображения, направления предсказания и двунаправленного весового индекса. Вектор движения представляет направление движения и размер объекта. Индекс опорного изображения указывает опорное изображение текущего блока из опорных изображений, включенных в список опорных изображений. Направление предсказания указывает любое из однонаправленного предсказания L0, однонаправленного предсказания L1 и двунаправленного предсказания (предсказания L0 и предсказания L1). Согласно направлению предсказания текущего блока может использоваться по меньшей мере одно из информации о движении в направлении L0 и информации о движении в направлении L1. Двунаправленный весовой индекс указывает значение взвешивания, примененное к блоку предсказания L0, и значение взвешивания, примененное к блоку предсказания L1.

[122] На фиг.6 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, согласно одному варианту осуществления настоящего изобретения.

[123] Как показано на фиг.6, способ предсказания, осуществляемого между изображениями, включает этапы определения (S601) режима предсказания, осуществляемого между изображениями, текущего блока, получения (S602) информации о движении текущего блока согласно определенному режиму предсказания, осуществляемого между изображениями, и выполнения (S603) предсказания с компенсацией движения для текущего блока на основании полученной информации о движении.

[124] В данном случае режим предсказания, осуществляемого между изображениями, представляет различные методы определения информации о движении текущего блока и может включать режим предсказания, осуществляемого между изображениями, который использует информацию о поступательном движении, и режим предсказания, осуществляемого между изображениями, который использует информацию об аффинном движении. Например, режим предсказания, осуществляемого между изображениями, который использует информацию о поступательном движении, может включать режим слияния и режим предсказания вектора движения, и режим предсказания, осуществляемого между изображениями, который использует информацию об аффинном движении, может включать аффинный режим слияния и режим предсказания вектора аффинного движения. Информация о движении текущего блока может быть определена на основании соседнего блока, смежного с текущим блоком, или информации, проанализированной из битового потока согласно режиму предсказания, осуществляемого между изображениями.

[125] Далее способ предсказания, осуществляемого между изображениями, который использует информацию об аффинном движении, будет описан подробно.

[126] На фиг.7 представлен вид, показывающий нелинейные движения объекта.

[127] Нелинейное движение объекта может быть сгенерировано в видео. Например, как показано в примере на фиг.7, может происходить такое нелинейное движение объекта, как приближение, отдаление, поворот, аффинное преобразование и т.п. камеры. Когда происходит нелинейное движение объекта, движение объекта не может быть эффективно выражено с помощью вектора поступательного движения. Соответственно, эффективность кодирования может быть улучшена за счет использования аффинного движения вместо поступательного движения в области, где происходит нелинейное движение объекта.

[128] На фиг.8 представлена блок-схема, изображающая способ предсказания, осуществляемого между изображениями, на основании аффинного движения согласно одному варианту осуществления настоящего изобретения.

[129] Применяется ли метод предсказания, осуществляемого между изображениями, основанный на аффинном движении, к текущему блоку, может быть определено на основании информации, проанализированной из битового потока. В частности, применяется ли метод предсказания, осуществляемого между изображениями, основанный на аффинном движении, к текущему блоку, может быть определено на основании по меньшей мере одно из флага, указывающего, применяется ли аффинный режим слияния к текущему блоку, и флага, указывающего, применяется ли режим предсказания вектора аффинного движения к текущему блоку.

[130] Когда метод предсказания, осуществляемого между изображениями, основанный на аффинном движении, применяется к текущему блоку, может быть определена (S801) модель аффинного движения текущего блока. Модель аффинного движения может быть определена как по меньшей мере одна из шестипараметрической модели аффинного движения и четырехпараметрической модели аффинного движения. Шестипараметрическая модель аффинного движения выражает аффинное движение с использованием шести параметров, а четырехпараметрическая модель аффинного движения выражает аффинное движение с использованием четырех параметров.

[131] Уравнение 1 выражает аффинное движение с использованием шести параметров. Аффинное движение представляет поступательное движение для предварительно определенной области, определенной аффинными исходными векторами.

[132] [Уравнение 1]

[133]

[134]

[135] Когда аффинное движение выражено с использованием шести параметров, может быть выражено сложное движение. Однако, поскольку увеличивается количество битов, необходимых для кодирования каждого из параметров, эффективность кодирования может снижаться. Соответственно, аффинное движение может быть выражено с использованием четырех параметров. Уравнение 2 выражает аффинное движение с использованием четырех параметров.

[136] [Уравнение 2]

[137]

[138]

[139] Информация для определения модели аффинного движения текущего блока может быть кодирована и передана посредством битового потока. Например, информация может представлять собой 1 -битный флаг в виде «affme_type_flag». Когда числовое значение флага равно 0, это может указывать, что применяется 4-параметрическая модель аффинного движения, а когда числовое значение флага равно 1, это может указывать, что применяется 6-параметрическая модель аффинного движения. Флаг может быть кодирован посредством элемента в виде слайса, тайла или блока (например, посредством элемента блока кодирования или кодового дерева). Когда флаг передается на уровне слайса, модель аффинного движения, определенная на уровне слайса, может применяться ко всем блокам, принадлежащим к слайсу.

[140] Альтернативно модель аффинного движения текущего блока может быть определена на основании аффинного режима предсказания, осуществляемого между изображениями, текущего блока. Например, когда применяется аффинный режим слияния, модель аффинного движения текущего блока может быть определена как 4-параметрическая модель движения. С другой стороны, когда применяется режим предсказания вектора аффинного движения, информация для определения модели аффинного движения текущего блока может быть кодирована и передана посредством битового потока. Например, когда режим предсказания вектора аффинного движения применяется к текущему блоку, модель аффинного движения текущего блока может быть определена на основании 1-битного флага в виде «affme_type_flag».

[141] Затем может быть получен (S802) аффинный исходный вектор текущего блока. Когда выбрана 4-параметрическая модель аффинного движения, могут быть получены векторы движения в двух контрольных точках текущего блока. С другой стороны, когда выбрана 6-параметрическая модель аффинного движения, могут быть получены векторы движения в трех контрольных точках текущего блока. Вектор движения в контрольной точке может называться аффинным исходным вектором. Контрольная точка может включать по меньшей мере один из верхнего левого угла, верхнего правого угла и нижнего левого угла текущего блока.

[142] На фиг.9 представлен вид, показывающий пример аффинных исходных векторов каждой модели аффинного движения.

[143] В 4-параметрической модели аффинного движения аффинные исходные векторы могут быть получены для двух из верхнего левого угла, верхнего правого угла и нижнего левого угла. Например, как показано в примере на фиг.9(a), когда выбрана 4-параметрическая модель аффинного движения, аффинный вектор может быть получен путем использования аффинного исходного вектора sv0 для верхнего левого угла текущего блока (например, верхний левый отсчет (x1, y1)) и аффинного исходного вектора sv1 для верхнего правого угла текущего блока (например, верхний правый отсчет (x1, y1)). Также можно использовать аффинный исходный вектор для нижнего левого угла вместо аффинного исходного вектора для верхнего левого угла, или использовать аффинный исходный вектор для нижнего левого угла вместо аффинного исходного вектора для верхнего правого угла.

[144] В 6-параметрической модели аффинного движения аффинные исходные векторы могут быть получены для верхнего левого угла, верхнего правого угла и нижнего левого угла. Например, как показано в примере на фиг.9(b), когда выбрана 6-параметрическая модель аффинного движения, аффинный вектор может быть получен путем использования аффинного исходного вектора sv0 для верхнего левого угла текущего блока (например, верхний левый отсчет (x1, y1)), аффинного исходного вектора sv1 для верхнего правого угла текущего блока (например, верхний правый отсчет (x1, y1)) и аффинного исходного вектора sv2 для верхнего левого угла текущего блока (например, верхний левый отсчет (х2, у2)).

[145] В варианте осуществления, описанном ниже, в 4-параметрической модели аффинного движения аффинные исходные векторы верхней левой контрольной точки и верхней правой контрольной точки будут называться первым аффинным исходным вектором и вторым аффинным исходным вектором соответственно. В вариантах осуществления, в которых используются первый аффинный исходный вектор и второй аффинный исходный вектор, описанные ниже, по меньшей мере один из первого аффинного исходного вектора и второго аффинного исходного вектора может быть заменен аффинным исходным вектором нижней левой контрольной точки (третьим аффинным исходным вектором) или аффинным исходным вектором нижней правой контрольной точки (четвертым аффинным исходным вектором).

[146] Кроме того, в 6-параметрической модели аффинного движения аффинные исходные векторы верхней левой контрольной точки, верхней правой контрольной точки и нижней левой контрольной точки будут называться первым аффинным исходным вектором, вторым аффинным исходным вектором и третьим аффинным исходным вектором соответственно. В вариантах осуществления, в которых используется первый аффинный исходный вектор, второй аффинный исходный вектор и третий аффинный исходный вектор, описанные ниже, по меньшей мере один из первого аффинного исходного вектора, второго аффинного исходного вектора и третьего аффинного исходного вектора может быть заменен аффинным исходным вектором нижней правой контрольной точки (четвертым аффинным исходным вектором).

[147] Аффинный вектор может быть получен (S803) для каждого подблока за счет использования аффинных исходных векторов. В данном случае аффинный вектор представляет вектор поступательного движения, полученный на основании аффинных исходных векторов. Аффинный вектор подблока может называться аффинным вектором движения подблока или вектором движения подблока.

[148] На фиг.10 представлен вид, показывающий пример аффинных векторов подблоков в 4-параметрической модели движения.

[149] Аффинный вектор подблока может быть получен на основании положения контрольной точки, положения подблока и аффинного исходного вектора. Например, в уравнении 3 показан пример получения аффинного вектора подблока.

[150] [Уравнение 3]

[151]

[152]

[153] В уравнении 3 (х, у) обозначают положение подблока. В данном случае положение подблока указывает положение опорного отсчета, включенного в подблок. Опорный отсчет может представлять собой отсчет, расположенный в верхнем левом углу подблока, или отсчет, у которого по меньшей мере одна из координат по оси х и оси у представляет собой центральную точку. (х0, у0) обозначает положение первой контрольной точки и (sv0x, sv0y) обозначает первый аффинный исходный вектор. Кроме того, (х1, у1) обозначает положение второй контрольной точки и (sv1x, sv1y) обозначает второй аффинный исходный вектор.

[154] Когда первая контрольная точка и вторая контрольная точка соответствуют верхнему левому углу и верхнему правому углу текущего блока соответственно, х10 может быть установлено на значение, равное ширине текущего блока.

[155] После этого может быть выполнено (S804) предсказание с компенсацией движения для каждого подблока с использованием аффинного вектора каждого подблока. В результате выполнения предсказания с компенсацией движения может быть сгенерирован блок предсказания для каждого подблока. Блоки предсказания подблоков могут быть установлены как блоки предсказания текущего блока.

[156] Затем способ предсказания, осуществляемого между изображениями, использующий информацию о поступательном движении, будет описан подробно.

[157] Информация о движении текущего блока может быть получена из информации о движении другого блока. В данном случае другой блок может представлять собой блок, кодированный/декодированный путем предсказания, осуществляемого между изображениями, перед текущим блоком. Установка информации о движении текущего блока равной информации о движении другого блока может быть определена как режим слияния. Кроме того, установка вектора движения другого блока в качестве значения предсказания вектора движения текущего блока может быть определена в качестве режима предсказания вектора движения.

[158] На фиг.11 представлена блок-схема, изображающая процесс получения информации о движении текущего блока с использованием режима слияния.

[159] Может быть получен (S1101) кандидат на слияние текущего блока. Кандидат на слияние текущего блока может быть получен из блока, кодированного/декодированного путем предсказания, осуществляемого между изображениями, перед текущим блоком.

[160] На фиг.12 представлен вид, показывающий пример кандидатных блоков, используемых для получения кандидата на слияние.

[161] Кандидатные блоки могут включать по меньшей мере один из соседних блоков, содержащий отсчет, смежный с текущим блоком, или несоседних блоков, содержащих отсчет, не являющийся смежным с текущим блоком. Далее отсчеты для определения кандидатных блоков задаются в качестве опорных отсчетов. Кроме того, опорный отсчет, смежный с текущим блоком, называется соседним опорным отсчетом, и опорный отсчет, не являющийся смежным с текущим блоком, называется несоседним опорным отсчетом.

[162] Соседний опорный отсчет может быть включен в соседний столбец самого левого столбца текущего блока или соседнюю строку самой верхней строки текущего блока. Например, когда координаты верхнего левого отсчета текущего блока составляют (0, 0), по меньшей мере один из блока, содержащего опорный отсчет в положении (-1, Н-1), блока, содержащего опорный отсчет в положении (W-1, -1), блока, содержащего опорный отсчет в положении (W, -1), блока, содержащего опорный отсчет в положении (-1, Н), и блока, содержащего опорный отсчет в положении (-1, -1), может использоваться в качестве кандидатного блока. Обращаясь к графическим материалам, соседние блоки индекса 0-4 могут использоваться в качестве кандидатных блоков.

[163] Несоседний опорный отсчет представляет отсчет, в котором по меньшей мере одно из расстояния по оси х и расстояния по оси у от опорного отсчета, смежного с текущим блоком, имеет предварительно заданное значение. Например, по меньшей мере один из блока, содержащего опорный отсчет, в котором расстояние по оси х от левого опорного отсчета представляет собой предварительно заданное значение, блока, содержащего несоседний отсчет, в котором расстояние по оси у от верхнего опорного отсчета представляет собой предварительно заданное значение, и блока, содержащего несоседний отсчет, в котором расстояние по оси х и расстояние по оси у от верхнего левого опорного отсчета представляют собой предварительно заданные значения, может использоваться в качестве кандидатного блока. Предварительно заданные значения могут представлять собой натуральное число, такое как 4, 8, 12, 16 или т.п. Обращаясь к графическим материалам, по меньшей мере один из блоков индекса 5-26 может использоваться в качестве кандидатного блока.

[164] Отсчет, не расположенный на одинаковой вертикальной линии, горизонтальной линии или диагональной линии в качестве соседнего опорного отсчета, может быть установлен в качестве несоседнего опорного отсчета.

[165] На фиг.13 представлен вид, показывающий положения опорных отсчетов.

[166] Как показано в примере на фиг.13, координаты х верхних несоседних опорных отсчетов могут быть установлены отличающимися от координат х верхних соседних опорных отсчетов. Например, когда положение верхнего соседнего опорного отсчета составляет (W-1, -1), положение верхнего несоседнего опорного отсчета, отдаленного вплоть до N от верхнего соседнего опорного отсчета на оси у, может быть установлено на ((W/2)-1, -1-N), и положение верхнего несоседнего опорного отсчета, отдаленного вплоть до 2N от верхнего соседнего опорного отсчета на оси у, может быть установлено на (0, -1-2N). То есть положение несмежного опорного отсчета может быть определено на основании положения смежного опорного отсчета и расстояния от смежного опорного отсчета.

[167] Далее кандидатный блок, содержащий соседний опорный отсчет, из кандидатных блоков называется соседним блоком, и блок, содержащий несоседний опорный отсчет, называется несоседним блоком.

[168] Когда расстояние между текущим блоком и кандидатным блоком больше, чем пороговое значение или равняется ему, кандидатный блок может быть установлен недоступным в качестве кандидата на слияние. Пороговое значение может быть определено на основании размера элемента кодового дерева. Например, пороговое значение может быть установлено равным высоте (ctu_height) элемента кодового дерева или значению, полученному путем сложения смещения с высотой (например, ctu_height±N) элемента кодового дерева или вычитания смещения из нее. Смещение N представляет собой значение, предварительно заданное в кодере и декодере, и может быть установлено равным 4, 8, 16, 32 или ctu_height.

[169] Когда разница между координатой по оси у текущего блока и координатой по оси у отсчета, включенного в кандидатный блок, больше, чем пороговое значение, кандидатный блок может быть определен недоступным в качестве кандидата на слияние.

[170] Альтернативно кандидатный блок, который не принадлежит к такому же элементу кодового дерева в качестве текущего блока, может быть установлен недоступным в качестве кандидата на слияние. Например, когда опорный отсчет отклоняется от верхней границы элемента кодового дерева, к которому принадлежит текущий блок, кандидатный блок, содержащий опорный отсчет, может быть установлен недоступным в качестве кандидата на слияние.

[171] Когда верхняя граница текущего блока является смежной с верхней границей элемента кодового дерева, множество кандидатных блоков определяются недоступными в качестве кандидата на слияние, и, таким образом, эффективность кодирования/декодирования текущего блока может снижаться. Для решения этой проблемы кандидатные блоки могут быть установлены так, чтобы количество кандидатных блоков, расположенных на левой стороне текущего блока, было больше, чем количество кандидатных блоков, расположенных сверху текущего блока.

[172] На фиг.14 представлен вид, показывающий пример кандидатных блоков, используемых для получения кандидата на слияние.

[173] Как показано в примере на фиг.14, верхние блоки, принадлежащие к верхним столбцам блоков N текущего блока, и левые блоки, принадлежащие к левым столбцам блоков М текущего блока, могут быть установлены в качестве кандидатных блоков. В этом случае количество левых кандидатных блоков может быть установлено большим, чем количество верхних кандидатных блоков, путем установки М больше, чем N.

[174] Например, разница между координатой по оси у опорного отсчета в текущем блоке и координатой по оси у верхнего блока, который может использоваться в качестве кандидатного блока, может быть установлена такой, что не превышает в N раз высоту текущего блока. Кроме того, разница между координатой по оси х опорного отсчета в текущем блоке и координатой по оси х левого блока, который может использоваться в качестве кандидатного блока, может быть установлена такой, что не превышает в М раз ширину текущего блока.

[175] Например, в примере, показанном на фиг.14, показано, что блоки, принадлежащие к верхним двум столбцам блоков текущего блока, и блоки, принадлежащие к левым пяти столбцам блоков текущего блока, устанавливаются в качестве кандидатных блоков.

[176] В качестве другого примера, когда кандидатный блок не принадлежит к такому же элементу кодового дерева, как текущий блок, кандидат на слияние может быть получен с использованием блока, принадлежащего к такому же элементу кодового дерева, как и текущий блок, или блока, содержащего опорный отсчет, смежный с границей элемента кодового дерева, вместо кандидатного блока.

[177] На фиг.15 представлен вид, показывающий пример, в котором положение опорного отсчета изменено.

[178] Когда опорный отсчет включен в элемент кодового дерева, отличающийся от текущего блока, и опорный отсчет не является смежным с границей элемента кодового дерева, кандидатный блок может быть определен с использованием опорного отсчета, смежного с границей элемента кодового дерева, вместо опорного отсчета.

[179] Например, в примерах, показанных на фиг.15 (а) и 15 (b), когда верхняя граница текущего блока и верхняя граница элемента кодового дерева находятся в контакте друг с другом, опорные отсчеты сверху текущего блока принадлежат к элементу кодового дерева, отличающемуся от текущего блока. Из опорных отсчетов, принадлежащих к элементу кодового дерева, отличающемуся от текущего блока, опорный отсчет, не являющийся смежным с верхней границей элемента кодового дерева, может быть заменен отсчетом, смежным с верхней границей элемента кодового дерева.

[180] Например, как показано в примере по фиг.15 (а), опорный отсчет в положении 6 заменяется отсчетом в положении 6', расположенном на верхней границе элемента кодового дерева, и, как показано в примере на фиг.15 (b), опорный отсчет в положении 15 заменяется отсчетом в положении 15', расположенном на верхней границе элемента кодового дерева. В этом случае координата у отсчета замены заменяется положением, смежным с элементом кодового дерева, и координата х отсчета замены может быть установлена равной опорному отсчету. Например, отсчет в положении 6' может иметь такую же координату х, что и отсчет в положении 6, и отсчет в положении 15' может иметь такую же координату х, что и отсчет в положении 15.

[181] Альтернативно значение, полученное путем сложения смещения с координатой х опорного отсчета или вычитания смещения из нее, может быть установлено в качестве координаты х отсчета замены. Например, когда координаты х соседнего опорного отсчета, расположенного сверху текущего блока, и несоседнего опорного отсчета являются одинаковыми, значение, полученное путем сложения смещения с координатой х опорного отсчета или вычитания смещения из нее, может быть установлено в качестве координаты х отсчета замены. Это предназначено для предотвращения размещения отсчета замены, заменяющего несоседний опорный отсчет, в таком же положении, что и другой несоседний опорный отсчет или соседний опорный отсчет.

[182] На фиг.16 представлен вид, показывающий пример, в котором положение опорного отсчета изменено.

[183] При замене опорного отсчета, который включен в элемент кодового дерева, отличающийся от текущего блока, и который не является смежным с границей элемента кодового дерева, отсчетом, расположенным на границе элемента кодового дерева, значение, полученное путем сложения смещения с координатой х опорного отсчета или вычитания смещения из нее, может быть установлено в качестве координаты х отсчета замены.

[184] Например, в примере, показанном на фиг.16, опорный отсчет в положении 6 и опорный отсчет в положении 15 могут быть заменены отсчетом в положении 6' и отсчетом в положении 15' соответственно, координаты у которых являются одинаковыми с координатами у строки, смежной с верхней границей элемента кодового дерева. В этом случае координата х отсчета в положении 6' может быть установлена равной значению, полученному вычитанием W/2 из координаты х опорного отсчета в положении 6, и координата х отсчета в положении 15' может быть установлена равной значению, полученному вычитанием W-1 из координаты х опорного отсчета в положении 15.

[185] В отличие от примеров, показанных на фиг.15 и 16, координата у строки, расположенной сверху самой верхней строки текущего блока, или координата у верхней границы элемента кодового дерева может быть установлена в качестве координаты у отсчета замены.

[186] Хотя это не показано, отсчет, заменяющий опорный отсчет, может быть определен на основании левой границы элемента кодового дерева. Например, когда опорный отсчет не включен в такой же элемент кодового дерева, как текущий блок, и не является смежным с левой границей элемента кодового дерева, опорный отсчет может быть заменен отсчетом, смежным с левой границей элемента кодового дерева. В этом случае отсчет замены может иметь координату у, одинаковую с координатой у опорного отсчета, или может иметь координату у, полученную путем сложения смещения с координатой у опорного отсчета или вычитания из нее.

[187] После этого блок, содержащий отсчет замены, может быть установлен в качестве кандидатного блока, и кандидат на слияние текущего блока может быть получен на основании кандидатного блока.

[188] Кандидат на слияние может также быть получен на основании временного соседнего блока, включенного в изображение, отличающегося от текущего блока. Например, кандидат на слияние может быть получен из совмещаемого блока, включенного в совмещаемое изображение.

[189] Информация о движении кандидата на слияние может быть установлена равной информации о движении кандидатного блока. Например, по меньшей мере одно из вектора движения, индекса опорного изображения, направления предсказания и двунаправленного весового индекса кандидатного блока может быть установлено в качестве информации о движении кандидата на слияние.

[190] Может генерироваться (S1102) список кандидатов на слияние, содержащий кандидатов на слияние. Кандидаты на слияние могут быть разделены на смежного кандидата на слияние, полученного из соседнего блока, смежного с текущим блоком, и несмежного кандидата на слияние, полученного из несоседнего блока.

[191] Индексы кандидатов на слияние в списке кандидатов на слияние могут быть присвоены в предварительно определенном порядке. Например, индекс, присвоенный смежному кандидату на слияние, может иметь значение, меньше чем в индексе, присвоенном несмежному кандидату на слияние. Альтернативно индекс может быть присвоен каждому из кандидатов на слияние на основании индекса каждого блока, показанного на фиг.12 или 14.

[192] Когда множество кандидатов на слияние включены в список кандидатов на слияние, может быть выбран (S1103) по меньшей мере один из множества кандидатов на слияние. В этом случае информация, указывающая на то, получена ли информация о движении текущего блока из смежного кандидата на слияние, может передаваться посредством битового потока. Информация может представлять собой 1-битный флаг. Например, элемент синтаксиса isAdjancentMergeFlag, указывающий на то, получена ли информация о движении текущего блока из смежного кандидата на слияние, может передаваться посредством битового потока. Когда значение элемента синтаксиса isAdjancentMergeFlag равно 1, информация о движении текущего блока может быть получена на основании смежного кандидата на слияние. С другой стороны, когда значение элемента синтаксиса isAdjancentMergeFlag равно 0, информация о движении текущего блока может быть получена на основании несмежного кандидата на слияние.

[193] В таблице 1 показана синтаксическая таблица, указывающая элемент синтаксиса isAdjancentMergeFlag.

[195] Информация для указания одного из множества кандидатов на слияние может передаваться посредством битового потока. Например, посредством битового потока может передаваться информация, указывающая индекс любого из кандидатов на слияние, включенных в список кандидатов на слияние.

[196] Когда isAdjacentMergeflag равен 1, может передаваться элемент синтаксиса merge_idx, указывающий один из смежных кандидатов на слияние. Максимальное числовое значение элемента синтаксиса merge_idx может быть приравнено к значению, полученному путем вычитания 1 из количества смежных кандидатов на слияние.

[197] Когда isAdjacentMergeflag равен 0, может передаваться элемент синтаксиса NAmerge_idx, указывающий один из несмежных кандидатов на слияние. Элемент синтаксиса NA_merge_idx представляет значение, полученное путем вычитания количества смежных кандидатов на слияние из индекса несмежного кандидата на слияние. Декодер может выбрать несмежного кандидата на слияние путем сложения количества смежных кандидатов на слияние с индексом, указанным посредством NA_merge_idx.

[198] Когда количество кандидатов на слияние, включенных в список кандидатов на слияние, меньше, чем пороговое значение, кандидат на слияние, включенный в список информации о движении между участками, может быть добавлен в список кандидатов на слияние. В данном случае пороговое значение может представлять собой максимальное количество кандидатов на слияние, которое может быть включено в список кандидатов на слияние, или значение, полученное путем вычитания смещения из максимального количества кандидатов на слияние. Смещение может представлять собой натуральное число, такое как 1, 2 или т.п. Список информации о движении между участками может содержать кандидата на слияние, полученного на основании блока, кодированного/декодированного перед текущим блоком.

[199] Список информации о движении между участками содержит кандидата на слияние, полученного из блока, кодированного/декодированного на основании предсказания, осуществляемого между изображениями, в текущем изображении. Например, информация о движении кандидата на слияние, включенного в список информации о движении между участками, может быть установлена равной информации о движении блока, кодированного/декодированного на основании предсказания, осуществляемого между изображениями. В данном случае информация о движении может содержать по меньшей мере одно из вектора движения, индекса опорного изображения, направления предсказания и двунаправленного весового индекса. Для удобства объяснения кандидат на слияние, включенный в список информации о движении между участками, будет называться кандидатом на слияние между участками.

[200] После выбора кандидата на слияние текущего блока вектор движения выбранного кандидата на слияние устанавливается как исходный вектор движения, и для текущего блока с использованием вектора движения, полученного путем сложения вектора смещения с исходным вектором движения или вычитания из него, может быть выполнено предсказание с компенсацией движения. Получение нового вектора движения путем сложения вектора смещения с вектором движения кандидата на слияние или вычитания из него можно определить как способ кодирования разности между векторами смещения и движения.

[201] Информация, указывающая, использовать ли способ кодирования смещения кандидата на слияние, может передаваться посредством битового потока. Эта информация может представлять собой флаг merge_offset_vector_flag, состоящий из одного бита. Например, когда значение merge_offset_vector_flag равно 1, это указывает, что к текущему блоку применяется способ кодирования разности между векторами смещения и движения. Когда способ кодирования разности между векторами смещения и движения применяется к текущему блоку, вектор движения текущего блока может быть получен путем сложения вектора смещения с вектором движения кандидата на слияние или вычитания из него. Когда значение merge_offset_vector_flag равно 0, это указывает, что способ кодирования разности между векторами смещения и движения к текущему блоку не применяется. Когда способ кодирования смещения кандидата на слияние не применяется, вектор движения текущего блока может быть установлен как вектор движения кандидата на слияние.

[202] Данный флаг может передаваться только тогда, когда значение флага пропуска, указывающее, применяется ли режим пропуска, является истинным, или когда истинным является значение флага слияния, указывающее, применяется ли режим слияния. Например, merge_offset_vector_flag может кодироваться и передаваться, когда значение skip_flag, указывающее, применяется ли к текущему блоку режим пропуска, равно 1, или когда значение merge_flag, указывающее, применяется ли к текущему блоку режим слияния, равно 1.

[203] Когда определено, что к текущему блоку применяется способ кодирования смещения кандидата на слияние, может дополнительно передаваться по меньшей мере одно из информации, указывающей кандидатов на слияние, включенных в список кандидатов на слияние, информации, указывающей величину вектора смещения, и информации, указывающей направление вектора смещения.

[204] Информация для определения максимального количества кандидатов на слияние, которое может содержать список кандидатов на слияние, может передаваться посредством битового потока. Например, максимальное количество кандидатов на слияние, которое может содержать список кандидатов на слияние, может быть задано равным натуральному числу 6 или менее.

[205] При определении, что способ кодирования смещения кандидата на слияние применяется к текущему блоку, в качестве исходного вектора движения текущего блока может быть установлено только максимальное количество кандидатов на слияние, установленное заранее. То есть, количество кандидатов на слияние, которые могут использоваться текущим блоком, может определяться адаптивно, согласно тому, применяется ли способ кодирования смещения кандидата на слияние. Например, когда значение merge_offset_vector_flag приравнено 0, максимальное количество кандидатов на слияние, которые могут использоваться текущим блоком, может быть приравнено М, в то время как когда значение merge_offset_vector_flag приравнено 1, максимальное количество кандидатов на слияние, которые могут использоваться текущим блоком, может быть приравнено N. В данном случае М обозначает максимальное количество кандидатов на слияние, которое может содержать список кандидатов на слияние, и N обозначает натуральное число, меньшее или равное М.

[206] Например, когда М равно 6, и N равно 2, как доступные для текущего блока могут быть установлены два кандидата на слияние, имеющие наименьший индекс из кандидатов на слияние, включенных в список кандидатов на слияние. Соответственно, как исходный вектор движения текущего блока может быть установлен вектор движения кандидата на слияние, имеющего значение индекса, равное 0, или вектор движения кандидата на слияние, имеющего значение индекса, равное 1. Когда М и N равны (например, когда М и N равны 2), как доступные для текущего блока могут быть установлены все кандидаты на слияние, включенные в список кандидатов на слияние.

[207] Альтернативно возможность использования соседнего блока в качестве кандидата на слияние может быть определена на основании того, применяется ли к текущему блоку способ кодирования разности между векторами смещения и движения. Например, когда значение merge_offset_vector_flag равно 1, по меньшей мере один из соседнего блока, смежного с верхним правым углом текущего блока, соседнего блока, смежного с нижним левым углом, и соседнего блока, смежного с нижним левым углом, может быть установлен как недоступный в качестве кандидата на слияние. Соответственно, когда способ кодирования разности между векторами смещения и движения применяется к текущему блоку, вектор движения по меньшей мере одного из соседнего блока, смежного с верхним правым углом текущего блока, соседнего блока, смежного с нижним левым углом, и соседнего блока, смежного с нижним левым углом, может не устанавливаться как исходный вектор движения. Альтернативно, когда значение merge_offset_vector_flag равно 1, временный соседний блок текущего блока может быть установлен как недоступный в качестве кандидата на слияние.

[208] Когда способ кодирования разности между векторами смещения и движения применяется к текущему блоку, может быть установлено неиспользование по меньшей мере одного из парного кандидата на слияние и кандидата на нулевое слияние. Соответственно, когда значение merge_offset_vector_flag равно 1, по меньшей мере один из парного кандидата на слияние и кандидата на нулевое слияние может не добавляться в список кандидатов на слияние, несмотря на то, что количество кандидатов на слияние, включенных в список кандидатов на слияние, меньше максимального количества.

[209] Вектор движения кандидата на слияние может быть установлен как исходный вектор движения текущего блока. В этом случае, когда количество кандидатов на слияние, которые могут использоваться текущим блоком, является множественным, посредством битового потока может передаваться информация, указывающая один из множества кандидатов на слияние. Например, когда максимальное количество кандидатов на слияние, которое может содержать список кандидатов на слияние, больше 1, посредством битового потока может передаваться информация merge_idx, указывающая любой из множества кандидатов на слияние. То есть, в способе кодирования смещения кандидата на слияние кандидат на слияние может быть указан информацией merge_idx для указания одного из множества кандидатов на слияние. Исходный вектор движения текущего блока может быть установлен как вектор движения кандидата на слияние, указанного посредством merge_idx.

[210] С другой стороны, когда количество кандидатов на слияние, которые могут использоваться текущим блоком, равно 1, передача информации, указывающей кандидата на слияние, может быть пропущена. Например, когда максимальное количество кандидатов на слияние, которое может содержать список кандидатов на слияние, не больше 1, может быть пропущена передача информации merge_idx, указывающей кандидата на слияние. То есть, в способе кодирования смещения кандидата на слияние, когда в списке кандидатов на слияние содержится один кандидат на слияние, кодирование информации merge_idx для определения кандидата на слияние может быть пропущено, и исходный вектор движения может быть определен на основании кандидата на слияние, содержащегося в списке кандидатов на слияние. Вектор движения кандидата на слияние может быть установлен как исходный вектор движения текущего блока.

[211] В качестве другого примера, после определения кандидата на слияние текущего блока может определяться, применять ли к текущему блоку способ кодирования разности между векторами смещения и движения. Например, когда максимальное количество кандидатов на слияние, которое может содержать список кандидатов на слияние, больше 1, может передаваться информация merge_idx, указывающая на один из кандидатов на слияние. После выбора кандидата на слияние на основании merge_idx может декодироваться merge_offset_vector_flag, указывающий, применяется ли к текущему блоку способ кодирования разности между векторами смещения и движения. В таблице 2 представлен вид, показывающий синтаксическую таблицу согласно вышеописанному варианту осуществления.

[213] В качестве другого примера, после определения кандидата на слияние текущего блока, необходимость применения к текущему блоку способа кодирования разности между векторами смещения и движения может определяться только тогда, когда индекс определенного кандидата на слияние меньше максимального количества кандидатов на слияние, которые могут использоваться при применении способа кодирования разности между векторами смещения и движения. Например, merge_offset_vector_flag, указывающий, применять ли к текущему блоку способ кодирования разности между векторами смещения и движения, может кодироваться и передаваться только тогда, когда значение индексной информации merge_idx меньше N. Когда значение индексной информации merge_idx больше или равно N, кодирование merge_offset_vector_flag может быть пропущено. Когда кодирование merge_offset_vector_flag пропущено, можно определить, что способ кодирования разности между векторами смещения и движения не применяется к текущему блоку.

[214] Альтернативно, после определения кандидата на слияние текущего блока с учетом того, содержит определенный кандидат на слияние информацию о двунаправленном движении или информацию об однонаправленном движении, можно определить, применять ли способ кодирования разности между векторами смещения и движения к текущему блоку. Например, merge_offset_vector_flag, указывающий, применять ли к текущему блоку способ кодирования разности между векторами смещения и движения, может кодироваться и передаваться только тогда, когда значение индексной информации merge_idx меньше N, и кандидат на слияние, выбранный с помощью этой индексной информации, содержит информацию о двунаправленном движении. Альтернативно, merge_offset_vector_flag, указывающий, применять ли к текущему блоку способ кодирования разности между векторами смещения и движения, может кодироваться и передаваться только тогда, когда значение индексной информации merge_idx меньше N, и кандидат на слияние, выбранный с помощью этой индексной информации, содержит информацию об однонаправленном движении.

[215] Альтернативно, необходимость применения способа кодирования разности между векторами смещения и движения может определяться на основании по меньшей мере одного из размера текущего блока, формы текущего блока и того, находится ли текущий блок в контакте с границей элемента кодового дерева. Когда по меньшей мере одно из размера текущего блока, формы текущего блока и того, находится ли текущий блок в контакте с границей элемента кодового дерева, не удовлетворяет предварительно установленному условию, кодирование merge_offset_vector_flag, указывающего, применять ли к текущему блоку способ кодирования разности между векторами смещения и движения, может быть пропущено.

[216] После выбора кандидата на слияние вектор движения кандидата на слияние может быть установлен как исходный вектор движения текущего блока. Тогда вектор смещения может определяться информацией о декодировании, указывающей величину вектора смещения, и информацией, указывающей направление вектора смещения. Вектор смещения может иметь компонент горизонтального направления или компонент вертикального направления.

[217] Информацией, указывающей величину вектора смещения, может являться индексная информация, указывающая любого из кандидатов величины движения. Например, индексная информация distance_idx, указывающая любой из кандидатов величины движения, может передаваться посредством битового потока. В таблице 3 показаны преобразование в двоичную форму индексной информации distance_idx и значения переменной DistFromMergeMV для определения величины вектора смещения согласно distance_idx.

[219] Величина вектора смещения может быть получена путем деления переменной DistFromMergeMV на предварительно установленное значение. В уравнении 4 показан пример определения величины вектора смещения.

[220] [Уравнение 4]

[221]

[222] Согласно уравнению 4, в качестве величины вектора смещения может быть установлено значение, полученное путем деления переменной DistFromMegeMV на 4, или значение, полученное путем сдвига переменной DistFromMergeMV влево на 2.

[223] Может использоваться большее количество кандидатов величины движения или меньшее количество кандидатов величины движения, чем в примере 3, или диапазон кандидатов на величину смещения вектора движения может быть установлен иначе, чем в примере, показанном в таблице 5. Например, величина компонента горизонтального направления или компонента вертикального направления вектора смещения может быть установлена как не превышающая 2 расстояния между отсчетами. В таблице 4 показаны преобразование в двоичную форму индексной информации distance_idx и значения переменной DistFromMergeMV для определения величины вектора смещения согласно distance_idx.

[225] Альтернативно, диапазон кандидатов на величину смещения вектора движения может быть установлен иначе на основании точности вектора движения. Например, когда точность вектора движения для текущего блока равна дробному числу пикселей, значения переменной DistFromMergeMV, соответствующие значениям индексной информации distance_idx, могут быть приравнены 1, 2, 4, 8, 16 и т.п. Здесь дробное число пикселей включает по меньшей мере одно из 1/16 пикселя, одной восьмой части пикселя, четверти пикселя и половины пикселя. С другой стороны, когда точность вектора движения для текущего блока равна целому числу пикселей, значения переменной DistFromMergeMV, соответствующие значениям индексной информации distance_idx, могут быть приравнены 4, 8, 16, 32, 64 и т.п. То есть, таблица, к которой следует обращаться с целью определения переменной DistFromMergeMV, может быть установлена по-разному согласно точности вектора движения для текущего блока.

[226] Например, когда точность вектора движения текущего блока или кандидата на слияние равна четверти пикселя, переменная DistFromMergeMV, указанная посредством distance_idx, может быть получена с использованием таблицы 3. С другой стороны, когда точность вектора движения текущего блока или кандидата на слияние равна целому числу пикселей, в качестве значения переменной DistFromMergeMV может быть получено значение, полученное путем взятия N-кратной величины (например, 4-кратной величины) значения переменной DistFromMergeMV, указанной посредством distance_idx в таблице 3.

[227] Информация для определения точности вектора движения может передаваться посредством битового потока. Например, эта информация может передаваться на уровне последовательности, изображения, слайса или блока. Соответственно, диапазон кандидатов величины движения может быть установлен по-другому, согласно информации, связанной с точностью вектора движения, передаваемой посредством битового потока. Альтернативно, точность вектора движения может быть определена на основании кандидата на слияние текущего блока. Например, точность вектора движения текущего блока может быть приравнена к точности вектора движения кандидата на слияние.

[228] Альтернативно, информация для определения диапазона поиска вектора смещения может передаваться посредством битового потока. По меньшей мере одно из количества кандидатов величины движения, минимального числового значения из кандидатов величины движения и максимального числового значения из кандидатов величины движения могут быть определены на основании диапазона поиска. Например, посредством битового потока может передаваться флаг merge_offset_vector_flag для определения диапазона поиска вектора смещения. Эта информация может передаваться посредством заголовка последовательности, заголовка изображения или заголовка слайса.

[229] Например, когда значение merge_offset_extend_range_flag равно 0, величина вектора смещения может быть установлена так, чтобы она не превышала 2. Соответственно, максимальное числовое значение DistFromMergeMV может быть приравнено 8. С другой стороны, когда значение merge_offset_extend_range_flag равно 1, величина вектора смещения может быть установлена так, чтобы она не превышала 32 расстояния между отсчетами. Соответственно, максимальное числовое значение DistFromMergeMV может быть приравнено 128.

[230] Величина вектора смещения может быть определена с использованием флага, указывающего, превышает ли величина вектора смещения пороговое значение. Например, посредством битового потока может передаваться флаг distance_flag, указывающий, превышает ли величина вектора смещения пороговое значение. Пороговое значение может быть равно 1, 2, 4, 8 или 16. Например, когда distance_flag равен 1, это указывает, что величина вектора смещения больше 4. С другой стороны, когда distance_flag равен 0, это указывает, что величина вектора смещения меньше или равна 4.

[231] Когда величина вектора смещения больше порогового значения, с использованием индексной информации distance_idx может быть получено значение разности между величиной вектора смещения и пороговым значением. Альтернативно, когда величина вектора смещения меньше или равна пороговому значению, с использованием индексной информации distance_idx может быть получена величина вектора смещения. Таблица 5 представляет собой синтаксическую таблицу, показывающую способ кодирования distance_flag и distance_idx.

[233] В уравнении 5 показан пример получения переменной DistFromMergeMV для определения величины вектора смещения с использованием distance_flag и distance_idx.

[234] [Уравнение 5]

[235]

[236] В уравнении 5 значение distance_flag может быть приравнено 1 или 0. Значение distance_idx может быть приравнено 1, 2, 4, 8, 16, 32, 64, 128 и т.п. N обозначает коэффициент, определяемый пороговым значением. Например, когда пороговое значение равно 4, N может быть приравнен 16.

[237] Информацией, указывающей направление вектора смещения, может являться индексная информация, указывающая любого из кандидатов на направление вектора. Например, индексная информация direction_idx указывающая любого из кандидатов на направление вектора, может передаваться посредством битового потока. В таблице 6 показаны преобразование в двоичную форму индексной информации direction_idx и направления вектора смещения согласно direction_idx.

[239] В таблице 6 sign[0] указывает горизонтальное направление, и sign[1] указывает вертикальное направление. +1 указывает, что значение компонента вектора смещения по оси х или оси у является положительным (+), и -1 указывает, что значение компонента вектора смещения по оси х или оси у является отрицательным (-). В уравнении 6 показан пример определения вектора смещения на основании величины и направления вектора смещения.

[240] [Уравнение б]

[241]

[242] В уравнении 6 offsetMV[0] обозначает компонент вертикального направления вектора смещения, и offsetMV[l] обозначает компонент горизонтального направления вектора смещения.

[243] На фиг.17 представлен вид, показывающий вектор смещения

согласно значениям distance_idx, указывающей величину вектора смещения, и direction_idx, указывающей направление вектора смещения.

[244] Как показано в примере на фиг.17, величина и направление вектора смещения могут быть определены согласно значениям distance_idx и direction_idx. Максимальная величина вектора смещения может быть установлена так, чтобы она не превышала порогового значения. В данном случае пороговое значение может иметь значение, предварительно заданное в кодере и декодере. Например, пороговое значение может быть равно 32 расстояниям между отсчетами. Альтернативно, пороговое значение может быть определено согласно величине исходного вектора движения. Например, пороговое значение для горизонтального направления может быть установлено на основании величины компонента горизонтального направления исходного вектора движения, и пороговое значение для вертикального направления может быть установлено на основании величины компонента вертикального направления исходного вектора движения.

[245] Когда кандидат на слияние содержит информацию о двунаправленном движении, в качестве исходного вектора движения L0 текущего блока может быть установлен вектор движения L0 кандидата на слияние, и в качестве исходного вектора движения L1 текущего блока может быть установлен вектор движения L1 кандидата на слияние. В этом случае вектор смещения L0 и вектор смещения L1 могут быть определены с учетом значения разности в порядке вывода между опорным изображением L0 кандидата на слияние и текущим изображением (далее называемого значением разности L0), и значения разности в порядке вывода в между опорным изображением L1 кандидата на слияние и текущим изображением (далее называемого значением разности L1).

[246] В первую очередь, когда знаки значения разности L0 и значения разности L1 совпадают, вектор смещения L0 и вектор смещения L1 могут быть приравнены друг другу. С другой стороны, когда знаки значения разности L0 и значения разности L1 отличаются, вектор смещения L0 может быть установлен в направлении, противоположном вектору смещения L1.

[247] Величина вектора смещения L0 и величина вектора смещения L1 могут быть приравнены друг другу. Альтернативно, величина вектора смещения L1 может быть определена путем масштабирования вектора смещения L0 на основании значения разности L0 и значения разности L1.

[248] Например, в уравнении 7 показаны вектор смещения L0 и вектор смещения L1, когда знаки значения разности L0 и значения разности L1 совпадают.

[249] [Уравнение 7]

[250]

[251]

[252] В уравнении 7 offsetMVL0[0] указывает компонент горизонтального направления вектора смещения L0, и offsetMVL0[1] указывает компонент вертикального направления вектора смещения L0. offsetMVL1[0] указывает компонент горизонтального направления вектора смещения L1, и offsetMVL1[1] указывает компонент вертикального направления вектора смещения L1.

[253] В уравнении 8 показаны вектор смещения L0 и вектор смещения L1, когда знаки значения разности L0 и значения разности L1 отличаются.

[254] [Уравнение 8]

[255]

[256]

[257] Может быть задано более четырех кандидатов на направление вектора. В таблицах 7 и 8 показаны примеры, в которых заданы восемь кандидатов на направление вектора.

[260] В таблицах 7 и 8, когда абсолютные значения sign[0] и sign[1] больше 0, это указывает на то, что вектор смещения проходит в диагональном направлении. При использовании таблицы 6 величины компонентов диагонального вектора смещения по оси х и оси у приравнены к abs(offsetMV), тогда как при использовании таблицы 7 величины компонентов диагонального вектора смещения по оси х и оси у приравнены к abs(offsetMV/2).

[261] На фиг.18 представлен вид, показывающий вектор смещения согласно значениям distance_idx, указывающей величину вектора смещения, и direction_idx, указывающей направление вектора смещения.

[262] На фиг.18 (а) представлен вид, показывающий пример применения таблицы 6, и на фиг.18 (b) представлен вид, показывающий пример применения таблицы 7.

[263] Например, информация для определения по меньшей мере одного из количества и размеров кандидатов на направление вектора может передаваться посредством битового потока. Например, для определения кандидатов на направление вектора посредством битового потока может передаваться флаг merge_offset_direction_range_flag. Этот флаг может передаваться на уровне последовательности, изображения или слайса. Например, когда числовое значение этого флага равно 0, могут использоваться четыре кандидата на направление вектора, пример которых приведен в таблице 6. С другой стороны, когда числовое значение флага равно 1, могут использоваться восемь кандидатов на направление вектора, пример которых приведен в таблице 7 или таблице 8.

[264] Альтернативно, по меньшей мере один из количества и размеров кандидатов на направление вектора может быть определен на основании величины вектора смещения. Например, когда значение переменной DistFromMergeMV для определения величины вектора смещения меньше или равно пороговому значению, могут использоваться восемь кандидатов на направление вектора, пример которых приведен в таблице 7 или таблице 8. С другой стороны, когда значение переменной DistFromMergeMV больше порогового значения, могут использоваться четыре кандидата на направление вектора, пример которых приведен в таблице 6.

[265] Альтернативно, по меньшей мере один из количества и размеров кандидатов на направление вектора может быть определен на основании значения MVx компонента по оси х и значения MVy компонента по оси у исходного вектора движения. Например, когда разность между MVx и MVy или абсолютная величина этой разности меньше или равна пороговому значению, могут использоваться восемь кандидатов на направление вектора, пример которых приведен в таблице 7 или таблице 8. С другой стороны, когда разность между MVx и MVy или абсолютная величина этой разности больше порогового значения, могут использоваться четыре кандидата на направление вектора, пример которых приведен в таблице 6.

[266] Вектор движения текущего блока может быть получен путем сложения вектора смещения с исходным вектором движения. В уравнении 9 показан пример определения вектора движения текущего блока.

[267] [Уравнение 9]

[268]

[269]

[270] В уравнении 9 mvL0 обозначает вектор движения L0 текущего блока, и mvL1 обозначает вектор движения L1 текущего блока. mergeMVL0 обозначает исходный вектор движения L0 текущего блока (т.е., вектор движения L0 кандидата на слияние), и mergeMVL1 обозначает исходный вектор движения L1 текущего блока. [0] указывает компонент горизонтального направления вектора движения, и [1] указывает компонент вертикального направления вектора движения.

[271] Внутреннее предсказание предназначено для предсказания текущего блока с использованием восстановленных отсчетов, которые были кодированы/декодированы поблизости от текущего блока. В этом случае отсчеты, восстановленные до применения фильтра в контуре, могут использоваться для внутреннего предсказания текущего блока.

[272] Метод внутреннего предсказания включает внутреннее предсказание на основе матрицы и общее внутреннее предсказание, учитывающее направленность относительно соседних восстановленных отсчетов. Информация, указывающая метод внутреннего предсказания текущего блока, может передаваться посредством битового потока. Информация может представлять собой 1-битный флаг. Альтернативно метод внутреннего предсказания текущего блока может быть определен на основании по меньшей мере одного из местоположения, размера и формы текущего блока или на основании метода внутреннего предсказания соседнего блока. Например, когда текущий блок находится на границе изображения, может быть установлено, что нет необходимости применять внутреннее предсказание на основе матрицы к текущему блоку.

[273] Внутреннее предсказание, представляющее собой внутреннее предсказание на основе матрицы, представляет собой способ получения блока предсказания текущего блока кодером и декодером на основании матричного произведения между ранее сохраненной матрицей и восстановленными отсчетами поблизости от текущего блока. Информация для указания одной из множества ранее сохраненных матриц может передаваться посредством битового потока. Декодер может определять матрицу для внутреннего предсказания текущего блока на основании информации и размера текущего блока.

[274] Общее внутреннее предсказание представляет собой способ получения блока предсказания для текущего блока на основании режима внутреннего предсказания, не основанного на информации об углах, или режима внутреннего предсказания, основанного на информации об углах.

[275] Полученное остаточное изображение может быть получено путем вычитания видео предсказания из первоначального видео. В этом случае, когда остаточное видео изменяется на частотную область, субъективное качество видео существенно не снижается, хотя высокочастотные компоненты удалены из частотных компонентов. Соответственно, когда значения высокочастотных компонентов конвертируются в небольшие или значения высокочастотных компонентов установлены равными 0, имеет место эффект увеличения эффективности сжатия без генерирования существенного визуального искажения. Отражая эту характеристику, текущий блок может быть преобразован для разложения остаточного видео на двумерные частотные компоненты. Преобразование может быть выполнено с использованием метода преобразования, такого как дискретное косинусное преобразование (DCT) или дискретное синусное преобразование (DST).

[276] После преобразования текущего блока с использованием DCT или DST преобразованный текущий блок может быть преобразован повторно. В этом случае преобразование на основании DCT или DST может быть определено как первое преобразование, а повторное преобразование блока, к которому применено первое преобразование, может быть определено как второе преобразование.

[277] Первое преобразование может быть выполнено с использованием любой из множества основ-кандидатов преобразования. Например, первое преобразование может быть выполнено с использованием любого из DCT2, DCT8 или DCT7.

[278] Разные основы преобразования могут быть использованы для горизонтального направления и вертикального направления. Информация, указывающая комбинацию основы преобразования в горизонтальном направлении и основы преобразования в вертикальном направлении, может передаваться посредством битового потока.

[279] Элементы для выполнения первого преобразования и второго преобразования могут быть разными. Например, первое преобразование может быть выполнено в отношении блока 8 × 8, а второе преобразование может быть выполнено в отношении подблока размером 4 × 4 из преобразованного блока 8×8. В этом случае коэффициенты преобразования остаточных участков, в отношении которых не было выполнено второе преобразование, могут быть установлены равными 0.

[280] Альтернативно первое преобразование может быть выполнено в отношении блока 4x4, а второе преобразование может быть выполнено в отношении участка размером 8x8, содержащего преобразованный блок 4×4.

[281] Информация, указывающая, было ли выполнено второе преобразование, может передаваться посредством битового потока.

[282] Декодер может выполнять обратное преобразование второго преобразования (второе обратное преобразование) и может выполнять обратное преобразование первого преобразования (первое обратное преобразование) в отношении результата обратного преобразования. В результате выполнения второго обратного преобразования и первого обратного преобразования могут быть получены остаточные сигналы для текущего блока.

[283] Квантование предназначено для уменьшения энергии блока, и процесс квантования включает процесс разделения коэффициента преобразования на конкретное постоянное значение. Постоянное значение может быть получено с помощью параметра квантования, и параметр квантования может быть определен как значение от 1 до 63.

[284] Когда кодер выполняет преобразование и квантование, декодер может получать остаточный блок путем обратного квантования и обратного преобразования. Декодер может получать восстановленный блок для текущего блока путем сложения блока предсказания и остаточного блока.

[285] Когда получают восстановленный блок текущего блока, потеря информации, происходящая в процессе квантования и кодирования, может быть уменьшена посредством фильтрования в контуре. Фильтр в контуре может включать по меньшей мере один из деблочного фильтра, фильтра адаптивного смещения отсчета (SAO) и адаптивного контурного фильтра (ALF).

[286] Применение вариантов осуществления, описанных выше, сфокусированных на процессе декодирования или процессе кодирования, к процессу кодирования или процессу декодирования включено в объем настоящего изобретения. Изменение вариантов осуществления, описанных в предварительно определенном порядке, в порядке, отличающемся от описанного порядка, также включено в объем настоящего изобретения.

[287] Хотя приведенные выше варианты осуществления были описаны на основании ряда этапов или блок-схем, это не ограничивает порядок выполнения во времени настоящего изобретения, и они могут быть выполнены одновременно или в другом порядке при необходимости. Кроме того, каждый из компонентов (например, элементы, модули и т.д.), составляющих структурную схему в вариантах осуществления, описанных выше, может быть реализован в виде аппаратного устройства или программного обеспечения, или множество компонентов могут быть скомбинированы для реализации в виде одного аппаратного устройства или программного обеспечения. Варианты осуществления, описанные выше, могут быть реализованы в форме программных команд, которые могут быть исполнены посредством различных компьютерных компонентов и записаны в машиночитаемом носителе данных. Машиночитаемый носитель данных может содержать программные команды, файлы данных, структуры данных и т.п. независимо или в комбинации. Машиночитаемый носитель данных включает, например, магнитные носители, такие как жесткий диск, гибкий диск и магнитную ленту, оптические носители данных, такие как CD-ROM и DVD, магнитно-оптические носители, такие как гибкий оптический диск, и аппаратные устройства, специально выполненные с возможностью хранения и исполнения программных команд, такие как ROM, RAM, флеш-память и т.п. Аппаратные устройства, описанные выше, могут быть выполнены с возможностью работы с использованием одного или более программных модулей для выполнения процесса согласно настоящему изобретению, и наоборот.

[288] Настоящее изобретение может быть применено к электронному устройству, которое кодирует и декодирует видео.

Похожие патенты RU2813667C2

название год авторы номер документа
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ВИДЕОСИГНАЛОВ 2019
  • Ли, Пэ Кхын
RU2809582C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ВИДЕОСИГНАЛОВ 2019
  • Ли, Пэ Кхын
RU2809324C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ВИДЕОСИГНАЛОВ 2019
  • Ли, Пэ Кхын
RU2810054C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ВИДЕОСИГНАЛОВ 2019
  • Ли, Пэ Кхын
RU2802731C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2808720C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2801863C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2818972C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2801585C2
СПОСОБ И УСТРОЙСТВО КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2799079C2
СПОСОБ И УСТРОЙСТВО КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2819286C2

Иллюстрации к изобретению RU 2 813 667 C2

Реферат патента 2024 года СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ВИДЕОСИГНАЛОВ

Изобретение относится к области кодирования и декодирования видео. Техническим результатом является повышение эффективности предсказания, осуществляемого между изображениями. Предложен способ декодирования видео, который включает этапы: генерирование списка кандидатов на слияние для текущего блока; определение кандидата на слияние для текущего блока из кандидатов на слияние, включенных в список кандидатов на слияние; получение вектора смещения для текущего блока; и получение вектора движения для текущего блока путем сложения вектора смещения с вектором движения кандидата на слияние. 3 н. и 9 з.п. ф-лы, 18 ил.

Формула изобретения RU 2 813 667 C2

1. Способ декодирования видео, включающий следующие этапы:

генерирование списка кандидатов на слияние для текущего блока;

определение кандидата на слияние для текущего блока из кандидатов на слияние, включенных в список кандидатов на слияние;

получение вектора смещения для текущего блока; и

получение вектора движения для текущего блока путем сложения вектора смещения с вектором движения кандидата на слияние,

при этом величина вектора смещения определяется на основании первой индексной информации, указывающей одного из кандидатов величины движения, и величина вектора смещения получается путем применения операции логического сдвига к значению, указанному кандидатом величины движения, указанным первой индексной информацией.

2. Способ по п. 1, отличающийся тем, что по меньшей мере одно из максимального числового значения и минимального числового значения кандидатов величины движения устанавливается по-разному согласно числовому значению флага, указывающего диапазон числовых значений кандидатов величины движения.

3. Способ по п. 2, отличающийся тем, что флаг передается на уровне изображения.

4. Способ по п. 1, отличающийся тем, что по меньшей мере одно из максимального числового значения и минимального числового значения кандидатов величины движения устанавливается по-разному согласно точности вектора движения для текущего блока.

5. Способ по п. 1, отличающийся тем, что направление вектора смещения определяется на основании второй индексной информации, указывающей одного из кандидатов на направление вектора.

6. Способ по п. 4, отличающийся тем, что диапазон кандидатов на величину смещения вектора движения устанавливается иначе на основании точности вектора движения.

7. Способ по п. 4, отличающийся тем, что:

точность вектора движения для текущего блока равна дробному числу пикселей, при этом числовое значение индексной информации задано равным 1, 2, 4, 8 или 16; или

точность вектора движения для текущего блока равна целому числу пикселей, при этом числовое значение индексной информации задано равным 4, 8, 16, 32 или 64.

8. Способ по п. 7, отличающийся тем, что дробное число пикселей включает четверть пикселя.

9. Способ по п. 4, отличающийся тем, что информация для определения точности вектора движения передается на уровне изображения битового потока.

10. Способ кодирования видео, включающий следующие этапы:

генерирование списка кандидатов на слияние для текущего блока;

выбор кандидата на слияние для текущего блока из кандидатов на слияние, включенных в список кандидатов на слияние;

получение вектора смещения для текущего блока; и

получение вектора движения для текущего блока путем сложения вектора смещения с вектором движения кандидата на слияние,

при этом способ включает этап:

кодирование первой индексной информации для указания кандидата величины движения, указывающего величину вектора смещения среди множества кандидатов величины движения,

при этом кандидат величины движения имеет значение, полученное путем применения операции логического сдвига к величине вектора смещения.

11. Способ по п. 10, отличающийся тем, что дополнительно включает этап кодирования флага, указывающего диапазон числовых значений кандидатов величины движения, при этом по меньшей мере одно из максимального числового значения и минимального числового значения кандидатов величины движения устанавливается по-разному согласно числовому значению флага; или

этап кодирования второй индексной информации для указания кандидата на направление вектора, указывающего направление вектора смещения, из множества кандидатов на направление вектора.

12. Устройство для декодирования видео, содержащее блок для предсказания, осуществляемого между изображениями, для генерирования списка кандидатов на слияние для текущего блока, определения кандидата на слияние для текущего блока из кандидатов на слияние, включенных в список кандидатов на слияние, получения вектора смещения для текущего блока и получения вектора движения для текущего блока путем сложения вектора смещения с вектором движения кандидата на слияние,

при этом величина вектора смещения определяется на основании первой индексной информации, указывающей одного из кандидатов величины движения, и величина вектора смещения получается путем применения операции логического сдвига к значению, указанному кандидатом величины движения, указанным первой индексной информацией.

Документы, цитированные в отчете о поиске Патент 2024 года RU2813667C2

XU CHEN et al, CE4: Enhanced Merge Mode (Test 4.2.15), Joint Video Experts Team (JVET) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-K0198, 11th Meeting: Ljubljana, 10-18 July 2018
GUICHUN LI et al, CE4-related: affine merge mode with prediction offsets, Joint Video Experts Team (JVET) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG 11,

RU 2 813 667 C2

Авторы

Ли, Пэ Кхын

Даты

2024-02-15Публикация

2019-11-08Подача