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

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

ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ

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

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

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

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВ

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

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

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

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

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

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

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

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

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

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

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

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

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

На фиг. 14-16 представлены виды, показывающие положения опорных отсчетов.

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

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

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

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

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

На фиг. 23 представлен вид, показывающий опорные отсчеты, включенные в каждую линию опорных отсчетов.

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

На фиг. 25 и 26 представлены виды, показывающие пример одномерного массива, размещающего опорные отсчеты в линию.

На фиг. 27 представлен вид, показывающий пример углов, образованных между режимами внутреннего предсказания, основанными на информации об углах, и прямой линией, параллельной оси x.

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

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

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

На фиг. 31 представлен вид, показывающий предварительно заданные фильтры-кандидаты.

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

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

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

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

ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНОГО ВАРИАНТА ОСУЩЕСТВЛЕНИЯ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Часть 130 для преобразования может преобразовывать остаточный блок, содержащий первоначальный блок и информацию об остаточном коэффициенте элемента предсказания, сгенерированного посредством частей 120 и 125 для предсказания, с помощью способа преобразования, такого как дискретное косинусное преобразование (DCT), дискретное синусное преобразование (DST) или пропуск преобразования. Применение DCT, DST или KLT для преобразования остаточного блока, может быть определено на основании информации о режиме внутреннего предсказания элемента предсказания, используемого для генерирования остаточного блока.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В уравнении 3 (x, y) обозначают положение подблока. В данном случае положение подблока указывает положение опорного отсчета, включенного в подблок. Опорный отсчет может представлять собой отсчет, расположенный в верхнем левом углу подблока, или отсчет, у которого по меньшей мере одна из координат по оси x и оси y представляет собой центральную точку. (x0, y0) обозначает положение первой контрольной точки и (sv0x, sv0y) обозначает первый аффинный исходный вектор. Кроме того, (x1, y1) обозначает положение второй контрольной точки и (sv1x, sv1y) обозначает второй аффинный исходный вектор.

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

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

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

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

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

Соседний блок текущего блока может включать по меньшей мере один из соседнего блока (A), смежного с левой стороной текущего блока, соседнего блока (B), смежного с верхней стороной текущего блока, соседнего блока (C), смежного с верхним правым углом текущего блока, соседнего блока (D), смежного с нижним левым углом текущего блока, и соседнего блока (E), смежного с верхним левым углом текущего блока. Когда координаты верхнего левого отсчета текущего блока представляют собой (x0, y0), левый соседний блок A содержит отсчет в положении (x0-1, y0+H-1) и верхний соседний блок B содержит отсчет в положении (x0+W-1, y0-1). В данном случае W и H обозначают ширину и высоту текущего блока соответственно. Верхний правый соседний блок C содержит отсчет в положении (x0+W, y0-1) и нижний левый соседний блок D содержит отсчет в положении (x0-1, y0+H). Верхний левый соседний блок E содержит отсчет в положении (x0-1, y0-1).

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

Кандидат на слияние для текущего блока может быть сгенерирован путем поиска соседних блоков в предварительно заданном порядке сканирования. Порядок сканирования может быть предварительно задан в кодере и декодере. Например, поиск соседних блоков может осуществляться в следующем порядке: A, B, C, D и E. Кроме того, кандидаты на слияние могут быть последовательно получены из найденных аффинных соседних блоков. Альтернативно порядок сканирования может быть адаптивно определен на основании по меньшей мере одного из размера, формы и модели аффинного движения текущего блока. То есть порядки сканирования блоков, у которых отличается по меньшей мере одно из размера, формы и модели аффинного движения, могут отличаться друг от друга.

Альтернативно осуществляется последовательный поиск блоков, расположенных сверху текущего блока, и кандидата на слияние получают из аффинного соседнего блока, найденного первым, и осуществляется последовательный поиск блоков, расположенных на левой стороне текущего блока, и кандидат на слияние может быть получен из аффинного соседнего блока, найденного первым. В данном случае соседние блоки, расположенные сверху текущего блока, включают по меньшей мере один из соседнего блока E, соседнего блока B и соседнего блока C, и блоки, расположенные на левой стороне текущего блока могут включать по меньшей мере один из блока A и блока D. В этом случае соседний блок E также может быть классифицирован как блок, расположенный на левой стороне текущего блока.

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

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

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

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

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

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

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

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

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

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

Когда первый аффинный исходный вектор nv0 для верхней левой контрольной точки и второй аффинный исходный вектор nv1 для верхней правой контрольной точки сохраняются для аффинного соседнего блока, третий аффинный исходный вектор nv2 для нижней левой контрольной точки аффинного соседнего блока может быть получен на основании первого аффинного исходного вектора и второго аффинного исходного вектора. В уравнении 4 показан пример получения третьего аффинного исходного вектора.

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

В уравнении 4 (nv0x, nv0y) обозначает первый аффинный исходный вектор nv0, (nv1x, nv1y) обозначает второй аффинный исходный вектор nv1 и (nv2x, nv2y) обозначает третий аффинный исходный вектор nv2. Кроме того, (xn0, xn0) обозначает положение первой контрольной точки, (xn1, xn1) обозначает положение второй контрольной точки и (xn2, xn2) обозначает положение третьей контрольной точки.

После этого аффинный исходный вектор текущего блока может быть получен с использованием первого аффинного исходного вектора, второго аффинного исходного вектора и третьего аффинного исходного вектора. В уравнении 5 показан пример получения первого аффинного исходного вектора v0 текущего блока, и в уравнении 6 показан пример получения второго аффинного исходного вектора v1 текущего блока.

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

[Уравнение 6]

В уравнениях 5 и 6 (v0x, v0y) обозначает первый аффинный исходный вектор sv0 текущего блока и (v1x, v1y) обозначает второй аффинный исходный вектор sv1 текущего блока. Кроме того, (x0, y0) обозначает положение первой контрольной точки и (x1, y1) обозначает положение второй контрольной точки. Например, первая контрольная точка указывает верхний левый угол текущего блока и вторая контрольная точка указывает верхний правый угол текущего блока.

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

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

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

В уравнениях 7 и 8 показан пример получения первого аффинного исходного вектора и второго аффинного исходного вектора текущего блока с использованием третьего аффинного исходного вектора для нижней левой контрольной точки и четвертого аффинного исходного вектора для нижней правой контрольной точки соседнего аффинного вектора.

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

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

В уравнениях 7 и 8 (xn2, yn2) обозначает координаты нижней левой контрольной точки аффинного соседнего блока и (xn3, yn3) обозначает координаты нижней правой контрольной точки аффинного соседнего блока. (x0, y0) обозначает координаты верхней левой контрольной точки текущего блока и (x1, y1) обозначает координаты верхней правой контрольной точки текущего блока. (nv2x, nv2y) обозначает аффинный исходный вектор нижней левой контрольной точки аффинного соседнего блока (т.е. третий аффинный исходный вектор) и (nv3x, nv3y) обозначает аффинный исходный вектор нижней правой контрольной точки аффинного соседнего блока (т.е. четвертый аффинный исходный вектор). (v0x, v0y) обозначает аффинный исходный вектор верхней левой контрольной точки текущего блока (т.е. первый аффинный исходный вектор) и (v1x, v1y) обозначает аффинный исходный вектор верхней правой контрольной точки текущего блока (т.е. второй аффинный исходный вектор).

Операция деления, включенная в уравнения 7 и 8, может быть изменена на операцию сдвига. Операция сдвига может быть выполнена на основании значения, полученного из ширины между нижней левой контрольной точкой и нижней правой контрольной точкой (т.е. (xn3-xn2)).

Как показано в примере, описанном выше, аффинные исходные векторы текущего блока могут быть получены из аффинных исходных векторов аффинного соседнего блока, которые были кодированы/декодированы. Для этого аффинные исходные векторы аффинного соседнего блока, которые были кодированы/декодированы, должны храниться в запоминающем устройстве. Однако, когда аффинные исходные векторы аффинного соседнего блока сохраняются в запоминающем устройстве в дополнение к векторам поступательного движения (т.е. аффинным векторам) подблоков, включенных в аффинный соседний блок, возникает проблема увеличения объема использования запоминающего устройства. Для решения этой проблемы аффинный исходный вектор текущего блока может быть получен с использованием вектора движения подблока, смежного с контрольной точкой аффинного соседнего блока, вместо аффинного исходного вектора аффинного соседнего блока. То есть вектор движения подблока, смежного с контрольной точкой аффинного соседнего блока, может быть установлен как аффинный исходный вектор аффинного соседнего блока. В данном случае подблок представляет собой блок, имеющий размер/форму, предварительно заданные в кодере и декодере, и может представлять собой блок, имеющий базовые размер/форму для хранения вектора движения. Например, подблок может представлять собой квадратный блок размером 4×4. Альтернативно вектор движения для конкретного положения отсчета может быть установлен как аффинный исходный вектор аффинного соседнего блока.

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

Вектор движения подблока, смежного с контрольной точкой, может быть установлен как аффинный исходный вектор контрольной точки. Например, в примере, показанном на фиг. 13, вектор движения (nv4x, nv4y) подблока (нижнего левого подблока), смежного с нижним левым углом аффинного соседнего блока, может быть установлен как аффинный исходный вектор (nv2x, nv2x) нижней левой контрольной точки и вектор движения (nv5x, nv5y) подблока (нижнего правого подблока), смежного с нижним правым углом, может быть установлен как аффинный исходный вектор (nv3x, nv3y) контрольной точки в нижнем правом углу. В данном случае нижний левый подблок может означать подблок, содержащий отсчет (например, отсчет в положении (xn2, yn2-1)), смежный с нижней левой контрольной точкой (xn2, yn2) в соседнем аффинном блоке, и нижний правый подблок может означать блок, содержащий отсчет (например, отсчет в положении (xn3-1, yn3-1)), смежный с нижней правой контрольной точкой (xn3, yn3) в соседнем аффинном блоке. Когда аффинные исходные векторы текущего блока получены на основании уравнений 7 и 8, третий аффинный исходный вектор аффинного соседнего блока может быть заменен вектором движения нижнего левого подблока и четвертый аффинный исходный вектор может быть заменен вектором движения нижнего правого подблока.

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

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

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

В качестве другого примера по меньшей мере один из нижнего левого опорного отсчета и нижнего правого опорного отсчета могут быть установлены как отсчет, расположенный за пределами аффинного соседнего блока. Это будет описано подробно со ссылкой на фиг. 14-16.

На фиг. 14-16 представлены виды, показывающие положения опорных отсчетов.

Как показано в примере на фиг. 14(a), верхний левый отсчет нижнего левого подблока может быть установлен как опорный отсчет (xn4, yn4) для нижней левой контрольной точки. Соответственно, нижний левый подблок, содержащий опорный отсчет (xn4 и yn4), может быть установлен как аффинный подблок для нижней левой контрольной точки.

Отсчет, расположенный на правой стороне верхнего правого отсчета нижнего правого подблока, может быть установлен как опорный отсчет (xn5, yn5) для нижней правой контрольной точки. Соответственно, подблок, смежный с правой стороной нижнего правого подблока, содержащего опорный отсчет (xn5 и yn5), может быть установлен как аффинный подблок для нижней правой контрольной точки.

Альтернативно, как показано в примере на фиг. 14(b), отсчет, расположенный на левой стороне верхнего левого отсчета нижнего левого подблока, может быть установлен как опорный отсчет (xn4, yn4) для нижней левой контрольной точки. Соответственно, подблок, смежный с левой стороной нижнего левого подблока, содержащего опорный отсчет (xn4 и yn4), может быть установлен как аффинный подблок для нижней левой контрольной точки.

Верхний правый отсчет нижнего правого подблока может быть установлен как опорный отсчет (xn5, yn5) для нижней правой контрольной точки. Соответственно, нижний правый подблок, содержащий опорный отсчет (xn5 и yn5), может быть установлен как аффинный подблок для нижней правой контрольной точки.

Альтернативно, как показано в примере на фиг. 15(a), нижний левый отсчет нижнего левого подблока может быть установлен как опорный отсчет (xn4, yn4) для нижней левой контрольной точки. Соответственно, нижний левый подблок, содержащий опорный отсчет (xn4 и yn4), может быть установлен как аффинный подблок для нижней левой контрольной точки.

Отсчет, расположенный на правой стороне нижнего правого отсчета нижнего правого подблока, может быть установлен как опорный отсчет (xn5, yn5) для нижней правой контрольной точки. Соответственно, подблок, смежный с правой стороной нижнего правого подблока, содержащего опорный отсчет (xn5 и yn5), может быть установлен как аффинный подблок для нижней правой контрольной точки.

Альтернативно, как показано в примере на фиг. 15(b), отсчет, расположенный на левой стороне нижнего левого отсчета нижнего левого подблока, может быть установлен как опорный отсчет (xn4, yn4) для нижней левой контрольной точки. Соответственно, подблок, смежный с левой стороной нижнего левого подблока, содержащего опорный отсчет (xn4 и yn4), может быть установлен как аффинный подблок для нижней левой контрольной точки.

Нижний правый отсчет нижнего правого подблока может быть установлен как опорный отсчет (xn5, yn5) для нижней правой контрольной точки. Соответственно, нижний правый подблок, содержащий опорный отсчет (xn5 и yn5), может быть установлен как аффинный подблок для нижней правой контрольной точки.

Альтернативно, как показано в примере на фиг. 16(a), отсчет, расположенный между верхним левым отсчетом и нижним левым отсчетом нижнего левого подблока (например, средний левый отсчет), может быть установлен как опорный отсчет (xn4, yn4) для нижней левой контрольной точки. Соответственно, нижний левый подблок, содержащий опорный отсчет (xn4 и yn4), может быть установлен как аффинный подблок для нижней левой контрольной точки.

Отсчет, расположенный на правой стороне отсчета, расположенного между верхним правым отсчетом и нижним правым отсчетом нижнего правого подблока (например, средний правый отсчет), может быть установлен как опорный отсчет (xn5, yn5) для нижней правой контрольной точки. Соответственно, подблок, смежный с правой стороной нижнего правого подблока, содержащего опорный отсчет (xn5 и yn5), может быть установлен как аффинный подблок для нижней правой контрольной точки.

Альтернативно, как показано в примере на фиг. 16(b), отсчет, расположенный на левой стороне отсчета, расположенного между верхним левым отсчетом и нижним левым отсчетом нижнего левого подблока, может быть установлен как опорный отсчет (xn4, yn4) для нижней левой контрольной точки. Соответственно, подблок, смежный с левой стороной нижнего левого подблока, содержащего опорный отсчет (xn4 и yn4), может быть установлен как аффинный подблок для нижней левой контрольной точки.

Отсчет, расположенный между верхним правым отсчетом и нижним правым отсчетом нижнего правого подблока, может быть установлен как опорный отсчет (xn5, yn5) для нижней правой контрольной точки. Соответственно, нижний правый подблок, содержащий опорный отсчет (xn5 и yn5), может быть установлен как аффинный подблок для нижней правой контрольной точки.

Когда аффинные исходные векторы текущего блока получены на основании уравнений 7 и 8, третий аффинный исходный вектор аффинного соседнего блока может быть заменен вектором движения аффинного подблока для нижней левой контрольной точки и четвертый аффинный исходный вектор может быть заменен вектором движения аффинного подблока для нижней правой контрольной точки. Кроме того, положение нижней левой контрольной точки может быть заменено положением нижнего левого опорного отсчета и положение нижней правой контрольной точки может быть заменено положением нижнего правого опорного отсчета.

В отличие от вариантов осуществления, описанных со ссылкой на фиг. 14-16, подблок, содержащий отсчет, смежный с опорным отсчетом, может быть установлен как аффинный подблок. В частности, отсчет, расположенный за пределами аффинного соседнего подблока, может быть установлен как опорный отсчет, и подблок, содержащийся в аффинном соседнем блоке, может быть установлен как аффинный подблок. Например, в примере, показанном на фиг. 14(a), отсчет, расположенный на правой стороне верхнего правого отсчета нижнего правого подблока, может быть установлен как опорный отсчет (xn5, yn5) и нижний правый подблок может быть установлен как аффинный подблок для нижнего правого угла. Альтернативно в примере, показанном на фиг. 14(b), отсчет, расположенный слева от верхнего левого отсчета нижнего левого подблока, может быть установлен как опорный отсчет (xn4, yn4) и нижний левый подблок может быть установлен как аффинный подблок для нижнего левого угла.

Варианты осуществления, описанные выше, могут быть равным образом применены к фиг. 15 и 16. То есть в примере, показанном на фиг. 15(a) или фиг. 16(a), отсчет, расположенный на правой стороне нижнего правого отсчета или среднего правого отсчета нижнего правого подблока, может быть установлен как опорный отсчет (xn5, yn5) и нижний правый подблок может быть установлен как аффинный подблок для нижнего правого угла. Альтернативно в примере, показанном на фиг. 15(b) или фиг. 16(b), отсчет, расположенный на левой стороне нижнего левого отсчета или среднего левого отсчета нижнего левого подблока, может быть установлен как опорный отсчет (xn4, yn4) и нижний левый подблок может быть установлен как аффинный подблок для нижнего левого угла.

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

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

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

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

[Уравнение 10]

В уравнениях 9 и 10 (nv4x, nv4y) обозначает вектор движения аффинного подблока для нижней левой контрольной точки и (nv5x, nv5y) обозначает вектор движения аффинного подблока для нижней правой контрольной точки. Поскольку вектор движения аффинного подблока и аффинный исходный вектор контрольной точки установлены равными, (nv4x, nv4y) может быть заменен аффинным исходным вектором (nv2x, nv2y) для нижней левой контрольной точки или (nv5x, nv5y) может быть заменен аффинным исходным вектором (nv3x, nv3y) для нижней правой контрольной точки.

(xn4, yn4) обозначает положение опорного отсчета для нижнего левого подблока. Альтернативно вместо него может использоваться центральное положение нижнего левого подблока или положение нижней левой контрольной точки. (xn5, yn5) обозначает положение опорного отсчета для нижнего правого подблока. Альтернативно вместо него может использоваться центральное положение нижнего правого подблока или положение нижней правой контрольной точки.

Уравнения 9 и 10 могут применяться, когда текущий блок не находится в контакте с границей элемента кодового дерева. Когда текущий блок находится в контакте с верхней границей элемента кодового дерева, вместо использования уравнений 9 и 10, вектор поступательного движения аффинного подблока, определенный на основании нижнего левого опорного отсчета, может быть установлен как третий аффинный исходный вектор, и вектор поступательного движения аффинного подблока, определенный на основании нижнего правого опорного отсчета, может быть установлен как четвертый аффинный исходный вектор.

В уравнениях 7 и 8 (xn3-xn2) обозначает ширину между нижней левой контрольной точкой и нижней правой контрольной точкой. Как описано выше, xn3 может быть заменено положением xn5 нижнего правого опорного отсчета и xn2 может быть заменено положение xn4 нижнего левого опорного отсчета. Далее (xn3-xn2) или значение, полученное за счет замены положений в вышеупомянутом уравнении положениями опорных отсчетов (например, (xn5-xn4)), определяется как переменная Wseed, и переменная называется шириной исходного подвектора.

Согласно положениям опорных отсчетов может возникнуть случай, когда ширина исходного подвектора не является степенным рядом числа 2 (например, 2n). Например, когда нижний левый отсчет нижнего левого подблока установлен как нижний левый опорный отсчет и нижний правый отсчет нижнего правого подблока установлен как нижний правый опорный отсчет, ширина исходного подвектора не кратна числу 2. Как описано выше, когда ширина исходного подвектора не является степенным рядом числа 2, ширина исходного подвектора может быть преобразована в степенной ряд числа 2. Преобразование может включать добавление смещения к ширине исходного подвектора или вычитание смещения из нее, или использование положения отсчета, смежного с опорным отсчетом, вместо положения опорного отсчета. Например, преобразованная ширина исходного подвектора может быть получена за счет добавления 1 к ширине между нижним левым опорным отсчетом и нижним правым опорным отсчетом. Альтернативно ширина между соседним опорным отсчетом, смежным с правой стороной нижнего правого опорного отсчета, и нижним левым опорным отсчетом может быть установлена как преобразованная ширина исходного подвектора. После этого аффинный исходный вектор текущего блока может быть получен за счет применения преобразованной ширины исходного подвектора к уравнениям 7 и 8.

Операция деления, включенная в уравнения 7 и 8, может быть изменена на операцию сдвига. Операция сдвига может быть выполнена на основании значения, полученного из преобразованной ширины исходного подвектора (т.е. значения, выраженного как степенной ряд числа 2).

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

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

Когда нижний правый опорный отсчет (xn5, yn5) аффинного соседнего блока E не принадлежит к аффинному соседнему блоку, аффинный исходный вектор может быть получен на основании отсчета (xn5-1, yn5), смежного с левой стороной нижнего правого опорного отсчета, из отсчетов, включенных в аффинный соседний блок. В частности, вектор поступательного движения подблока, содержащего соседний опорный отсчет (xn5-1, yn5), может быть установлен как аффинный исходный вектор нижней правой контрольной точки.

В примере, показанном на фиг. 17, показано, что отсчет, смежный с правой стороной верхнего правого отсчета нижнего правого подблока, представляет собой нижний правый опорный отсчет. Даже когда отсчет, смежный с правой стороной нижнего правого отсчета нижнего правого подблока, или отсчет, смежный с правой стороной среднего правого отсчета нижнего правого подблока, установлен как нижний правый опорный отсчет, аффинный исходный вектор может быть получен на основании отсчета, смежного с левой стороной соседнего опорного отсчета.

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

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

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

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

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

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

Когда желательно получить аффинный исходный вектор текущего блока из неаффинного соседнего блока A из соседних блоков, смежных с текущим блоком, нижний левый опорный отсчет и нижний правый опорный отсчет могут быть установлены для блока A. Например, отсчет, смежный с левой стороной нижнего левого отсчета блока A, может быть установлен как нижний левый опорный отсчет, и нижний правый отсчет блока A может быть установлен как нижний правый опорный отсчет. Поскольку нижний левый опорный отсчет находится за пределами блока A, вектор движения подблока, содержащего отсчет, смежный с правой стороной нижнего левого опорного отсчета, может быть установлен как третий аффинный исходный вектор блока A. Кроме того, вектор движения подблока, содержащего нижний правый опорный отсчет, может быть установлен как четвертый аффинный исходный вектор блока A. После этого первый аффинный исходный вектор и второй аффинный исходный вектор для текущего блока может быть получен из блока A на основании уравнений 9 и 10.

Способ получения аффинного исходного вектора из неаффинного соседнего блока может использоваться только при выполнении предсказания с компенсацией движения для неаффинного соседнего блока посредством элемента подблока. В данном случае метод предсказания для выполнения предсказания с компенсацией движения посредством элемента подблока может включать по меньшей мере одно из STMVP, ATMVP, двунаправленного оптического потока (BIO), компенсации движения с перекрытиями блоков (OBMC) и уточнения вектора движения на стороне декодера (DMVR).

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

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

В примере, показанном на фиг. 19, показано, что текущий блок находится в контакте с верхней границей элемента кодового дерева, и блоки B, C и E, расположенные сверху текущего блока, принадлежат к элементу кодового дерева, отличающемуся от элемента кодового дерева текущего блока. Соответственно, вместо использования блока E, аффинный исходный вектор текущего блока может быть получен с использованием блока F, смежного с блоком E, из блоков, включенных в элемент кодового дерева, к которому принадлежит текущий блок.

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

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

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

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

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

В уравнениях 11 и 12 показан пример получения аффинного исходного вектора текущего блока посредством суммирования аффинных исходных векторов кандидатов на слияние.

[Уравнение 11]

[Уравнение 12]

В уравнениях 11 и 12 sv4 обозначает первый аффинный исходный вектор текущего блока, sv0 обозначает первый аффинный исходный вектор первого кандидата на слияние и sv2 обозначает первый аффинный исходный вектор второго кандидата на слияние. Кроме того, sv5 обозначает второй аффинный исходный вектор текущего блока, sv1 обозначает второй аффинный исходный вектор первого кандидата на слияние и sv3 обозначает второй аффинный исходный вектор второго кандидата на слияние.

Кроме того, в уравнениях 13 и 14 показан пример получения аффинного исходного вектора текущего блока посредством операции взвешенного суммирования аффинных исходных векторов кандидатов на слияние.

[Уравнение 13]

[Уравнение 14]

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

В уравнении 15 показан пример получения конечного вектора движения подблока посредством суммирования первого вектора движения подблока и второго вектора движения подблока.

[Уравнение 15]

В уравнении 15 V0 обозначает первый вектор движения подблока, V1 обозначает второй вектор движения подблока и V2 обозначает конечный вектор движения подблока.

Кроме того, в уравнении 16 показан пример получения конечного вектора движения подблока посредством операции взвешенного суммирования первого вектора движения подблока и второго вектора движения подблока.

[Уравнение 16]

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

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

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

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

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

Может быть определена (S2201) линия опорных отсчетов текущего блока. Линия опорных отсчетов означает набор опорных отсчетов, включенных в k-ю линию от верхней и/или левой стороны текущего блока. Опорные отсчеты могут быть получены из восстановленных отсчетов, которые были кодированы/декодированы вокруг текущего блока.

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

[Таблица 1] Индекс Линии опорных отсчетов 0 Первая линия опорных отсчетов 1 Вторая линия опорных отсчетов 2 Четвертая линия опорных отсчетов

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

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

На фиг. 23 представлен вид, показывающий опорные отсчеты, включенные в каждую линию опорных отсчетов.

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

Далее может быть определен (S2202) режим внутреннего предсказания текущего блока. Что касается режима внутреннего предсказания текущего блока, по меньшей мере один из режима внутреннего предсказания, не основанного на информации об углах, и режима внутреннего предсказания, основанного на информации об углах, может быть определен как режим внутреннего предсказания текущего блока. Режим внутреннего предсказания, не основанный на информации об углах, включает планарный режим и режим DC, а режим внутреннего предсказания, основанный на информации об углах, включает 33 или 65 режимов между диагональным направлением вниз и влево и диагональным направлением вверх и вправо.

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

На фиг. 24(a) показаны 35 режимов внутреннего предсказания, и на фиг. 24(b) показаны 67 режимов внутреннего предсказания.

Может быть определено большее или меньшее количество режимов внутреннего предсказания, чем показано на фиг. 24.

Наиболее вероятный режим (MPM) может быть установлен на основании режима внутреннего предсказания соседнего блока, смежного с текущим блоком. В данном случае соседний блок может включать левый соседний блок, смежный с левой стороной текущего блока, и верхний соседний блок, смежный с верхней стороной текущего блока. Когда координаты верхнего левого отсчета текущего блока представляют собой (0, 0), левый соседний блок может содержать отсчет в положении (-1, 0), (-1, H-1) или (-1, (H-1)/2). В данном случае H обозначает высоту текущего блока. Верхний соседний блок может содержать отсчет в положении (0, -1), (W-1, -1) или ((W-1)/2, -1). В данном случае W обозначает ширину текущего блока.

Когда соседний блок кодирован с помощью нормального внутреннего предсказания, MPM может быть получен на основании режима внутреннего предсказания соседнего блока. В частности, режим внутреннего предсказания левого соседнего блока может быть установлен как переменная candIntraPredModeA, а режим внутреннего предсказания верхнего соседнего блока может быть установлен как переменная candIntraPredModeB.

В этом случае, когда соседний блок является недоступным (например, когда соседний блок еще не кодирован/декодирован или когда положение соседнего блока находится за границей изображения), когда соседний блок кодирован с помощью внутреннего предсказания на основе матрицы, когда соседний блок кодирован с помощью предсказания, осуществляемого между изображениями, или когда соседний блок включен в элемент кодового дерева, отличный от текущего блока, переменная candIntraPredModeX (в данном случае X представляет собой A или B), полученная на основании режима внутреннего предсказания соседнего блока, может быть установлена как режим по умолчанию. В данном случае режим по умолчанию может содержать по меньшей мере один из планарного режима, режима DC, режима в вертикальном направлении и режима в горизонтальном направлении.

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

MPM могут быть получены на основании переменной candIntraPredModeA и переменной candIntraPredModeB. Количество MPM, включенных в список MPM, может быть заранее установлено в кодере и декодере. Количество MPM, включенных в список MPM, может быть задано в кодере и декодере. Например, количество MPM может быть равно 3, 4, 5 или 6. Альтернативно информация, указывающая количество MPM, может быть передана посредством битового потока. Альтернативно количество MPM может быть определено на основании по меньшей мере одного из режима кодирования с предсказанием соседнего блока и размера и формы текущего блока.

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

Когда candIntraPredA и candIntraPredB одинаковы, и candIntraPredA представляет собой планарный режим или режим DC, MPM[0] и MPM[1] могут быть установлены как планарный режим и режим DC соответственно. MPM[2] может быть установлен как режим внутреннего предсказания в вертикальном направлении, режим внутреннего предсказания в горизонтальном направлении или режим внутреннего предсказания в диагональном направлении. Режим внутреннего предсказания в диагональном направлении может представлять собой режим внутреннего предсказания в диагональном направлении вниз и влево, режим внутреннего предсказания в направлении вверх и влево или режим внутреннего предсказания в направлении вверх и вправо.

Когда candIntraPredA и candIntraPredB являются одинаковыми, и candIntraPredA представляет собой режим внутреннего предсказания, основанный на информации об углах, MPM[0] может быть установлен таким же, как candIntraPredA. MPM[1] и MPM[2] могут быть установлены как режим внутреннего предсказания, аналогичный candIntraPredA, соответственно. Режим внутреннего предсказания, аналогичный candIntraPredA, может представлять собой режим внутреннего предсказания, в котором разница между candIntraPredA и индексом составляет ±1 или ±2. Операция по модулю (%) и смещение могут быть использованы для получения режима внутреннего предсказания, подобного candIntraPredA.

Когда candIntraPredA и candIntraPredB различаются, MPM[0] может быть установлен таким же, как candIntraPredA, а MPM[1] может быть установлен таким же, как candIntraPredB. В этом случае, когда как candIntraPredA, так и candIntraPredB являются режимом внутреннего предсказания, не основанным на информации об углах, MPM[2] может быть установлен таким же, как режим внутреннего предсказания в вертикальном направлении, режим внутреннего предсказания в горизонтальном направлении или режим внутреннего предсказания в диагональном направлении. Альтернативно, когда по меньшей мере один из candIntraPredA и candIntraPredB является режимом внутреннего предсказания, основанным на информации об углах, MPM[2] может быть установлен таким же, как режим внутреннего предсказания, полученный путем добавления или вычитания смещения к или из планарного режима, режима DC или одного из candIntraPredA и candIntraPredB, имеющего большее значение. В данном случае смещение может быть равно 1 или 2.

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

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

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

Когда индекс линии опорных отсчетов текущего блока не равен 0, может быть установлено не использовать режим по умолчанию. Соответственно, когда индекс линии опорных отсчетов не равен 0, флаг режима по умолчанию не передается, и значение флага режима по умолчанию может быть установлено таким же, как предварительно заданное значение (т.е. ложное).

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

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

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

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

Когда выбран режим предсказания, основанный на информации об углах, может быть определен параметр, указывающий направление предсказания (или угол предсказания) выбранного режима предсказания, основанного на информации об углах. В таблице 2 показан параметр intraPredAng внутреннего направления каждого режима внутреннего предсказания.

[Таблица 2] PredModeIntraIntraPredAng 1- 232 326 421 517 613 79 PredModeIntraIntraPredAng 85 92 100 11-2 12-5 13-9 14-13 PredModeIntraIntraPredAng 15-17 16-21 17-26 18-32 19-26 20-21 21-17 PredModeIntraIntraPredAng 22-13 23-9 24-5 25-2 260 272 285 PredModeIntraIntraPredAng 299 3013 3117 3221 3326 3432

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

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

На фиг. 25 и 26 представлены виды, показывающие пример одномерного массива, размещающего опорные отсчеты в линию.

На фиг. 25 представлен вид, показывающий пример одномерного массива в вертикальном направлении, размещающего опорные отсчеты в вертикальном направлении, а на фиг. 26 представлен вид, показывающий пример одномерного массива в горизонтальном направлении, размещающего опорные отсчеты в горизонтальном направлении. Варианты осуществления, представленные на фиг. 25 и 26, будут описаны с предположением, что определены 35 режимов внутреннего предсказания.

Когда индекс режима внутреннего предсказания является любым из 11-18, может быть применен одномерный массив в горизонтальном направлении, в котором верхние опорные отсчеты поворачиваются против часовой стрелки, а когда индекс режима внутреннего предсказания является любым из 19-25, может быть применен одномерный массив в вертикальном направлении, в котором левые опорные отсчеты поворачиваются по часовой стрелке. При расположении опорных отсчетов в линию можно учесть угол режима внутреннего предсказания.

Параметр определения опорного отсчета может быть определен на основании параметра внутреннего направления. Параметр определения опорного отсчета может содержать индекс опорного отсчета для указания опорного отсчета и параметр значения взвешивания для определения значения взвешивания, применяемого к опорному отсчету.

Индекс iIdx опорного отсчета и параметр ifact значения взвешивания могут быть получены с помощью уравнений 17 и 18, показанных ниже соответственно.

[Уравнение 17]

[Уравнение 18]

В уравнениях 17 и 18 Pang обозначает параметр внутреннего направления. Опорный отсчет, указанный индексом iIdx опорного отсчета, соответствует целому пикселю.

По меньшей мере один или более опорных отсчетов могут быть указаны для получения отсчета предсказания. В частности, положение опорного отсчета, используемого для получения отсчета предсказания, может быть указано с учетом наклона режима предсказания. Например, опорный отсчет, используемый для получения отсчета предсказания, может быть указан с использованием индекса iIdx опорного отсчета.

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

В уравнении 19 показан пример получения отсчета предсказания на основании опорных отсчетов.

[Уравнение 19]

В уравнении 19 P обозначает отсчет предсказания, а Ref_1D обозначает любой из одномерно расположенных опорных отсчетов. В этом случае положение опорного отсчета может быть определено посредством положения (x, y) отсчета предсказания и индекса iIdx опорного отсчета.

Когда наклон режима внутреннего предсказания может быть выражен в виде одного опорного отсчета, параметр значения взвешивания ifact установлен равным 0. Соответственно, уравнение 19 может быть упрощено, как показано в уравнении 20.

[Уравнение 20]

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

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

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

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

На фиг. 27 представлен вид, показывающий пример углов, образованных между режимами внутреннего предсказания, основанными на информации об углах, и прямой линией, параллельной оси x.

Как показано в примере на фиг. 27, режимы предсказания, основанные на информации об углах, могут существовать между диагональным направлением вниз и влево и диагональным направлением вверх и вправо. При описании в отношении угла, образованного осью x и режимом предсказания, основанным на информации об углах, режимы предсказания, основанные на информации об углах, могут существовать между 45 градусами (диагональным направлением вниз и влево) и -135 градусами (диагональным направлением вверх и вправо).

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

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

Например, как показано в примере на фиг. 28(a), предполагается, что текущий блок имеет неквадратную форму, ширина которой больше, чем высота, и режим внутреннего предсказания текущего блока является режимом внутреннего предсказания, основанным на информации об углах, имеющим угол от 0 до 45 градусов. В приведенном выше случае, когда получают отсчет предсказания A возле правого столбца текущего блока, может иметь место случай использования левого опорного отсчета L, удаленного от отсчета предсказания, вместо верхнего опорного отсчета T, расположенного возле отсчета предсказания, из опорных отсчетов, расположенных на угловом режиме, проходящим под углом.

В качестве другого примера, как показано в примере на фиг. 28(b), предполагается, что текущий блок имеет неквадратную форму, высота которой больше, чем ширина, и режим внутреннего предсказания текущего блока является режимом внутреннего предсказания, основанным на информации об углах, имеющим угол от -90 до -135 градусов. В приведенном выше случае, когда получают отсчет предсказания A возле нижней строки текущего блока, может иметь место случай использования верхнего опорного отсчета T, удаленного от отсчета предсказания, вместо левого опорного отсчета L, расположенного возле отсчета предсказания, из опорных отсчетов, расположенных на угловом режиме, проходящим под углом.

Для решения проблемы, описанной выше, когда текущий блок имеет неквадратную форму, режим внутреннего предсказания текущего блока может быть заменен режимом внутреннего предсказания в противоположном направлении. Соответственно, режимы предсказания, основанные на информации об углах, имеющие угол больше или меньше, чем у режимов предсказания, основанных на информации об углах, показанных на фиг. 24, могут быть использованы для блока неквадратной формы. Такой режим внутреннего предсказания, основанный на информации об углах, может быть определен как широкоугольный режим внутреннего предсказания. Широкоугольный режим внутреннего предсказания представляет режим внутреннего предсказания, основанный на информации об углах, который не принадлежит к диапазону от 45 до -135 градусов.

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

В примере, показанном на фиг. 29, режимы внутреннего предсказания с индексом от -1 до -14 и режимы внутреннего предсказания с индексом от 67 до 80 представляют широкоугольные режимы внутреннего предсказания.

Хотя 14 широкоугольных режимов внутреннего предсказания (от -1 до -14), имеющих угол больше 45 градусов, и 14 широкоугольных режимов внутреннего предсказания (от 67 до 80), имеющих угол меньше -135 градусов, показаны на фиг. 29, может быть определено большее или меньшее количество широкоугольных режимов внутреннего предсказания.

Когда используется широкоугольный режим внутреннего предсказания, длина верхних опорных отсчетов может быть установлена равной 2W+1, а длина левых опорных отсчетов может быть установлена равной 2H+1.

Так как используется широкоугольный режим внутреннего предсказания, отсчет A, показанный на фиг. 28(a), может быть предсказан с использованием опорного отсчета T, а отсчет A, показанный на фиг. 28(b), может быть предсказан с использованием опорного отсчета L.

Путем сложения существующих режимов внутреннего предсказания и N широкоугольных режимов внутреннего предсказания можно использовать суммарно 67+N режимов внутреннего предсказания. Например, в таблице 3 показаны параметры внутреннего направления режимов внутреннего предсказания, когда определены 20 широкоугольных режимов внутреннего предсказания.

[Таблица 3] PredModeIntra -10 -9 -8 -7 -6 -5 -4 -3 -2 intraPredAngle 114 93 79 68 60 54 49 45 39 PredModeIntra -1 2 3 4 5 6 7 8 9 intraPredAngle 35 32 29 26 23 21 19 17 15 PredModeIntra 10 11 12 13 14 15 16 17 18 intraPredAngle 13 11 9 7 5 3 2 1 0 PredModeIntra 19 20 21 22 23 24 25 26 27 intraPredAngle -1 -2 -3 -5 -7 -9 -11 -13 -15 PredModeIntra 28 29 30 31 32 33 34 35 36 intraPredAngle -17 -19 -21 -23 -26 -29 -32 -29 -26 PredModeIntra 37 38 39 40 41 42 43 44 45 intraPredAngle -23 -21 -19 -17 -15 -13 -11 -9 -7 PredModeIntra 46 47 48 49 50 51 52 53 54 intraPredAngle -5 -3 -2 -1 0 1 2 3 5 PredModeIntra 55 56 57 58 59 60 61 62 63 intraPredAngle 7 9 11 13 15 17 19 21 23 PredModeIntra 64 65 66 67 68 69 70 71 72 intraPredAngle 26 29 32 35 39 45 49 54 60 PredModeIntra 73 74 75 76 intraPredAngle 68 79 93 114

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

Когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, диапазон преобразования может быть установлен от индекса режима внутреннего предсказания (например, 66) диагонального направления вверх и вправо (индекса режима внутреннего предсказания в диагональном направлении вверх и вправо - N). В данном случае N может быть определен на основании соотношения текущего блока. Когда режим внутреннего предсказания текущего блока принадлежит к диапазону преобразования, режим внутреннего предсказания может быть преобразован в широкоугольный режим внутреннего предсказания. Преобразование может представлять собой вычитание предварительно заданного значения из режима внутреннего предсказания, и предварительно заданное значение может представлять собой общее число (например, 67) режимов внутреннего предсказания за исключением широкоугольных режимов внутреннего предсказания.

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

Когда текущий блок имеет неквадратную форму, высота которой больше, чем ширина, диапазон преобразования может быть установлен от индекса режима внутреннего предсказания (например, 2) диагонального направления вниз и влево (индекса режима внутреннего предсказания в диагональном направлении вниз и влево + M). В данном случае M может быть определен на основании соотношения текущего блока. Когда режим внутреннего предсказания текущего блока принадлежит к диапазону преобразования, режим внутреннего предсказания может быть преобразован в широкоугольный режим внутреннего предсказания. Преобразование может представлять собой добавление предварительно заданного значения к режиму внутреннего предсказания, и предварительно заданное значение может представлять собой общее число (например, 65) режимов внутреннего предсказания, основанных на информации об углах, за исключением широкоугольных режимов внутреннего предсказания.

Согласно варианту осуществления, описанному выше, режимы внутреннего предсказания со 2-го по 15-й могут быть преобразованы в широкоугольные режимы внутреннего предсказания с 67-го по 80-й соответственно.

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

Диапазон преобразования может быть определен на основании соотношения текущего блока. Например, в таблицах 4 и 5 показан диапазон преобразования, когда определены 35 режимов внутреннего предсказания и 67 режимов внутреннего предсказания за исключением широкоугольных режимов внутреннего предсказания соответственно.

[Таблица 4] Условие Замененные режимы внутреннего предсказания W/H = 2 Режимы 2, 3, 4 W/H > 2 Режимы 2, 3, 4, 5, 6 W/H = 1 Нет H/W = 1/2 Режимы 32, 33, 34 H/W < 1/2 Режимы 30, 31, 32, 33, 34

[Таблица 5] Условие Замененные режимы внутреннего предсказания W/H = 2 Режимы 2, 3, 4, 5, 6, 7 W/H > 2 Режимы 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 W/H = 1 Нет H/W = 1/2 Режимы 61, 62, 63, 64, 65, 66 H/W < 1/2 Режимы 57, 58, 59, 60, 61, 62, 63, 64, 65, 66

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

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

Например, когда текущий блок кодируется с использованием 67-го широкоугольного режима внутреннего предсказания, 2-й режим внутреннего предсказания, который представляет собой заменяющий режим внутреннего предсказания 67-го широкоугольного режима внутреннего предсказания, может быть кодирован с использованием режима внутреннего предсказания текущего блока. Кроме того, когда текущий блок кодируется с использованием -1-го широкоугольного режима внутреннего предсказания, 66-й режим внутреннего предсказания, который представляет собой заменяющий режим внутреннего предсказания -1-го широкоугольного режима внутреннего предсказания, может быть кодирован с использованием режима внутреннего предсказания текущего блока.

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

Альтернативно, когда текущий блок кодируется с использованием широкоугольного режима внутреннего предсказания, широкоугольный режим внутреннего предсказания может быть кодирован, как есть.

Кодирование режима внутреннего предсказания может быть выполнено на основании списка MPM, описанного выше. Далее будет подробно описан способ конфигурирования списка MPM. В вариантах осуществления, описанных ниже, предполагается, что определены 10 широкоугольных режимов внутреннего предсказания (от -1 до -10) с углом более 45 градусов и 10 широкоугольных режимов внутреннего предсказания (от 67 до 76) с углом меньше -135 градусов.

Когда соседний блок кодируется с использованием широкоугольного режима внутреннего предсказания, MPM может быть установлен на основании широкоугольного заменяющего режима внутреннего предсказания, соответствующего широкоугольному режиму внутреннего предсказания. Например, когда соседний блок кодируется с использованием широкоугольного режима внутреннего предсказания, переменная candIntraPredX (X является A или B) может быть установлена равной широкоугольному заменяющему режиму внутреннего предсказания.

Альтернативно способ получения MPM может быть определен согласно форме текущего блока. Например, когда текущий блок имеет квадратную форму, ширина которой равна высоте, candIntraPredX может быть установлено равным широкоугольному заменяющему режиму внутреннего предсказания. С другой стороны, когда текущий блок имеет неквадратную форму, candIntraPredX может быть установлено равным широкоугольному режиму внутреннего предсказания.

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

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

Альтернативно широкоугольный режим внутреннего предсказания соседнего блока может быть установлен как candIntraPredX независимо от формы текущего блока.

В итоге, candIntraPredX может быть установлено равным широкоугольному режиму внутреннего предсказания или широкоугольному заменяющему режиму внутреннего предсказания соседнего блока.

MPM может быть получен на основании candIntraPredA и candIntraPredB. В этом случае MPM может быть получен в режиме внутреннего предсказания, подобном candIntraPredA или candIntraPredB. Режим внутреннего предсказания, подобный candIntraPredA или candIntraPredB, может быть получен на основании операции по модулю и смещения. В этом случае постоянная и смещение, используемые для операции по модулю, могут быть определены по-разному согласно форме текущего блока.

В таблице 6 показан пример получения MPM согласно форме текущего блока.

[Таблица 6] i) если cuWidth равна cuHeight
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 61) % 64)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 64)
ii) иначе (т.е. cuWidth не равна cuHeight)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 81) % 84)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 84)

Предполагается, что candIntraPredA и candIntraPredB одинаковые, и candIntraPredA представляет собой режим внутреннего предсказания, основанный на информации об углах. Когда текущий блок имеет квадратную форму, режим внутреннего предсказания, подобный candIntraPredA, может быть получен на основании операции по модулю на основании значения, полученного путем вычитания 1 из общего количества режимов внутреннего предсказания, основанных на информации об углах, за исключением широкоугольных режимов внутреннего предсказания. Например, когда количество режимов внутреннего предсказания, основанных на информации об углах, отличных от широкоугольных режимов внутреннего предсказания, составляет 65, MPM может быть получен на основании значения, полученного на основании candIntraPredA и операции по модулю 64. С другой стороны, когда текущий блок имеет неквадратную форму, режим внутреннего предсказания, подобный candIntraPredA, может быть получен на основании операции по модулю на основании значения, полученного путем вычитания 1 из общего количества режимов внутреннего предсказания, основанных на информации об углах, включая широкоугольные режимы внутреннего предсказания. Например, когда количество широкоугольных режимов внутреннего предсказания составляет 20, MPM может быть получен на основании значения, полученного на основании candIntraPredA и операции по модулю 84.

Так как постоянная, используемая для операции по модулю, установлена по-разному согласно форме текущего блока, можно определить, может ли широкоугольный режим внутреннего предсказания быть установлен таким же, как режим внутреннего предсказания, основанный на информации об углах, подобный candIntraPredA. Например, широкоугольный режим внутреннего предсказания может не быть установлен как режим внутреннего предсказания, основанный на информации об углах, подобный candIntraPredA, в операции по модулю с использованием 64, тогда как широкоугольный режим внутреннего предсказания может быть установлен как режим внутреннего предсказания, основанный на информации об углах, подобный candIntraPredA в операции по модулю с использованием 84.

Альтернативно, когда candIntraPredA и candIntraPredB являются одинаковыми, MPM может быть получен с учетом формы текущего блока и того, является ли candIntraPredA широкоугольным режимом внутреннего предсказания.

В таблице 7 показан пример получения MPM согласно форме текущего блока.

[Таблица 7] - Если candIntraPredModeB равен candIntraPredModeA, применимо следующее:
-- Если candIntraPredModeA меньше чем 2 (т.е. равен INTRA_PLANAR или INTRA_DC), candModeList[x] при x = 0…2 получают следующим образом:
candModeList[0] = INTRA_PLANAR
candModeList[1] = INTRA_DC
candModeList[2] = INTRA_ANGULAR50
-- иначе candModeList[x] при x = 0.. 2 получают следующим образом:
i) если cuWidth равна cuHeight
1. если candIntrapredA меньше чем 0 или candIntraPredModeA больше чем 66
candModeList[0] = INTRA_PLANAR
candModeList[1] = INTRA_DC
candModeList[2] = INTRA_ANGULAR50
2. иначе, если candIntraPredA >= 0 и candIntraPredModeA < 67)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 61) % 64)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 64)
ii) иначе, если cuWidth больше, чем cuHeight
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 81) % 84)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 84)
iii) иначе (т.е. cuWidth больше, чем cuHeight)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 81) % 84)
candModeList[2] = -8 + ((candIntraPredModeA - 1) % 84)
- Иначе (candIntraPredModeB не равен candIntraPredModeA), применимо следующее:
-- candModeList[0] и candModeList[1] получают следующим образом:
candModeList[0] = candIntraPredModeA
candModeList[1] = candIntraPredModeB
-- Если ни один из candModeList[0] и candModeList[1] не равен INTRA_PLANAR, candModeList[2] установлен равным INTRA_PLANAR
-- Иначе, если ни один из candModeList[0] и candModeList[1] не равен INTRA_DC, candModeList[2] установлен равным INTRA_DC,
-- Иначе candModeList[2] установлен равным INTRA_ANGULAR 50.

Предполагается, что candIntraPredA и candIntraPredB являются одинаковыми.

Когда текущий блок имеет квадратную форму и candIntraPredA является широкоугольным режимом внутреннего предсказания, MPM могут быть установлены равными режимам по умолчанию. Например, MPM[0], MPM[1] и MPM[2] могут быть установлены равными планарному режиму, режиму DC и вертикальному режиму внутреннего предсказания соответственно.

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

Когда текущий блок имеет неквадратную форму и candIntraPredA является режимом внутреннего предсказания, основанным на информации об углах, MPM могут быть установлены равными candIntraPredA и режиму внутреннего предсказания, основанному на информации об углах, подобному ему. Например, MPM[0] может быть установлен равным candIntraPredA, а MPM[1] и MPM[2] могут быть установлены равными candIntraPredA и режиму внутреннего предсказания, основанному на информации об углах, подобному ему.

Режим внутреннего предсказания, основанный на информации об углах, подобный candIntraPredA, может быть получен с использованием операции по модулю и смещения. В этом случае постоянная, используемая для операции по модулю, может варьировать согласно форме текущего блока. Кроме того, смещение, используемое для получения режима внутреннего предсказания, основанного на информации об углах, подобного candIntraPredA, может быть установлено по-разному согласно форме текущего блока. Например, когда текущий блок имеет неквадратную форму, ширина которой больше, чем высота, режим внутреннего предсказания, основанный на информации об углах, подобный candIntraPredA, может быть получен с использованием смещения 2. С другой стороны, когда текущий блок имеет неквадратную форму, высота которой больше, чем ширина, режим внутреннего предсказания, основанный на информации об углах, подобный candIntraPredA, может быть получен с использованием смещений 2 и -8.

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

В таблице 8 показан пример получения MPM с учетом индекса широкоугольного режима внутреннего предсказания.

[Таблица 8] - Если candIntraPredModeB равен candIntraPredModeA, применимо следующее:
-- Если candIntraPredModeA меньше чем 2 (т.е. равен INTRA_PLANAR или INTRA_DC), candModeList[x] при x = 0…2 получают следующим образом:
candModeList[0] = INTRA_PLANAR
candModeList[1] = INTRA_DC
candModeList[2] = INTRA_ANGULAR50
-- иначе candModeList[x] при x = 0.. 2 получают следующим образом:
i) Если (candIntraPredModeA < 0 и candIntraPredModeA != -10)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA - 3) % 84)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 84)
ii) иначе, если (candIntraPredModeA = -10)
candModeList[0] = candIntraPredModeA
candModeList[1] = -1
candModeList[2] = -9
iii) иначе, если (candIntraPredModeA > 67 и candIntraPredModeA < 76)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 81) % 84)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 84)
iv) иначе candIntraPredModeA равен 67
candModeList[0] = candIntraPredModeA
candModeList[1] = 66
candModeList[2] = 68
v) иначе candIntraPredModeA равен 77
candModeList[0] = candIntraPredModeA
candModeList[1] = 76
candModeList[2] = 67
vi) иначе, если (candIntraPredModeA >= 0 и candIntraPredModeA < 67)
candModeList[0] = candIntraPredModeA
candModeList[1] = 2 + ((candIntraPredModeA + 61) % 64)
candModeList[2] = 2 + ((candIntraPredModeA - 1) % 64)
- Иначе (candIntraPredModeB не равен candIntraPredModeA), применимо следующее:
-- candModeList[0] и candModeList[1] получают следующим образом:
candModeList[0] = candIntraPredModeA
candModeList[1] = candIntraPredModeB
-- Если ни один из candModeList[0] и candModeList[1] не равен INTRA_PLANAR, candModeList[2] установлен равным INTRA_PLANAR
-- Иначе, если ни один из candModeList[0] и candModeList[1] не равен INTRA_DC, candModeList[2] установлен равным INTRA_DC,
-- Иначе candModeList[2] установлен равным INTRA_ANGULAR 50.

Предполагается, что candIntraPredA и candIntraPredB являются одинаковыми. Для удобства объяснения широкоугольные режимы внутреннего предсказания, имеющие индексное значение меньше, чем у режима внутреннего предсказания диагонального направления вниз и влево, называются широкоугольными режимами внутреннего предсказания в направлении вниз, а широкоугольные режимы внутреннего предсказания, имеющие индексное значение больше, чем у режима внутреннего предсказания диагонального направления вверх и вправо, называются широкоугольными режимами внутреннего предсказания в направлении вправо.

Когда candIntraPredA представляет собой широкоугольный режим внутреннего предсказания в направлении вниз, MPM могут быть установлены равными candIntraPredA и режиму внутреннего предсказания, основанному на информации об углах, подобному ему. В этом случае, когда candIntraPredA представляет собой широкоугольный режим внутреннего предсказания в направлении вниз, имеющий наименьшее значение, MPM может быть установлен равным широкоугольному режиму внутреннего предсказания в направлении вниз, имеющему предварительно заданное индексное значение. В данном случае предварительно заданный индекс может представлять собой индекс, имеющий наибольшее значение из индексов широкоугольных режимов внутреннего предсказания в направлении вниз. Например, когда candIntraPredA равен -10, MPM[0], MPM[1] и MPM[2] могут быть установлены равными -10, -1 и -9 соответственно.

Когда candIntraPredA представляет собой широкоугольный режим внутреннего предсказания в направлении вправо, MPM могут быть установлены равными candIntraPredA и режиму внутреннего предсказания, основанному на информации об углах, подобному ему. В этом случае, когда candIntraPredA представляет собой широкоугольный режим внутреннего предсказания в направлении вправо, имеющий наибольшее значение, MPM может быть установлен равным широкоугольному режиму внутреннего предсказания в направлении вправо, имеющему предварительно заданное индексное значение. В данном случае предварительно заданный индекс может представлять собой индекс, имеющий наименьшее значение из индексов широкоугольных режимов внутреннего предсказания в направлении вправо. Например, когда candIntraPredA равен 77, MPM[0], MPM[1] и MPM[2] могут быть установлены равными 77, 76 и 67 соответственно.

Альтернативно, когда индекс, полученный путем вычитания или добавления 1 из или к индексу candIntraPredA, меньше, чем наименьшее значение, или больше, чем наибольшее значение, из индексов режимов внутреннего предсказания, MPM может быть установлен равным режиму по умолчанию. В данном случае режим по умолчанию может содержать по меньшей мере один из планарного режима, режима DC, вертикального режима внутреннего предсказания, горизонтального режима внутреннего предсказания и диагонального режима внутреннего предсказания.

Альтернативно, когда индекс, полученный путем вычитания или добавления 1 из или к индексу candIntraPredA, меньше, чем наименьшее значение, или больше, чем наибольшее значение, из индексов режимов внутреннего предсказания, MPM может быть установлен равным режиму внутреннего предсказания, противоположному candIntraPredA, или режиму внутреннего предсказания, подобному режиму внутреннего предсказания, противоположному candIntraPredA.

Альтернативно MPM-кандидаты могут быть получены с учетом формы текущего блока и формы соседнего блока. Например, способ получения MPM, когда как текущий блок, так и соседний блок имеют неквадратную форму, может отличаться от способа получения MPM, когда текущий блок имеет квадратную форму, а соседний блок имеет неквадратную форму.

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

Предполагается, что MPM[0] и MPM[1] установлены равными режиму внутреннего предсказания candIntraPredA левого соседнего блока и режиму внутреннего предсказания candIntraPredB верхнего соседнего блока соответственно.

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

Альтернативно, когда текущий блок и верхний соседний блок имеют неквадратную форму, высота которой больше, чем ширина, MPM могут быть переставлены таким образом, что режим внутреннего предсказания candIntraPredB верхнего соседнего блока имеет меньший индекс. То есть candIntraPredB может быть переставлен на место MPM[0], а candIntraPredA может быть переставлен на место MPM[1].

Альтернативно, когда текущий блок и верхний соседний блок имеют квадратную форму, MPM могут быть переставлены таким образом, что режим внутреннего предсказания candIntraPredB верхнего соседнего блока имеет меньший индекс. То есть candIntraPredB может быть переставлен на место MPM[0], а candIntraPredA может быть переставлен на место MPM[1].

Вместо перестановки MPM, когда candIntraPredX изначально присвоен MPM, можно учесть по меньшей мере одно из размера текущего блока, формы текущего блока, размера соседнего блока и формы соседнего блока.

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

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

DCT раскладывает (или преобразует) остаточное видео на двумерные частотные компоненты с использованием косинусного преобразования, а DST раскладывает (или преобразует) остаточное видео на двумерные частотные компоненты с использованием синусного преобразования. В результате преобразования остаточного видео частотные компоненты могут быть выражены в виде базового видео. Например, когда преобразование DCT выполнено в отношении блока размером N×N, могут быть получены компоненты базовой схемы в количестве N2. Размер каждого из компонентов базовой схемы, включенных в блок размером N×N, может быть получен посредством преобразования. Согласно методу преобразования, используемому для этого, размер компонента базовой схемы может называться коэффициентом DCT или коэффициентом DST.

Метод преобразования DCT в основном используют для преобразования видео, в котором распределяют многие ненулевые низкочастотные компоненты. Метод преобразования DST в основном используют для видео, в которых распределяют многие высокочастотные компоненты.

Остаточное видео может быть преобразовано с использованием метода преобразования, отличного от DCT или DST.

Далее преобразование остаточного видео в двумерные частотные компоненты будет называться двумерным преобразованием видео. Кроме того, размер компонентов базовой схемы, полученный в результате преобразования, называется коэффициентом преобразования. Например, коэффициент преобразования может означать коэффициент DCT или коэффициент DST. Когда применены как первое преобразование, так и второе преобразование, описанные ниже, коэффициент преобразования может означать размер компонента базовой схемы, сгенерированного в результате второго преобразования.

Метод преобразования может быть определен для каждого блока. Метод преобразования может быть определен на основании по меньшей мере одного из режима кодирования с предсказанием текущего блока, размера текущего блока и размера текущего блока. Например, когда текущий блок кодируется в режиме внутреннего предсказания, а размер текущего блока меньше, чем N×N, преобразование может быть выполнено с использованием метода преобразования DST. С другой стороны, когда приведенные выше условия не удовлетворяются, преобразование может быть выполнено с использованием метода преобразования DCT.

Двумерное преобразование видео может не быть выполнено для некоторых блоков остаточного видео. Невыполнение двумерного преобразования видео может называться пропуском преобразования. Когда применен пропуск преобразования, квантование может быть применено к остаточным коэффициентам, которые не были преобразованы.

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

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

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

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

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

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

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

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

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

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

Второй восстановленный блок может быть получен путем применения по меньшей мере одного из деблочного фильтра, SAO и ALF к первому восстановленному блоку. В этом случае SAO или ALF могут быть применены после применения деблочного фильтра.

Деблочный фильтр предназначен для уменьшения ухудшения качества видео (блочного артефакта) на границе блока, которое происходит при выполнении квантования в отношении отдельных блоков. Для применения деблочного фильтра может быть определен качественный показатель блока (BS) между первым восстановленным блоком и соседним восстановленным блоком.

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

В примере, показанном на фиг. 30, P обозначает первый восстановленный блок, а Q обозначает соседний восстановленный блок. В данном случае соседний восстановленный блок может представлять собой блок, смежный с левой стороной или верхней стороной текущего блока.

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

Следует ли применять деблочный фильтр, можно определить на основании качественного показателя блока. Например, когда качественный показатель блока равен 0, фильтрование можно не выполнять.

SAO предназначен для уменьшения явления в виде колец (артефакта в виде колец), которое происходит при выполнении квантования в частотной области. SAO может быть выполнено путем добавления или вычитания смещения, определенного с учетом схемы первого восстановленного видео. Способ определения смещения включает смещение по краю (EO) или смещение по полосам. EO обозначает способ определения смещения текущего отсчета согласно схеме окружающих пикселей. BO обозначает способ применения обычного смещения к набору пикселей, имеющих похожие значения яркости на участке. В частности, яркость пикселей может быть разделена на 32 равные секции, и пиксели, имеющие похожие значения яркости, могут быть установлены как один набор. Например, четыре смежные полосы из 32 полос могут быть установлены как одна группа, и одинаковое значение смещения может быть применено к отсчетам, принадлежащим к четырем полосам.

ALF представляет собой способ генерирования второго восстановленного видео путем применения фильтра, имеющего предварительно заданный размер/форму, к первому восстановленному видео или восстановленному видео, к которому был применен деблочный фильтр. В уравнении 21 показан пример применения ALF.

[Уравнение 21]

Любой из предварительно заданных фильтров-кандидатов может быть выбран элементом изображения, элементом кодового дерева, блоком кодирования, блоком предсказания или блоком преобразования. Каждый из фильтров-кандидатов может отличаться либо по размеру, либо по форме.

На фиг. 31 представлен вид, показывающий предварительно заданные фильтры-кандидаты.

Как показано в примере на фиг. 31, может быть выбрана по меньшей мере одна из ромбовидных форм 5x5, 7x7 и 9x9.

Только ромбовидная форма размером 5x5 может быть использована для компонента цветности.

Для кодирования в реальном времени или с низкой задержкой видео в высоком разрешении, таких как панорамные видео, 360-градусные видео, или видео 4K/8K UHD (сверхвысокой четкости), можно учесть способ разбиения изображения на множество участков и кодирования/декодирования множества участков параллельно. Для этого изображение может быть разбито на тайлы, т.е. базовый элемент параллельного кодирования/декодирования, и тайлы могут быть обработаны параллельно.

Тайлы могут быть ограничены, чтобы иметь прямоугольную форму. При кодировании/декодировании тайла данные других тайлов не используются. Таблица вероятностей контекста контекстно-адаптивного двоичного арифметического кодирования (CABAC) может быть инициализирована элементом тайла, и может быть установлено не применять фильтр в контуре на границах тайлов.

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

Тайл содержит по меньшей мере один элемент кодового дерева, и граница тайла перекрывается с границей элемента кодового дерева.

Как показано в примере на фиг. 32, изображение может быть разбито на множество наборов тайлов. Информация для разбиения изображения на множество наборов тайлов может быть передана посредством битового потока.

Согласно типу разбиения изображения тайлы могут иметь одинаковый размер во всех участках за исключением границ изображения.

Альтернативно изображение может быть разбито таким образом, что тайлы, смежные в горизонтальном направлении, могут иметь одинаковую высоту, или изображение может быть разбито таким образом, что тайлы, смежные в вертикальном направлении, могут иметь одинаковую ширину.

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

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

В примере, показанном на фиг. 32, поскольку количество столбцов тайлов составляет 4, а количество строк тайлов составляет 3, num_tile_columns_minus1 может быть равен 3, в num_tile_rows_minus1 может быть равен 2.

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

Column_width_minus1 может указывать значение, полученное путем вычитания 1 из ширины столбца тайлов, а row_height_minus1 может указывать значение, полученное путем вычитания 1 из высоты строки тайлов.

Кодирование column_width_minus1 может быть пропущено для последнего столбца тайлов, а кодирование row_height_minus1 может быть пропущено для последней строки тайлов. Ширина последнего столбца тайлов и высота последней строки могут быть получены с учетом размера изображения.

Декодер может определять размер тайла на основании column_width_minus1 и row_height_minus1.

В таблице 9 показана синтаксическая таблица для разбиения изображения на тайлы.

Как показано в таблице 9, могут быть переданы элемент синтаксиса num_tile_columns_minus1, указывающий количество столбцов тайлов, и элемент синтаксиса num_tile_rows_minus1, указывающий количество строк.

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

Когда uniform_spacing_flag является ложным, могут быть переданы элемент синтаксиса column_width_minus1, указывающий ширину каждого столбца тайлов, и элемент синтаксиса row_height_minus1, указывающий высоту каждой строки тайлов.

Элемент синтаксиса loop_filter_across_tiles_enabled_flag указывает, разрешено ли использовать контурный фильтр на границах тайла.

Столбец тайлов, имеющий наименьшую ширину из столбцов тайлов, может называться тайлом минимальной ширины, а строка тайлов, имеющая наименьшую высоту из строк тайлов, может называться тайлом минимальной высоты. Информация, указывающая ширину тайла минимальной ширины, и информация, указывающая высоту тайла минимальной высоты, могут быть переданы посредством битового потока. Например, элемент синтаксиса min_column_width_minus1 указывает значение, полученное путем вычитания 1 из ширины тайла минимальной ширины, а элемент синтаксиса min_row_height_minus1 указывает значение, полученное путем вычитания 1 из высоты тайла минимальной высоты.

Информация, указывающая значение разницы с минимальной шириной тайла может быть передана для каждого столбца тайлов. Например, элемент синтаксиса diff_column_width указывает значение разницы по ширине между текущим столбцом тайлов и минимальным столбцом тайлов. Значение разницы по ширине может быть выражено как значение разницы по количеству столбцов элементов кодового дерева. Декодер может получать ширину текущего тайла путем сложения ширины тайла минимальной ширины, полученной на основании min_column_width_minus1, и значения разницы по ширине, полученного на основании diff_column_width.

Кроме того, информация, указывающая значение разницы с минимальной высотой тайла, может быть передана для каждой строки тайлов. Например, элемент синтаксиса diff_row_height указывает значение разницы по высоте между текущей строкой тайлов и минимальной строкой тайлов. Значение разницы по высоте может быть выражено как значение разницы по количеству строк элементов кодового дерева. Декодер может получать высоту текущего тайла путем сложения высоты тайла минимальной высоты, полученной на основании min_row_height_minus1, и значения разницы по высоте, полученного на основании diff_row_height.

В таблице 10 показана синтаксическая таблица, содержащая информацию о разнице по размеру.

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

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

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

Порядок сканирования тайлов может быть любым из растрового сканирования, диагонального сканирования, сканирования в вертикальном направлении и сканирования в горизонтальном направлении. На фиг. 33(a)-33(d) соответственно показаны примеры присвоения индекса каждому из тайлов согласно растровому сканированию, диагональному сканированию, сканированию в вертикальном направлении и сканированию в горизонтальном направлении.

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

Порядок сканирования тайлов может быть определен элементом изображения или последовательности.

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

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

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

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

Например, элемент синтаксиса subtile_width_minus1 указывает значение, полученное путем вычитания 1 из ширины подтайла. Элемент синтаксиса subtile_height_minus1 указывает значение, полученное путем вычитания 1 из высоты подтайла.

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

Информация, указывающая размер тайла, может содержать элемент синтаксиса tile_width_minus1[i], указывающий ширину i-го тайла, и элемент синтаксиса tile_height_minus1[i], указывающий высоту i-го тайла.

Информация, указывающая размер тайла, может указывать значение разницы с размером подтайла. Так как используется информация о размере подтайла, эффективность кодирования/декодирования может быть улучшена за счет уменьшения количества битов, требуемых для кодирования размера каждого тайла. Например, ширина i-го тайла tileWidth может быть получена на основании уравнения 22, показанного ниже, а высота i-го тайла tileHeight может быть получена на основании уравнения 23, показанного ниже.

[Уравнение 22]

[Уравнение 23]

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

Информация, связанная с размером тайла, описанная выше, может быть кодирована и передана как указывающая количество элементов кодового дерева. Например, column_width_minus1, min_column_width_minus1, subtile_width_minus1 или tile_width_minus1 могут указывать количество столбцов элементов кодового дерева, содержащихся в тайле. Кроме того, diff_column_width может указывать значение разницы между количеством столбцов элементов кодового дерева, содержащихся в тайле минимальной ширины, и количеством столбцов элементов кодового дерева, содержащихся в текущем тайле.

Кроме того, row_height_minus1, min_row_height_minus1, subtile_height_minus1 или tile_height_minus1 может указывать количество строк элементов кодового дерева, содержащихся в тайле. Кроме того, diff_row_height может указывать значение разницы между количеством строк элементов кодового дерева, содержащихся в тайле минимальной высоты, и количеством строк элементов кодового дерева, содержащихся в текущем тайле.

Декодер может определять размер тайла на основании количества столбцов элементов кодового дерева и/или количества строк элементов кодового дерева, полученных на основании элементов синтаксиса и размера элемента кодового дерева. Например, ширина i-го тайла может быть установлена равной (tile_width_minus1[i] + 1)*(ширина элемента кодового дерева), а высота i-го тайла может быть установлена равной (tile_height_minus1[i] + 1)*(высота элемента кодового дерева).

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

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

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

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

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

Элемент синтаксиса use_previous_tile_width_flag может быть кодирован и передан только тогда, когда определено, что размер текущего тайла отличается от размера предыдущего тайла (например, когда значение use_previous_tile_size_flag равно 0).

Tile_width_minus1[i] может иметь значение, полученное путем вычитания 1 из количества столбцов элементов кодового дерева, содержащихся в i-м тайле. Декодер может получать количество столбцов элементов кодового дерева, принадлежащих i-му тайлу, путем добавления 1 к tile_width_minus1[i], и вычислять ширину тайла путем умножения полученного значения на ширину элемента кодового дерева.

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

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

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

Элемент синтаксиса use_previous_tile_height_flag может быть кодирован и передан только тогда, когда определено, что размер текущего тайла отличается от размера предыдущего тайла (например, когда значение use_previous_tile_size_flag равно 0). Кроме того, элемент синтаксиса use_previous_tile_height_flag может быть передан только тогда, когда use_previous_tile_width_flag является ложным.

В таблице 12 показан пример случая использования use_previous_tile_width_flag, а в таблице 13 показан пример случая использования use_previous_tile_width_flag и use_previous_tile_height_flag. Хотя это не показано в приведенных выше таблицах, кодирование use_previous_tile_width_flag может быть пропущено, и может быть использовано только use_previous_tile_height_flag.

Какой из use_previous_tile_height_flag и use_previous_tile_размер_flag будет использован, может быть определено на основании по меньшей мере одного из порядка сканирования тайлов, ширины и высоты первого тайла и ширины и высоты предыдущего тайла. Например, когда порядок сканирования тайлов является вертикальным направлением, может быть использован use_previous_tile_height_flag, тогда как когда порядок сканирования тайлов является горизонтальным направлением, может быть использован use_previous_tile_width_flag. Альтернативно, когда первый тайл или предыдущий тайл имеет неквадратную форму, ширина которой больше, чем высота, может быть использован use_previous_tile_width_flag, тогда как когда первый тайл или предыдущий тайл имеет неквадратную форму, высота которой больше, чем ширина, может быть использован use_previous_tile_height_flag.

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

В таблице 14 показан пример, в котором кодирование информации о размере тайла пропущено для последнего тайла.

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

Каждому элементу кодового дерева может быть присвоен идентификатор для идентификации тайла, к которому принадлежит элемент кодового дерева (далее называемый ID тайла, TileID).

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

Такой же ID тайла может быть присвоен элементам кодового дерева, принадлежащим к тому же тайлу. В частности, N-й TileID может быть присвоен элементам кодового дерева, принадлежащим к тайлу N.

Переменные x и y, указывающие положение элемента кодового дерева в изображении, могут быть определены для определения ID тайла, присвоенного каждому элементу кодового дерева. В данном случае x обозначает значение, полученное путем деления координаты по оси x из положения (x0, y0) верхнего левого отсчета элемента кодового дерева на ширину элемента кодового дерева, а y обозначает значение, полученное путем деления координаты по оси y из положения (x0, y0) верхнего левого отсчета элемента кодового дерева на высоту элемента кодового дерева. В частности, x и y могут быть получены с помощью уравнений 24 и 25, показанных ниже.

[Уравнение 24]

[Уравнение 25]

Присвоение ID тайла каждому элементу кодового дерева может быть выполнено с помощью процесса, описанного ниже.

i) Инициализация ID тайла

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

ii) Получение ID тайла

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

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

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

Как показано в примере на фиг. 35, разрешать ли фильтр в контуре (например, деблочный фильтр, SAO и/или ALF) на горизонтальной или вертикальной границе, может быть определено для каждого тайла.

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

В примере по таблице 17 элемент синтаксиса loop_filter_across_tiles_flag[i] указывает, разрешено ли применять фильтр в контуре к i-му тайлу. Когда значение loop_filter_across_tiles_flag[i] равно 1, это указывает, что фильтр в контуре может быть использован на горизонтальных и вертикальных границах тайла, ID тайла которого равен i. Когда значение loop_filter_across_tiles_flag[i] равно 0, это указывает, что фильтр в контуре не может быть использован на горизонтальных и вертикальных границах тайла, ID тайла которого равен i.

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

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

В примере по таблице 18 элемент синтаксиса loop_filter_hor_across_tiles_flag[i] указывает, разрешено ли применять фильтр в контуре, пересекающий i-й тайл в горизонтальном направлении. Элемент синтаксиса loop_filter_ver_across_tiles_flag[i] указывает, разрешено ли применять фильтр в контуре, пересекающий i-й тайл в вертикальном направлении.

Когда значение loop_filter_hor_across_tiles_flag[i] равно 1, это указывает, что фильтр в контуре может быть использован на горизонтальной границе тайла, ID тайла которого равен i. Когда значение loop_filter_hor_across_tiles_flag[i] равно 0, это указывает, что фильтр в контуре не может быть использован на горизонтальной границе тайла, ID тайла которого равен i.

Когда значение loop_filter_ver_across_tiles_flag[i] равно 1, это указывает, что фильтр в контуре может быть использован на вертикальной границе тайла, ID тайла которого равен i, а когда значение loop_filter_ver_across_tiles_flag[i] равно 0, это указывает, что фильтр в контуре не может быть использован на вертикальной границе тайла, ID тайла которого равен i.

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

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

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

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

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

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

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

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

название год авторы номер документа
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2799588C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2801863C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2808720C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2818972C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2801585C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2811980C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2800133C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2820118C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛОВ ИЗОБРАЖЕНИЙ 2019
  • Ли, Пэ Кхын
RU2811985C2
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ/ДЕКОДИРОВАНИЯ СИГНАЛА ИЗОБРАЖЕНИЯ 2019
  • Ли, Пэ Кхын
RU2817331C2

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

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

Изобретение относится к средствам для кодирования видео. Технический результат заключается в повышении эффективности кодирования видео. Генерируют список кандидатов на слияние для текущего блока. Указывают один из множества кандидатов на слияние, включенных в список кандидатов на слияние. Получают первый аффинный исходный вектор и второй аффинный исходный вектор текущего блока на основании первого аффинного исходного вектора и второго аффинного исходного вектора указанного кандидата на слияние. Получают аффинный вектор для подблока в текущем блоке за счет использования первого аффинного исходного вектора и второго аффинного исходного вектора текущего блока, причем подблок представляет собой участок с размером, который меньше размера текущего блока. Первый аффинный исходный вектор и второй аффинный исходный вектор кандидата на слияние получают на основании информации о движении соседнего блока, смежного с текущим блоком. Если соседний блок включен в элемент кодового дерева, отличающийся от элемента кодового дерева текущего блока, первый аффинный исходный вектор и второй аффинный исходный вектор кандидата на слияние получают на основании векторов движения нижнего левого подблока и нижнего правого подблока соседнего блока. 4 н. и 8 з.п. ф-лы, 35 ил., 18 табл.

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

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

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

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

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

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

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

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

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

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

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

где (xn2, yn2) обозначает координаты нижней левой контрольной точки аффинного соседнего блока, и (xn3, yn3) обозначает координаты нижней правой контрольной точки аффинного соседнего блока;

(x0, y0) обозначает координаты верхней левой контрольной точки текущего блока, и (x1, y1) обозначает координаты верхней правой контрольной точки текущего блока;

(nv2x, nv2y) обозначает аффинный исходный вектор нижней левой контрольной точки третьего аффинного исходного вектора, и (nv3x, nv3y) обозначает аффинный исходный вектор нижней правой контрольной точки четвертого аффинного исходного вектора; и

(v0x, v0y) обозначает аффинный исходный вектор верхней левой контрольной точки первого аффинного исходного вектора, и (v1x, v1y) обозначает аффинный исходный вектор верхней правой контрольной точки второго аффинного исходного вектора.

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

6. Способ кодирования видео, включающий

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

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

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

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

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

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

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

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

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

где (xn2, yn2) обозначает координаты нижней левой контрольной точки аффинного соседнего блока, и (xn3, yn3) обозначает координаты нижней правой контрольной точки аффинного соседнего блока;

(x0, y0) обозначает координаты верхней левой контрольной точки текущего блока, и (x1, y1) обозначает координаты верхней правой контрольной точки текущего блока;

(nv2x, nv2y) обозначает аффинный исходный вектор нижней левой контрольной точки третьего аффинного исходного вектора, и (nv3x, nv3y) обозначает аффинный исходный вектор нижней правой контрольной точки четвертого аффинного исходного вектора; и

(v0x, v0y) обозначает аффинный исходный вектор верхней левой контрольной точки первого аффинного исходного вектора, и (v1x, v1y) обозначает аффинный исходный вектор верхней правой контрольной точки второго аффинного исходного вектора.

10. Способ по п. 6, отличающийся тем, что верхняя граница текущего блока находится в контакте с верхней границей элемента кодового дерева текущего блока.

11. Видеодекодер, выполненный с возможностью выполнения способа по любому из пп. 1–5.

12. Видеокодер, выполненный с возможностью выполнения способа по любому из пп. 6–10.

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

US 20180270500 A1, 20.09.2018
US 20180192069 A1, 05.07.2018
СПОСОБ КОДИРОВАНИЯ ИЗОБРАЖЕНИЙ, СПОСОБ ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЙ, УСТРОЙСТВО КОДИРОВАНИЯ ИЗОБРАЖЕНИЙ, УСТРОЙСТВО ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЙ И УСТРОЙСТВО КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЙ 2012
  • Сибахара Йоудзи
  • Ниси Такахиро
  • Сугио Тосиясу
  • Таникава Кеко
  • Мацунобу Тору
  • Сасаи Хисао
  • Терада Кенго
RU2607619C2
US 20180098063 A1, 05.04.2018
WO 2018061563 A1, 05.04.2018
WO 2018135885 A1, 26.07.2018.

RU 2 812 857 C2

Авторы

Ли, Пэ Кхын

Даты

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

2019-09-20Подача